I0205 — Declare the clamp as a doctrine so the mapping and the adapter cannot drift
Declare the rule that every applied limit is derived from the declared mapping as a doctrine with its own validator, dispatched from the registry, reaching the command that claims to run it, covered by a case and run in CI.
BLOCKED wave 4 · p2 · implementation profile · runs alone
Part of runtime-adapters — Profiles become runtime constraints rather than advice.
Blocked. This issue cannot start until I0204 is done. The status is derived from that, not declared.
Objective
Declare the rule that every applied limit is derived from the declared mapping as a doctrine with its own validator, dispatched from the registry, reaching the command that claims to run it, covered by a case and run in CI.
Why
A new enforced rule that lives as an inline check inside a command is invisible to doctor and to the doctrine list, and drifts the first time somebody edits the adapter. The registry is the only place a rule can be proven to be wired.
Current state
One adapter applies one derived limit. Nothing refuses an adapter that stops consulting the mapping, and nothing lists this rule among the rules the repository enforces.
Desired state
The rule appears in the doctrine list, a refusal names it, doctor proves it reaches its command and that a case covers it, and CI runs that case.
Scope
- share
- lib
- test/cases
Out of scope
- Blocking on anything a worker cannot fix from inside the repository
Dependencies
What waits on this
Acceptance criteria
- The doctrine is declared in the registry with its validator, and doctor fails if either half is missing
- An adapter that applies a value the mapping does not derive is refused, and the refusal names the doctrine
- A case covers the refusal and CI runs it
Validation
- bash test/run.sh
- bin/majordomus doctor
Evidence required
- suite
- doctor
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Risk
A blocking doctrine over a provider-specific adapter can refuse work in a repository whose provider changed underneath it; whether it blocks or advises is decided against that, and recorded.
Timeline
- started
- —
- verified
- —
- completed
- —
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I0205.yaml. Read it back with majordomus plan show I0205.