LearnNewsExamplesServices
Frontmatter
id14462
titleStall-inference v1 — deterministic STALL_* detection pass + handoff section (graduates #14447; merge-gated on the #14461 ADR)
stateClosed
labels
enhancementaiarchitecture
assigneesneo-gpt
createdAtJul 2, 2026, 11:31 AM
updatedAtJul 2, 2026, 4:17 PM
githubUrlhttps://github.com/neomjs/neo/issues/14462
authorneo-fable
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJul 2, 2026, 4:17 PM

Stall-inference v1 — deterministic STALL_* detection pass + handoff section (graduates #14447; merge-gated on the #14461 ADR)

Closed v13.1.0/archive-v13-1-0-chunk-8 enhancementaiarchitecture
neo-fable
neo-fable commented on Jul 2, 2026, 11:31 AM

Graduation act 2 of Discussion #14447 (quorum met 2026-07-02; full consensus record on-thread). ⛔ Merge gate: this leaf's PR is merge-blocked until the #14461 ADR is Accepted — claim and design freely (the #14433 pattern).

Problem

The organism senses its code, memory, and priorities — but not its own motion: benched-owner portfolios, silent stewards, unexecuted ramps, starved decisions, unowned closure acts all freeze silently. #14447's hand-run fixture found 5 stalled / 2 rescued / 7 true-negative across the open epic surface in one morning pass. This leaf mechanizes that pass.

Scope — v1 classes (from the graduated OQ1 computability table)

  • OWNER_BENCHED_LANE (pure-metadata: participationStatus × open-item assignee join)
  • DECISION_STARVEDPR human-gate class only (open + approved + unmerged; fully structured)
  • RESOLUTION_PENDING (all-subs-closed + epic-open + owner-inactive; the cure note renders "/epic-resolution is any-agent" per the operator norm)
  • STALE_DEFER — derived over the #14461 4-tuple where parseable; zero new sensing
  • Explicitly OUT of v1: RAMP_UNEXECUTED (needs its motion predicate), UNANSWERED_ASK (adoption + #14426-canary gated), STEWARD_SILENT (needs stewards-as-assignees convention), doc-embedded DECISION_STARVED (needs the marker).

Acceptance Criteria

  • Detection pass runs in the Dream cycle (GapInferenceEngine family; deterministic graph traversal, no LLM in the detect path); every finding carries the full #14461 schema (7 fields incl. deferDisposition).
  • Per-class motion predicates — raw updatedAt never used as a motion signal (assert in tests with the #13444 fixture shape: a comment must NOT clear a frozen-ramp-class stall).
  • Deliberate-defer discrimination: items carrying a parseable defer (per the 4-tuple adapters) never flag; unparseable defers render as candidate-defer hygiene debt, bounded list.
  • Handoff renders ONE bounded section: verified top-N only; candidate-stall and source-degraded in collapsed sub-lists; OQ5's four human-render contracts enforced for operator-owned items (pull-not-push · leverage-framed unblock-counts · waitingSince as plain data · render-off flag honored).
  • Suppression/TTL: firstSeen/lastSeen/TTL + lastVerifiedAt; findings expire out of render when motion resumes or TTL lapses.
  • No auto-actions: no reassignment, no ticket-filing, no wake emission from the detector. (Consumers: #13751 reads the queue as direction data — separate lane; FM actuator post-v1 per #13448.)
  • Replay fixture: the on-thread 2026-07-02 baseline (5/2/7 with named true-negative reasons) becomes the test fixture; precision asserted against it before the section ships in the handoff (the #14306-inherited bar).
  • The #14426 post-sync integrity canary AC applies if findings persist as graph records (rides the ADR's persistence decision).

Out of Scope

Hook injection (#13751 owns consumption) · wake alerts (post-v1, receivable-only) · FM affordances (#13448 sub-4) · the deferred classes above · any ranking/structural-weight interaction (OQ4's conditional axis waits for the #14422 route-attribution data).

Sequencing

Blocked-by (merge only): #14461 Accepted. Unblocks: #13751's ranked-map AC · #14453's negative-velocity input · the #13448 stall-badge card block. Filed unclaimed — implementation-tier; claimer runs ticket-intake + structural-pre-flight (likely ai/services/graph/ per the GapInferenceEngine family).

Refs #14447 (graduated source; fixture + full consensus record on-thread), #14461 (ADR gate), #14304 (Lane 4), #14426, #13751, #13448.

tobiu referenced in commit c6f02cc - "feat(graph): render work-graph stall findings (#14462) (#14471)" on Jul 2, 2026, 4:17 PM
tobiu closed this issue on Jul 2, 2026, 4:17 PM