Phase 1a: content schema validator (freeze the schema)
Implements AGENTS.md section 7 front-matter schema as a single-file, standard-library-only Python validator; no third-party YAML dependency and no framework. Adds the `make validate` gate, a 20-case fixture set and docs/content-schema.md. DoD satisfied: - make validate runs and exits 0 on an empty/clean content/ tree (missing dir and empty dir both exit 0; fixture ok-empty covers it). - Every violation class has a fixture under test/fixtures/fail-*; each exits non-zero with one line per violation (file:line: field: rule). `make test` runs all 20 cases: 20/20 pass. - Dangling artefact reference is fatal (fail-dangling-artefact; artefacts[].url must resolve to an existing in-repo L3 stub or asset). - Unknown front-matter field is fatal (fail-unknown-field), including unknown keys nested inside artefacts[]/metrics[]. - docs/content-schema.md committed; states the frozen schema, links to AGENTS.md section 7, and records that any later schema change is a breaking change requiring Sam's approval. - Scope respected: no content authored, no rendering, no site code. Files: Makefile, tools/validate_content.py, test/fixtures/**, docs/content-schema.md, .gitignore (__pycache__).
This commit is contained in:
25
test/fixtures/ok-block-scalars/content/about/background.md
vendored
Normal file
25
test/fixtures/ok-block-scalars/content/about/background.md
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
# a leading comment is allowed
|
||||
id: background
|
||||
area: about
|
||||
level: 1
|
||||
title: >-
|
||||
Twenty-five years of delivery
|
||||
claim: |
|
||||
Shipped software since 2000.
|
||||
Now agent systems and the platform under them.
|
||||
confidence: delivered
|
||||
period: "2000-"
|
||||
tech:
|
||||
- "NixOS"
|
||||
- 'Golang'
|
||||
metrics:
|
||||
- label: years
|
||||
value: 25
|
||||
artefacts: []
|
||||
public: true
|
||||
last_verified: 2026-10-20
|
||||
tags: [narrative, career]
|
||||
---
|
||||
|
||||
# Twenty-five years of delivery
|
||||
0
test/fixtures/ok-block-scalars/expect.txt
vendored
Normal file
0
test/fixtures/ok-block-scalars/expect.txt
vendored
Normal file
Reference in New Issue
Block a user