@timurproko/a1 0.1.8-dev.0b6d8cc → 0.1.8-dev.121

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 (387) hide show
  1. package/README.md +29 -23
  2. package/bin/cli.js +7 -7
  3. package/bin/guardian.js +1 -1
  4. package/bin/supervisor.js +1 -1
  5. package/bin/ui.js +3 -3
  6. package/dist/{src/cli → cli}/dispatch.js +14 -12
  7. package/dist/{src/cli → cli}/packages.d.ts +10 -2
  8. package/dist/{src/cli → cli}/packages.js +24 -20
  9. package/dist/{src/cli → cli}/version-stats.js +4 -4
  10. package/dist/composition/agent-engine-bridge.d.ts +3 -0
  11. package/dist/composition/agent-engine-bridge.js +108 -0
  12. package/dist/composition/index.d.ts +3 -0
  13. package/dist/composition/index.js +3 -0
  14. package/dist/composition/owned-ui.d.ts +25 -0
  15. package/dist/composition/owned-ui.js +40 -0
  16. package/dist/composition/process.d.ts +16 -0
  17. package/dist/composition/process.js +45 -0
  18. package/dist/composition/settings-route-host.d.ts +8 -0
  19. package/dist/composition/settings-route-host.js +73 -0
  20. package/dist/{src/features → features}/owned-ui/customization.d.ts +1 -1
  21. package/dist/{src/features → features}/owned-ui/customization.js +1 -1
  22. package/dist/{src/features → features}/owned-ui/diagnostics.d.ts +1 -1
  23. package/dist/{src/features → features}/owned-ui/run.d.ts +2 -2
  24. package/dist/{src/features → features}/owned-ui/settings-app.d.ts +3 -3
  25. package/dist/{src/features → features}/owned-ui/settings-app.js +1 -1
  26. package/dist/{src/features → features}/workspace/capabilities.d.ts +1 -1
  27. package/dist/{src/features → features}/workspace/reducer.d.ts +1 -1
  28. package/dist/{src/features → features}/workspace/reducer.js +1 -1
  29. package/dist/{src/features → features}/workspace/router.d.ts +1 -1
  30. package/dist/{src/features → features}/workspace/store.d.ts +1 -1
  31. package/dist/{src/foundation → foundation}/launch-guardian/main.js +8 -2
  32. package/dist/foundation/lifecycle/paths.d.ts +28 -0
  33. package/dist/{src/foundation → foundation}/lifecycle/paths.js +21 -0
  34. package/dist/{src/foundation → foundation}/native-host-protocol/messages.d.ts +1 -1
  35. package/dist/{src/foundation → foundation}/native-host-protocol/messages.js +1 -1
  36. package/dist/{src/foundation → foundation}/release/bootstrap.js +42 -10
  37. package/dist/foundation/release/endpoints.d.ts +20 -0
  38. package/dist/foundation/release/endpoints.js +50 -0
  39. package/dist/{src/foundation → foundation}/release/index.d.ts +1 -0
  40. package/dist/{src/foundation → foundation}/release/index.js +1 -0
  41. package/dist/{src/foundation → foundation}/release/release-gc.d.ts +4 -1
  42. package/dist/{src/foundation → foundation}/release/release-gc.js +9 -1
  43. package/dist/{src/foundation → foundation}/release/update.d.ts +9 -1
  44. package/dist/{src/foundation → foundation}/release/update.js +69 -35
  45. package/dist/{src/foundation → foundation}/storage/control-store.d.ts +1 -1
  46. package/dist/{src/foundation → foundation}/storage/control-store.js +1 -1
  47. package/dist/{src/foundation → foundation}/structured-agent-runtime/backpressure.d.ts +1 -1
  48. package/dist/{src/foundation → foundation}/structured-agent-runtime/backpressure.js +1 -1
  49. package/dist/{src/foundation → foundation}/structured-agent-runtime/commands.d.ts +1 -1
  50. package/dist/{src/foundation → foundation}/structured-agent-runtime/commands.js +1 -1
  51. package/dist/{src/foundation → foundation}/structured-agent-runtime/handshake.d.ts +1 -1
  52. package/dist/{src/foundation → foundation}/structured-agent-runtime/handshake.js +1 -1
  53. package/dist/{src/foundation → foundation}/structured-agent-runtime/reconnection.d.ts +1 -1
  54. package/dist/{src/foundation → foundation}/structured-agent-runtime/reconnection.js +1 -1
  55. package/dist/{src/foundation → foundation}/structured-agent-runtime/state.d.ts +1 -1
  56. package/dist/{src/foundation → foundation}/structured-agent-runtime/state.js +1 -1
  57. package/dist/foundation/supervision/index.d.ts +3 -0
  58. package/dist/foundation/supervision/index.js +3 -0
  59. package/dist/{src/foundation → foundation}/supervision/main.js +11 -5
  60. package/dist/foundation/supervision/paths.d.ts +1 -0
  61. package/dist/foundation/supervision/paths.js +1 -0
  62. package/dist/{src/foundation → foundation}/supervision/server.d.ts +18 -1
  63. package/dist/{src/foundation → foundation}/supervision/server.js +52 -1
  64. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/components.d.ts +1 -1
  65. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/conformance.js +2 -2
  66. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-extension-ui.d.ts +1 -1
  67. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-footer-status.d.ts +1 -1
  68. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-presenters-transcript.d.ts +1 -1
  69. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-presenters-transcript.js +1 -1
  70. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-selectors-dialogs.d.ts +1 -1
  71. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-shared-facade.d.ts +1 -1
  72. package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-footer.d.ts +1 -1
  73. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/adapter.d.ts +2 -2
  74. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/adapter.js +113 -16
  75. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/conformance.js +2 -2
  76. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/model-auth-integration.d.ts +1 -1
  77. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/package-integration.d.ts +1 -1
  78. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/package-integration.js +1 -1
  79. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/resource-extension-integration.d.ts +1 -1
  80. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/session-integration.d.ts +1 -1
  81. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/session-integration.js +1 -1
  82. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/settings-integration.d.ts +1 -1
  83. package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflow-controllers.d.ts +1 -1
  84. package/dist/{src/foundation/pi-owned-ui-integration → integrations/pi/owned-ui}/route-host.d.ts +1 -1
  85. package/dist/{src/foundation/pi-owned-ui-integration/session-shell.d.ts → integrations/pi/owned-ui/session-shell-root.d.ts} +13 -46
  86. package/dist/integrations/pi/owned-ui/session-shell-root.js +722 -0
  87. package/dist/integrations/pi/owned-ui/session-shell.d.ts +46 -0
  88. package/dist/{src/foundation/pi-owned-ui-integration → integrations/pi/owned-ui}/session-shell.js +24 -704
  89. package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/presentation-adapter.d.ts +1 -1
  90. package/dist/native/darwin-arm64/manifest.json +1 -1
  91. package/dist/native/linux-x64/manifest.json +1 -1
  92. package/dist/native/win32-x64/manifest.json +2 -2
  93. package/dist/native/win32-x64/process-guardian.exe +0 -0
  94. package/dist/{src/foundation/ui-apps → ui/apps}/contracts.d.ts +1 -1
  95. package/dist/{src/foundation/ui-apps → ui/apps}/host.d.ts +1 -1
  96. package/dist/{src/foundation/ui-apps → ui/apps}/host.js +1 -1
  97. package/dist/{src/foundation/owned-ui-settings → ui/settings}/session.d.ts +1 -1
  98. package/docs/architecture/boundaries.md +8 -8
  99. package/docs/architecture/project-structure.md +52 -29
  100. package/docs/architecture/toolchain.md +5 -5
  101. package/docs/ci-release-runbook.md +76 -79
  102. package/docs/features/launch-profiles.md +7 -9
  103. package/docs/manual-owned-ui-checkpoint.md +52 -0
  104. package/docs/manual-terminal-colour-check.md +1 -1
  105. package/package.json +24 -22
  106. package/dist/src/composition/index.d.ts +0 -48
  107. package/dist/src/composition/index.js +0 -258
  108. package/dist/src/foundation/lifecycle/paths.d.ts +0 -10
  109. package/dist/src/foundation/supervision/index.d.ts +0 -3
  110. package/dist/src/foundation/supervision/index.js +0 -3
  111. package/dist/src/foundation/supervision/paths.d.ts +0 -1
  112. package/dist/src/foundation/supervision/paths.js +0 -1
  113. package/docs/manual-transparent-checkpoint.md +0 -53
  114. /package/dist/{src/cli → cli}/capabilities.d.ts +0 -0
  115. /package/dist/{src/cli → cli}/capabilities.js +0 -0
  116. /package/dist/{src/cli → cli}/dispatch.d.ts +0 -0
  117. /package/dist/{src/cli → cli}/index.d.ts +0 -0
  118. /package/dist/{src/cli → cli}/index.js +0 -0
  119. /package/dist/{src/cli → cli}/version-stats.d.ts +0 -0
  120. /package/dist/{src/cli → cli}/version.d.ts +0 -0
  121. /package/dist/{src/cli → cli}/version.js +0 -0
  122. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.d.ts +0 -0
  123. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.js +0 -0
  124. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.d.ts +0 -0
  125. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.js +0 -0
  126. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain.d.ts +0 -0
  127. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain.js +0 -0
  128. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/index.d.ts +0 -0
  129. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/index.js +0 -0
  130. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.d.ts +0 -0
  131. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.js +0 -0
  132. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.d.ts +0 -0
  133. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.js +0 -0
  134. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.d.ts +0 -0
  135. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.js +0 -0
  136. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.d.ts +0 -0
  137. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.js +0 -0
  138. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.d.ts +0 -0
  139. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.js +0 -0
  140. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.d.ts +0 -0
  141. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.js +0 -0
  142. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/index.d.ts +0 -0
  143. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/index.js +0 -0
  144. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.d.ts +0 -0
  145. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.js +0 -0
  146. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/validation.d.ts +0 -0
  147. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/validation.js +0 -0
  148. /package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.d.ts +0 -0
  149. /package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.js +0 -0
  150. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/index.d.ts +0 -0
  151. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/index.js +0 -0
  152. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/model.d.ts +0 -0
  153. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/model.js +0 -0
  154. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/validation.d.ts +0 -0
  155. /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/validation.js +0 -0
  156. /package/dist/{src/features → features}/launch/development-launch.d.ts +0 -0
  157. /package/dist/{src/features → features}/launch/development-launch.js +0 -0
  158. /package/dist/{src/features → features}/launch/index.d.ts +0 -0
  159. /package/dist/{src/features → features}/launch/index.js +0 -0
  160. /package/dist/{src/features → features}/launch/initialize-profile.d.ts +0 -0
  161. /package/dist/{src/features → features}/launch/initialize-profile.js +0 -0
  162. /package/dist/{src/features → features}/launch/intent.d.ts +0 -0
  163. /package/dist/{src/features → features}/launch/intent.js +0 -0
  164. /package/dist/{src/features → features}/launch/prepare-launch.d.ts +0 -0
  165. /package/dist/{src/features → features}/launch/prepare-launch.js +0 -0
  166. /package/dist/{src/features → features}/launch/profile-paths.d.ts +0 -0
  167. /package/dist/{src/features → features}/launch/profile-paths.js +0 -0
  168. /package/dist/{src/features → features}/launch/profiles.d.ts +0 -0
  169. /package/dist/{src/features → features}/launch/profiles.js +0 -0
  170. /package/dist/{src/features → features}/launch/runtime-selection.d.ts +0 -0
  171. /package/dist/{src/features → features}/launch/runtime-selection.js +0 -0
  172. /package/dist/{src/features → features}/owned-ui/diagnostics.js +0 -0
  173. /package/dist/{src/features → features}/owned-ui/index.d.ts +0 -0
  174. /package/dist/{src/features → features}/owned-ui/index.js +0 -0
  175. /package/dist/{src/features → features}/owned-ui/run.js +0 -0
  176. /package/dist/{src/features → features}/workspace/capabilities.js +0 -0
  177. /package/dist/{src/features → features}/workspace/index.d.ts +0 -0
  178. /package/dist/{src/features → features}/workspace/index.js +0 -0
  179. /package/dist/{src/features → features}/workspace/presentation.d.ts +0 -0
  180. /package/dist/{src/features → features}/workspace/presentation.js +0 -0
  181. /package/dist/{src/features → features}/workspace/reconciliation.d.ts +0 -0
  182. /package/dist/{src/features → features}/workspace/reconciliation.js +0 -0
  183. /package/dist/{src/features → features}/workspace/router.js +0 -0
  184. /package/dist/{src/features → features}/workspace/store.js +0 -0
  185. /package/dist/{src/foundation → foundation}/launch-guardian/index.d.ts +0 -0
  186. /package/dist/{src/foundation → foundation}/launch-guardian/index.js +0 -0
  187. /package/dist/{src/foundation → foundation}/launch-guardian/main.d.ts +0 -0
  188. /package/dist/{src/foundation → foundation}/lifecycle/commands.d.ts +0 -0
  189. /package/dist/{src/foundation → foundation}/lifecycle/commands.js +0 -0
  190. /package/dist/{src/foundation → foundation}/lifecycle/index.d.ts +0 -0
  191. /package/dist/{src/foundation → foundation}/lifecycle/index.js +0 -0
  192. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.d.ts +0 -0
  193. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.js +0 -0
  194. /package/dist/{src/foundation → foundation}/lifecycle/model.d.ts +0 -0
  195. /package/dist/{src/foundation → foundation}/lifecycle/model.js +0 -0
  196. /package/dist/{src/foundation → foundation}/native-host-protocol/codec.d.ts +0 -0
  197. /package/dist/{src/foundation → foundation}/native-host-protocol/codec.js +0 -0
  198. /package/dist/{src/foundation → foundation}/native-host-protocol/evidence.d.ts +0 -0
  199. /package/dist/{src/foundation → foundation}/native-host-protocol/evidence.js +0 -0
  200. /package/dist/{src/foundation → foundation}/native-host-protocol/index.d.ts +0 -0
  201. /package/dist/{src/foundation → foundation}/native-host-protocol/index.js +0 -0
  202. /package/dist/{src/foundation → foundation}/native-host-protocol/proof-gate.d.ts +0 -0
  203. /package/dist/{src/foundation → foundation}/native-host-protocol/proof-gate.js +0 -0
  204. /package/dist/{src/foundation → foundation}/process-containment/artifact.d.ts +0 -0
  205. /package/dist/{src/foundation → foundation}/process-containment/artifact.js +0 -0
  206. /package/dist/{src/foundation → foundation}/process-containment/contracts.d.ts +0 -0
  207. /package/dist/{src/foundation → foundation}/process-containment/contracts.js +0 -0
  208. /package/dist/{src/foundation → foundation}/process-containment/index.d.ts +0 -0
  209. /package/dist/{src/foundation → foundation}/process-containment/index.js +0 -0
  210. /package/dist/{src/foundation → foundation}/process-containment/linux-process-inspector.d.ts +0 -0
  211. /package/dist/{src/foundation → foundation}/process-containment/linux-process-inspector.js +0 -0
  212. /package/dist/{src/foundation → foundation}/process-containment/native-guardian-containment.d.ts +0 -0
  213. /package/dist/{src/foundation → foundation}/process-containment/native-guardian-containment.js +0 -0
  214. /package/dist/{src/foundation → foundation}/process-containment/windows-process-inspector.d.ts +0 -0
  215. /package/dist/{src/foundation → foundation}/process-containment/windows-process-inspector.js +0 -0
  216. /package/dist/{src/foundation → foundation}/protocol/client.d.ts +0 -0
  217. /package/dist/{src/foundation → foundation}/protocol/client.js +0 -0
  218. /package/dist/{src/foundation → foundation}/protocol/index.d.ts +0 -0
  219. /package/dist/{src/foundation → foundation}/protocol/index.js +0 -0
  220. /package/dist/{src/foundation → foundation}/protocol/messages.d.ts +0 -0
  221. /package/dist/{src/foundation → foundation}/protocol/messages.js +0 -0
  222. /package/dist/{src/foundation → foundation}/release/bootstrap.d.ts +0 -0
  223. /package/dist/{src/foundation → foundation}/release/cohort-selection.d.ts +0 -0
  224. /package/dist/{src/foundation → foundation}/release/cohort-selection.js +0 -0
  225. /package/dist/{src/foundation → foundation}/release/cohort-state.d.ts +0 -0
  226. /package/dist/{src/foundation → foundation}/release/cohort-state.js +0 -0
  227. /package/dist/{src/foundation → foundation}/release/concurrency.d.ts +0 -0
  228. /package/dist/{src/foundation → foundation}/release/concurrency.js +0 -0
  229. /package/dist/{src/foundation → foundation}/release/process-cleanup.d.ts +0 -0
  230. /package/dist/{src/foundation → foundation}/release/process-cleanup.js +0 -0
  231. /package/dist/{src/foundation → foundation}/release/release-store.d.ts +0 -0
  232. /package/dist/{src/foundation → foundation}/release/release-store.js +0 -0
  233. /package/dist/{src/foundation → foundation}/release/release.d.ts +0 -0
  234. /package/dist/{src/foundation → foundation}/release/release.js +0 -0
  235. /package/dist/{src/foundation → foundation}/release/stable-release.d.ts +0 -0
  236. /package/dist/{src/foundation → foundation}/release/stable-release.js +0 -0
  237. /package/dist/{src/foundation → foundation}/release/update-transaction.d.ts +0 -0
  238. /package/dist/{src/foundation → foundation}/release/update-transaction.js +0 -0
  239. /package/dist/{src/foundation → foundation}/storage/index.d.ts +0 -0
  240. /package/dist/{src/foundation → foundation}/storage/index.js +0 -0
  241. /package/dist/{src/foundation → foundation}/structured-agent-runtime/index.d.ts +0 -0
  242. /package/dist/{src/foundation → foundation}/structured-agent-runtime/index.js +0 -0
  243. /package/dist/{src/foundation → foundation}/supervision/main.d.ts +0 -0
  244. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/components.js +0 -0
  245. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/conformance.d.ts +0 -0
  246. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/index.d.ts +0 -0
  247. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/index.js +0 -0
  248. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/resources/builtin-themes.d.ts +0 -0
  249. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/resources/builtin-themes.js +0 -0
  250. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-components.d.ts +0 -0
  251. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-components.js +0 -0
  252. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-editor-autocomplete.d.ts +0 -0
  253. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-editor-autocomplete.js +0 -0
  254. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-extension-ui.js +0 -0
  255. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-footer-status.js +0 -0
  256. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-selectors-dialogs.js +0 -0
  257. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-shared-facade.js +0 -0
  258. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.d.ts +0 -0
  259. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.js +0 -0
  260. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/adjacent/core/keybindings.d.ts +0 -0
  261. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/adjacent/core/keybindings.js +0 -0
  262. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.d.ts +0 -0
  263. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.js +0 -0
  264. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/custom-entry.d.ts +0 -0
  265. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/custom-entry.js +0 -0
  266. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/daxnuts.d.ts +0 -0
  267. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/daxnuts.js +0 -0
  268. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/earendil-announcement.d.ts +0 -0
  269. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/earendil-announcement.js +0 -0
  270. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/extension-editor.d.ts +0 -0
  271. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/extension-editor.js +0 -0
  272. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/first-time-setup.d.ts +0 -0
  273. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/first-time-setup.js +0 -0
  274. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/markdown-transform.d.ts +0 -0
  275. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/markdown-transform.js +0 -0
  276. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.d.ts +0 -0
  277. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.js +0 -0
  278. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/owned-editor.d.ts +0 -0
  279. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/owned-editor.js +0 -0
  280. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/scoped-models-selector.d.ts +0 -0
  281. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/scoped-models-selector.js +0 -0
  282. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-footer.js +0 -0
  283. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.d.ts +0 -0
  284. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.js +0 -0
  285. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector.d.ts +0 -0
  286. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector.js +0 -0
  287. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/skill-invocation-message.d.ts +0 -0
  288. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/skill-invocation-message.js +0 -0
  289. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/status-indicator.d.ts +0 -0
  290. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/status-indicator.js +0 -0
  291. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/tree-selector.d.ts +0 -0
  292. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/tree-selector.js +0 -0
  293. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/trust-selector.d.ts +0 -0
  294. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/trust-selector.js +0 -0
  295. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.d.ts +0 -0
  296. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.js +0 -0
  297. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.d.ts +0 -0
  298. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.js +0 -0
  299. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme-controller.d.ts +0 -0
  300. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme-controller.js +0 -0
  301. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme.d.ts +0 -0
  302. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme.js +0 -0
  303. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/conformance.d.ts +0 -0
  304. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/index.d.ts +0 -0
  305. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/index.js +0 -0
  306. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/model-auth-integration.js +0 -0
  307. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/pi-settings-metadata.json +0 -0
  308. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.d.ts +0 -0
  309. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.js +0 -0
  310. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/resource-extension-integration.js +0 -0
  311. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/runtime-integration.d.ts +0 -0
  312. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/runtime-integration.js +0 -0
  313. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/settings-integration.js +0 -0
  314. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflow-controllers.js +0 -0
  315. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflows.d.ts +0 -0
  316. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflows.js +0 -0
  317. /package/dist/{src/foundation/pi-owned-ui-integration → integrations/pi/owned-ui}/index.d.ts +0 -0
  318. /package/dist/{src/foundation/pi-owned-ui-integration → integrations/pi/owned-ui}/index.js +0 -0
  319. /package/dist/{src/foundation/pi-owned-ui-integration → integrations/pi/owned-ui}/route-host.js +0 -0
  320. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/adapter.d.ts +0 -0
  321. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/adapter.js +0 -0
  322. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/conformance.d.ts +0 -0
  323. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/conformance.js +0 -0
  324. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/contracts.d.ts +0 -0
  325. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/contracts.js +0 -0
  326. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/index.d.ts +0 -0
  327. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/index.js +0 -0
  328. /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/presentation-adapter.js +0 -0
  329. /package/dist/{src/product-identity.d.ts → product-identity.d.ts} +0 -0
  330. /package/dist/{src/product-identity.js → product-identity.js} +0 -0
  331. /package/dist/{src/product-identity.json → product-identity.json} +0 -0
  332. /package/dist/{src/foundation/ui-apps → ui/apps}/contracts.js +0 -0
  333. /package/dist/{src/foundation/ui-apps → ui/apps}/index.d.ts +0 -0
  334. /package/dist/{src/foundation/ui-apps → ui/apps}/index.js +0 -0
  335. /package/dist/{src/foundation/ui-apps → ui/apps}/registry.d.ts +0 -0
  336. /package/dist/{src/foundation/ui-apps → ui/apps}/registry.js +0 -0
  337. /package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.d.ts +0 -0
  338. /package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.js +0 -0
  339. /package/dist/{src/foundation/ui-components → ui/components}/frame.d.ts +0 -0
  340. /package/dist/{src/foundation/ui-components → ui/components}/frame.js +0 -0
  341. /package/dist/{src/foundation/ui-components → ui/components}/index.d.ts +0 -0
  342. /package/dist/{src/foundation/ui-components → ui/components}/index.js +0 -0
  343. /package/dist/{src/foundation/ui-components → ui/components}/label.d.ts +0 -0
  344. /package/dist/{src/foundation/ui-components → ui/components}/label.js +0 -0
  345. /package/dist/{src/foundation/ui-components → ui/components}/line-input.d.ts +0 -0
  346. /package/dist/{src/foundation/ui-components → ui/components}/line-input.js +0 -0
  347. /package/dist/{src/foundation/ui-components → ui/components}/list-block.d.ts +0 -0
  348. /package/dist/{src/foundation/ui-components → ui/components}/list-block.js +0 -0
  349. /package/dist/{src/foundation/ui-components → ui/components}/list-view.d.ts +0 -0
  350. /package/dist/{src/foundation/ui-components → ui/components}/list-view.js +0 -0
  351. /package/dist/{src/foundation/ui-components → ui/components}/mouse.d.ts +0 -0
  352. /package/dist/{src/foundation/ui-components → ui/components}/mouse.js +0 -0
  353. /package/dist/{src/foundation/ui-components → ui/components}/pane.d.ts +0 -0
  354. /package/dist/{src/foundation/ui-components → ui/components}/pane.js +0 -0
  355. /package/dist/{src/foundation/ui-components → ui/components}/revision.d.ts +0 -0
  356. /package/dist/{src/foundation/ui-components → ui/components}/revision.js +0 -0
  357. /package/dist/{src/foundation/ui-components → ui/components}/scrollbar.d.ts +0 -0
  358. /package/dist/{src/foundation/ui-components → ui/components}/scrollbar.js +0 -0
  359. /package/dist/{src/foundation/ui-components → ui/components}/shortcuts.d.ts +0 -0
  360. /package/dist/{src/foundation/ui-components → ui/components}/shortcuts.js +0 -0
  361. /package/dist/{src/foundation/ui-components → ui/components}/spans.d.ts +0 -0
  362. /package/dist/{src/foundation/ui-components → ui/components}/spans.js +0 -0
  363. /package/dist/{src/foundation/ui-components → ui/components}/status-line.d.ts +0 -0
  364. /package/dist/{src/foundation/ui-components → ui/components}/status-line.js +0 -0
  365. /package/dist/{src/foundation/ui-components → ui/components}/stepper.d.ts +0 -0
  366. /package/dist/{src/foundation/ui-components → ui/components}/stepper.js +0 -0
  367. /package/dist/{src/foundation/ui-components → ui/components}/surface.d.ts +0 -0
  368. /package/dist/{src/foundation/ui-components → ui/components}/surface.js +0 -0
  369. /package/dist/{src/foundation/ui-components → ui/components}/text.d.ts +0 -0
  370. /package/dist/{src/foundation/ui-components → ui/components}/text.js +0 -0
  371. /package/dist/{src/foundation/ui-components → ui/components}/theme.d.ts +0 -0
  372. /package/dist/{src/foundation/ui-components → ui/components}/theme.js +0 -0
  373. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.d.ts +0 -0
  374. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.js +0 -0
  375. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/declarations.d.ts +0 -0
  376. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/declarations.js +0 -0
  377. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/index.d.ts +0 -0
  378. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/index.js +0 -0
  379. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/migrations.d.ts +0 -0
  380. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/migrations.js +0 -0
  381. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.d.ts +0 -0
  382. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.js +0 -0
  383. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/sections.d.ts +0 -0
  384. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/sections.js +0 -0
  385. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/session.js +0 -0
  386. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/store.d.ts +0 -0
  387. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/store.js +0 -0
