@staix/agent-hub 0.34.0 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/README.md +35 -6
  3. package/docs/adding-an-ai-tool.md +2 -2
  4. package/docs/addons/claude-mem.md +4 -4
  5. package/docs/addons/open-code-review.md +1 -1
  6. package/docs/agent-notes/README.md +6 -0
  7. package/docs/agent-notes/adapters.md +9 -5
  8. package/docs/agent-notes/budget.md +1 -1
  9. package/docs/agent-notes/bus.md +1 -1
  10. package/docs/agent-notes/daemon.md +4 -3
  11. package/docs/agent-notes/local-worker.md +1 -1
  12. package/docs/agent-notes/models.md +2 -0
  13. package/docs/agent-notes/tasks.md +1 -1
  14. package/docs/agent-notes/tests.md +5 -0
  15. package/docs/design/adapters.md +110 -2
  16. package/docs/design/agent-hub-architecture.md +63 -1
  17. package/docs/design/agent-hub.md +6 -0
  18. package/docs/design/bus.md +18 -0
  19. package/docs/design/execution-reference.md +146 -0
  20. package/docs/design/task-board.md +10 -0
  21. package/docs/dogfood.md +33 -12
  22. package/docs/events.md +38 -20
  23. package/docs/memory.md +21 -7
  24. package/docs/operations.md +539 -24
  25. package/docs/quickstart.md +18 -4
  26. package/docs/research.md +71 -13
  27. package/docs/roles.md +1 -1
  28. package/docs/sdlc.md +9 -7
  29. package/docs/security.md +87 -11
  30. package/docs/smoke.md +14 -0
  31. package/docs/specs/2026-09-19-agent-hub-design.md +8 -3
  32. package/docs/verification/2026-11-07-0.34.1.md +54 -0
  33. package/docs/verification/2026-11-07-compat-python-startup-1248.md +51 -0
  34. package/docs/verification/2026-11-07-compat-receipt-harness-1248.md +105 -0
  35. package/docs/verification/2026-11-07-compat-receipt-producers-1248.md +96 -0
  36. package/docs/verification/2026-11-07-compat-workflow-1248.md +94 -0
  37. package/docs/verification/2026-11-07-daemon-startup-1232.md +169 -0
  38. package/docs/verification/2026-11-07-jcode-receipt-reconstruction-1248.md +118 -0
  39. package/docs/verification/2026-11-07-kimi-delayed-usage.md +34 -0
  40. package/docs/verification/2026-11-07-kimi-review-watch-1284.md +115 -0
  41. package/docs/verification/2026-11-08-agy-1.5.3.md +96 -0
  42. package/docs/verification/2026-11-08-agy-acp-t0.md +56 -0
  43. package/docs/verification/2026-11-08-hub-visual-1058.md +161 -0
  44. package/docs/verification/2026-11-08-jcode-0991-model-setter-1317.md +143 -0
  45. package/docs/verification/2026-11-08-kimi-252-model-setter-1317.md +137 -0
  46. package/docs/verification/2026-11-08-kimi-tui-completion-1282.md +45 -0
  47. package/docs/verification/2026-11-08-kimi-wire-yield-1283.md +31 -0
  48. package/docs/verification/2026-11-08-live-model-override-1317.md +250 -0
  49. package/docs/verification/2026-11-08-qwen-0269-acp.md +138 -0
  50. package/docs/verification/2026-11-08-qwen-0269-model-setter-1317.md +91 -0
  51. package/docs/verification/2026-11-09-0.35.0.md +129 -0
  52. package/docs/verification/2026-11-09-headless-records-1320.md +157 -0
  53. package/docs/verification/claude-permission-transport-native.py +10 -3
  54. package/docs/verification/claude-shell-wrapper-native.py +8 -8
  55. package/docs/verified.json +245 -15
  56. package/package.json +3 -3
  57. package/plugins/agent-hub/.claude-plugin/plugin.json +1 -1
  58. package/plugins/agent-hub/kimi-hook.js +20397 -0
  59. package/plugins/agent-hub/kimi-review-policy-worker.js +217 -0
  60. package/plugins/agent-hub/server.js +2701 -664
  61. package/scripts/check-docs.mjs +12 -1
  62. package/src/adapters/acp-model-policy.ts +56 -0
  63. package/src/adapters/acp.ts +175 -5
  64. package/src/adapters/agy/entry.ts +8 -5
  65. package/src/adapters/agy/hooks.ts +65 -15
  66. package/src/adapters/channel-peer.ts +33 -1
  67. package/src/adapters/claude-implementer.ts +16 -3
  68. package/src/adapters/codex-appserver.ts +118 -8
  69. package/src/adapters/codex-review-isolation.ts +3 -1
  70. package/src/adapters/compat.ts +11 -6
  71. package/src/adapters/definitions/builtin-metadata.ts +8 -1
  72. package/src/adapters/definitions/native-cli-entry-kimi.ts +76 -7
  73. package/src/adapters/definitions/native-cli-preview-common.ts +2 -2
  74. package/src/adapters/definitions/native-cli-preview-kimi.ts +9 -2
  75. package/src/adapters/definitions/reviewer-variants.ts +3 -1
  76. package/src/adapters/kimi-review-policy-worker.js +2 -0
  77. package/src/adapters/kimi-review-policy-worker.ts +85 -0
  78. package/src/adapters/kimi-review-policy.ts +68 -0
  79. package/src/adapters/kimi-review.ts +41 -41
  80. package/src/adapters/kimi-tui-facts.ts +153 -0
  81. package/src/adapters/kimi-wire-usage.ts +33 -8
  82. package/src/adapters/local-worker.ts +59 -20
  83. package/src/adapters/model-token.ts +3 -0
  84. package/src/adapters/pi.ts +27 -5
  85. package/src/adapters/registry-types.ts +34 -3
  86. package/src/adapters/registry.ts +1 -0
  87. package/src/adapters/reviewer-policy-watch.ts +86 -0
  88. package/src/adapters/reviewer-print.ts +80 -18
  89. package/src/cli/agents.ts +1 -1
  90. package/src/cli/facts-hook.ts +4 -2
  91. package/src/cli/help.ts +3 -2
  92. package/src/cli/identity.ts +3 -0
  93. package/src/cli/kimi-facts-hook.ts +11 -0
  94. package/src/cli/kimi-plugin.ts +157 -0
  95. package/src/cli/main.ts +48 -9
  96. package/src/cli/model.ts +52 -0
  97. package/src/cli/output.ts +23 -1
  98. package/src/cli/recovery-package.ts +15 -7
  99. package/src/cli/reset.ts +1 -1
  100. package/src/cli/status-lines.ts +8 -4
  101. package/src/hub/budget.ts +1 -1
  102. package/src/hub/bus.ts +40 -2
  103. package/src/hub/code-facts.ts +10 -3
  104. package/src/hub/completions.ts +3 -1
  105. package/src/hub/config-apply.ts +2 -1
  106. package/src/hub/control-client.ts +1 -1
  107. package/src/hub/daemon.ts +1050 -106
  108. package/src/hub/deliverable-files.ts +38 -5
  109. package/src/hub/dogfood-profile.ts +1 -1
  110. package/src/hub/envelope.ts +1 -1
  111. package/src/hub/events.ts +28 -18
  112. package/src/hub/execution-lineage.ts +120 -0
  113. package/src/hub/execution-reference.ts +36 -0
  114. package/src/hub/hub-tools.ts +21 -2
  115. package/src/hub/instances.ts +4 -3
  116. package/src/hub/kimi-events.ts +46 -0
  117. package/src/hub/kimi-usage.ts +132 -29
  118. package/src/hub/lifecycle.ts +31 -15
  119. package/src/hub/limits.ts +13 -4
  120. package/src/hub/manager.ts +15 -2
  121. package/src/hub/memory-policy.ts +2 -1
  122. package/src/hub/memory-sync-attestation.ts +54 -0
  123. package/src/hub/memory-sync-state.ts +20 -5
  124. package/src/hub/model-overrides.ts +115 -0
  125. package/src/hub/native-hook-launch.ts +12 -3
  126. package/src/hub/operational-view.ts +2 -2
  127. package/src/hub/peers.ts +27 -0
  128. package/src/hub/permission-mode.ts +1 -1
  129. package/src/hub/person-figures.ts +88 -0
  130. package/src/hub/report.ts +38 -4
  131. package/src/hub/research-dataset.ts +158 -0
  132. package/src/hub/research-memory.ts +68 -0
  133. package/src/hub/research-quality.ts +118 -0
  134. package/src/hub/research-record.ts +279 -0
  135. package/src/hub/research.ts +126 -27
  136. package/src/hub/restart.ts +14 -0
  137. package/src/hub/settings.ts +3 -0
  138. package/src/hub/startup-event-seeds.ts +51 -0
  139. package/src/hub/startup-readiness.ts +65 -0
  140. package/src/hub/startup-timing.ts +38 -0
  141. package/src/hub/tasks.ts +29 -9
  142. package/src/hub/ui.ts +9 -5
  143. package/src/hub/visual-assets.ts +50 -0
  144. package/src/hub/visual.ts +257 -0
  145. package/src/memory/brief.ts +169 -14
  146. package/src/memory/capture.ts +2 -1
  147. package/src/memory/recall.ts +46 -5
  148. package/src/memory/record-provenance.ts +82 -0
  149. package/src/memory/records.ts +116 -0
  150. package/src/models/route/adec.ts +190 -0
  151. package/src/models/route/config.ts +37 -3
  152. package/src/models/route/decision-evidence.ts +83 -0
  153. package/src/models/route/decision.ts +143 -0
  154. package/src/models/route/runtime.ts +13 -6
  155. package/src/ui/index.html +134 -6
  156. package/src/ui/plugin.ts +65 -4
  157. package/templates/AGENTS.block.md +1 -1
  158. package/templates/config.json +1 -1
  159. package/templates/profiles/general.json +1 -1
  160. package/templates/profiles/research.json +1 -1
  161. package/templates/profiles/writing.json +1 -1
