docs(autonomy): record the topology obligations on the seam that receives them - #2365
Conversation
…ives them The verification-topology work states plainly that per-run verdict aggregation and resolved-instance distinctness ship unverified, because no runner exists to carry them. It recorded that only on the leaf making the deferral. The runner charter — the seam receiving the work — said nothing. A deferral the receiving seam does not name is indistinguishable from an obligation nobody owns. Whoever builds the runner reads its charter, not the leaf that quietly assigned them three requirements. All three land in inherited constraints, where the charter already cites its owning contracts rather than restating them: aggregating verdicts under the unanimity invariant including the timeout and no-verdict cases no static check reaches, refusing to count two checkers the binding held distinct that resolve to one instance, and drawing lenses per the leaf's draw rule. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0133WoxqBf7kLDviEfrcYL5Z
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
Claude finished @kyle-sexton's task in 44s —— View job Security Review
Scope reviewed (3 files, matches PR description):
Findings: none. This PR is purely documentation/prose — it adds a changelog entry and a bulleted paragraph to a reference markdown file, plus a semver bump. There is no code, script, GitHub Actions workflow, permissions block, schema, or config logic in the diff, so there's no injection surface (command/SQL/path/template), no credential or token handling, and no authorization/access-control logic to evaluate. Nothing here touches No further action needed from a security standpoint. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 782427d473
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Claude finished @kyle-sexton's task in 2m 56s —— View job Claude's Code Review
This is a docs-only change adding three inherited-constraint bullets to Two inline findings, both on
Everything else checked out:
Author-claimed, not independently verified by me: the Test plan's |
| [verification-topology leaf](guardrails/verification-topology.md), which enforces at | ||
| binding-validity time what no static check can reach at run time. **Three obligations land on | ||
| this seam when the build trigger fires**, and each is a hole until it does: aggregating verdicts | ||
| under the unanimity invariant, including the checker-timeout and no-verdict cases a static check |
There was a problem hiding this comment.
🔴 Important: no-verdict isn't a case the cited leaf actually enumerates.
verification-topology.md's "Per-run aggregation is not asserted" paragraph (lines 288–290) names four run-time cases: unanimous pass, single dissent, checker timeout, and duplicate checker identity. This bullet keeps "checker-timeout" but swaps in "no-verdict" for "single dissent" (duplicate-checker-identity is already covered by the next bullet). "No-verdict" doesn't appear anywhere in the cited leaf.
Since this document's own rule is "cited never restated" (runner.md line 13–14) — precision matters more here than in ordinary prose. Either this should read "single-dissent" to match the source, or if "no-verdict" is a genuinely distinct case (a checker crashing/producing nothing, as opposed to timing out), the source leaf doesn't currently name it, so the citation is asserting an obligation the leaf itself never recorded.
| this seam when the build trigger fires**, and each is a hole until it does: aggregating verdicts | ||
| under the unanimity invariant, including the checker-timeout and no-verdict cases a static check | ||
| never sees; refusing to count two checkers the binding held distinct that RESOLVE to one | ||
| instance; and drawing lenses per that leaf's draw rule. A binding cannot express a topology that |
There was a problem hiding this comment.
🟡 Suggestion: lens-drawing isn't grounded the same way as the other two obligations.
The PR description and this bullet present three obligations as equally "a hole until the build trigger fires," but the cited leaf only explicitly flags two as ship-unverified — the "Two limits, stated rather than hidden" section (verification-topology.md#L286-L296) covers only per-run aggregation and resolved-instance distinctness. The draw rule itself carries no such flag — it's just normative behavior that happens to require a runtime to execute, which is true of virtually every rule in this contract, not a recorded gap the way the other two are.
Folding lens-drawing into "the three obligations the verification-topology work deferred" (CHANGELOG.md line 13) slightly overstates what the leaf itself recorded — worth confirming this is an intentional charter decision (recording all runner-dependent behavior here, not just the leaf's self-flagged gaps) rather than a citation that outran its source.
|
Claude has reviewed this PR 1 time. The lane skips further automatic reviews after 5; deleting this comment resets the count. |
Summary
#2326 states plainly that per-run verdict aggregation and resolved-instance distinctness ship unverified, because no runner exists to carry them. It recorded that deferral only on the leaf making it. The runner charter — the seam receiving the work — said nothing.
A deferral the receiving seam does not name is indistinguishable from an obligation nobody owns. Whoever builds the runner reads its charter, not the leaf that quietly assigned them three requirements.
All three land in
## Inherited constraints, where the charter already cites its owning contracts rather than restating them:Each is stated as a hole until the build trigger fires — the charter's own idiom, and consistent with its trigger-gated build.
Test plan
node scripts/validate-plugin-contracts.mjs— 45 setup skills, 2412 files.bash scripts/check-changelog-parity.sh --check— passes.grep -rniE "frontier|flagship|daily driver" plugins/autonomy/reference/— empty.Related
No linked issue — found by a post-merge sweep checking whether #2326's stated deferrals were recorded anywhere they would actually be read.