carthagent 1.0.7 → 1.1.0-preview.13

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 (289) hide show
  1. package/README.md +140 -83
  2. package/bin/ctg.mjs +14 -732
  3. package/docs/glyph-review/host-chrome-glyph-compatibility-v4.md +83 -0
  4. package/docs/glyph-review/test-isolation-v1.md +26 -0
  5. package/docs/glyph-review/typecheck-base.log +1 -0
  6. package/docs/glyph-review/typecheck-v4.log +1 -0
  7. package/docs/glyph-review/unicode-inventory-v4.csv +402 -0
  8. package/docs/help-dispatch-review.md +69 -0
  9. package/docs/legacy-cli.md +150 -0
  10. package/docs/live-theme-plugin-api.md +18 -0
  11. package/docs/native-cli.md +102 -0
  12. package/docs/native-compatibility.md +16 -0
  13. package/docs/native-daily-quests.md +132 -0
  14. package/docs/native-glyph-pty.md +59 -0
  15. package/docs/native-manual-testing.md +336 -0
  16. package/docs/native-slash-acceptance-handoff.md +49 -0
  17. package/docs/native-terminal-paired-failure-2026-10-17.md +40 -0
  18. package/docs/native-terminal-performance.md +310 -0
  19. package/docs/native-terminal-semantics-evidence/README.md +25 -0
  20. package/docs/native-terminal-semantics-evidence/controlled-host-model-selftest.json +16 -0
  21. package/docs/native-terminal-semantics-evidence/current-acceptance-status.json +59 -0
  22. package/docs/native-terminal-semantics-evidence/final-binary-focused-85bb44a.json +154 -0
  23. package/docs/native-terminal-semantics-evidence/final-binary-full-incomplete-85bb44a.json +160 -0
  24. package/docs/native-terminal-semantics-evidence/final-binary-layout-85bb44a.json +149 -0
  25. package/docs/native-terminal-semantics-evidence/final-binary-layout-interactive-85bb44a.json +159 -0
  26. package/docs/native-terminal-semantics-evidence/final-binary-model-picker-escape-unchanged-85bb44a.json +44 -0
  27. package/docs/native-terminal-semantics-evidence/final-binary-model-picker-exact-identity-85bb44a.json +47 -0
  28. package/docs/native-terminal-semantics-evidence/final-binary-model-picker-unchanged-model-incomplete-85bb44a.json +58 -0
  29. package/docs/native-terminal-semantics-evidence/final-binary-model-selftest.json +16 -0
  30. package/docs/native-terminal-semantics-evidence/final-binary-picker-cancel-incomplete-85bb44a.json +62 -0
  31. package/docs/native-terminal-semantics-evidence/focused-clipboard-title-stale-binary.json +161 -0
  32. package/docs/native-terminal-semantics-evidence/layout-stale-binary-observation-not-accepted.json +153 -0
  33. package/docs/native-terminal-semantics-evidence/picker-latest-incomplete-attempt.json +62 -0
  34. package/docs/native-terminal-semantics-evidence/picker-previous-probe-pass.json +61 -0
  35. package/docs/native-terminal-semantics.md +89 -0
  36. package/docs/native-upgrade.md +177 -0
  37. package/docs/opencode-composed-source-review.md +89 -0
  38. package/docs/opencode-migration.md +225 -9
  39. package/docs/opencode-owned-runtime.md +241 -0
  40. package/docs/opencode-runtime.md +12 -0
  41. package/docs/opencode-theme-provider-proof/README.md +55 -0
  42. package/docs/opencode-theme-provider-proof/live-theme-api-base.patch +122 -0
  43. package/docs/opencode-theme-provider-proof/plugin-theme-provider.patch +107 -0
  44. package/docs/opencode-theme-provider-proof/session-ui-base.patch +1217 -0
  45. package/docs/owned-host-controls-proof.md +39 -0
  46. package/docs/owned-runtime-release-manifest.md +42 -0
  47. package/docs/owned-visual-clear-proof.md +40 -0
  48. package/docs/patches/opencode-v2.0.32-glyph-spinner-test-isolation-v1.patch +50 -0
  49. package/docs/patches/opencode-v2.0.32-glyphs.patch +3670 -0
  50. package/docs/patches/opencode-v2.0.32-help-dispatch.patch +156 -0
  51. package/docs/patches/opencode-v2.0.32-live-theme-api.patch +122 -0
  52. package/docs/patches/opencode-v2.0.32-session-ui-combined-v1.patch +5272 -0
  53. package/docs/patches/opencode-v2.0.32-session-ui-combined-v2.patch +6052 -0
  54. package/docs/patches/opencode-v2.0.32-session-ui-combined-v3.patch +8657 -0
  55. package/docs/patches/opencode-v2.0.32-session-ui-combined-v4.patch +9928 -0
  56. package/docs/patches/opencode-v2.0.32-session-ui-combined-v5.patch +13965 -0
  57. package/docs/patches/opencode-v2.0.32-session-ui.patch +5137 -0
  58. package/docs/release-notes-native-draft.md +73 -0
  59. package/docs/release-notes-preview.10.md +121 -0
  60. package/docs/release-notes-preview.11.md +76 -0
  61. package/docs/release-notes-preview.12.md +55 -0
  62. package/docs/release-notes-preview.13.md +68 -0
  63. package/docs/release-notes-preview.9.md +130 -0
  64. package/docs/source-preview.md +120 -0
  65. package/evaluate.mjs +28 -1
  66. package/lib/budget.mjs +1 -1
  67. package/lib/codegraph.mjs +1 -1
  68. package/lib/delivery-review.mjs +11 -1
  69. package/lib/delivery.mjs +3 -2
  70. package/lib/environment.mjs +8 -0
  71. package/lib/guidance.mjs +1 -1
  72. package/lib/opencode/cli-runtime.mjs +1171 -0
  73. package/lib/opencode/cli.mjs +252 -0
  74. package/lib/opencode/credentials.mjs +63 -8
  75. package/lib/opencode/demo.mjs +53 -0
  76. package/lib/opencode/evaluation-budget-plugin/index.ts +3 -0
  77. package/lib/opencode/evaluation.mjs +32 -12
  78. package/lib/opencode/headless.mjs +8 -4
  79. package/lib/opencode/provider-policy.mjs +23 -0
  80. package/lib/opencode/review.mjs +37 -16
  81. package/lib/opencode/runtime-artifact.mjs +335 -0
  82. package/lib/opencode/runtime-github-transport.mjs +121 -0
  83. package/lib/opencode/runtime-release.json +36 -0
  84. package/lib/opencode/runtime.mjs +299 -20
  85. package/lib/opencode/service.mjs +77 -35
  86. package/lib/opencode/session-options.mjs +6 -2
  87. package/lib/opencode/update.mjs +222 -0
  88. package/lib/opencode/workspace.mjs +1 -1
  89. package/lib/planning-advice.mjs +2 -2
  90. package/lib/providers/experiential.mjs +2 -2
  91. package/lib/tui/framing.mjs +1 -80
  92. package/lib/update.mjs +10 -1
  93. package/package.json +33 -7
  94. package/plugins/carthagent/README.md +23 -0
  95. package/plugins/carthagent/src/bootstrap.ts +1 -1
  96. package/plugins/carthagent/src/daily-evidence.mjs +57 -0
  97. package/plugins/carthagent/src/daily-quests-rpc.ts +50 -0
  98. package/plugins/carthagent/src/daily-source-rpc.ts +52 -0
  99. package/plugins/carthagent/src/index.ts +71 -24
  100. package/plugins/carthagent/src/rpc.ts +51 -6
  101. package/plugins/carthagent/src/server/codegraph.ts +12 -5
  102. package/plugins/carthagent/src/server/daily-quests-rpc.ts +277 -0
  103. package/plugins/carthagent/src/server/daily-source-rpc.ts +211 -0
  104. package/plugins/carthagent/src/server/delivery.ts +227 -112
  105. package/plugins/carthagent/src/server/framing.mjs +80 -0
  106. package/plugins/carthagent/src/server/policy.ts +1 -1
  107. package/plugins/carthagent/src/server/providers.ts +59 -31
  108. package/plugins/carthagent/src/server/session-controls.ts +3 -1
  109. package/plugins/carthagent/src/server/ship-agents.ts +77 -0
  110. package/plugins/carthagent/src/server/ship-context.mjs +60 -0
  111. package/plugins/carthagent/src/server/ship-guidance.ts +41 -0
  112. package/plugins/carthagent/src/server/ship-rpc.ts +69 -0
  113. package/plugins/carthagent/src/server/voyages-rpc.ts +223 -0
  114. package/plugins/carthagent/src/testing.ts +5 -0
  115. package/plugins/carthagent/src/tui.tsx +496 -0
  116. package/plugins/carthagent/src/ui/client.ts +125 -0
  117. package/plugins/carthagent/src/ui/commands.ts +70 -0
  118. package/plugins/carthagent/src/ui/daily-editor-focus.mjs +52 -0
  119. package/plugins/carthagent/src/ui/daily-editor.mjs +4 -0
  120. package/plugins/carthagent/src/ui/daily-quests-events.mjs +18 -0
  121. package/plugins/carthagent/src/ui/daily-quests-state.mjs +218 -0
  122. package/plugins/carthagent/src/ui/daily-quests.tsx +235 -0
  123. package/plugins/carthagent/src/ui/host-state.ts +42 -0
  124. package/plugins/carthagent/src/ui/model-command.ts +32 -0
  125. package/plugins/carthagent/src/ui/native-navigation.ts +23 -0
  126. package/plugins/carthagent/src/ui/native-review.d.mts +33 -0
  127. package/plugins/carthagent/src/ui/native-review.mjs +159 -0
  128. package/plugins/carthagent/src/ui/resume-session.mjs +34 -0
  129. package/plugins/carthagent/src/ui/select-mouse.ts +17 -0
  130. package/plugins/carthagent/src/ui/session-preferences.d.mts +7 -0
  131. package/plugins/carthagent/src/ui/session-preferences.mjs +14 -0
  132. package/plugins/carthagent/src/ui/theme-provision.d.mts +3 -0
  133. package/plugins/carthagent/src/ui/theme-provision.mjs +134 -0
  134. package/plugins/carthagent/src/ui/voyages-navigation-state.mjs +56 -0
  135. package/plugins/carthagent/src/ui/voyages-navigation.tsx +131 -0
  136. package/plugins/carthagent/src/ui/voyages-state.mjs +142 -0
  137. package/plugins/carthagent/src/ui/voyages.tsx +129 -0
  138. package/plugins/carthagent/src/ui/workspace-live.ts +61 -0
  139. package/plugins/carthagent/src/ui/workspace.tsx +379 -0
  140. package/plugins/carthagent/src/voyages-rpc.ts +60 -0
  141. package/plugins/carthagent/src/workspace-rpc.ts +36 -0
  142. package/plugins/carthagent/tests/commands.test.ts +107 -0
  143. package/plugins/carthagent/tests/session-preferences.test.mjs +41 -0
  144. package/plugins/carthagent/tests/voyages-navigation.test.tsx +269 -0
  145. package/plugins/carthagent/themes/carthage.json +67 -0
  146. package/plugins/carthagent/tui.ts +26 -1
  147. package/script/ctg/build-owned-runtime.sh +166 -0
  148. package/tests/budget-engine.test.mjs +4 -3
  149. package/tests/cli.test.mjs +52 -96
  150. package/tests/daily-evidence.test.mjs +62 -0
  151. package/tests/delivery-review.test.mjs +11 -0
  152. package/tests/delivery.test.mjs +22 -1
  153. package/tests/fixtures/native-discovery-plugin/server.ts +15 -0
  154. package/tests/generate-owned-runtime-release.test.mjs +354 -0
  155. package/tests/installed-runtime-contract.test.mjs +43 -0
  156. package/tests/native-cli-host-smoke.mjs +457 -0
  157. package/tests/native-daily-editor-focus.test.mjs +213 -0
  158. package/tests/native-daily-editor.test.mjs +43 -0
  159. package/tests/native-daily-quests-layout.test.mjs +53 -0
  160. package/tests/native-daily-quests-rpc.test.mjs +456 -0
  161. package/tests/native-daily-quests-ui.test.mjs +778 -0
  162. package/tests/native-daily-source.test.mjs +451 -0
  163. package/tests/native-demo-ui.test.mjs +48 -0
  164. package/tests/native-evaluation-admission.test.mjs +24 -0
  165. package/tests/native-fixture-browser-cleanup.test.mjs +65 -0
  166. package/tests/native-fixture-runtime.test.mjs +111 -0
  167. package/tests/native-fixture-stop-diagnostics.test.mjs +67 -0
  168. package/tests/native-glyph-pty.test.mjs +107 -0
  169. package/tests/native-manual-projects.test.mjs +170 -0
  170. package/tests/native-model-command.test.mjs +67 -0
  171. package/tests/native-owned-runtime-env.test.mjs +140 -0
  172. package/tests/native-paired-guards.test.mjs +464 -0
  173. package/tests/native-provider-policy.test.mjs +31 -0
  174. package/tests/native-pty-invocation.test.mjs +114 -0
  175. package/tests/native-pty-runtime.test.mjs +45 -0
  176. package/tests/native-resume-session.test.mjs +46 -0
  177. package/tests/native-review-consumer.test.mjs +286 -0
  178. package/tests/native-runtime-identity.test.mjs +214 -0
  179. package/tests/native-select-mouse.test.mjs +23 -0
  180. package/tests/native-ship-parity.test.mjs +526 -0
  181. package/tests/native-ship-plan.test.mjs +85 -0
  182. package/tests/native-ship-rpc.test.mjs +71 -0
  183. package/tests/native-ui-commands.test.mjs +6 -0
  184. package/tests/native-voyages-layout.test.mjs +28 -0
  185. package/tests/native-voyages-navigation.test.mjs +169 -0
  186. package/tests/native-voyages-rpc.test.mjs +395 -0
  187. package/tests/native-voyages-ui.test.mjs +277 -0
  188. package/tests/opencode-atomic-write.test.mjs +55 -0
  189. package/tests/opencode-cli.test.mjs +1312 -0
  190. package/tests/opencode-codegraph-plugin.test.mjs +47 -0
  191. package/tests/opencode-delivery.test.mjs +16 -0
  192. package/tests/opencode-providers.test.mjs +245 -18
  193. package/tests/opencode-runtime.test.mjs +546 -8
  194. package/tests/opencode-session-controls.test.mjs +15 -0
  195. package/tests/opencode-ship-rpc.test.mjs +71 -0
  196. package/tests/opencode-update.test.mjs +475 -0
  197. package/tests/opencode-workspace.test.mjs +51 -2
  198. package/tests/owned-runtime-publish-workflow.test.mjs +477 -0
  199. package/tests/release-workflow.test.mjs +46 -0
  200. package/tests/runtime-artifact.test.mjs +269 -0
  201. package/tests/runtime-development-trust.test.mjs +230 -0
  202. package/tests/runtime-github-transport.test.mjs +132 -0
  203. package/tests/runtime-token-env.test.mjs +23 -0
  204. package/tests/server.test.mjs +3 -1
  205. package/tests/ship-telemetry.test.mjs +1 -1
  206. package/tests/source-preview.test.mjs +253 -0
  207. package/tests/test_native_terminal_probe.py +76 -0
  208. package/tests/test_native_terminal_semantics.py +232 -0
  209. package/tests/update.test.mjs +42 -5
  210. package/tests/verify-draft-runtime-gate.test.mjs +280 -0
  211. package/tests/verify-owned-runtime-release.test.mjs +371 -0
  212. package/tests/workspace-live.test.mjs +127 -0
  213. package/tools/benchmark/diagnose-request.mjs +59 -36
  214. package/tools/benchmark/eval-common.mjs +3 -3
  215. package/tools/benchmark/evaluators.test.mjs +4 -4
  216. package/tools/benchmark/guard.test.mjs +35 -2
  217. package/tools/benchmark/guard.ts +20 -7
  218. package/tools/benchmark/planning-startup.test.mjs +30 -34
  219. package/tools/benchmark/runner.mjs +12 -7
  220. package/tools/benchmark/runner.test.mjs +23 -7
  221. package/tools/benchmark/upstream-error.test.mjs +16 -2
  222. package/tools/generate-owned-runtime-release.mjs +217 -0
  223. package/tools/installed-runtime-contract.mjs +16 -0
  224. package/tools/manual-runtime-manifest.mjs +39 -0
  225. package/tools/native-fixture-browser-cleanup.mjs +59 -0
  226. package/tools/native-fixture-stop-diagnostics.mjs +43 -0
  227. package/tools/native-fixture.mjs +199 -40
  228. package/tools/native-glyph-helpers.py +127 -0
  229. package/tools/native-glyph-pty.py +144 -0
  230. package/tools/native-manual-projects.mjs +259 -0
  231. package/tools/native-manual.mjs +338 -0
  232. package/tools/native-model-picker-acceptance.py +306 -0
  233. package/tools/native-owned-runtime-env.sh +47 -0
  234. package/tools/native-paired-guards.mjs +282 -0
  235. package/tools/native-paired-manifest.mjs +72 -0
  236. package/tools/native-paired-orchestration.sh +51 -0
  237. package/tools/native-plugin-readiness.mjs +33 -0
  238. package/tools/native-plugin-readiness.test.mjs +53 -0
  239. package/tools/native-pty-invocation.mjs +26 -0
  240. package/tools/native-pty-runtime.mjs +83 -0
  241. package/tools/native-pty-smoke.py +147 -24
  242. package/tools/native-public-repo-shell-result.mjs +13 -0
  243. package/tools/native-public-repo-shell-result.test.mjs +28 -0
  244. package/tools/native-runtime-identity.mjs +201 -0
  245. package/tools/native-slash-acceptance-env.py +38 -0
  246. package/tools/native-terminal-semantics.py +876 -0
  247. package/tools/owned-shell-observer/index.ts +16 -0
  248. package/tools/owned-shell-observer/package.json +1 -0
  249. package/tools/owned-visual-clear-env.py +48 -0
  250. package/tools/owned-visual-clear-model.py +21 -0
  251. package/tools/pinned-owned-runtime-inputs.mjs +46 -0
  252. package/tools/prepare-native-manual.mjs +122 -0
  253. package/tools/run-native-terminal-paired.sh +403 -0
  254. package/tools/runtime-token-env.mjs +8 -0
  255. package/tools/seed-native-switch-fixture.mjs +79 -0
  256. package/tools/test-native-controls.mjs +3 -1
  257. package/tools/test-native-daily-quests.mjs +65 -0
  258. package/tools/test-native-default-cli.mjs +106 -0
  259. package/tools/test-native-delivery-host.mjs +102 -20
  260. package/tools/test-native-evaluation.mjs +7 -3
  261. package/tools/test-native-glyph-pty.mjs +94 -0
  262. package/tools/test-native-host.mjs +87 -63
  263. package/tools/test-native-outcomes.mjs +3 -1
  264. package/tools/test-native-package.mjs +206 -38
  265. package/tools/test-native-performance.mjs +26 -0
  266. package/tools/test-native-product.mjs +90 -0
  267. package/tools/test-native-pty.mjs +34 -9
  268. package/tools/test-native-public-repo.mjs +224 -0
  269. package/tools/test-native-refresh-reentry.mjs +106 -0
  270. package/tools/test-native-report.mjs +27 -20
  271. package/tools/test-native-review.mjs +75 -0
  272. package/tools/test-native-runtime.mjs +120 -0
  273. package/tools/test-native-ship-models.mjs +176 -0
  274. package/tools/test-native-ship-walkthrough.mjs +96 -0
  275. package/tools/test-native-slash-commands.mjs +125 -0
  276. package/tools/test-native-slash-commands.py +242 -0
  277. package/tools/test-native-swe-host.mjs +224 -55
  278. package/tools/test-native-tasks.mjs +77 -0
  279. package/tools/test-native-terminal-performance.py +887 -0
  280. package/tools/test-native-terminal-readiness.sh +85 -0
  281. package/tools/test-native-terminal-semantics-installed.mjs +38 -0
  282. package/tools/test-native-visual-clear-installed.mjs +48 -0
  283. package/tools/test-owned-host-controls.mjs +238 -0
  284. package/tools/test-owned-opencode-runtime.mjs +35 -0
  285. package/tools/test-owned-visual-clear-env.py +120 -0
  286. package/tools/test-owned-visual-clear.py +373 -0
  287. package/tools/verify-draft-runtime-gate.mjs +138 -0
  288. package/tools/verify-owned-runtime-release.mjs +114 -0
  289. package/tools/verify-release-version.mjs +21 -1
