# Execution Continuity — Final Qualification

Date: 2026-08-21
Status: qualified; landing pending at receipt creation

## Candidate

- Commit: `7865e579794783bfaa2a4ff337d968da90d11680`
- Branch: `origin/impl/continuity-root-integration`
- Run: `run_7a9a2217-edc1-41ed-9eb6-7dfda2048eba`
- Root worker: `wrk_83b1154e-a9e8-44ca-b7c2-b7fc11e071a1`
- Build host: `debian1`
- Node: `v24.19.0`
- pnpm: `11.22.0`
- Firefox: Mozilla Firefox `154.0`
- Chromium: `150.0.7871.181`

The candidate includes Execution Continuity convergence, durable live `message.send` delivery, internal mid-turn steering, recurring checkpoint/control-loop scheduling, live operator C9–C11 UI, backend-authorized dead-man recovery, adaptive 9–12 second ChatGPT launch throttling/rate-limit cooldown, event-retention/debounced-persistence performance hardening, and duplicate-executor reconnect-war hardening.

## Common isolated gate

Executed from a detached checkout of the exact candidate on `debian1`:

```text
CI=true pnpm gate
```

Result: **PASS**.

- Protocol: **11/11 pass**
- ChatGPT web adapter: **22/22 pass**
- Extension: **35/35 pass**
- Persistence: **9/9 pass**
- Core: **33/33 pass**
- MCP/executor: **43/43 pass**
- Workspace typecheck: PASS
- Workspace build: PASS
- Firefox + Chromium extension build: PASS

Notable covered behavior includes:

- durable checkpoint/live steering and `notBefore` spacing;
- corrective/idle bypass rules;
- message idempotency and ambiguous-delivery fail-closed behavior;
- root progress wake semantics;
- dead-man backend authorization/threshold/deduplication;
- lifecycle-aware conversation-report deduplication;
- persistence restart behavior with explicit shutdown flush while retaining the 1-second default debounce;
- launch throttling and rate-limit reset metadata;
- duplicate executor standby/promotion without reconnect war.

## Packaging

Extension packaging on the exact candidate: **PASS**.

Firefox `web-ext` lint with warnings-as-errors:

```text
errors   0
notices  0
warnings 0
```

## Firefox executor-shell smoke

A current stock Firefox 154 temporary-extension profile was launched under Xvfb on `debian1` against the repository synthetic executor smoke server. A disposable smoke token was generated and kept only on the buildbox.

Result file:

```json
{
  "ok": true,
  "detail": "executor connected, unmanaged tab rejected, managed ChatGPT tab created",
  "expectedBrowser": "firefox",
  "hello": true,
  "inspectAck": true,
  "unmanagedRejected": true,
  "createAck": true,
  "managedTabCreated": true
}
```

Required `docs/QUALIFICATION.md` evidence therefore passes:

1. authenticated `executor.hello`: PASS;
2. command ACK: PASS;
3. unmanaged conversation rejection: PASS;
4. managed ChatGPT tab creation: PASS;
5. browser type `firefox`: PASS.

## Chromium compatibility smoke

Chromium 150 was launched under Xvfb with a clean profile and only the built MV3 extension enabled. DevTools target discovery showed the extension service worker running:

```text
type:  service_worker
url:   chrome-extension://fjdnfphnolehnohbkoiomcnnnmoogmdo/background.js
title: Service Worker chrome-extension://fjdnfphnolehnohbkoiomcnnnmoogmdo/background.js
```

Result: **PASS** for the clean-profile compatibility smoke permitted by `docs/QUALIFICATION.md`.

A full Chromium executor-connection smoke was intentionally not forced because Chromium 142+ requires an interactive Local Network Access permission flow. Qualification policy explicitly forbids weakening that browser security boundary merely for automation. Production onboarding retains the options-page **Allow local executor access** flow.

## Qualification defects found and resolved

Qualification did find real integration regressions before this final candidate; none were waived:

1. `origin/main` event-storm optimization was auto-merged into the wrong core closure, causing an invalid conversation-report cache update. Corrected in `d77b68d`.
2. Conversation-report dedupe suppressed an identical idle observation required by a newly scheduled attempt. Fresh attempts now invalidate only that worker's in-memory report cache before lifecycle observation.
3. Continuity restart tests initially reopened a debounced `JsonFileRepository` without the production shutdown flush. Tests now explicitly flush before restart; the mainline 1-second debounce remains enabled.
4. Concurrent reconnect hardening (`72c59aa`) advanced main during final convergence and was merged before the final gate.

The final candidate `7865e57` passes after all four reconciliations.

## Landing rule

Before push to `origin/main`, fetch the remote and confirm the qualified candidate remains a descendant of current `origin/main`. If main advanced with code changes, integrate them and rerun affected qualification. If main is unchanged, fast-forward the exact qualified implementation lineage, verify `origin/main`, update the durable dogfood record with the landing SHA, and only then terminally complete `/root`.
