# Intent Petri V2｜Acceptance Record

Date: 2026-07-14  
Harness: `tests/integration/v2-acceptance.test.ts`  
Session ID: `v2-acceptance-session`

## Qualifying session

The acceptance harness constructs a linear Pi-shaped session branch and then rebuilds it only through persisted `update_action_path` tool-result checkpoints.

| Requirement | Recorded result |
|---|---:|
| Tool-result calls | 45 |
| Graph revisions | 15 |
| Verified checkpoints | 15 |
| Invalid checkpoints | 0 |
| Dynamic refinements after activation | 3 |
| Active ancestor shells | 3 |
| Current stack entries including North Star and leaf | 5 |
| Current provisional futures | 3 |
| Committed immediate next | 1 |
| Directional outcomes | 1 |
| Superseded future | 1 retained |
| Retired future | 1 retained |
| Blocked Gate | 1 |

The scenario starts with a flat active investigation and deepens it over three later revisions. It therefore exercises runtime deepening rather than merely activating a hierarchy that was completely predeclared.

## Orientation answers

The acceptance assertions prove that the resulting projection directly answers the ten orientation questions:

1. **Overall goal** — `Reliably fix refresh-token behavior`.
2. **Current phase and depth** — five stack entries: North Star, three active shells, and one executable leaf.
3. **Active leaf and why-now** — `Execute accept_l3 leaf`; `accept_l3 is the deepest certain action`.
4. **Evidence and exit condition** — expected evidence `accept_l3 result`; exit condition `accept_l3 succeeds`.
5. **Already committed next** — `Apply the confirmed fix`.
6. **Provisional futures** — three live provisional candidates.
7. **Adjustment conditions** — each provisional candidate exposes `dependsOn` or `reconsiderWhen`; WATCH includes the adjustment trigger.
8. **Most recent plan change** — revision 7 retires an incompatible alternate; revision 6 supersedes the original fallback because evidence invalidated it.
9. **Old paths** — the old fallback remains `superseded` and the alternate remains `retired`.
10. **Failure/Gate/human decision** — `Human approval` remains a blocked Gate and is shown in WATCH.

The test completes the complete replay, projection, question assertions, file export, and viewer smoke in well below the ten-second orientation budget on the verification machine. This is a deterministic usability proxy; repeat manual timing if the visible labels or Pane layout change materially.

## Additional acceptance probes

- `tests/unit/refinement.test.ts`
  - dynamically converts an already-active executable leaf into a shell;
  - replaces an active refinement without recording false success/failure.
- `tests/unit/attention.test.ts`
  - prioritizes committed next, evidence-related provisional, recovery, then Human-pinned directional;
  - displays `未来尚未声明` instead of using outcome Places as invented actions.
- `tests/integration/viewer.test.ts`
  - observes an atomically replaced `current.json` in follow mode within one second;
  - falls back to cropped raw Mermaid and a visible render error without terminating;
  - keeps every line within the terminal width down to one column.

## Reproduction

```bash
nubx vitest run tests/integration/v2-acceptance.test.ts
nub run prepublishOnly
```
