Skip to content

feat(cap): schema-driven CI validation and big-bang metadata migration#75

Merged
normenmueller merged 5 commits into
trunkfrom
feat/39-schema-driven-ci-validation
May 11, 2026
Merged

feat(cap): schema-driven CI validation and big-bang metadata migration#75
normenmueller merged 5 commits into
trunkfrom
feat/39-schema-driven-ci-validation

Conversation

@normenmueller
Copy link
Copy Markdown
Owner

Summary

Schema-driven CI validation tooling refactor (S2, Story #39) and big-bang metadata migration (S3, Story #40) for Epic #37.

S2: Schema-Driven CI Validation Tooling (#39)

  • Refactor capability-meta.mjs to derive all field constraints from capability-meta.schema.yaml
  • Refactor capability-indexes.mjs to derive renderable columns from schema
  • Remove validation for 6 deprecated fields; upgrade owner to required
  • Enforce distinguish_from object format (id + boundary)
  • Add AI4X_SCHEMA_PATH env var for test overrides (AC-14)
  • Update test fixtures; add 5 new negative tests

S3: Big-Bang Metadata Migration (#40)

  • Remove deprecated fields from all 70 .meta.yaml files (status, approved_by, approved_at, scope, review_due)
  • Convert 17 string-format distinguish_from entries to canonical object format
  • Regenerate index.md files

Governance

  • Expand Stage 5 applicability in workflow.md

Verification

  • npm run check: 5/5 gates green
  • npm test: 12 bash tests + 31 schema tests pass

closes #39
closes #40

- Delete ai4x-negative-applicability-population.md (absorbed into Epic #73)
- Park ai4x-organization-design.md (curate-dependent)
- Park ai4x-lifecycle-feedback-loop.md (curate-dependent)
- Mark ai4x-context-budget-model.md as partially absorbed (token_estimate → #72, budget/truncation parked)
Refactor capability-meta.mjs and capability-indexes.mjs to derive
all field constraints from the central schema file instead of
hardcoded inline constants.

Changes:
- Load schema at startup; derive allowedKeys, requiredKeys,
  allowedSourceKeys, allowedSourceKinds from schema.fields
- Remove all validation for deprecated fields (status, approved_by,
  approved_at, scope, review_due, migration_note)
- Upgrade owner from advisory to required
- Enforce distinguish_from object format (id + boundary)
- Add source entry unknown-key rejection (schema-driven)
- Index generator: derive renderable columns from schema
- Add AI4X_SCHEMA_PATH env var for test overrides
- Update test fixtures, add tests for missing_owner, unknown_key,
  invalid_distinguish_from, schema_missing, schema_unparseable

Refs: #39
Remove deprecated fields from all 70 .meta.yaml files:
status, approved_by, approved_at, scope, review_due.

Convert 17 string-format distinguish_from entries to canonical
object format (id + boundary) per schema CA-1. ID-only strings
receive boundary: "TBD".

Regenerate index.md files to reflect updated metadata and
schema-driven column order.

Refs: #40
Add 'or shapes agent capability consumption patterns' to the
Stage 5 (AI Strategy) applicability criteria in workflow.md.

This governance improvement was identified during S2/S3 triage
and approved by the PO for immediate application.
@normenmueller normenmueller merged commit d6b55f2 into trunk May 11, 2026
1 check passed
@normenmueller normenmueller deleted the feat/39-schema-driven-ci-validation branch May 11, 2026 14:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

S3: Big-Bang metadata migration S2: Schema-driven CI validation tooling

1 participant