Skip to content

contracts/binding.yaml: apr-model-graph-v1 forward_pass_completeness claims implemented, but fn forward_pass does not exist (ghost binding) #4094

Closed

Description

@noahgift

Found by PVL-001 EV-2 (#4080, branch PMAT-4080-pvl-2-ghost-binding-reject), which makes pv proof-status --binding resolve bindings and reject ghosts.

contracts/binding.yaml (lines ~477-482) claims:

- contract: apr-model-graph-v1.yaml
  equation: forward_pass_completeness
  module_path: aprender::inference::forward
  function: forward_pass
  status: implemented

No fn forward_pass exists anywhere in the tree (rg -n 'fn forward_pass\b' --type rust crates src finds nothing, 2026-09-23). With the EV-2 resolver:

pv proof-status --binding contracts/binding.yaml   → rc=1
GHOST BINDINGS (1)
  apr-model-graph-v1.yaml forward_pass_completeness: forward_pass

(The only other ghost the old resolver reported, compute_mse, was a false positive: it's pub(super) fn in crates/aprender-core/src/tree/regression_helpers.rs:27, and EV-2 fixes the resolver to see it.)

Fix: point the binding at the real forward-pass function(s), or set status to what is true (partial/not_implemented). No workflow calls proof-status --binding today, so nothing turns red yet, but any certification that does will reject until this is fixed.

Activity

  1. noahgift commented on Sep 23, 2026

    @noahgift
    MemberAuthor

    Five more genuine ghosts, in contracts/aprender/binding.yaml, found by the same EV-2 resolver once its source-root derivation stopped assuming the pre-monorepo layout. Each was checked with rg -n --type rust "(fn|struct|enum|type|trait) <name>\b" crates src → NOT FOUND:

    contract equation function
    format-parity-v1.yaml transpose_involution swap_axes
    format-parity-v1.yaml element_count validate_element_count
    format-parity-v1.yaml name_bijection map_tensor_name
    bidirectional-attention-v1.yaml bidirectional_attention bidirectional_attention
    setfit-apr-v1.yaml selection_lock_lifecycle mint_test_token

    Two other names the old resolver flagged there, SetFitArtifactDoc and ClassifyResponse, are real pub structs. EV-2 makes the resolver see type items, so they are no longer reported.

  2. added this to the 0.74.0 milestone on Sep 24, 2026
  3. noahgift commented on Sep 24, 2026

    @noahgift
    MemberAuthor

    triage 2026-09-24 (aprender-dd, issues owner; proposal #4159, approved by the cop aprender-cf): milestoned to 0.74.0 — unmilestoned tooling → carry to 0.74.0 (lightest of 0.71–0.74; its debt-ratchet slice). It was (no milestone). Open PR / live branch: PR#4095.

  4. added
    kind:codeWork is a code change (derived rule, #4159)
    on Sep 24, 2026
  5. modified the milestones: 0.74.0, backlog on Sep 24, 2026
  6. noahgift commented on Sep 24, 2026

    @noahgift
    MemberAuthor

    triage 2026-09-24 (aprender-dd; #4159, cop ruling): moved 0.74.0 → backlog. It has no release theme or epic, and operator rule 2026-09-24: "tickets go without an epic" to backlog, "no stray tickets allowed". It had been load-balanced into 0.74.0 as tooling carry earlier today.

  7. added a commit that references this issue on Sep 24, 2026
  8. noahgift commented on Sep 25, 2026

    @noahgift
    MemberAuthor

    Landed on batch/0.70.0 @ 68d46b7: the ghost aprender::inference::forward::forward_pass is rebound to realizar::gguf OwnedQuantizedModel::forward (pub, forward_fused_q4k.rs:17) with its signature. Codomain gap noted: it returns last-position [V], not [B,S,V]. pv validate: 0 errors; aprender-contracts lib: 1773 passed.

  9. noahgift commented on Oct 12, 2026

    @noahgift
    MemberAuthor

    evidence for close: 989cb01 (#4655), ancestor of main 6bd89b0. Checked at main: contracts/binding.yaml:477-482 binds forward_pass_completeness to OwnedQuantizedModel::forward in realizar::gguf::inference::forward::core. That function exists (forward_fused_q4k.rs, include!d from core.rs via forward_cached.rs). The extra ghosts named in the comments are not_implemented or removed.

  10. noahgift commented on Oct 12, 2026

    @noahgift
    MemberAuthor

    Cop batch close (FLOW-004 drain, ≤43/d): fix verified on main — merged #4655 ; ancestor of origin/main: 989cb01 . Evidence: #4094 (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

    P1High prioritykind:codeWork is a code change (derived rule, #4159)owner:aprender-a7owner sessionsize:MK̂ 3-4 h

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions