carthagent 1.0.7 → 1.1.0-beta.2

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 (303) hide show
  1. package/README.md +140 -83
  2. package/bin/ctg.mjs +14 -732
  3. package/docs/beta-rewards-e2e-plan.md +48 -0
  4. package/docs/beta-rewards-e2e-results.md +84 -0
  5. package/docs/cloud-onboarding-acceptance.md +65 -0
  6. package/docs/glyph-review/host-chrome-glyph-compatibility-v4.md +83 -0
  7. package/docs/glyph-review/test-isolation-v1.md +26 -0
  8. package/docs/glyph-review/typecheck-base.log +1 -0
  9. package/docs/glyph-review/typecheck-v4.log +1 -0
  10. package/docs/glyph-review/unicode-inventory-v4.csv +402 -0
  11. package/docs/help-dispatch-review.md +69 -0
  12. package/docs/launch-readiness-live-results.md +65 -0
  13. package/docs/legacy-cli.md +150 -0
  14. package/docs/live-theme-plugin-api.md +18 -0
  15. package/docs/native-cli.md +102 -0
  16. package/docs/native-compatibility.md +16 -0
  17. package/docs/native-daily-quests.md +132 -0
  18. package/docs/native-glyph-pty.md +59 -0
  19. package/docs/native-manual-testing.md +336 -0
  20. package/docs/native-slash-acceptance-handoff.md +49 -0
  21. package/docs/native-terminal-paired-failure-2026-10-17.md +40 -0
  22. package/docs/native-terminal-performance.md +310 -0
  23. package/docs/native-terminal-semantics-evidence/README.md +25 -0
  24. package/docs/native-terminal-semantics-evidence/controlled-host-model-selftest.json +16 -0
  25. package/docs/native-terminal-semantics-evidence/current-acceptance-status.json +59 -0
  26. package/docs/native-terminal-semantics-evidence/final-binary-focused-85bb44a.json +154 -0
  27. package/docs/native-terminal-semantics-evidence/final-binary-full-incomplete-85bb44a.json +160 -0
  28. package/docs/native-terminal-semantics-evidence/final-binary-layout-85bb44a.json +149 -0
  29. package/docs/native-terminal-semantics-evidence/final-binary-layout-interactive-85bb44a.json +159 -0
  30. package/docs/native-terminal-semantics-evidence/final-binary-model-picker-escape-unchanged-85bb44a.json +44 -0
  31. package/docs/native-terminal-semantics-evidence/final-binary-model-picker-exact-identity-85bb44a.json +47 -0
  32. package/docs/native-terminal-semantics-evidence/final-binary-model-picker-unchanged-model-incomplete-85bb44a.json +58 -0
  33. package/docs/native-terminal-semantics-evidence/final-binary-model-selftest.json +16 -0
  34. package/docs/native-terminal-semantics-evidence/final-binary-picker-cancel-incomplete-85bb44a.json +62 -0
  35. package/docs/native-terminal-semantics-evidence/focused-clipboard-title-stale-binary.json +161 -0
  36. package/docs/native-terminal-semantics-evidence/layout-stale-binary-observation-not-accepted.json +153 -0
  37. package/docs/native-terminal-semantics-evidence/picker-latest-incomplete-attempt.json +62 -0
  38. package/docs/native-terminal-semantics-evidence/picker-previous-probe-pass.json +61 -0
  39. package/docs/native-terminal-semantics.md +89 -0
  40. package/docs/native-upgrade.md +175 -0
  41. package/docs/opencode-composed-source-review.md +89 -0
  42. package/docs/opencode-migration.md +225 -9
  43. package/docs/opencode-owned-runtime.md +241 -0
  44. package/docs/opencode-runtime.md +12 -0
  45. package/docs/opencode-theme-provider-proof/README.md +55 -0
  46. package/docs/opencode-theme-provider-proof/live-theme-api-base.patch +122 -0
  47. package/docs/opencode-theme-provider-proof/plugin-theme-provider.patch +107 -0
  48. package/docs/opencode-theme-provider-proof/session-ui-base.patch +1217 -0
  49. package/docs/owned-host-controls-proof.md +39 -0
  50. package/docs/owned-runtime-release-manifest.md +42 -0
  51. package/docs/owned-visual-clear-proof.md +40 -0
  52. package/docs/patches/opencode-v2.0.32-glyph-spinner-test-isolation-v1.patch +50 -0
  53. package/docs/patches/opencode-v2.0.32-glyphs.patch +3670 -0
  54. package/docs/patches/opencode-v2.0.32-help-dispatch.patch +156 -0
  55. package/docs/patches/opencode-v2.0.32-live-theme-api.patch +122 -0
  56. package/docs/patches/opencode-v2.0.32-session-ui-combined-v1.patch +5272 -0
  57. package/docs/patches/opencode-v2.0.32-session-ui-combined-v2.patch +6052 -0
  58. package/docs/patches/opencode-v2.0.32-session-ui-combined-v3.patch +8657 -0
  59. package/docs/patches/opencode-v2.0.32-session-ui-combined-v4.patch +9928 -0
  60. package/docs/patches/opencode-v2.0.32-session-ui-combined-v5.patch +13965 -0
  61. package/docs/patches/opencode-v2.0.32-session-ui.patch +5137 -0
  62. package/docs/release-notes-beta.1.md +60 -0
  63. package/docs/release-notes-beta.2.md +60 -0
  64. package/docs/release-notes-native-draft.md +73 -0
  65. package/docs/release-notes-preview.10.md +121 -0
  66. package/docs/release-notes-preview.11.md +76 -0
  67. package/docs/release-notes-preview.12.md +55 -0
  68. package/docs/release-notes-preview.13.md +68 -0
  69. package/docs/release-notes-preview.9.md +130 -0
  70. package/docs/source-preview.md +120 -0
  71. package/evaluate.mjs +28 -1
  72. package/lib/budget.mjs +1 -1
  73. package/lib/cloud/client.mjs +13 -7
  74. package/lib/codegraph.mjs +1 -1
  75. package/lib/delivery-review.mjs +19 -6
  76. package/lib/delivery.mjs +3 -2
  77. package/lib/environment.mjs +8 -0
  78. package/lib/guidance.mjs +1 -1
  79. package/lib/opencode/cli-runtime.mjs +1188 -0
  80. package/lib/opencode/cli.mjs +253 -0
  81. package/lib/opencode/credentials.mjs +63 -8
  82. package/lib/opencode/demo.mjs +53 -0
  83. package/lib/opencode/evaluation-budget-plugin/index.ts +3 -0
  84. package/lib/opencode/evaluation.mjs +32 -12
  85. package/lib/opencode/headless.mjs +22 -5
  86. package/lib/opencode/provider-policy.mjs +23 -0
  87. package/lib/opencode/review.mjs +37 -16
  88. package/lib/opencode/runtime-artifact.mjs +335 -0
  89. package/lib/opencode/runtime-github-transport.mjs +121 -0
  90. package/lib/opencode/runtime-release.json +36 -0
  91. package/lib/opencode/runtime.mjs +299 -20
  92. package/lib/opencode/service.mjs +77 -35
  93. package/lib/opencode/session-options.mjs +6 -2
  94. package/lib/opencode/update.mjs +222 -0
  95. package/lib/opencode/workspace.mjs +1 -1
  96. package/lib/planning-advice.mjs +2 -2
  97. package/lib/providers/experiential.mjs +2 -2
  98. package/lib/providers/names.mjs +1 -1
  99. package/lib/tui/framing.mjs +1 -80
  100. package/lib/tui/models.mjs +1 -1
  101. package/lib/update.mjs +10 -1
  102. package/package.json +33 -7
  103. package/plugins/carthagent/README.md +23 -0
  104. package/plugins/carthagent/src/bootstrap.ts +1 -1
  105. package/plugins/carthagent/src/daily-evidence.mjs +57 -0
  106. package/plugins/carthagent/src/daily-quests-rpc.ts +50 -0
  107. package/plugins/carthagent/src/daily-source-rpc.ts +52 -0
  108. package/plugins/carthagent/src/index.ts +71 -24
  109. package/plugins/carthagent/src/rpc.ts +51 -6
  110. package/plugins/carthagent/src/server/codegraph.ts +12 -5
  111. package/plugins/carthagent/src/server/daily-quests-rpc.ts +277 -0
  112. package/plugins/carthagent/src/server/daily-source-rpc.ts +243 -0
  113. package/plugins/carthagent/src/server/delivery.ts +227 -112
  114. package/plugins/carthagent/src/server/framing.mjs +80 -0
  115. package/plugins/carthagent/src/server/policy.ts +1 -1
  116. package/plugins/carthagent/src/server/providers.ts +65 -36
  117. package/plugins/carthagent/src/server/session-controls.ts +3 -1
  118. package/plugins/carthagent/src/server/ship-agents.ts +77 -0
  119. package/plugins/carthagent/src/server/ship-context.mjs +60 -0
  120. package/plugins/carthagent/src/server/ship-guidance.ts +41 -0
  121. package/plugins/carthagent/src/server/ship-rpc.ts +71 -0
  122. package/plugins/carthagent/src/server/voyages-rpc.ts +280 -0
  123. package/plugins/carthagent/src/testing.ts +5 -0
  124. package/plugins/carthagent/src/tui.tsx +506 -0
  125. package/plugins/carthagent/src/ui/client.ts +127 -0
  126. package/plugins/carthagent/src/ui/commands.ts +70 -0
  127. package/plugins/carthagent/src/ui/daily-editor-focus.mjs +52 -0
  128. package/plugins/carthagent/src/ui/daily-editor.mjs +4 -0
  129. package/plugins/carthagent/src/ui/daily-quests-events.mjs +18 -0
  130. package/plugins/carthagent/src/ui/daily-quests-state.mjs +218 -0
  131. package/plugins/carthagent/src/ui/daily-quests.tsx +235 -0
  132. package/plugins/carthagent/src/ui/host-state.ts +42 -0
  133. package/plugins/carthagent/src/ui/model-command.ts +32 -0
  134. package/plugins/carthagent/src/ui/native-navigation.ts +23 -0
  135. package/plugins/carthagent/src/ui/native-review.d.mts +33 -0
  136. package/plugins/carthagent/src/ui/native-review.mjs +159 -0
  137. package/plugins/carthagent/src/ui/resume-session.mjs +34 -0
  138. package/plugins/carthagent/src/ui/select-mouse.ts +17 -0
  139. package/plugins/carthagent/src/ui/session-preferences.d.mts +7 -0
  140. package/plugins/carthagent/src/ui/session-preferences.mjs +14 -0
  141. package/plugins/carthagent/src/ui/theme-provision.d.mts +3 -0
  142. package/plugins/carthagent/src/ui/theme-provision.mjs +134 -0
  143. package/plugins/carthagent/src/ui/voyages-navigation-state.mjs +56 -0
  144. package/plugins/carthagent/src/ui/voyages-navigation.tsx +131 -0
  145. package/plugins/carthagent/src/ui/voyages-state.mjs +165 -0
  146. package/plugins/carthagent/src/ui/voyages.tsx +131 -0
  147. package/plugins/carthagent/src/ui/workspace-live.ts +61 -0
  148. package/plugins/carthagent/src/ui/workspace.tsx +379 -0
  149. package/plugins/carthagent/src/voyages-rpc.ts +64 -0
  150. package/plugins/carthagent/src/workspace-rpc.ts +36 -0
  151. package/plugins/carthagent/tests/commands.test.ts +107 -0
  152. package/plugins/carthagent/tests/session-preferences.test.mjs +41 -0
  153. package/plugins/carthagent/tests/voyages-navigation.test.tsx +269 -0
  154. package/plugins/carthagent/themes/carthage.json +67 -0
  155. package/plugins/carthagent/tui.ts +26 -1
  156. package/script/ctg/build-owned-runtime.sh +166 -0
  157. package/tests/budget-engine.test.mjs +4 -3
  158. package/tests/cli.test.mjs +52 -96
  159. package/tests/cloud-client.test.mjs +2 -2
  160. package/tests/daily-evidence.test.mjs +62 -0
  161. package/tests/delivery-review.test.mjs +57 -2
  162. package/tests/delivery.test.mjs +22 -1
  163. package/tests/experiential-extension.test.mjs +2 -2
  164. package/tests/experiential.test.mjs +1 -1
  165. package/tests/fixtures/native-discovery-plugin/server.ts +15 -0
  166. package/tests/generate-owned-runtime-release.test.mjs +354 -0
  167. package/tests/installed-runtime-contract.test.mjs +43 -0
  168. package/tests/native-cli-host-smoke.mjs +457 -0
  169. package/tests/native-daily-editor-focus.test.mjs +213 -0
  170. package/tests/native-daily-editor.test.mjs +43 -0
  171. package/tests/native-daily-quests-layout.test.mjs +55 -0
  172. package/tests/native-daily-quests-rpc.test.mjs +456 -0
  173. package/tests/native-daily-quests-ui.test.mjs +778 -0
  174. package/tests/native-daily-source.test.mjs +525 -0
  175. package/tests/native-demo-ui.test.mjs +48 -0
  176. package/tests/native-evaluation-admission.test.mjs +24 -0
  177. package/tests/native-fixture-browser-cleanup.test.mjs +65 -0
  178. package/tests/native-fixture-runtime.test.mjs +111 -0
  179. package/tests/native-fixture-stop-diagnostics.test.mjs +67 -0
  180. package/tests/native-glyph-pty.test.mjs +107 -0
  181. package/tests/native-manual-projects.test.mjs +170 -0
  182. package/tests/native-model-command.test.mjs +67 -0
  183. package/tests/native-owned-runtime-env.test.mjs +140 -0
  184. package/tests/native-paired-guards.test.mjs +464 -0
  185. package/tests/native-provider-policy.test.mjs +33 -0
  186. package/tests/native-pty-invocation.test.mjs +114 -0
  187. package/tests/native-pty-runtime.test.mjs +45 -0
  188. package/tests/native-resume-session.test.mjs +46 -0
  189. package/tests/native-review-consumer.test.mjs +286 -0
  190. package/tests/native-runtime-identity.test.mjs +214 -0
  191. package/tests/native-select-mouse.test.mjs +23 -0
  192. package/tests/native-ship-guidance.test.mjs +16 -0
  193. package/tests/native-ship-parity.test.mjs +526 -0
  194. package/tests/native-ship-plan.test.mjs +85 -0
  195. package/tests/native-ship-rpc.test.mjs +83 -0
  196. package/tests/native-ui-commands.test.mjs +6 -0
  197. package/tests/native-voyages-layout.test.mjs +28 -0
  198. package/tests/native-voyages-navigation.test.mjs +169 -0
  199. package/tests/native-voyages-rpc.test.mjs +397 -0
  200. package/tests/native-voyages-ui.test.mjs +307 -0
  201. package/tests/opencode-atomic-write.test.mjs +55 -0
  202. package/tests/opencode-cli.test.mjs +1312 -0
  203. package/tests/opencode-codegraph-plugin.test.mjs +47 -0
  204. package/tests/opencode-delivery.test.mjs +16 -0
  205. package/tests/opencode-providers.test.mjs +248 -20
  206. package/tests/opencode-runtime.test.mjs +597 -8
  207. package/tests/opencode-session-controls.test.mjs +15 -0
  208. package/tests/opencode-ship-rpc.test.mjs +71 -0
  209. package/tests/opencode-update.test.mjs +475 -0
  210. package/tests/opencode-workspace.test.mjs +51 -2
  211. package/tests/owned-runtime-publish-workflow.test.mjs +477 -0
  212. package/tests/release-workflow.test.mjs +46 -0
  213. package/tests/runtime-artifact.test.mjs +269 -0
  214. package/tests/runtime-development-trust.test.mjs +231 -0
  215. package/tests/runtime-github-transport.test.mjs +132 -0
  216. package/tests/runtime-token-env.test.mjs +23 -0
  217. package/tests/server.test.mjs +3 -1
  218. package/tests/ship-telemetry.test.mjs +1 -1
  219. package/tests/source-preview.test.mjs +253 -0
  220. package/tests/test_native_terminal_probe.py +76 -0
  221. package/tests/test_native_terminal_semantics.py +232 -0
  222. package/tests/tui.test.mjs +2 -2
  223. package/tests/update.test.mjs +42 -5
  224. package/tests/verify-draft-runtime-gate.test.mjs +280 -0
  225. package/tests/verify-owned-runtime-release.test.mjs +371 -0
  226. package/tests/workspace-live.test.mjs +127 -0
  227. package/tools/benchmark/diagnose-request.mjs +59 -36
  228. package/tools/benchmark/eval-common.mjs +3 -3
  229. package/tools/benchmark/evaluators.test.mjs +4 -4
  230. package/tools/benchmark/guard.test.mjs +35 -2
  231. package/tools/benchmark/guard.ts +20 -7
  232. package/tools/benchmark/planning-startup.test.mjs +30 -34
  233. package/tools/benchmark/runner.mjs +12 -7
  234. package/tools/benchmark/runner.test.mjs +23 -7
  235. package/tools/benchmark/upstream-error.test.mjs +16 -2
  236. package/tools/generate-owned-runtime-release.mjs +217 -0
  237. package/tools/installed-runtime-contract.mjs +16 -0
  238. package/tools/manual-runtime-manifest.mjs +39 -0
  239. package/tools/native-fixture-browser-cleanup.mjs +59 -0
  240. package/tools/native-fixture-stop-diagnostics.mjs +45 -0
  241. package/tools/native-fixture.mjs +199 -40
  242. package/tools/native-glyph-helpers.py +127 -0
  243. package/tools/native-glyph-pty.py +144 -0
  244. package/tools/native-manual-projects.mjs +259 -0
  245. package/tools/native-manual.mjs +338 -0
  246. package/tools/native-model-picker-acceptance.py +306 -0
  247. package/tools/native-owned-runtime-env.sh +47 -0
  248. package/tools/native-paired-guards.mjs +282 -0
  249. package/tools/native-paired-manifest.mjs +72 -0
  250. package/tools/native-paired-orchestration.sh +51 -0
  251. package/tools/native-plugin-readiness.mjs +33 -0
  252. package/tools/native-plugin-readiness.test.mjs +53 -0
  253. package/tools/native-pty-invocation.mjs +26 -0
  254. package/tools/native-pty-runtime.mjs +83 -0
  255. package/tools/native-pty-smoke.py +147 -24
  256. package/tools/native-public-repo-shell-result.mjs +13 -0
  257. package/tools/native-public-repo-shell-result.test.mjs +28 -0
  258. package/tools/native-runtime-identity.mjs +201 -0
  259. package/tools/native-slash-acceptance-env.py +38 -0
  260. package/tools/native-terminal-semantics.py +882 -0
  261. package/tools/owned-shell-observer/index.ts +16 -0
  262. package/tools/owned-shell-observer/package.json +1 -0
  263. package/tools/owned-visual-clear-env.py +48 -0
  264. package/tools/owned-visual-clear-model.py +21 -0
  265. package/tools/pinned-owned-runtime-inputs.mjs +46 -0
  266. package/tools/prepare-native-manual.mjs +122 -0
  267. package/tools/run-native-terminal-paired.sh +403 -0
  268. package/tools/runtime-token-env.mjs +8 -0
  269. package/tools/seed-native-switch-fixture.mjs +79 -0
  270. package/tools/test-native-controls.mjs +3 -1
  271. package/tools/test-native-daily-quests.mjs +65 -0
  272. package/tools/test-native-default-cli.mjs +106 -0
  273. package/tools/test-native-delivery-host.mjs +102 -20
  274. package/tools/test-native-evaluation.mjs +7 -3
  275. package/tools/test-native-glyph-pty.mjs +94 -0
  276. package/tools/test-native-host.mjs +91 -65
  277. package/tools/test-native-outcomes.mjs +3 -1
  278. package/tools/test-native-package.mjs +206 -38
  279. package/tools/test-native-performance.mjs +26 -0
  280. package/tools/test-native-product.mjs +90 -0
  281. package/tools/test-native-pty.mjs +34 -9
  282. package/tools/test-native-public-repo.mjs +224 -0
  283. package/tools/test-native-refresh-reentry.mjs +106 -0
  284. package/tools/test-native-report.mjs +27 -20
  285. package/tools/test-native-review.mjs +75 -0
  286. package/tools/test-native-runtime.mjs +120 -0
  287. package/tools/test-native-ship-models.mjs +176 -0
  288. package/tools/test-native-ship-walkthrough.mjs +96 -0
  289. package/tools/test-native-slash-commands.mjs +125 -0
  290. package/tools/test-native-slash-commands.py +242 -0
  291. package/tools/test-native-swe-host.mjs +224 -55
  292. package/tools/test-native-tasks.mjs +77 -0
  293. package/tools/test-native-terminal-performance.py +887 -0
  294. package/tools/test-native-terminal-readiness.sh +85 -0
  295. package/tools/test-native-terminal-semantics-installed.mjs +38 -0
  296. package/tools/test-native-visual-clear-installed.mjs +48 -0
  297. package/tools/test-owned-host-controls.mjs +238 -0
  298. package/tools/test-owned-opencode-runtime.mjs +35 -0
  299. package/tools/test-owned-visual-clear-env.py +120 -0
  300. package/tools/test-owned-visual-clear.py +373 -0
  301. package/tools/verify-draft-runtime-gate.mjs +138 -0
  302. package/tools/verify-owned-runtime-release.mjs +114 -0
  303. package/tools/verify-release-version.mjs +21 -1
