Add architecture-evaluation and criterion-strength to SpecReview analysis enum - #98
Merged
Merged
Conversation
…ysis enum FR-002 CR-064. IR-40 (agent-ix/quire-contract-ir#134): SpecReview SR-539 declared `analysis: architecture-evaluation`, which the enum did not admit, failing `quire validate`. An org-wide sweep of spec/reviews/*.md frontmatter found 18 documents across quire-protocol and quire-specification already declaring this value, so it is not a one-document gap. PLAT-837: the criterion-strength spec-review lens is blocked on this exact value being installed before it can emit a valid SpecReview document, per the ticket's own acceptance criteria (spec/reviews/criterion-strength.md, analysis: criterion-strength). Both values are added to AnalysisKind (semantic/main.tsp), regenerated into schemas/AnalysisKind.json via `make schemas`, mirrored into the handwritten schemas/spec-review-frontmatter.schema.json, and added to FR-002's Behavior prose and TC-027's fixture list (tests/test_manifest.py). SpecReview.json's digest is unchanged since it only $refs AnalysisKind.json. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
architecture-evaluationandcriterion-strengthto theSpecReview.analysisenum (AnalysisKindinsemantic/main.tsp, regeneratedschemas/AnalysisKind.json, and the handwrittenschemas/spec-review-frontmatter.schema.json), plus the FR-002 spec prose and TC-027's fixture list (tests/test_manifest.py). Logged as FR-002 CR-064 inspec/log.md.agent-ix/quire-contract-ir#134):SpecReview SR-539declaredanalysis: architecture-evaluation, which this enum didn't admit, soquire validatefailed structural validation. This is not a one-document gap — a sweep ofspec/reviews/*.mdfrontmatter across every checkout under~/devfound 18 documents already declaring this value, acrossquire-protocolandquire-specification(and their worktrees).spec/reviews/criterion-strength.md,analysis: criterion-strength) and its stated blocking text: "a selected analysis absent from the installedSpecReview.analysisschema is an unavailable dependency, not permission to emit an invalid review document."SpecReview.json'sdata_schema.digestinmanifest.yamlis unchanged — it only$refsAnalysisKind.jsonand doesn't inline the enum, confirmed viamake manifest-digests(no-op).Owning repo and how it was determined
SpecReview's frontmatter and semantic schemas are owned byagent-ix/spec-artifacts-process, not by any consumer. Established by reading~/.ix/filament/registry.json, which pins the installedspec-artifacts-processFilament module to this repo (git-subdir, pathspec_artifacts_process) at a specific sha — the installed copy under~/.ix/filament/modules/spec-artifacts-processis a pinned snapshot of this source, not itself editable durably. This PR edits only the source:spec_artifacts_process/semantic/main.tsp(TypeSpec — the actual source of truth forAnalysisKind/SpecReview.json, regenerated viamake schemas) and the separately handwrittenspec_artifacts_process/schemas/spec-review-frontmatter.schema.json(excluded from TypeSpec generation byscripts/generate.mjs).Before/after evidence for IR-40
quire-contract-ir's ownorigin/main(fe400d8) no longer reproduces IR-40's quoted error today: itsSR-539was re-typed fromanalysis: architecture-evaluationtoanalysis: scope-boundaryinagent-ix/quire-contract-ir@a5154d3(landed 2026-09-16), soquire validateon that document now passes.make specon that repo is still red, but from an unrelatedquire coverage --strictgap (16 unbacked matrix rows) — out of scope for this schema PR.To demonstrate the actual fix (isolated from that repo's unrelated coverage gap, and from a concurrent, unrelated reinstall of the shared
~/.ix/filamentmodule registry that happened mid-session), I re-created IR-40's exact scenario against controlled module copies:Before —
quire validate --module <origin/main spec-artifacts-process, unfixed>against a copy ofSR-539withanalysis: architecture-evaluationrestored:(exact match to IR-40's quoted error)
After — same document,
quire validate --module <this branch's spec-artifacts-process>:No
document(s) failed structural validationline.What consumers must do to pick this up
This PR fixes the source only.
~/.ix/filament/modules/spec-artifacts-process(and any repo's installed copy) stays pinned to its old sha until someone runs a module reinstall (quoin module install/quoin plugin install) against a release that includes this commit.quire-contract-ir's redmake specwill not turn green from this PR landing alone — even after reinstall, that repo's gate is red for the unrelated coverage reason above, and its ownSR-539document no longer even declaresarchitecture-evaluation(it was retyped toscope-boundary). The 18 documents inquire-protocol/quire-specificationthat still declarearchitecture-evaluationwill start validating clean once each of those repos reinstalls this module. PLAT-837's Jev lens work (in progress elsewhere,quoinrepo) can emitanalysis: criterion-strengthonce its consuming repo reinstalls at a sha including this change.Additional enum values found in use
A sweep of
analysis:frontmatter across everyspec/reviews/*.mdin~/dev(repo clones and worktrees) found no third missing value beyond the two named in this ticket. Everything else in use already exists in the enum (base,dependency,failure-domain,ears-conformance,scope-boundary,integrity,risk-complexity,evidence,code-review,gap-analysis,spec-correctness). Broader ungrounded greps also turned upsecurityandadoption-analysisstrings, but neither appears as an actualSpecReviewfrontmatteranalysis:value when restricted tospec/reviews/*.mdfrontmatter — they're incidental matches elsewhere (comments/other fields), not undeclared enum values in use. No ruling needed; nothing added beyond the two named.Test plan
make lint(ruff, black,schemas-check— TypeSpec projection matches committedschemas/*.json)make test— 296 passed, 1 skipped, 2 xfailed; the same 2 tests fail both before and after this change (test_the_measurement_can_fail,test_tc047_adoption_is_optional), confirmed pre-existing and unrelated (environment/engine-version mismatches unrelated to theanalysisenum) viagit stash/baseline reruntests/test_manifest.py::test_spec_review_analysis_admits_both_review_families(TC-027) extended and passing with both new valuesquire validateevidence above🤖 Generated with Claude Code