@@ -1,4 +1,4 @@
1
- import type { PresentationComponentPort, PresentationRuntimePort, PresentationTerminalPort } from "../presentation-contracts/index.js";
1
+ import type { PresentationComponentPort, PresentationRuntimePort, PresentationTerminalPort } from "../../../contracts/presentation/index.js";
2
2
  import type { PiTuiTerminalPort } from "./contracts.js";
3
3
  export declare function createPiPresentationRuntime(root: PresentationComponentPort, terminal: PresentationTerminalPort): PresentationRuntimePort;
4
4
  export declare function createPiTerminalBridge(terminal: PresentationTerminalPort): PiTuiTerminalPort;
@@ -5,7 +5,7 @@
5
5
  "platform": "darwin",
6
6
  "architecture": "arm64",
7
7
  "capability": "unsupported",
8
- "builtAt": "2026-08-25T08:02:28.988Z",
8
+ "builtAt": "2026-08-25T14:20:04.982Z",
9
9
  "artifact": {
10
10
  "filename": "process-guardian",
11
11
  "sha256": "7524bf568992517f50ed53196c861c5edeba0d7275633bb4735ab45bd5963a28",
@@ -5,7 +5,7 @@
5
5
  "platform": "linux",
6
6
  "architecture": "x64",
7
7
  "capability": "supported",
8
- "builtAt": "2026-08-25T08:02:31.153Z",
8
+ "builtAt": "2026-08-25T14:20:15.954Z",
9
9
  "artifact": {
10
10
  "filename": "process-guardian",
11
11
  "sha256": "29e22fe29de2828982bc67ef418c4adcaab1490281477b7bea592ec6fe621bcd",
@@ -5,10 +5,10 @@
5
5
  "platform": "win32",
6
6
  "architecture": "x64",
7
7
  "capability": "supported",
8
- "builtAt": "2026-08-25T08:02:58.479Z",
8
+ "builtAt": "2026-08-25T14:20:44.310Z",
9
9
  "artifact": {
10
10
  "filename": "process-guardian.exe",
11
- "sha256": "fdbde2408643ffb897f5107d96ed40e8c8467505ef7daa64f86f9c2497c304ca",
11
+ "sha256": "2505aec15562e251023ec6aca4b1946536cf2ab44e4139da6066b2aa03d4dd92",
12
12
  "size": 172544
13
13
  },
14
14
  "provenance": {
@@ -1,4 +1,4 @@
1
- import type { PaneInputResult, PaneMouseEvent, PaneRect, UiTheme } from "../ui-components/index.js";
1
+ import type { PaneInputResult, PaneMouseEvent, PaneRect, UiTheme } from "../components/index.js";
2
2
  export interface AppSize {
3
3
  readonly width: number;
4
4
  readonly height: number;
@@ -1,4 +1,4 @@
1
- import { type PaneInputResult, type PaneMouseEvent, type UiTheme } from "../ui-components/index.js";
1
+ import { type PaneInputResult, type PaneMouseEvent, type UiTheme } from "../components/index.js";
2
2
  import type { AppSize, UiApp } from "./contracts.js";
3
3
  import type { UiAppRegistry } from "./registry.js";
4
4
  export interface AppHostSurface {
@@ -1,4 +1,4 @@
1
- import { FrameCache, finalizeFrame, } from "../ui-components/index.js";
1
+ import { FrameCache, finalizeFrame, } from "../components/index.js";
2
2
  // The interrupt byte, written as an escape: as a raw byte it is invisible to
3
3
  // every text tool, and this constant had already been emptied by one.
4
4
  const INTERRUPT = "";
@@ -1,4 +1,4 @@
1
- import type { AgentSettingsPort } from "../agent-engine-contracts/index.js";
1
+ import type { AgentSettingsPort } from "../../contracts/agent-engine/index.js";
2
2
  import type { OwnedUiSettingValue } from "./declarations.js";
3
3
  import type { OwnedUiSettingsResolution } from "./resolution.js";
4
4
  import { type OwnedUiSettingsBackend, type OwnedUiSettingsSection } from "./sections.js";
@@ -9,15 +9,15 @@ mutable a1 entry
9
9
  -> verified immutable release
10
10
  -> Node launch guardian and authenticated launch-instance registration
11
11
  -> native process guardian and per-instance containment
12
- -> a1-ui runtime selection
13
- -> owned UI or transparent Pi with inherited physical terminal handles
12
+ -> profile-aware owned-UI runtime selection
13
+ -> owned Pi-backed composition, with A1 surfaces enabled only for bare a1
14
14
  ```
15
15
 
16
16
  Launch-instance ownership is plural. The supervisor tracks any number of independently authenticated `a1`, `a1 pi`, and `a1 sandbox` instances and never uses one product-wide foreground mutex. Closing one instance closes only its verified process tree. Persisted rows alone do not prove liveness, and uncertainty never authorizes terminating an unrelated process.
17
17
 
18
- Neither guardian reads ordinary terminal input, parses or relays runtime output, renders cells, infers frames, synthesizes terminal responses, or emits display control. Bare `a1` retains its owned UI authority. In explicit Pi profiles, Pi and the physical terminal retain direct terminal behavior. The private guardian boundary carries only bounded identity, readiness, stop, and outcome data.
18
+ Neither guardian reads ordinary terminal input, parses or relays runtime output, renders cells, infers frames, synthesizes terminal responses, or emits display control. All profiles use the same owned rendering and input pipeline. Bare `a1` exposes A1-owned surfaces; `a1 pi` and `a1 sandbox` withhold those surfaces and select their own profile roots. The private guardian boundary carries only bounded identity, readiness, stop, and outcome data.
19
19
 
20
- Transparent mode has no A1-authoritative terminal surface, internal pane, virtual scrollback, inactive resident tab, or visual reconnection. A future feature that requires those properties must introduce and certify a separate composed-terminal authority; it must not weaken or silently intercept transparent mode.
20
+ The owned Pi-backed surface is not an arbitrary-CLI terminal multiplexer. A feature that requires resident arbitrary CLI sessions, internal tabs, terminal-state reconnection, or A1-authoritative scrollback must introduce and certify the separate composed-terminal authority rather than reactivating the retired transparent attachment path.
21
21
 
22
22
  ## Current module responsibilities
23
23
 
@@ -30,20 +30,20 @@ Transparent mode has no A1-authoritative terminal surface, internal pane, virtua
30
30
  - `protocol`: additive control handshake, bounded line framing, authenticated launch-instance commands, typed stop intent, snapshots, and command results.
31
31
  - `storage`: SQLite migrations, prior-boot reconciliation, and plural launch-instance persistence. Legacy foreground rows are historical migration input and never authorize current ownership.
32
32
  - `supervisor`: endpoint identity, plural cohort ownership, per-instance reconciliation, and aggregate release shutdown coordination. It owns no terminal surface.
33
- - `transparent-terminal`: generic command resolution and direct inherited-handle child waiting below the outer launch guardian; it owns no supervisor lease.
33
+ - `pi-engine-adapter`, `pi-component-adapter`, `pi-tui-runtime-adapter`, and `pi-owned-ui-integration`: isolate pinned Pi engine and presentation knowledge behind neutral contracts; product features do not import them directly.
34
34
  - release/update/bootstrap: package-derived immutable release identity, process-guardian integrity, cohort selection, durable update transactions, rollback, and dependency-light command entry.
35
35
 
36
36
  ## Dependency direction
37
37
 
38
38
  Terminal boundaries are application-agnostic. They may not select behavior from executable names, arguments, CLI-specific environment variables, or visible text. Production code may not import private Pi distribution APIs or use a Pi-specific terminal workaround.
39
39
 
40
- The transparent path has no PTY or terminal-emulator dependency. Reintroducing `node-pty`, xterm state, custom input encoders, mode/query trackers, cadence-derived frame inference, or renderer/projection code requires an approved capability change and cannot enter transparent mode. The Rust process guardian is a lifecycle-only native boundary and is independent from the held composed terminal host.
40
+ The JavaScript product path has no PTY or terminal-emulator dependency. Reintroducing `node-pty`, xterm state, custom input encoders, mode/query trackers, cadence-derived frame inference, or renderer/projection code requires an approved capability change and cannot become a second terminal authority. The Rust process guardian is a lifecycle-only native boundary and is independent from the held composed terminal host.
41
41
 
42
- `scripts/check-architecture.mjs` enforces the structural parts of these boundaries. Cross-cutting rationale belongs here; implementation history belongs in Git and archived OpenSpec changes.
42
+ `scripts/governance/check-architecture.mjs` enforces the structural parts of these boundaries. Cross-cutting rationale belongs here; implementation history belongs in Git and archived OpenSpec changes.
43
43
 
44
44
  ## Planned multi-agent boundaries
45
45
 
46
- The workspace feature may depend on workspace contracts and the structured/terminal-host foundations. Those foundations may depend only on dependency-free workspace contracts, never on product features, launch profiles, or each other unless an approved capability adds the dependency. Explicit launch profiles and transparent fallback may not import, initialize, launch, or connect to composed terminal-host infrastructure.
46
+ The workspace feature may depend on workspace contracts and the structured/terminal-host foundations. Those foundations may depend only on dependency-free workspace contracts, never on product features, launch profiles, or each other unless an approved capability adds the dependency. Launch profiles do not import, initialize, launch, or connect to composed terminal-host infrastructure.
47
47
 
48
48
  Default future agents and composed hosts are children of the originating bare-`a1` launch instance and terminate when it closes. A process that survives command closure requires a separately approved explicit resident capability; durable identity or state recovery never implies an implicitly surviving process.
49
49
 
@@ -1,30 +1,51 @@
1
1
  # Project structure
2
2
 
3
- Every production module has one named owner. The executable owner map and allowed dependencies live in `scripts/project-structure-policy.mjs`; this document explains the conventions behind it.
3
+ Every production module has one named owner. The executable owner map and allowed dependencies live in `scripts/governance/project-structure-policy.mjs`; this document explains the conventions behind it. `npm run check:architecture` rejects production files without an owner, cross-owner private imports, and declared owners whose source root, public entry, or test root is missing.
4
4
 
5
5
  ## Production owners
6
6
 
7
7
  ```text
8
8
  src/
9
- cli/ public command helpers and dispatch
9
+ product-identity.ts centralized externally visible product identity
10
+ product-identity.json
11
+ cli/ public command parsing, capabilities, packages, and version reporting
12
+ composition/ process-level wiring of neutral contracts to concrete adapters
10
13
  features/
11
- launch/ product launch profiles and profile settings
12
- workspace/ multi-agent workspace presentation, reducer state, and persistence orchestration
14
+ launch/ launch profiles, profile paths, and runtime selection
15
+ owned-ui/ owned screens, settings application, diagnostics, and runtime lifecycle
16
+ workspace/ multi-agent presentation, reducer state, routing, and persistence orchestration
17
+ contracts/
18
+ agent-engine/ dependency-free agent engine, session, package, and capability ports
19
+ owned-ui/ dependency-free owned-session and extension UI contracts
20
+ presentation/ dependency-free component, terminal, and runtime ports
21
+ workspace/ dependency-free workspace, topology, host, and recovery contracts
22
+ integrations/
23
+ pi/
24
+ components/ pinned Pi component and theme adaptation
25
+ engine/ pinned Pi engine, settings, resource, package, and workflow integration
26
+ owned-ui/ Pi-backed owned session shell and route host
27
+ tui-runtime/ neutral presentation runtime over pinned Pi TUI
13
28
  foundation/
14
- lifecycle/ dependency-free launch/lifecycle contracts and paths
15
- protocol/ control framing and client contracts
16
- release/ immutable releases, cohorts, update, rollback, cleanup
17
- storage/ control-store persistence
18
- structured-agent-runtime/ structured/RPC handshake, event, command, and recovery semantics
19
- native-host-protocol/ bounded terminal-host identity, topology, lifecycle, and proof protocol
20
- supervision/ endpoint and foreground-lease ownership
21
- workspace-contracts/ dependency-free workspace, adapter, topology, host, and recovery contracts
22
- transparent-terminal/ exact command resolution and native attachment
29
+ launch-guardian/ authenticated launch-instance coordination
30
+ lifecycle/ dependency-free launch, process identity, and path contracts
31
+ native-host-protocol/ bounded terminal-host identity, topology, lifecycle, and proof protocol
32
+ process-containment/ verified native containment and process inspection
33
+ protocol/ authenticated control framing and client contracts
34
+ release/ immutable releases, update, rollback, cohorts, and cleanup
35
+ storage/ control-store persistence
36
+ structured-agent-runtime/ structured handshake, event, command, backpressure, and recovery semantics
37
+ supervision/ endpoint, launch-instance, and release-cohort ownership
38
+ ui/
39
+ apps/ application registry and host lifecycle
40
+ components/ vendor-neutral terminal UI primitives
41
+ settings/ owned settings declarations, resolution, migration, and persistence
23
42
  ```
24
43
 
25
- Each owner exposes `index.ts`. Imports within one owner may use private files. Imports crossing owners must use the provider's `index.ts` and follow the declared dependency DAG. Foundation modules never import product features.
44
+ Each directory owner exposes `index.ts`. Imports within one owner may use private files. Imports crossing owners must use the provider's public entry and follow the dependency DAG declared by `PROJECT_OWNERS`. `product-identity` is the sole current exception to the directory-entry convention because its public entry is `src/product-identity.ts`.
26
45
 
27
- `src/cli` is a thin public entry layer. Product policy belongs in a named feature. Shared code moves to foundation only when it is product-agnostic, has a precise contract, and has more than one real consumer. Do not create `core`, `common`, `utils`, or `misc` dumping grounds.
46
+ `src/cli` contains command policy but delegates runtime work. `src/composition` is the concrete dependency-injection boundary: it may know both neutral contracts and Pi implementations, while product features receive vendor-neutral ports. Foundation modules never import product features. Pi package knowledge remains inside the Pi adapter owners.
47
+
48
+ Shared code moves to foundation only when it is product-agnostic, has a precise contract, and has more than one real consumer. Do not create `core`, `common`, `utils`, or `misc` dumping grounds.
28
49
 
29
50
  ## Feature ownership
30
51
 
@@ -32,11 +53,11 @@ A feature owns:
32
53
 
33
54
  - its production behavior under `src/features/<name>`;
34
55
  - its public contract in `index.ts`;
35
- - its settings schema/defaults and path policy;
56
+ - its settings schema, defaults, and path policy when applicable;
36
57
  - its tests under `test/features/<name>`;
37
- - user-facing feature documentation under `docs/features/<name>.md` when the behavior needs more than README coverage.
58
+ - user-facing documentation under `docs/features/<name>.md` when README coverage is insufficient.
38
59
 
39
- Settings files are not mandatory for every feature. Add one only when the feature owns mutable policy. User settings, credentials, sessions, caches, downloaded packages, logs, and generated files never live in source folders.
60
+ Settings files are not mandatory for every feature. User settings, credentials, sessions, caches, downloaded packages, logs, and generated files never live in source folders.
40
61
 
41
62
  ## Test ownership
42
63
 
@@ -45,37 +66,39 @@ Tests mirror their production owner:
45
66
  ```text
46
67
  test/
47
68
  cli/
69
+ composition/
48
70
  features/<name>/
71
+ contracts/<name>/
49
72
  foundation/<name>/
73
+ integrations/pi/<name>/
74
+ product-identity/
50
75
  repository-governance/
76
+ ui/<name>/
51
77
  ```
52
78
 
53
- Use `.test.ts` for deterministic owner-level contracts. Use `.integration.test.ts` when the contract crosses real process, filesystem, registry, or release boundaries. Prefer the smallest independent boundary that proves the observable result; do not duplicate a stronger test or preserve historical bug-story names after the cause has a current invariant.
79
+ Use `.test.ts` for deterministic owner-level contracts. Use `.integration.test.ts` when the contract crosses real process, filesystem, registry, package, or release boundaries. A test of a foundation implementation belongs to that foundation owner's test root; a feature test may exercise the same public entry only when it proves feature-level composition.
54
80
 
55
- Physical desktop automation is not an ordinary integration test. It requires a separately authorized certification change and isolated disposable infrastructure.
81
+ Prefer the smallest independent boundary that proves the observable result. Do not duplicate a stronger test or preserve historical bug-story names after the cause has a current invariant. Physical desktop automation is not an ordinary integration test; it requires separately authorized certification and isolated disposable infrastructure.
56
82
 
57
83
  ## Repository authority
58
84
 
59
85
  The repository has one root `package.json`, `package-lock.json`, TypeScript configuration, Vitest configuration, and dependency installation. Nested manifests, lockfiles, `node_modules`, vendored package caches, logs, sessions, browser profiles, generated output, and runtime state are forbidden under production and feature trees.
60
86
 
61
- Build output belongs in ignored `dist/`; release/test evidence belongs in ignored `artifacts/`. Package contents are selected by the root manifest. Native proof code lives under `native/terminal-host/`; its Cargo build output and vendored Zig build output are ignored, and it remains a console terminal host rather than a desktop application.
87
+ Build output mirrors the production namespaces directly under ignored `dist/`, without an intermediate `src/` directory; release and test evidence belongs in ignored `.artifacts/`; temporary agent work belongs in ignored `.worktrees/` and `.builds/`. Repository tooling is grouped under `scripts/governance`, `scripts/release`, `scripts/pi`, and `scripts/development`; the few root scripts are standalone maintenance or build commands. Package contents are selected by the root manifest. The Rust process guardian and console terminal-host proof live under `native/`; Cargo output is ignored. Third-party terminal parser sources are isolated under `native/terminal-host/vendor/` and are not owned application modules.
62
88
 
63
89
  ## Documentation and comments
64
90
 
65
91
  - README explains installation, commands, and current limitations.
66
92
  - `docs/architecture` explains cross-cutting ownership and irreversible constraints.
67
- - `docs/architecture/resource-and-data-policy.md` defines bounded queues, data classes, redaction, terminal-content non-persistence, and proof acceptance rules.
68
- - `docs/architecture/terminal-host-provenance.md` records pinned terminal-component revisions, retained components, patch policy, and artifact provenance requirements.
69
- - `docs/architecture/terminal-host-spike-evidence.md` defines the mandatory in-terminal 2×2 proof workloads, measurements, and acceptance invariants.
70
- - `docs/architecture/terminal-host-proof-gate.md` defines the non-waivable stop/go acceptance policy and current pending record.
71
- - `docs/features` explains maintained user-facing feature behavior.
93
+ - `docs/features` explains maintained user-facing behavior.
94
+ - Operational and manual procedures live in focused runbooks under `docs`.
72
95
  - OpenSpec and Git carry planning and implementation history.
73
96
  - Source comments explain only non-obvious rationale, safety/security invariants, platform constraints, or public semantic contracts. Names, types, and decomposition explain normal control flow.
74
97
 
75
98
  ## Terminal capability boundary
76
99
 
77
- Transparent terminal attachment owns one foreground child and no A1 surface. It cannot retain inactive terminal state or switch among arbitrary interactive CLIs inside A1. Bare-`a1` multi-agent UX may use structured/RPC surfaces without terminal emulation, but arbitrary-CLI tabs require a separate composed-terminal capability with PTY, authoritative terminal state, rendering, input routing, inactive-surface lifecycle, reconnection, and cross-platform certification. That future capability must not silently intercept or replace the transparent path. Explicit launch profiles and transparent fallback must not import, initialize, launch, or connect to composed terminal-host infrastructure.
100
+ All interactive profiles use the owned rendering pipeline. Bare `a1` exposes A1-owned surfaces; `a1 pi` and `a1 sandbox` withhold those surfaces while using their respective Pi profile roots. The retired transparent attachment owner is not part of the production tree or dependency map.
78
101
 
79
- Composed terminals use a console terminal host that runs inside the user's existing terminal. The host owns pseudoterminal bytes, retained terminal state, keyboard/text/mouse/IME encoding, frame scheduling, and presentation to the containing terminal. A1's JavaScript control plane may exchange typed identity, topology revision, capability, lifecycle, status, and recovery messages only; it must not relay terminal output, per-event child input, or rendered cells. A desktop-native window, GPU renderer, Ghostty GUI runtime, Winghostty Win32 runtime, Metal, GTK, and AppKit are postponed and are not required for the in-terminal product.
102
+ The current JavaScript control plane does not provide arbitrary-CLI tabs. Such tabs require the separately bounded console terminal host to own PTYs, authoritative terminal state, rendering, input routing, inactive-surface lifecycle, and reconnection. JavaScript may exchange typed identity, topology revision, capability, lifecycle, status, and recovery messages only; it must not relay terminal output, per-event child input, or rendered cells.
80
103
 
81
- A tab owns a revisioned split tree. Each leaf pane references one PTY-backed terminal session. Structured/RPC agents remain semantically separate and may not derive state from ANSI text, terminal timing, or screen content. Native source ownership lives outside `src/` when introduced; packaged host selection is governed by release/package owners. Existing architecture tests reject terminal-host hot-path bytes in JavaScript protocol code, terminal inference in structured runtime code, composed imports from explicit launch modes, and replacement lightweight terminal parsers/renderers.
104
+ Structured agents remain semantically separate and use typed events, commands, snapshots, cancellation, and recovery evidence. They must not derive state from ANSI text, terminal timing, or screen content. Native source ownership remains outside `src/`; packaged host selection is governed by release/package owners. Architecture tests reject terminal-host hot-path bytes in JavaScript protocols, terminal inference in structured runtimes, and replacement lightweight terminal parsers or renderers.
@@ -17,7 +17,7 @@ The repository has one root package manifest, lockfile, dependency tree, TypeScr
17
17
 
18
18
  ## Platform policy
19
19
 
20
- Transparent launch uses inherited native terminal/process facilities on Windows, Linux, and macOS. The architecture is platform-neutral, but stable parity/support claims are platform-specific and require deferred physical certification against exact package bytes. An uncertified `next` preview is not evidence of stable cross-platform support.
20
+ The owned rendering pipeline uses the containing terminal on Windows, Linux, and macOS. The architecture is platform-neutral, but stable presentation/support claims are platform-specific and require deferred physical certification against exact package bytes. An uncertified development preview is not evidence of stable cross-platform support.
21
21
 
22
22
  Physical desktop automation is absent from the active repository baseline. Any future implementation must run only on dedicated disposable workers or VMs with exclusive interactive desktops and exact process ownership.
23
23
 
@@ -27,7 +27,7 @@ The published package contains:
27
27
 
28
28
  - the sole public `a1` command;
29
29
  - the internal supervisor entry;
30
- - immutable release/bootstrap, lifecycle, protocol, storage, update, and transparent-launch modules;
30
+ - immutable release/bootstrap, lifecycle, protocol, storage, update, owned-UI, and Pi-adapter modules;
31
31
  - current user and architecture documentation.
32
32
 
33
33
  It contains no PTY, terminal emulator, browser/desktop GUI, custom renderer, input translator, physical automation driver, or generated runtime data.
@@ -49,7 +49,7 @@ npm test
49
49
  npm run test:release
50
50
  ```
51
51
 
52
- `check:deprecated` verifies the complete lockfile graph against registry metadata. The release gate exercises durable stable/preview update transitions and writes an ignored machine-readable verdict under `artifacts/release-verdicts/`.
52
+ `check:deprecated` verifies the complete lockfile graph against registry metadata. The release gate exercises durable stable/development update transitions and writes an ignored machine-readable verdict under `.artifacts/release-verdicts/`.
53
53
 
54
54
  ## Pi maintenance workflows
55
55
 
@@ -67,11 +67,11 @@ npm run sync:pi-ui
67
67
 
68
68
  This optional, mutating presentation-maintenance workflow regenerates component and event-frame parity evidence when maintainers deliberately adopt upstream UI changes. Review generated diffs, attribution, and source-ledger records before committing them. It is never an engine candidate acceptance gate and is not run by `check`, `prepack`, or release publication.
69
69
 
70
- Presentation acceptance is the reader comparing `a1 pi` with pinned Pi. `node scripts/check-pinned-pi-source-ledger.mjs` validates accepted provenance; its `--engine-only` mode validates the ownership partition without comparing private upstream source.
70
+ Presentation acceptance is the reader comparing `a1 pi` with pinned Pi. `node scripts/governance/check-pinned-pi-source-ledger.mjs` validates accepted provenance; its `--engine-only` mode validates the ownership partition without comparing private upstream source.
71
71
 
72
72
  ## Publication
73
73
 
74
- One workflow publishes both channels: `.github/workflows/release.yml`, triggered by every push to `develop`. What the pushed commit declares decides the channel: a prerelease version publishes a preview under npm `next` at a `-dev.<short commit>` version stamped at publish time, and a stable version publishes under npm `latest`. Both pack once, validate those exact bytes on Windows, Linux, and macOS, and publish with provenance from the `npm-publish` environment. The publisher never rebuilds, a preview never changes `latest`, and the release tag, GitHub Release, and `master` are written only after the registry has the package.
74
+ One workflow publishes both channels: `.github/workflows/release.yml`. Pushes do not publish. Nightly development verification runs at `03:17 UTC`; `npm run develop` explicitly requests a numbered preview and `npm run release` explicitly requests stable publication after its version pull request merges. A preview is stamped as `-dev.<merged pull-request number>` and uses npm `next` only as an internal dist-tag. New candidates pack once and are validated on Windows, Linux, and macOS; a repeated nightly verifies the exact immutable registry tarball. All publication uses provenance from the `npm-publish` environment, a preview never changes `latest`, and the stable tag, GitHub Release, and `master` are written only after npm has the package. One global non-cancelling concurrency group serializes the final registry check.
75
75
 
76
76
  `docs/ci-release-runbook.md` is the operational reference.
77
77
 
@@ -5,107 +5,104 @@ GitHub Actions is the only automation platform. Three refs are protected:
5
5
  | Ref | Protection | Produced by |
6
6
  | --- | --- | --- |
7
7
  | `develop` | `Development validation required` on every pull request | `.github/workflows/ci.yml` |
8
- | `master` | cannot be deleted or force-updated | ruleset only |
9
- | `refs/tags/v*` | cannot be deleted or moved | ruleset only |
8
+ | `master` | cannot be deleted or force-updated | stable publication |
9
+ | `refs/tags/v*` | cannot be deleted or moved | stable publication |
10
10
 
11
- Publishing is one workflow, `.github/workflows/release.yml`, triggered by pushes
12
- rather than dispatched by hand.
11
+ `.github/workflows/release.yml` is the only publisher. A push publishes neither
12
+ channel. The workflow starts at `03:17 UTC` for nightly development verification,
13
+ or by explicit dispatch from `npm run develop` or `npm run release`.
13
14
 
14
- `develop` is where work lands. `master` records what the npm `latest` tag serves:
15
- the release fast-forwards it to the commit it published, and nothing else ever
16
- writes it. There is no promotion to arrange and nothing to keep in sync — `master`
17
- is an effect of publishing, not a step before it.
15
+ `develop` is where work lands. `master` records what npm `latest` serves and is an
16
+ effect of stable publication, not a trigger.
18
17
 
19
- ## How much validation runs when
18
+ ## Validation by trigger
20
19
 
21
- | Change | Validation |
20
+ | Trigger | Validation and outcome |
22
21
  | --- | --- |
23
- | Docs or specs only | OpenSpec strict lint, nothing else |
24
- | Any code PR into `develop` | Fast tier: typecheck, architecture checks, unit/contract tests |
25
- | Preview publish (`next`) | Fast tier + package gates on Windows, Linux, and macOS |
26
- | Stable publish (`latest`) | Complete suite on Windows, Linux, and macOS |
22
+ | Pull request into `develop` | Fast required validation; docs/spec-only changes use strict OpenSpec validation |
23
+ | `npm run develop` | Preview package gates on Windows, Linux, and macOS; an existing numbered preview is an early successful no-op |
24
+ | Nightly at `03:17 UTC` | Complete non-physical suite on Windows, Linux, and macOS, every night |
25
+ | `npm run release -- ...` | Complete exact-byte stable gates, then npm `latest`, tag, GitHub Release, and `master` |
26
+ | `.github/workflows/full-regression.yml` | Additional on-demand complete regression without publication authority |
27
27
 
28
- Need more coverage for something risky? Run the **Full regression** workflow on
29
- demand.
28
+ ## Numbered development previews
30
29
 
31
- ## Previews publish themselves
30
+ A merge or push to `develop` does not publish by itself. To request a deliberate
31
+ preview from any authorized checkout:
32
32
 
33
- Every push to `develop` publishes a preview to the npm `next` tag. Nothing to
34
- dispatch and nothing to approve.
33
+ ```sh
34
+ npm run develop
35
+ ```
36
+
37
+ The command fetches authoritative `origin/develop`, resolves the unique merged pull
38
+ request associated with that exact commit through GitHub, and derives
39
+ `<major.minor.patch>-dev.<pull-request number>`. Thus GitHub's `develop (#107)`
40
+ source produces `0.1.8-dev.107`. It first checks npm; if the immutable version
41
+ already exists it reports that version without dispatching package work. Otherwise
42
+ it dispatches GitHub Actions, waits, and reports the published version. It never
43
+ builds or uploads npm bytes from the workstation.
44
+
45
+ Nightly resolves the same current `origin/develop` source. It always runs complete
46
+ verification even if source has not changed. For a new number it packs once and
47
+ runs the suite against that final-version tarball before publication. For an
48
+ existing number it downloads the exact npm tarball and runs package/update gates
49
+ against those registry bytes; publication is then a successful no-op.
50
+
51
+ Manual and nightly runs share one non-cancelling concurrency group. Their final
52
+ registry check is serialized, so overlapping requests can produce only one publish
53
+ and one successful existing-version no-op. A development publication moves npm's
54
+ internal `next` dist-tag and never moves `latest`.
55
+
56
+ Users install previews with public `develop` terminology:
35
57
 
36
- The version is stamped at publish time — `<major.minor.patch>-dev.<short commit>`,
37
- the base taken from whatever `package.json` declares and the suffix from the commit
38
- being published and is never written back to the repository. An installed preview
39
- therefore names the exact source it came from, and rebuilding a commit produces the
40
- same version rather than a new one. That suffix is also how a specific preview is
41
- installed: `a1 update:<commit>` resolves it against the published list and
42
- refuses a commit that was never published. `develop` therefore carries one open prerelease version between
43
- releases, and no commit is ever spent on a preview.
58
+ ```sh
59
+ a1 update:develop # current development channel
60
+ a1 update:107 # numbered preview
61
+ a1 update:0.1.8-dev.107 # exact full preview version
62
+ ```
44
63
 
45
- One consequence worth knowing: a push that would republish an existing version
46
- fails early, before anything is packed.
64
+ `a1 update:next` is removed and redirects to `a1 update:develop` without registry
65
+ or runtime work.
47
66
 
48
67
  ## Cutting a stable release
49
68
 
50
- One command, from a clean `develop` that matches its remote:
69
+ From a clean `develop` matching its remote:
51
70
 
52
71
  ```sh
53
72
  npm run release -- patch # or minor, major, or an exact x.y.z
54
73
  ```
55
74
 
56
- It lands `x.y.z` on `develop` through a pull request that merges itself, waits for
57
- that publication to succeed, and then lands `x.y.(z+1)-dev` so previews resume
58
- immediately. It publishes nothing itself and creates no tag.
59
-
60
- Landing the stable version is what publishes. The same pipeline sees a commit
61
- declaring a stable version and runs its stable form: build the process guardian on
62
- all three platforms, pack once, run the complete suite against those exact bytes on
63
- all three platforms, publish to npm `latest` with provenance from the
64
- `npm-publish` environment, and only then write the tag `vx.y.z`, record the GitHub
65
- Release, and fast-forward `master`.
75
+ The command lands `x.y.z` through its version pull request, explicitly dispatches
76
+ stable publication for that exact current `origin/develop` commit, and waits. Only
77
+ after success does it land `x.y.(z+1)-dev`.
66
78
 
67
- That order is the point. A release that fails leaves no tag, no release, and no
68
- moved branch only a red run. Nothing ever advertises a version that does not
69
- exist on the registry.
79
+ Stable publication builds the process guardian on all supported platforms, packs
80
+ once, runs the complete suite against those exact bytes on Windows, Linux, and
81
+ macOS, publishes to npm `latest` with provenance from the `npm-publish`
82
+ environment, and then writes `vx.y.z`, records the GitHub Release, and fast-forwards
83
+ `master`. A push of the stable version does not publish it.
70
84
 
71
85
  Rules that do not bend:
72
86
 
73
- - **Never upload locally rebuilt bytes.** The publisher uploads the artifact the
74
- validation ran against, and re-checks its digest before and after.
75
- - **Never route around validation by rebuilding inside a publisher.** The publish
76
- job has no checkout of dependencies, no build, and no pack step.
77
- - **Never move a release tag.** A wrong tag is superseded by the next version, not
78
- repointed. The tag is written by the publication itself, so it exists only for
79
- versions that shipped.
87
+ - **Never upload locally rebuilt bytes.** The publisher uploads the artifact the validation ran against and checks its digest before and after.
88
+ - **Never route around validation by rebuilding inside a publisher.** The publish job receives the packed artifact and does not install dependencies, build, or pack.
89
+ - **Never move a release tag.** A wrong tag is superseded by the next version, not repointed.
80
90
 
81
91
  ## When something fails
82
92
 
83
- - **PR validation fails:** fix the code and push. Do not mark a failed tier optional.
84
- - **Preview publish fails:** fix and push again; the next push publishes the next
85
- run number. Nothing needs cleaning up.
86
- - **Stable publish fails:** nothing was recorded no tag, no release, no moved
87
- branch. Fix the cause and release the next version. The failed version number is
88
- spent, because `develop` has already moved past it.
89
- - **Stable publish is uncertain after npm accepted the bytes:** stop. Check the
90
- registry for the version, tag, and digest. Repair a dist-tag only as a separate
91
- reviewed operation never republish.
92
-
93
- ## Why the ruleset looks the way it does
94
-
95
- One person maintains this repository, and GitHub does not let a PR author approve
96
- their own PR. Requiring even one approval would deadlock the authorized
97
- solo-maintainer path no PR could ever merge. So the `develop` ruleset requires a
98
- pull request, a green required check, and resolved review threads, but sets required
99
- approving reviews to zero. It does not require the branch to be up to date: once a
100
- PR is green it merges even if unrelated work landed first, with no re-validation
101
- loop.
102
-
103
- The `master` and tag rulesets carry no checks at all. Both only ever receive a commit
104
- that has already been validated and published, so what matters about them is that
105
- neither can be rewritten. Requiring a pull request on `master` would stop the release
106
- from recording itself there.
107
-
108
- Do not add a direct-push bypass as a shortcut, and never weaken the force-push or
109
- deletion protection. Ruleset mutation is a separate administrative operation: run
110
- `node scripts/check-github-rulesets.mjs` to see the diff, and apply only when a
111
- maintainer explicitly confirms with `--apply --confirm apply-a1-ci-rulesets`.
93
+ - **PR validation fails:** fix the code and push; do not mark a failed tier optional.
94
+ - **Development publication fails:** fix the cause and rerun `npm run develop`; an npm version that already exists is never overwritten.
95
+ - **Stable publication fails before npm accepts bytes:** no tag, release, or moved branch exists. Fix the cause and release the next version.
96
+ - **Stable publication is uncertain after npm accepted bytes:** stop and inspect registry version, digest, tag, and release. Never republish immutable bytes.
97
+
98
+ ## Branch protection rationale
99
+
100
+ One person maintains this repository, and a PR author cannot approve their own PR.
101
+ The `develop` ruleset therefore requires a pull request, a green required check,
102
+ and resolved review threads, but zero approving reviews. `master` and release tags
103
+ are written only after publication and are protected from force-push, movement, and
104
+ deletion.
105
+
106
+ Do not add direct-push bypasses. Ruleset mutation remains a separate administrative
107
+ operation: inspect with `node scripts/governance/check-github-rulesets.mjs`, and apply only
108
+ with explicit maintainer confirmation.
@@ -5,10 +5,10 @@
5
5
  | Command | Purpose | Pi user profile |
6
6
  |---|---|---|
7
7
  | `a1` | A1-owned Pi-compatible UI | `~/.a1/agent` |
8
- | `a1 pi` | Untouched vanilla Pi fallback and comparison oracle | ordinary `~/.pi/agent` |
9
- | `a1 sandbox` | Unchanged isolated vanilla Pi profile for experiments | `~/.a1/sandbox` |
8
+ | `a1 pi` | Pi-compatible comparison surface using the ordinary Pi profile | ordinary `~/.pi/agent` |
9
+ | `a1 sandbox` | Pi-compatible surface using an isolated profile for experiments | `~/.a1/sandbox` |
10
10
 
11
- `a1 pi` and `a1 sandbox` are development instruments: one compares A1 against pinned Pi, the other tries resources against an isolated profile. Prerelease builds — what `a1 update:next` installs — expose them. A release build does not, and does not recognize the words: what it exposes is bare `a1` plus the maintenance and package commands. Working in this repository is unaffected, because `npm start:pi` and `npm run start:sandbox` prepare the profile and launch directly rather than through the command line.
11
+ `a1 pi` and `a1 sandbox` are development instruments: one compares A1 against pinned Pi, the other tries resources against an isolated profile. Prerelease builds — what `a1 update:develop` or `a1 update:<number>` installs — expose them. A release build does not, and does not recognize the words: what it exposes is bare `a1` plus the maintenance and package commands. Working in this repository is unaffected, because `npm start:pi` and `npm run start:sandbox` prepare the profile and launch directly rather than through the command line.
12
12
 
13
13
  There is no `a1 agent` command. The former `a1 ui` subcommand is removed. Bare `a1` is the owned agent product surface and remains the entry point when multi-agent UX is introduced.
14
14
 
@@ -31,21 +31,19 @@ npm/
31
31
 
32
32
  Run Pi’s normal `/login` independently in each profile that needs stored authentication. Provider credentials supplied through supported environment variables remain available to Pi, but profile authentication files never fall back to another root automatically.
33
33
 
34
- ## Vanilla Pi
34
+ ## Pi comparison profile
35
35
 
36
- `a1 pi` bypasses the A1-owned UI and launches the untouched pinned Pi CLI. It also removes A1’s Pi configuration-root override, so Pi uses its normal `~/.pi/agent` settings, authentication, sessions, resources, packages, and trust decisions. This is both the comparison oracle and the recovery fallback when diagnosing the owned UI.
36
+ `a1 pi` uses the same A1-owned rendering and input pipeline as bare `a1`, but withholds A1-specific screens and removes A1’s Pi configuration-root override. The pinned Pi engine therefore uses its normal `~/.pi/agent` settings, authentication, sessions, resources, packages, and trust decisions. This is the comparison and recovery profile when diagnosing the product surface; running the standalone `pi` command remains the independent upstream reference.
37
37
 
38
38
  ## Sandbox profile
39
39
 
40
- `a1 sandbox` remains a direct vanilla Pi launch. It uses `~/.a1/sandbox` and starts Pi with its supported one-run `--no-approve` trust override. Project-local executable settings and resources are ignored for that run; sandbox-owned resources still load from the selected user profile.
40
+ `a1 sandbox` uses the shared owned rendering pipeline with A1-specific screens withheld. It reads `~/.a1/sandbox` and applies Pi's supported one-run no-approval trust policy. Project-local executable settings and resources are ignored for that run; sandbox-owned resources still load from the selected user profile.
41
41
 
42
42
  “Sandbox” means Pi profile and executable-resource isolation. It is **not** an operating-system security boundary. It does not restrict filesystem access, processes, network access, environment credentials, shell tools, or commands executed by Pi.
43
43
 
44
44
  ## Terminal behavior
45
45
 
46
- Bare `a1` runs the A1-owned full-viewport TUI over public Pi engine, component, and terminal APIs. A1 owns composition, input routing, modal focus, selection behavior, scrolling, and restoration without inserting a PTY or terminal-byte relay. Its default presentation is pinned to vanilla Pi parity; structured tabs and A1-specific visual customization are not enabled.
47
-
48
- `a1 pi` and `a1 sandbox` retain transparent direct attachment. In those profiles, untouched Pi and the physical terminal own rendering, input, selection, clipboard, scrollback, and terminal modes; A1 owns only per-invocation process containment and lifecycle evidence.
46
+ Every profile runs the A1-owned full-viewport TUI over pinned Pi engine, component, and terminal APIs. A1 owns composition, input routing, modal focus, selection behavior, scrolling, and restoration without inserting a PTY or terminal-byte relay. Bare `a1` enables A1-owned screens; `a1 pi` and `a1 sandbox` use the same pipeline with those screens withheld. Structured tabs and A1-specific visual customization are not enabled.
49
47
 
50
48
  ## Concurrent instance lifecycle
51
49