@bongos/core 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1142) hide show
  1. package/.bongos-core.json +5727 -0
  2. package/.claude/skills/blocker-review/SKILL.md +91 -0
  3. package/.claude/skills/blocker-solve/SKILL.md +96 -0
  4. package/.claude/skills/builder-backup/SKILL.md +54 -0
  5. package/.claude/skills/builder-box/SKILL.md +45 -0
  6. package/.claude/skills/builder-claim/SKILL.md +76 -0
  7. package/.claude/skills/builder-connect/SKILL.md +59 -0
  8. package/.claude/skills/builder-cost/SKILL.md +47 -0
  9. package/.claude/skills/builder-end/SKILL.md +81 -0
  10. package/.claude/skills/builder-exit/SKILL.md +88 -0
  11. package/.claude/skills/builder-key/SKILL.md +40 -0
  12. package/.claude/skills/builder-reauth/SKILL.md +50 -0
  13. package/.claude/skills/builder-redteam/SKILL.md +109 -0
  14. package/.claude/skills/builder-release/SKILL.md +41 -0
  15. package/.claude/skills/builder-setup/SKILL.md +62 -0
  16. package/.claude/skills/builder-ship/SKILL.md +79 -0
  17. package/.claude/skills/builder-stage/SKILL.md +51 -0
  18. package/.claude/skills/builder-start/SKILL.md +46 -0
  19. package/.claude/skills/close-box/SKILL.md +43 -0
  20. package/.claude/skills/design-sync/SKILL.md +69 -0
  21. package/.claude/skills/dev/SKILL.md +49 -0
  22. package/.claude/skills/feedback/SKILL.md +32 -0
  23. package/.claude/skills/figma-design-sync/SKILL.md +74 -0
  24. package/.claude/skills/goal-review/SKILL.md +89 -0
  25. package/.claude/skills/idea-triage/SKILL.md +144 -0
  26. package/.claude/skills/ideate/SKILL.md +82 -0
  27. package/.claude/skills/merge-mode/SKILL.md +169 -0
  28. package/.claude/skills/new-project/SKILL.md +108 -0
  29. package/.claude/skills/otb-character-review/SKILL.md +71 -0
  30. package/.claude/skills/otb-design-review/SKILL.md +47 -0
  31. package/.claude/skills/otb-feedback-capture/SKILL.md +45 -0
  32. package/.claude/skills/otb-figma-sync/SKILL.md +54 -0
  33. package/.claude/skills/otb-tile-generate/SKILL.md +45 -0
  34. package/.claude/skills/paint/SKILL.md +70 -0
  35. package/.claude/skills/planning-session/SKILL.md +299 -0
  36. package/.claude/skills/priority-session/SKILL.md +134 -0
  37. package/.claude/skills/read-session-export/SKILL.md +58 -0
  38. package/.claude/skills/recall/SKILL.md +52 -0
  39. package/.claude/skills/session-handoff/SKILL.md +46 -0
  40. package/.claude/skills/status/SKILL.md +33 -0
  41. package/.devcontainer/Dockerfile +69 -0
  42. package/.devcontainer/README.md +73 -0
  43. package/.devcontainer/devcontainer-lock.json +19 -0
  44. package/.devcontainer/devcontainer.json +93 -0
  45. package/.devcontainer/healthcheck.sh +84 -0
  46. package/.devcontainer/init-firewall.sh +198 -0
  47. package/.devcontainer/post-create.sh +153 -0
  48. package/.dockerignore +36 -0
  49. package/.env.local.example +32 -0
  50. package/.gitattributes +83 -0
  51. package/.gitignore +91 -0
  52. package/CLAUDE.md +242 -0
  53. package/CODE_OF_CONDUCT.md +46 -0
  54. package/CONTRIBUTING.md +51 -0
  55. package/Dockerfile +46 -0
  56. package/GOVERNANCE.md +44 -0
  57. package/LICENSE +661 -0
  58. package/README.md +88 -0
  59. package/bin/bongos.js +222 -0
  60. package/clients/bongos-client/README.md +48 -0
  61. package/clients/bongos-client/bongos-client.global.js +617 -0
  62. package/clients/bongos-client/examples/hello-world.mjs +62 -0
  63. package/clients/bongos-client/index.cjs +619 -0
  64. package/clients/bongos-client/index.d.ts +793 -0
  65. package/clients/bongos-client/index.mjs +614 -0
  66. package/clients/bongos-client/package.json +32 -0
  67. package/config/branding.neutral.json +60 -0
  68. package/config/design-tokens.neutral.json +51 -0
  69. package/config/design-tokens.schema.json +96 -0
  70. package/config/modules.neutral.json +9 -0
  71. package/docker-compose.yml +52 -0
  72. package/docker-entrypoint.sh +30 -0
  73. package/docs/adr/0001-stack-choice-single-vps.md +45 -0
  74. package/docs/adr/0002-digitalocean-over-hetzner.md +27 -0
  75. package/docs/adr/0003-cloudflare-origin-cert-over-letsencrypt.md +35 -0
  76. package/docs/adr/0004-amazonprimea-name-and-trademark-acceptance.md +45 -0
  77. package/docs/adr/0005-invisible-other-players-in-v1.md +37 -0
  78. package/docs/adr/0006-singleton-worldroom-plus-queueroom.md +30 -0
  79. package/docs/adr/0007-persistent-identity-via-localstorage-uuid.md +31 -0
  80. package/docs/adr/0008-family-based-tile-generation.md +86 -0
  81. package/docs/adr/0008-google-chat-oauth-user-auth.md +37 -0
  82. package/docs/adr/0009-autotile-architecture.md +181 -0
  83. package/docs/adr/0010-pms-architecture.md +70 -0
  84. package/docs/adr/0011-terrain-id-rendering-model.md +174 -0
  85. package/docs/adr/0012-ground-object-cell-split.md +208 -0
  86. package/docs/adr/0013-paths-as-object-overlays-with-autotile-dispatch.md +158 -0
  87. package/docs/adr/0014-families-canonical-over-vocabulary.md +103 -0
  88. package/docs/adr/0015-task-dependencies-and-auto-promotion.md +125 -0
  89. package/docs/adr/0016-trust-boundary-server-enforced-permissions.md +132 -0
  90. package/docs/adr/0017-code-simplification-and-repo-cleanliness.md +74 -0
  91. package/docs/adr/0018-three-rank-model-goes-live.md +97 -0
  92. package/docs/adr/0019-red-team-bounty-payout-table.md +52 -0
  93. package/docs/adr/0020-security-model-public-stub.md +70 -0
  94. package/docs/adr/0021-per-builder-skill-model-preferences.md +99 -0
  95. package/docs/adr/0022-secrets-policy.md +124 -0
  96. package/docs/adr/0023-kind-multipliers-and-idea-bonus.md +118 -0
  97. package/docs/adr/0024-cloneable-repo-local-first-memory.md +277 -0
  98. package/docs/adr/0024-multi-agent-system-architecture.md +125 -0
  99. package/docs/adr/0025-offsite-backup-vendor-digitalocean-spaces.md +59 -0
  100. package/docs/adr/0025-structured-criterion-task-link.md +44 -0
  101. package/docs/adr/0026-bfg-memory-hygiene-and-cross-builder-learning.md +117 -0
  102. package/docs/adr/0027-bfg-session-inefficiency-evaluator.md +170 -0
  103. package/docs/adr/0028-honest-llm-spend-accounting.md +109 -0
  104. package/docs/adr/0029-status-page-outage-resilience.md +59 -0
  105. package/docs/adr/0030-builders-hall-live-updates.md +59 -0
  106. package/docs/adr/0031-cloud-dev-environments-for-builders.md +222 -0
  107. package/docs/adr/0032-discord-mirror-of-gds.md +50 -0
  108. package/docs/adr/0033-discord-bot-service-principal.md +82 -0
  109. package/docs/adr/0034-thetes-graduated-newcomer-rank.md +53 -0
  110. package/docs/adr/0035-builder-onboarding-three-paths.md +128 -0
  111. package/docs/adr/0036-builders-subdomain-and-ui-reorg.md +40 -0
  112. package/docs/adr/0037-discord-channel-management.md +51 -0
  113. package/docs/adr/0038-chromebook-ttyd-cloudflare-tunnel.md +111 -0
  114. package/docs/adr/0039-setup-first-onboarding-ux.md +49 -0
  115. package/docs/adr/0040-remote-control-default-browser-onramp.md +47 -0
  116. package/docs/adr/0041-temporary-grader-bypass-killswitch.md +40 -0
  117. package/docs/adr/0042-builder-self-deploy-ci-auto-merge.md +82 -0
  118. package/docs/adr/0043-git-ssh-trust-boundary-and-rank-floor-on-permission-paths.md +74 -0
  119. package/docs/adr/0044-mediterranean-palette-replacement.md +73 -0
  120. package/docs/adr/0044-per-box-live-game-preview.md +57 -0
  121. package/docs/adr/0045-devbox-desktop-app.md +133 -0
  122. package/docs/adr/0046-sandbox-first-review-gate.md +72 -0
  123. package/docs/adr/0047-discord-bugs-intake-anti-abuse.md +36 -0
  124. package/docs/adr/0048-works-in-progress-ia-split.md +32 -0
  125. package/docs/adr/0049-split-parallel-safety-contract.md +46 -0
  126. package/docs/adr/0050-device-flow-admission-invite-gated-by-default.md +43 -0
  127. package/docs/adr/0051-full-session-transcript-corpus.md +57 -0
  128. package/docs/adr/0052-sandbox-for-everyone-game-only-preview.md +70 -0
  129. package/docs/adr/0053-scoped-dev-box-session.md +55 -0
  130. package/docs/adr/0054-session-token-reward-cost-plus.md +63 -0
  131. package/docs/adr/0055-server-mediated-branch-publish.md +47 -0
  132. package/docs/adr/0056-prod-deploy-script-mirror-and-healthcheck-retry.md +62 -0
  133. package/docs/adr/0057-container-cost-ledger.md +28 -0
  134. package/docs/adr/0057-discord-archon-approval-channels.md +64 -0
  135. package/docs/adr/0058-automatic-gate-surface-gatekeeper.md +64 -0
  136. package/docs/adr/0059-single-approval-remove-devbox-approval-gate.md +37 -0
  137. package/docs/adr/0060-gds-retrieval-layer.md +97 -0
  138. package/docs/adr/0061-context-layer-decomposition.md +61 -0
  139. package/docs/adr/0062-medusa-instance-model-decoupling.md +107 -0
  140. package/docs/adr/0063-generated-repo-map-symbol-skeleton.md +44 -0
  141. package/docs/adr/0064-rename-medusa-to-cloud-bongos.md +49 -0
  142. package/docs/adr/0065-agpl-nonprofit-ai-first-governance.md +69 -0
  143. package/docs/adr/0066-generated-file-map-sections.md +51 -0
  144. package/docs/adr/0067-session-start-fast-forward-pull.md +43 -0
  145. package/docs/adr/0068-shared-art-key-for-newcomers.md +38 -0
  146. package/docs/adr/0069-hall-live-channel-sse-decouple.md +35 -0
  147. package/docs/adr/0070-deterministic-session-card-delivery.md +44 -0
  148. package/docs/adr/0071-box-confirm-before-destroyed-and-drift-reconcile.md +59 -0
  149. package/docs/adr/0072-bongos-app-mac-signed-first-windows-deferred.md +35 -0
  150. package/docs/adr/0072-dev-box-code-staleness-visibility.md +39 -0
  151. package/docs/adr/0073-builder-needs-signal-and-byok-gemini-key.md +64 -0
  152. package/docs/adr/0073-secrets-scan-exclude-uri-detector.md +37 -0
  153. package/docs/adr/0074-memory-map-stays-light.md +32 -0
  154. package/docs/adr/0075-per-system-cost-attribution.md +37 -0
  155. package/docs/adr/0076-in-session-deterministic-compaction.md +58 -0
  156. package/docs/adr/0077-content-addressed-llm-cache.md +32 -0
  157. package/docs/adr/0078-deterministic-first-cron.md +48 -0
  158. package/docs/adr/0079-value-gated-autonomous-engagement.md +39 -0
  159. package/docs/adr/0080-llm-cache-api-transport-and-trust-model.md +46 -0
  160. package/docs/adr/0081-tool-agnostic-design-layer.md +62 -0
  161. package/docs/adr/0082-productized-key-storage-provisioning.md +32 -0
  162. package/docs/adr/0082-server-side-merge-conflict-auto-resolution.md +55 -0
  163. package/docs/adr/0083-modular-architecture-strangler-build-plan.md +143 -0
  164. package/docs/adr/0084-auto-derived-per-task-rank-floor.md +86 -0
  165. package/docs/adr/0085-remove-default-per-builder-spend-cap.md +39 -0
  166. package/docs/adr/0086-goal-scoped-work-hierarchy.md +123 -0
  167. package/docs/adr/0087-bongos-app-architecture-and-handoff-contract.md +49 -0
  168. package/docs/adr/0087-compete-on-governance-not-tooling-cursor.md +65 -0
  169. package/docs/adr/0088-consistent-character-generative-animation.md +169 -0
  170. package/docs/adr/0089-modular-multi-model-adversarial-grader.md +179 -0
  171. package/docs/adr/0090-metic-task-authoring.md +73 -0
  172. package/docs/adr/0091-bounding-the-kernel-and-db-carve.md +106 -0
  173. package/docs/adr/0092-hosting-module-and-on-prem-target.md +117 -0
  174. package/docs/adr/0093-tranche-2-core-carve-sequence.md +72 -0
  175. package/docs/adr/0094-repo-atlas-self-drawing-codebase-map.md +49 -0
  176. package/docs/adr/0095-borrowed-memory-and-retrieval-concepts.md +65 -0
  177. package/docs/adr/0095-cross-agent-context-management.md +58 -0
  178. package/docs/adr/0096-require-reward-before-workable.md +209 -0
  179. package/docs/adr/0097-one-active-claim-per-session-and-worktree-binding.md +46 -0
  180. package/docs/adr/0097-retroactive-reward-backfill.md +124 -0
  181. package/docs/adr/0098-public-mirror-publish-manifest.md +92 -0
  182. package/docs/adr/0099-delayed-redacted-mirror-export.md +55 -0
  183. package/docs/adr/0100-two-repo-instance-model.md +60 -0
  184. package/docs/adr/0101-goal-hierarchy-phase-5-judge-membership-reward.md +90 -0
  185. package/docs/adr/0102-finish-bounding-the-kernel.md +36 -0
  186. package/docs/adr/0103-core-first-extraction-cloud-bongos-trunk.md +70 -0
  187. package/docs/adr/0103-gdsv4-bongos-consolidation.md +28 -0
  188. package/docs/adr/0104-trust-gds-api-channel-in-auto-mode.md +42 -0
  189. package/docs/adr/0105-instance-seed-migrations-out-of-core.md +47 -0
  190. package/docs/adr/0106-goal-owner-manager-authority.md +84 -0
  191. package/docs/adr/0107-module-upstreaming-contribution-to-core-catalog.md +83 -0
  192. package/docs/adr/0108-instance-composition-configurable-root.md +87 -0
  193. package/docs/adr/0109-self-describing-openapi-and-hosted-docs.md +44 -0
  194. package/docs/adr/0110-untrack-whole-file-generated-nav-docs.md +49 -0
  195. package/docs/adr/0111-instance-hosting-provisioning-module.md +135 -0
  196. package/docs/adr/0112-private-goals-invitations-join-requests.md +72 -0
  197. package/docs/adr/0113-sandbox-studio-descope-superseded-by-0044-0052.md +41 -0
  198. package/docs/adr/0114-instance-docs-discovery-contract.md +32 -0
  199. package/docs/adr/0115-scheduled-routines-portability.md +31 -0
  200. package/docs/adr/0116-api-error-envelope-and-code-taxonomy.md +62 -0
  201. package/docs/adr/0117-api-versioning-and-deprecation-policy.md +50 -0
  202. package/docs/adr/0118-api-contract-source-of-truth-code-first.md +47 -0
  203. package/docs/adr/0119-api-pagination-contract.md +34 -0
  204. package/docs/adr/0120-pay-on-land-and-builder-owned-rebase-gate.md +108 -0
  205. package/docs/adr/0121-greenfield-vs-brownfield-onboarding-adopt-existing-repo.md +97 -0
  206. package/docs/adr/0122-onboarding-diagram-renders-deploy-rendered-off-git.md +43 -0
  207. package/docs/adr/0123-box-idle-sweep-autosave-before-destroy.md +36 -0
  208. package/docs/adr/0124-typed-api-response-bodies.md +37 -0
  209. package/docs/adr/0125-control-plane-scaffolds-standalone-instance-repo.md +36 -0
  210. package/docs/adr/0126-dedicated-cloudbongos-control-plane-droplet.md +30 -0
  211. package/docs/adr/0127-cross-box-fleet-observability.md +64 -0
  212. package/docs/adr/0128-provisioning-runner-privilege-and-db-auth-model.md +46 -0
  213. package/docs/adr/0129-cloudbongos-control-plane-pull-deploy.md +34 -0
  214. package/docs/adr/0130-provision-remote-exec-over-ssh.md +61 -0
  215. package/docs/adr/0131-rank-scoped-skill-visibility.md +47 -0
  216. package/docs/adr/0132-cohost-fleet-control-plane-migration.md +54 -0
  217. package/docs/adr/0133-github-app-manifest-onboarding-signin.md +42 -0
  218. package/docs/adr/0134-private-first-npm-distribution.md +38 -0
  219. package/docs/adr/README.md +208 -0
  220. package/docs/api/openapi.json +13720 -0
  221. package/docs/api-reference.md +437 -0
  222. package/docs/architecture.md +244 -0
  223. package/docs/branding-contract.md +66 -0
  224. package/docs/branding-fill-prompt.md +25 -0
  225. package/docs/canonical-permissions.md +241 -0
  226. package/docs/design/container-exterior-tiles.md +49 -0
  227. package/docs/design/container-exterior.md +81 -0
  228. package/docs/design/container-interior.md +77 -0
  229. package/docs/design/modular-architecture/00-research-report.md +107 -0
  230. package/docs/design/modular-architecture/01-architecture.md +125 -0
  231. package/docs/design/modular-architecture/02-module-map.md +116 -0
  232. package/docs/design/modular-architecture/03-builder-flows.md +104 -0
  233. package/docs/design/modular-architecture/04-module-lifecycle.md +62 -0
  234. package/docs/design/modular-architecture/README.md +27 -0
  235. package/docs/design/vanilla-hall-ui-redesign-scope.md +284 -0
  236. package/docs/design/world-map-scroll.md +41 -0
  237. package/docs/design-contract.md +320 -0
  238. package/docs/file-map.md +418 -0
  239. package/docs/handoff-template.md +92 -0
  240. package/docs/modules-contract.md +293 -0
  241. package/docs/onboarding/browser-terminal-guide.md +73 -0
  242. package/docs/onboarding/diagrams/01-task-lifecycle.mmd +28 -0
  243. package/docs/onboarding/diagrams/02-rank-ladder.mmd +54 -0
  244. package/docs/onboarding/diagrams/03-drachmae-karma.mmd +37 -0
  245. package/docs/onboarding/diagrams/04-architecture.mmd +51 -0
  246. package/docs/onboarding/diagrams/05-versioning.mmd +29 -0
  247. package/docs/onboarding/diagrams/README.md +94 -0
  248. package/docs/onboarding/diagrams/assertions.json +170 -0
  249. package/docs/onboarding/diagrams/puppeteer-config.json +1 -0
  250. package/docs/onboarding/diagrams/render-config.json +9 -0
  251. package/docs/onboarding/drachmae-and-karma.md +178 -0
  252. package/docs/onboarding/primer.md +202 -0
  253. package/docs/project-context.template.md +67 -0
  254. package/docs/recipes/README.md +35 -0
  255. package/docs/recipes/audit-replay.md +100 -0
  256. package/docs/recipes/bongos-cli-release.md +66 -0
  257. package/docs/recipes/builder-box-lifecycle.md +152 -0
  258. package/docs/recipes/claude-design-loop.md +143 -0
  259. package/docs/recipes/claude-gemini-bongos-doors.md +155 -0
  260. package/docs/recipes/cloudbongos-staging-gate.md +139 -0
  261. package/docs/recipes/cloudbongos-standup.md +111 -0
  262. package/docs/recipes/devbox-app-release.md +93 -0
  263. package/docs/recipes/devbox-app-windows-test.md +128 -0
  264. package/docs/recipes/failed-ship-recovery-proof.md +102 -0
  265. package/docs/recipes/figma-design-loop.md +129 -0
  266. package/docs/recipes/gds-db-backup.md +255 -0
  267. package/docs/recipes/instance-deploy.md +37 -0
  268. package/docs/recipes/managed-settings-remote-control.md +416 -0
  269. package/docs/recipes/memory-backup.md +71 -0
  270. package/docs/recipes/memory-sync-conflicts.md +98 -0
  271. package/docs/recipes/multi-builder-merge.md +78 -0
  272. package/docs/recipes/ops-gotchas.md +212 -0
  273. package/docs/recipes/overnight-builder.md +53 -0
  274. package/docs/recipes/packaging-the-core.md +49 -0
  275. package/docs/recipes/parallel-load-results-2026-05-30.md +63 -0
  276. package/docs/recipes/parallel-load-test.md +32 -0
  277. package/docs/recipes/pixel-art-pipeline.md +411 -0
  278. package/docs/recipes/private-npm-distribution.md +79 -0
  279. package/docs/recipes/search-index-ingestion.md +67 -0
  280. package/docs/recipes/self-host.md +60 -0
  281. package/docs/recipes/ship-and-regrade.md +72 -0
  282. package/docs/recipes/staging-data.md +50 -0
  283. package/docs/recipes/staging-environment.md +215 -0
  284. package/docs/recipes/upgrading-the-core.md +58 -0
  285. package/docs/research/cursor-competitive-analysis.md +255 -0
  286. package/docs/research/llm-model-agnostic-and-cheaper-grader.md +227 -0
  287. package/migrations/003_pms.sql +284 -0
  288. package/migrations/004_pms_cost_idempotency.sql +13 -0
  289. package/migrations/005_pms_smoke_filter.sql +44 -0
  290. package/migrations/006_pms_v2.sql +378 -0
  291. package/migrations/007_pms_v2_hierarchy_trigger.sql +59 -0
  292. package/migrations/008_pms_v2_migration_allocator.sql +27 -0
  293. package/migrations/009_pms_v2_blockers_table.sql +68 -0
  294. package/migrations/010_uptime.sql +29 -0
  295. package/migrations/011_backfill_v2_v3_done_when.sql +20 -0
  296. package/migrations/012_pms_v2_task_lifecycle_states.sql +82 -0
  297. package/migrations/013_claim_locking.sql +22 -0
  298. package/migrations/014_pms_task_discipline.sql +86 -0
  299. package/migrations/015_pms_estimation_calibration.sql +140 -0
  300. package/migrations/016_pms_task_grades.sql +60 -0
  301. package/migrations/017_version_progress_exclude_abandoned.sql +49 -0
  302. package/migrations/019_rename_pms_v3_to_gds_v3.sql +65 -0
  303. package/migrations/020_task_dependencies.sql +99 -0
  304. package/migrations/021_v3_renumber_and_deps.sql +224 -0
  305. package/migrations/022_v3_reconcile_dep_gated_status.sql +41 -0
  306. package/migrations/023_pms_rank.sql +30 -0
  307. package/migrations/025_builder_exit_status.sql +15 -0
  308. package/migrations/027_builders_preferred_disciplines.sql +46 -0
  309. package/migrations/028_tasks_parallel_safe.sql +71 -0
  310. package/migrations/029_rank_three_live.sql +32 -0
  311. package/migrations/030_vulnerability_reports.sql +61 -0
  312. package/migrations/031_reward_simplification.sql +57 -0
  313. package/migrations/032_repo_health_snapshots.sql +56 -0
  314. package/migrations/033_audit_log.sql +64 -0
  315. package/migrations/034_lifecycle_breakdown_leaf_only.sql +62 -0
  316. package/migrations/035_auth_token_hygiene.sql +66 -0
  317. package/migrations/037_builder_skill_model_prefs.sql +44 -0
  318. package/migrations/038_task_override_requests.sql +51 -0
  319. package/migrations/039_newcomer_friendly_column.sql +124 -0
  320. package/migrations/040_builder_karma.sql +58 -0
  321. package/migrations/041_kind_multipliers_and_idea_bonus.sql +42 -0
  322. package/migrations/042_criterion_proposal_workflow.sql +78 -0
  323. package/migrations/043_builder_onboarding_observability.sql +66 -0
  324. package/migrations/044_tasks_requires_rank.sql +97 -0
  325. package/migrations/045_builder_onboarding_state.sql +147 -0
  326. package/migrations/046_cost_log_builder_attribution.sql +42 -0
  327. package/migrations/054_builder_memory.sql +108 -0
  328. package/migrations/055_task_criteria.sql +90 -0
  329. package/migrations/058_peer_votes.sql +41 -0
  330. package/migrations/059_onboarding_pick_disciplines.sql +59 -0
  331. package/migrations/060_access_requests.sql +46 -0
  332. package/migrations/061_backfill_override_ship_attribution.sql +29 -0
  333. package/migrations/062_session_records.sql +34 -0
  334. package/migrations/063_session_records_tool_errors_idx.sql +11 -0
  335. package/migrations/064_grade_attempts.sql +18 -0
  336. package/migrations/065_bfg_principal.sql +58 -0
  337. package/migrations/066_live_notify_triggers.sql +69 -0
  338. package/migrations/067_builder_boxes.sql +117 -0
  339. package/migrations/067_discord_bot_foundation.sql +69 -0
  340. package/migrations/068_thetes_requires_rank.sql +27 -0
  341. package/migrations/069_builder_ssh_keys.sql +66 -0
  342. package/migrations/070_box_intents.sql +101 -0
  343. package/migrations/071_box_first_provision_approval.sql +46 -0
  344. package/migrations/072_onboarding_ship_three_remove_primer.sql +80 -0
  345. package/migrations/073_box_terminal_access.sql +46 -0
  346. package/migrations/075_builder_sound_prefs.sql +28 -0
  347. package/migrations/078_box_claude_active.sql +22 -0
  348. package/migrations/079_box_first_connected_at.sql +20 -0
  349. package/migrations/081_tasks_needs_migration.sql +34 -0
  350. package/migrations/084_tasks_security_sensitive.sql +24 -0
  351. package/migrations/085_security_engagement_docs.sql +34 -0
  352. package/migrations/086_rename_disciplines.sql +125 -0
  353. package/migrations/088_builders_anthropic_link.sql +28 -0
  354. package/migrations/089_builders_monthly_budget.sql +19 -0
  355. package/migrations/090_box_scoped_sessions.sql +38 -0
  356. package/migrations/091_session_token_reward.sql +44 -0
  357. package/migrations/093_tasks_sandbox_review.sql +22 -0
  358. package/migrations/102_remove_box_first_provision_approval.sql +58 -0
  359. package/migrations/103_search_chunks.sql +90 -0
  360. package/migrations/104_builder_box_blocked.sql +34 -0
  361. package/migrations/105_box_host_keys.sql +35 -0
  362. package/migrations/111_medusa_customer0_framing.sql +35 -0
  363. package/migrations/112_drop_track_check.sql +25 -0
  364. package/migrations/113_merge_lease.sql +16 -0
  365. package/migrations/114_cloudbongos_rename_live_strings.sql +32 -0
  366. package/migrations/118_currency_label_decoupling.sql +23 -0
  367. package/migrations/119_builder_behavior_prefs.sql +31 -0
  368. package/migrations/121_box_code_version.sql +37 -0
  369. package/migrations/122_builder_gemini_key.sql +30 -0
  370. package/migrations/123_cost_log_tiers.sql +33 -0
  371. package/migrations/124_cost_baseline.sql +45 -0
  372. package/migrations/125_llm_cache.sql +54 -0
  373. package/migrations/126_autonomy_runs.sql +33 -0
  374. package/migrations/143_cost_calibration.sql +63 -0
  375. package/migrations/145_backfill_task_requires_rank.sql +84 -0
  376. package/migrations/160_goal_tier.sql +88 -0
  377. package/migrations/163_polymorphic_dependencies.sql +187 -0
  378. package/migrations/164_event_sound_prefs.sql +20 -0
  379. package/migrations/165_task_module_key.sql +15 -0
  380. package/migrations/171_claims_published_head_sha.sql +24 -0
  381. package/migrations/174_close_orphaned_claims_on_terminal_tasks.sql +30 -0
  382. package/migrations/175_task_grades_diff_hash.sql +9 -0
  383. package/migrations/176_promotion_respects_open_blockers.sql +58 -0
  384. package/migrations/176_ui_discipline.sql +40 -0
  385. package/migrations/177_require_reward_before_workable.sql +76 -0
  386. package/migrations/178_reward_gate_auto_assign_revert_autopromote.sql +61 -0
  387. package/migrations/179_search_chunk_usefulness.sql +33 -0
  388. package/migrations/180_one_active_claim_per_session.sql +54 -0
  389. package/migrations/181_cost_log_skill_name.sql +33 -0
  390. package/migrations/184_claim_release_requested.sql +25 -0
  391. package/migrations/185_module_upstreaming_goal_wiring.sql +59 -0
  392. package/migrations/187_goal_sort_order.sql +30 -0
  393. package/migrations/187_tasks_kind_check_add_verify.sql +21 -0
  394. package/migrations/README.md +88 -0
  395. package/migrations/core_188_goal_visibility_and_membership_requests.sql +71 -0
  396. package/migrations/core_189_core_upgrades_ledger.sql +37 -0
  397. package/migrations/core_189_credit_log_task_id_index.sql +19 -0
  398. package/migrations/core_190_rebuild_claimable_task_views.sql +71 -0
  399. package/migrations/instance/018_pms_v3_planning_seed.sql +131 -0
  400. package/migrations/instance/080_gds_v4_planning_seed.sql +75 -0
  401. package/migrations/instance/110_medusa_planning_seed.sql +70 -0
  402. package/migrations/instance/120_bongos_v1_planning_seed.sql +69 -0
  403. package/migrations/instance/144_bongos_v1_module_system_criterion.sql +26 -0
  404. package/migrations/instance/159_bongos_v1_goal_hierarchy_criterion.sql +29 -0
  405. package/migrations/instance/172_v2_world_planning_seed.sql +163 -0
  406. package/migrations/instance/173_bongos_v1_c7_core_modularized.sql +33 -0
  407. package/migrations/instance/182_gdsv4_bongos_consolidation.sql +132 -0
  408. package/migrations/instance/183_gdsv4_carryover_themed_goals.sql +116 -0
  409. package/migrations/instance/186_bongos_v1_governance_planning_seed.sql +69 -0
  410. package/modules/autonomy/CLAUDE.md +49 -0
  411. package/modules/autonomy/db.js +50 -0
  412. package/modules/autonomy/module.json +13 -0
  413. package/modules/autonomy/pollers/routine-timers.js +146 -0
  414. package/modules/autonomy/routes/autonomy.js +37 -0
  415. package/modules/builder-settings/CLAUDE.md +58 -0
  416. package/modules/builder-settings/builder-needs.js +115 -0
  417. package/modules/builder-settings/db.js +168 -0
  418. package/modules/builder-settings/display-name.js +84 -0
  419. package/modules/builder-settings/event-sound-prefs.js +169 -0
  420. package/modules/builder-settings/interaction-prefs.js +201 -0
  421. package/modules/builder-settings/model-alloc-prefs.js +147 -0
  422. package/modules/builder-settings/module.json +10 -0
  423. package/modules/builder-settings/render-prefs.js +103 -0
  424. package/modules/builder-settings/routes/settings.js +417 -0
  425. package/modules/builder-settings/settings.js +52 -0
  426. package/modules/builder-settings/skill-prefs.js +196 -0
  427. package/modules/builder-settings/sound-prefs.js +178 -0
  428. package/modules/builder-settings/wandering-prefs.js +282 -0
  429. package/modules/dev-box/CLAUDE.md +38 -0
  430. package/modules/dev-box/box-access.js +275 -0
  431. package/modules/dev-box/box-credential.js +94 -0
  432. package/modules/dev-box/box-onboard.js +486 -0
  433. package/modules/dev-box/boxes.js +842 -0
  434. package/modules/dev-box/db.js +39 -0
  435. package/modules/dev-box/module.json +14 -0
  436. package/modules/dev-box/routes/box.js +977 -0
  437. package/modules/discord/CLAUDE.md +50 -0
  438. package/modules/discord/auth.js +54 -0
  439. package/modules/discord/bug-attachments.js +210 -0
  440. package/modules/discord/db.js +96 -0
  441. package/modules/discord/discord-approvals.js +145 -0
  442. package/modules/discord/discord-audit.js +29 -0
  443. package/modules/discord/discord-bot.js +545 -0
  444. package/modules/discord/discord-bugs.js +257 -0
  445. package/modules/discord/discord-channels.js +412 -0
  446. package/modules/discord/discord-inbound.js +147 -0
  447. package/modules/discord/discord-message-buffer.js +54 -0
  448. package/modules/discord/discord-reaction.js +186 -0
  449. package/modules/discord/discord-role-sync.js +318 -0
  450. package/modules/discord/module.json +14 -0
  451. package/modules/discord/pollers/discord-bot.js +19 -0
  452. package/modules/discord/routes/bug-attachments.js +44 -0
  453. package/modules/discord/routes/discord.js +102 -0
  454. package/modules/discord/ship-broadcast.js +78 -0
  455. package/modules/discord/webhook.js +74 -0
  456. package/modules/economy/CLAUDE.md +48 -0
  457. package/modules/economy/achievements.js +594 -0
  458. package/modules/economy/cost-classify.js +331 -0
  459. package/modules/economy/cost-summary-shape.js +90 -0
  460. package/modules/economy/cost.js +438 -0
  461. package/modules/economy/credits.js +430 -0
  462. package/modules/economy/migrations/economy_001_fix_gds_shipper_description.sql +91 -0
  463. package/modules/economy/module.json +10 -0
  464. package/modules/economy/reward.js +61 -0
  465. package/modules/economy/routes/cost.js +97 -0
  466. package/modules/economy/routes/leaderboard.js +26 -0
  467. package/modules/economy/routes/reward.js +42 -0
  468. package/modules/economy/streak.js +285 -0
  469. package/modules/grading/CLAUDE.md +42 -0
  470. package/modules/grading/db.js +39 -0
  471. package/modules/grading/grader-rubric.json +151 -0
  472. package/modules/grading/grader-workers/efficiency.js +213 -0
  473. package/modules/grading/grader-workers/extract-json.js +80 -0
  474. package/modules/grading/grader-workers/fence.js +100 -0
  475. package/modules/grading/grader-workers/hacker.js +239 -0
  476. package/modules/grading/grader-workers/index.js +183 -0
  477. package/modules/grading/grader-workers/narc.js +207 -0
  478. package/modules/grading/grader-workers/quality.js +198 -0
  479. package/modules/grading/grader-workers/rubric.js +20 -0
  480. package/modules/grading/grader-workers/worker-prompt.js +89 -0
  481. package/modules/grading/grader-workers/worker-verdict.js +50 -0
  482. package/modules/grading/grader.js +1790 -0
  483. package/modules/grading/module.json +12 -0
  484. package/modules/grading/routes/grade.js +51 -0
  485. package/modules/hall-ui/CLAUDE.md +61 -0
  486. package/modules/hall-ui/module.json +14 -0
  487. package/modules/hall-ui/public/atlas.html +180 -0
  488. package/modules/hall-ui/public/atlas.js +336 -0
  489. package/modules/hall-ui/public/box-panel.js +423 -0
  490. package/modules/hall-ui/public/brand-apply.js +117 -0
  491. package/modules/hall-ui/public/builders.js +3028 -0
  492. package/modules/hall-ui/public/chime.wav +0 -0
  493. package/modules/hall-ui/public/copy-on-click.js +174 -0
  494. package/modules/hall-ui/public/cursors/arrow.png +0 -0
  495. package/modules/hall-ui/public/cursors/hand-pointer.png +0 -0
  496. package/modules/hall-ui/public/cursors/magnifier-out.png +0 -0
  497. package/modules/hall-ui/public/cursors/magnifier.png +0 -0
  498. package/modules/hall-ui/public/diagram-viewer.css +125 -0
  499. package/modules/hall-ui/public/diagram-viewer.js +330 -0
  500. package/modules/hall-ui/public/diagrams.html +113 -0
  501. package/modules/hall-ui/public/dom-utils.js +212 -0
  502. package/modules/hall-ui/public/drachmae.html +68 -0
  503. package/modules/hall-ui/public/drachmae.js +136 -0
  504. package/modules/hall-ui/public/gate.html +143 -0
  505. package/modules/hall-ui/public/gate.js +228 -0
  506. package/modules/hall-ui/public/goals-page.js +1297 -0
  507. package/modules/hall-ui/public/goals.html +376 -0
  508. package/modules/hall-ui/public/goals.js +119 -0
  509. package/modules/hall-ui/public/hall-widgets.js +189 -0
  510. package/modules/hall-ui/public/harbor.html +167 -0
  511. package/modules/hall-ui/public/harbor.js +335 -0
  512. package/modules/hall-ui/public/index.html +116 -0
  513. package/modules/hall-ui/public/instances-panel.js +172 -0
  514. package/modules/hall-ui/public/md-reader.js +234 -0
  515. package/modules/hall-ui/public/modules.html +119 -0
  516. package/modules/hall-ui/public/modules.js +154 -0
  517. package/modules/hall-ui/public/new-project-wizard.js +186 -0
  518. package/modules/hall-ui/public/not-ready.html +48 -0
  519. package/modules/hall-ui/public/pair.html +119 -0
  520. package/modules/hall-ui/public/pair.js +132 -0
  521. package/modules/hall-ui/public/primer.css +404 -0
  522. package/modules/hall-ui/public/primer.html +85 -0
  523. package/modules/hall-ui/public/primer.js +641 -0
  524. package/modules/hall-ui/public/profile.html +85 -0
  525. package/modules/hall-ui/public/profile.js +236 -0
  526. package/modules/hall-ui/public/ranks.html +69 -0
  527. package/modules/hall-ui/public/ranks.js +206 -0
  528. package/modules/hall-ui/public/roadmap.html +209 -0
  529. package/modules/hall-ui/public/roadmap.js +375 -0
  530. package/modules/hall-ui/public/sessions.html +92 -0
  531. package/modules/hall-ui/public/sessions.js +222 -0
  532. package/modules/hall-ui/public/settings.html +640 -0
  533. package/modules/hall-ui/public/settings.js +1219 -0
  534. package/modules/hall-ui/public/shell.js +495 -0
  535. package/modules/hall-ui/public/style.css +1748 -0
  536. package/modules/hall-ui/public/task-detail.js +253 -0
  537. package/modules/hall-ui/public/task.html +83 -0
  538. package/modules/hall-ui/public/task.js +326 -0
  539. package/modules/hall-ui/public/watch.html +333 -0
  540. package/modules/hall-ui/public/watch.js +859 -0
  541. package/modules/hall-ui/public/work.html +469 -0
  542. package/modules/hall-ui/public/work.js +1292 -0
  543. package/modules/ideas/CLAUDE.md +37 -0
  544. package/modules/ideas/blockers.js +100 -0
  545. package/modules/ideas/inbox.js +459 -0
  546. package/modules/ideas/module.json +10 -0
  547. package/modules/ideas/routes/blockers.js +120 -0
  548. package/modules/ideas/routes/inbox.js +230 -0
  549. package/modules/lifecycle/CLAUDE.md +63 -0
  550. package/modules/lifecycle/conflict-resolve.js +436 -0
  551. package/modules/lifecycle/db.js +4970 -0
  552. package/modules/lifecycle/done-when.js +355 -0
  553. package/modules/lifecycle/github-push.js +969 -0
  554. package/modules/lifecycle/goal-conflicts.js +133 -0
  555. package/modules/lifecycle/hierarchy.js +104 -0
  556. package/modules/lifecycle/lifecycle.js +58 -0
  557. package/modules/lifecycle/merge-lock.js +261 -0
  558. package/modules/lifecycle/migrations/lifecycle_001_goal_first_leads.sql +28 -0
  559. package/modules/lifecycle/migrations/lifecycle_002_backfill_orphan_task_goals.sql +36 -0
  560. package/modules/lifecycle/module.json +13 -0
  561. package/modules/lifecycle/pollers/publish-reconciler.js +20 -0
  562. package/modules/lifecycle/publish-reconciler.js +418 -0
  563. package/modules/lifecycle/routes/analytics.js +63 -0
  564. package/modules/lifecycle/routes/claims.js +506 -0
  565. package/modules/lifecycle/routes/dependencies.js +82 -0
  566. package/modules/lifecycle/routes/done-when.js +136 -0
  567. package/modules/lifecycle/routes/gate-approvals.js +197 -0
  568. package/modules/lifecycle/routes/goals.js +1419 -0
  569. package/modules/lifecycle/routes/lifecycle.js +43 -0
  570. package/modules/lifecycle/routes/tasks.js +1703 -0
  571. package/modules/lifecycle/routes/versions.js +128 -0
  572. package/modules/lifecycle/ship-card.js +505 -0
  573. package/modules/lifecycle/ship-preflight.js +225 -0
  574. package/modules/lifecycle/task-classifier.js +512 -0
  575. package/modules/lifecycle/version-close.js +106 -0
  576. package/modules/memory/CLAUDE.md +40 -0
  577. package/modules/memory/learnings.js +275 -0
  578. package/modules/memory/memory.js +572 -0
  579. package/modules/memory/module.json +12 -0
  580. package/modules/memory/routes/learnings.js +90 -0
  581. package/modules/memory/routes/memory.js +916 -0
  582. package/modules/memory/routes/search.js +188 -0
  583. package/modules/memory/search-chunker.js +252 -0
  584. package/modules/memory/search.js +320 -0
  585. package/modules/onboarding/CLAUDE.md +55 -0
  586. package/modules/onboarding/approval-broadcast.js +59 -0
  587. package/modules/onboarding/db.js +54 -0
  588. package/modules/onboarding/module.json +10 -0
  589. package/modules/onboarding/newcomer-restock.js +212 -0
  590. package/modules/onboarding/onboarding-state.js +532 -0
  591. package/modules/onboarding/onboarding.js +508 -0
  592. package/modules/onboarding/port.js +63 -0
  593. package/modules/onboarding/routes/access-requests.js +208 -0
  594. package/modules/onboarding/routes/onboarding.js +54 -0
  595. package/modules/security/CLAUDE.md +44 -0
  596. package/modules/security/module.json +10 -0
  597. package/modules/security/routes/reports.js +251 -0
  598. package/modules/security/secret-scrub.js +201 -0
  599. package/modules/security/security.js +294 -0
  600. package/modules/sessions/CLAUDE.md +39 -0
  601. package/modules/sessions/bfg.js +357 -0
  602. package/modules/sessions/db.js +326 -0
  603. package/modules/sessions/module.json +10 -0
  604. package/modules/sessions/pulse.js +149 -0
  605. package/modules/sessions/routes/sessions.js +331 -0
  606. package/modules/status-ui/CLAUDE.md +47 -0
  607. package/modules/status-ui/module.json +14 -0
  608. package/modules/status-ui/public/README.md +29 -0
  609. package/modules/status-ui/public/cursors/arrow.png +0 -0
  610. package/modules/status-ui/public/cursors/hand-pointer.png +0 -0
  611. package/modules/status-ui/public/index.html +363 -0
  612. package/modules/status-ui/public/snapshots/.gitkeep +0 -0
  613. package/modules/status-ui/public/status.js +1375 -0
  614. package/modules/status-ui/public/style.css +1342 -0
  615. package/package-lock.json +975 -0
  616. package/package.json +28 -0
  617. package/public-docs/index.html +35 -0
  618. package/public-docs/redoc.standalone.js +1838 -0
  619. package/public-docs/redoc.standalone.js.LICENSE.txt +102 -0
  620. package/public-landing/buddha.png +0 -0
  621. package/public-landing/create.html +868 -0
  622. package/public-landing/index.html +168 -0
  623. package/scripts/bongos-mcp.js +28 -0
  624. package/scripts/cron/style_guide_audit.sh +134 -0
  625. package/scripts/discord/README.md +52 -0
  626. package/scripts/discord/lib.js +80 -0
  627. package/scripts/discord/post.js +51 -0
  628. package/scripts/gds/CLAUDE.md +144 -0
  629. package/scripts/gds/abandon.js +58 -0
  630. package/scripts/gds/adopt-detect.js +123 -0
  631. package/scripts/gds/adopt-import.js +111 -0
  632. package/scripts/gds/adopt-preflight.js +121 -0
  633. package/scripts/gds/api.js +78 -0
  634. package/scripts/gds/architect-audit.js +288 -0
  635. package/scripts/gds/art-stage.js +152 -0
  636. package/scripts/gds/audit-authorship.sh +243 -0
  637. package/scripts/gds/audit-deps.js +121 -0
  638. package/scripts/gds/audit-exports.js +128 -0
  639. package/scripts/gds/audit-replay.sh +161 -0
  640. package/scripts/gds/audit-ships.js +251 -0
  641. package/scripts/gds/autonomy-gate.js +135 -0
  642. package/scripts/gds/backfill-cost.js +165 -0
  643. package/scripts/gds/backfill-sessions.js +351 -0
  644. package/scripts/gds/backfill-task-rewards.js +408 -0
  645. package/scripts/gds/backup.js +94 -0
  646. package/scripts/gds/bfg-principal-token.js +65 -0
  647. package/scripts/gds/box-auth-check.js +160 -0
  648. package/scripts/gds/box-connect-lib.js +453 -0
  649. package/scripts/gds/box.js +1258 -0
  650. package/scripts/gds/build-bongos.js +94 -0
  651. package/scripts/gds/capture.js +123 -0
  652. package/scripts/gds/cf-tunnel.js +419 -0
  653. package/scripts/gds/ci-grade.js +82 -0
  654. package/scripts/gds/claim-recall.js +112 -0
  655. package/scripts/gds/claim.js +333 -0
  656. package/scripts/gds/classify-discipline.js +153 -0
  657. package/scripts/gds/claude-materialize.js +176 -0
  658. package/scripts/gds/cleanup-orphans.js +74 -0
  659. package/scripts/gds/cli-lib.js +518 -0
  660. package/scripts/gds/code.js +101 -0
  661. package/scripts/gds/codemod-rename-src-gds.js +145 -0
  662. package/scripts/gds/conductor-dispatch.js +426 -0
  663. package/scripts/gds/context-pack.js +228 -0
  664. package/scripts/gds/coreB-carve-proof.sh +716 -0
  665. package/scripts/gds/cost.js +47 -0
  666. package/scripts/gds/db-backup-nightly.sh +160 -0
  667. package/scripts/gds/db-backup-offsite.sh +152 -0
  668. package/scripts/gds/demote.js +40 -0
  669. package/scripts/gds/design-sync.js +62 -0
  670. package/scripts/gds/diagnose-achievements.js +118 -0
  671. package/scripts/gds/diagram-facts.js +319 -0
  672. package/scripts/gds/discipline-modes.json +25 -0
  673. package/scripts/gds/discord-channels.js +66 -0
  674. package/scripts/gds/do-api.js +176 -0
  675. package/scripts/gds/docs-entropy.js +403 -0
  676. package/scripts/gds/doctor.js +389 -0
  677. package/scripts/gds/feedback-latest.js +94 -0
  678. package/scripts/gds/fetch-art-key.js +106 -0
  679. package/scripts/gds/fetch-sound-prefs.js +88 -0
  680. package/scripts/gds/figma-design-sync.js +61 -0
  681. package/scripts/gds/fitness.js +1446 -0
  682. package/scripts/gds/gate-review.js +322 -0
  683. package/scripts/gds/gating.js +325 -0
  684. package/scripts/gds/gds-db-backup.service +24 -0
  685. package/scripts/gds/gds-db-backup.timer +20 -0
  686. package/scripts/gds/gds-db-offsite.service +29 -0
  687. package/scripts/gds/gds-db-offsite.timer +18 -0
  688. package/scripts/gds/gen-api-client.js +508 -0
  689. package/scripts/gds/gen-api-docs.js +1037 -0
  690. package/scripts/gds/gen-atlas.js +366 -0
  691. package/scripts/gds/gen-diagrams.js +608 -0
  692. package/scripts/gds/gen-file-map.js +196 -0
  693. package/scripts/gds/gen-repo-map.js +519 -0
  694. package/scripts/gds/gen-session-index.js +210 -0
  695. package/scripts/gds/git-merge-regen.js +147 -0
  696. package/scripts/gds/grade-smoke.js +205 -0
  697. package/scripts/gds/hooks/pre-push.js +169 -0
  698. package/scripts/gds/http-api-client.js +88 -0
  699. package/scripts/gds/init.js +903 -0
  700. package/scripts/gds/install-git-hooks.js +114 -0
  701. package/scripts/gds/key-card.js +213 -0
  702. package/scripts/gds/key-status.js +126 -0
  703. package/scripts/gds/land-watch.js +168 -0
  704. package/scripts/gds/learning-capture.js +145 -0
  705. package/scripts/gds/lib.sh +44 -0
  706. package/scripts/gds/linkify-refs.js +473 -0
  707. package/scripts/gds/local-preview-lib.js +159 -0
  708. package/scripts/gds/local-preview.js +95 -0
  709. package/scripts/gds/login.js +225 -0
  710. package/scripts/gds/main-audit.js +279 -0
  711. package/scripts/gds/me.js +88 -0
  712. package/scripts/gds/memory-map.js +174 -0
  713. package/scripts/gds/merge-lock.js +71 -0
  714. package/scripts/gds/migration-namespace.js +200 -0
  715. package/scripts/gds/mirror-lineage-check.js +319 -0
  716. package/scripts/gds/mirror-redact.js +305 -0
  717. package/scripts/gds/module.js +482 -0
  718. package/scripts/gds/newcomer-floor.config.json +13 -0
  719. package/scripts/gds/newcomer-floor.js +415 -0
  720. package/scripts/gds/newcomer-floor.templates.json +86 -0
  721. package/scripts/gds/newcomer-floor.test.js +235 -0
  722. package/scripts/gds/next-number.js +163 -0
  723. package/scripts/gds/oauth-secret.js +197 -0
  724. package/scripts/gds/onboard.js +217 -0
  725. package/scripts/gds/onboarding-analyze.js +226 -0
  726. package/scripts/gds/onboarding-config.js +178 -0
  727. package/scripts/gds/onboarding-ship.js +92 -0
  728. package/scripts/gds/package-core.js +684 -0
  729. package/scripts/gds/paste-token.js +131 -0
  730. package/scripts/gds/portability-smoke-art.sh +85 -0
  731. package/scripts/gds/portability-smoke-memory.sh +147 -0
  732. package/scripts/gds/provision.js +1324 -0
  733. package/scripts/gds/publish-manifest.js +307 -0
  734. package/scripts/gds/pulse.js +309 -0
  735. package/scripts/gds/push-main.js +45 -0
  736. package/scripts/gds/read-session-export.js +359 -0
  737. package/scripts/gds/reauth.js +149 -0
  738. package/scripts/gds/recall.js +135 -0
  739. package/scripts/gds/release.js +71 -0
  740. package/scripts/gds/render-ideas.js +173 -0
  741. package/scripts/gds/repo-metrics.js +363 -0
  742. package/scripts/gds/resolve-skill-model.js +57 -0
  743. package/scripts/gds/run-routine.js +197 -0
  744. package/scripts/gds/run-unit-tests.js +178 -0
  745. package/scripts/gds/sandbox-stage.js +653 -0
  746. package/scripts/gds/search-ingest-db.js +209 -0
  747. package/scripts/gds/search-ingest-md.js +225 -0
  748. package/scripts/gds/security-baseline-check.sh +180 -0
  749. package/scripts/gds/seed-adopt-tasks.js +75 -0
  750. package/scripts/gds/seed-api-contract-goal-tasks.js +141 -0
  751. package/scripts/gds/seed-bongos-app-tasks.js +294 -0
  752. package/scripts/gds/seed-bongos-coreB-tranche1-tasks.js +81 -0
  753. package/scripts/gds/seed-bongos-coreB-tranche2-tasks.js +100 -0
  754. package/scripts/gds/seed-bongos-goal-hierarchy-tasks.js +307 -0
  755. package/scripts/gds/seed-bongos-module-system-tasks.js +346 -0
  756. package/scripts/gds/seed-bongos-tasks.js +214 -0
  757. package/scripts/gds/seed-gds-v4-tasks.js +624 -0
  758. package/scripts/gds/seed-governance-tasks.js +340 -0
  759. package/scripts/gds/seed-medusa-tasks.js +440 -0
  760. package/scripts/gds/seed-module-upstreaming.js +219 -0
  761. package/scripts/gds/seed-productization-tasks.js +235 -0
  762. package/scripts/gds/seed-provisioning-tasks.js +83 -0
  763. package/scripts/gds/seed-staging.sh +104 -0
  764. package/scripts/gds/seed-v2-world-tasks.js +283 -0
  765. package/scripts/gds/seed-v3-tasks.js +1981 -0
  766. package/scripts/gds/session-cost.js +393 -0
  767. package/scripts/gds/session-digest.js +179 -0
  768. package/scripts/gds/session-eval.js +576 -0
  769. package/scripts/gds/session.js +404 -0
  770. package/scripts/gds/setup.js +504 -0
  771. package/scripts/gds/shell.js +100 -0
  772. package/scripts/gds/ship.js +3618 -0
  773. package/scripts/gds/smoke-batch-claim.sh +213 -0
  774. package/scripts/gds/smoke-batch-release.sh +296 -0
  775. package/scripts/gds/smoke-box.sh +150 -0
  776. package/scripts/gds/smoke-claim-consistency.sh +212 -0
  777. package/scripts/gds/smoke-dependencies.sh +84 -0
  778. package/scripts/gds/smoke-gds.js +125 -0
  779. package/scripts/gds/smoke-write.sh +168 -0
  780. package/scripts/gds/start.js +782 -0
  781. package/scripts/gds/status.js +365 -0
  782. package/scripts/gds/triage.js +366 -0
  783. package/scripts/gds/upgrade.js +421 -0
  784. package/scripts/gds/validate-design.js +254 -0
  785. package/scripts/gds/version-close.js +549 -0
  786. package/scripts/migrate.sh +183 -0
  787. package/scripts/migrate_cost_ledger.sh +178 -0
  788. package/scripts/public-mirror-export.js +291 -0
  789. package/scripts/render-diagrams.sh +88 -0
  790. package/scripts/security/dep-audit.js +276 -0
  791. package/scripts/setup-builder.js +274 -0
  792. package/scripts/setup-builder.sh +28 -0
  793. package/scripts/snapshots/backfill-history.mjs +292 -0
  794. package/scripts/snapshots/maybe-render-on-deploy.sh +66 -0
  795. package/scripts/snapshots/render-pre-art-eras.mjs +329 -0
  796. package/scripts/snapshots/render-world.mjs +322 -0
  797. package/scripts/status-mirror-sync.js +192 -0
  798. package/scripts/status-probe.mjs +185 -0
  799. package/server.js +212 -0
  800. package/src/asset-version.js +71 -0
  801. package/src/bongos/CLAUDE.md +64 -0
  802. package/src/bongos/api-errors.js +281 -0
  803. package/src/bongos/api-path-404.js +67 -0
  804. package/src/bongos/api-prefix.js +38 -0
  805. package/src/bongos/app-pair.js +172 -0
  806. package/src/bongos/auth.js +979 -0
  807. package/src/bongos/cascade-dispatch.js +123 -0
  808. package/src/bongos/db-kernel.js +252 -0
  809. package/src/bongos/db.js +911 -0
  810. package/src/bongos/goal-scope-check.js +120 -0
  811. package/src/bongos/hierarchy-config.js +189 -0
  812. package/src/bongos/live-channel.js +145 -0
  813. package/src/bongos/llm-cache.js +260 -0
  814. package/src/bongos/llm-pricing.js +220 -0
  815. package/src/bongos/metrics.js +286 -0
  816. package/src/bongos/middleware/audit.js +274 -0
  817. package/src/bongos/middleware/error-envelope.js +93 -0
  818. package/src/bongos/middleware/rate-limit.js +195 -0
  819. package/src/bongos/module-scope-map.js +271 -0
  820. package/src/bongos/optimizer.js +166 -0
  821. package/src/bongos/path-match.js +47 -0
  822. package/src/bongos/permission-path-check.js +248 -0
  823. package/src/bongos/pool.js +55 -0
  824. package/src/bongos/repo-info.js +91 -0
  825. package/src/bongos/route-rank-check.js +420 -0
  826. package/src/bongos/routes/CLAUDE.md +43 -0
  827. package/src/bongos/routes/_helpers.js +369 -0
  828. package/src/bongos/routes/audit-log.js +59 -0
  829. package/src/bongos/routes/auth.js +755 -0
  830. package/src/bongos/routes/backup.js +104 -0
  831. package/src/bongos/routes/builders.js +526 -0
  832. package/src/bongos/routes/healthz.js +16 -0
  833. package/src/bongos/routes/instance.js +129 -0
  834. package/src/bongos/routes/live.js +125 -0
  835. package/src/bongos/routes/llm-cache.js +119 -0
  836. package/src/bongos/routes/me.js +380 -0
  837. package/src/bongos/routes/modules.js +131 -0
  838. package/src/bongos/routes/optimizer.js +54 -0
  839. package/src/bongos/routes/public.js +476 -0
  840. package/src/bongos/routes/security.js +207 -0
  841. package/src/bongos/routes.js +166 -0
  842. package/src/bongos/secret-box.js +177 -0
  843. package/src/bongos/sensitive-surfaces.js +30 -0
  844. package/src/bongos/serve-internal.js +889 -0
  845. package/src/bongos/uptime-poller.js +90 -0
  846. package/src/bongos-downloads.js +70 -0
  847. package/src/branding.js +182 -0
  848. package/src/build-info.js +77 -0
  849. package/src/devbox-downloads.js +67 -0
  850. package/src/instance-config.js +200 -0
  851. package/src/module-api.js +366 -0
  852. package/src/module-loader/loader.js +268 -0
  853. package/src/module-loader/manifest-schema.js +140 -0
  854. package/src/module-loader/provenance.js +28 -0
  855. package/src/module-loader/semver.js +100 -0
  856. package/src/module-seams.js +291 -0
  857. package/src/modules.js +254 -0
  858. package/src/platform-server.js +135 -0
  859. package/src/ui/adapters/claude-design/index.js +333 -0
  860. package/src/ui/adapters/figma/index.js +328 -0
  861. package/tests/abandon_task.mjs +138 -0
  862. package/tests/achievements_reconcile.mjs +167 -0
  863. package/tests/adopt_detect.mjs +141 -0
  864. package/tests/adopt_import.mjs +132 -0
  865. package/tests/adopt_preflight.mjs +105 -0
  866. package/tests/anti_grid.mjs +89 -0
  867. package/tests/api_client.mjs +231 -0
  868. package/tests/api_docs.mjs +283 -0
  869. package/tests/api_error_envelope_buildcheck.mjs +56 -0
  870. package/tests/api_error_envelope_middleware.mjs +99 -0
  871. package/tests/api_error_registry.mjs +108 -0
  872. package/tests/api_pagination_contract.mjs +51 -0
  873. package/tests/api_path_404.mjs +96 -0
  874. package/tests/app_pair.mjs +168 -0
  875. package/tests/architect.mjs +140 -0
  876. package/tests/art_key.mjs +121 -0
  877. package/tests/art_stage.mjs +121 -0
  878. package/tests/asset_version.mjs +94 -0
  879. package/tests/atlas.mjs +69 -0
  880. package/tests/audit_deps.mjs +74 -0
  881. package/tests/audit_middleware.mjs +385 -0
  882. package/tests/auth_admission_gate.mjs +164 -0
  883. package/tests/auth_anthropic_identity.mjs +95 -0
  884. package/tests/auth_duplicate_cookie.mjs +56 -0
  885. package/tests/auth_error_brand.mjs +77 -0
  886. package/tests/auth_flow_slice1.mjs +223 -0
  887. package/tests/auth_inactive_builder.mjs +94 -0
  888. package/tests/auth_page_gate.mjs +92 -0
  889. package/tests/auth_session_ttl.mjs +155 -0
  890. package/tests/autonomous_fit_protected_paths.mjs +115 -0
  891. package/tests/autonomy_gate.mjs +85 -0
  892. package/tests/autotile_variants.mjs +256 -0
  893. package/tests/autotile_xverify.mjs +133 -0
  894. package/tests/backfill_sessions.mjs +101 -0
  895. package/tests/backfill_task_rewards.mjs +152 -0
  896. package/tests/backup_cli.mjs +104 -0
  897. package/tests/bfg.mjs +327 -0
  898. package/tests/bfg_write.mjs +423 -0
  899. package/tests/bongos_box_connect.mjs +89 -0
  900. package/tests/bongos_dispatch.mjs +74 -0
  901. package/tests/bongos_downloads.mjs +118 -0
  902. package/tests/bongos_login.mjs +34 -0
  903. package/tests/box_access.mjs +186 -0
  904. package/tests/box_auth_check.mjs +114 -0
  905. package/tests/box_code_staleness.mjs +116 -0
  906. package/tests/box_connect_e2e.mjs +196 -0
  907. package/tests/box_cost.mjs +70 -0
  908. package/tests/box_dns_repoint.mjs +151 -0
  909. package/tests/box_host_keys.mjs +102 -0
  910. package/tests/box_onboard.mjs +317 -0
  911. package/tests/box_scope_session.mjs +115 -0
  912. package/tests/box_ship_permissions.mjs +71 -0
  913. package/tests/box_terminal_ssrf.mjs +90 -0
  914. package/tests/boxes.mjs +1255 -0
  915. package/tests/branding.mjs +88 -0
  916. package/tests/bug_attachments.mjs +189 -0
  917. package/tests/build_info.mjs +88 -0
  918. package/tests/builder_needs.mjs +99 -0
  919. package/tests/cap_newcomer_tasks.mjs +114 -0
  920. package/tests/cascade-dispatch.mjs +95 -0
  921. package/tests/cf_tunnel.mjs +459 -0
  922. package/tests/claim_recall.mjs +150 -0
  923. package/tests/claims_bind_session.mjs +47 -0
  924. package/tests/claude_materialize.mjs +148 -0
  925. package/tests/cli_box_scope.mjs +52 -0
  926. package/tests/cli_lib_formatters.mjs +87 -0
  927. package/tests/cli_token_reissue.mjs +147 -0
  928. package/tests/client_bundle_route.mjs +47 -0
  929. package/tests/cloud_bongos_pack.mjs +85 -0
  930. package/tests/conductor.mjs +496 -0
  931. package/tests/confirm_attribution.mjs +156 -0
  932. package/tests/conflict_resolve.mjs +462 -0
  933. package/tests/context_pack.mjs +240 -0
  934. package/tests/cost.mjs +94 -0
  935. package/tests/cost_audit.mjs +122 -0
  936. package/tests/cost_budget_status.mjs +78 -0
  937. package/tests/cost_reconcile.mjs +102 -0
  938. package/tests/cost_summary_shape.mjs +94 -0
  939. package/tests/credit_grant.mjs +376 -0
  940. package/tests/criterion_progress.mjs +220 -0
  941. package/tests/criterion_proposal.mjs +109 -0
  942. package/tests/criterion_ref_parse.mjs +53 -0
  943. package/tests/currency_label.mjs +119 -0
  944. package/tests/day_cycle.mjs +197 -0
  945. package/tests/dependencies_migration.mjs +77 -0
  946. package/tests/dependencies_polymorphic.mjs +212 -0
  947. package/tests/deploy_instance.mjs +78 -0
  948. package/tests/devbox_downloads.mjs +122 -0
  949. package/tests/diff_derived_signals.mjs +115 -0
  950. package/tests/discord_approvals.mjs +174 -0
  951. package/tests/discord_autojoin.mjs +158 -0
  952. package/tests/discord_bot.mjs +94 -0
  953. package/tests/discord_bugs.mjs +297 -0
  954. package/tests/discord_channels.mjs +337 -0
  955. package/tests/discord_foundation.mjs +76 -0
  956. package/tests/discord_inbound.mjs +190 -0
  957. package/tests/discord_message_buffer.mjs +87 -0
  958. package/tests/discord_oauth.mjs +55 -0
  959. package/tests/discord_reaction.mjs +170 -0
  960. package/tests/discord_role_sync.mjs +151 -0
  961. package/tests/display_name.mjs +123 -0
  962. package/tests/dns_preflight.mjs +74 -0
  963. package/tests/event_sound_prefs.mjs +194 -0
  964. package/tests/eviction_policy.mjs +279 -0
  965. package/tests/figma_adapter.mjs +199 -0
  966. package/tests/file_map.mjs +91 -0
  967. package/tests/first_admin_bootstrap.mjs +40 -0
  968. package/tests/fitness.mjs +435 -0
  969. package/tests/fitness_two_root.mjs +104 -0
  970. package/tests/fixtures/session-506-digest.json +34 -0
  971. package/tests/gate_approvals.mjs +451 -0
  972. package/tests/gate_review.mjs +152 -0
  973. package/tests/git_merge_regen.mjs +151 -0
  974. package/tests/github_push_ancestry.mjs +119 -0
  975. package/tests/github_push_land_proof.mjs +127 -0
  976. package/tests/github_push_merge_driver.mjs +175 -0
  977. package/tests/goal_abuse_matrix.mjs +187 -0
  978. package/tests/goal_achievement.mjs +146 -0
  979. package/tests/goal_conflicts.mjs +305 -0
  980. package/tests/goal_dependencies_read.mjs +73 -0
  981. package/tests/goal_member_roles.mjs +420 -0
  982. package/tests/goal_membership_requests.mjs +332 -0
  983. package/tests/goal_routes.mjs +203 -0
  984. package/tests/goal_scope_check.mjs +167 -0
  985. package/tests/goal_tier.mjs +312 -0
  986. package/tests/goal_wall_proof.mjs +112 -0
  987. package/tests/grade_attempts.mjs +73 -0
  988. package/tests/grade_attribution.mjs +117 -0
  989. package/tests/grade_diff_hash.mjs +191 -0
  990. package/tests/grade_server_authoritative.mjs +305 -0
  991. package/tests/grade_unavailable_display.mjs +66 -0
  992. package/tests/grader.mjs +1960 -0
  993. package/tests/grader_bypass.mjs +57 -0
  994. package/tests/grader_panel.mjs +252 -0
  995. package/tests/grader_prompt_fencing.mjs +192 -0
  996. package/tests/helpers.mjs +52 -0
  997. package/tests/hierarchy-config.mjs +81 -0
  998. package/tests/init.mjs +463 -0
  999. package/tests/instance_config.mjs +76 -0
  1000. package/tests/instance_manifest.mjs +110 -0
  1001. package/tests/interaction_prefs.mjs +72 -0
  1002. package/tests/key-card.mjs +110 -0
  1003. package/tests/key-status.mjs +45 -0
  1004. package/tests/land_watch.mjs +115 -0
  1005. package/tests/lifecycle-card.mjs +145 -0
  1006. package/tests/lifecycle_breakdown_view.mjs +236 -0
  1007. package/tests/linkify_refs.mjs +264 -0
  1008. package/tests/live_channel.mjs +128 -0
  1009. package/tests/live_sse.mjs +122 -0
  1010. package/tests/llm-cache-route.mjs +110 -0
  1011. package/tests/llm-cache.mjs +140 -0
  1012. package/tests/llm-pricing.mjs +152 -0
  1013. package/tests/local_preview.mjs +136 -0
  1014. package/tests/main_audit.mjs +137 -0
  1015. package/tests/memory_isolation.mjs +431 -0
  1016. package/tests/memory_map.mjs +107 -0
  1017. package/tests/memory_pull.mjs +429 -0
  1018. package/tests/merge_lease.mjs +100 -0
  1019. package/tests/merge_lock.mjs +312 -0
  1020. package/tests/metrics.mjs +147 -0
  1021. package/tests/migration_allocation.mjs +146 -0
  1022. package/tests/migration_namespace.mjs +185 -0
  1023. package/tests/migrations_fresh_replay_guard.mjs +38 -0
  1024. package/tests/mirror_lineage_fulltree.mjs +45 -0
  1025. package/tests/mirror_lineage_proof.mjs +72 -0
  1026. package/tests/mirror_redact.mjs +193 -0
  1027. package/tests/model_alloc_prefs.mjs +63 -0
  1028. package/tests/module-scope-map.mjs +88 -0
  1029. package/tests/module_api.mjs +110 -0
  1030. package/tests/module_cli.mjs +292 -0
  1031. package/tests/module_contributions.mjs +148 -0
  1032. package/tests/module_loader.mjs +286 -0
  1033. package/tests/module_manifest.mjs +194 -0
  1034. package/tests/module_owned_tests.mjs +105 -0
  1035. package/tests/module_provenance.mjs +34 -0
  1036. package/tests/module_route_rank.mjs +147 -0
  1037. package/tests/module_seams.mjs +68 -0
  1038. package/tests/modules.mjs +156 -0
  1039. package/tests/modules_route.mjs +38 -0
  1040. package/tests/newcomer_floor.mjs +17 -0
  1041. package/tests/newcomer_restock.mjs +80 -0
  1042. package/tests/next_number.mjs +154 -0
  1043. package/tests/oauth_secret.mjs +60 -0
  1044. package/tests/onboard.mjs +70 -0
  1045. package/tests/onboarding_gate.mjs +267 -0
  1046. package/tests/onboarding_observability.mjs +344 -0
  1047. package/tests/onboarding_route_signals.mjs +175 -0
  1048. package/tests/onboarding_state.mjs +346 -0
  1049. package/tests/one_active_claim_per_session.mjs +111 -0
  1050. package/tests/orphaned_claim_ship.mjs +135 -0
  1051. package/tests/override_attribution.mjs +142 -0
  1052. package/tests/override_request_ownership.mjs +235 -0
  1053. package/tests/package_core.mjs +435 -0
  1054. package/tests/parallel-load.mjs +402 -0
  1055. package/tests/path_match.mjs +62 -0
  1056. package/tests/permission_path.mjs +151 -0
  1057. package/tests/platform_boot.mjs +167 -0
  1058. package/tests/pre_compact.mjs +60 -0
  1059. package/tests/preview_server.mjs +127 -0
  1060. package/tests/profile_route.mjs +197 -0
  1061. package/tests/provision.mjs +805 -0
  1062. package/tests/provisioning_github_app_routes.mjs +98 -0
  1063. package/tests/public_mirror_export.mjs +124 -0
  1064. package/tests/public_task_resolver.mjs +112 -0
  1065. package/tests/publish_branch_route.mjs +422 -0
  1066. package/tests/publish_manifest.mjs +184 -0
  1067. package/tests/publish_reconciler.mjs +728 -0
  1068. package/tests/rank_gate.mjs +463 -0
  1069. package/tests/rate_limit_public.mjs +217 -0
  1070. package/tests/read_session_export.mjs +89 -0
  1071. package/tests/recall_cli.mjs +82 -0
  1072. package/tests/recall_hints.mjs +119 -0
  1073. package/tests/recent_shipped_window.mjs +80 -0
  1074. package/tests/regrade_eligibility.mjs +202 -0
  1075. package/tests/render_prefs.mjs +122 -0
  1076. package/tests/repo_map.mjs +92 -0
  1077. package/tests/reward_gate.mjs +284 -0
  1078. package/tests/route_rank_check.mjs +243 -0
  1079. package/tests/route_validation.mjs +490 -0
  1080. package/tests/routine_timers.mjs +72 -0
  1081. package/tests/rubric_fixtures.mjs +140 -0
  1082. package/tests/run_routine.mjs +69 -0
  1083. package/tests/sandbox_stage.mjs +582 -0
  1084. package/tests/scrubber_corpus.mjs +257 -0
  1085. package/tests/search_chunker.mjs +209 -0
  1086. package/tests/search_ingest.mjs +96 -0
  1087. package/tests/search_ingest_db.mjs +88 -0
  1088. package/tests/search_isolation.mjs +204 -0
  1089. package/tests/search_route.mjs +95 -0
  1090. package/tests/secret_box.mjs +189 -0
  1091. package/tests/security_docs.mjs +186 -0
  1092. package/tests/security_route.mjs +108 -0
  1093. package/tests/served_paths_shipped.mjs +118 -0
  1094. package/tests/session-cards.mjs +142 -0
  1095. package/tests/session_506_regression.mjs +69 -0
  1096. package/tests/session_caps.mjs +238 -0
  1097. package/tests/session_cost.mjs +133 -0
  1098. package/tests/session_digest.mjs +73 -0
  1099. package/tests/session_eval.mjs +386 -0
  1100. package/tests/session_index.mjs +105 -0
  1101. package/tests/session_records.mjs +369 -0
  1102. package/tests/session_search.mjs +78 -0
  1103. package/tests/session_start_freshness.mjs +123 -0
  1104. package/tests/setup_smoke.mjs +154 -0
  1105. package/tests/ship_autolinkify.mjs +60 -0
  1106. package/tests/ship_automerge_injection.mjs +174 -0
  1107. package/tests/ship_broadcast_routing.mjs +125 -0
  1108. package/tests/ship_broadcast_server.mjs +175 -0
  1109. package/tests/ship_card.mjs +280 -0
  1110. package/tests/ship_ci_deploy.mjs +374 -0
  1111. package/tests/ship_preflight.mjs +368 -0
  1112. package/tests/ship_premerge.mjs +75 -0
  1113. package/tests/ship_resume.mjs +129 -0
  1114. package/tests/ship_upload_skip.mjs +89 -0
  1115. package/tests/ship_zero_commit.mjs +60 -0
  1116. package/tests/single_host_hall.mjs +98 -0
  1117. package/tests/skill_prefs.mjs +150 -0
  1118. package/tests/smoke_preflight.mjs +66 -0
  1119. package/tests/snapshot_picker.mjs +233 -0
  1120. package/tests/sound_prefs.mjs +198 -0
  1121. package/tests/sprite_facing.mjs +35 -0
  1122. package/tests/status-probe.mjs +89 -0
  1123. package/tests/status_backfill.mjs +94 -0
  1124. package/tests/stop_refcheck.mjs +127 -0
  1125. package/tests/streak.mjs +175 -0
  1126. package/tests/subdomain_auth.mjs +58 -0
  1127. package/tests/task_classifier_vocab.mjs +41 -0
  1128. package/tests/task_create_idempotency.mjs +96 -0
  1129. package/tests/task_goal_link.mjs +93 -0
  1130. package/tests/task_ownership_gate.mjs +125 -0
  1131. package/tests/terrain_picker.mjs +298 -0
  1132. package/tests/touches_overlap.mjs +75 -0
  1133. package/tests/triage_development.mjs +140 -0
  1134. package/tests/turn_in_place.mjs +280 -0
  1135. package/tests/upgrade.mjs +357 -0
  1136. package/tests/verify_task_guard.mjs +64 -0
  1137. package/tests/version_close.mjs +76 -0
  1138. package/tests/versions_route.mjs +93 -0
  1139. package/tests/walkability.mjs +188 -0
  1140. package/tests/wandering_prefs.mjs +176 -0
  1141. package/tests/worktree_disambiguation.mjs +105 -0
  1142. package/tests/worktree_guard.mjs +90 -0
