Skip to content

ONT-4c: the first non-code contracts — README.md, CLAUDE.md, one .apr model file, one CSV — with their extractors #3847

Description

@noahgift

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Medium priorityont-0.70Ontology spec work that must finish in 0.70 (operator 2026-09-23)

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions