Skip to content

EPIC E0 0.70: Ontology (ONT-001) #3269

Open
4 of 9 issues completed
Open

Description

@noahgift

owner: apr-embed (re-owned 2026-10-09 by clerk aprender-3e for cop aprender-13: works child #3715 (ladder cells, 2026-10-09))

Spec: APR-EPIC-001 §2 · Epic: E0 · Train: 0.70 · Successor at cut: S2

Theme

Ontology (ONT-001)

done_when

rows bound/total ≥ 0.80 (pv lint --gate shapes at the tag sha); entity types 9/9; ghost bindings = 0; shapes over zero focus nodes = RED; ONT-10 releases aprender-contracts-cli; #3715's SHACL shape refuses the 0.70 tag on any missing cell; #3559 ruling recorded.

Budget

At most 13 open children (docs/roadmaps/epics.yaml). Repo-wide cap 100 open issues; andon at 95.

Absorbs

#4071, #4072, #4073, #3847, #4069, #3972, #4047, #4070, #4075, #4330, #4074, #4077, #4078, #4079, #3715, #3856, #3559, #3560, #4319, #4379, #4420, #3610, #3611, #3624, #4100

Prior body

Why this is filed

ONT-001 v4.3 (infra/docs/specifications/paiml-ontology.md) §6 assigns aprender every ontology row but three. Measured on main @ fa6e35f23, 2026-09-14: 1 of 17 rows merged, and 1 ticket in this repo (#3222, closed, no milestone). Sixteen rows of upstream-assigned work had no ticket, no milestone and no owner here — untriaged, which is P0 by standing rule. This epic is the triage, not a promise to finish by the due date (see Horizon).

Baseline — derive, don't quote

ONT-001 requires aprender has derive with
contracts may carry entity: / shape: / evidence: 0 / 0 / 0 of 1818 grep -rlE '^entity:' contracts --include='*.yaml' | wc -l
pv census (ONT-1) absent pv --help
pv extract → contracts.nt (R-18) absent pv --help
crates/aprender-contracts/src/ontology/ (decision 4) does not exist ls
16 entity types named, 14 extractors (7 in v1alpha1 scope) 0 §3.7
every ONT row implemented (§6) 1 of 17 — ONT-2a (#3224) git log --grep='ONT-' origin/main
pv kaizen is the kaizen loop code-only: bindings, call sites, E0/E1/E2 crates/aprender-contracts-cli/src/commands/kaizen.rs

Two of these are load-bearing:

  1. pv kaizen is blind to every surface that is not Rust. The release train sweeps the (crate, feature) matrix, examples, README.md, CLAUDE.md, workflows, model files and CSVs — and the loop that is supposed to improve on each sweep cannot see one of them. ONT-001 R-17 is exactly this: one structure, any entity type.
  2. infra main tracks ONT-001 v3.1 (f1269d0, infra#570); v4.3 — the version this epic and APR-RELEASE-001 §11 are measured against, sha256 512a16d5e09c… — is an untracked draft on one box. A quorum lane on gx10, yoga or mini cannot fetch the premise, so every ontology verdict it returns is unverifiable by construction. This is the one P0 here and it is fixed in infra (ONT-P), not in this repo — PR from docs/track-ont-001-ontology-spec. (Corrected 2026-09-14: first reported as "untracked, no history"; v3.1 is tracked.)

The 16 rows (owner: aprender)

Phase B — ONT-1 census · ONT-6 verdict lattice · ONT-2b formal: parse · ONT-2c
Phase C — ONT-3a extract:code · ONT-3b extract:lean / model_of (closes PVL F5) · ONT-4 Σ · ONT-4b extract:pv-contract · ONT-4c readme / llm-context / apr-model / csv · ONT-4d subsumption + inherited shapes · ONT-4e requires/ensures + Liskov on refines
Phase D — ONT-5 consistency + witness · ONT-7 · ONT-8 PROV-O · ONT-9 self-application · ONT-10 release

Not ours: ONT-P, ONT-0 (infra) · ONT-11 (pmat).

Process

APR-RELEASE-001 §11 (PR #3268) governs the cadence: one row per train, every gate lands unarmed (R-8), five ratchet counters move only through make ont-ratchet (R-6), and every surface sweep closes with an ontology delta or a named ont-delta: none <reason>. §11.4 is the payoff — quorum premises cite contract ids instead of prose, verdicts are ONT-6 lattice elements, and reduce is meet = min rather than a vote count.

Horizon — stated, not promised

16 rows at one per train, trains every 2–3 days ⇒ ≈40 days [A]. Milestone capacity at 6.1 closures/day (trailing 7 d, measured 2026-09-14): 0.68.0 over by 45 d, 0.69.0 over by 5 d, 0.70.0 fits by 28 — so this epic is filed to 0.70.0 and its rows spill forward by §6.3 like any other work. Filed as one epic rather than 16 issues on purpose: arrival already outruns closure 2:1.

🤖 Generated with Claude Code

Parked

Closed over budget (APR-EPIC-001 rule 5). Reopen = pull (rule 7).

Activity

  1. added this to the 0.70.0 milestone on Sep 14, 2026
  2. added
    P1High priority
    epicEpic — multi-story umbrella
    on Sep 14, 2026
  3. modified the milestones: 0.70.0, 0.73.0, 0.69.0 on Sep 17, 2026
  4. noahgift commented on Sep 20, 2026

    @noahgift
    ContributorAuthor

    Governed by 30-day-plan.md v2.2 §5.4 — and row zero is now measured

    Priority: co-equal with the P0 dogfood work (operator, 2026-09-20): ontology to 80%, SHACL first. Spec §0.1 currently says higher-priority fleet work outranks ONT — that needs a dated [A] amendment, because it no longer does.

    Row zero — the fleet cannot run the gates at all

    The plan flags that the fleet pv pin predates the shapes gate. Measured on the pinned binary, it is harder than that:

    $ pv --version            → pv 0.65.2      (/home/noah/.cargo/bin/pv, gx10 likewise; yoga has none)
    $ pv lint contracts --gate shapes --format json
    error: unexpected argument '--gate' found
    $ pv extract contracts --check
    error: unrecognized subcommand 'extract'
    

    extract does not exist and --gate is not a flag in 0.65.2. So every fleet-side SHACL gate errors; it does not report UNMEASURED. Filed as #3567 (P0), and it blocks this epic's 80% target, which is defined against the installed, fleet-pinned pv.

    Correction carried here too: the 0.68.2 contract receipts (pv extract --check rc 0, shapes Pass, armed_shapes = ont-shapes-v1 / ladder-measured / ladder-green) were produced by a HEAD-built pv 0.68.2, the right tool for that bump and no evidence at all about the fleet.

    One baseline, one definition of 80%

    Three baselines are live across issues and specs — 7/17, 11/25, "~80%". One survives: the ledger. And 80% is redefined as probes passing on a frozen capability ledger (N fixed at a sha), run against the installed binary — not a row count, not a percentage of a moving denominator.

    Current state [C]: 25 rows, 11 bound (37%), ~1,300 contracts, 6 of 9 entity types.

    Breadth before depth, in this order

    1. ONT-4d — first verify it is not already discharged by R-19 type materialisation. Doing the work twice is worse than doing it late.
    2. ONT-4c — README, llm-context, CSV; one PR per type. This is the "docs SHACL-validated" goal (Docs, all 1037 examples and the cookbook: pv-SHACL validated and current for Qwen3.5 (6 of ~1500 artifacts mention it today) #3560): one track, one denominator, not two workstreams racing.
    3. ONT-11 (pmat sync) — cross-repo; needs a pmat release and a four-layer pin bump. Start the ticket now, because the pin chain is the long pole, not the code.
    4. ONT-10 — the CLI rides the aprender cascade; depth gates ship declared and unarmed (Unknown{NotArmed}), printed by pv proof-status. Needs an operator ruling on the dependency amendment (plan decision 1).

    ONT-4c3 is held on evidence/kernels/gated_rmsnorm/lambda.json; there are 0 files under evidence/kernels/ today. Owner: the CUDA lane / the cuda-oxide probe (#3062).

    The thing that will actually stall this work

    contracts/census.json and contracts/lint-baseline.json are rewritten by ONT rows and by every PP-QUANT contract PR, against one-PR-at-a-time CI and a 62-min p95 gate. That is a rebuild storm, and the plan blocks the ontology slot until it is decided (plan decision 8): regenerate in the merge step, or serialise ONT behind slice M. Open — and it gates this epic more tightly than any technical row.

    Also governing: pv is the band under every repo and ships from this one, so a pv release is a fleet event and the pin bump follows every train that changes it (§5.12) — #3567 is a recurring obligation, not a one-off.

    Train-level context: #3080.

  5. modified the milestones: 0.69.0, 0.70.0, 0.71.0 on Sep 20, 2026
  6. noahgift commented on Sep 23, 2026

    @noahgift
    ContributorAuthor

    milestone → 0.71.0 per docs/roadmaps/milestone-triage-2026-09-23.md (#4024), operator approval 2026-09-23 (relayed by aprender-cf). Reason: debt ratchet pillars B/C (#3997: pv at the deepest level, ontology merge), slice 2

  7. modified the milestones: 0.71.0, 0.70.0 on Sep 23, 2026
  8. 52 remaining items

  9. modified the milestones: 0.71.0, 0.73.0 on Oct 14, 2026
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

    P1High priorityepicEpic — multi-story umbrellaont-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