@@ -66,20 +66,236 @@ integration check before its PR merges. In-progress does not mean shipped.
66
66
 
67
67
  | Workstream | State | Acceptance |
68
68
  | --- | --- | --- |
69
- | Baseline/build contracts | In progress | Existing checks recorded; new TS/TSX included in checks |
70
- | Runtime/isolation | In progress | CTG and normal OpenCode coexist; authenticated persistent service |
71
- | Native plugin host | In progress | Installed package loads server and TUI entrypoints |
72
- | Providers/auth/telemetry | In progress | Concurrent requests/refreshes maintain credential and session identity |
69
+ | Baseline/build contracts | Merged #137 | Existing checks recorded; TS/TSX included in checks |
70
+ | Runtime/isolation | Merged #139 | CTG and normal OpenCode coexist; authenticated persistent service |
71
+ | Native plugin host | Bootstrap merged #137; integration in progress | Installed package loads server and TUI entrypoints |
72
+ | Session framing/controls | Merged #144, #145, #147, #148 | Per-session defaults, raw bypass, compaction notes, declared ownership errors, restart recovery |
73
+ | Providers/auth/telemetry | Merged #141 at `e969e44` after independent review and 16 green CI checks | Concurrent requests/refreshes maintain credential and session identity |
73
74
  | Delivery/policy/budgets | In progress | Native execution preserves evidence, validators and recovery |
74
75
  | Native theme/commands/panels | In progress | CTG commands work; host owns input/rendering; semantic themes |
75
- | Workspace/worktrees | In progress | Independent worktrees and durable task/session mappings |
76
- | Review | In progress | Fresh-context findings bound to source and PR head; bounded admission |
77
- | Legacy archive | In progress | Read-only searchable transcripts; no implicit continuation |
78
- | CLI/headless/dashboard | Pending | Output/exit/locking behavior verified against native runtime |
79
- | Packaging/upgrade | Pending | Fresh installation and migration tested from packaged artifact |
76
+ | Workspace/worktrees | Backend merged #138, #146; terminal integration in progress | Independent worktrees and durable task/session mappings |
77
+ | Review | Backend merged #146; terminal integration in progress | Fresh-context findings bound to source and PR head; bounded admission |
78
+ | Legacy archive | Merged #150; launcher discovery integration in progress | Read-only searchable transcripts; no implicit continuation |
79
+ | CLI/headless/dashboard | CLI/headless in progress; dashboard lease fix merged #142 | Output/exit/locking behavior verified against native runtime |
80
+ | Packaging/upgrade | #151, #143, #149 merged; #164 parser split passes parent plain `npm ci`, codegraph tests, lint and typechecks; green composed CI remains required | Fresh installation and migration tested from packaged artifact |
80
81
  | Terminal/performance | Pending | PTY, interaction, streaming and reconnect evidence |
81
82
  | Default switch/retirement | Pending | No supported default execution path depends on Pi |
82
83
 