@@ -0,0 +1,48 @@
1
+ # Beta rewards and new-user acceptance
2
+
3
+ Owner-approved policy: one eligible `ctg` verified delivery earns **25 coins,
4
+ 100 XP and 1 km**, at most three grants per player per UTC day. Daily classifier
5
+ assessment and personal work-log completion do not earn these rewards.
6
+
7
+ ## Execution plan
8
+
9
+ 1. Preserve the current live account and capture its starting profile. Confirm
10
+ account identity through normal authentication; never select an account by
11
+ a display name supplied to a public endpoint.
12
+ 2. Implement a versioned backend reward receipt and atomic coin/XP/km posting.
13
+ Derive owner from authentication and amounts from server policy. Retain
14
+ delivery identity across retries and enforce daily caps under a player lock.
15
+ 3. Integrate an explicit native claim action. Require a current required-check
16
+ verified handoff, fresh source fingerprint, passing check/requirement/review
17
+ gates and stable project/run identity. Do not reward advisory or blocked work.
18
+ 4. Run a disposable real-PostgreSQL lifecycle through normal HTTP/auth routes:
19
+ new user, one welcome grant, isolation, eligible reward, exact replay,
20
+ conflicting/parallel claims, daily cap, rollback, level/week boundaries,
21
+ purchase/equip and application/database reconnect persistence. Exercise
22
+ rejection paths and reconcile wallet postings against balances.
23
+ 5. Run backend checks and native eligibility/RPC/UI checks. Deploy the backend
24
+ only via reviewed PR, merge and its existing deployment workflow.
25
+ 6. On the owner's Beshir Aissi account, claim the existing accepted Ship delivery
26
+ once; replay it; confirm exactly +25 coins/+100 XP/+1 km, then compare native
27
+ and web persisted state. Keep test fixtures separate from earned live records.
28
+ 7. Record actual results, limitations and exact revisions, then resume beta
29
+ publication with installed-package and public-runtime acceptance gates.
30
+
31
+ ## Trust boundary
32
+
33
+ The coding harness verifies local execution and source freshness. An authenticated
34
+ client transmits a bounded receipt; the backend does not independently execute
35
+ the repository. Client attestation is not remote execution attestation or proof
36
+ of authorship. Server amounts, owner isolation, durable deduplication and caps
37
+ must hold even for malformed or replayed clients. Tests must not equate a private
38
+ debug coin grant with an earned coding reward.
39
+
40
+ ## Original baseline
41
+
42
+ Live profile previously verified: 20 coins, 0 XP, sandals owned/equipped. Current
43
+ backend has no coding-reward path. Quest policy explicitly returns `rewards:false`.
44
+ Beta publication is held until this additional acceptance scope is resolved.
45
+
46
+ Execution results are recorded in [beta-rewards-e2e-results.md](beta-rewards-e2e-results.md).
47
+ Production earned claim/replay/restart acceptance now passes at 45 coins,
48
+ 100 XP and 1 km; live browser and release-package acceptance remain pending.
@@ -0,0 +1,84 @@
1
+ # Beta reward acceptance results
2
+
3
+ ## Production earned reward — passed
4
+
5
+ Tested November 2, 2026 UTC through the normal installed profile, authenticated
6
+ as the owner's Beshir Aissi account. The installation is still preview.13 with
7
+ labelled local launch/reward patches; these results are not installed-beta
8
+ release acceptance.
9
+
10
+ - Backend PR [#176](https://github.com/B-icy/Carthagent-Backend/pull/176), merged
11
+ revision `ec40fdb9b053e64b820adb18e7d35da927468149`.
12
+ - [Production deployment](https://github.com/B-icy/Carthagent-Backend/actions/runs/41401836218)
13
+ passed migration/readiness, public-site and service checks.
14
+ - Native preview accepted the real required-check Ship delivery
15
+ `903d3ed5-88db-41ca-b72d-f5699fa5ae7f`, source snapshot
16
+ `cea9b1d71e113d0b876cec4d3a2eef38f16e14decb519d033fb7d9325508b8bb`.
17
+ - Claim receipt `9d44cf4b-0a70-40e5-90ce-d68a7718fe21`, awarded
18
+ `2026-11-02T06:49:23.538Z`, policy `verified-delivery-beta-v1`.
19
+
20
+ | Check | Before | After |
21
+ | --- | --- | --- |
22
+ | Coins | 20 | 45 |
23
+ | Total XP | 0 | 100 |
24
+ | Total / weekly km | 0 / 0 | 1 / 1 |
25
+ | Profile version | 14 | 15 |
26
+ | Equipment / inventory | Sandals equipped | Identical, sandals retained |
27
+
28
+ Immediate replay returned the identical receipt with `replayed:true` and no
29
+ additional grant. After stopping and restarting the registered native service,
30
+ preview, replay and profile all matched the saved post-claim result exactly.
31
+ Sessions and credentials persisted. No debug issuance was used.
32
+
33
+ The live TUI displayed 45 coins / 100 XP / 1 km, rendered the digest-only claim
34
+ confirmation, accepted cancellation, and then confirmed the existing receipt
35
+ with “This delivery was already rewarded. No duplicate grant.” The wallet and
36
+ version stayed unchanged. Captures: `/tmp/opencode/rewards-ui-preview.txt` and
37
+ `/tmp/opencode/rewards-ui-replayed.txt`.
38
+
39
+ ## Repeatable new-user acceptance — passed locally
40
+
41
+ Disposable PostgreSQL 17.11: 117 tests passed before the additional bearer
42
+ scenario; the complete six-test bearer group also passed. Backend CI ran the
43
+ updated suite successfully. Backend unit tests: 521 passed, one skipped.
44
+ Syntax, assets and navigation checks passed.
45
+
46
+ Coverage includes one welcome grant, cookie and device-approved bearer access,
47
+ reward claims and browser/CLI agreement, token refresh/new CLI session, owner
48
+ isolation, concurrent daily caps, run/snapshot deduplication, changed-evidence
49
+ rejection, transaction and wallet-overflow rollback, level/week progression,
50
+ milestone shop/quote/equip agreement, purchase replay, database reconnect and
51
+ restricted deployment/application-role permissions.
52
+
53
+ Native build/lint and 76 focused tests passed, including explicit confirmation,
54
+ account/session binding, current source gates, privacy of digest-only uploads,
55
+ lost-response recovery, restart and receipt recovery after source changes.
56
+
57
+ ## Remaining acceptance gates
58
+
59
+ - Live browser comparison awaits normal user sign-in in `voyages-rewards-e2e`.
60
+ - Live terminal rendering, cancellation and confirmed replay passed.
61
+ - Five-platform runtime prebuild 41398315323 succeeded on attempt 2. Exact
62
+ provenance, all archive checksums, embedded metadata and executable hashes
63
+ passed the production acquisition parser; regenerating the manifest produced
64
+ the identical candidate. The packaged beta manifest now matches those bytes.
65
+ Installed beta acceptance remains pending.
66
+
67
+ Pre-manifest full native quality run: lint/build passed; 1,124 tests passed, five
68
+ skipped, six failed solely because the package version is beta.1 while the
69
+ runtime manifest still pins preview.13. These remain release-blocking failures
70
+ until the verified beta candidate was integrated. The post-integration quality
71
+ run passed: **1,130 tests passed, five skipped, zero failures**, plus lint,
72
+ typecheck and build. Exact candidate/packaged manifest equality and
73
+ `verify-release-version.mjs v1.1.0-beta.1` also passed. No trust assertion was relaxed.
74
+
75
+ Native PR CI passed all jobs after retrying one Windows Node 24 process-query
76
+ timeout. Native navigation also passed locally: 12 tests / 65 assertions.
77
+
78
+ The reward backend relies on authenticated local-harness attestation. It does
79
+ not independently execute repositories or prove authorship. Daily classifier
80
+ assessment and personal quest checkmarks remain unrewarded.
81
+
82
+ Local evidence: `/tmp/opencode/rewards-live-claimed.json`,
83
+ `/tmp/opencode/rewards-live-restarted.json`, and
84
+ `/tmp/opencode/rewards-installed-backup/provenance.json`.
@@ -0,0 +1,65 @@
1
+ # Cloud onboarding — unreleased implementation
2
+
3
+ November 2, 2026. This branch is not published beta acceptance. npm `next` remains
4
+ 1.1.0-beta.1 and `latest` remains 1.0.7.
5
+
6
+ Native PR #238 merged at `a5ad2164d056fee7f7183579ce6cc97305bae53b` after CI
7
+ 41504674623 passed. First-task guidance is tracked in PR #239. Beta.2 runtime
8
+ prebuild 41505735348 succeeded. All five downloaded archives, executable digests
9
+ and pinned provenance were independently verified by regenerating the candidate
10
+ manifest locally. Package and lockfile target beta.2 and pin that exact manifest;
11
+ publication remains pending.
12
+
13
+ ## Changes
14
+
15
+ - Use Carthagent Cloud for hosted models; retain Ship mode, internal IDs and
16
+ compatibility login aliases.
17
+ - Fresh device sign-in has one primary flow. Legacy import and upstream key
18
+ configuration require `CARTHAGENT_ADVANCED_AUTH=1`.
19
+ - Billing selects Builder/Pro/Max and retrieves authenticated server quote terms.
20
+ TUI review precedes opening checkout. Existing subscribers review exact Stripe
21
+ proration in the browser before confirming a change.
22
+ - `/billing refresh` and `ctg billing refresh` show current account access and
23
+ require explicit continuation in the existing task session.
24
+ - Cloud account text identifies the signed-in email; usage recovery distinguishes
25
+ starter credit, daily/monthly limits, billing and own-provider access.
26
+
27
+ ## Verification
28
+
29
+ - Full native suite: 1,131 passed, 5 skipped, 0 failed.
30
+ `/tmp/opencode/onboarding-native-reviewed.log`
31
+ - Native build and typecheck pass.
32
+ `/tmp/opencode/onboarding-native-reviewed-build.log`
33
+ - RPC regression verifies that eligibility comes from the authenticated server
34
+ and quoting does not create a checkout.
35
+ - Native host acceptance passes at `b715ff282b` after correcting stale fresh-auth
36
+ and Cloud-name expectations. Both CI installed-package jobs passed. Run
37
+ 41502591162 passed Linux/macOS and Windows 24; Windows 22 hit the two-second
38
+ PowerShell diagnostics timeout, while its parallel run passed. Windows
39
+ diagnostics now allow bounded ten-second cold startup.
40
+ - Installed package acceptance and its focused terminal rerun reproduced a
41
+ reconnect overlay. DEBUG-enabled source and installed probes passed; a normal
42
+ source run subsequently hit its existing terminal-snapshot deadline. This is
43
+ timing-sensitive local acceptance, not proof of a fixed runtime defect. Both
44
+ earlier CI package checks passed, and corrected CI passed before merge.
45
+ - The subsequent full non-focused installed-package run passed all 28
46
+ probes/scenarios, including terminal semantics, using the package-pinned
47
+ beta.1 owned runtime (`/tmp/opencode/onboarding-native-package-final.log`).
48
+ This closes the local rerun gate for the onboarding source; beta.2 still
49
+ requires acceptance against its own final packaged manifest and release assets.
50
+
51
+ ## Outstanding gates
52
+
53
+ Backend counterpart: `B-icy/Carthagent-Backend` PR #178 merged at
54
+ `b0eacdcbdb71be4c099b1b3839a11164b2d69232`; production deployment 41502378359
55
+ succeeded. Its `ONBOARDING_CONVERSION_AUDIT.md` tracks the full matrix. Live
56
+ authenticated identity and read-only Builder/Pro/Max handoff terms were verified.
57
+ Retention follow-up PR #179 also merged and deployment 41505976672 succeeded.
58
+ Stripe test access is unavailable. First-task/default-model guidance,
59
+ contextual exhaustion action, remaining legacy/docs naming and full measurement
60
+ segmentation still need work. No new end-to-end paid continuation or visual
61
+ screenshot acceptance is claimed.
62
+
63
+ The deployed website now precedes the native release. Publish a new immutable
64
+ beta and verify its exact public acquisition and upgrade. Preserve the user's
65
+ normal profile and Invest-With-Friends work during acceptance.
@@ -0,0 +1,83 @@
1
+ # Host TUI glyph compatibility review (v4)
2
+
3
+ ## Decision
4
+
5
+ The standalone owned-host glyph compatibility patch was independently approved
6
+ at SHA-256
7
+ `37d93c0dfd5c52bd4536136fb53618580a29d682644848433f3b2ee4726d98a4`.
8
+ The parent also reports that its full 11-test focused run passed with 146
9
+ assertions. This record publishes the reviewed patch and its Unicode source
10
+ inventory for later composition; it does not claim that the patch is already
11
+ included in the current upstream runtime or in a final binary.
12
+
13
+ ## Artifacts
14
+
15
+ - Patch: [`../patches/opencode-v2.0.32-glyphs.patch`](../patches/opencode-v2.0.32-glyphs.patch)
16
+ - SHA-256: `37d93c0dfd5c52bd4536136fb53618580a29d682644848433f3b2ee4726d98a4`
17
+ - Source base: upstream commit
18
+ `843a6c514e606b436a7fe713422ace0a93ad3d61`.
19
+ - Inventory: [`unicode-inventory-v4.csv`](unicode-inventory-v4.csv)
20
+ - SHA-256: `8727e2cc18f47a3cfe986adc9f721ccaf4bef8f4f39046a7667bc9d6c5bf2fb3`.
21
+
22
+ The patch changes 74 paths: 72 modified source/test files and two added files
23
+ (`packages/tui/src/ui/glyphs.ts` and `packages/tui/test/glyphs.test.ts`). The
24
+ independent review described its source-file audit as 72 changed files; the
25
+ author's 74-file count includes those two additions. Both figures refer to the
26
+ same v4 patch, not different revisions.
27
+
28
+ ## Scope and inventory
29
+
30
+ The inventory scanned all 245 non-mini `packages/tui/src` TypeScript and TSX
31
+ files. It records 401 Unicode-bearing source lines in 77 files, with zero
32
+ unclassified rows. The classifications distinguish known host chrome from
33
+ dynamic/user/model/code content, examples, and comments. Mini remains out of
34
+ scope except where shared with the full TUI. Unicode remains the default;
35
+ `auto` stays Unicode until a launcher resolves it. Only known static chrome is
36
+ mapped, preserving dynamic text, paths, shell output, and diffs.
37
+
38
+ ## Review and validation evidence
39
+
40
+ - Independent review approved the exact v4 patch hash above. Its blocking v3
41
+ findings (missing `chromeEllipsis` imports) are fixed in the three affected
42
+ consumers: `dialog-session-list.tsx`, `prompt/autocomplete.tsx`, and
43
+ `prompt/index.tsx`.
44
+ - Focused tests: 11 passed, 0 failed, 146 assertions. The session-list test
45
+ executes the relative-path truncation helper in ASCII and Unicode modes and
46
+ checks that dynamic path characters remain intact.
47
+ - Glyph-helper binding audit: zero missing bindings across the patch's 74
48
+ changed paths (including the two additions).
49
+ - TypeScript transpilation: 74 changed TS/TSX files, zero transpilation errors.
50
+ - `git diff --check`: passed.
51
+ - Typecheck was compared against the pinned upstream base, not treated as a
52
+ clean pass. Both base and v4 emitted exactly the same single diagnostic:
53
+ `src/plugin/api.tsx(152,3): error TS2741: Property 'transcript' is missing in
54
+ type ... but required in type 'Context'.` No changed-file diagnostic
55
+ remained. Captured outputs:
56
+ [`typecheck-base.log`](typecheck-base.log) and
57
+ [`typecheck-v4.log`](typecheck-v4.log).
58
+
59
+ Commands used for the focused checks (from `packages/tui` in the isolated
60
+ upstream worktree):
61
+
62
+ ```sh
63
+ /tmp/opencode/ctg-parity-prototype/bun-dist/bun-linux-x64/bun test --timeout 30000 test/glyphs.test.ts
64
+ /tmp/opencode/ctg-parity-prototype/bun-dist/bun-linux-x64/bun /tmp/opencode/audit-glyph-bindings.ts
65
+ /tmp/opencode/ctg-parity-prototype/bun-dist/bun /tmp/opencode/transpile-changed.ts
66
+ git diff --check
67
+ ```
68
+
69
+ The test result above is the owner's run. The binding and transpilation audits
70
+ were run from the isolated source worktree. The workspace typecheck command
71
+ was `tsgo --noEmit --pretty false -p tsconfig.json` on both base and v4; the
72
+ captured logs preserve the complete (single-line) diagnostic. These checks are
73
+ source-level evidence only and are not a final composed-runtime or release
74
+ binary validation.
75
+
76
+ ## Composition boundary
77
+
78
+ The migration product branch may separately own composition into its runtime.
79
+ This documentation-only review change intentionally does not alter build or
80
+ release recipes, CLI resolution, CTG integration code, or the source patch
81
+ payload. The immutable patch and inventory should be the inputs to that
82
+ composition; do not edit this published v4 revision in place. Any source
83
+ revision requires a new patch filename and digest.
@@ -0,0 +1,26 @@
1
+ # Spinner test import-order follow-up (v1)
2
+
3
+ The composed 81e test run exposed an import-order assumption in the spinner
4
+ assertion: `SPINNER_FRAMES` is initialized when its module is first imported,
5
+ so setting `CTG_TUI_GLYPHS` later in a test does not change that constant. The
6
+ production startup-time behavior is intentional and unchanged. The follow-up
7
+ patch, [`../patches/opencode-v2.0.32-glyph-spinner-test-isolation-v1.patch`](../patches/opencode-v2.0.32-glyph-spinner-test-isolation-v1.patch),
8
+ checks ASCII and Unicode startup values in separate Bun subprocesses with the
9
+ mode set in each child's environment before import.
10
+
11
+ Patch SHA-256:
12
+ `651f4d08959ed657c94fc77fb6af48992b928f2b63eb922719f34dcb38cd8f26`.
13
+
14
+ ## Validation on Bun 1.4.2
15
+
16
+ - Glyph tests: 11 passed, 0 failed, 147 assertions.
17
+ - Combined glyph, plugin-keymap, and plugin-theme tests with a 60-second
18
+ per-test timeout: 18 passed, 0 failed, 168 assertions.
19
+ - The same combined invocation with the suite's 30-second default had one
20
+ plugin-keymap timeout; rerunning at 60 seconds passed. No production code or
21
+ spinner initialization was changed.
22
+
23
+ The subprocess assertions set the selected mode before importing
24
+ `spinner-frames.ts`; this preserves and verifies the startup-time constant
25
+ contract in both ASCII and Unicode modes despite other test modules being able
26
+ to import the module earlier in the parent process.
@@ -0,0 +1 @@
1
+ src/plugin/api.tsx(152,3): error TS2741: Property 'transcript' is missing in type '{ options: Readonly<Record<string, any>>; readonly location: LocationPublicInfo | undefined; app: { version: string; channel: string; }; renderer: CliRenderer; ... 8 more ...; ui: { ...; }; }' but required in type 'Context'.
@@ -0,0 +1 @@
1
+ src/plugin/api.tsx(152,3): error TS2741: Property 'transcript' is missing in type '{ options: Readonly<Record<string, any>>; readonly location: LocationPublicInfo | undefined; app: { version: string; channel: string; }; renderer: CliRenderer; ... 8 more ...; ui: { ...; }; }' but required in type 'Context'.