@@ -0,0 +1,143 @@
1
+ # Jcode 0.99.1 headless ACP model setter
2
+
3
+ Date: 2026-11-08. Task #809, Refs #1317 AC4. **Passed:** native setter APIs and
4
+ the actual owned `JcodePeer`/DB-latch path in a fixture with no TUI client.
5
+ This does not qualify a shared native TUI binding or failover concurrency.
6
+ The production Jcode capability remains disabled pending that form restriction.
7
+ This is compatibility evidence, not a security attestation or account/model run.
8
+
9
+ ## Exact artifact and setup
10
+
11
+ - macOS arm64 installed Jcode reports 0.99.1, v0.99.1 (7206efd0c).
12
+ Its 142,887,552-byte executable has SHA-256
13
+ `eccb33c08a21764317b0e0bf217e60c745b90f51c7bf6d2ff90b548b9fe7383e`.
14
+ A single byte-identical private executable copy is checked before/after;
15
+ no dependency tree or personal native home is copied.
16
+ - Native `jcodeCommand`, owned-group helpers, `JcodePeer`, `ModelOverrides` and
17
+ `ModelOverrideLatches` are the actual first-party implementations. The passing
18
+ adapter/latch source is `7c86077e89f790af0fd444b8ca9bd90e8d0bc09f`.
19
+ - Fresh 0700 temporary roots hold HOME, JCODE_HOME, cwd, TMPDIR, all XDG and
20
+ hub/tool homes. Empty native/project MCP files, `JCODE_DISABLE_CLAUDE_MCP=1`,
21
+ `JCODE_NO_TELEMETRY=1`, `--no-update` and `--no-selfdev` avoid account/import/
22
+ updater paths. No configured account, key or actual model is used.
23
+ Telemetry-file absence is not claimed; all native writes remain isolated.
24
+ - A native `provider add` creates one no-key OpenAI-compatible fixture profile,
25
+ default model `receipt-model-a`, pointing only to an owned ephemeral loopback
26
+ server. The integration fixture additionally declares `receipt-model-b` in
27
+ that same private profile's models array before startup. Endpoint, auth and
28
+ default A do not change. This matters: without catalog opt-in or explicit B,
29
+ the native default advertises static A only, even though its raw setter can
30
+ accept B. The probe never pretends that an unused GET model list was consumed.
31
+
32
+ ## Native isolation controls
33
+
34
+ Every native command uses Seatbelt from the existing local-worker profile plus
35
+ owned paths. Actual-home data and installed-runtime write-open are denied.
36
+ Native TCP is limited to the exact fixture provider port; an owned decoy port
37
+ is denied. Only the owned server/debug Unix sockets are allowed. No port 4600,
38
+ actual gateway, public provider, real key or native account is used.
39
+
40
+ The Rust HTTP runtime needs the named
41
+ `com.apple.SystemConfiguration.configd` lookup. A separate create/release control
42
+ returns a NULL dynamic-store handle without it and a valid handle with it,
43
+ without querying or changing configuration values. The final profile adds only
44
+ that service; file and network negative controls still pass. No OS/security
45
+ setting, file limit or deadline is changed.
46
+
47
+ The provider rejects Origin, credentials, unknown paths, oversized bodies,
48
+ unexpected models and excess completion calls. It emits bounded fixed text SSE,
49
+ never tool calls. Client filesystem/terminal capabilities are false. Owned
50
+ processes and groups are stopped and observed gone. Detached lifetime
51
+ containment is still unproven, not a disposable-runner attestation.
52
+
53
+ ## Native APIs and actual adapter behavior
54
+
55
+ The raw protocol leg initializes exact `jcode` 0.99.1/protocol 1 and creates a
56
+ session. While fixture request A is held, both `session/set_model` and
57
+ `session/set_config_option` refuse with the native processing-a-prompt error.
58
+ There is still only request A. After normal A completion, legacy set_model B
59
+ acknowledges with configOptions and the same-session config update; the next
60
+ request uses B. Standard set_config_option A then produces request A. Launch
61
+ argv remains A on both serve and ACP, with wire sequence `[A, B, A]`.
62
+
63
+ The separate integration leg uses the actual `JcodePeer` and its owned serve/ACP
64
+ children, with the same profile and fixed launch A. A transparent observer calls
65
+ the original request method with unchanged arguments and returns the same
66
+ promise; it records only bounded method/model IDs, not replacement responses.
67
+
68
+ 1. Initial native advertisement proves baseline A and advertised B. The runtime
69
+ requires exact 0.99.1 identity/receipt plus existing Jcode compat admission;
70
+ native advertisement alone cannot grant a capability.
71
+ 2. A real DB override A enters the first deliver. The provider holds A's stream.
72
+ Writing desired B while busy sends no setter or second model request.
73
+ 3. A completes unchanged. The next deliver sends standard
74
+ `session/set_config_option`, `configId: model`, value B. Native B completes,
75
+ and the actual latch reports B applied. The private provider config hash is
76
+ unchanged immediately after B, not merely after a later restoration.
77
+ 4. Clear removes the DB intent. The next deliver sets the original baseline A,
78
+ the provider observes A, and latch status is A with no desired/pending value.
79
+ 5. Three prompts have accepted/completed receipts, two standard model setters
80
+ have exact values `[B, A]`, and the same owned serve/ACP launch is stopped.
81
+ Provider config remains byte-identical after stop. The actual installed
82
+ executable and selected actual config snapshot remain unchanged for the leg.
83
+
84
+ The fixture native profile, CLI argv and synthetic responses are all declared
85
+ before effects. No `jcode_cmd`, `-m`, provider-profile or credential configuration
86
+ is made live by the runtime override. Actual hub CLI/dashboard authority is
87
+ separate unit/integration evidence, not claimed as a native journey here.
88
+
89
+ ## Shared TUI limitation
90
+
91
+ The ACP child checks its own `prompt_running`. The shared native server protects
92
+ an ordinary stream with an Agent mutex, but deferred model mutation is not a
93
+ logical TUI-turn fence. The pinned source's failed-attempt/failover retry path
94
+ releases and reacquires that mutex; a queued mutation can run in between.
95
+ [SetModel/deferred mutation](https://github.com/1jehuang/jcode/blob/v0.99.1/crates/jcode-app-core/src/server/provider_control.rs#L723),
96
+ [streaming lock](https://github.com/1jehuang/jcode/blob/v0.99.1/crates/jcode-app-core/src/server/client_lifecycle.rs#L3925)
97
+ and [failover boundary](https://github.com/1jehuang/jcode/blob/v0.99.1/crates/jcode-app-core/src/server/turn_failover.rs#L156)
98
+ are source inspection, not a native failover execution receipt.
99
+ This fixture has no TUI client and does not qualify that concurrency path.
100
+ No TUI-bound live setter is enabled from this receipt without a separately
101
+ reviewed form/ownership restriction. No native load-session recovery ceiling
102
+ is relaxed; 0.99.1 still does not echo the restored session identity.
103
+
104
+ ## Failed attempts and real-home observations
105
+
106
+ Two earlier raw attempts failed before serve readiness, with zero provider
107
+ requests/setters, confirmed owned stop and unchanged per-leg actual config.
108
+ The diagnostic attempt captured Rust system-configuration's NULL-object panic.
109
+ The isolated dynamic-store control identified the precise missing named lookup;
110
+ the final fresh raw run kept every assertion and bound and passed with it.
111
+ Private logs from the failed attempts are retained.
112
+
113
+ After the successful actual-peer run, the controller was accidentally invoked
114
+ again before its earlier completion was checked. Exclusive native-home creation
115
+ refused with EEXIST before any new native command. The first immutable structured
116
+ result is preserved; the duplicate stdout redirect overwrote that stdout log,
117
+ so the passing structured file, not the later log, is the authoritative artifact.
118
+ No duplicate native run or config restore was performed.
119
+
120
+ The selected actual Jcode/Kimi config/credential snapshot is nine entries,
121
+ with symlinks recorded without following. The actual-peer leg matched before
122
+ and after with digest
123
+ `d5e53329f27db1df63c90c6f475049b8df13611d3913ec09b7589a1e6d580997`.
124
+ Other probes observed Kimi credential drift between legs, before their native
125
+ spawn; writer attribution is unproven. There is no task-wide immutable-state
126
+ claim across those intervals, and no real file was restored or edited.
127
+
128
+ ## Evidence and remaining scope
129
+
130
+ Private workspace scratch `temp/task809-jcode` holds the producers;
131
+ `temp/task809` holds the controllers and closed case bindings/results.
132
+
133
+ | Item | SHA-256 |
134
+ | --- | --- |
135
+ | raw Mac producer | `22259a94a7e568f9570dbfcee3e8ed85075bb72cd8031c87492f58ba4c0e00b2` |
136
+ | actual-peer producer | `c75c04dcc374d1a8ed7cf7223693e975e481a9b104200ed1912ac5fd732ddcca` |
137
+ | actual-peer controller | `4a801a8d5471274ef6269144a2d98c1ee7053808cba4d540229bd5ea511d793f` |
138
+ | actual-peer structured result | `502bc53ef01e2f38462ab92387dd343788a636dfa38301753635f090930d196a` |
139
+
140
+ Native TUI/failover, other platforms/providers/versions, real accounts/models
141
+ and installed-hub rollout remain unverified. Source checks, canonical DGX and
142
+ exact-head hosted CI are separate PR gates. No COMPAT/trust widening, verified
143
+ stamp, release or production model change occurs in this task.
@@ -0,0 +1,137 @@
1
+ # Kimi 2.5.2 headless ACP model setter
2
+
3
+ Date: 2026-11-08. Task #809, Refs #1317 AC4. **Passed:** the installed artifact's
4
+ headless ACP setter changed A to B and restored A after clear;
5
+ the running A turn was not changed. This is a model-free compatibility receipt,
6
+ not a security attestation, reviewer isolation or provider/account qualification.
7
+
8
+ ## Artifact and admission
9
+
10
+ - Installed standalone macOS arm64 CLI: 2.5.2, 182,590,912 bytes, SHA-256
11
+ `ae3fa721a361a2c9e9b6b3960560d1572a0bca6a8d1407e2017e6b70f80e7f97`.
12
+ A byte-identical private executable copy was verified before/after execution.
13
+ Native `--version` and ACP initialize both confirmed 2.5.2. The embedded Web UI
14
+ contains an older 2.5.1 string; it is not this receipt's version evidence.
15
+ - The headless peer retains its existing native identity admission. The setter
16
+ additionally requires an exact receipt-backed 2.5.2 policy, the current owned
17
+ process/session and a valid model advertisement/baseline. No other version is
18
+ admitted by this receipt. `kimi-review` retains its separate COMPAT and
19
+ isolation gate, without this capability or a 2.5.2 verified-version change.
20
+ - Native adapter/latch source was committed at
21
+ `1b67f69db720bc7d6feaedd5ca71abbfaad50e3a` for the original A/B leg, then
22
+ `771117140fd7a314db0e7af79623cffe7d3c04c4` for the A/B/clear/A leg after
23
+ merging the updated T1 base. The probe instantiates the actual
24
+ `AcpPeer`, `ModelOverrides` and `ModelOverrideLatches`; it does not substitute
25
+ protocol responses. A transparent observer records bounded method/model IDs,
26
+ calls the original request with unchanged arguments and returns its same
27
+ promise. This is not a real dashboard/CLI or full-daemon native journey.
28
+
29
+ ## Isolation
30
+
31
+ A fresh owned 0700 fixture beneath `/private/tmp/ahub-809-...` supplies HOME,
32
+ KIMI_CODE_HOME, TMPDIR, cwd, empty MCP and every XDG/tool home before production
33
+ imports. The environment is an explicit allowlist, not inherited accounts,
34
+ session markers, proxy credentials or personal settings. The two private models
35
+ `fixture-a` and `fixture-b` reference the same synthetic managed provider and
36
+ fixed loopback Anthropic endpoint. Synthetic file-backed OAuth data supplies
37
+ only `synthetic-access-only`; the installed transport sends that value as
38
+ `X-Api-Key`, with no Authorization or Cookie. No actual account or model is used.
39
+
40
+ The provider binds 127.0.0.1 on port 0, caps request bodies at 1 MiB, rejects
41
+ Origin, wrong paths/auth and excess requests, and emits fixed text SSE only.
42
+ There are no generated tools. ACP advertises no filesystem/terminal client
43
+ capability; every native permission request is denied, and the observed count
44
+ was zero. No reviewer agent-file allowlist or native tool-isolation claim is
45
+ inferred from this ACP run.
46
+
47
+ Every native launch is wrapped in Seatbelt using the existing local-worker
48
+ profile plus exact owned paths/port. Actual-home data and installed-binary
49
+ writes remain denied. Controls prove private-provider TCP succeeds, an owned
50
+ decoy port is denied, a named actual config cannot be read and the installed
51
+ binary cannot be write-opened without truncation. The only extra runtime service
52
+ is `com.apple.FSEvents`, needed for the native workspace watcher. An installed
53
+ runtime preload control observes a private-file watcher event with that service;
54
+ without it the same control reports EMFILE. No file limit, security setting,
55
+ production permission or deadline was raised.
56
+
57
+ The reused Node loopback guard is supplementary. The kernel port controls are
58
+ the network boundary; an empty application log alone is not proof that no call
59
+ was attempted. Process lifetime containment beyond observed owned cleanup
60
+ remains unproven; this native run is not a disposable-runner attestation.
61
+
62
+ ## Observed next-turn procedure
63
+
64
+ 1. `initialize` returns protocol 1, name `Kimi Code CLI` and version 2.5.2.
65
+ `session/new` returns a session and model config option with current A and
66
+ both exact fixture choices. The adapter proves its process binding and
67
+ immutable baseline A.
68
+ 2. The private DB stores A, and actual `AcpPeer.deliver` sends the first prompt.
69
+ The provider sees `fixture-a` and holds a fixed text stream behind an explicit
70
+ release barrier. The adapter remains busy.
71
+ 3. The DB is changed to B while A is held. Latch status retains effective A and
72
+ reports desired B/pending next turn. The request observer sees no model
73
+ setter; the only provider request remains A.
74
+ 4. The fixture releases A and observes its normal completion, without cancel or
75
+ restart. On the next deliver, the adapter sends exactly one
76
+ `session/set_config_option` with `configId: model`, value `fixture-b` and the
77
+ bound session. Production parsing validates the response/config update.
78
+ 5. The second fixture request uses `fixture-b`. The prompt completes normally
79
+ and the latch reports B applied, with no pending revision. The exact observed
80
+ effect order through B is prompt, config setter, prompt.
81
+ 6. Clear removes the desired DB row. Status initially retains effective B with
82
+ pending next turn. The third deliver sends the original baseline A through
83
+ the standard setter, then the actual provider receives A. Final status has
84
+ effective A, no desired override and no pending next turn. The complete wire
85
+ sequence is `[A, B, A]`, with setter values `[B, A]`, three normal outputs,
86
+ zero cancels, zero turn failures and zero permission calls.
87
+ 7. Private config, device, MCP, synthetic credential and copied-binary hashes
88
+ match immediately after B, after clear completes and after owned stop.
89
+ Successful cleanup removes only the owned fixture.
90
+
91
+ The original A/B leg passed first. A fresh three-prompt leg then retained every
92
+ original assertion and the same 50 s operation/10 s stop budgets, extending only
93
+ its exact expected request count from two to three. Existing provider/account
94
+ configuration, launch argv and the person's real native home are not changed.
95
+
96
+ ## Real-home checks and failed attempts
97
+
98
+ The selected actual config/credential snapshot has nine entries, with symlinks
99
+ recorded without following. The passing probe's before/after digest is
100
+ `297927630977dddf707dce6dd4af9cd561a38dcc2d42e3c2027f7660dba1d094`
101
+ for the original A/B leg, and
102
+ `938c4047672ae8a1144c45ffa9946653b1ed692c6edcba23d9b5f1919b3ff069`
103
+ for the A/B/clear/A leg.
104
+ The installed original binary is unchanged. There was credential-file drift
105
+ between earlier metadata/probes, detected before any candidate spawn. That
106
+ failed pre-spawn guard is retained, and no actual file was restored or edited.
107
+ Writer attribution is unproven; there is no task-wide unchanged-state claim
108
+ across those intervals. Each executed leg keeps its own before/after check.
109
+
110
+ Two earlier native attempts failed before any provider request or setter, with
111
+ owned stop and per-case actual config checks passing. The diagnostic attempt
112
+ confirmed correct initialize identity/version, then native `session/new` failed
113
+ with watcher EMFILE. A separate controlled watcher isolated the missing
114
+ FSEvents service. The final fresh run kept every assertion and the same 50 s
115
+ operation/10 s stop budgets and passed after that exact service was allowed.
116
+ The synthetic auth-header assumption was corrected from installed source before
117
+ any native provider request, not by accepting an unknown credential after a
118
+ failure. Failed fixtures/logs are preserved privately.
119
+
120
+ ## Evidence and limits
121
+
122
+ Workspace scratch `temp/task809-kimi` contains the probe/factory; `temp/task809`
123
+ contains the controller, closed logs and case bindings. The passing result is
124
+ bound to these SHA-256 values (the final clear leg root is
125
+ `/private/tmp/ahub-809-o_nuxlfe`):
126
+
127
+ | Item | SHA-256 |
128
+ | --- | --- |
129
+ | native probe | `df711ffd1e712141fef96096e89676971462765a8dea95eca8acddbce249f6cf` |
130
+ | synthetic fixture factory | `02a8e172817af815c3247a6ca4c43b888775c3cf99b0d0ca02f02428270b90a8` |
131
+ | root controller | `a9bf78022546b9c9ebe25c63586522476527b28b3c535547d625a8f189ad59ac` |
132
+ | closed native result | `d0b63136b705952d5f0b29ee9b2fccbd9502e0393d4f056eb0b50354da3578d7` |
133
+
134
+ Real provider/model behavior, actual accounts, other providers/platforms,
135
+ the reviewer surface and installed-hub rollout remain unverified. Typecheck,
136
+ unit tests, canonical DGX and hosted CI are separate PR gates; no pass is inferred
137
+ from this native receipt and no verified stamp or release is performed here.
@@ -0,0 +1,45 @@
1
+ # Kimi TUI completion facts (#1282)
2
+
3
+ Date: 2026-11-08. Scope: exact native version Kimi Code 2.5.2 on macOS arm64, isolated Git projects and isolated `KIMI_CODE_HOME`, real model turns and the real hub control protocol. No prompt, answer, session id, task title, command or credential is reproduced here.
4
+
5
+ ## T0 native evidence
6
+
7
+ - Ordinary turns write `turn.prompt(origin.kind)` and final `turn.ended(reason)`. A blocked first Stop produced only the intermediate `agent.turn.ended`; the final `turn.ended` and `prompt.completed` appeared only after the second Stop was allowed.
8
+ - A real background process wrote `agents/main/tasks/<id>.json` with `status: "running"` and `endedAt: null`, then `status: "completed"` with a numeric end time. Its ordinary turn completed before the background process.
9
+ - StopFailure produced `turn.ended(reason: "failed")` and a matching prompt failure. Interrupt produced `turn.ended(reason: "cancelled")` and `prompt.aborted`.
10
+ - `TurnStarted.origin_kind` was `user` for person prompts and `task` for a background notification. `turn.prompt` may omit `promptId`; notification turns may also omit `prompt.completed`. The native `notificationId` or turn id is the correlation fallback.
11
+ - TaskStarted and Notification hooks were not observed in these runs. Settlement therefore re-reads the native inventory and final turn instead of requiring a hook.
12
+ - A launcher-scoped local plugin worked from `plugins/managed/agent-hub` and `plugins/installed.json`. Its record carries the launch id, not prompt data. Normal TUI exit removed the record and files; another plugin remained.
13
+ - `spawnSync` blocked the launcher's control socket heartbeat. The production launcher now uses async spawn in the foreground process group.
14
+
15
+ ## Live implementation evidence
16
+
17
+ - Ordinary person turn: one private `done`, with the correlated native turn end and no text in the completion sinks.
18
+ - Real background `sleep 15`: no completion while the task file said running. One `done` appeared only after the task and notification turn had settled, without requiring TaskStarted or Notification hooks.
19
+ - `hub_inbox`: a queued message was pulled and the person prompt that called the tool produced one `done`. The hub message itself opened no additional person run.
20
+ - Earlier forced-close/restart probes produced one `interrupted` for the open run, never a duplicate on later reads.
21
+ - `ahub results --json` exposed only ids, peer, outcome, times and `private: true`. The launch-scoped plugin was removed on normal exit and other plugins stayed installed.
22
+ - Focused regression suites: 90 completion, agy, launcher and review-follow-up tests plus 36 full-gate failure-focused tests passed, with typecheck and bundle freshness. These covered the codec, completion flow, missing prompt ids, absent Stop/Notification hooks, unknown inventory, compat receipts and unverified-version behavior.
23
+ - PR review follow-up: the version probe preserves a wrapper/interpreter prefix without launch-only model options. A shared-home plugin record carries its owner pid and process signature; an active or unknown owner is never replaced, and only a proven-gone owner is stale. Replacement and cleanup also share one fail-closed lock per native home, and setup failure always falls back to the plain TUI. `turn_end` is emitted for agy and Kimi native turns, a final row after the 2 s Stop deadline still settles, and an unknown task inventory no longer discards final-turn evidence. Quiet re-reads back off from 250 ms to 1 s.
24
+ - Full Linux `scripts/check.sh --changed` at `8402dcd9c712e410f7f610e6271fe768894ac11e`: **12737 pass, 102 skip, 0 fail**, ending `check: OK`. The earlier full run's 10 failures were all fixed and re-run in the focused suites.
25
+ - OCR delegation covered all 21 reviewable files at that head. Two preview/ownership findings were fixed with red/green plugin regressions.
26
+
27
+ ## Acceptance criteria
28
+
29
+ - [x] AC1: blocked-Stop, delayed final output and stale-replay cases; Stop alone creates no completion.
30
+ - [x] AC2: one unread completion only after final-turn readback and verified background quiescence.
31
+ - [x] AC3: StopFailure becomes `failed` only after final-state readback; Interrupt is quiet; launcher loss/restart yields at most one `interrupted`.
32
+ - [x] AC4: a real `hub_inbox` pull does not create a person-originated native turn; the person's prompt settles once.
33
+ - [x] AC5: forged, stale, wrong-launch, wrong-session, wrong-cwd and replayed observations create no run, completion or receipt.
34
+ - [x] AC6: active background work and unknown inventory never produce a premature `done`.
35
+ - [x] AC7: no prompt, answer, hook error, task command or title reaches completion rows, events, logs or memory; native-person results are private stubs.
36
+ - [x] AC8: only compat `kimi-tui` 2.5.2 enables the bridge; other versions keep existing TUI behavior with completion disabled.
37
+ - [x] AC9: `scripts/check.sh --changed` passed at `8402dcd9c712e410f7f610e6271fe768894ac11e`, with 12737 pass, 102 skip and 0 fail. Live exact-version evidence above is complete.
38
+
39
+ ## Hardcoded-value calibration
40
+
41
+ A fresh blind sample of 80 decided entries passed 69/80 (86.25%) after applying the published contract, external-input safety floor, operational default and test-seam distinctions. The new inventory constants were then classified; `bun scripts/inventory-hardcoded-values.ts --check` passed (3494 entries, 2489 classified, 1005 baseline).
42
+
43
+ ## Implementation boundary
44
+
45
+ Hooks are candidates only. The daemon, current launch, native home, native session, project and current socket generation bind every observation. The transcript supplies origin and final outcome; background task files supply count or explicit unknown. Native-person results stay private. Headless ACP behavior is unchanged. An unverified TUI version or a launch without these readbacks declares no TUI settle.
@@ -0,0 +1,31 @@
1
+ # Kimi sliced wire-log drain (#1283)
2
+
3
+ Date: 2026-11-08. Scope: deterministic synthetic fixtures only. No personal wire log, account, model call or native session was used.
4
+
5
+ ## Baseline and after
6
+
7
+ `scripts/benchmarks/kimi-wire-drain-1283.ts` creates three agents with the same append backlog and forces 16 minimum-sized reader slices. Baseline has no scheduler and retains the original synchronous 16-pass behavior. Sliced mode uses the daemon scheduler and a 0 ms continuation between slices.
8
+
9
+ | Measurement | Baseline | Sliced |
10
+ | --- | ---: | ---: |
11
+ | Slices | 16 | 16 |
12
+ | Drain wall time | 34.401 ms | 33.824 ms |
13
+ | Longest synchronous slice | 34.373 ms | 3.296 ms |
14
+ | Discovery calls | 32 | 32 |
15
+ | Bytes read | 2,082,248 | 2,082,248 |
16
+ | Yields | 0 | 15 |
17
+ | Caught-up reports | 1 | 1 |
18
+
19
+ These are one local run's raw values, not a production latency or percentage claim. Discovery and bytes are unchanged; each scheduled invocation returns after one bounded read/commit, and control traffic can run before the next slice. All 16 continuation callbacks are timed individually. The terminal offline read still drains synchronously before drop, and a failed attempt uses the bounded 250 ms follow-up instead of an unbounded 0 ms retry.
20
+
21
+ ## Acceptance criteria
22
+
23
+ - [x] AC1: the same fixture reports before/after longest synchronous slice and discovery count, with raw values and no inferred percentage.
24
+ - [x] AC2: a real daemon `status` request completed between two slices; the test asserts pending-slice ordering, not elapsed milliseconds.
25
+ - [x] AC3: fault injection after reader offset advancement proves cancellation cannot discard the uncommitted slice; the delayed timer also contains an event failure and keeps its bounded retry.
26
+ - [x] AC4: a new agent created between slices is discovered and counted by the next fresh validation pass.
27
+ - [x] AC5: protocol, privacy, rotation, hard-link, shrunk-file, malformed-row and partial-line tests pass; earlier successful rows survive a later failure exactly once.
28
+ - [x] AC6: concurrent cues remain serialized at one pending drain, and stop/session replacement cannot rebind the old session.
29
+ - [x] AC7: `scripts/check.sh --changed` passed at `a9b777a947ab2636f36da704b71cae8dc157fb6e`, with 12698 pass, 102 skip and 0 fail, ending `check: OK`.
30
+
31
+ Focused result: 43 tests across the benchmark, delayed-usage, daemon and wire suites passed, plus typecheck. Baseline/sliced receipt generation and the benchmark test also passed independently.
@@ -0,0 +1,250 @@
1
+ # Live model override T1 evidence, #1317
2
+
3
+ Task #808 implements person-owned desired model state and supported next-turn
4
+ selection. This is source and fake-transport work. No model, real account,
5
+ native profile, deployed daemon, release or machine trust was changed.
6
+
7
+ ## Contract and scope
8
+
9
+ - Overrides live in the project hub.db and survive daemon restart. Runtime reset
10
+ clears them; retained state is bound by recovery feature/integrity admission.
11
+ - CLI model set/clear/list is person-only, including agent-shell/live-test refusal.
12
+ Dashboard writes use verified settings-session identity, preview and confirmation;
13
+ expiry alone is not treated as a session identity.
14
+ - The desired revision and an active turn's captured model are separate. Captures
15
+ happen before asynchronous preparation; acknowledgements bind their actual
16
+ adapter owner and turn, not a future turn id or a model string alone.
17
+ - Conductor ruling on 2026-11-08 admits both CodexPeer app-server turn/start
18
+ paths. An explicit native client model wins, turn/steer is unchanged, and a
19
+ turn/start model becomes the native thread default. Clear removes the hub
20
+ override but does not invent an earlier native default.
21
+ - T1 does not add ACP setters or native TUI authority. The supported factories
22
+ are host-marked; public capability text alone cannot claim a live setter.
23
+ - Tier 3 instance/model/command/provider rules, native reviewer tool/isolation
24
+ fences and local budget/campus/observer safeguards remain in force.
25
+
26
+ ## Checks
27
+
28
+ The worktree began at b97ee5af976e92b97d2eb55b8a1147908a83fac7. Local dependency
29
+ preparation used pinned Bun 1.4.2 with a frozen lockfile (99 packages), with no
30
+ pin or lock change. A bounded DGX structural query found ripwire unavailable in
31
+ the image, so planning used the inspected source call sites instead. That query
32
+ was not a compilation or test gate. Committed-head checks are recorded below
33
+ when their results are available; no test pass is claimed yet.
34
+
35
+ ## Remaining evidence
36
+
37
+ Focused fakes, canonical DGX and exact-head hosted CI remain unverified until
38
+ recorded. No native/provider/model-backed run is claimed by those checks.
39
+
40
+
41
+ ## Initial committed checks
42
+
43
+ - `c0640100a3ff4bf2ab583351ba6a2f26eb2290e0`: frozen DGX install then TSC
44
+ stopped at one possibly undefined model-boundary access. Inventory and tests
45
+ did not run. The guard now requires existence before comparing the owner.
46
+ - `7ae86fcc726a70505107b11e445e8373321b8001`: the separate DGX inventory check
47
+ identified seven new keys. This is a failed inventory run, not a green gate.
48
+ No key was added to the baseline.
49
+
50
+ The new thread-model cache cap, stored override count, pending preview count and
51
+ confirmation TTL are operational limits on the hub's own retained state. Pending
52
+ native RPC records, CLI response rows and incoming confirmation-token length
53
+ are safety floors at input/proof-reader boundaries. The existing #844 token
54
+ representation is reused unchanged in a pure leaf module; native adapters do
55
+ not import the registry through instances, avoiding an initialization cycle.
56
+
57
+
58
+ At `69974c37b53cc74bb6656b63648f6b8b07818754`, DGX typecheck,
59
+ inventory and all 559 exact seed anchors passed. Runtime tests had 383 pass,
60
+ 3 existing platform skips and 1 failure across twenty files (3,821 assertions;
61
+ 124 s). The new Codex test requested steering after the RPC response but before
62
+ its actual native `turn/started` observation. Its fake now supplies that barrier
63
+ and asserts the steer uses the observed native turn id. No ownership guard,
64
+ assertion or timeout was relaxed. The three existing #845 skips do not provide
65
+ Linux-native sandbox evidence.
66
+
67
+ Additional boundary checks before submission cover a saved override whose audit
68
+ append fails (explicit saved-but-failed reply and readback/repair guidance), an
69
+ older hub that advertises no model support (refusal before any model request),
70
+ and model listings with retained removed peers. The model view has a display-only 512-row ceiling, with bounded collection
71
+ of builtin, configured, external, active local and retained ids. Legacy native
72
+ peer admission has no universal 64-peer cap, so a complete inventory is not
73
+ assumed to fit. Overflow explicitly refuses list, marks model data unavailable in
74
+ status/snapshot without breaking other fields, and leaves single-peer set/clear
75
+ usable. No peer admission is narrowed and no truncated list is called complete. This does not raise the
76
+ storage cap or change any existing timeout.
77
+
78
+
79
+ The display path caches a scalar launch model only when a trusted supported
80
+ factory registers its owner. Periodic model views do not call unsupported
81
+ owners' recovery hooks or scan task history. The unavailable flag has fixed
82
+ CLI/UI cause and repair guidance, and disables stale model controls.
83
+
84
+ At `29f3be831399c0125ad9ea5bd4f117894505a760`, the new real fake-WebSocket
85
+ ACK-order test reproduced a product defect: an older explicit-client ACK arrived
86
+ after a newer hub model acceptance and incorrectly emitted `client-older` as the
87
+ native choice. The named assertion failed normally (one case, seven assertions,
88
+ 4 s), without setup/compiler/timeout failure. This red checkpoint intentionally
89
+ contained the new test and unchanged Codex source; other pending refinements were
90
+ not claimed tested. Its eventual fix and green evidence are recorded separately.
91
+
92
+
93
+ At `4e10add8e7f6ad446aaf42278ea46ceb86fc77df`, typecheck, inventory and
94
+ all 559 anchors passed. The Codex ACK-order regression was green (139 ms),
95
+ including unknown-default cases, with its original failing assertion preserved.
96
+ The selected seven files had 125 pass and one new fixture failure (1,700
97
+ assertions; 61 s): a counter included legacy status recovery-hook calls rather
98
+ than isolating the new model view. The correction checks the model-list path
99
+ immediately and executes the actual cached fallback projection separately.
100
+ The legacy status behavior is not rewritten or counted as a model regression.
101
+
102
+ A second named red test at `d92ea42aa1d0de528dba014b771895b672e2ad44`
103
+ used the real authenticated fake Pi bridge and an owned process signature. It
104
+ held the public setter return after a successful native ACK, withdrew roster
105
+ ownership, then observed an incorrect `applied` callback before the existing
106
+ epoch guard (expected zero, observed one; five assertions, 4 s). The source moves
107
+ that callback after the existing post-ACK guard. Cancellation/shutdown precede
108
+ the fixture's delivery join; the owned process is confirmed exited. This is
109
+ synthetic host/protocol evidence, not a native account or model qualification.
110
+
111
+ The new Codex steer test also uses the fake's existing file gate to hold turn
112
+ completion until its native-id/model assertions finish, replacing a 100 ms
113
+ completion race without changing any product timeout or shared fake behavior.
114
+ Final unavailable banners describe bounded-read failure generically, because
115
+ store-read failure and catalog overflow must not be confused.
116
+
117
+
118
+ At `ded9db733f0a0b7b8fea70934d41d051afd1da94`, DGX typecheck, inventory
119
+ and all 559 anchors passed; all 122 selected Codex/Pi/controller/CLI/UI tests
120
+ passed (1,475 assertions, five files; exit 0 in 53 s). This includes the prior
121
+ ACK-order red test and the invalidated Pi ACK red test. Other adapter, tier 3,
122
+ reset and HTTP-auth tests passed in the earlier wider run; no earlier failed
123
+ whole run is relabelled as green.
124
+
125
+ Final state/UI edges add a captured-revision check for clear before its first
126
+ ACK, and per-component draft/request generations for model confirmation. Editing
127
+ the draft or beginning a new preview invalidates old tokens and all late success,
128
+ error and finally effects. Preview metadata must match the exact set value or
129
+ null clear. Server refusals retain bounded plain error/repair text through the
130
+ existing text-only surface; unsafe or malformed replies use fixed fallbacks.
131
+ The UI error-text ceiling is a safety floor, not a new authority or model bound.
132
+
133
+
134
+ At `8333ffcdfe05f373a7c58fa192a4efd7123c138e`, typecheck and inventory
135
+ passed; all 25 changed state/UI tests passed (237 assertions, two files;
136
+ 39 s). This covers pending clear before first ACK, strict draft/token binding,
137
+ late preview/confirmation success/error/finally, and specific safe server repair
138
+ text without claiming native application.
139
+
140
+ Main `6da56c7a3cc697d9401903b827897148e05826e9` was merged cleanly for
141
+ integration, including the #1318 macOS typecheck heap fix. The model runtime,
142
+ adapter, CLI/UI, package, lock and generated bundle bytes are unchanged from the
143
+ passing source checkpoint; incoming changes are Orca O2 and the CI fix. No
144
+ unmerged fix branch is imported. Two new seeded guards target person-only model
145
+ control and the reproduced accepted-ACK ordering defect, using existing named
146
+ Linux tests. Their actual seeded results follow separately.
147
+
148
+
149
+ ## Integration checkpoint and remaining gate
150
+
151
+ At `15cb959eab3b7e5796e3df4c50046d8447fe801c`, all 561 anchors matched.
152
+ Seed shards 48/64 and 49/64 passed all 18 original-green / named-mutant-detected
153
+ pairs, including both new model guards (46 s total). The separate existing
154
+ Office/role/pet/motion/UI integration tests passed 101/0, with 140,310 assertions
155
+ across five files (17 s). Logs: scratchpad `temp/task808-seeds.log` and
156
+ `temp/task808-ui-integration.log`. These are focused shards, not a claim that
157
+ all 561 mutants ran.
158
+
159
+ The initial 44-file independent source/test/doc review had no confirmed
160
+ Important finding; its CLI 30-second timeout nit was corrected to the repository
161
+ 20-second ceiling. Subsequent delta reviews covered all nongenerated changes
162
+ and confirmed the model ACK, cached metadata and UI fences. The unavailable
163
+ cause nit is fixed. The generated bundle is checked by the gate rather than
164
+ claimed manually reviewed. A provisional token-newline alert was retracted
165
+ against the actual pinned runtime and ECMAScript semantics, with no source change
166
+ or pass claim based on it.
167
+
168
+ The final report-only head starts canonical `scripts/check.sh --changed` on
169
+ DGX. Its result and exact-head hosted CI remain unverified until recorded. The
170
+ known inherited Herdr `/home/dev` fixture defect (#807) is outside this feature.
171
+ No test is excluded or weakened for it. Native/provider-backed model acceptance,
172
+ real UI browser interaction and installed-hub rollout remain unrun. No release,
173
+ upgrade, restart or model change was performed on the person's running hub.
174
+
175
+
176
+ ## Unchanged covering contracts
177
+
178
+ The parent agent-hub goal spec is unchanged: this refines existing native
179
+ adapters and person-owned control without changing task/peer authority,
180
+ account ownership or the deployment boundary. The owning adapter and
181
+ architecture specs carry the new model state, turn and evidence contract.
182
+ The bus spec is unchanged: reset clears an additional independent runtime table,
183
+ while message addressing, queue/journal disposition, receipts, TTL, broker and
184
+ reset admission semantics remain as before. Model selection is not a task or
185
+ delivery effect.
186
+
187
+ This acknowledgement was omitted from the first board completion. The final
188
+ document-only correction carries the same runtime and test bytes. Canonical
189
+ verification continues at parent `2f311bf61c6c77636aeb54a5ad249838b8ea0ee5`;
190
+ it is not an exact-head canonical pass for the corrected document head. Hosted
191
+ CI must verify the final head before merge. No duplicate canonical run or empty
192
+ retry commit is introduced for this bookkeeping correction.
193
+
194
+ ## Reviewer regression corrections
195
+
196
+ Review of `54546e9d` found two regressions the earlier focused set missed:
197
+ the generic reviewer factory supplied a model getter to unsupported Claude and
198
+ Kimi reviewer surfaces, and a client-forwarded Codex start rejected before any
199
+ turn began retained its captured model choice. Both are operational regressions,
200
+ not unavailable evidence. The corrected fixtures exercise actual daemon reviewer
201
+ starts and rejected proxy requests followed by a corrected desired model.
202
+
203
+ The original canonical run at `2f311bf6` reproduced the Claude reviewer failure
204
+ in `reviewer-pool-daemon.test.ts`. It also reported a `#733` catch-up test failure.
205
+ After those failures and this review, the owner interrupted that obsolete run
206
+ with SIGINT; it exited 130 after 592 seconds. It is cancelled, not a full-suite
207
+ pass, and no test failure is erased or counted as fixed merely by cancellation.
208
+
209
+ The correction also acknowledges Pi selections only after prompt acceptance,
210
+ and identifies a cleared Codex override retained by the native thread as
211
+ `native thread default (was override)`. The latter describes known accepted
212
+ history; clear still cannot reconstruct a previous thread model. Unsupported
213
+ reviewer surfaces keep their original no-override review behavior and do not
214
+ gain a model-setting capability.
215
+
216
+ Concurrent definitive rejections drain a single bounded retirement candidate,
217
+ including when an explicit client-model request is the last one to reject.
218
+ Native acceptance or a native start protects the current boundary. Reused RPC
219
+ ids remain ambiguous: their tombstone is retained until client reattachment,
220
+ rather than treating the first response as proof all duplicate requests failed.
221
+ No retirement callback grants model authority or overwrites an explicit client
222
+ choice.
223
+
224
+ The first correction check at `f7e84a200a494c4566f71915260f96dbf0318e5a`
225
+ passed typecheck, inventory and bundle comparison, then reported 172 pass and
226
+ 1 fail (2,100 assertions, ten files; remote exit 1 in 76 s). The failure was in
227
+ the new Pi acceptance fixture: its synthetic settlement omitted the required
228
+ native generation, so the existing fence correctly ignored it. Commit
229
+ `8f8c9794f0b71d52bca6a8983598e34968edd134` supplies the actual generation-bound
230
+ start/settled lifecycle. It changes only that fixture, preserving every existing
231
+ assertion, deadline and production lifecycle check.
232
+
233
+ Committed-head DGX verification at `8f8c9794f0b71d52bca6a8983598e34968edd134`
234
+ passed typecheck, inventory (3,496 entries; 2,491 classified; unchanged 1,005
235
+ baseline entries), bundle comparison, and all 173 tests across ten files
236
+ (2,103 assertions). This includes the original failing reviewer daemon suites,
237
+ the actual proxy correction, concurrent rejection cases and Pi acceptance and
238
+ rejection. Seed shards 48/64 and 49/64 passed all 18 original-green /
239
+ named-mutant-detected pairs, including both model guards. The combined remote
240
+ command exited 0 in 109 seconds; log: `scratchpad/temp/task808-review-final-focused.log`.
241
+
242
+ The independent correction review covered all 16 nongenerated changed files
243
+ and found the explicit-last rejection gap before verification; it was corrected
244
+ and reread with no further finding. The generated bundle is verified by
245
+ comparison. The final report-only head has identical runtime, test and script
246
+ bytes to that focused-tested commit. Its canonical changed-scope gate and
247
+ hosted exact-head CI remain separate, unverified gates until their results are
248
+ recorded; neither the focused pass nor the interrupted earlier run substitutes
249
+ for them. Native/provider-backed acceptance and real dashboard interaction
250
+ remain unrun.