Found via the ix-spec agent-pty eval harness: every quire validate run emits
DuplicateArchetype: 'ADR' contributed by modules ["spec-artifacts-process", "spec-artifacts-process"]; first-wins
DuplicateArchetype: 'Plan' ...
DuplicateArchetype: 'Review' ...
DuplicateArchetype: 'Standard' ...
(exit code is still 0 — these are warnings, not failures.)
Root cause
manifest.yaml declares these archetypes in two blocks, and spec-artifacts-process is the only module where the names in the two blocks overlap, so quire registers each twice:
| block |
names |
archetypes: |
ADR, Plan, Review, Test Matrix, Standard |
artifact_types: |
ADR, Plan, Task, Review, Finding, TestMatrix, Standard |
| overlap |
ADR, Plan, Review, Standard |
The sibling artifact modules use the archetypes: block for a single umbrella archetype with a distinct name (spec-artifacts-iso → Spec, spec-artifacts-app → Application Spec), so they never collide. spec-artifacts-process instead re-declares per-type archetypes by the same name as artifact_types:.
Note also Test Matrix (with a space) in archetypes: vs TestMatrix (no space) in artifact_types: — only escapes the collision by accident, and is its own naming inconsistency.
Impact
- Noisy stderr on every validation across the ecosystem.
- Observed downstream effect in evals: agents see the scary-looking warnings next to a passing exit and re-run
quire validate to confirm the exit code, wasting a validation round.
Suggested fix
Make spec-artifacts-process's archetypes: block follow the iso/app convention (a single distinct umbrella name), or drop the duplicated per-type entries from one of the two blocks; and reconcile Test Matrix vs TestMatrix.
Found via the ix-spec agent-pty eval harness: every
quire validaterun emits(exit code is still 0 — these are warnings, not failures.)
Root cause
manifest.yamldeclares these archetypes in two blocks, andspec-artifacts-processis the only module where thenames in the two blocks overlap, so quire registers each twice:archetypes:ADR, Plan, Review, Test Matrix, Standardartifact_types:ADR, Plan, Task, Review, Finding, TestMatrix, StandardThe sibling artifact modules use the
archetypes:block for a single umbrella archetype with a distinct name (spec-artifacts-iso→Spec,spec-artifacts-app→Application Spec), so they never collide.spec-artifacts-processinstead re-declares per-type archetypes by the same name asartifact_types:.Note also
Test Matrix(with a space) inarchetypes:vsTestMatrix(no space) inartifact_types:— only escapes the collision by accident, and is its own naming inconsistency.Impact
quire validateto confirm the exit code, wasting a validation round.Suggested fix
Make
spec-artifacts-process'sarchetypes:block follow the iso/app convention (a single distinct umbrella name), or drop the duplicated per-type entries from one of the two blocks; and reconcileTest MatrixvsTestMatrix.