Skip to content

harden: negative fixtures + M3 (schemas must reject malformed manifests)#8

Merged
mdheller merged 1 commit into
mainfrom
harden/negative-fixtures-m3
Jul 5, 2026
Merged

harden: negative fixtures + M3 (schemas must reject malformed manifests)#8
mdheller merged 1 commit into
mainfrom
harden/negative-fixtures-m3

Conversation

@mdheller

@mdheller mdheller commented Jul 5, 2026

Copy link
Copy Markdown
Member

M2 → M3 hardening. Adds negative fixtures the schemas MUST reject, so a malformed manifest can never validate silently, and enforces it in CI.

New fixtures/invalid/:

  • functional-service.bad-function.jsonfunction outside the canonical enum
  • functional-service.mutable-carry.jsonsourceosCarry.carriesMutableModelState: true (the critical SourceOS safety invariant)
  • functional-service.missing-schema-version.json — required field omitted
  • maturity.invalid-level.yaml — level outside M0–M5
  • maturity.empty-owners.yaml — empty owners (violates minItems)

tools/run_negative_fixtures.py validates each against its schema and exits non-zero if any unexpectedly passes. Wired into CI (Negative fixtures (must be rejected)) and make validate-negative.

Bumps repo.maturity.yaml to M3 (CI-hardened: negative fixtures + enforced CI), target M4.

🤖 Generated with Claude Code

Add fixtures/invalid/ (bad function enum, mutable-carry safety violation, missing
schemaVersion, invalid maturity level, empty owners) + run_negative_fixtures.py, wired
into CI. A malformed manifest can no longer pass validation silently. Bump maturity M2->M3.
@mdheller mdheller merged commit f8b160e into main Jul 5, 2026
2 checks passed
@mdheller mdheller deleted the harden/negative-fixtures-m3 branch July 5, 2026 00:03
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.

1 participant