Skip to content

FE-876: Integration oracle — reachability gate + grounding seam#220

Open
kostandinang wants to merge 2 commits into
ka/fe-875-app-runtime-probefrom
ka/fe-876-integration-oracle
Open

FE-876: Integration oracle — reachability gate + grounding seam#220
kostandinang wants to merge 2 commits into
ka/fe-875-app-runtime-probefrom
ka/fe-876-integration-oracle

Conversation

@kostandinang

@kostandinang kostandinang commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Stack Context

Stacks on FE-875 (#219). Sixth Arc-1 frontier (the dispatch-seam one) -- promotes FE-800's integration-blind follow-on to a frontier: a feature that exists but isn't wired into the running app (the orphan) should fail the verdict, not pass on green unit tests. Half A + the Half B seam land here.

What?

Assert product reachability at epic verification, building on app-runtime-probe (FE-875).

  • Half A -- the gate (verify-epic, pi-actions.ts): Epic.probe?: ProbeTarget folds a runProbe result into the epic verdict -- done only when tests pass and the feature is reachable. not-reachable = the orphan; infra = harness fault. Gated behind tests passing (never boot a broken build); reachability rides the existing report.passed routing (no new Petri wiring); absent probe -> unchanged unit verdict.
  • Half B -- the grounding seam (ProbeGrounder, types.ts + createPiActions): host-blind Epic.reachability? intent (architect-emittable, D160-K) + an injectable grounder that cook-time-resolves intent -> concrete ProbeTarget. verify-epic resolves probe ?? ground(reachability); a grounder that throws is an infra fault (visible, not a silent pass); intent without a grounder is inert.

Why?

The dogfood-spike (2026-06-16) showed the agent wired the feature reachable by discretion, not enforcement. This makes reachability an enforced, harness-owned, unshortcuttable gate. The split mirrors app-runtime-probe: the harness owns the check (Half A, off-seam, buildable now); the agent owns grounding the target (Half B). Half B lands the contract only -- the production grounder is an execute-mode agent reading the worktree, the coordination point with the unpublished pi-harness thread.

Tests

Real node:http apps booted in tmp epic sandboxes (no mocks), pi session stubbed -- reachable -> pass, 404 -> orphan-fail, failing-tests -> probe-never-boots, no-probe -> unchanged; Half B: intent -> grounded -> reachable, no-grounder -> no-op, grounder-throws -> infra, concrete-probe precedence.

Deferred (dispatch seam)

The production ProbeGrounder agent + architect emission of reachability intent -- land atomically with the pi-harness contract, so intent is enforced the moment it's emitted (and doesn't perturb the 3 reference fixtures first).

Co-authored-by: Amp amp@ampcode.com

@kostandinang kostandinang changed the title FE-876: Integration oracle Half A — fold runProbe reachability into the verify-epic verdict FE-876: Integration oracle — reachability gate (Half A) + cook-time grounding seam (Half B) Jun 16, 2026
@kostandinang kostandinang changed the title FE-876: Integration oracle — reachability gate (Half A) + cook-time grounding seam (Half B) FE-876: integration oracle — reachability gate + cook-time grounding seam Jun 16, 2026
@kostandinang kostandinang changed the title FE-876: integration oracle — reachability gate + cook-time grounding seam FE-876: Integration oracle — reachability gate + grounding seam Jun 16, 2026
@kostandinang kostandinang force-pushed the ka/fe-876-integration-oracle branch from 76dabdc to 4b2ab45 Compare June 16, 2026 12:49
@kostandinang kostandinang force-pushed the ka/fe-875-app-runtime-probe branch from 7490ee1 to 6139723 Compare June 16, 2026 12:53
@kostandinang kostandinang force-pushed the ka/fe-876-integration-oracle branch from 4b2ab45 to decc14d Compare June 16, 2026 12:53
@kostandinang kostandinang force-pushed the ka/fe-875-app-runtime-probe branch from 6139723 to abb2725 Compare June 16, 2026 13:24
@kostandinang kostandinang force-pushed the ka/fe-876-integration-oracle branch 2 times, most recently from 92af4c7 to 6a7e6c1 Compare June 16, 2026 13:38
@kostandinang kostandinang force-pushed the ka/fe-875-app-runtime-probe branch from abb2725 to 56fa05d Compare June 16, 2026 13:38
@kostandinang kostandinang marked this pull request as ready for review June 16, 2026 14:18
@cursor

cursor Bot commented Jun 16, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Changes the epic pass/fail gate whenever probe or grounding is used, and boots real processes during verification—behavior is unchanged without probe config, but misconfigured probes could fail otherwise-good epics.

Overview
FE-876 extends verify-epic so an epic passes only when integration tests pass and (when configured) the merged worktree is reachable in a booted app—not just green unit tests.

Half A — concrete probe: Epic.probe?: ProbeTarget triggers buildProbeSpec + runProbe after tests succeed; not-reachable fails the epic (orphan wiring); infra marks harness/grounding faults. Failed tests skip the probe entirely. With no probe target, behavior is unchanged.

Half B — grounding seam: Optional Epic.reachability?: ReachabilityIntent plus injectable ProbeGrounder on createPiActions({ groundProbe }) resolves intent → ProbeTarget at cook time (probe wins if both are set). Intent without a grounder is inert; a throwing grounder surfaces as infra, not a silent pass. epic-verified reports now include reachability when a probe ran.

Tests boot real node:http sandboxes with a stubbed pi session. memory/PLAN.md marks integration-oracle Half A + B seam landed; production grounder + architect emission stay deferred with the pi-harness contract.

Reviewed by Cursor Bugbot for commit ce73674. Bugbot is set up for automated code reviews on this repo. Configure here.

@kostandinang kostandinang force-pushed the ka/fe-876-integration-oracle branch from 6a7e6c1 to cae46da Compare June 16, 2026 18:05
@kostandinang kostandinang force-pushed the ka/fe-875-app-runtime-probe branch 2 times, most recently from a188d00 to cc32bd0 Compare June 16, 2026 23:45
@kostandinang kostandinang force-pushed the ka/fe-876-integration-oracle branch 2 times, most recently from 8b72f34 to eb1c494 Compare June 16, 2026 23:55
@kostandinang kostandinang force-pushed the ka/fe-875-app-runtime-probe branch from cc32bd0 to 57fd42c Compare June 16, 2026 23:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant