Skip to content

ONT-3a: bindings gate emits pc_resolver/ghosts, spec probe reads pc_extract/unresolved — row cannot bind after #4431 #4454

Closed

Description

@noahgift

The ONT-3a done_when probe cannot pass at #4431's head ae1887db9, even after it merges.

The spec's normative probe is docs/specifications/paiml-ontology.md in paiml/infra, ONT-3a:

"$PV" lint contracts/ --gate bindings --format json >"$TMP/b.json" && json_object "$TMP/b.json" && jq -e '.pc_extract=="fired" and .unresolved==0 and .crates_scanned>1' "$TMP/b.json" >/dev/null && merged ONT-3a

I measured it with pv 0.69.3 built from ae1887db9 (fold B3, cf038d3), running pv lint contracts/ --gate bindings --format json in aprender at that head. It exits 0, and the output is:

{"pc_extract":null,"unresolved":null,"crates_scanned":7,"verdict":"Pass"}
top-level keys: allowlisted checked crates_scanned duration_ms extra files_parsed gate ghosts passed pc_resolver registries resolved stale_allowlist type verdict violations
pc_resolver="fired" ghosts=0 resolved=253

BindingsReport in crates/aprender-contracts/src/lint/bindings_gate.rs:60-73 names the positive control pc_resolver and the non-allowlisted unresolved count ghosts. The probe asks for pc_extract and unresolved, so jq -e is false and ONT-3a stays unbound. The other conjuncts are satisfied: JSON object, crates_scanned=7>1.

The same pre-probe of #4431's other rows at ae1887db9 (2c, 4e, 5, 9) shows only merged as false, which is expected before the rows exist. 4d and 8 are still being re-run.

Two possible fixes; the owner picks one:

  • aprender: emit pc_extract and unresolved (the spec's names) in the bindings report.
  • infra: a spec revision renaming the probe's fields. That goes through the ONT-001 spec process and the probe_sha/done-when-test suite.

Found by infra-ont 37f7875c while pre-probing #4431's ONT rows for their carriers.

🤖 Generated with Claude Code

Activity

  1. noahgift commented on Sep 25, 2026

    @noahgift
    ContributorAuthor

    Verified fixed on the B3 fold tip 0c883a4ca (by fe8c9df). scripts/ont/done_when/ONT-3a.sh under bash -x with WT at 0c883a4: the output is one JSON object, and .pc_extract=="fired" and .unresolved==0 and .crates_scanned>1 is true. The only false clause is merged ONT-3a, since the row is not yet on main. This issue closes when #4431 merges. The ONT-3a carrier then binds to the squash sha.

    🤖 Generated with Claude Code

  2. added this to the 0.71.0 milestone on Oct 8, 2026
  3. noahgift commented on Oct 12, 2026

    @noahgift
    ContributorAuthor

    evidence for close: 989cb01 (#4655), ancestor of main 6bd89b0. Checked at main: crates/aprender-contracts/src/lint/bindings_gate.rs emits pc_extract and unresolved, and bindings_gate_tests.rs asserts the fields the ONT-3a probe reads.

  4. noahgift commented on Oct 12, 2026

    @noahgift
    ContributorAuthor

    Cop batch close (FLOW-004 drain, ≤43/d): fix verified on main — merged #4655 ; ancestor of origin/main: 989cb01 . Evidence: #4454 (comment)

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

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions