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
@@ -0,0 +1,160 @@
1
+ {
2
+ "startedAtUtc": "2026-10-17T18:53:07.226094+00:00",
3
+ "case": "full-native-probe",
4
+ "binary": "/tmp/opencode/ctg-final-runtime-build/resume-build/packages/cli/dist-ctg/cli-linux-x64/bin/opencode",
5
+ "binaryResolvedPath": "/tmp/opencode/ctg-final-runtime-build/resume-build/packages/cli/dist-ctg/cli-linux-x64/bin/opencode",
6
+ "binarySha256": "85bb44a65e8c185f4f33d41507d29acc77f2db0cdcb0103a14476021c8e43794",
7
+ "buildHash": "85bb44a65e8c185f4f33d41507d29acc77f2db0cdcb0103a14476021c8e43794",
8
+ "binaryVersion": "opencode v0.0.0-ctg.2.0.32",
9
+ "probeSha256": "f35acbcd8e506a32c0ee5240b3cd53be34fe551c7166e3327017c69ab2a57809",
10
+ "pluginSha256": "f162e6184bcb7980c7ec61e3c5c675563351aa814127cbb0a7fa1b6f79f116e6",
11
+ "sourceCommit": "1a79b489ba9f287efc03cf2c580ade546d0c9140",
12
+ "workingTreeDirty": true,
13
+ "sourceStatus": "M tools/native-terminal-semantics.py",
14
+ "sourceTreeSha256": "117be09476e05d5b2714a2d2cdbe299074b95c272d76b045246ee1bde67259ee",
15
+ "sourceDiffDirty": true,
16
+ "provider": "loopback offline fixture",
17
+ "terminal": {
18
+ "initialRows": 32,
19
+ "initialColumns": 100,
20
+ "resizeRows": 12,
21
+ "resizeColumns": 40,
22
+ "TERM": "xterm-256color"
23
+ },
24
+ "controlledHostClipboardModel": true,
25
+ "physicalOSClipboardVerified": false,
26
+ "checks": {
27
+ "pickerEscapeCancel": {
28
+ "status": "PASS",
29
+ "pickerObserved": true,
30
+ "cancelKey": "Escape",
31
+ "dismissed": true,
32
+ "composerRestored": true,
33
+ "providerRequestsBeforePrompt": 0,
34
+ "noPromptProviderRequestBeforeAcceptance": true
35
+ },
36
+ "unicodeAndLargeBracketedPaste": {
37
+ "status": "PASS",
38
+ "exactProviderText": true,
39
+ "characters": 16835,
40
+ "utf8Bytes": 18047,
41
+ "matchingPromptRequests": 2,
42
+ "totalFixtureRequests": 2
43
+ },
44
+ "narrowLayout": {
45
+ "status": "PASS",
46
+ "rows": 12,
47
+ "columns": 40,
48
+ "resizeRequested": true,
49
+ "hostAlive": true,
50
+ "fixtureResponseVisible": true,
51
+ "composerVisible": true,
52
+ "pickerAbsent": true,
53
+ "visibleRowsWithinWidth": true,
54
+ "observedTerminalOutputBytes": 12119,
55
+ "visibleScreenExcerpt": " FINAL[SNIP]END +\n FINALSNIPEND\n\n Build · Offline fixture · 118ms\n ┃ /copy Copy last assistant ┃\n ┃\n ┃ /copy\n ┃\n ┃ Offline fixture\n ╹▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀\n /…/ctg-terminal-semantics-e0a…/project\n"
56
+ },
57
+ "terminalTitleRestoration": {
58
+ "status": "PASS",
59
+ "reason": "Controlled terminal host restored the seeded original title after normal TUI exit",
60
+ "controlledHostModel": true,
61
+ "normalExitCode": 0,
62
+ "exitActions": [
63
+ "ctrl-u+quit+enter",
64
+ "enter",
65
+ "ctrl-c"
66
+ ],
67
+ "forcedTerminationAfterExitRequestTimeout": false,
68
+ "ptyDrainedToEof": true,
69
+ "titleSaveControls": 1,
70
+ "titleRestoreControls": 1,
71
+ "titleControlOrder": [
72
+ "save",
73
+ "restore"
74
+ ],
75
+ "modeledTitleStackDepth": 0,
76
+ "titleControlsObserved": [
77
+ "save",
78
+ "restore"
79
+ ],
80
+ "titleControlSequences": [
81
+ "22;0",
82
+ "23;0"
83
+ ],
84
+ "initialTitle": "CTG-ORIGINAL-TITLE",
85
+ "finalTitle": "CTG-ORIGINAL-TITLE",
86
+ "titleSequenceObserved": [
87
+ "OpenCode",
88
+ "OpenCode",
89
+ "OpenCode",
90
+ "OC | FINAL[SNIP]END",
91
+ "OC | FINAL[SNIP]END",
92
+ "",
93
+ "",
94
+ "CTG-ORIGINAL-TITLE"
95
+ ],
96
+ "oscTitleUpdates": [
97
+ {
98
+ "kind": "0",
99
+ "title": "OpenCode"
100
+ },
101
+ {
102
+ "kind": "0",
103
+ "title": "OpenCode"
104
+ },
105
+ {
106
+ "kind": "0",
107
+ "title": "OpenCode"
108
+ },
109
+ {
110
+ "kind": "0",
111
+ "title": "OC | FINAL[SNIP]END"
112
+ },
113
+ {
114
+ "kind": "0",
115
+ "title": "OC | FINAL[SNIP]END"
116
+ },
117
+ {
118
+ "kind": "0",
119
+ "title": ""
120
+ },
121
+ {
122
+ "kind": "0",
123
+ "title": ""
124
+ }
125
+ ]
126
+ },
127
+ "selectionClipboard": {
128
+ "status": "UNVERIFIED",
129
+ "reason": "Native selection gesture did not yield an exact selection OSC 52 update and modeled readback",
130
+ "mouseReporting": true,
131
+ "mouseDragSent": false,
132
+ "fixtureResponseInCapturedPty": true,
133
+ "fixtureResponseInScreenModel": true,
134
+ "screenExcerpt": " FINAL[SNIP]END +\n ┃ ┃\n ┃ Message copied to x ┃\n ┃ clipboard! ┃\n ┃ ┃\n ┃\n ┃ ▄\n\n █▀▀█ █▀▀█ █▀▀█ █▀▀▄ █▀▀▀ █▀▀█ █▀▀█ █▀▀\n█╹▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀\n █ █ █ █ █▀▀▀ █ █ █ █ █ █ █ █▀▀\nD669g9QQL18LZ1encode -s ses_eb4c9f9d5ffe",
135
+ "selectedSubstring": null,
136
+ "mouseCoordinates": null,
137
+ "controlledHostClipboardUpdates": [],
138
+ "clipboardUpdateDeltaBeforeCopy": [],
139
+ "controlledHostClipboardReadback": null,
140
+ "physicalOSClipboardVerified": false
141
+ },
142
+ "clipboardOSC52": {
143
+ "status": "PASS",
144
+ "reason": "Controlled host model accepted and queried OSC 52 with the exact distinct latest fixture response; this is not physical OS clipboard proof",
145
+ "copyActionSent": true,
146
+ "controlledHostClipboardUpdates": [
147
+ "FINAL[SNIP]END"
148
+ ],
149
+ "clipboardUpdateDeltaAfterSelection": [
150
+ "FINAL[SNIP]END"
151
+ ],
152
+ "controlledHostClipboardReadback": "FINAL[SNIP]END",
153
+ "physicalOSClipboardVerified": false
154
+ }
155
+ },
156
+ "status": "INCOMPLETE",
157
+ "incompleteChecks": [
158
+ "selectionClipboard"
159
+ ]
160
+ }
@@ -0,0 +1,149 @@
1
+ {
2
+ "startedAtUtc": "2026-10-17T18:49:23.219635+00:00",
3
+ "case": "layout-regression",
4
+ "binary": "/tmp/opencode/ctg-final-runtime-build/resume-build/packages/cli/dist-ctg/cli-linux-x64/bin/opencode",
5
+ "binaryResolvedPath": "/tmp/opencode/ctg-final-runtime-build/resume-build/packages/cli/dist-ctg/cli-linux-x64/bin/opencode",
6
+ "binarySha256": "85bb44a65e8c185f4f33d41507d29acc77f2db0cdcb0103a14476021c8e43794",
7
+ "buildHash": "85bb44a65e8c185f4f33d41507d29acc77f2db0cdcb0103a14476021c8e43794",
8
+ "binaryVersion": "opencode v0.0.0-ctg.2.0.32",
9
+ "probeSha256": "91b432ae3447d2997e4a659ea1f873bdce97d8f37a90437a1bcf3315b917d95e",
10
+ "pluginSha256": "f162e6184bcb7980c7ec61e3c5c675563351aa814127cbb0a7fa1b6f79f116e6",
11
+ "sourceCommit": "1a79b489ba9f287efc03cf2c580ade546d0c9140",
12
+ "workingTreeDirty": false,
13
+ "sourceStatus": "",
14
+ "sourceTreeSha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
15
+ "sourceDiffDirty": false,
16
+ "provider": "loopback offline fixture",
17
+ "terminal": {
18
+ "initialRows": 32,
19
+ "initialColumns": 100,
20
+ "resizeRows": 12,
21
+ "resizeColumns": 40,
22
+ "TERM": "xterm-256color"
23
+ },
24
+ "controlledHostClipboardModel": true,
25
+ "physicalOSClipboardVerified": false,
26
+ "checks": {
27
+ "focusedPromptTransport": {
28
+ "status": "PASS",
29
+ "exactProviderUserMessage": true,
30
+ "providerRequests": 2
31
+ },
32
+ "pickerEscapeCancel": {
33
+ "status": "NOT_RUN",
34
+ "reason": "focused layout regression case does not open picker"
35
+ },
36
+ "narrowLayout": {
37
+ "status": "PASS",
38
+ "rows": 12,
39
+ "columns": 40,
40
+ "resizeRequested": true,
41
+ "hostAlive": true,
42
+ "fixtureResponseVisible": true,
43
+ "composerVisible": true,
44
+ "pickerAbsent": true,
45
+ "visibleRowsWithinWidth": true,
46
+ "visibleScreenExcerpt": " • FINAL[SNIP]END +\n FINALSNIPEND\n\n Build · Offline fixture · 185ms\n\n ┃\n ┃\n ┃\n ┃ Offline fixture\n ╹▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀\n /…/ctg-terminal-semantics-gun…/project\n"
47
+ },
48
+ "terminalTitleRestoration": {
49
+ "status": "PASS",
50
+ "reason": "Controlled terminal host restored the seeded original title after normal TUI exit",
51
+ "controlledHostModel": true,
52
+ "normalExitCode": 0,
53
+ "exitActions": [
54
+ "ctrl-u+quit+enter",
55
+ "enter",
56
+ "ctrl-c"
57
+ ],
58
+ "forcedTerminationAfterExitRequestTimeout": false,
59
+ "ptyDrainedToEof": true,
60
+ "titleSaveControls": 1,
61
+ "titleRestoreControls": 1,
62
+ "titleControlOrder": [
63
+ "save",
64
+ "restore"
65
+ ],
66
+ "modeledTitleStackDepth": 0,
67
+ "titleControlsObserved": [
68
+ "save",
69
+ "restore"
70
+ ],
71
+ "titleControlSequences": [
72
+ "22;0",
73
+ "23;0"
74
+ ],
75
+ "initialTitle": "CTG-ORIGINAL-TITLE",
76
+ "finalTitle": "CTG-ORIGINAL-TITLE",
77
+ "titleSequenceObserved": [
78
+ "OpenCode",
79
+ "OpenCode",
80
+ "OpenCode",
81
+ "OC | FINAL[SNIP]END",
82
+ "OC | FINAL[SNIP]END",
83
+ "",
84
+ "",
85
+ "CTG-ORIGINAL-TITLE"
86
+ ],
87
+ "oscTitleUpdates": [
88
+ {
89
+ "kind": "0",
90
+ "title": "OpenCode"
91
+ },
92
+ {
93
+ "kind": "0",
94
+ "title": "OpenCode"
95
+ },
96
+ {
97
+ "kind": "0",
98
+ "title": "OpenCode"
99
+ },
100
+ {
101
+ "kind": "0",
102
+ "title": "OC | FINAL[SNIP]END"
103
+ },
104
+ {
105
+ "kind": "0",
106
+ "title": "OC | FINAL[SNIP]END"
107
+ },
108
+ {
109
+ "kind": "0",
110
+ "title": ""
111
+ },
112
+ {
113
+ "kind": "0",
114
+ "title": ""
115
+ }
116
+ ]
117
+ },
118
+ "selectionClipboard": {
119
+ "status": "UNVERIFIED",
120
+ "reason": "Native selection gesture did not yield an exact selection OSC 52 update and modeled readback",
121
+ "mouseReporting": true,
122
+ "mouseDragSent": false,
123
+ "fixtureResponseInCapturedPty": true,
124
+ "fixtureResponseInScreenModel": true,
125
+ "screenExcerpt": " FINAL[SNIP]END +\n FINALSNIPEND\n\n Build · Offline fixture · 185ms\n ┃ /quit Exit the app ┃\n ┃\n ┃ /quit\n ▄\n █▀▀█ █▀▀█ █▀▀█ █▀▀▄ █▀▀▀ █▀▀█ █▀▀█ █▀▀\n█╹▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀\n █ █ █ █ █▀▀▀ █ █ █ █ █ █ █ █▀▀\n^Ccg6RSdlSnSmQencode -s ses_eb4cd6e23ffe",
126
+ "selectedSubstring": null,
127
+ "mouseCoordinates": null,
128
+ "controlledHostClipboardUpdates": [],
129
+ "clipboardUpdateDeltaBeforeCopy": [],
130
+ "controlledHostClipboardReadback": null,
131
+ "physicalOSClipboardVerified": false
132
+ },
133
+ "clipboardOSC52": {
134
+ "status": "UNVERIFIED",
135
+ "reason": "No exact new OSC 52 clipboard value and readback observed after /copy",
136
+ "copyActionSent": false,
137
+ "controlledHostClipboardUpdates": [],
138
+ "clipboardUpdateDeltaAfterSelection": [],
139
+ "controlledHostClipboardReadback": null,
140
+ "physicalOSClipboardVerified": false
141
+ }
142
+ },
143
+ "status": "INCOMPLETE",
144
+ "incompleteChecks": [
145
+ "pickerEscapeCancel",
146
+ "selectionClipboard",
147
+ "clipboardOSC52"
148
+ ]
149
+ }
@@ -0,0 +1,159 @@
1
+ {
2
+ "startedAtUtc": "2026-10-17T19:09:53.396366+00:00",
3
+ "case": "layout-regression",
4
+ "binary": "/tmp/opencode/ctg-final-runtime-build/resume-build/packages/cli/dist-ctg/cli-linux-x64/bin/opencode",
5
+ "binaryResolvedPath": "/tmp/opencode/ctg-final-runtime-build/resume-build/packages/cli/dist-ctg/cli-linux-x64/bin/opencode",
6
+ "binarySha256": "85bb44a65e8c185f4f33d41507d29acc77f2db0cdcb0103a14476021c8e43794",
7
+ "buildHash": "85bb44a65e8c185f4f33d41507d29acc77f2db0cdcb0103a14476021c8e43794",
8
+ "binaryVersion": "opencode v0.0.0-ctg.2.0.32",
9
+ "probeSha256": "8e9ba4ebfdd4ac8446ac3f03c9c466162a77a78e4709d19bd59810f6545847ba",
10
+ "pluginSha256": "f162e6184bcb7980c7ec61e3c5c675563351aa814127cbb0a7fa1b6f79f116e6",
11
+ "sourceCommit": "ad15830b1f56a86a3e0b11a726eebfecf6868bc0",
12
+ "workingTreeDirty": true,
13
+ "sourceStatus": "M tools/native-terminal-semantics.py",
14
+ "sourceTreeSha256": "703d04ec3d414031bc3c5f5c9c08d3ae17c43a8b6493eed905dcaf778134ab72",
15
+ "sourceDiffDirty": true,
16
+ "provider": "loopback offline fixture",
17
+ "terminal": {
18
+ "initialRows": 32,
19
+ "initialColumns": 100,
20
+ "resizeRows": 12,
21
+ "resizeColumns": 40,
22
+ "TERM": "xterm-256color"
23
+ },
24
+ "controlledHostClipboardModel": true,
25
+ "physicalOSClipboardVerified": false,
26
+ "checks": {
27
+ "focusedPromptTransport": {
28
+ "status": "PASS",
29
+ "exactProviderUserMessage": true,
30
+ "providerRequests": 2
31
+ },
32
+ "pickerEscapeCancel": {
33
+ "status": "NOT_RUN",
34
+ "reason": "focused layout regression case does not open picker"
35
+ },
36
+ "narrowLayout": {
37
+ "status": "PASS",
38
+ "rows": 12,
39
+ "columns": 40,
40
+ "resizeRequested": true,
41
+ "hostAlive": true,
42
+ "fixtureResponseVisible": true,
43
+ "composerVisible": true,
44
+ "pickerAbsent": true,
45
+ "visibleRowsWithinWidth": true,
46
+ "interactiveInput": {
47
+ "uniqueInputTyped": true,
48
+ "backspaceSent": true,
49
+ "inputEditedAsExpected": true,
50
+ "recentSessionsMenuOpened": true,
51
+ "menuNavigationSent": true,
52
+ "escapeSent": true,
53
+ "composerAndEditedInputRestored": true,
54
+ "editedInput": "NARROW-EDIT-INTERACTIV"
55
+ },
56
+ "visibleScreenExcerpt": " FINAL[SNIP]END +\n FINALSNIPEND\n\n Build · Offline fixture · 299ms\n\n ┃\n ┃ NARROW-EDIT-INTERACTIV\n ┃\n ┃ Offline fixture\n ╹▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀\n /…/ctg-terminal-semantics-w8y…/project\n"
57
+ },
58
+ "terminalTitleRestoration": {
59
+ "status": "PASS",
60
+ "reason": "Controlled terminal host restored the seeded original title after normal TUI exit",
61
+ "controlledHostModel": true,
62
+ "normalExitCode": 0,
63
+ "exitActions": [
64
+ "ctrl-u+quit+enter",
65
+ "enter",
66
+ "ctrl-c"
67
+ ],
68
+ "forcedTerminationAfterExitRequestTimeout": false,
69
+ "ptyDrainedToEof": true,
70
+ "titleSaveControls": 1,
71
+ "titleRestoreControls": 1,
72
+ "titleControlOrder": [
73
+ "save",
74
+ "restore"
75
+ ],
76
+ "modeledTitleStackDepth": 0,
77
+ "titleControlsObserved": [
78
+ "save",
79
+ "restore"
80
+ ],
81
+ "titleControlSequences": [
82
+ "22;0",
83
+ "23;0"
84
+ ],
85
+ "initialTitle": "CTG-ORIGINAL-TITLE",
86
+ "finalTitle": "CTG-ORIGINAL-TITLE",
87
+ "titleSequenceObserved": [
88
+ "OpenCode",
89
+ "OpenCode",
90
+ "OpenCode",
91
+ "OC | FINAL[SNIP]END",
92
+ "OC | FINAL[SNIP]END",
93
+ "",
94
+ "",
95
+ "CTG-ORIGINAL-TITLE"
96
+ ],
97
+ "oscTitleUpdates": [
98
+ {
99
+ "kind": "0",
100
+ "title": "OpenCode"
101
+ },
102
+ {
103
+ "kind": "0",
104
+ "title": "OpenCode"
105
+ },
106
+ {
107
+ "kind": "0",
108
+ "title": "OpenCode"
109
+ },
110
+ {
111
+ "kind": "0",
112
+ "title": "OC | FINAL[SNIP]END"
113
+ },
114
+ {
115
+ "kind": "0",
116
+ "title": "OC | FINAL[SNIP]END"
117
+ },
118
+ {
119
+ "kind": "0",
120
+ "title": ""
121
+ },
122
+ {
123
+ "kind": "0",
124
+ "title": ""
125
+ }
126
+ ]
127
+ },
128
+ "selectionClipboard": {
129
+ "status": "UNVERIFIED",
130
+ "reason": "Native selection gesture did not yield an exact selection OSC 52 update and modeled readback",
131
+ "mouseReporting": true,
132
+ "mouseDragSent": false,
133
+ "fixtureResponseInCapturedPty": true,
134
+ "fixtureResponseInScreenModel": true,
135
+ "screenExcerpt": " FINAL[SNIP]END +\n FINALSNIPEND\n\n Build · Offline fixture · 299ms\n ┃ /quit Exit the app ┃\n ┃\n ┃ /quit^C\n ▄\n █▀▀█ █▀▀█ █▀▀█ █▀▀▄ █▀▀▀ █▀▀█ █▀▀█ █▀▀\n█╹▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀\n █ █ █ █ █▀▀▀ █ █ █ █ █ █ █ █▀▀\nHs13koM6DBz8Nfencode -s ses_eb4baa65effe",
136
+ "selectedSubstring": null,
137
+ "mouseCoordinates": null,
138
+ "controlledHostClipboardUpdates": [],
139
+ "clipboardUpdateDeltaBeforeCopy": [],
140
+ "controlledHostClipboardReadback": null,
141
+ "physicalOSClipboardVerified": false
142
+ },
143
+ "clipboardOSC52": {
144
+ "status": "UNVERIFIED",
145
+ "reason": "No exact new OSC 52 clipboard value and readback observed after /copy",
146
+ "copyActionSent": false,
147
+ "controlledHostClipboardUpdates": [],
148
+ "clipboardUpdateDeltaAfterSelection": [],
149
+ "controlledHostClipboardReadback": null,
150
+ "physicalOSClipboardVerified": false
151
+ }
152
+ },
153
+ "status": "INCOMPLETE",
154
+ "incompleteChecks": [
155
+ "pickerEscapeCancel",
156
+ "selectionClipboard",
157
+ "clipboardOSC52"
158
+ ]
159
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "startedAtUtc": "2026-10-17T19:31:38.804106+00:00",
3
+ "case": "native-model-picker-navigation-escape-unchanged-model",
4
+ "binary": "/tmp/opencode/ctg-final-runtime-build/resume-build/packages/cli/dist-ctg/cli-linux-x64/bin/opencode",
5
+ "binaryVersion": "opencode v0.0.0-ctg.2.0.32",
6
+ "binarySha256": "85bb44a65e8c185f4f33d41507d29acc77f2db0cdcb0103a14476021c8e43794",
7
+ "sourceCommit": "802a20bdc2178839ae8131fa6c4ad2c11018aa1f",
8
+ "workingTreeDirty": false,
9
+ "probeSha256": "b1158e68816ecf6c269807c0ca2a9623cd5e35ab1a71d842c4b70e8a9e2681b4",
10
+ "supportingHarnessSha256": "f35acbcd8e506a32c0ee5240b3cd53be34fe551c7166e3327017c69ab2a57809",
11
+ "provider": "loopback offline fixture",
12
+ "configuredModel": "ctgfixture/fixture",
13
+ "alternateModel": "ctgfixture/alternate",
14
+ "physicalOSClipboardVerified": false,
15
+ "checks": {
16
+ "modelPickerNavigationEscapeUnchangedModel": {
17
+ "status": "PASS",
18
+ "modelPickerObserved": true,
19
+ "modelOptionsVisible": [
20
+ "CTG Picker A",
21
+ "CTG Picker B"
22
+ ],
23
+ "currentModelBeforeNavigationVisible": true,
24
+ "navigationKeySent": "ArrowDown",
25
+ "alternateOptionVisibleAfterNavigation": true,
26
+ "selectedOptionStyleAfterNavigation": "\u001b[38;2;10;10;10m\u001b[48;2;250;178;131m\u001b[1m",
27
+ "otherOptionStyleAfterNavigation": "\u001b[38;2;250;178;131m\u001b[48;2;20;20;20m",
28
+ "escapeDismissedPicker": true,
29
+ "composerRestored": true,
30
+ "providerRequestsDuringCancel": 0,
31
+ "activeSessionMetadataStillShowsModelA": true,
32
+ "baselineProviderModel": "fixture",
33
+ "postCancelProviderModels": [
34
+ "fixture"
35
+ ],
36
+ "postCancelUniquePromptAccepted": true,
37
+ "provider": "loopback offline fixture"
38
+ },
39
+ "physicalOSClipboardVerified": {
40
+ "status": "NOT_TESTED"
41
+ }
42
+ },
43
+ "status": "PASS_BOUNDED"
44
+ }
@@ -0,0 +1,47 @@
1
+ {
2
+ "startedAtUtc": "2026-10-17T19:46:59.225587+00:00",
3
+ "case": "native-model-picker-navigation-escape-unchanged-model",
4
+ "binary": "/tmp/opencode/ctg-final-runtime-build/resume-build/packages/cli/dist-ctg/cli-linux-x64/bin/opencode",
5
+ "expectedBinaryVersion": "opencode v0.0.0-ctg.2.0.32",
6
+ "binaryVersion": "opencode v0.0.0-ctg.2.0.32",
7
+ "expectedBinarySha256": "85bb44a65e8c185f4f33d41507d29acc77f2db0cdcb0103a14476021c8e43794",
8
+ "binarySha256": "85bb44a65e8c185f4f33d41507d29acc77f2db0cdcb0103a14476021c8e43794",
9
+ "sourceCommit": "0bb0950f816a9b33cc54be3e1c26eaaecff9396e",
10
+ "workingTreeDirty": false,
11
+ "probeSha256": "6d5fd125b1fad71976a56d0549c75aaf09ca376d1036ff954d66d5a23b0546b0",
12
+ "supportingHarnessSha256": "f35acbcd8e506a32c0ee5240b3cd53be34fe551c7166e3327017c69ab2a57809",
13
+ "provider": "loopback offline fixture",
14
+ "configuredModel": "ctgfixture/fixture",
15
+ "alternateModel": "ctgfixture/alternate",
16
+ "binaryPreflight": "sha256 verified against required external expected value before --version or TUI launch",
17
+ "physicalOSClipboardVerified": false,
18
+ "checks": {
19
+ "modelPickerNavigationEscapeUnchangedModel": {
20
+ "status": "PASS",
21
+ "modelPickerObserved": true,
22
+ "modelOptionsVisible": [
23
+ "CTG Picker A",
24
+ "CTG Picker B"
25
+ ],
26
+ "currentModelBeforeNavigationVisible": true,
27
+ "navigationKeySent": "ArrowDown",
28
+ "alternateOptionVisibleAfterNavigation": true,
29
+ "selectedOptionStyleAfterNavigation": "\u001b[38;2;10;10;10m\u001b[48;2;250;178;131m\u001b[1m",
30
+ "otherOptionStyleAfterNavigation": "\u001b[38;2;250;178;131m\u001b[48;2;20;20;20m",
31
+ "escapeDismissedPicker": true,
32
+ "composerRestored": true,
33
+ "providerRequestsDuringCancel": 0,
34
+ "renderedActiveSessionModelLabelStillShowsA": true,
35
+ "configuredModelIdBeforePicker": "fixture",
36
+ "postCancelProviderModels": [
37
+ "fixture"
38
+ ],
39
+ "postCancelUniquePromptAccepted": true,
40
+ "provider": "loopback offline fixture"
41
+ },
42
+ "physicalOSClipboardVerified": {
43
+ "status": "NOT_TESTED"
44
+ }
45
+ },
46
+ "status": "PASS_BOUNDED"
47
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "startedAtUtc": "2026-10-17T19:07:14.382762+00:00",
3
+ "case": "model-picker-regression",
4
+ "binary": "/tmp/opencode/ctg-final-runtime-build/resume-build/packages/cli/dist-ctg/cli-linux-x64/bin/opencode",
5
+ "binaryResolvedPath": "/tmp/opencode/ctg-final-runtime-build/resume-build/packages/cli/dist-ctg/cli-linux-x64/bin/opencode",
6
+ "binarySha256": "85bb44a65e8c185f4f33d41507d29acc77f2db0cdcb0103a14476021c8e43794",
7
+ "buildHash": "85bb44a65e8c185f4f33d41507d29acc77f2db0cdcb0103a14476021c8e43794",
8
+ "binaryVersion": "opencode v0.0.0-ctg.2.0.32",
9
+ "probeSha256": "2027ce70f3054f9fa886af7172ba81c58dd539d36bad5ac352be5c2897288f21",
10
+ "pluginSha256": "f162e6184bcb7980c7ec61e3c5c675563351aa814127cbb0a7fa1b6f79f116e6",
11
+ "sourceCommit": "ad15830b1f56a86a3e0b11a726eebfecf6868bc0",
12
+ "workingTreeDirty": true,
13
+ "sourceStatus": "M tools/native-terminal-semantics.py",
14
+ "sourceTreeSha256": "199622df5510f1f881cdd32d30f1b25457ae6586a55cb7331b7ca659718c96ab",
15
+ "sourceDiffDirty": true,
16
+ "provider": "loopback offline fixture",
17
+ "terminal": {
18
+ "initialRows": 32,
19
+ "initialColumns": 100,
20
+ "resizeRows": null,
21
+ "resizeColumns": null,
22
+ "TERM": "xterm-256color"
23
+ },
24
+ "controlledHostClipboardModel": true,
25
+ "physicalOSClipboardVerified": false,
26
+ "checks": {
27
+ "pickerEscapeCancel": {
28
+ "status": "UNSUPPORTED",
29
+ "reason": "native model picker did not expose a recognizable visible heading; Escape was sent to dismiss any command menu",
30
+ "providerRequestsBeforePrompt": 0,
31
+ "visibleScreenExcerpt": "\n\n\n\n\n\n\n\n\n Select model esc\n\n Search\n\n No items available\n\n View all integrations ctrl+a\n ┃\n ┃ Ask anythi Reconnecting to the server automatically.\n ┃\n ┃\n ╹▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀\n /…/ctg-terminal-semantics-0bhik…/project shift+tab agents ctrl+p commands\n\n\n\n\n\n\n\n\n 0.0.0-ctg.2.0.32\n"
32
+ },
33
+ "modelPickerEscapeCancel": {
34
+ "status": "FAIL",
35
+ "pickerObserved": false,
36
+ "navigationOccurred": false,
37
+ "dismissed": true,
38
+ "composerRestored": false,
39
+ "providerRequests": 2,
40
+ "providerRequestModels": [
41
+ "fixture",
42
+ "fixture"
43
+ ],
44
+ "configuredModelUnchanged": true,
45
+ "authority": "offline fixture request model after Escape; selection would require Enter"
46
+ },
47
+ "recentSessionsMenuEscapeCancel": {
48
+ "status": "NOT_RUN",
49
+ "reason": "model-picker-only case exercises the model picker, not recent sessions"
50
+ }
51
+ },
52
+ "status": "INCOMPLETE",
53
+ "incompleteChecks": [
54
+ "pickerEscapeCancel",
55
+ "modelPickerEscapeCancel"
56
+ ],
57
+ "reviewNote": "Attempted the verified Ctrl+X then m model.list hotkey (confirmed from runtime keybind source). The terminal model did not establish option navigation followed by Escape dismissal: modelPickerEscapeCancel is FAIL and configuredModelUnchanged is not inferred from the subsequent fixture requests alone. Treat provider model names and request model only as diagnostic. No model-picker acceptance claim."
58
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "status": "MODEL_SELFTEST_PASS_NOT_NATIVE_ACCEPTANCE",
3
+ "scope": "parser/state-model self-test only; does not launch OpenCode or exercise native PTY input",
4
+ "nativeAcceptance": "NOT_RUN",
5
+ "physicalOSClipboardVerified": false,
6
+ "seedClipboardPreservedOnInvalidPayloads": true,
7
+ "invalidPayloadsRejected": 3,
8
+ "exactSelectionRoundTrip": "SNIP",
9
+ "exactLatestCopyRoundTrip": "FINAL[SNIP]END",
10
+ "clipboardQueries": 2,
11
+ "titleRestoredFromStack": "CTG-ORIGINAL-TITLE",
12
+ "titleSaveRestoreOrder": [
13
+ "save",
14
+ "restore"
15
+ ]
16
+ }