What's wrong
capability_publish_pr_body() in crates/traverse-cli/src/main.rs hardcodes the PR body's ## Governing Specs section to two traverse-repo spec IDs:
fn capability_publish_pr_body(plan: &CapabilityPublishPlan) -> String {
format!(
"## Summary\n\n...\n\n## Governing Specs\n\n- `056-capability-publish`\n- `054-public-scope-registry-ref`\n\n...",
...
)
}
But traverse-framework/registry's own spec-alignment CI gate (scripts/ci/spec_alignment_check.sh) checks the PR body against registry-repo specs whose governs list matches the changed file path -- for any new capabilities/<namespace>/... path, that's 001-registry-foundation, 005-yank-deprecation, 006-public-scope-and-identity, 007-artifact-hosting (verified directly against specs/governance/approved-specs.json). None of the four match either of the two hardcoded IDs, and the section header itself is ## Governing Spec (singular) in registry's convention, not ## Governing Specs (plural) as the CLI writes.
Reproduced twice, independently, this session (traverse-framework/registry#89 and #90): every real capability publish PR opens already-failing on spec-alignment, with zero discoverable connection between the CLI's output and the actual required fix -- an author has to separately discover registry's spec-alignment script, manually rewrite the PR body, and then discover that GitHub Actions won't re-evaluate a pull_request-triggered check against an edited body without a fresh synchronize event (gh pr edit alone doesn't retrigger it; even gh run rerun replays the stale cached event payload -- only an actual new commit works).
Definition of Done
Also worth fixing while touching this
Header casing: registry's convention is ## Governing Spec (singular); the CLI emits ## Governing Specs (plural). Minor on its own, but worth aligning if the body-generation logic is being touched anyway.
What's wrong
capability_publish_pr_body()incrates/traverse-cli/src/main.rshardcodes the PR body's## Governing Specssection to twotraverse-repo spec IDs:But
traverse-framework/registry's ownspec-alignmentCI gate (scripts/ci/spec_alignment_check.sh) checks the PR body against registry-repo specs whosegovernslist matches the changed file path -- for any newcapabilities/<namespace>/...path, that's001-registry-foundation,005-yank-deprecation,006-public-scope-and-identity,007-artifact-hosting(verified directly againstspecs/governance/approved-specs.json). None of the four match either of the two hardcoded IDs, and the section header itself is## Governing Spec(singular) in registry's convention, not## Governing Specs(plural) as the CLI writes.Reproduced twice, independently, this session (
traverse-framework/registry#89and#90): every realcapability publishPR opens already-failing onspec-alignment, with zero discoverable connection between the CLI's output and the actual required fix -- an author has to separately discover registry's spec-alignment script, manually rewrite the PR body, and then discover that GitHub Actions won't re-evaluate apull_request-triggered check against an edited body without a freshsynchronizeevent (gh pr editalone doesn't retrigger it; evengh run rerunreplays the stale cached event payload -- only an actual new commit works).Definition of Done
capability_publish_pr_body()no longer hardcodes traverse-repo spec IDs as if they satisfy every possible target registry's own governance gate.--governing-spec <id>repeatable flag the caller supplies, (b) reading aspec_refalready present in the contract's ownprovenancefield if set, (c) a documented manual-edit-required step in whatever skill/doc walks someone throughcapability publish(already added totraverse-capability-author'sreferences/registry.mdas an interim disclosure, but the CLI itself producing something structurally wrong for every registry it might target is the real bug).cargo test) -- this bug's whole nature is that it looks fine locally and only surfaces once CI runs on the actual target repo.Also worth fixing while touching this
Header casing: registry's convention is
## Governing Spec(singular); the CLI emits## Governing Specs(plural). Minor on its own, but worth aligning if the body-generation logic is being touched anyway.