@@ -0,0 +1,219 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ // scripts/gds/seed-module-upstreaming.js — seed the "Module upstreaming & catalog"
5
+ // goal + its ecosystem tasks (ADR 0107, task 1766). Idempotent on source_ref.
6
+ //
7
+ // WHAT THIS SEEDS (the API-doable parts): the goal (find-or-create) + the 7
8
+ // ecosystem tasks + their dependency edges. The SQL-only finishing — attaching
9
+ // these tasks to the goal (tasks.goal_id), creating the goal's done-when
10
+ // criteria, and consolidating the ADR-0103 separation spine (reparent
11
+ // 1726/1727/1728 -> G26, add the 1727->1688 dep) — is a companion guarded
12
+ // data-migration, because the GDS HTTP API exposes none of those (see ADR 0107
13
+ // "Tooling note").
14
+ //
15
+ // Usage: node scripts/gds/seed-module-upstreaming.js [--dry-run]
16
+ const { cliClient, requireSession } = require('./cli-lib');
17
+ const DRY = process.argv.includes('--dry-run');
18
+
19
+ const VERSION = 'BONGOS-V1';
20
+ const GOAL_TITLE = 'Module upstreaming & catalog — instances contribute modules into core';
21
+ const GOAL_DESC =
22
+ 'ADR 0107. The reverse of the ADR 0100/0103 distribution arrow: instances (Amazonprimea, ' +
23
+ 'Mercury) build feature modules and submit them for approval to be merged INTO the shared ' +
24
+ 'Cloud Bongos core catalog, credited to author + origin project. Accepted modules land in ' +
25
+ 'core modules/<key>/ default-off, added to the isPublishable() allowlist; every instance may ' +
26
+ 'opt in. Reward = credit now, money later. AGPL-in with a DCO sign-off (no CLA). Security ' +
27
+ 'review is a hard accept-gate. Prereqs (manifest fields, module-owned CI test discovery, ' +
28
+ 'submit-time pre-check) are buildable now; the submit->review->accept->catalog pipeline ' +
29
+ 'depends on R88 (extract core, 1727) + R85 (Mercury, 1689).';
30
+
31
+ // External anchors (existing tasks the pipeline gates on).
32
+ const R88_EXTRACT_CORE = 1727; // BV1.R88 — extract the core into its own repo
33
+ const R85_MERCURY = 1689; // V4.R85 — stand Mercury up as customer 2
34
+
35
+ // key, title, description, kind, priority, est, credits, touches, deps
36
+ // deps: internal keys (this batch) and/or numeric ids (existing tasks).
37
+ const TASKS = [
38
+ {
39
+ key: 'manifest',
40
+ title: 'Module upstreaming: extend module.json with attribution (author, origin, license, maintainer)',
41
+ description:
42
+ 'ADR 0107 §2. Add author, origin (origin instance/project), license, and maintainer fields to ' +
43
+ 'the module manifest so credit + provenance travel WITH the module (a portable record, not a ' +
44
+ 'cross-GDS foreign key). Extend src/module-loader/manifest-schema.js validation (unknown keys ' +
45
+ 'still fail loud), update docs/modules-contract.md, and cover it in tests/module_manifest.mjs. ' +
46
+ 'Buildable now (single repo); dormant until the split.\n\n' +
47
+ 'Done when: the manifest accepts + validates the four fields, docs document them, and a fresh ' +
48
+ 'module scaffolded by `bongos module new` carries them.',
49
+ kind: 'infra', priority: 4, est: 120, credits: 25,
50
+ touches: ['src/module-loader/', 'docs/modules-contract.md', 'tests/'], deps: [],
51
+ },
52
+ {
53
+ key: 'ci-tests',
54
+ title: 'Module upstreaming: run module-owned tests (modules/<key>/tests/) in core CI',
55
+ description:
56
+ 'ADR 0107 (closes the audit CI gap). Today run-unit-tests.js globs only repo-root tests/ — a ' +
57
+ "contributed module's own tests would not run in core CI. Extend the runner to discover " +
58
+ 'modules/<key>/tests/*.mjs (enabled-gated, same MODULE_DISABLED skip semantics) so a ' +
59
+ 'contributed module is self-contained and its tests actually gate acceptance. Buildable now.\n\n' +
60
+ 'Done when: a test placed under modules/<key>/tests/ runs in the unit gate when the module is ' +
61
+ 'enabled and is skipped when disabled; the existing repo-root tests still run.',
62
+ kind: 'infra', priority: 4, est: 120, credits: 25,
63
+ touches: ['scripts/gds/run-unit-tests.js', 'tests/'], deps: [],
64
+ },
65
+ {
66
+ key: 'precheck',
67
+ title: 'Module upstreaming: submit-time AGPL/publish + copyright pre-check with DCO sign-off',
68
+ description:
69
+ 'ADR 0107 §4. A `bongos module check` that runs isPublishable() over a module before it can be ' +
70
+ 'submitted upstream — rejecting anything that cannot ship under AGPL (game content, pixel art, ' +
71
+ 'copyrighted references) — and captures a lightweight DCO-style sign-off (contributor affirms ' +
72
+ "it is their own work, licensed AGPL-3.0; NO copyright-assignment CLA). Reuses scripts/gds/" +
73
+ 'publish-manifest.js. Buildable now.\n\n' +
74
+ 'Done when: the pre-check passes a clean platform-shaped module, fails a module containing ' +
75
+ 'denied content with a clear reason, and records the sign-off; covered by tests.',
76
+ kind: 'infra', priority: 4, est: 180, credits: 35,
77
+ touches: ['scripts/gds/', 'src/module-loader/', 'tests/'], deps: ['manifest'],
78
+ },
79
+ {
80
+ key: 'submit',
81
+ title: 'Module upstreaming: `bongos module submit` — package module + attribution + sign-off into the core review queue',
82
+ description:
83
+ 'ADR 0107 §1. Package a module (code + manifest attribution + DCO sign-off), run the §4 ' +
84
+ 'pre-check, and file it into a rank-gated review queue on the CORE instance — WITHOUT granting ' +
85
+ 'the submitting instance write access to core (fork-and-PR stays a fallback). Depends on there ' +
86
+ 'being a core repo to submit into (R88) and a producing consumer (R85).\n\n' +
87
+ 'Done when: `bongos module submit <key>` on an instance files a review-queue entry on the core ' +
88
+ 'with the module payload + attribution + sign-off, and refuses if the pre-check fails.',
89
+ kind: 'feature', priority: 3, est: 360, credits: 60,
90
+ touches: ['bin/', 'scripts/gds/'], deps: ['manifest', 'precheck', R88_EXTRACT_CORE, R85_MERCURY],
91
+ },
92
+ {
93
+ key: 'accept',
94
+ title: 'Module upstreaming: core-side review & accept flow (security + license + grader gate)',
95
+ description:
96
+ 'ADR 0107 §5/§6. A rank-gated (Metic+/maintainer) review queue on the core: SECURITY review ' +
97
+ '(a contributed module runs in-process in every enabling instance — no sandbox yet), license/' +
98
+ 'DCO check, and a quality/grader pass. Accept = land the module in core modules/<key>/ ' +
99
+ 'default-off + add it to the isPublishable() allowlist + record attribution. Reject with ' +
100
+ 'reasons. Depends on the submit flow.\n\n' +
101
+ 'Done when: a reviewer can accept a queued module (it lands default-off, allowlisted, ' +
102
+ 'attributed) or reject it with a reason; acceptance requires the security review to pass.',
103
+ kind: 'feature', priority: 3, est: 420, credits: 70,
104
+ touches: ['src/bongos/', 'modules/', 'scripts/gds/'], deps: ['submit'],
105
+ },
106
+ {
107
+ key: 'catalog',
108
+ title: 'Module upstreaming: browsable module catalog with author + origin credit',
109
+ description:
110
+ 'ADR 0107 §2/§3 (credit now). A browsable catalog of available core modules — each shown with ' +
111
+ 'its author + origin project credit — surfaced in the hall and via `bongos module list ' +
112
+ '--catalog`. This is the visible "larger repository of modules built by the sub-projects." ' +
113
+ 'The monetary reward (drachmae/cross-instance payout) is explicitly OUT of scope here (deferred ' +
114
+ 'economics decision). Depends on the accept flow.\n\n' +
115
+ 'Done when: the catalog lists enabled-able core modules with author + origin credit, browsable ' +
116
+ 'in the hall and from the CLI.',
117
+ kind: 'feature', priority: 2, est: 300, credits: 55,
118
+ touches: ['modules/hall-ui/', 'bin/', 'src/bongos/'], deps: ['accept'],
119
+ },
120
+ {
121
+ key: 'maintenance',
122
+ title: 'Module upstreaming: maintenance & deprecation policy for accepted modules',
123
+ description:
124
+ 'ADR 0107 §7. A policy + the mechanics for accepted-module upkeep: a module pinned to an old ' +
125
+ 'coreVersion rots as core advances. Define whether an accepted module becomes core-maintained ' +
126
+ 'or carries a named maintainer + a deprecation path, and surface coreVersion incompatibility ' +
127
+ 'via the existing `bongos upgrade` pre-check so the catalog never fills with silently-broken ' +
128
+ 'entries. Depends on the accept flow.\n\n' +
129
+ 'Done when: the policy is recorded (doc/ADR), and an incompatible accepted module is flagged ' +
130
+ '(not silently broken) at upgrade time.',
131
+ kind: 'infra', priority: 2, est: 180, credits: 35,
132
+ touches: ['docs/', 'scripts/gds/'], deps: ['accept'],
133
+ },
134
+ ];
135
+
136
+ async function findOrCreateGoal() {
137
+ const api = await cliClient();
138
+ const list = await api.goals.getGoals({ query: { version: VERSION } });
139
+ const goals = list.data?.goals || [];
140
+ const existing = goals.find((g) => g.title === GOAL_TITLE);
141
+ if (existing) {
142
+ console.log(`GOAL exists: id=${existing.id} "${existing.title}"`);
143
+ return existing.id;
144
+ }
145
+ if (DRY) { console.log(`[dry-run] would create goal "${GOAL_TITLE}"`); return null; }
146
+ const res = await api.goals.postGoals({ body: {
147
+ version_id: VERSION, title: GOAL_TITLE, description: GOAL_DESC,
148
+ } });
149
+ const id = res.data?.goal?.id;
150
+ console.log(`GOAL created: id=${id}`);
151
+ return id;
152
+ }
153
+
154
+ async function main() {
155
+ await requireSession();
156
+ const api = await cliClient();
157
+ const goalId = await findOrCreateGoal();
158
+
159
+ const list = await api.tasks.getTasks({ query: { version: VERSION } });
160
+ const existing = list.data?.tasks || [];
161
+ const bySourceRef = {};
162
+ for (const t of existing) if (t.source_ref) bySourceRef[t.source_ref] = t;
163
+
164
+ const idByKey = {};
165
+ let created = 0, skipped = 0;
166
+ for (const def of TASKS) {
167
+ const source_ref = `mod-upstream-${def.key}`;
168
+ if (bySourceRef[source_ref]) {
169
+ idByKey[def.key] = Number(bySourceRef[source_ref].id);
170
+ console.log(`SKIP ${def.key}: exists id=${idByKey[def.key]}`);
171
+ skipped++;
172
+ continue;
173
+ }
174
+ if (DRY) { console.log(`[dry-run] would create ${def.key}: ${def.title}`); continue; }
175
+ const res = await api.tasks.postTasks({ body: {
176
+ version_id: VERSION,
177
+ title: def.title,
178
+ description: def.description,
179
+ kind: def.kind,
180
+ discipline: 'engineer',
181
+ priority: def.priority,
182
+ est_minutes: def.est,
183
+ credits_reward: def.credits,
184
+ touches: def.touches,
185
+ source: 'planning',
186
+ source_ref,
187
+ } });
188
+ const id = res.data?.task?.id;
189
+ idByKey[def.key] = Number(id);
190
+ console.log(`CREATE ${def.key}: id=${id}`);
191
+ created++;
192
+ }
193
+
194
+ // Dependencies (after all tasks exist so internal keys resolve).
195
+ // NOTE: PUT /dependencies is a FULL REPLACE of a task's task->task edges. This
196
+ // is safe because we only PUT the 7 tasks WE create (never the anchors 1727/
197
+ // 1689), so re-running can't clobber edges set elsewhere (e.g. the migration's
198
+ // 1727->1688). If a task's `deps` list here is ever hand-edited, re-running
199
+ // will overwrite that task's edge set to match — that's intended (this script
200
+ // is authoritative for its own tasks' deps), not a bug.
201
+ if (!DRY) {
202
+ for (const def of TASKS) {
203
+ if (!def.deps.length) continue;
204
+ const id = idByKey[def.key];
205
+ if (!id) continue;
206
+ const depIds = def.deps.map((d) => (typeof d === 'number' ? d : idByKey[d])).filter(Boolean);
207
+ if (!depIds.length) continue;
208
+ await api.tasks.putTasksIdDependencies({ id, body: { depends_on_task_ids: depIds } });
209
+ console.log(`DEPS ${def.key} (${id}) -> [${depIds.join(', ')}]`);
210
+ }
211
+ }
212
+
213
+ console.log(`\nGOAL id=${goalId} | created=${created} skipped=${skipped}`);
214
+ console.log('task ids:', JSON.stringify(idByKey));
215
+ console.log('\nNEXT: the guarded migration attaches these to the goal (goal_id), creates the');
216
+ console.log('goal criteria, and reparents the ADR-0103 spine (1726/1727/1728 -> G26, dep 1727->1688).');
217
+ }
218
+
219
+ main().catch((e) => { console.error(e); process.exit(1); });
@@ -0,0 +1,235 @@
1
+ #!/usr/bin/env node
2
+ // Seed the "Cloud Bongos — productization & self-host" tasks derived from the
3
+ // 2026-07-04 guided CLAUDE.md portability review (Lars + Claude, remote-control
4
+ // session). All land under BONGOS-V1, goal id=26 ("Cloud Bongos productization
5
+ // and self-host"), linked through that goal's done-when criteria:
6
+ // C16 gcarry-prod-customer2 — a second instance runs live on pinned core
7
+ // C22 gcarry-prod-upgrade — `bongos upgrade` is a real update channel
8
+ // C32 gcarry-prod-vanilla — vanilla boot is clean, NO host-branding leaks
9
+ // C35 gcarry-prod-hosting — instance hosting as a module
10
+ // Most of the CLAUDE.md-portability work is "de-leak the core so vanilla boots
11
+ // clean" -> C32.
12
+ //
13
+ // Shape mirrors seed-bongos-tasks.js exactly:
14
+ // - POST /api/gds/tasks { version_id:'BONGOS-V1', criterion_ids:['C32'], ... }
15
+ // - idempotent on source_ref (skips already-created)
16
+ // - display BV1.R## assigned dynamically after the current max (decorative)
17
+ //
18
+ // Usage: node scripts/gds/seed-productization-tasks.js [--dry-run]
19
+
20
+ const { cliClient, requireSession } = require('./cli-lib');
21
+
22
+ const DRY = process.argv.includes('--dry-run');
23
+
24
+ // Each: { key, title, description, kind, discipline, priority, est_minutes,
25
+ // manual_degree, credits_reward, touches, criteria, deps }
26
+ const TASKS = [
27
+ {
28
+ key: 'NAMING',
29
+ title: 'GDS → Bongos naming sweep across CLAUDE.md + core docs',
30
+ description: `From the 2026-07-04 CLAUDE.md review (bullets 3, 21, 151, 165, 195). The API prefix already moved to \`/api/bongos\` (src/bongos/api-prefix.js) with \`/api/gds\` kept as a permanent alias — but the docs still say "GDS." Sweep the user-facing naming in CLAUDE.md + core docs: \`/api/gds/*\` → \`/api/bongos/*\` (note the permanent alias once), and "GDS database / GDS task / GDS versions table" prose → "Bongos …". Follow the established "add the new surface, keep the old alias" precedent — do NOT break \`/api/gds\`. Directory rename (src/bongos/) is a SEPARATE task (see selfhost-rename-src).
31
+
32
+ **Done when:** no user-facing \`/api/gds\` or bare "GDS" naming remains in CLAUDE.md + the core nav/prose (aliases documented once); links still resolve; docs-entropy clean.`,
33
+ kind: 'refactor', discipline: 'engineer', priority: 4,
34
+ est_minutes: 90, manual_degree: 3, credits_reward: 20,
35
+ touches: ['CLAUDE.md', 'docs/'], criteria: ['C32'], deps: [],
36
+ },
37
+ {
38
+ key: 'RENAME-SRC',
39
+ title: 'src/bongos/ → src/bongos/ directory rename (staged, de-risked)',
40
+ description: `From the 2026-07-04 review (bullet 27). Owner wants the rename but is (rightly) wary of a huge, half-finished sweep. Make it deterministic, not a manual hunt. STAGED:
41
+ 1. **Spike / inventory** — enumerate EVERY reference site: JS require/import paths, docs, \`config/*\`, \`.claude/\` hooks + scheduled-tasks, migration comments, the droplet checkout path — and write a codemod (path-string rewrite is deterministic).
42
+ 2. **Execute behind green gates that PROVE completeness** — full test suite + \`node scripts/gds/fitness.js\` (import-boundary + repo-map freshness) + boot smoke + \`knip\` + \`docs-entropy\` link check must ALL stay green.
43
+ 3. **Compat shim** only for anything genuinely external (e.g. the droplet path). Mirror the api-prefix precedent (add new, don't break old) where a shim is cheap.
44
+
45
+ **Done when:** \`src/bongos/\` is \`src/bongos/\`; all gates green; nothing references the old path except an intentional shim; the codemod is committed so the approach is auditable.`,
46
+ kind: 'refactor', discipline: 'engineer', priority: 3,
47
+ est_minutes: 300, manual_degree: 2, credits_reward: 60,
48
+ touches: ['src/bongos/', 'scripts/', 'docs/', '.claude/'], criteria: ['C32'], deps: [],
49
+ },
50
+ {
51
+ key: 'DOCS-DISCOVERY',
52
+ title: 'ADR: instance docs-discovery contract (how an agent finds its hall/docs)',
53
+ description: `From the 2026-07-04 review (bullet 6). Today the only pointer to an instance's doc surface is \`domains.buildersOrigin\` in branding.json. A fresh self-hosted instance needs a DEFINED contract for how an agent reliably locates its builders' hall + rendered docs from config alone (standard docs location? discovery endpoint? manifest field?). Write an ADR that pins the contract, then CLAUDE.md's preamble references it instead of hand-waving.
54
+
55
+ **Done when:** an ADR records the docs-discovery contract; branding/config carries the needed field(s); CLAUDE.md §0 points at the contract; a second instance can resolve its docs surface with no hard-coded amazonprimea.`,
56
+ kind: 'decision', discipline: 'engineer', priority: 3,
57
+ est_minutes: 90, manual_degree: 3, credits_reward: 20,
58
+ touches: ['docs/adr/', 'config/', 'CLAUDE.md'], criteria: ['C16'], deps: [],
59
+ },
60
+ {
61
+ key: 'TRACKS',
62
+ title: 'Deprecate the two-track (product/internal) model',
63
+ description: `From the 2026-07-04 review (bullets 48 DECISION, 79, 148-149). Downstream instances build only THEIR product and will not contribute back to Cloud Bongos — they have a single track. Work-type differentiation is already handled by discipline/role (engineer/artist/ideator), so tracks are redundant. DEPRECATE: remove the two-track framing from CLAUDE.md (§1, §8), the nav row, \`tracks\` in branding.json, and \`docs/TRACKS.md\`; and unwind the code that derives a task's track from its version. Preserve any genuinely needed per-work-type behavior via roles.
64
+
65
+ **Done when:** no track concept remains in the portable core (docs/config/code); role/discipline is the sole work-type axis; existing tasks migrate cleanly; smoke + fitness green.`,
66
+ kind: 'refactor', discipline: 'engineer', priority: 4,
67
+ est_minutes: 240, manual_degree: 2, credits_reward: 50,
68
+ touches: ['CLAUDE.md', 'config/branding.json', 'docs/TRACKS.md', 'src/bongos/'], criteria: ['C32'], deps: [],
69
+ },
70
+ {
71
+ key: 'VERSION-ARCHIVES',
72
+ title: 'Relocate + genericize version-scope archives out of the core',
73
+ description: `From the 2026-07-04 review (bullets 49, 155). The core names instance/platform-specific version archives (game V1/V2, PMS-V1/V2, GDS-V3/V4) in the nav (§ nav) and §8 durable-artifacts. Portable core should describe the MECHANISM only (\`limitations/*-shipped.md\` = per-version scope archives, written after a guided review); the specific archives are host/platform state. Split: game-version archives → instance context (project-context.md); platform-version archives → Cloud Bongos platform docs; add the missing GDS-V4/BONGOS-V1 entry where platform history is kept. Flag the deeper question: a fresh instance's core template should ship with NO version history.
74
+
75
+ **Done when:** the core describes the archive mechanism generically; specific version archives live in instance/platform context; nav rows updated; GDS-V4/BONGOS-V1 no longer "missing."`,
76
+ kind: 'refactor', discipline: 'engineer', priority: 3,
77
+ est_minutes: 120, manual_degree: 3, credits_reward: 25,
78
+ touches: ['CLAUDE.md', 'docs/project-context.md', 'limitations/'], criteria: ['C32'], deps: [],
79
+ },
80
+ {
81
+ key: 'NAV-HYGIENE',
82
+ title: 'Nav hygiene — reference the module, split instance-specifics',
83
+ description: `From the 2026-07-04 review (bullets 42, 57, 64, 66, 68, 94). Several nav rows (and §2 prose) INLINE content that belongs to a module or to instance-specifics. Convert them to module references, and split anything naming the amazonprimea servers/assets into project-specific detail. By module:
84
+ - **discord** (57, 64, 94): inbound #ideas, build-broadcast, channel layout → reference the discord module; the general mechanism lives there, anything naming the amazonprimea Discord server specifically → project-specific detail.
85
+ - **art-pipeline** (66): the pixel-art design-system row → reference the art module; the pixel/greek style choice itself is instance detail.
86
+ - **game** (68): world-cell model + paths-as-overlays rows → the game module / instance context (out of the portable core).
87
+
88
+ **Done when:** those nav/§2 items are thin references to their modules; no module-owned or amazonprimea-server-specific detail is inlined in the core; the game-specific rows are out of core.`,
89
+ kind: 'cleanup', discipline: 'engineer', priority: 3,
90
+ est_minutes: 120, manual_degree: 3, credits_reward: 25,
91
+ touches: ['CLAUDE.md'], criteria: ['C32'], deps: [],
92
+ },
93
+ {
94
+ key: 'ECONOMY-REWARD',
95
+ title: 'Economy module owns reward config (currency + formula + peg), per-project',
96
+ description: `From the 2026-07-04 review (bullet 42). The reward currency + formula (\`round(true_cost_usd × 1.20)\`, "1 unit = $1") currently surface in CLAUDE.md — a portability leak AND a soft-integrity risk (an editable doc shouldn't state pay math). Move the reward configuration into the economy module as per-project, customizable config: currency label (already in branding \`currency.label\`), the reward multiplier, and the USD peg. CLAUDE.md's "how builders earn" nav row becomes a pointer to the economy module.
97
+
98
+ **Done when:** reward currency + formula + peg are economy-module config, customizable per instance; CLAUDE.md only references the module (no formula in the doc); existing OTB values preserved as that instance's config.`,
99
+ kind: 'feature', discipline: 'engineer', priority: 3,
100
+ est_minutes: 180, manual_degree: 2, credits_reward: 40,
101
+ touches: ['modules/economy/', 'CLAUDE.md', 'config/'], criteria: ['C32'], deps: [],
102
+ },
103
+ {
104
+ key: 'BUILDER-PROFILE',
105
+ title: '§2 "The Prompter" → per-builder interaction profile',
106
+ description: `From the 2026-07-04 review (bullets 85, 87, 92). Principle: there is NO special "owner" entity — an owner is just a builder with elevated permissions + a profile. So §2's "how to work with me" defaults should become a PER-BUILDER interaction profile (tone, technical level, local-toolchain familiarity), captured at onboarding and injected each session — extending the existing per-builder settings infra (the \`wandering\` knob already works this way). Include a layer that helps NON-TECHNICAL builders who lack their own local LLM/dev-tool config. Sound-on-turn-end (bullet 92) becomes builder-local ergonomics config too. The portable defaults stay as the fallback. §2 shrinks to a thin pointer.
107
+
108
+ **Done when:** a builder's interaction profile is captured at onboarding + injected per session (builder-settings); the portable defaults are the fallback; §2 is a pointer, not a hardcoded owner section; build-broadcast/sound mentions move to their modules (see nav-hygiene / discord).`,
109
+ kind: 'feature', discipline: 'engineer', priority: 3,
110
+ est_minutes: 240, manual_degree: 2, credits_reward: 50,
111
+ touches: ['modules/builder-settings/', 'modules/onboarding/', 'CLAUDE.md'], criteria: ['C32'], deps: [],
112
+ },
113
+ {
114
+ key: 'MODEL-SETTINGS',
115
+ title: 'Per-builder/instance model-allocation settings (§2 routing → link)',
116
+ description: `From the 2026-07-04 review (bullets 96-105). The subagent model-routing policy (main = Opus, subagents = Haiku/Opus, "no Sonnet") is hardcoded in CLAUDE.md §2 — it rots as model names change and is the same class of leak as the currency. Build per-builder/instance model-allocation SETTINGS (main session tier + subagent tiers, with defaults and overrides), improve them, and make §2's routing table a LINK to the setting. The existing §2 blockquote already promised this ("configurable model allocation").
117
+
118
+ **Done when:** model allocation is settings-driven (per-builder and/or instance defaults, overridable); §2 references the setting instead of hardcoding tiers; changing a default doesn't require a doc edit.`,
119
+ kind: 'feature', discipline: 'engineer', priority: 3,
120
+ est_minutes: 180, manual_degree: 2, credits_reward: 40,
121
+ touches: ['modules/builder-settings/', 'CLAUDE.md'], criteria: ['C32'], deps: [],
122
+ },
123
+ {
124
+ key: 'IDENTITY-ORG',
125
+ title: 'Rationalize the identity apparatus + structure project-context.md',
126
+ description: `From the 2026-07-04 review (bullets 109-111, 134/140, 187). Almost every identity section (§§1,3,5,6,7,9) is now a thin pointer to project-context.md, the §3 stub verbosely re-explains the core↔host split that §1 + the charter already cover, and the §6/§7 stubs still NAME the instance ("the Amazonprimea world", "the \`otb-*\` art skills"). Meanwhile project-context.md is getting overloaded (bullet 187). Fix: collapse §§3/5/6/7 to a single minimal pointer (or one-liners), genericize instance names out of any surviving stub, and give project-context.md a real section structure.
127
+
128
+ **Done when:** the stub scaffolding is minimal + instance-name-free in the core; project-context.md has a clear, non-overloaded structure; anchors/cross-refs still resolve.`,
129
+ kind: 'cleanup', discipline: 'engineer', priority: 3,
130
+ est_minutes: 120, manual_degree: 3, credits_reward: 25,
131
+ touches: ['CLAUDE.md', 'docs/project-context.md'], criteria: ['C32'], deps: [],
132
+ },
133
+ {
134
+ key: 'REPOMAP',
135
+ title: 'Generated-docs & repo-map overhaul (regen pattern + doc link-graph + staleness flags)',
136
+ description: `From the 2026-07-04 review (bullets 178, 193, 223/224/226). Three related moves, all applying the repo-map philosophy (generated, not committed, regenerated at deploy/box-fetch — ADR 0110) to fight doc drift:
137
+ 1. **178** — apply the repo-map generation pattern to the auto-generated diagrams (and session-index) so generated artifacts don't clutter git or drift.
138
+ 2. **193** — enhance repo-map with a DOC LINK-GRAPH (click architecture.md → see the docs it links to) + STALENESS FLAGS for docs needing touch-ups (builds on what docs-entropy.js already detects).
139
+ 3. **223/224/226** — the manual "remember to update architecture.md / file-map.md / detail files" session-end chores are drift-prone; replace with staleness-flagging + regen-where-possible so the update happens mechanically, not by memory.
140
+
141
+ **Done when:** generated docs follow the gitignore+regen pattern; repo-map shows a doc link-graph + staleness flags; the manual "update detail files" chores are reduced to flagged/auto-regenerated work. (May be split into 3 child tasks at triage.)`,
142
+ kind: 'feature', discipline: 'engineer', priority: 2,
143
+ est_minutes: 480, manual_degree: 2, credits_reward: 80,
144
+ touches: ['scripts/gds/', 'docs/'], criteria: ['C22'], deps: [],
145
+ },
146
+ {
147
+ key: 'SCHED-PORT',
148
+ title: 'Scheduled-routines portability to self-host + multi-builder',
149
+ description: `From the 2026-07-04 review (bullet 241). The ~17 autonomous cron routines under \`.claude/scheduled-tasks/\` (overnight-code-review, idea-triage-nightly, overnight-builder, bfg, security-review-weekly, …) are written for this instance. Define how they port to a self-hosted, multi-builder world: which run instance-wide vs per-builder, how a fresh instance inherits/configures them, and what a builder gets by default. Spike → a contract (and likely a config surface).
150
+
151
+ **Done when:** there's a documented model for which routines are instance-wide vs per-builder, how a fresh instance inherits them, and how a builder configures their own; no routine hard-assumes the amazonprimea instance.`,
152
+ kind: 'spike', discipline: 'engineer', priority: 2,
153
+ est_minutes: 120, manual_degree: 3, credits_reward: 25,
154
+ touches: ['.claude/scheduled-tasks/', 'docs/'], criteria: ['C16'], deps: [],
155
+ },
156
+ {
157
+ key: 'PROSE-POLISH',
158
+ title: 'CLAUDE.md prose polish (trims + two structural moves)',
159
+ description: `From the 2026-07-04 review (bullets 20, 77, 109-111, 134/140, 161, 170a, 170b). A batch of small doc improvements — split into safe trims and two structural moves:
160
+ TRIMS: drop the low-value ADR 0062 link in the charter row (20); drop the Medusa→Cloud Bongos rename parenthetical in §1 (77); trim the verbose §3 stub + genericize §6/§7 stub names (109-111, 134/140 — overlaps IDENTITY-ORG); delete the resolved touches-drift history in the §8 ship bullet (170b — already done via task 879).
161
+ STRUCTURAL: reposition the AI-first-norm paragraph out of mid-§8 to a prominent early spot + dedupe against the preamble (161); de-emphasize \`/merge-mode\` in §8 + §12 so it reads as the rare admin fallback it is, not a step people reach for while waiting on the 5-min auto-land (170a).
162
+
163
+ **Done when:** the trims are applied; the AI-first norm sits early + isn't repeated; merge-mode is demoted to fallback framing; budget/line-count not worsened.`,
164
+ kind: 'cleanup', discipline: 'engineer', priority: 2,
165
+ est_minutes: 90, manual_degree: 3, credits_reward: 20,
166
+ touches: ['CLAUDE.md'], criteria: ['C32'], deps: [],
167
+ },
168
+ ];
169
+
170
+ async function main() {
171
+ await requireSession();
172
+ const api = await cliClient();
173
+
174
+ const list = await api.tasks.getTasks({ query: { version: 'BONGOS-V1' } });
175
+ const existing = list.data?.tasks || [];
176
+ const bySourceRef = {};
177
+ let maxR = 0;
178
+ for (const t of existing) {
179
+ if (t.source_ref) bySourceRef[t.source_ref] = t;
180
+ const m = /BV1\.R(\d+)\b/.exec(t.title || '');
181
+ if (m) { const n = Number(m[1]); if (n > maxR) maxR = n; }
182
+ }
183
+ console.log(`context: ${existing.length} BONGOS-V1 tasks, maxR=BV1.R${maxR}`);
184
+
185
+ const refByKey = {};
186
+ TASKS.forEach((def, i) => { refByKey[def.key] = `R${maxR + 1 + i}`; });
187
+
188
+ let created = 0, skipped = 0, errors = 0;
189
+ for (const def of TASKS) {
190
+ const r = refByKey[def.key];
191
+ const source_ref = `selfhost-${def.key.toLowerCase()}`;
192
+ if (bySourceRef[source_ref]) {
193
+ console.log(`SKIP ${def.key} (${r}) already exists: id=${bySourceRef[source_ref].id}`);
194
+ skipped++;
195
+ continue;
196
+ }
197
+ if (DRY) {
198
+ console.log(`DRY ${def.key} -> BV1.${r} P${def.priority} ${def.kind}/${def.discipline} crit=${def.criteria.join('/')} ${def.title.slice(0, 60)}`);
199
+ continue;
200
+ }
201
+ const body = {
202
+ version_id: 'BONGOS-V1',
203
+ // Goal 26 = "Cloud Bongos productization and self-host". POST /tasks
204
+ // otherwise defaults goal_id to the version's general goal (3) even when
205
+ // criterion_ids points at a goal-26 criterion — so set it explicitly.
206
+ goal_id: 26,
207
+ title: `BV1.${r} — ${def.title}`,
208
+ description: def.description,
209
+ kind: def.kind,
210
+ discipline: def.discipline,
211
+ status: 'backlog',
212
+ priority: def.priority,
213
+ est_minutes: def.est_minutes,
214
+ manual_degree: def.manual_degree,
215
+ credits_reward: def.credits_reward,
216
+ touches: def.touches || [],
217
+ criterion_ids: def.criteria || [],
218
+ source: 'planning-session',
219
+ source_ref,
220
+ };
221
+ const res = await api.tasks.postTasks({ body });
222
+ if (res.status !== 201) {
223
+ console.error(`FAIL ${def.key}: status=${res.status} ${JSON.stringify(res.data).slice(0, 240)}`);
224
+ errors++;
225
+ continue;
226
+ }
227
+ console.log(`OK ${def.key} -> BV1.${r} task id=${res.data.task.id} (crit ${def.criteria.join('/')})`);
228
+ created++;
229
+ }
230
+
231
+ console.log(`\nDONE created=${created} skipped=${skipped} errors=${errors} (manifest: ${TASKS.length})`);
232
+ process.exit(errors === 0 ? 0 : 1);
233
+ }
234
+
235
+ main().catch((err) => { console.error('FATAL', err); process.exit(1); });
@@ -0,0 +1,83 @@
1
+ #!/usr/bin/env node
2
+ // seed-provisioning-tasks.js
3
+ // Seeds the follow-up tasks for ADR 0111 — the `provisioning` module (instance
4
+ // hosting + domains) + the self-host/managed split. Consolidates owner ideas
5
+ // #345 + #303 (task #1485, BONGOS-V1, goal 26). Idempotent on source_ref;
6
+ // dependency edges idempotent too. Cross-arm gating deps on R85/R86 (1689/1690).
7
+ // Run: node scripts/gds/seed-provisioning-tasks.js
8
+ const os = require('os');
9
+ const TOKEN = require(os.homedir() + '/.config/otb/gds-session.json').token;
10
+ const BASE = process.env.GDS_BASE || 'https://amazonprimea.com';
11
+ const H = { Authorization: `Bearer ${TOKEN}`, 'Content-Type': 'application/json' };
12
+ const GOAL = 26; // Cloud Bongos productization and self-host
13
+
14
+ // ref → task spec. deps are local P# refs; extDeps are already-existing task ids.
15
+ const TASKS = [
16
+ { ref: 'P1', kind: 'feature', discipline: 'engineer', priority: 3, est: 300,
17
+ title: 'BV1 — Scaffold the `provisioning` module (web-tier request + state surface, no cloud tokens)',
18
+ description: 'ADR 0111 §1. `bongos module new provisioning` (default:false, coreVersion ^1.14.0). Add the namespaced tables provisioning_instances / provisioning_intents / provisioning_events (modules/provisioning/migrations/provisioning_NNN_*.sql, additive). Contribute the HTTP routes: own-scoped create-request / read-own-state / request-teardown, plus Archon-scoped fleet roster + force actions (the /boxes precedent) — every write rank-gated. Register a provisioning.instanceState port. HARD boundary: this module holds NO cloud provider tokens and calls NO cloud API — it only enqueues intents + reads state (§2). deps: none. (buildable now)',
19
+ deps: [], extDeps: [] },
20
+ { ref: 'P2', kind: 'refactor', discipline: 'engineer', priority: 3, est: 180,
21
+ title: 'BV1 — Extract the shared DigitalOcean + Cloudflare control-plane clients (dev-box + provisioning reuse)',
22
+ description: 'ADR 0111 §2. The DO v2 client (modules/dev-box/do-api.js) and the Cloudflare DNS logic (infra/box-dns-cloudflare.sh) that the new provision.js runner needs currently live inside modules/dev-box/. A module may not import another module; box.js + provision.js are control-plane CLIs that may require code directly. Extract these into a shared control-plane location (scripts/gds/ or infra/) both CLIs use — dry-run-default preserved, dev-box behaviour byte-identical. Enables P3. deps: none. (buildable now)',
23
+ deps: [], extDeps: [] },
24
+ { ref: 'P3', kind: 'infra', discipline: 'engineer', priority: 3, est: 480,
25
+ title: 'BV1 — `scripts/gds/provision.js` control-plane runner + systemd timer (automate the standup runbook)',
26
+ description: 'ADR 0111 §2/§3. A sibling of box.js — the SOLE holder of the DO/Cloudflare tokens (from a chmod-600 /etc/<inst>/box.env via EnvironmentFile=), drained by a systemd timer running `provision.js run-intents --apply`. Drains provisioning_intents and composes the cloudbongos-standup.md runbook into one idempotent, dry-run-default, drift-reconciling flow: server (co-tenant process OR a dedicated droplet) → createdb + GDS-only migrate (MEDUSA_GDS_ONLY=1) → write config + per-instance /etc/<inst>/web.env → install per-instance systemd unit + port → Caddy site block + reload → /healthz. Never touches the web tier. deps: P1, P2. (buildable now)',
27
+ deps: ['P1', 'P2'], extDeps: [] },
28
+ { ref: 'P4', kind: 'infra', discipline: 'engineer', priority: 2, est: 300,
29
+ title: 'BV1 — Automated DNS record + Caddy on-demand ACME TLS for a provisioned host',
30
+ description: 'ADR 0111 §4. Cloudflare A-record UPSERT via the shared client (P2), plus Caddy on-demand ACME (Let\'s Encrypt) so a NEWLY provisioned host is TLS-ready with no manual Cloudflare Origin-Cert console step (the least-automated leg today). On-demand TLS MUST be allow-listed to hostnames the module actually provisioned (no cert-minting for arbitrary names). Existing amazonprimea/cloudbongos apexes keep their Origin Certs unchanged. deps: P2, P3. (buildable now)',
31
+ deps: ['P2', 'P3'], extDeps: [] },
32
+ { ref: 'P5', kind: 'feature', discipline: 'engineer', priority: 2, est: 240,
33
+ title: 'BV1 — Wire provisioning into `bongos init` (idea #345 — "configured via the API")',
34
+ description: 'ADR 0111 §3. The init.js interview\'s infra answers (bring-your-own-domain, target credential ref, hosting shape/tier) flow into a provisioning request (a provisioning_intents row) instead of only filing manual kickoff tasks. The two irreducibly-human steps stay guided/manual with exact instructions: GitHub OAuth-app creation (no clean create-API) and the first owner sign-in (seats the founding Archon). deps: P1, P3. (buildable now)',
35
+ deps: ['P1', 'P3'], extDeps: [] },
36
+ { ref: 'P6', kind: 'feature', discipline: 'ui', priority: 2, est: 240,
37
+ title: 'BV1 — Hall UI: "Instances" provisioning panel (own-scoped for owners, Archon fleet view)',
38
+ description: 'ADR 0111 §1. Surface provisioning_instances state + cost estimate: an owner sees their own instance(s) and request status; Archon sees the fleet roster + cost ledger. Reuse the dev-box "boxes" UI pattern (a uiSection gated by window.__MODULES__). deps: P1. (buildable now)',
39
+ deps: ['P1'], extDeps: [] },
40
+ { ref: 'P7', kind: 'spike', discipline: 'engineer', priority: 1, est: 240,
41
+ title: 'BV1 — Spec the managed fleet control plane (idea #303 — operate branded instances, push updates centrally)',
42
+ description: 'ADR 0111 §5/§7. Spec-first (an ADR): the central operator that sits ABOVE the locked per-repo GDS DBs (ADR 0100 §3), stands up branded instances on Cloud Bongos infra using the provisioning module pointed at Cloud-Bongos-held credentials, and drives the same `bongos upgrade` version-bump channel across the fleet. Same AGPL artifact (ADR 0065 §2 — no open-core). Genuinely greenfield (no fleet registry exists). Gated on R85 Mercury (#1689 — the first real second-repo consumer proving the two-repo path) + R86 (a real `bongos upgrade`, #1690). deps: 1689, 1690. (deferred)',
43
+ deps: [], extDeps: [1689, 1690] },
44
+ { ref: 'P8', kind: 'feature', discipline: 'engineer', priority: 1, est: 480,
45
+ title: 'BV1 — Managed billing / metering (meter provisioned resources → invoice → payment)',
46
+ description: 'ADR 0111 §6. No customer billing exists today (only a box cost LEDGER). The managed layer needs metering of provisioned resources → invoice → payment (Stripe; shares the V3 Stripe work). Reuse the SIZE_CATALOG per-size USD table for cost visibility. Self-host does not need this (the owner pays their own cloud bill). deps: P7. (deferred)',
47
+ deps: ['P7'], extDeps: [] },
48
+ ];
49
+
50
+ async function post(path, body) {
51
+ const r = await fetch(BASE + path, { method: 'POST', headers: H, body: JSON.stringify(body) });
52
+ return { status: r.status, json: await r.json().catch(() => ({})) };
53
+ }
54
+
55
+ (async () => {
56
+ const idByRef = {};
57
+ // Phase 1: create tasks (idempotent on source_ref), link goal 26 at create.
58
+ for (const t of TASKS) {
59
+ const body = {
60
+ version_id: 'BONGOS-V1', title: t.title, description: t.description,
61
+ kind: t.kind, discipline: t.discipline, priority: t.priority,
62
+ est_minutes: t.est, goal_id: GOAL,
63
+ source: 'planning', source_ref: `BONGOS-V1-prov-${t.ref}`,
64
+ };
65
+ const { status, json } = await post('/api/gds/tasks', body);
66
+ const id = json.id || (json.task && json.task.id);
67
+ if (!id) { console.log(` ${t.ref}: CREATE FAILED — ${status} ${JSON.stringify(json).slice(0, 160)}`); continue; }
68
+ idByRef[t.ref] = id;
69
+ console.log(` ${t.ref} -> task ${id} (${t.kind}, ${t.discipline}, P${t.priority})`);
70
+ }
71
+ // Phase 2: wire dependencies (idempotent on (task_id, depends_on_task_id)).
72
+ console.log('--- dependencies ---');
73
+ for (const t of TASKS) {
74
+ const id = idByRef[t.ref];
75
+ if (!id) continue;
76
+ const allDeps = [...t.deps.map((d) => idByRef[d]).filter(Boolean), ...t.extDeps];
77
+ for (const depId of allDeps) {
78
+ const { status, json } = await post(`/api/gds/tasks/${id}/dependencies`, { depends_on_task_id: depId });
79
+ console.log(` ${t.ref}(${id}) depends on ${depId} -> ${status === 200 || status === 201 ? 'ok' : (json.error || status)}`);
80
+ }
81
+ }
82
+ console.log('refs:', JSON.stringify(idByRef));
83
+ })();