Skip to content

docs(vrs): close DELTA-001 and DELTA-004, and ratchet the collided decision numbers - #505

Merged
schickling-assistant merged 2 commits into
mainfrom
schickling-assistant/2026-09-07-clean-5
Sep 7, 2026
Merged

docs(vrs): close DELTA-001 and DELTA-004, and ratchet the collided decision numbers#505
schickling-assistant merged 2 commits into
mainfrom
schickling-assistant/2026-09-07-clean-5

Conversation

@schickling-assistant

Copy link
Copy Markdown
Contributor

What

T1-DOCS of reports/deepclean-st2.md §4: close the two closable deltas, stop the ambiguous citations, and make both self-enforcing.

DELTA-001 — closed, by gating the test it was opened about

The record said the SessionStart hook's Rust acceptance test "has not been compiled or executed", and its Resolution Signal asked for exactly one thing: that tests/claude_hooks.rs compile and pass with bash and jq present, with the command recorded.

Recording a local run would satisfy the letter and not the point. The target is hermetic — its only external process is jq, its only other input is the CARGO_BIN_EXE_st2 binary the same build produces, and the derivation already supplies pkgs.bash and pkgs.jq — so it now rides checks.st2's cargoTestFlags. A regression fails CI instead of going unobserved, which is the condition the delta existed for.

Gate result: Running tests/claude_hooks.rs … test result: ok. 5 passed; 0 failed.

The delta file is deleted, per the convention this repo already follows (DELTA-003 and DELTA-005 were deleted on resolution, not marked closed — and axe vrs check --profile strict enforces it: a delta whose status is not open is an error). spec.md now states the gated fact where it used to cite the record. DQ5 stays open and independent: these tests do not prove durable failure propagation.

DELTA-004 — closed, the protected amendment already landed

The record asked for maintainer approval to amend STREAM-R04/R05. That amendment is in the tree:

  • STREAM-R04 now bounds replay identity to "while its identity remains in the stream's retained receipt ring", says "once evicted, the identity is honestly accepted as new", and that "an archive receipt retains its existing authority for a known filename but is not an event-identity index".
  • STREAM-R05 makes the ring "the deduplication, conflicting-content-detection, and supersession-lookup horizon" and forbids scanning inbox or archive history to recover an evicted identity.
  • Decision 0004-stream-events-are-a-distinct-record-kind carries the same sentence.

Only DQ-S3 still asserted the conflict. Reworded: what remains open is the unmeasured value of K = 128, not the contract it defines. Delta deleted.

Ambiguous citations — qualified, then ratcheted

Four decision numbers name two files each (0005, 0007, 0014, 0015), so 0015 alone is undecidable for a reader — and it was cited bare 23 times across docs/, src/ and tests/, not the 9 the report counted. Every one now carries its stem (decision 0015-immutable-agent-id-and-mutable-address), chosen per site from context: the wake-channels 0015 in the reconcile-wakeup experiment, the identity 0015 everywhere else; the omp 0007; the streams 0005; the resource-profiles 0014.

tests/vrs_ledger.rs::collided_decision_numbers_are_never_cited_bare ratchets it, walking docs/vrs, src, tests and crates. A line that names the stem anywhere — including a Markdown link with a bare label but a stemmed target — satisfies it; a genuinely bare citation fails. The two files whose subject is the collision (docs/vrs/spec.md and decision 0006) are exempt by name, and a checked >= 20 floor keeps the test from passing vacuously if the walk ever stops finding anything.

Renumbering the collided files stays refused: they are ratcheted recorded history with 26 inbound references, and root_decision_number_duplicates_match_recorded_history pins the collision set.

Checks

  • Gate nix build .#st2 --no-link -L: EXIT=0 (pty st2.clean-5.gate2, log /tmp/st2-clean5-gate2.log), including the newly gated claude_hooks (5 passed) and vrs_ledger (4 passed — 3 existing plus the new ratchet).
  • axe vrs check --profile strict docs/vrs: ok. It was the check that caught the first attempt: marking a delta closed in place is an error in this repo, which is how the delete-on-resolution convention got applied rather than guessed.
  • No dangling references: grep -rn "DELTA-001\|DELTA-004" over docs/, src/, tests/, INVARIANTS.md and README.md returns nothing.

Not in scope

T3-INV (fold 4 INVARIANTS duplications, 3 bare-file cites, 2 platform-gated cites, 1 overclaim) and T3-D005 both need maintainer approval on a protected surface — tracked in #503 with their gates. DELTA-002, DELTA-003 and DELTA-005 stay open: DELTA-003 is narrowed but its single remaining bus_id-only resolver is itself a pre-landing defect to keep, and DELTA-005's stale sentence is in a protected requirement.

Posted on behalf of @schickling
field value
agent_identity dev3.direct.omp.43sz6ujq
session dev3.43sz6ujq
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.1.7
agent_runtime OMP 18.1.7
tooling_profile dotfiles@39a19af

…cision numbers

DELTA-001 said the SessionStart hook's Rust acceptance test "has not been
compiled or executed". Its Resolution Signal asked for exactly one thing:
that `tests/claude_hooks.rs` compile and pass with bash and `jq`
present, with the command recorded. Rather than record a local run, the
target now rides the gate — it is hermetic (its only external process is
`jq`, and the derivation already supplies `pkgs.bash` and `pkgs.jq`), so
a regression fails CI instead of going unobserved. Delta deleted, per the
convention that a delta record exists only while its divergence does;
`spec.md` now states the gated fact where it used to cite the record.
DQ5 stays open and independent: these tests do not prove durable failure
propagation.

DELTA-004 asked for a protected amendment to STREAM-R04/R05. The
amendment has landed: R04 now bounds replay identity to "while its
identity remains in the stream's retained receipt ring" and says an
archive receipt "is not an event-identity index"; R05 makes the ring the
horizon and forbids scanning inbox or archive history; decision
0004-stream-events-are-a-distinct-record-kind carries the same sentence.
Only DQ-S3 still asserted the conflict — reworded, so what remains open
is the unmeasured *value* of `K = 128`, not the contract. Delta deleted.

Collided decision numbers: four numbers name two files each, so `0015`
alone is ambiguous — and it was cited bare 23 times across docs, `src`
and `tests`. Every citation now carries its stem, and
`collided_decision_numbers_are_never_cited_bare` ratchets it: a new bare
citation fails the (now gated) `vrs_ledger` target instead of being
discovered by a confused reader. The two files whose subject IS the
collision are exempt by name.

`axe vrs check --profile strict docs/vrs`: ok.

agent-identity: dev3.direct.omp.43sz6ujq
agent-persona: generalist
agent-supervisor: unavailable
agent-tool: OMP
agent-tool-version: 18.1.7
agent-runtime: OMP 18.1.7
tooling-profile: dotfiles@39a19af
A Markdown link with a bare label but a stemmed target — `[decision
0014](../.decisions/0014-harness-context-is-a-sibling-numeric-record.md)`
— already says which file it means. The first form flagged four of
those.

agent-identity: dev3.direct.omp.43sz6ujq
agent-persona: generalist
agent-supervisor: unavailable
agent-tool: OMP
agent-tool-version: 18.1.7
agent-runtime: OMP 18.1.7
tooling-profile: dotfiles@39a19af
@schickling-assistant
schickling-assistant merged commit 5f9d9f0 into main Sep 7, 2026
4 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant