Scope context-budget role inventories without changing runtime compatibility #859

Closed
opened 2026-08-04 04:16:05 +00:00 by coilyco-ops · 0 comments
Member

Outcome

Make AOS cross-role context inventories measure only the model classes that matter for each role, without changing which role and harness combinations remain valid at runtime.

The initial inventory scope is:

director: [frontier]
strats: [frontier]
ops: [frontier]

Engineer, QA, Design, Community, and Content retain their current frontier-to-low-context comparisons.

Current behavior

generate_context_budget_role_reports.py discovers every checked-in context-budget-<role>-<seat>-current.yaml snapshot, validates its seat and model class, groups snapshots by role, and renders every discovered class.

The generator already supports a frontier-only report when no low-context snapshot exists. Strats currently reaches that path. This is an implicit artifact-presence convention, not an explicit measurement policy:

  • A low-context snapshot automatically enters the aggregate role report.
  • Removing a snapshot makes the report frontier-only, but does not record whether the omission is intentional.
  • Deleting Ops Goose evidence would discard a snapshot for the active operational-decision lane.
  • Runtime role compatibility and inventory scope are separate decisions.

Required design

Add one AOS-owned, measurement-scoped policy that constrains which model classes enter cross-role context reports.

A suitable shape is:

inventory_model_classes:
  director: [frontier]
  strats: [frontier]
  ops: [frontier]

Unlisted roles should retain all AOS-supported model classes. The owning loader may choose an equivalent schema if another shape fits the existing configuration boundary better.

The policy must live with the context-inventory implementation. Do not encode it in role composition, runtime harness selection, or generated documentation.

Processing contract

  1. Discover and validate every checked-in current snapshot exactly as today.
  2. Validate the inventory policy against canonical role ids and AOS model classes.
  3. Apply the role-specific class scope only when building aggregate role reports and the cross-role inventory.
  4. Preserve excluded snapshots as individually addressable evidence.
  5. Render the selected scope explicitly so a frontier-only report does not imply that low-context evidence is unavailable.

An excluded snapshot must still fail validation when malformed. The filter controls aggregation, not evidence integrity.

Runtime boundary

This issue changes measurement and reporting only.

It must not change:

  • Agent Compose supported_model_classes or role compatibility.
  • .agents/roles.kdl role-composed skill admission.
  • .agents/harnesses.yaml role eligibility.
  • .agents/role-harnesses.yaml lane selection.
  • aos-cli/layout-model-classes.json seat classification.
  • Any skill's low-context frontmatter.
  • Native or container launch behavior.

Director and Ops must remain composable with low-context layouts where they are currently supported. Strats retains its existing upstream runtime compatibility independently of this report policy.

Snapshot preservation

Keep the checked-in Director and Ops Goose and OpenCode snapshots. In particular, retain the Ops Goose snapshot because operational-decision currently selects Goose.

The snapshots should remain loadable, comparable, and refreshable through the existing context-budget capture surface even when aggregate reports omit them.

Reporting changes

  • Director, Strats, and Ops role reports show frontier measurements only.
  • Their reports state that aggregate inventory scope is frontier-only.
  • They do not render a low-context class line or frontier-to-low-context delta.
  • The current role-class inventory distinguishes measurement scope from runtime compatibility.
  • Other role reports retain their existing class lines and programmatic deltas.
  • Documentation no longer claims that every role is aggregated across every compatible layout.

This is a reporting-scope refinement, not a new shipped capability. docs/FEATURES.md does not need an entry.

Acceptance criteria

  • One canonical AOS source owns the role-to-inventory-model-class policy.
  • Director, Strats, and Ops aggregate reports include only frontier seats.
  • Engineer, QA, Design, Community, and Content continue to include frontier and low-context seats.
  • Existing excluded snapshots remain checked in and independently valid.
  • A malformed excluded snapshot still fails the report build.
  • An unknown role, unknown model class, empty class set, or duplicate class in policy fails closed.
  • Unlisted roles default to all supported AOS model classes.
  • Generated prose says the role is intentionally measured on frontier seats rather than claiming low-context snapshots are unavailable.
  • Runtime role, harness, lane, and model-class registries are unchanged.
  • The generated role reports and current inventory index are refreshed.

Tests

Extend the owning generator tests to prove behavior rather than restating the committed policy:

  • A frontier-only policy omits low-context report output even when valid low-context snapshots exist.
  • Excluded snapshots still pass through structural and model-class validation.
  • A role with no policy entry retains both classes.
  • Invalid policy roles and classes fail closed.
  • A role must retain at least one frontier snapshot after filtering.
  • The committed generated reports remain drift-free.

Do not add a second parser or a test matrix that duplicates the configuration. The owning loader should validate the real policy through its schema and render surface.

Likely touch points

  • agentic_os/generators/generate_context_budget_role_reports.py
  • tests/test_generate_context_budget_role_reports.py
  • docs/context-budget-role-seat-current.md
  • Generated docs/context-budget-role-*-current.md reports
  • A new or existing AOS-owned context-inventory policy source

Validation

  • ward exec gen-context-budget-role-reports -- --check
  • ward exec test
  • ward exec pre-commit-all

