Skip to content

I0201 — Declare which profile axis may become which runtime limit

Add one canonical file beside the profiles that maps a profile axis to the runtime limit it may derive, so that a limit has a single source, an axis nobody can enforce cannot be listed, and a limit no adapter applies is a validation error rather than a comment.

READY wave 0 · p1 · deep-work profile · runs alone

Part of runtime-adapters — Profiles become runtime constraints rather than advice.

Ready. Every dependency is done, so majordomus plan start I0201 will be accepted.

Objective

Add one canonical file beside the profiles that maps a profile axis to the runtime limit it may derive, so that a limit has a single source, an axis nobody can enforce cannot be listed, and a limit no adapter applies is a validation error rather than a comment.

Why

The implementation studied before this one was rolled back because its limits were global constants. A constant is not derived from a profile, and nothing in the repository could tell the difference. The mapping has to exist as data before anything can be clamped honestly.

Current state

A profile declares capability, effort, verbosity, presentation, context depth, verification requirements and a checkpoint interval. Every one of them is projected as prose and none of them constrains anything. There is no file that says which of them could.

Desired state

One file declares each enforceable axis, the limit it derives, and how the limit is computed from the axis value. An unknown axis, an unknown limit, or a limit no adapter implements is refused by name.

Scope

  • share
  • lib

Out of scope

  • Applying any limit; this issue only declares what may be applied
  • Any axis whose enforcement could not be observed from this repository

Dependencies

None. This issue is a root of the graph.

What waits on this

Acceptance criteria

  • The mapping is one canonical file, read by the tool and written by hand nowhere else
  • Every declared axis exists on every profile, and an axis that does not is refused by name
  • A declared limit whose adapter does not exist is refused, and an adapter for an undeclared limit is refused
  • Every profile resolves to a complete set of limits, printed as data rather than prose

Validation

  • bash test/run.sh
  • bin/majordomus doctor

Evidence required

  • suite

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

Risk

Declaring an axis enforceable before an adapter can apply it is how the previous attempt became theatre; the reconciliation in both directions is the guard against repeating it.

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/I0201.yaml. Read it back with majordomus plan show I0201.