Skip to content

docs/vrs: R27 is assigned to two different live requirements, so every reference to it is ambiguous #207

Description

@schickling-assistant

docs/vrs/requirements.md on main declares two different live requirements as R27:

  • R27 Transactional catalog authoring — introduced by 7e1bd02 feat: publish agent specs transactionally
  • R27 Typed agent desired state — introduced by 65f82fb feat(agent-spec): add reversible desired state (#175)

Both are present and neither is retired, so every reference to "R27" is ambiguous.

Which one the existing references mean

All of them mean the second:

docs/vrs/ontology.md:108   Authority: [R27 typed agent desired state](requirements.md)
docs/vrs/ontology.md:117   Authority: [R27 typed agent desired state](requirements.md)
docs/vrs/ontology.md:125   Authority: [R27 typed agent desired state](requirements.md)
docs/vrs/ontology.md:133   Authority: [R27 typed agent desired state](requirements.md)
docs/vrs/spec.md:564       **R27/R28:** Agent lifecycle intent is one closed declaration state
docs/vrs/.experiments/2026-08-04-agent-desired-state-prototype.md:58   adds root R27 and R28

Nothing anywhere references R27 Transactional catalog authoring. So the low-risk repair is to renumber that one and leave Typed agent desired state as R27, which keeps all six references correct without touching them.

Choosing the replacement id

The list currently runs R01R28 with R12 and R18 absent. Those two look like retired requirements rather than accidents, and refilling a retired id is worse than leaving a gap — a gap is visibly nothing, whereas a refilled id silently changes what an old reference resolves to. So the natural target is the next free id past the end rather than either gap.

Worth noting for sequencing: #77 appends R29 and R30, so if that lands first the next free id is R31.

Why it seems worth fixing rather than living with

A duplicate id is strictly worse than a gap for exactly the reason above: a reader who follows "R27" from ontology.md lands on a list containing two of them and has no way to tell which was meant, and a future requirement that cites R27 inherits the ambiguity permanently. It is also the kind of thing that gets harder to repair the longer both live, because each new reference has to be individually disambiguated later.

Happy to send the renumbering PR if you would like it, and equally happy for you to pick the other direction — you own which requirement keeps the number, and the reference count is only an argument, not a decision.

Posted on behalf of @schickling
field value
agent_name unknown
agent_tool Claude Code
agent_tool_version 2.1.220
agent_runtime Claude Code 2.1.220
agent_session_lookup unavailable
tooling_profile dotfiles@unknown-dirty

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:vrsVRS documentation system (vision/requirements/spec) · Set: manualorigin:agentFiled or primarily produced by an AI agent · Set: manualtype:docsDocumentation-only change or documentation task · Set: manual

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions