docs(vrs): disambiguate the duplicate R27 and ratchet ledger ids - #489
Merged
Conversation
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
marked this pull request as ready for review
September 6, 2026 16:36
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.
Problem
The root VRS reused requirement ID
R27for two unrelated contracts: transactional execution and typed agent desired state. The ledger also had no executable uniqueness ratchet, so another duplicate root requirement or delta ID could land unnoticed. Bare references to duplicated decision numbers were similarly ambiguous.Goal
Give each root requirement and delta a unique numeric ID, make decision citations unambiguous, and enforce the current ledger identity rules in tests.
Decisions
R27.R41, the next free requirement ID at the time of the audit.R40toR42; prompt convergence keepsR40.NNNN-<slug>. Bare0005,0007,0014, and0015citations are ambiguous; decision numbers must not be reused under0006.R27citation classificationChanged to typed-state
R41:docs/vrs/requirements.md: secondR27heading.docs/vrs/ontology.md: four desired-state authority citations.docs/vrs/spec.md: lifecycle requirement pair.docs/vrs/.decisions/0005-streams-are-agent-nested-and-stream-named.md: suspension semantics.docs/vrs/.experiments/2026-08-04-agent-desired-state-prototype.md: validated requirement.Kept as transactional
R27:docs/vrs/requirements.md: firstR27heading.docs/vrs/.decisions/0015-immutable-agent-id-and-mutable-address.md: transactional-addressing rationale.Verification
axe vrs check --profile strict docs/vrs—axe vrs check: okcargo test --test vrs_ledger— 3 passedCARGO_BUILD_JOBS=8 nix build .#st2 --no-link -L— exit 0, full Nix check gate passedComplexity
One small file-scanning integration test; no runtime code or shipped dependency changes.
Concerns
The allowed duplicate-decision map deliberately freezes four historical pairs. Any future cleanup must update both the files and this ratchet atomically.
Friction & bottlenecks
The strict VRS gate was already red on
main; #488 repaired and merged that prerequisite before this branch was rebased and revalidated.Follow-ups
None required for this change.
References
docs/vrs/.decisions/0006-do-not-reuse-decision-ids.mdPosted on behalf of @schickling
agent_identitysessionagent_personaagent_supervisoragent_toolagent_tool_versionagent_runtimetooling_profile