# Callback compatibility across agent upgrades

AKK prefers an exact native task Watch, including on Codex versions newer than
the versions in its regression matrix. A version entry records test coverage;
it is not a prerequisite for read-only completion observation.

Codex 0.158.0 and later stable semantic versions may attempt the fullscreen
status binding contract. The real foreground process, styled Composer, selected
command, fresh complete status card and native thread must still be proven.
An unrecognized UI cannot authorize status input. For an unreviewed frontend,
physical Send also requires a recognizable styled Composer and a fresh empty
Composer after clearing before it uses native bracketed paste.

The app-server read connection checks the actual initialize metadata, selected
Codex home, exact native thread and the paginated read responses. Missing or
unknown statuses, item views, cursors, duplicated pages and incomplete task
boundaries remain errors. New anchors also preserve the thread directory and
originator. Read failures cannot supply completion or task acceptance.

An existing exact Watch can continue across a backend version change when the
same native task still passes those checks. Its thread, turn and request hash
are not rebound to a newer task. Read compatibility does not grant native answer
authority: unreviewed frontend/backend pairs notify only, and a backend change
withdraws executable question offers. Native writes retain their separate
reviewed protocol and foreground checks.

When exact Send preparation is unavailable, Codex and Claude may instead use a
request-correlated terminal-activity Watch. AKK revalidates the physical endpoint,
PID, process incarnation and working directory before dispatch. The Watch starts
without any observed activity and must see working or approval activity after
Send, followed by two idle observations. Old pre-Send activity cannot settle it.
The callback says only that the observed activity became idle; it has no exact
completion text, completion ID or automated interaction authority. If no activity
is observed, it waits or times out instead of calling an idle screen success.

Preparation precedes the one physical Send; attachment follows it. The same
message ID cannot resend the request or create duplicate notifications. Missing
screen access or uncertain terminal identity can still prevent a callback.
Uncertain native probe input and unsafe input surfaces stop before task text;
they are not converted into a permissive activity fallback.

Ordinary List/Status remains observation-only and does not create either Watch.
Existing managed tasks and user terminals are not restarted by this policy.

The store writer protocol is 9. Outer Terminal Watch schema remains 3; new
paginated anchors and request-correlated activity anchors use version 2. Earlier
anchors remain readable. The store upgrade changes the writer fence without
rewriting existing private Watch records, and older writers cannot mutate the
upgraded store.

Read errors expose only the operation stage and parsed actual/expected backend
versions. Full server responses, task text and raw RPC errors are not copied into
callback warnings. The expected version is diagnostic on read-contract
connections and remains a strict requirement on native interaction connections.

Development validation uses the fast test tier, type checking and architecture
validators. Future-version responses and TUI frames are contract regressions,
not a claim of native end-to-end certification for every future version. Initial
sandbox restrictions prevented an independent live 0.159.3 app-server check;
the publication checks below do not replace that native end-to-end coverage.


## Local acceptance and release validation

Scott reported manually installing `0.13.15-local.20261002` and successfully
testing the fix before authorizing npm and ClawHub publication. This is user
acceptance evidence; this session did not collect a new detailed native test
trace or independently certify every future Codex version.

Stable version `0.13.15` uses the runtime from commit
`13607c4c39e9dbf37550ef1d8c78d6127838244f`. Release preparation updates package
version metadata, release notes, the bundled Skill and publication checks.
All 239 runtime JavaScript files match the user-tested local installation.
The local installation was not repeated.

The immediate publication gate passed on Node.js `24.18.0`:

- `npm run test:release`: 2,913 tests passed, zero failed or skipped.
- Isolated OpenClaw `2026.9.1` installation, plugin loading, callback, doctor,
  read-only tmux fixture, update/reinstall and uninstall checks passed.
- ClawHub runtime validation with the real SDK and artifact dry-run passed.

The optional credentialed native lifecycle smoke was not repeated during
publication. Existing user terminals and the real Gateway were left running.
