ONT-001 row ONT-4c (docs/specifications/paiml-ontology.md, infra). Selected mechanically: R-24's path is
ONT-4 → 4b → 4c1 → 4b2 → 4c3 → 4c4 → 4c → 4d; 4c4 is BLOCKED-EXTERNAL on #3522 row O-1
(precondition-lint.sh prints the line), so 4c is the next eligible row. depends_on ONT-4b, ONT-2b — both bound.
What the row asks for
Three new extractors over entity types Σ currently declares but does not implement, plus the four contracts
that make them fire, so pv lint contracts/ --gate shapes reports a non-zero by_entity_type for
readme, llm-context, apr-model and csv with pc_extract fired.
ontology/extract/{readme,llm_context,csv}.rs (apr_model.rs already exists — ONT-4c1 — and this row reuses it
for the .apr contract of §4.1).
- The four contracts of §4.1, including
contracts/readme-root.yaml and contracts/claude-md.yaml.
- Frontmatter on
README.md and CLAUDE.md; readme_gen emits the frontmatter from census so the README cannot
drift from its own contract.
- Σ
entity_types marks these four implemented: true and the rest false.
RED (from the row, verbatim)
extract:readme on a README whose fenced command appears in no workflow run: step → reject
readme:verifiedCommand unresolved: <cmd>; frontmatter kind outside Σ → reject; missing schema_version →
reject; extract:llm-context on a CLAUDE.md referencing a nonexistent path → reject; closed: true rejects an
undeclared frontmatter key; extract:apr-model on a header whose tensor count disagrees with the file → reject;
model:parityReceipt with no PP-LLAMA receipt for the sha → reject; extract:csv with a header/row column
mismatch → reject; a contract naming a declared-only type (gguf) → Unknown{ExtractorMissing} with the type
named, never Pass; pc_extract fires for all four extractors every run.
Mutation
Change a README command to one CI does not run → RED; delete schema_version → RED; edit one byte of the model
header → RED.
Done-when probe (infra, scripts/ont/done_when/ONT-4c.sh)
tracked contracts/readme-root.yaml && tracked contracts/claude-md.yaml &&
"$PV" lint contracts/ --gate shapes --format json >"$TMP/d.json" && json_object "$TMP/d.json" &&
jq -e '.by_entity_type.readme>=1 and .by_entity_type["llm-context"]>=1 and .by_entity_type["apr-model"]>=1 and
.by_entity_type.csv>=1 and .pc_extract.readme=="fired" and .pc_extract["apr-model"]=="fired" and
.verdict=="Pass"' "$TMP/d.json" >/dev/null && present '^---' README.md && merged ONT-4c
Dogfood (R-23)
The four extractors against aprender; rmedia through the same gate — both recorded with command, exit and a
one-line verdict in the session receipt, graded by scripts/ont/r23-lint.sh.
Also filed by this row
ONT-4c2: extract:media via rmedia (Q12, promoted by §0.4) — filed, not implemented, here.
ONT-001 row ONT-4c (
docs/specifications/paiml-ontology.md, infra). Selected mechanically: R-24's path isONT-4 → 4b → 4c1 → 4b2 → 4c3 → 4c4 → 4c → 4d; 4c4 isBLOCKED-EXTERNALon #3522 row O-1(
precondition-lint.shprints the line), so 4c is the next eligible row.depends_on ONT-4b, ONT-2b— both bound.What the row asks for
Three new extractors over entity types Σ currently declares but does not implement, plus the four contracts
that make them fire, so
pv lint contracts/ --gate shapesreports a non-zeroby_entity_typeforreadme,llm-context,apr-modelandcsvwithpc_extractfired.ontology/extract/{readme,llm_context,csv}.rs(apr_model.rsalready exists — ONT-4c1 — and this row reuses itfor the
.aprcontract of §4.1).contracts/readme-root.yamlandcontracts/claude-md.yaml.README.mdandCLAUDE.md;readme_genemits the frontmatter from census so the README cannotdrift from its own contract.
entity_typesmarks these fourimplemented: trueand the restfalse.RED (from the row, verbatim)
extract:readmeon a README whose fenced command appears in no workflowrun:step → rejectreadme:verifiedCommand unresolved: <cmd>; frontmatterkindoutside Σ → reject; missingschema_version→reject;
extract:llm-contexton aCLAUDE.mdreferencing a nonexistent path → reject;closed: truerejects anundeclared frontmatter key;
extract:apr-modelon a header whose tensor count disagrees with the file → reject;model:parityReceiptwith no PP-LLAMA receipt for the sha → reject;extract:csvwith a header/row columnmismatch → reject; a contract naming a declared-only type (
gguf) →Unknown{ExtractorMissing}with the typenamed, never
Pass;pc_extractfires for all four extractors every run.Mutation
Change a README command to one CI does not run → RED; delete
schema_version→ RED; edit one byte of the modelheader → RED.
Done-when probe (infra,
scripts/ont/done_when/ONT-4c.sh)Dogfood (R-23)
The four extractors against aprender; rmedia through the same gate — both recorded with command, exit and a
one-line verdict in the session receipt, graded by
scripts/ont/r23-lint.sh.Also filed by this row
ONT-4c2: extract:media via rmedia(Q12, promoted by §0.4) — filed, not implemented, here.