The final diff should contain no runtime selection or role-composition changes.

## Outcome Make AOS cross-role context inventories measure only the model classes that matter for each role, without changing which role and harness combinations remain valid at runtime. The initial inventory scope is: director: [frontier] strats: [frontier] ops: [frontier] Engineer, QA, Design, Community, and Content retain their current frontier-to-low-context comparisons. ## Current behavior `generate_context_budget_role_reports.py` discovers every checked-in `context-budget-<role>-<seat>-current.yaml` snapshot, validates its seat and model class, groups snapshots by role, and renders every discovered class. The generator already supports a frontier-only report when no low-context snapshot exists. Strats currently reaches that path. This is an implicit artifact-presence convention, not an explicit measurement policy: * A low-context snapshot automatically enters the aggregate role report. * Removing a snapshot makes the report frontier-only, but does not record whether the omission is intentional. * Deleting Ops Goose evidence would discard a snapshot for the active `operational-decision` lane. * Runtime role compatibility and inventory scope are separate decisions. ## Required design Add one AOS-owned, measurement-scoped policy that constrains which model classes enter cross-role context reports. A suitable shape is: inventory_model_classes: director: [frontier] strats: [frontier] ops: [frontier] Unlisted roles should retain all AOS-supported model classes. The owning loader may choose an equivalent schema if another shape fits the existing configuration boundary better. The policy must live with the context-inventory implementation. Do not encode it in role composition, runtime harness selection, or generated documentation. ## Processing contract 1. Discover and validate every checked-in current snapshot exactly as today. 2. Validate the inventory policy against canonical role ids and AOS model classes. 3. Apply the role-specific class scope only when building aggregate role reports and the cross-role inventory. 4. Preserve excluded snapshots as individually addressable evidence. 5. Render the selected scope explicitly so a frontier-only report does not imply that low-context evidence is unavailable. An excluded snapshot must still fail validation when malformed. The filter controls aggregation, not evidence integrity. ## Runtime boundary This issue changes measurement and reporting only. It must not change: * Agent Compose `supported_model_classes` or role compatibility. * `.agents/roles.kdl` role-composed skill admission. * `.agents/harnesses.yaml` role eligibility. * `.agents/role-harnesses.yaml` lane selection. * `aos-cli/layout-model-classes.json` seat classification. * Any skill's `low-context` frontmatter. * Native or container launch behavior. Director and Ops must remain composable with low-context layouts where they are currently supported. Strats retains its existing upstream runtime compatibility independently of this report policy. ## Snapshot preservation Keep the checked-in Director and Ops Goose and OpenCode snapshots. In particular, retain the Ops Goose snapshot because `operational-decision` currently selects Goose. The snapshots should remain loadable, comparable, and refreshable through the existing context-budget capture surface even when aggregate reports omit them. ## Reporting changes * Director, Strats, and Ops role reports show frontier measurements only. * Their reports state that aggregate inventory scope is frontier-only. * They do not render a low-context class line or frontier-to-low-context delta. * The current role-class inventory distinguishes measurement scope from runtime compatibility. * Other role reports retain their existing class lines and programmatic deltas. * Documentation no longer claims that every role is aggregated across every compatible layout. This is a reporting-scope refinement, not a new shipped capability. `docs/FEATURES.md` does not need an entry. ## Acceptance criteria * [ ] One canonical AOS source owns the role-to-inventory-model-class policy. * [ ] Director, Strats, and Ops aggregate reports include only frontier seats. * [ ] Engineer, QA, Design, Community, and Content continue to include frontier and low-context seats. * [ ] Existing excluded snapshots remain checked in and independently valid. * [ ] A malformed excluded snapshot still fails the report build. * [ ] An unknown role, unknown model class, empty class set, or duplicate class in policy fails closed. * [ ] Unlisted roles default to all supported AOS model classes. * [ ] Generated prose says the role is intentionally measured on frontier seats rather than claiming low-context snapshots are unavailable. * [ ] Runtime role, harness, lane, and model-class registries are unchanged. * [ ] The generated role reports and current inventory index are refreshed. ## Tests Extend the owning generator tests to prove behavior rather than restating the committed policy: * A frontier-only policy omits low-context report output even when valid low-context snapshots exist. * Excluded snapshots still pass through structural and model-class validation. * A role with no policy entry retains both classes. * Invalid policy roles and classes fail closed. * A role must retain at least one frontier snapshot after filtering. * The committed generated reports remain drift-free. Do not add a second parser or a test matrix that duplicates the configuration. The owning loader should validate the real policy through its schema and render surface. ## Likely touch points * `agentic_os/generators/generate_context_budget_role_reports.py` * `tests/test_generate_context_budget_role_reports.py` * `docs/context-budget-role-seat-current.md` * Generated `docs/context-budget-role-*-current.md` reports * A new or existing AOS-owned context-inventory policy source ## Validation * `ward exec gen-context-budget-role-reports -- --check` * `ward exec test` * `ward exec pre-commit-all` The final diff should contain no runtime selection or role-composition changes.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/agentic-os#859
No description provided.