84
+ ### Combined-product acceptance (#155)
85
+
86
+ The integration branch composes the real server and terminal entrypoints. A
87
+ passing domain fixture alone does not satisfy these gates:
88
+
89
+ | Probe | Evidence and remaining gate |
90
+ | --- | --- |
91
+ | `test:native-product` | Workspace, archives, controls, execution-event invalidation, disconnected-turn snapshot recovery, and fresh events after reconnect passed through the production entrypoint on 2.0.32 |
92
+ | `test:native-host` | All four archive methods, output schemas, declared errors, and unchanged transcript bytes passed through production registration |
93
+ | `test:native-controls` | Concurrent framing settings and compaction notes reach the real provider; settings persist across service restart |
94
+ | `test:native-outcomes` | Failed/interrupted/succeeded outcomes, HTTP disconnect, neighboring-session isolation, and recovery passed; interruption explicitly uses `resume: false` and leaves a queued prompt pending |
95
+ | `test:native-tasks` | Two real Git worktrees, concurrent isolated turns and framing settings, independent root sessions, and restart reconciliation passed; composed PR tracking also passes cached-list schema and typed cross-task ownership rejection without exposing paths. PR #161 merged at approved `d61fb8a` after atomic lock-publication fixes, independent review, and all 16 CI checks passed |
96
+ | `test:native-review` | Configured-model independent review, receipt persistence, source-change invalidation, and three-review admission cap across restart passed |
97
+ | `test:native-runtime` | Service reuse, repeated turns, provider rejection, recovery, unavailable-provider failure, final response after tools, correct success metadata, active cancellation, neighbor isolation, pre-aborted invocation isolation, and persisted-session continuation after service restart passed |
98
+ | `tests/native-cli-host-smoke.mjs` | Composed CLI at `65b5b9f` passes print, repeated turns, provider failure after prior success in print/JSONL, workspace-isolated continuation, and JSONL tool/failure events against the owned 2.0.32 binary; admitted-but-nonterminal cancellation JSONL remains a separate review finding |
99
+ | CLI follow-up at `b69d30c` | Composed lint/typechecks and 59 focused CLI/runtime/Ship/archive tests pass, with one platform-specific skip. Review finds the admitted-turn JSONL and OAuth prompt issues addressed, but requests updater validation binding the installed Git ref to the advertised release version, including under `--force`. Demo and remaining delivery-option/UI parity are still open |
100
+ | `test:native-pty` | Installed production status, workspace, help, and CTG compact precedence passed after plugin readiness and slash-completion confirmation |
101
+ | UI follow-up at `ad9b3fc` | Composed lint/typechecks and 44 runtime/PR tests pass, but the pinned-host PTY still opens native Help for `/help`; Unix CI also fails binary-path resolution. Independent review additionally found workspace event payload filtering drops updates and inventory refreshes lack a generation guard. #152 remains under changes requested |
102
+ | UI follow-up at `db79377` | Composed lint/typechecks and 25 PR/live-refresh tests pass. Parent PTY still opens native Help for `/help`: the author's helper retains pre-submit slash-completion text, allowing “Carthagent commands” to satisfy its assertion before actual command output. Post-submit help rendering and the refreshed UI implementation require fresh review/proof |
103
+ | UI/readiness follow-up at `c5a3f33`, codegraph at `7da8186` | Staged after restart; eight focused workspace/live/codegraph tests plus composed lint and both typechecks pass. Independent review finds coverage metadata visible but presentation truncation incorrectly changes authoritative completion/gate to incomplete/locked. The author is separating partial view coverage from server readiness; `/help` remains unresolved |
104
+ | UI/readiness correction at `11a3650` | Independent delta review approves the bounded readiness fix, and parent ten focused workspace/live/RPC tests pass. Capped display coverage no longer changes authoritative completion or gate; stale evidence beyond the cap still blocks via the report DTO, and missing metadata is shown as unknown. Bare `/help` and shared CLI/UI operations remain open |
105
+ | Parser dependency split #164 at `f62e420` | Independent scoped review finds no topology blocker: native renderer resolves `web-tree-sitter@0.25.10`, while codegraph explicitly resolves the `0.22.6` legacy alias. After an initial install timeout, the parent clean packed-install retry passes all seven codegraph behavioral tests using the installed artifact (580 ms), alongside parser resolution and owned OpenCode 2.0.32 identity checks. Targeted harness lint also passes. This is a focused result; full product acceptance and green composed CI remain required |
106
+ | Delivery composition at `f27b5e8` | Product entrypoint now registers native delivery and codegraph by default; combined lint/typechecks and real-host product entrypoint/workspace/archive/controls/reconnect checks pass. #163 `e8c93e0` remains under changes requested: independent review reproduced two concurrent same-session calls admitted with a one-tool limit while the stored counter remained one. Atomic admission and composed delivery/SWE acceptance are required |
107
+ | `test:native-package` | Clean production tarball at integration `2b300c0` passed host, controls, outcomes, product reconnect, runtime, tasks, review, and PTY gates with shared renderer resolution; real native SWE passed its separate evaluation-guard fixture, pending composed CTG delivery coverage |
108
+ | Expanded installed gate at `fdf3aa8` | Host, controls, and outcomes passed; product probe failed because the new delivery RPC output schema uses a `pattern` keyword rejected by the pinned host. Subsequent probes did not run; #160 correction and fresh installed proof are required |
109
+ | `test:native-report` with #160 `18c87cb` | Production RPC passes real-host output validation, freshness, false-verified rejection, and session ownership. A separate test-only handler proves the pinned host rejects incomplete `verified` output and accepts the complete active/status-only unavailable/invalid variants. Merged after independent review, parent approval, and all 16 CI checks passed; fresh composed installed proof remains pending |
110
+ | Composed SWE at `d07f4c0` | Run succeeded and external final test passed, but only one native shell call was recorded: the fixture incorrectly accepted the failing baseline's “tests 1” text as success. This does **not** prove post-edit native verification; #153 must require baseline shell failure → edit → a second successful shell check → final response |
111
+ | Composed SWE with #153 `315356a` | Corrected parent real-host run passes native failing shell → completed edit → distinct passing shell → final response: 4 productive turns, 2 shell calls, 1 edit, succeeded outcome, and external verification passed. Independent review found a remaining benchmark tool-admission race: concurrent ledger read/check/write operations can exceed the cap. #153 remains under changes requested; production delivery-policy enforcement remains a separate gate |
112
+ | Delivery-enabled SWE after `f27b5e8` | Fails before tool execution because the fixture expects `edit` while the production planning gate correctly withholds implementation tools. The earlier four-turn proof does not cover enforced delivery. The fixture must follow the real planning, evidence, review, and handoff workflow before full composed acceptance |
113
+ | Delivery/SWE follow-up at `ef6efb1` / `1c781c4` | Parent composed SWE passes 11 productive turns through planning, native failing shell → edit → distinct passing shell, declared check, model-authored review receipt, and verified finish. Independent approval covers atomic delivery admission and the SWE-proof delta, not independent review assurance or full policy enforcement. Parent 11 delivery tests and standard real-host scenario pass. #163 CI remains blocked by legacy disabled-extension budget validation; #153's unapproved product ancestry cannot enter main |
114
+ | Delivery/review assurance composition | `tools/test-native-swe-host.mjs` drives production native calls in one disposable Git project. In the evaluation session, native `shell` is not advertised before planning; no unadvertised call is fabricated and no policy-hook rejection is claimed. The valid planned shell is positively exercised for red/edit/green. Verified finish is attempted with no plan and again before progress; each exact call result must reject, including the unfinished step. The completed planned check/progress/model-authored review then finishes verified. `carthagent.workspace.startReview` runs on the same workspace's delivery session: a fresh root reviewer has persisted read-only permissions and its receipt binds exact source/HEAD. A source mutation makes the receipt stale; the separate stale-source finish probe is asserted against its own tool-call ID and its result shows invalidated required evidence (not a claim that `delivery_finish` consumes the workspace review receipt). Reviewer admission is driven to its cap. Offline 2.0.32 run passed, 14 productive turns. This establishes only the participating paths above—not OS sandboxing or reviewer quality; the verdict is deterministic loopback output, and permission configuration is checked without a prohibited-write probe. The required fixture test passed before the deliberate source mutation and failed afterward. Standard mode permits implementation after a valid required plan; strict design approval remains a separate mode. The evaluation budget plugin applies its handshake only to marked evaluation sessions. |
115
+ | Installed delivery with `ef6efb1` | Parent clean packed install on owned OpenCode 2.0.32 passes all six scenarios: standard (16.295 s), strict (13.999 s), budget (10.725 s), raw (6.288 s), mixed (6.467 s), and concurrent identical-shell calls (7.486 s). This is a focused installed delivery result; the full installed product gate and #163's legacy CLI CI fix remain pending |
116
+ | Delivery compatibility follow-up at `b0f162e` | Restores legacy disabled-extension budget rejection while explicitly allowing native session budgets with `delivery:false`. Parent CLI/budget/session-options tests pass 20/20; independent delta review found no regression and passed 31 focused tests plus native typecheck. Unix CI now reaches the older PTY helper but fails because `/ctg-status` remains at slash completion without submission; a strict post-submit probe correction is pending |
117
+ | Delivery PTY follow-up at `406314a` | Independent review and a real PTY run confirm command submission and post-submit runtime response; all eight exact-head CI checks pass. Merge is blocked by conflicts with approved main after #165; conflict resolution requires fresh exact-head review and CI |
118
+ | Delivery approved-main resolution at `959f11d` | #163 merged as `171c215` after independent review, parent exact-head approval, and all 16 CI checks passed, including both installed-package gates and macOS/Ubuntu/Windows Node 22/24 matrices. Independent checks also passed 39 focused tests, native typecheck, syntax, and post-submit PTY smoke. Product integration retains its fuller fixtures and installed gate. Superseded #156 was closed without merging or deleting its branch. Broader product acceptance and the native default switch remain open |
119
+ | CLI follow-up at `cf098d9` | Parent focused CLI/updater tests pass 55/55; independent review finds release-tag binding and isolated offline demo sound. Review still requests a real consumer for the saved codegraph cap and correct resumed `--no-guide` precedence over saved framing toggles. Native budget/disabled-delivery option wiring remains open |
120
+ | CLI follow-up at `5eec4bf` | Composed lint, legacy/native typechecks, and 44 focused CLI/session-control/codegraph tests pass. Parent host smoke passes print/repeated-turn/failure/workspace and exact resumed no-guide payload, then fails an obsolete missing-budget-capability assertion against the now-capable production plugin; that call also lacks an explicit fixture model. Review requests an actual consumer for saved `--review`, plus `--bash-cap` and `--isolate` behavior. Real capable-host budget enforcement, remaining JSONL probes, and registration-level codegraph-default regression coverage are assigned |
121
+ | Evaluation follow-up #165 at `af124ca` | Merged after independent review, parent approval, and all 16 exact-head CI checks passed. The clean evaluation-only branch avoids #153's unapproved product ancestry; #153 was closed without merging and its branch retained. Its four-turn runtime proof is separate from the product's reviewed eleven-turn composed delivery proof |
122
+ | Owned runtime #166 at `6b816a6` | Changes requested: independent review found client-controlled shell provenance, omitted provenance classified as manual, missing pristine-source enforcement, and an unconditional macOS-incompatible checksum command. Patch hash/application and 22 runtime tests pass. Parent also found mismatched service reuse and Windows artifact naming. The recorded binary predates the final title change; corrected attribution/build/identity, exact-patch binary proof, two-session restart isolation, automatic-overflow compaction, and final title verification remain open |
123
+ | `test:native-performance` | Cached workspace RPC: 30 samples, p95 64.8 ms, maximum 181.6 ms; input and session-switch latency require separate terminal measurements |
124
+ | Terminal semantics #162 at `608ea09` | Author reports exact 18,047-byte Unicode paste received by the loopback provider. Review found picker cancellation and usable 40×12 layout insufficiently asserted, clipboard actions insufficiently correlated to emitted payloads, and title/exit capture incomplete. These checks remain unverified; corrected assertions and an exact-run artifact with executable identity and exit status are required before acceptance |
125
+ | Terminal probe follow-up at `1a79b48` | Independent bounded review finds the six assertion/provenance concerns addressed; static checks pass. Model-only checks are labeled separately, and old-binary title results are superseded. Narrow layout, exact native selection/copy, and final-binary title restoration remain unverified pending the corrected owned-runtime artifact. Product-base CI also exposes a pending CLI login-cancellation promise, assigned to the CLI author |
126
+ | Terminal harness composition | The reviewed #162 commits are staged by cherry-pick so staging does not auto-close the unmerged PR. Parent model self-test passes and explicitly reports `NOT_RUN` for native acceptance. Exact final-binary terminal proof remains required |
127
+ | Composed CI at `f40a176` | Run `39057797799` fails on pending login-cancellation promises (Windows Node 22/24 and Ubuntu Node 22) and the post-submit `/ctg-workspace` assertion (remaining Unix jobs). The packed job passes host, controls, outcomes, product, runtime, tasks, review, and SWE-host probes before the same workspace PTY failure. Browser checks pass. Fixes are assigned; this is not full acceptance |
128
+ | CLI cancellation at `268b544` | Independent exact-head approval covers late OAuth-attempt capture, ordinary/masked prompt cancellation, and SIGINT cleanup. Parent stages the two implementation commits; the intervening budget-expectation change is already present from approved delivery integration. Parent CLI/session-option tests pass 42/42 on Node 22.19.0, 24.21.0, and 26.7.0. Composed quality also passes: lint, syntax build, legacy/native typechecks, and 624 tests with one skip and no failures/cancellations. Whole CLI compatibility, supported-platform CI, and full release acceptance remain separate |
129
+ | Default packed runtime discovery | Parent added a no-override `resolveOpenCode()` check to the fresh installed-package gate. It reproduces a real launcher failure: npm hoists `@opencode/cli` beside `carthagent`, while the resolver searches only `carthagent/node_modules`. Earlier probes explicitly set `CTG_OPENCODE_BIN` and did not cover default discovery. The runtime author owns the correction; the new gate intentionally remains failing until it lands |
130
+ | Follow-up CI at `bd50603` | Run `39058700753` confirms the pending-login-promise failure is gone. Windows Node 22/24 now fail only two updater assertions that expect Unix npm argv instead of the Windows `cmd.exe /d /s /c` wrapper. Unix jobs pass the unit suite and reach the known workspace PTY failure; the packed gate exposes default runtime discovery. These remaining corrections are assigned |
131
+ | Release documentation #167 at `34bf9a9` | Independent and parent scoped approval; staged by cherry-pick. Native preview, read-only archives, owned profile, headless JSONL, exact-tag installation, and current updater limits are documented; the legacy install/provider/Ship/console guide remains linked. Release notes stay explicitly unreleased. Parent Python checks pass 13/13 with pinned Pillow 11.3.0 supplied from a disposable dependency directory |
132
+ | Windows updater assertions at `b8453c1` | Independent and parent scoped approval; staged as `f1adae0`. Both focused tests pass while retaining exact release-tag assertions and allowing the Windows npm command wrapper. The unrelated rejected theme and budget-smoke changes are not staged |
133
+ | Windows plugin startup after `f1adae0` | CI `39060207929` passes the unit suite on Windows Node 22/24, then fails native host startup because the fallback archive root mixes path separators. Parent correction `a6a4290`, independently approved, replaces string concatenation with platform-native `resolve()`. Targeted lint, native typecheck, four archive tests (one Windows-only skip), and the offline native host/archive RPC probe pass locally. Follow-up CI `39061162244` passes both complete Windows Node 22/24 jobs; Unix PTY and packed-install failures remain separate |
134
+ | Owned runtime #166 at `57f2e71` | Independent exact-checkout runtime tests pass 27/27 and syntax checks pass. Earlier Windows artifact-path, dead-registration recovery, and bare-PATH identity defects are corrected. Explicit Windows executable extensions and release-workflow draft/tag/checksum handling still require changes. This head is not staged or approved for release; full clear/autocompact/overflow/provenance behavior and the final installed artifact remain pending |
135
+ | Terminal evidence #162 at `ad15830` | Binary `85bb44a…` has bounded controlled-terminal evidence for Unicode paste, focused selection/copy, and normal-exit title restoration. The full run retains incomplete selection. Ctrl+O covers the recent-sessions menu, not model-picker navigation/cancellation; 40×12 rendering alone does not prove input interaction. Independent review requests those missing checks. Physical OS clipboard behavior remains unverified |
136
+ | Benchmark readiness #157 at `ced188d` | Independent review passes 16 paired guards, three detector tests, and shell syntax checks. Null-plugin provenance and composer detection are corrected in source. Real non-timed readiness must pass before any newly authorized quiet-window run; neither performance nor sustained-memory acceptance is established |
137
+ | Shared updater #171 at `92ed5f0` | Independent and parent scoped approval; staged through `31b1aa4`. Twelve focused tests and lint pass. Clean-clone updates fetch the selected origin tag into a private ref and check out its resolved commit, preserving local tags and dirty files; cancelled/timed-out commands cannot report success. CLI/UI wiring remains a separate gate |
138
+ | Runtime acquisition #172 at `2ae5755` | Independent and parent scoped approval; staged through `263d613`. Twelve focused tests and lint pass, including actual system-tar USTAR extraction, exact archive/executable digests, redirects, offline cache validation, tamper rejection, and cleanup. Producer archives must explicitly use USTAR; platform artifact validation, trusted release-manifest generation, and default-resolver wiring remain pending |
139
+ | Composed quality at `0824cbd` | Parent `npm run quality` passes lint, syntax build, legacy/native typechecks, and 648 tests with one skip, zero failures, and zero cancellations. This includes the reviewed shared updater and artifact acquisition modules; it is not the full installed/native-terminal release gate |
140
+ | CLI budget proof through `f8e1a52` | Independent scoped approval of `32d6296` and `f8e1a52`; staged as `a3d39de` and `2388b65`. Parent composition correction `7068e40`, independently approved, reconciles the native validator option name and isolated diagnostic-plugin RPC contract. Full offline CLI host smoke passes against packaged 2.0.32, including admitted-write positive control, rejected over-limit write, persisted stopped counter, session-bound terminal outcome, repeated turns, provider errors, and workspace isolation. Changed-file lint and native typecheck pass. Previously rejected theme/glyph changes are excluded |
141
+ | Runtime identity helper #173 at `6f067a5` | Independent and parent scoped approval; staged through `f661454`. Seven tests and changed-file lint pass. Owned binary path, bytes, and provenance are checked against trusted release metadata before execution; runtime identity remains distinct from compatibility version. Integration into host, terminal, and installed-package probes remains pending |
142
+ | Owned resolver #166 through `c8b05db` | Independent source and composition review; staged through `1ae6cfc`. Parent runtime/acquisition suite passes 45/45 and changed-file lint passes. Default resolution handles npm hoisting, rejects invalid packaged release manifests, binds service identity to executable bytes, and revalidates automatically selected caches on repeated resolution. Existing product package probe and lifecycle-locked theme provisioning are preserved. Five-platform prebuild/manifest sequencing and final help/theme/glyph acceptance remain pending |
143
+ | Combined assurance #168 through `05090ce` | Staged through `35fa6b0` after independent and parent review. Parent actual offline host run passes 14 productive turns, native red/edit/green, specifically correlated premature/stale finish rejections, and source-bound review receipt invalidation. Parent evaluation regression passes. Pre-plan shell is withheld rather than tested through an execution-hook rejection; reviewer read-only permissions are configured, and deterministic verdicts establish receipt plumbing rather than review quality |
144
+ | Benchmark admission #174 at `4a0c98a` | Independent and parent scoped approval, staged through `6be3e27`. Parent five-test runner suite passes: eight advertised workspace-local reads yield one marker-bearing result and seven call-ID-correlated budget rejections. This isolated benchmark-plugin probe does not establish combined delivery-policy or direct durable-storage behavior. Separate benchmark evaluator/startup/diagnostic regressions remain assigned |
145
+ | Exact picker identity #162 through `167d0df` | Staged through `118a179` after independent review. Parent rerun passes against independently supplied exact owned version and `85bb44a…` executable digest, verified before execution. Selection styling moves from A to B; cancellation preserves A for the subsequent unique provider request. The footer observation is correctly labeled rendered state. This remains bounded evidence, not full terminal acceptance |
146
+ | Bounded terminal follow-up #162 through `dc71da6` | Independent review and parent inspection of the model-picker/40×12 evidence; staged through `7a8eea0`. Parent independently reran the actual model-picker probe on the hash-bound `85bb44a…` binary and observed a bounded pass: A/B navigation, cancellation without provider traffic, restored composer, retained rendered model label, and a subsequent unique request using A. Full-run selection remains incomplete and physical OS clipboard behavior is unverified. Final help/glyph artifacts require fresh evidence |
147
+ | Composed quality at `7a8eea0` | Lint, syntax build, and both typechecks pass. Unit run reports 654 passed, one skipped, and one failure: the legacy budget-engine reset-follow-up child exceeds its 15-second total watchdog while startup alone takes about 17 seconds; it records a budget stop and closes 856 ms later. An isolated run also fails the tools case, this time at the reset command's 15-second watchdog (18.4 seconds observed); seconds and repairs pass. Both failures are retained, and native process-fixture migration remains assigned. An earlier attempted quality run was contaminated by an author's transient edits to two host probes; those edits were removed from the product worktree and are not attributed to committed source |
148
+ | Fresh packed preview at `1ae6cfc` | Parent clean npm-pack/install focused codegraph gate passes, including default runtime discovery without `CTG_OPENCODE_BIN`, parser topology, and installed codegraph behavior. The selected binary is the hoisted upstream-compatible 2.0.32 dependency. This closes the discovered hoisting defect; it does not establish final owned-runtime acquisition or full installed acceptance |
149
+ | Fixture and probe identity composition through `5eece55` | Stages independently reviewed #157 `916610a`, #175 `6aefd61`, #178 `d1bb126`, and #179 `8fe21dd`. Independent conflict-resolution review preserves the product fixture helper, additional-plugin options, debug transport, and build-agent default. Parent focused fixture/guard/identity tests pass 26/26, Python PTY unit tests pass 6/6, and artifact/identity/fixture tests pass 26/26 after composition. Changed-file lint and actual offline host/product probes pass against the preview runtime. Reports distinguish exact runtime from compatibility version. No timed performance or memory run was performed |
150
+ | Portable executable-mode validation #179 | Unix-target execute bits are validated from USTAR headers on every host; cached filesystem execute bits are checked only on POSIX hosts. Parent artifact tests pass 15/15, including simulated Windows checks. Actual Windows CI remains queued; this does not yet close the platform acceptance gate |
151
+ | Composed quality at `5eece55` | Lint, syntax build, and both typechecks pass; 690 tests pass, one is skipped, and none fail. The legacy budget watchdog cases pass in this run; earlier failing runs remain recorded above. This result predates the manifest generator composition |
152
+ | Prebuilt manifest generator #177 through `e05dc50` | Independently reviewed source staged through `dfc50ea`. Parent composition initially fails five tests because the current acquisition API also requires a pinned channel. Independently reviewed correction `66f79b3` supplies that channel from the recipe-derived compatibility version. Parent generator/acquisition tests then pass 27/27 and changed-file lint passes. The generator validates five archives, their actual bytes/provenance, allowed members, and platform package metadata, including Windows `os: ["win32"]`. No real five-platform asset set or production manifest has been generated |
153
+ | Live theme API #166 at `c84300e` | Standalone patch `0bcb146…` staged at `26957f6` after independent and parent source review. Exposes current selected theme/active mode and validates requested theme/mode before applying live changes. Author focused tests pass 2/2; independent syntax checks pass, but reviewer dependencies prevented test execution. Real ThemeProvider and final-binary command/rendering acceptance remain pending |
154
+ | Installed default-runtime gate #176 at `1be5904` | Staged through `c08ed61` after independent source and positive loopback acquisition/identity review. Gate strips runtime/test/profile overrides, uses the installed trusted manifest, independently verifies the selected executable/provenance, and requires an isolated cache. Parent packed codegraph check passes in explicitly labeled preview mode. Required-owned acceptance rejects preview and focused runs; final real-asset installed acceptance remains pending |
155
+ | Natural `/help` #180 at `7d238db` | Standalone patch `c1ce7d9…` staged through `e2a8e4e` after independent source review. Parent rerun of the entire upstream keymap test file passes 5/5 with 11 assertions against clean implementation `242cbb79`. Tests cover natural one-Enter autocomplete dispatch, later extension precedence, and native-help restoration after deactivation. The intermediate existing-test fixture regression is corrected and recorded. Final combined-binary PTY verification remains pending |
156
+ | Owned assurance and identity reporting | Independently reviewed `98479a1` is staged as `a0dd81b`, keeping actual runtime and compatibility versions separate. Parent preview evaluation passes. Parent explicit-staging product and 14-turn SWE probes pass against independently pinned owned binary `85bb44a…`, including source mutation invalidating completion evidence. These diagnostics do not exercise default release acquisition or verify a release archive |
157
+ | Portable path fixtures #181 and owned wrapper preflight #157 | Independently reviewed `65c9fe8` and `2649dd9` are staged through `2556723`. Parent runtime/environment/identity tests pass 46/46. Canonical path assertions cover macOS path normalization; the PATH fixture is portable. Actual shell-child tests verify owned-root/hash binding before execution and selector handoff before seeding. No readiness, timed ABBA, or memory run was performed; the stale retained snapshot was not used |
158
+ | Actual Windows archive validation #179 | CI run `39066364339` passes the archive/acquisition cases on Windows Node 22 and 24, including Unix USTAR mode validation and cache checks. Both jobs still fail the separate PATH fixture now corrected by #181; overall platform CI is not yet green |
159
+ | Release verifier #170 at `0904202` | Independently approved source staged through `42e515a`. Parent verifier/workflow/acquisition tests pass 22/22, including all five loopback USTAR artifacts through the production acquirer and rejection of an embedded channel mismatch. Required-owned installed gate is an effective dependency, and the tag is rechecked immediately before control-plane publication. Real draft-asset access and final release acceptance remain unresolved; no release action was executed |
160
+ | Owned controls #182 at `f0d83b1` | Independently approved proof staged through `36844d3`; parent actual offline run passes against trusted-preflighted staged binary `85bb44a…`. Per-session auto-compaction settings survive a same-database service restart; disabled overflow makes one failed request, enabled overflow follows summary then successful retry. Concurrent identical shell commands correlate provider call IDs, session IDs, hook events, and successful durable tool results. This is Linux staging evidence, not default acquisition or visual `/clear` acceptance |
161
+ | Full-TUI glyph source #183 at `46cdb55` | Standalone v4 patch `37d93c0…` and inventory `8727e2c…` are staged as `858fcb5`, byte-identical to independent source approval. Parent full focused tests pass 11/11 with 146 assertions. The three missing-import regressions are corrected; base and candidate typechecks report the same existing context-shape diagnostic. Final combined-host build and binary-bound ASCII/Unicode rendering remain pending |
162
+ | Composed quality at `f004955` | Lint, syntax build, and both typechecks pass; 713 tests pass, one is skipped, and none fail. This includes the release verifier/generator, wrapper preflight, owned-control probe source, and published glyph review artifacts; the combined runtime and later UI/CLI corrections are not yet included |
163
+ | Focused follow-ups through `5982c88` | Independently reviewed Windows canonical-path assertions `6cb693a`, Windows review-module file-URL loading/CI timeout `7382074`, and native captured-request diagnostics `9fdaac6` are staged. Parent benchmark runner/diagnostic tests pass 8/8. The broader native-default process fixture remains blocked; none of these changes switches the default runtime |
164
+ | Combined host source `9930492` | Patch `81e86a4…` has scoped independent source approval. Parent isolated combined glyph/help/theme run passes 17/18; the remaining glyph test assumes an uncached spinner module and fails when other suites import it first. Test isolation, a new exact combined patch review, and a green recipe run are required before building. The subsequent typecheck was cancelled by a server restart and has no completed result |
165
+ | CLI #140 cumulative review at `ba40d0b` | The isolation/bash-cap delta has scoped approval, but cumulative compatibility composition is not approved. Preserve the product's lifecycle-locked theme provisioning; the author branch lacks it. The isolated smoke must configure its offline provider and require a successful, correlated request through a real CLI `--isolate` invocation before claiming instruction suppression. Automatic self-review remains separately incomplete |
166
+ | Readiness portability #157 at `049afbd` | Independent review requests canonical filesystem containment: a lexically contained import can escape the snapshot through a symlink. Linux focused tests pass 24/24 and PTY units 6/6; these do not establish Windows execution. Follow-up source remains unstaged; no readiness, timed ABBA, or memory workload ran |
167
+ | Runtime workflow #166 at `bc6c57b` | Source fixes address candidate paths and reviewed-branch prebuilds. Independent workflow approval remains blocked because the claimed executable positive/tamper/stale-tag fixture is not committed and reproducible from this revision. No build, workflow dispatch, or release upload is approved by this result |
168
+ | Restart recovery at `5982c88` | The pushed product commit was restored to a clean worktree after temporary checkouts and staged runtime artifacts disappeared. Prior completed results remain historical evidence; the lost binary and cancelled checks cannot establish fresh final-artifact acceptance. Author work is recovered from surviving files or saved commits without modifying the original dirty checkout |
169
+ | Readiness containment follow-up #157 at `f7b7192` | Independently approved cumulative portability and canonical-containment fixes are staged through `6439c3f`. Parent focused fixture/wrapper/guard tests pass 25/25, including actual symlink escape rejection, in-root symlink acceptance, traversal/cross-drive cases, and pre-execution hash rejection. Dependencies were restored with `npm ci`. Windows execution, real readiness, performance, and release acceptance remain separate pending gates |
170
+ | Restored composed quality at `2efdb60` | Lint, syntax build, and both typechecks pass. Full tests report 714 passed, one failed, and one skipped. The repair-budget restoration/reset test fails its second child at the child-exit watchdog after 22.152 seconds, with no provider-start or budget-stop phase recorded for that child. The first repair child completed naturally after a recorded budget stop. Process-fixture investigation remains open; this run is not green and does not supersede the earlier passing run at `f004955` |
171
+ | Draft transport #185 at `808ebb5` | Cumulative independent and parent source approval; staged through `47b2a7c`. Parent runtime, credential-boundary, transport, identity, and release-verifier tests pass 60/60, including five fixture draft assets through production acquisition and wrong-digest rejection. Changed-file lint passes. Mixed-case download-token keys are removed from npm, runtime, version-check, and PTY children. Actual authenticated GitHub draft acquisition and final installed acceptance remain pending |
172
+ | Glyph PTY harness #187 at `f2475f6` | Cumulative independent and parent source approval; staged through `71d8a11`. Parent portable helper tests pass 3/3 and lint passes. The harness requires the exact ordered Unicode payload in the rendered composer, with separate startup-logo chrome assertions; mutation tests reject altered payloads. Unix PTY imports are isolated from portable helper tests. The historical `85bb44a…` result is a negative control only; no positive final-binary rendering result exists yet |
173
+ | Benchmark startup/evaluator #189 at `7cc2292` | Cumulative independent source approval and parent review; staged through `045f189`. Parent guard/runner/startup checks pass 9/9, including a real offline native startup sequence with 17 productive turns, checkpoint, declared check, review receipt, and verified finish. Ambiguous repeated same-tool Code Mode invocations fail before execution with an attribution error and no extra reservation. Independent Firefox/HTTP reference and mutant checks passed; no performance, ABBA, or memory acceptance is claimed |
174
+ | Real theme-provider proof #190 through `afd820e` | Independently reproduced test-only patch `1afe790…` and parent-reviewed documentation are staged through `483ab54`. The actual ThemeProvider, ConfigProvider, and plugin context show live palette/mode changes and invalid-request rejection; five independent runs pass 18 assertions each, with TUI typecheck passing. The injected in-memory config service proves settings updates, not filesystem or restart persistence. Final combined-binary acceptance remains pending |
175
+ | CI at `1419592` (run `39063828436`) | Browser job passes. Unix jobs fail the existing natural workspace PTY gate; package job fails the pre-resolver-fix hoisting check. Windows Node 22/24 fail acquisition tests because Unix-target executable bits are checked on a Windows filesystem. A focused cross-target archive-validation correction is assigned; prior Windows passes do not cover this newer acquisition module |
176
+ | Persistent recovery and spinner isolation | Product and active author checkouts are restored under persistent OpenCode worktree storage. Independently approved test-only #194 `5b8020d` is staged as `a0822b5`; patch SHA-256 remains `651f4d08959ed657c94fc77fb6af48992b928f2b63eb922719f34dcb38cd8f26`. The combined runtime source still requires all 19 focused tests in one process and its TUI typecheck before build. |
177
+ | Exact canonical selectors #157 through `6fdcbbe` | Independent exact-head approval and parent review; staged through `612a9e2`. Parent wrapper tests pass 4/4, requiring exactly two ordered canonical path lines. Actual macOS CI remains pending at this correction. |
178
+ | Portable pure terminal helpers #157 at `b67f08e` | Independent exact-head approval and parent review; staged as `f7ba91c`. POSIX imports occur only inside PTY execution. Parent pure-helper tests pass 6/6; actual Windows CI remains pending. No performance, readiness, ABBA, or memory workload ran. |
179
+ | CI at `73e308a` (run `39076427693`) | Browser passes. Windows Node 22 passes the Node suite and host/controls/outcomes checks, then fails Python helper import with missing `fcntl`, now addressed by `b67f08e`. macOS Node 22 fails the selector canonicalization assertion now addressed by `6fdcbbe`. Ubuntu Node 22 reaches the existing workspace PTY failure (`CARTHAGENT` not rendered). These results do not establish green composed CI. |
180
+ | Release workflow integration review | Parent found the draft consumer required five total assets while the approved producer uploads five archives plus manifest and checksums (seven assets). Correction and exact-head review are pending. Draft visibility also requires push-capable credentials in metadata-checking jobs, including the producer's validation job; GET-only behavior must not be described as a read-only token capability. No runtime release workflow was dispatched. |
181
+ | Browser fixture isolation at `d4983b5` | User reported repeated placeholder authentication tabs. Parent identified simulated-TTY OAuth tests calling the real OS browser launcher. Runtime browser launch is now injectable; all CLI fixtures default to a no-op and the OAuth lifecycle test captures the exact intended URL. Independent approval and parent checks pass 40/40, with changed-file lint passing. Browser Control was disconnected, so existing tabs could not be closed through the tool. Active authors were instructed to apply the fix before running authentication-sensitive or full suites. |
182
+ | Draft acceptance #191 through `08394e5` | Independently approved cumulative source and parent review; staged through `b688c7b`. Parent draft/release workflow tests pass 15/15 and changed-file lint passes. The positive fixture supplies the actual seven producer asset names independently of the verifier constant; missing, duplicate, renamed, and extra assets fail. Trusted-main ancestry and job-scoped draft visibility capability are enforced. No live draft validation or release operation has occurred. |
183
+ | Visual clear proof #186 through `7e0222d` | Independently approved cumulative source and parent review; staged through `7f1c009`. Parent five pure environment/transcript tests pass. Canonical complete-message comparisons cover A before/after clear, continued prompting and reopen, and neighboring B; reordered equivalent messages compare equal while changed text or IDs fail. Parent caught and the author corrected the original newest-first/ascending mismatch and a follow-up neighbor comparison regression. Live final-binary proof remains pending. |
184
+ | Composed source checks at `7f1c009` | ESLint, both typechecks, and JavaScript syntax checks pass. Python suite passes 19/19 after restoring isolated Pillow 11.3.0 from its SHA-256-verified PyPI wheel; the initial attempt failed because Pillow was absent after recovery. These checks do not supersede the unresolved full-suite repair-budget timeout or final installed/runtime acceptance. |
185
+ | Version-aware draft fixtures #191 at `ef4bb4a` | Independently approved and parent-reviewed follow-up staged as `7296e1d`. Parent verifier tests pass 12/12. Independent review temporarily used package version `9.8.7` in its isolated checkout and passed all 12 tests, then restored the checkout; the unrelated local Git ancestry fixture retains its own version. |
186
+ | Installed owned probes #195 through `846afe9` | Independently approved cumulative source and parent review; staged through `8761156`. Installed Linux owned acceptance now includes host controls, glyph rendering, controlled terminal semantics, and visual clear/reopen. Parent offline contract/glyph tests pass 6/6 and changed-file lint passes. Wrappers reuse the resolver's options object for identity, bind proof bytes to packaged trust metadata, and strip the optional draft token before runtime/PTY children while preserving trusted harness cache-miss acquisition. The glyph entrypoint import is corrected. Preview skips are explicit and cannot satisfy required-owned acceptance. Live final-binary installed acceptance remains pending. |
187
+ | Combined runtime #166 at `7088226` | Independently approved source and dependency-complete reproduction; staged through `2fbb600`. Combined patch SHA-256 `94a18eece950da260213e66168583f83e44923638f014efa2e58ff74f315bae7` changes only three test-file sections relative to the approved `81e86a4…` base. Independent frozen Bun 1.4.2 install, TUI typecheck, and one-process four-file suite pass 19 tests / 186 assertions (fixture listener warnings reported). Parent composition preserves reviewed patch/recipe/workflow/fixture bytes and all draft transport protections; 48 focused runtime/workflow/transport/token checks pass. Exact full Linux recipe build is authorized in a clean persistent upstream checkout. Final binary and installed acceptance remain pending. |
188
+ | Workflow registration #197 at `669696b` | Independently approved source bootstrap from `main` at `171c215`; only the byte-identical reviewed manual workflow and a registration note are added. Parent reviewed dispatch-only behavior and selected-source checkout. Platform CI remains in progress; merge and real five-platform prebuild have not occurred. |
189
+ | UI review follow-ups | Independent review requests changes at #188 `9818f88` (upstream-compatible PTY hash argument), #192 `13e4915` (explicit variant overwritten by picker; actual workspace PTY still fails), and post-run consumer `d48707d` (local review substituted for promised legacy PR/review/fixes kickoff, global cross-session suppression, stale/repeated offer admission). Authors are correcting these; none is composed as accepted behavior. |
190
+ | First real prebuild dispatch | Bootstrap #197 passed all CI jobs and parent exact-head approval, then merged as `bd1292c8c4f76a74808eb751446f58873d8d5968`. GitHub registered workflow `388117402`. Parent dispatched non-publishing prebuild run `39089640210` against exact reviewed source `70882269e25ebcb62c843f9265345342b9e6844d` for planned version `1.1.0`; initial status is queued. This is the first actual five-platform runtime workflow run. No final manifest/version commit, tag, draft release, runtime asset upload, publication, or control-plane POST has occurred. |
191
+ | Prebuild results after restart | Run `39089640210` completed with both Darwin native builds succeeding and archived artifacts `12122875012` (x64) and `12122810274` (arm64). Linux x64/arm64 failed the same combined-suite glyph assertion (`ext .` expectation); Windows failed the pristine `bun.lock` digest check. Assembly was skipped, so no five-platform candidate exists. The runtime author is investigating platform-specific test and checkout behavior before another reviewed build. The local Linux recipe process survived the server restart and was still running; it was not duplicated. |
192
+ | Recipe-selected provenance follow-up #198 | Generator source through `69f8896` received scoped approval, but parent found the release verifier still hardcodes the historical base patch and would reject a manifest bound to the new combined patch. Cumulative acceptance is HOLD pending a shared validated patch reader and verifier tests with the distinct base patch retained. No manifest was generated from the incomplete platform set. |
193
+ | Recipe-selected provenance #198 resolved at `3d7919c` | Independent cumulative approval and parent review; staged through `d5c25b1`. Both generator and verifier now use the same validated recipe-selected patch reader, with no missing-file fallback. Parent combined suites pass 29/29; changed-file lint passes. Reading the actual composed recipe returns combined patch `94a18eec…` and the expected upstream/lock pins. The preserved historical base patch is not used as final provenance. |
194
+ | Retained real Darwin artifacts | Parent downloaded both successful artifacts from failed aggregate run `39089640210` into persistent storage and checked archive/executable SHA-256 against their build records. Production `acquireOwnedRuntime` also accepted both actual USTAR archives through an injected local-byte fetch, validating extraction and embedded provenance. This is real archive-format/provenance coverage, not anonymous/authenticated release acquisition or native execution. Darwin x64 archive/executable: `c1b80729c2b55f57ba5ebe2931ad4c64e24bf4ad1e817d9c4471fbead753dfa0` / `f503b8ce9809f6adcd2c6e212b1902a459551b68ca2d4ceae02947d2255492fc`; arm64: `bd04e6720baeecc26e14f348924bef49b9c459aa85caffaf20ce6b37ee9bc98c` / `e1a8fc696c61bd0d351e2ff318c4f64b4cd396f1bfad44a8c47fc7f67a49bbe2`. Both bind patch `94a18eec…`; they cannot be reused as final evidence after a patch-pin change. Composed `npm run build` also passes at `36a5ffc`. |
195
+ | Continued UI review | Independent reviews request changes on PTY follow-up `8e9dd67` (upstream digest fixed, owned digest omitted by the new argument helper), model/theme head `999f528` (explicit variant fixed, actual workspace PTY unresolved), and review consumer `d394236` (composer-append event is not submission; restored persisted loop cannot reset). Parent reproduced the latter: a fresh consumer with persisted active loop leaves it active and performs zero persistence updates after `onPromptSubmitted`. Corrected heads remain uncomposed. |
196
+ | CLI smoke checkpoint `6cb6901` | Author reports actual Code Mode delivery-plan success, correlated shell timeout at 500 ms, absent delayed side effect, uncapped positive control, and admitted/rejected budget write tool-result checks. Focused composition/publication and independent review remain assigned. Actual updater child spawn also confirmed case-insensitive draft-token leakage; CLI author owns the focused correction while UI author avoids that file. |
197
+ | Product CI at `079a075` | Run `39091689558` failed all six Node/OS test jobs and native-package; browser passed. Linux's test failure is a stale draft-gate assertion requiring documentation to describe already-composed probes as pending. Windows additionally exposes Unix-only `fcntl` import in a glyph-entrypoint test, fake `gh` falling through to real GitHub CLI, and CRLF-sensitive workflow extraction. Focused cross-platform fixture fixes are assigned. Installed-package still fails the known hoisted PTY binary path, awaiting reviewed #188/#199 composition. |
198
+ | Reviewed platform fixtures #202 | Independent and parent review approve exact source `97f7d6a6f9da57f6f37927c45bf74c9f20f53a6a`, composed as `a73e5719a5`. The real verifier CLI runs under an offline child-process preload; malformed, moved, and published release negatives remain covered. Actual workflow shell blocks are extracted with CRLF normalization and executed against local Git repositories. Only the Unix-only PTY import is skipped on Windows. Parent composed tests pass 16/16; author reports Windows Node 22/24 CI passes. Final package/runtime acceptance remains pending. |
199
+ | Delivery child environment `87e96710b4` | Exact commit `87e96710b4e8b9f89f3e2603083caf1f13922edb` strips the draft transport token case-insensitively from `runCommand` and Windows `taskkill` children, preserving the parent environment. Independent review approves with 65 focused tests and a cancellation probe; parent source review and 31 delivery/token tests pass. Process deviation: the author committed and pushed directly to product before review despite an explicit separate-worktree instruction. This entry records subsequent acceptance, not prior approval. Shared updater and dashboard child corrections remain separately assigned. |
200
+ | Retained Linux staging build | The surviving full recipe at reviewed source `70882269` completed all checks and produced executable SHA-256 `72572a2249967756946c65bdeb021b2f43dfa5af7cc29d8665d7fe2309695212`. Parent retained the artifact, complete log, and explicitly single-platform staging manifest under `/home/baissi/.local/share/opencode/ctg-owned-linux-70882269`. Its USTAR archive hash is `a86f79fca8fcb649e867cca07b7639b6ca157cc8626616cd312f0917ae8d9abc`; provenance still binds patch `94a18eec…`. It is not the forthcoming corrected release candidate. |
201
+ | Binary-bound staging probes | On that retained Linux artifact, parent host-controls passed same-database restart, autocompaction off/on, and concurrent identical-shell attribution. Paired actual-TUI glyph proof passed ASCII/Unicode chrome and exact Unicode composer preservation. Production SWE host proof passed 14 productive turns, failing baseline → edit → passing test, real review receipt and subsequent source-mutation invalidation. First SWE invocation selected upstream because the generic fixture uses `CTG_OWNED_OPENCODE_RUNTIME`, not `CTG_TEST_RUNTIME_ARTIFACT_ROOT`; only the corrected `swe-owned.log` run establishes owned staging behavior. These are explicit-artifact staging probes, not installed release acquisition. |
202
+ | Actual terminal blockers | Staged visual-clear failed waiting for persisted session A transcript cutoff; staged terminal-semantics failed because no loopback request followed picker cancellation and multiline paste. Focused harness diagnoses are separately assigned, preserving canonical transcript and actual input/terminal assertions. Physical clipboard and final installed acceptance remain unproved. |
203
+ | Runtime v2 review `b9d6404` | Independent and parent request changes despite complete Linux prebuild checks and CI-mode 19/188 TUI assertions passing. Windows-style CTG checkout changes patch bytes to CRLF (`576f2e7c…`, not pinned `f66c58da…`), affecting copy/hash/assembly paths. Recipe also force-restores `bun.lock` before checking cleanliness, discarding local changes. Canonical input handling and dirty-lock fail-closed tests are required before dispatch. |
204
+ | Product checks at `85fc2d2` | CI `39093505484` passes both Windows Node versions and browser; Linux/macOS pass `npm test` then fail actual workspace PTY (`CARTHAGENT` absent); native-package remains blocked. Local full test attempt reached 762 passes, zero assertion failures, one skip, and one cancelled budget-engine suite at the 120-second command timeout; it is not a full local pass. CLI #203 is published and under independent/parent review; parent found remaining Windows updater taskkill credential inheritance and notified its author. |
205
+ | Owned task/product probes | The retained `72572a…` executable also passes two real Git worktrees, two independent root sessions, concurrent turns, isolation, and restart reconciliation (`tasks-owned.log`). Product entrypoint, workspace, archive, controls, event invalidation, reconnect snapshot, and reconnect event probes pass (`product-owned.log`). Both records report the owned runtime and exact executable digest. |
206
+ | Live review-reset ordering | Parent source inspection and an actual three-prompt stream on `72572a…` show inbox enqueue → execution start → inbox delivery. #200 follow-up `dbc9ab0` reads the previous cached user message at execution start, so it still cannot reliably distinguish kickoff from later user work. Parent requests changes; authoritative delivery identity/metadata and coalesced-prompt behavior are assigned. `review-event-order.json` retains runtime identity and event ordering without provider credentials. |
207
+ | Further staging checks | On `72572a…`, controls pass framed/raw sessions, compaction notes, location ownership, and restart. Outcomes pass provider failure, cancellation, neighboring-session isolation, recovery, and preservation of queued work after interruption. Review receipts pass independent-root identity, persistence, stale-source invalidation, and persistent admission limits (`remaining-domain.log`). Production acquisition accepts the actual retained Linux USTAR bytes through an injected local-byte fetch; this does not establish GitHub transport. Product `npm run build` passes at `4415b38796` (157 syntax checks, both typechecks). |
208
+ | Follow-up review findings | #200 `59d8be0` uses exact inbox-delivered message lookup, but parent reproduces a delayed-lookup race: success marks the run finished while restored suppression is still active; the later lookup clears suppression without admitting review. Per-session event ordering and bounded/cancellable lookup are assigned. #203 `247eadb` independently passes 115 focused tests, native typecheck, and actual CLI host smoke on owned `72572a…`, but cancellation leaves its private fetched Git ref because cleanup receives an already-aborted signal. Parent also assigns sanitization of native review Git/gh children and Windows updater taskkill. None of these heads is composed. |
209
+ | Owned delivery matrix | Parent preflighted retained `72572a…` and passed actual standard, strict, budget, raw, and concurrent production-composition delivery probes (`delivery-matrix-owned.log`). The first attempt using acquisition-oriented artifact-root options was correctly rejected because the single-platform staging manifest does not satisfy the current package-version/five-platform release contract; the successful explicit-owned-root staging run does not establish installed acquisition. |
210
+ | Focused harness review | #205 `974308a` correctly selects the pre-clear newest-first cutoff, and independent tests/live proof pass, but both parent and independent review hold approval because it removes assistant viewport assertions from control/reopen. #204 `7f17ea3` improves picker cancellation but independent review finds its picker-only mode never opens the picker; its empty-Enter session-opening claim is unsupported by host behavior. Both authors are restoring meaningful behavioral coverage. Review of dirty author source does not approve #200 `59d8be0`; the reviewer corrected its verdict to request changes on the exact commit. |
211
+ | Current follow-ups | #203 `60316b8` reports 130 focused tests and CLI host smoke passing; fresh exact review is underway, with parent flagging workspace ownership before model mutation and standalone provider/thinking handling. Runtime #166 `4a0b60` fixes canonical blob extraction and dirty-lock preservation, but independent Windows-style handoff still fails the pristine guard after command-local autocrlf normalization. No corrected candidate dispatch is approved yet. Browser Control remains disconnected with zero targets, so historical test-tab cleanup cannot be verified. Product lint passed ESLint and reached native typecheck before its 120-second command timeout; the earlier complete build remains the typecheck evidence. |
212
+ | Completed remaining baseline probes | Full product lint subsequently completed successfully with a sufficient command timeout. Owned `72572a…` passes mixed delivery policy (`delivery-mixed-owned.log`), runtime-wrapper service reuse/repeated turns/final answer after tool/success metadata/failure/recovery/cancellation/neighbor/pre-abort/restart (`runtime-owned.log`), and evaluation success/failure, exact session usage attribution, unrelated-session isolation, and pre-admission budget handshake rejection (`evaluation-owned.log`). #205 follow-up `9e99262` restores unique assistant visibility in matched-size control and reopen views; parent source review and 6 Python tests pass, with exact independent live review pending. #206 `ec008cf` corrects focused picker control flow but full controlled terminal semantics remain incomplete; source review and deterministic diagnosis continue. |
213
+ | Visual-clear #205 accepted | Independent and parent approve cumulative exact source `9e99262155311841c74382dd7c5b3ec961a090a0`, composed as `6852a6a379` + `632f425da1`. Parent reran the composed live probe on owned `72572a…`: PASS, with exact durable conversation unchanged by clear, unique follow-up user/assistant visibly rendered after reopen, matched uncleared control, preserved cutoff, and unaffected neighbor. Evidence: `clear-composed-proof.json`. Final installed-artifact acceptance remains separate. |
214
+ | Host/report and latest CLI review | Owned host probe passes active paired plugin, archive RPC/output schemas/declared failures, and offline device authorization start/cancel. Report probe passes schema variants, freshness, ownership, and verified fail-closed behavior (`host-owned.log`, `report-owned.log`). Independent #203 review of `60316b8` confirms the foreign-workspace model mutation blocker; 68 CLI/updater and 51 workspace/runtime tests pass, and earlier ref-cleanup and child-environment fixes are accepted in scope. #206 `ec008cf` is held because new Python-import tests would import POSIX-only `fcntl` on Windows. |
215
+ | Complete product checks at `d867a88709` | Full `npm test` completes: 763 passed, 1 skipped, zero failures/cancellations (104.98 seconds), including all three legacy engine budget lifecycle cases. The previous timeout is not evidence of a legacy budget defect. Python suite passes 19/19 with the retained verified Pillow dependency. Native repair-budget lifecycle evidence remains separately assigned; it is not implied by legacy tests or the simpler native budget scenario. CLI author is also adding its discovery fixture to the precise package allowlist so installed host-smoke imports resolve. |
216
+ | Review admission #200 composed | Independent and parent approve exact `40a11f94542e3164b0f1897c2446132f0e7c7c03`; focused review-only commits compose through `3166193123`. Parent preserves existing theme/bridge imports and passes all 10 consumer tests plus native typecheck. The exact inbox lookup completes before terminal review admission; ordered/coalesced/stale/disposed paths are covered. |
217
+ | Corrected v2 prebuild dispatched | Independent and parent approve `0e38142bff30ca2a8b2a66394e5055d541fce489`. Isolated Windows-style Git configuration keeps checkout bytes and recipe status consistent; the real recipe reaches controlled Bun installation, and dirty lock/source fail closed. Composed `da09e6463609b179b475533c474456b0b6aa195e` retains exact reviewed patch/recipe/workflow/tests; parent 40 workflow/runtime/acquisition checks pass. Five-platform prebuild `39097151119` dispatched at that exact SHA for planned `1.1.0`; no publish or upload has occurred. |
218
+ | Digest and workspace harness progress | #201 `c1312ffc` independently/parent source-approved; extracted six exact PTY resolver/invocation/Python/test files as `e3eb3db76f`, with parent 8/8 tests passing. Independent full suite on its older base had two budget shutdown timing failures, with focused rerun 3/3; no unconditional full-suite pass is claimed there. Parent diagnosed workspace non-dispatch: after plugin readiness, first Enter selected argument-taking autocomplete rather than dispatching. #207 `67dc6c1c8f` dismisses autocomplete then submits once; live owned `72572a…` renders `Workspace native sessions` in 13 seconds. Independent #207 review is pending; this is staging, not installed acceptance. |
219
+ | CLI #203 composed | Independent and parent approve cumulative exact `d73db85dbc78dfb98f633cec70ecdc4564a9ed8d`, composed through `828331be12`. Parent CLI/updater/workspace/runtime suite passes 123/123; full build passes. Foreign-workspace ownership precedes resumed mutation/launch, model/provider/thinking options are explicit, validator metadata merges, updater cleanup survives cancellation, child credentials are stripped, and installed smoke fixtures are precisely included. The final test-only correction injects all native ports so ownership tests cannot fall back to the user's service. |
220
+ | Second prebuild outcome | Run `39097151119` successfully builds all five targets, including Windows; Linux x64/arm64 and Darwin x64/arm64 archive/upload jobs succeed. Windows fails in archive creation because GNU tar interprets `D:\a\…` as a remote archive host (`Cannot connect to D: resolve failed`). Assembly is skipped, so there is still no complete candidate. A focused archive-path fix is assigned; successful v2 artifacts are retained separately from v1 staging. |
221
+ | Exact workspace rendering proof | Independent #207 proof now uses its own clean dependency-complete exact `67dc6c1c8fa732a7d6ba848c76679d07ea76a1e2` plugin tree and trusted runtime preflight; workspace renders after one submit Enter. Parent also verifies the composed #201 harness at `0942e67afa` using its existing `--dismiss-completion` path: actual `Workspace native sessions`, one Enter, 23.58 seconds (`/tmp/opencode/ctg-composed-workspace-c131.log`). #207 is not blindly cherry-picked over #201 because their flag/invocation baselines differ; final theme/model harness composition remains pending. |
222
+ | Archive fix and third prebuild | Independent and parent approve `ccc59b09688070d61a189bbf93c91b309614e5ca`; both workflow suites pass 7/7, including execution of the relative archive path and USTAR command in a drive-letter-style workspace. Composed `20d555ce885f137ce97d02e141caaa6ac19aab00`; new five-platform run `39097969783` dispatched at that exact SHA. |
223
+ | Complete five-platform candidate | Run `39097969783` succeeds for Linux x64/arm64, Darwin x64/arm64, and Windows x64, including archive uploads and candidate assembly. The candidate binds exact source `20d555ce885f137ce97d02e141caaa6ac19aab00`. Parent verifies all five archives through production acquisition/extraction with injected local-byte fetch, matching manifest/source/patch/lock/executable pins. Candidate Linux archive `b6bb2b59f0fa2c67759d9b00f4597a5a1f6232c67d6b985bc82f08d1e2545fe4`, executable `e9af36982c82a38666450376ebc80026348269bce1663163f3043a99bc70303c`. Independent candidate verification is assigned; no release tag, draft upload, or publication is implied. |
224
+ | Remaining command parity findings | Current product still has obsolete plugin `/clear` and `/autocompact` unavailable handlers despite the owned host extensions; explicit auto-compaction arguments and dispatch are assigned a focused correction. #208 bridge extraction also needs portable temp assertions and follow-up login/update/billing-plan behavior. A direct `/help` probe on the pre-#208 plugin incorrectly submitted a prompt to a built-in provider; the probe failed, and the PTY harness is being made strictly offline before further command probes. Retained v2 (`a7f0dc…`) visual-clear, glyph payload-preservation, and host restart/automatic-compaction/shell-identity probes pass. |
225
+ | Candidate independent approval and core probes | Independent exact-source/candidate review confirms successful workflow/run identity, exact 13-file bundle, five archive/build-record/checksum matches, and production extraction in a separate cache. Candidate manifest SHA-256 is `925399a2ad6ce111d046ab0159e2e4777ff27c403cf06a526e058a9cc3dd080b`. Parent core matrix passes all 11 probes on candidate executable `e9af3698…`: owned host controls, host activation, controls, outcomes, product, wrapper, tasks, review receipts, SWE host, evaluation, and report. Product source began at `a91c307933`; subsequent bridge composition overlapped the end of the matrix, so this does not substitute for immutable installed-product acceptance. |
226
+ | Latest product checks and delivery readiness | Full product tests at `a91c307933`: 803 passed, 2 failed, 1 skipped, zero cancellations. Both failures are legacy budget child-exit watchdogs; focused rerun passes tools/seconds/repairs 3/3. Full lint passes. Candidate standard-delivery startup separately fails its 15-second plugin-visibility wait while plugin files are loading; the matrix stops there. A focused state-based readiness correction is assigned, with remaining candidate delivery cases pending. |
227
+ | Focused bridges #208 composed | Independent approves exact `d9829452237d6dfa14c7d9f149d763358257f2db`, including portable temporary-path follow-ups. Parent composes through `171439d12dd21716c467469cf542dfba14225de0`, preserving CLI #203's typed Ship auth errors and `CTG_NODE_EXECUTABLE` while adding demo cancellation/output, resume, Ship/archive bridges, and shared release-fetch cancellation. The composed test fixture supplies the typed `call.error` port and asserts `unauthenticated`; 47 focused tests and native typecheck pass. Independent exact composition review approves: 37 bridge/resume/RPC/update tests, 72 CLI/update tests, and native typecheck pass. Actual Bun-hosted `/demo` still requires the assigned Node-executable environment handoff and live TUI proof. |
228
+ | Retained v2 Linux staging | All four retained archives from `39097151119` match their build records and reviewed patch/source/lock pins. Linux archive SHA-256 `d79ce866a0a1214dc8c78180c3035e02377c44afb843d130430ba13fb4449897`, executable `a7f0dc2bf2c362a9227f9da37624ed925d9706f9b44005329f392314d63a4078`; trusted preflight and production owned identity pass. Composed CLI host smoke, runtime-wrapper lifecycle, report, evaluation, and two-worktree concurrent/restart probes pass on that exact executable. A matrix wrapper typo referenced nonexistent `test-native-worktrees.mjs` after its first three successes; the correct `test-native-tasks.mjs` then passes separately. This remains retained staging evidence, not the final assembled candidate. |
229
+
230
+ PR #157 adds a real-terminal measurement harness. Its corrected editor-cell input
231
+ detector still needs a controlled paired assessment against the 50 ms target.
232
+ At `22109cb`, a 30-switch diagnostic reports p95 573.526 ms and maximum 696.095 ms,
233
+ above the 150 ms target. Independent review found both destinations warmed and no
234
+ intentional delay inside the timed interval. The measurement is an Enter-to-parsed-
235
+ PTY-screen proxy, including terminal read/parse overhead, not a compositor
236
+ presentation timestamp. A controlled, alternating baseline/CTG comparison remains
237
+ pending; this diagnostic neither establishes acceptance nor attributes latency to CTG.
238
+ The prepared ABBA runner at `08d8bf8` remains under changes requested: its CTG
239
+ staging omits required runtime files, it does not verify observed plugin activation
240
+ or baseline absence, artifact identities are missing, and failed conditions do not
241
+ propagate a failing runner exit status. Correct these before the controlled run.
242
+ The author reports ten passing offline guard tests for the follow-up changes. Select
243
+ the intended current product commit explicitly for the run: the earlier `f5bf070`
244
+ snapshot predates production delivery and later CLI composition and cannot stand
245
+ in for current-product acceptance.
246
+ The follow-up is published at `18e8642`. Parent and independent review found a
247
+ preflight blocker: double-quoting the JSON-encoded checkout status makes the
248
+ generated manifest invalid for both clean and dirty checkouts. Cleanup is also
249
+ registered too late to cover setup failures. Source staging, plugin observations,
250
+ and failure aggregation appear improved, but actual runner-path regressions are
251
+ required alongside these fixes before a timed run can proceed.
252
+ At `e6d401b`, independent source review confirms typed manifest serialization is
253
+ wired into the runner and cleanup precedes staging. Eleven author guard tests
254
+ pass, including the real JSON generator. Review still requires rejecting a
255
+ selected source commit that differs from current integration HEAD. Parent also
256
+ requested portable test-path handling and offline coverage of actual runner
257
+ failure/cleanup paths. No controlled measurement or performance approval exists.
258
+ The `d5ad57c` follow-up adds current-HEAD validation and shared ABBA/cleanup tests
259
+ (14 author tests pass), but parent inspection found the early validator's exit
260
+ code is ignored before `set -e`, and a callback's nonzero exit can be hidden by
261
+ an already-recorded zero status. Actual shell-exit regressions and corrections
262
+ are assigned; independent review is in progress and ABBA remains on hold.
263
+ At `198e66b`, independent review approves the harness for a scheduled run. Parent
264
+ isolated execution passes all 15 guard tests, including actual stale-source
265
+ rejection, cleanup, and conflicting callback-status/nonzero process-exit cases.
266
+ A quiet measurement window is being coordinated; no timed result or performance
267
+ acceptance is established by these harness checks.
268
+ The authorized attempt ran on 2026-10-17 from 18:15:41 to 18:16:54 UTC using
269
+ source `38ad06f` and harness `198e66b`, then exited 1 with no valid samples.
270
+ Both baseline seeders failed on a null plugin path; CTG inventory was active,
271
+ but both CTG measurements failed to locate the editor placeholder. Artifacts
272
+ remain at `/tmp/opencode/ctg-native-terminal-paired-approved-20261017T181325Z`.
273
+ These are setup failures, not latency measurements. The quiet window ended;
274
+ baseline startup and actual PTY readiness fixes need review before another run.
275
+ Short idle observations showed no PTY output; they do not establish long-running
276
+ memory bounds.
277
+
278
+ Native runtime-wrapper acceptance, delivery enforcement, provider authentication,
279
+ command compatibility, installed SWE workflows, reconnect behavior, and performance
280
+ remain release gates. PR #154 removes per-stream shared-dispatcher destruction and
281
+ uses captured-dispatcher cleanup at print-mode shutdown. Parent verification of
282
+ `46c9ae9` reproduced the pristine patch exactly; seconds and repairs tests passed,
283
+ while tool-mode startup hit its total watchdog. The subsequent `d85579b` fixture
284
+ separates a bounded startup phase from its 15-second post-stop shutdown deadline.
285
+ A controlled clean exact-head parent run passed all three modes and all twelve
286
+ natural exits, including successful requests after reset; initial stop-to-close
287
+ times were 36–102 ms. Independent review and all fifteen CI checks passed, and
288
+ #154 merged. Earlier contended failures remain recorded rather than treated as
289
+ passing evidence.
290
+ Native execution remains opt-in until these gates pass.
291
+
292
+ Pinned-host extension gaps remain for visual-only transcript `/clear` and
293
+ per-session `/autocompact`. The 2.0.32 plugin interface exposes neither a
294
+ transcript presentation boundary nor a per-session automatic-compaction policy.
295
+ CTG-owned host extension work must prove these behaviors without deleting history
296
+ or mutating shared compaction settings. Theme acceptance also requires installing
297
+ the semantic JSON theme in the owned profile and verifying actual rendered colors.
298
+
83
299
  ## Review workflow
