Land the Gate 2 amendments - #222
Merged
Merged
Conversation
Expiry moves from creation to stage success. A record in prepared or verified
phase now carries expires_at: null, and stage stamps staged_at together with
expires_at = staged_at + 5 minutes. The old wording would have expired a capture
that was still being verified, and the staleness it was guarding against is
already caught by the staged-diff-hash gate.
Two headings carried a prerequisite and a merge-ordering constraint in one
field. T-1020 and T-1021 depend only on ADR-0020, and T-1024 only on T-1020;
the src/mcp/server.ts and README orderings are file contention and now say so.
Read literally, the old wording pushed T-1020 from the first wave to the sixth,
T-1021 to the third and T-1024 to the seventh.
The trust boundary on the write path is now explicit. A caller-supplied nonce is
validated against ^[0-9a-f]{32}$ before it reaches any path resolution, the
capture CLI forwards the nonce and nothing else, and every binding a staged
record carries is recomputed server-side rather than accepted from the caller.
T-1015's five abstract section labels are pinned to concrete headings, because
an implementer cannot reorder sections against labels that never name them.
T-1016 is a Node-stdlib animated SVG checked byte-exactly, with no recorder
dependency and no manifest fallback. T-1030 is diagnostic honesty only and may
not close #192 alone.
Ruled-out: keeping expiry anchored to creation with a longer window | a longer window hides the same defect and makes it rarer rather than absent
Ruled-out: a frame manifest for T-1016 | a check that tolerates drift stops detecting the drift it exists to detect
Ruled-out: leaving verification_gaps to be derived at implementation time | it was the second invented concept this milestone, and naming the closed ordered set now is what stops a third
Limit: nothing mechanically enforces that a future heading keeps prerequisites and ordering in separate fields; the separation is stated and reviewed, not checked
Blast: local
Undo: easy
Certainty: firm
Record-Id: r-gate2amend
CommitLore — record lintTrailers: clean — 1 commit in Active constraints for the paths this PR touchesLimits (7)
Ruled out (16)
Warnings (4)
Trailer violations fail this check. Active constraints are informational — they are what the repository already decided, not a verdict on this PR. |
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.
Lands the Gate 2 amendments the owner made binding at
deva333e76f59493ec90e100d1d44c833d7d9e5f093. Planning documents only — no product code, nothing merged, nothing tagged.Amendments
Expiry anchor.
expires_atisnullwhile a record ispreparedorverified; stage success stampsstaged_atandexpires_at = staged_at + 5 minutes. Two audits had disagreed. The old "5 minutes from creation" would have expired a capture that was still being verified, and the staleness it guarded against is already caught by the staged-diff-hash gate. ADR-0021 §3 gate 3 and T-1004's Minimum GREEN both say so now.Two conflated headings. T-1020 and T-1021 depend only on ADR-0020; T-1024 only on T-1020. The
src/mcp/server.tsand README orderings are file contention and are labelled as such. Read literally, the old wording pushed T-1020 from wave 1 to wave 6, T-1021 to wave 3 and T-1024 to wave 7 — this is the throughput fix.Write-path trust boundary. A caller-supplied nonce is validated against
^[0-9a-f]{32}$before it reaches any path resolution (T-1001).commitlore captureforwards the nonce and nothing else (T-1006). Every binding a staged record carries —base_head,staged_diff_hash,policy_identity_hash,staged_at,expires_at— is recomputed server-side, never accepted from the caller (T-1009).T-1015 section anchors. #167's five abstract labels are pinned to concrete headings, and
See it workmoves to sit after the install command and before evidence. The RED assertion is that the current order is wrong.T-1016 recording mechanism. A Node-stdlib animated SVG, fixed environment, viewport and frame timing,
--checkcomparing bytes exactly. No recorder dependency and no manifest fallback.T-1024
verification_gaps. A closed, ordered set:history-unavailable,shallow-history,notes-unfetched. An empty array means all three were checked and none applied — never that the checks were skipped.T-1030 scope. Diagnostic honesty only. It may not close #192 alone; the node-22 intermittency is now #221.
Verified
git status— five planning documents changed, nothing undersrc/,test/,bench/,README*,package.json,CHANGELOG.mdor.github/workflows/.shape ok · references ok.dist/rebuild was required and none occurred.Requesting the merge gate: I cannot merge this myself, and the wave-1 tickets need these amendments on
dev.