84
300
 
85
301
  Implementation uses `lattice/gpt-6-luna#high` in separate worktrees. A different
@@ -0,0 +1,241 @@
1
+ # CTG-owned OpenCode v2.0.32 UI runtime
2
+
3
+ Published native releases select a CTG-owned, source-pinned runtime through the
4
+ packaged `lib/opencode/runtime-release.json`. The default resolver downloads the
5
+ exact platform asset for that release, verifies archive and executable checksums
6
+ and source/patch/lock provenance, and caches it under Carthagent's private profile.
7
+ It never replaces a regular OpenCode installation or rewrites `@opencode/cli`.
8
+ Selecting the owned runtime is fail-closed: a missing or invalid release asset is
9
+ an error, not permission to fall back to a different executable.
10
+
11
+ `CTG_OWNED_OPENCODE_RUNTIME` is a separate staging/developer selector, not the
12
+ normal end-user installation path. An explicit directory must contain the
13
+ matching `ctg-runtime.json`, `SHA256SUMS`, and platform artifact. Native is the
14
+ CLI default in the unpublished preview.9 candidate, inherited from preview.8;
15
+ `ctg native` remains an alias. The legacy
16
+ `--engine-cli` option cannot restore the retired console.
17
+
18
+ ## Current preview.9 candidate (unpublished)
19
+
20
+ Prebuild run `40151970983` succeeded for all five native targets and assembly
21
+ using source `c51c5ae11293e63b658df297abc732db88d9109a` for package
22
+ `1.1.0-preview.9`. The original 13-file bundle was independently verified with
23
+ the production acquirer; regenerated manifest bytes matched exactly. Candidate
24
+ manifest SHA-256:
25
+ `aa5de65b633219423d21b1cc645945028a2d5565714b71760cbcc18badc5f4e5`.
26
+ Upstream, patch, lock and detached runtime identity are unchanged from preview.8;
27
+ the release-bound archive set and manifest must still be treated as preview.9
28
+ artifacts, never replaced with preview.8 assets.
29
+
30
+ The new Linux ARM64 bytes passed isolated staged native-host and Ship-model
31
+ probes. Other platforms' independent execution, final-tag/default-resolver
32
+ acceptance against a draft, and anonymous public installed acceptance remain
33
+ pending. No preview.9 tag, draft, asset upload or publication is included in
34
+ this candidate preparation. See the [current notes](release-notes-preview.9.md)
35
+ and [explicit unpublished-artifact instructions](native-manual-testing.md).
36
+ The older source/build observations below are historical, not claims that all
37
+ preview.8 or preview.9 acceptance gates have passed.
38
+
39
+ ## Pinned inputs and reproducible source application
40
+
41
+ - Upstream: `https://github.com/anomalyco/opencode`
42
+ - Tag/revision: `v2.0.32` / `843a6c514e606b436a7fe713422ace0a93ad3d61`
43
+ - CTG patch: `docs/patches/opencode-v2.0.32-session-ui-combined-v5.patch` (combined-v4 plus the directory-first Projects rail, folder-browser dialog, shared folder/model session setup, and the isolated source-preview launcher)
44
+ - Patch SHA-256: `ec4bb182308ed8b311513aad5c9c7d57dcd0db103f0882f3dc3517d535b4c975`
45
+ - Previous combined-v4 patch SHA-256 (preview.11 and preview.12): `1f2309bb3a31dfb8e8a0827a6a1144a1f76a005abff58f6f48857639ec02478a`
46
+ - Lock SHA-256: `9d78379cd264584a495440a217b9d2ecab524c9a56f7f8b4b5bed3926daa330d`
47
+ - Historical combined preview.8 source verification: 136 retained TUI rendering/loader/theme/selection
48
+ regressions, 24 core recovery/shell regressions, and core/server/plugin/client/tui
49
+ typechecks passed. Exact five-platform archives and full installed-package
50
+ acceptance remain per-release gates; source tests alone do not satisfy them.
51
+ - Historical migration verification: Bun 1.4.2 frozen-lockfile install passed, TUI
52
+ typecheck passed, and glyph/keymap/plugin-theme/real-provider-theme tests
53
+ passed together (19 tests / 188 assertions, one process,
54
+ `--timeout 60000`). Independent review approved exact corrected head
55
+ `0e38142bff30ca2a8b2a66394e5055d541fce489`, including the canonical
56
+ Windows-style checkout-to-recipe handoff and dirty-input rejection.
57
+ At that historical revision, five-platform build and installed-artifact acceptance were still pending.
58
+ - Historical workflow registration: independently and parent-approved bootstrap #197
59
+ passed CI and merged on `main` as `bd1292c8c4`. The workflow is registered;
60
+ actual prebuild run `39089640210` was dispatched at reviewed source
61
+ `70882269e25ebcb62c843f9265345342b9e6844d` for planned version `1.1.0`.
62
+ That first run produced Darwin archives but failed the other three targets.
63
+ That initial run was not a complete five-platform candidate; later previews have separate tagged manifests.
64
+ - Historical separate parent-quality follow-up: native CLI browser-launch isolation
65
+ `d4983b57328a187e8be6bc0e2c6bd2dda7518920` is not part of this upstream source
66
+ patch and must be integrated in its applicable parent branch before the
67
+ parent's full-quality result is claimed.
68
+ - Toolchain: Bun `1.4.2` as pinned by the upstream source
69
+ - Compatibility version: `2.0.32`; detached CTG version/channel:
70
+ `0.0.0-ctg.2.0.32` / `ctg.2.0.32`
71
+
72
+ The patch includes visual-only `/clear` backed by a durable per-session
73
+ transcript presentation cutoff (no server message deletion),
74
+ `/autocompact` persisted in that session's metadata (manual `/compact` still
75
+ works), authoritative shell-origin/session/call correlation and capability
76
+ gating, and the terminal title-stack save/restore lifecycle. Native tool,
77
+ CodeMode child calls, and explicitly manual shell are distinguished; missing
78
+ external shell provenance stays unowned/fail-closed and is never inferred from
79
+ cwd or command text. The shell-origin capability is advertised only by a CTG
80
+ channel build.
81
+
82
+ To apply/build, use a clean checkout of the exact revision, install Bun 1.4.2,
83
+ copy this patch and `script/ctg/build-owned-runtime.sh` into it, then run:
84
+
85
+ ```sh
86
+ script/ctg/build-owned-runtime.sh opencode-linux-x64
87
+ ```
88
+
89
+ For a local CTG checkout, copy the artifact contents (not the 180 MB binary
90
+ into Git) to a managed directory and opt in explicitly:
91
+
92
+ ```sh
93
+ CTG_OWNED_OPENCODE_RUNTIME="$HOME/.carthagent/runtimes/opencode-ctg-2.0.32" npm run ctg -- tui
94
+ ```
95
+
96
+ The resolver rejects a wrong source/patch manifest, a different OS/architecture,
97
+ an unlisted or modified executable, or an unexpected runtime version before it
98
+ starts a service. The TUI is pointed at the already-owned temporary-profile
99
+ service just as for the existing package-owned runtime.
100
+
101
+ Release installation must use only a canonical CTG tag-bound asset/version,
102
+ cache under a CTG-owned data directory, validate the asset manifest and exact
103
+ runtime binary digest, and fail clearly offline or on unsupported platforms.
104
+ It must never silently fall back to `@opencode/cli` after selecting the owned
105
+ runtime, nor rewrite that package's binary. The release gate must install the
106
+ normal package with no runtime environment override and prove it starts this
107
+ owned runtime. Preview.9 assets have not yet been published; historical preview
108
+ assets do not satisfy its release gate.
109
+
110
+ Use a matching native OS/architecture for other upstream-supported targets;
111
+ cross-compilation is rejected. The script fails closed on source revision,
112
+ Bun version, patch hash, and `git apply --check`; it applies the patch, runs
113
+ the affected typechecks/tests, builds with web UI omitted, and writes
114
+ `ctg-runtime.json`, `SHA256SUMS`, and the upstream MIT license into the output.
115
+ The runtime resolver validates every manifest contract field, the native
116
+ platform, executable checksum, and exact detached `--version` before launch.
117
+ It does not search PATH or silently fall back when the opt-in is selected.
118
+
119
+ The CTG workflow has separate `prebuild` and `publish` dispatch modes. Prebuild
120
+ uses a reviewed source commit and planned package version, performs five native
121
+ builds, records executable digests from the built bytes, and carries the exact
122
+ USTAR archives and records through the manifest generator into a reviewable
123
+ candidate artifact. It does not require a final tag. Publish accepts only a
124
+ successful run of this workflow, downloads that run's candidate bytes,
125
+ regenerates and compares the manifest against the final tagged package, and
126
+ refuses to overwrite an existing runtime asset on the draft release. Prebuild
127
+ may be dispatched from a reviewed branch before product merge, but its explicit
128
+ source SHA must equal the dispatch workflow commit; this is non-publishing and
129
+ does not constitute product or release approval. Publish remains restricted to
130
+ the default branch and verifies again against the final tagged package.
131
+
132
+ Release sequencing is deliberately split across two manual workflows. First,
133
+ build and review the immutable five-platform-archive set, package the final
134
+ trusted runtime manifest, tag the exact package commit, create a GitHub draft
135
+ release, and upload the identical reviewed release assets. The draft contains
136
+ the five `opencode-*.tar.gz` archives plus exactly one `runtime-release.json`
137
+ and one `runtime-release-SHA256SUMS.txt` combined checksum file (seven assets
138
+ total), as uploaded by the approved publish workflow. Then run
139
+ `Accept draft runtime release` for that exact tag. The final acceptance workflow must be dispatched from the
140
+ approved `main` branch. Before checking out the release tag or executing any
141
+ tag-sourced verifier, a trusted inline bootstrap reads `package.json` from
142
+ `origin/main`, checks the exact version tag, and verifies that the peeled
143
+ annotated or lightweight tag commit is an ancestor of `origin/main`. The same
144
+ main/tag ancestry and exact-SHA relationship is checked again after acceptance.
145
+ It requires the release to remain a draft with exactly those seven assets, runs
146
+ `npm ci` and full `npm run quality`, and runs the current full,
147
+ non-focused installed-package gate with `CTG_REQUIRE_OWNED_RUNTIME=1` and the
148
+ normal default resolver. The independently reviewed host-controls, glyph,
149
+ controlled-terminal semantics, and visual-clear/reopen probes are now composed
150
+ into that gate. Their live final-artifact results remain pending. GitHub
151
+ documents that only callers
152
+ with push access receive draft releases from the release-list endpoint. The
153
+ workflow therefore grants its job `contents: write`, the minimum `GITHUB_TOKEN`
154
+ permission that provides the required push capability. This is a write-capable
155
+ token, not a read-only token: the workflow deliberately uses it only for
156
+ read-only GETs to inspect draft/release metadata and retrieve the runtime assets.
157
+ There are no POST/PATCH/PUT/DELETE requests, release creation/publication or
158
+ asset-upload commands, or control-plane calls in this gate. The acceptance step
159
+ clears `GH_TOKEN` and passes the token only as `CTG_RUNTIME_GITHUB_TOKEN` for
160
+ asset reads; checkout credentials are not persisted. The workflow checks the
161
+ same draft ID and tag target again after acceptance.
162
+
163
+ Only after that gate succeeds and the release owner approves should the release
164
+ be published. The existing `Release` workflow is the post-publication gate. Its
165
+ installed-package acceptance uses `CTG_RUNTIME_GITHUB_TOKEN` explicitly empty,
166
+ proving the ordinary anonymous public resolver path. Its stable-only
167
+ `publish-release-manifest` job verifies the published asset set and five-platform
168
+ manifest before publishing the control-plane manifest. Prerelease tags such as
169
+ preview.9 skip that job and never advance the stable control-plane pointer;
170
+ experimental selection reads published prereleases from GitHub. Neither workflow creates a release,
171
+ uploads assets, publishes a release, or dispatches another workflow. This
172
+ sequence still requires separate approval and execution against the final
173
+ preview.9 release artifacts; candidate prebuild verification is not that gate.
174
+
175
+ When a release is still a GitHub draft, CI may opt in to authenticated asset
176
+ retrieval by setting `CTG_RUNTIME_GITHUB_TOKEN` for the resolver/verifier
177
+ process. This transport is optional: without it, installed products use the
178
+ normal anonymous public release-download URL. With it, the token is used only
179
+ for read-only `GET` requests to the fixed `api.github.com/repos/B-icy/Carthagent`
180
+ release and asset APIs. The transport requires one exact `v<packaged-version>`
181
+ release and one exact expected asset name; it does not fall back to public
182
+ downloads if the requested draft release or asset is absent or ambiguous.
183
+ GitHub asset redirects are followed without forwarding the credential. The
184
+ token is removed from OpenCode, workspace, and runtime identity-check child
185
+ environments, and the
186
+ existing packaged runtime-release manifest remains the sole source of archive,
187
+ executable, and provenance trust pins. The normal no-token installed-package
188
+ acceptance remains required after publication.
189
+
190
+ ## Historical source-level full-TUI glyph evidence
191
+
192
+ The pending-build statements in this section describe the original composition
193
+ checkpoint, not the current preview.9 prebuild status above. They do not establish
194
+ complete acceptance of any later release.
195
+
196
+ The approved glyph-v4 patch is composed into the reviewed `81e` base patch. A
197
+ combined candidate adds the separately approved spinner test-isolation
198
+ follow-up and real-provider theme integration test. Exact-digest source review
199
+ and independent combined-suite reproduction passed; the final build and live
200
+ acceptance remain pending. The host patch adds
201
+ a centralized host-chrome registry to the full TUI while preserving arbitrary
202
+ user text. The glyph author reports independent source approval and 11 focused
203
+ tests/146 assertions passing on the author worktree. This is source evidence,
204
+ not final-binary evidence; the exact composed binary must still be built and
205
+ tested before claiming compatibility.
206
+
207
+ The source patch centralizes host-chrome glyphs (borders, selection/status
208
+ markers, spinners, and structural tree/connector marks) for the full TUI. It maps
209
+ only registered chrome tokens to readable ASCII alternatives, preserves theme
210
+ colors and typography, and does not sanitize or transliterate arbitrary user
211
+ text, filenames, diffs, shell output, or code. The exact final binary still needs
212
+ the reviewed full-TUI terminal matrix and unknown/legacy-terminal proof.
213
+
214
+ Any source-patch change invalidates prior binary, manifest, and title evidence;
215
+ rebuild and revalidate the exact resulting artifact before making
216
+ terminal-compatibility claims.
217
+
218
+ The approved `/help` patch gives bare `/help` deterministic extension-over-native
219
+ dispatch and restores native help when an extension claim is removed. The help
220
+ author reports the parent’s full keymap suite passed 5/5. The exact final binary
221
+ still must demonstrate the agreed bare-help UI behavior before release claims.
222
+
223
+ ## Historical artifact and bounded title evidence
224
+
225
+ At this historical checkpoint, no binary had been built from the final composed
226
+ patch yet. Earlier Linux
227
+ artifact and PTY title observations used the pre-composition patch and are
228
+ superseded for release acceptance. Build, executable digest, runtime manifest,
229
+ full-TUI glyph/help/theme proofs, and title restore/readback must all be recorded
230
+ against the exact reviewed composed patch before release.
231
+
232
+ No paid provider traffic or real profile was used. Core compaction and shell
233
+ retention tests passed 16/16, server shell HTTP-provenance passed 1/1, renderer
234
+ tests passed 5/5, and the clear UI test reported 3 passing assertions with a
235
+ cleanup lock warning. The native build recipe includes all focused source
236
+ gates; Bun's upstream provenance verification was independently reviewed but
237
+ could not be rerun in the review environment. Full two-session state isolation
238
+ across restart, visual clear preservation in a real service, auto-compaction
239
+ on/off through overflow, manual compact, concurrent authoritative shell
240
+ attribution, final title restoration, glyph/help behavior, approved artifact
241
+ distribution, and installed default selection remain release gates.