@bongos/core 1.21.174 → 1.21.176

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 (1744) hide show
  1. package/.bongos-core.json +3565 -1515
  2. package/.claude/skills/ask-for-help/SKILL.md +4 -4
  3. package/.claude/skills/backlog-review/SKILL.md +1 -1
  4. package/.claude/skills/blocker-review/SKILL.md +2 -2
  5. package/.claude/skills/blocker-solve/SKILL.md +4 -4
  6. package/.claude/skills/bongos-feedback/SKILL.md +1 -1
  7. package/.claude/skills/bug-triage/SKILL.md +8 -8
  8. package/.claude/skills/builder-backup/SKILL.md +3 -3
  9. package/.claude/skills/builder-claim/SKILL.md +5 -5
  10. package/.claude/skills/builder-cost/SKILL.md +5 -5
  11. package/.claude/skills/builder-end/SKILL.md +6 -6
  12. package/.claude/skills/builder-exit/SKILL.md +2 -2
  13. package/.claude/skills/builder-key/SKILL.md +6 -6
  14. package/.claude/skills/builder-reauth/SKILL.md +4 -4
  15. package/.claude/skills/builder-redteam/SKILL.md +3 -3
  16. package/.claude/skills/builder-release/SKILL.md +3 -3
  17. package/.claude/skills/builder-sequence/SKILL.md +8 -8
  18. package/.claude/skills/builder-setup/SKILL.md +4 -4
  19. package/.claude/skills/builder-ship/SKILL.md +7 -7
  20. package/.claude/skills/builder-stage/SKILL.md +8 -8
  21. package/.claude/skills/builder-start/SKILL.md +4 -4
  22. package/.claude/skills/collab-review/SKILL.md +5 -5
  23. package/.claude/skills/design/SKILL.md +6 -4
  24. package/.claude/skills/design-sync/SKILL.md +3 -3
  25. package/.claude/skills/figma-design-sync/SKILL.md +4 -4
  26. package/.claude/skills/fix-task/SKILL.md +8 -8
  27. package/.claude/skills/goal-close/SKILL.md +9 -9
  28. package/.claude/skills/goal-create/SKILL.md +18 -18
  29. package/.claude/skills/grade-recover/SKILL.md +8 -8
  30. package/.claude/skills/grade-sweep/SKILL.md +15 -15
  31. package/.claude/skills/idea-triage/SKILL.md +15 -15
  32. package/.claude/skills/merge-mode/SKILL.md +14 -14
  33. package/.claude/skills/new-project/SKILL.md +5 -5
  34. package/.claude/skills/owner-review/SKILL.md +1 -1
  35. package/.claude/skills/planning-session/SKILL.md +14 -14
  36. package/.claude/skills/priority-session/SKILL.md +6 -6
  37. package/.claude/skills/read-session-export/SKILL.md +3 -3
  38. package/.claude/skills/recall/SKILL.md +7 -7
  39. package/.claude/skills/scan-before-install/SKILL.md +3 -3
  40. package/.claude/skills/session-handoff/SKILL.md +1 -1
  41. package/.claude/skills/ship-check/SKILL.md +3 -3
  42. package/.claude/skills/status/SKILL.md +3 -3
  43. package/.claude/skills/strand-fix/SKILL.md +6 -6
  44. package/.claude/skills/worktree-clean/SKILL.md +4 -4
  45. package/.gitattributes +12 -32
  46. package/GOVERNMENT.md +1 -1
  47. package/README.md +8 -8
  48. package/bin/bongos.js +23 -23
  49. package/clients/bongos-client/README.md +2 -2
  50. package/clients/bongos-client/bongos-client.global.js +22 -4
  51. package/clients/bongos-client/index.cjs +22 -4
  52. package/clients/bongos-client/index.d.ts +33 -4
  53. package/clients/bongos-client/index.mjs +21 -3
  54. package/config/branding.neutral.json +1 -1
  55. package/config/design-tokens.schema.json +1 -1
  56. package/config/modules.neutral.json +1 -3
  57. package/docs/adr/0029-status-page-outage-resilience.md +6 -6
  58. package/docs/adr/0227-a-task-network-map-is-refused-the-goal-graph-is-the-map.md +1 -1
  59. package/docs/adr/0294-cli-sessions-do-not-expire.md +1 -1
  60. package/docs/adr/0383-sessions-end-after-ten-idle-days.md +35 -0
  61. package/docs/adr/0384-the-raise-page-is-a-hub-module-builders-edit-in-place.md +31 -0
  62. package/docs/adr/README.md +2 -0
  63. package/docs/api/openapi.json +606 -44
  64. package/docs/api-reference.md +25 -12
  65. package/docs/architecture.md +8 -7
  66. package/docs/canonical-permissions.md +3 -3
  67. package/docs/copy-inventory.md +1389 -1437
  68. package/docs/copy-registry.json +2160 -2634
  69. package/docs/design/demonolith-plan.md +6 -6
  70. package/docs/design/modular-architecture/00-research-report.md +1 -1
  71. package/docs/design/project-startup-direction.md +2 -2
  72. package/docs/design/projects-hub-direction-v2.md +1 -1
  73. package/docs/design/reviews/hall-v2/README.md +2 -2
  74. package/docs/design/vanilla-hall-ui-redesign-scope.md +1 -1
  75. package/docs/file-map.md +89 -88
  76. package/docs/handoff-template.md +4 -4
  77. package/docs/module-api-changelog.md +6 -2
  78. package/docs/modules-contract.md +8 -7
  79. package/docs/onboarding/diagrams/01-task-lifecycle.mmd +1 -1
  80. package/docs/onboarding/diagrams/02-rank-ladder.mmd +1 -1
  81. package/docs/onboarding/diagrams/03-drachmae-karma.mmd +1 -1
  82. package/docs/onboarding/diagrams/04-architecture.mmd +1 -1
  83. package/docs/onboarding/diagrams/05-versioning.mmd +1 -1
  84. package/docs/onboarding/diagrams/README.md +2 -2
  85. package/docs/onboarding/diagrams/assertions.json +2 -2
  86. package/docs/onboarding/slash-commands.md +2 -2
  87. package/docs/packs/artist.md +4 -4
  88. package/docs/packs/engineer.md +11 -10
  89. package/docs/packs/ideator.md +7 -7
  90. package/docs/page-inventory.json +25 -1
  91. package/docs/page-readings.json +4388 -4602
  92. package/docs/recipes/README.md +1 -1
  93. package/docs/recipes/audit-replay.md +4 -4
  94. package/docs/recipes/autobongos-windows-host.md +6 -6
  95. package/docs/recipes/bongos-cli-release.md +2 -2
  96. package/docs/recipes/claude-design-loop.md +7 -7
  97. package/docs/recipes/core-release-pipeline.md +19 -19
  98. package/docs/recipes/failed-ship-recovery-proof.md +2 -2
  99. package/docs/recipes/figma-design-loop.md +6 -6
  100. package/docs/recipes/gds-db-backup.md +9 -9
  101. package/docs/recipes/instance-deploy.md +3 -3
  102. package/docs/recipes/instance-first-run.md +1 -1
  103. package/docs/recipes/multi-builder-merge.md +2 -2
  104. package/docs/recipes/ops-gotchas.md +10 -9
  105. package/docs/recipes/packaging-the-core.md +6 -6
  106. package/docs/recipes/parallel-goal-waves.md +4 -4
  107. package/docs/recipes/private-npm-distribution.md +9 -9
  108. package/docs/recipes/redteam-patrol.md +5 -5
  109. package/docs/recipes/render-pilot.md +2 -2
  110. package/docs/recipes/reranking-a-goals-board.md +2 -2
  111. package/docs/recipes/search-index-ingestion.md +5 -5
  112. package/docs/recipes/self-host.md +1 -1
  113. package/docs/recipes/ship-and-regrade.md +4 -4
  114. package/docs/recipes/staging-environment.md +1 -1
  115. package/docs/recipes/standalone-live-docs.md +1 -1
  116. package/docs/recipes/ui-look-before-you-ship.md +2 -2
  117. package/docs/recipes/upgrading-the-core.md +11 -11
  118. package/docs/recipes/windows-builders.md +18 -18
  119. package/docs/research/llm-model-agnostic-and-cheaper-grader.md +6 -6
  120. package/docs/research/task-network-map-readability.md +3 -3
  121. package/migrations/core_278_builder_tester_tag.sql +18 -0
  122. package/migrations/core_279_bongos_shipper_new_scripts_path.sql +13 -0
  123. package/modules/agents/lib/answer-hold.js +1 -1
  124. package/modules/agents/lib/gate.js +1 -1
  125. package/modules/agents/lib/validate.js +1 -1
  126. package/modules/autonomy/gauge.js +1 -1
  127. package/modules/autonomy/governor-docket.js +2 -2
  128. package/modules/autonomy/pollers/routine-timers.js +3 -3
  129. package/modules/autonomy/routes/autonomy.js +3 -3
  130. package/modules/builder-settings/interaction-prefs.js +1 -1
  131. package/modules/builder-settings/render-prefs.js +1 -1
  132. package/modules/builder-settings/routes/settings.js +1 -1
  133. package/modules/builder-settings/skill-prefs.js +2 -2
  134. package/modules/builder-settings/wandering-prefs.js +2 -2
  135. package/modules/copy-desk/module.json +2 -2
  136. package/modules/copy-desk/page-data.js +5 -5
  137. package/modules/copy-desk/page-decisions.js +13 -1
  138. package/modules/copy-desk/proposals.js +4 -4
  139. package/modules/copy-desk/registry.js +2 -2
  140. package/modules/copy-desk/routes/copy-desk-release.js +119 -0
  141. package/modules/copy-desk/routes/copy-desk.js +3 -12
  142. package/modules/copy-desk/skills/tweak/SKILL.md +12 -12
  143. package/modules/copy-desk/tests/copy_flags.mjs +1 -1
  144. package/modules/copy-desk/tests/copy_no_cms.mjs +7 -3
  145. package/modules/copy-desk/tests/copy_proposals.mjs +2 -2
  146. package/modules/copy-desk/tests/copy_queue.mjs +1 -1
  147. package/modules/design-styles/skills/README.md +4 -4
  148. package/modules/design-styles/skills/imagegen-frontend-mobile/SKILL.md +1 -1
  149. package/modules/design-styles/skills/imagegen-frontend-web/SKILL.md +1 -1
  150. package/modules/discord/bug-attachments.js +1 -1
  151. package/modules/discord/ship-broadcast.js +1 -1
  152. package/modules/economy/achievements.js +49 -7
  153. package/modules/economy/cost-classify.js +6 -6
  154. package/modules/economy/cost-report.js +1 -1
  155. package/modules/economy/cost.js +1 -1
  156. package/modules/economy/credits.js +2 -1
  157. package/modules/economy/idea-size.js +2 -2
  158. package/modules/economy/reward.js +2 -0
  159. package/modules/economy/routes/cost.js +1 -1
  160. package/modules/economy/streak.js +43 -4
  161. package/modules/government/asks.js +1 -1
  162. package/modules/government/board.js +19 -2
  163. package/modules/government/catalog.js +3 -0
  164. package/modules/government/migrations/government_033_idea_vote.sql +46 -0
  165. package/modules/government/protected-surfaces.json +48 -47
  166. package/modules/government/recommendations.js +6 -2
  167. package/modules/government/routes/government.js +1 -1
  168. package/modules/grading/generated-provenance.js +13 -5
  169. package/modules/grading/grade-engine.js +1 -1
  170. package/modules/grading/grader-rubric.json +1 -1
  171. package/modules/grading/grader-score.js +1 -1
  172. package/modules/grading/grader-workers/index.js +1 -1
  173. package/modules/grading/grader.js +1 -1
  174. package/modules/grading/routes/grade.js +1 -1
  175. package/modules/hall-ui/public/atlas.html +5 -7
  176. package/modules/hall-ui/public/atlas.js +1 -1
  177. package/modules/hall-ui/public/atlas.states.json +1 -1
  178. package/modules/hall-ui/public/blockers.css +9 -0
  179. package/modules/hall-ui/public/blockers.html +6 -4
  180. package/modules/hall-ui/public/blockers.js +39 -27
  181. package/modules/hall-ui/public/board-room.css +5 -12
  182. package/modules/hall-ui/public/board-room.html +6 -6
  183. package/modules/hall-ui/public/board-room.js +41 -23
  184. package/modules/hall-ui/public/board-room.states.json +1 -1
  185. package/modules/hall-ui/public/brand-apply.js +1 -1
  186. package/modules/hall-ui/public/brand-holes.js +1 -1
  187. package/modules/hall-ui/public/builders.js +40 -86
  188. package/modules/hall-ui/public/city-decide.js +18 -4
  189. package/modules/hall-ui/public/city.html +1 -1
  190. package/modules/hall-ui/public/collab.html +1 -1
  191. package/modules/hall-ui/public/commands.html +6 -9
  192. package/modules/hall-ui/public/copy-desk.html +1 -1
  193. package/modules/hall-ui/public/copy-desk.js +2 -2
  194. package/modules/hall-ui/public/craft-mode.js +4 -0
  195. package/modules/hall-ui/public/deploy.html +6 -2
  196. package/modules/hall-ui/public/deploy.js +21 -13
  197. package/modules/hall-ui/public/diagrams.css +1 -1
  198. package/modules/hall-ui/public/diagrams.html +5 -8
  199. package/modules/hall-ui/public/diagrams.states.json +1 -1
  200. package/modules/hall-ui/public/drachmae.html +3 -7
  201. package/modules/hall-ui/public/fleet.html +3 -2
  202. package/modules/hall-ui/public/fleet.js +0 -4
  203. package/modules/hall-ui/public/gate.html +7 -7
  204. package/modules/hall-ui/public/gate.js +58 -77
  205. package/modules/hall-ui/public/goal-inbox.js +69 -86
  206. package/modules/hall-ui/public/goal-map.html +1 -1
  207. package/modules/hall-ui/public/goals-page.js +5 -5
  208. package/modules/hall-ui/public/goals-render.js +10 -11
  209. package/modules/hall-ui/public/goals.css +10 -0
  210. package/modules/hall-ui/public/goals.html +14 -7
  211. package/modules/hall-ui/public/government.html +3 -5
  212. package/modules/hall-ui/public/government.js +1 -5
  213. package/modules/hall-ui/public/hall-ask.css +57 -0
  214. package/modules/hall-ui/public/hall-ask.js +50 -0
  215. package/modules/hall-ui/public/hall-render.js +117 -57
  216. package/modules/hall-ui/public/hall-widgets.js +11 -11
  217. package/modules/hall-ui/public/idea.html +1 -1
  218. package/modules/hall-ui/public/ideas.html +3 -1
  219. package/modules/hall-ui/public/ideas.js +1 -0
  220. package/modules/hall-ui/public/index.html +15 -6
  221. package/modules/hall-ui/public/index.states.json +1 -1
  222. package/modules/hall-ui/public/mine-lens.js +1 -1
  223. package/modules/hall-ui/public/modules.html +7 -10
  224. package/modules/hall-ui/public/modules.js +0 -2
  225. package/modules/hall-ui/public/my-agents.html +1 -1
  226. package/modules/hall-ui/public/palette.js +5 -5
  227. package/modules/hall-ui/public/primer.html +4 -9
  228. package/modules/hall-ui/public/profile-connections.js +10 -2
  229. package/modules/hall-ui/public/profile-roles.js +3 -10
  230. package/modules/hall-ui/public/profile.html +12 -10
  231. package/modules/hall-ui/public/profile.js +13 -17
  232. package/modules/hall-ui/public/project-settings.html +3 -4
  233. package/modules/hall-ui/public/project-settings.js +0 -3
  234. package/modules/hall-ui/public/ranks.html +5 -11
  235. package/modules/hall-ui/public/ranks.js +6 -8
  236. package/modules/hall-ui/public/roadmap.css +0 -2
  237. package/modules/hall-ui/public/roadmap.html +1 -1
  238. package/modules/hall-ui/public/roadmap.js +16 -51
  239. package/modules/hall-ui/public/roster.html +1 -1
  240. package/modules/hall-ui/public/sessions.html +6 -8
  241. package/modules/hall-ui/public/sessions.js +7 -7
  242. package/modules/hall-ui/public/settings.html +1 -1
  243. package/modules/hall-ui/public/shell-trail.js +1 -1
  244. package/modules/hall-ui/public/shell.js +17 -17
  245. package/modules/hall-ui/public/street-deck.css +2 -1
  246. package/modules/hall-ui/public/street-deck.js +10 -2
  247. package/modules/hall-ui/public/street-desk.js +16 -5
  248. package/modules/hall-ui/public/street.html +1 -1
  249. package/modules/hall-ui/public/studio-lib.js +4 -0
  250. package/modules/hall-ui/public/studio.css +2 -0
  251. package/modules/hall-ui/public/studio.html +1 -1
  252. package/modules/hall-ui/public/studio.js +27 -1
  253. package/modules/hall-ui/public/style.css +43 -26
  254. package/modules/hall-ui/public/task-detail.js +10 -7
  255. package/modules/hall-ui/public/task.css +2 -0
  256. package/modules/hall-ui/public/task.html +3 -1
  257. package/modules/hall-ui/public/task.js +23 -7
  258. package/modules/hall-ui/public/thinking.html +1 -1
  259. package/modules/hall-ui/public/tweak-editor.html +1 -1
  260. package/modules/hall-ui/public/vote-control.js +208 -0
  261. package/modules/hall-ui/public/watch.html +3 -5
  262. package/modules/hall-ui/public/watch.js +5 -4
  263. package/modules/hall-ui/public/welcome-boot.css +130 -0
  264. package/modules/hall-ui/public/welcome-boot.js +334 -0
  265. package/modules/hall-ui/public/welcome-day.webp +0 -0
  266. package/modules/hall-ui/public/welcome-night.webp +0 -0
  267. package/modules/hall-ui/public/work-summary.js +1 -1
  268. package/modules/hall-ui/public/work.css +1 -0
  269. package/modules/hall-ui/public/work.html +3 -1
  270. package/modules/hall-ui/public/work.js +2 -1
  271. package/modules/hall-ui/records/accomplishments.md +16 -0
  272. package/modules/hall-ui/records/hall-ask-card.md +33 -0
  273. package/modules/hall-ui/records/karma-vote-control.md +13 -0
  274. package/modules/hall-ui/records/oversight-family.md +1 -1
  275. package/modules/hall-ui/records/profile-connections.md +2 -0
  276. package/modules/hall-ui/records/profile-roles.md +1 -1
  277. package/modules/hall-ui/records/reading-rooms.md +1 -1
  278. package/modules/hall-ui/records/welcome-tower.md +50 -0
  279. package/modules/ideas/migrations/ideas_011_idea_votes.sql +31 -0
  280. package/modules/ideas/projection.js +1 -1
  281. package/modules/ideas/routes/blockers.js +3 -3
  282. package/modules/ideas/routes/inbox.js +29 -1
  283. package/modules/ideas/routes/ratify-goal.js +1 -1
  284. package/modules/ideas/routing.js +1 -1
  285. package/modules/ideas/templates.js +1 -1
  286. package/modules/ideas/trail-descent.js +1 -1
  287. package/modules/ideas/trail-size.js +1 -1
  288. package/modules/ideas/votes.js +93 -0
  289. package/modules/lifecycle/abandon-leftovers.js +1 -1
  290. package/modules/lifecycle/cascade.js +1 -1
  291. package/modules/lifecycle/conflict-resolve.js +13 -21
  292. package/modules/lifecycle/criterion-ref.js +1 -1
  293. package/modules/lifecycle/db-analytics.js +57 -4
  294. package/modules/lifecycle/db-deps-criteria.js +1 -1
  295. package/modules/lifecycle/db-ship.js +2 -2
  296. package/modules/lifecycle/db-tasks.js +2 -2
  297. package/modules/lifecycle/db-versions.js +1 -1
  298. package/modules/lifecycle/db.js +2 -0
  299. package/modules/lifecycle/dead-deps.js +3 -3
  300. package/modules/lifecycle/dependency-advisory.js +3 -3
  301. package/modules/lifecycle/goal-category.js +1 -1
  302. package/modules/lifecycle/goal-forest.js +1 -1
  303. package/modules/lifecycle/goal-task-relevance-advisory.js +1 -1
  304. package/modules/lifecycle/kickoff-checklist.js +1 -1
  305. package/modules/lifecycle/kickoff-seed.js +1 -1
  306. package/modules/lifecycle/lifecycle.js +2 -0
  307. package/modules/lifecycle/merge-reach.js +29 -15
  308. package/modules/lifecycle/missing-dep-classify.js +3 -3
  309. package/modules/lifecycle/module.json +2 -1
  310. package/modules/lifecycle/page-tweak-approve.js +85 -1
  311. package/modules/lifecycle/page-tweak-hold.js +1 -1
  312. package/modules/lifecycle/publish-reconciler.js +1 -2
  313. package/modules/lifecycle/rot.js +1 -1
  314. package/modules/lifecycle/routes/artist-gate.js +1 -1
  315. package/modules/lifecycle/routes/gate-approvals.js +22 -1
  316. package/modules/lifecycle/routes/goals.js +1 -1
  317. package/modules/lifecycle/routes/task-route-helpers.js +1 -1
  318. package/modules/lifecycle/routes/task-votes.js +54 -0
  319. package/modules/lifecycle/routes/task-write-routes.js +1 -1
  320. package/modules/lifecycle/routes/tasks.js +2 -2
  321. package/modules/lifecycle/routes/versions.js +2 -2
  322. package/modules/lifecycle/ship-card.js +4 -4
  323. package/modules/lifecycle/ship-preflight.js +1 -1
  324. package/modules/lifecycle/task-classifier.js +1 -1
  325. package/modules/lifecycle/task-status.js +1 -1
  326. package/modules/lifecycle/task-visual-db.js +1 -1
  327. package/modules/memory/learnings.js +1 -1
  328. package/modules/memory/pollers/search-index.js +2 -2
  329. package/modules/memory/routes/learnings.js +1 -1
  330. package/modules/memory/routes/memory.js +1 -1
  331. package/modules/memory/search.js +2 -2
  332. package/modules/npm-release/release.js +1 -1
  333. package/modules/onboarding/howto-moments.js +1 -1
  334. package/modules/onboarding/newcomer-restock.js +3 -3
  335. package/modules/onboarding/onboarding.js +1 -1
  336. package/modules/pixel-art/skills/otb-tile-generate/SKILL.md +1 -1
  337. package/modules/platform-identity/origin-containment.js +1 -1
  338. package/modules/platform-identity/publish-gate.js +1 -1
  339. package/modules/platform-identity/tests/platform-identity.mjs +1 -1
  340. package/modules/provisioning/capacity.js +1 -1
  341. package/modules/provisioning/core-upgrade.js +15 -9
  342. package/modules/provisioning/credential-preflight.js +3 -3
  343. package/modules/provisioning/disconnect.js +1 -1
  344. package/modules/provisioning/dns-resolves.js +1 -1
  345. package/modules/provisioning/module.json +1 -1
  346. package/modules/provisioning/onboard-plan.js +1 -1
  347. package/modules/provisioning/paid-shape-gate.js +2 -2
  348. package/modules/provisioning/planet-physics.js +11 -2
  349. package/modules/provisioning/pollers/liveness-sweep.js +1 -1
  350. package/modules/provisioning/pollers/runner-drift-notify.js +5 -5
  351. package/modules/provisioning/provisioning.js +2 -2
  352. package/modules/provisioning/render-lookup.js +1 -1
  353. package/modules/provisioning/render-standup.js +3 -3
  354. package/modules/provisioning/repo-private.js +1 -1
  355. package/modules/provisioning/routes/callback-page.js +1 -1
  356. package/modules/provisioning/routes/core-upgrade.js +23 -3
  357. package/modules/provisioning/routes/provisioning.js +2 -2
  358. package/modules/provisioning/routes/render-standup.js +1 -1
  359. package/modules/provisioning/routes/repo-private.js +1 -1
  360. package/modules/provisioning/soft-limits.js +1 -1
  361. package/modules/provisioning/starter-bundles.js +4 -2
  362. package/modules/provisioning/tests/provisioning.mjs +1 -1
  363. package/modules/public-landing/public/account.html +4 -6
  364. package/modules/public-landing/public/assets/cosmos.css +13 -6
  365. package/modules/public-landing/public/connections.html +4 -6
  366. package/modules/public-landing/public/contact.html +4 -6
  367. package/modules/public-landing/public/guild.html +4 -6
  368. package/modules/public-landing/public/index.html +11 -9
  369. package/modules/public-landing/public/invitations.html +4 -6
  370. package/modules/public-landing/public/privacy.html +4 -6
  371. package/modules/public-landing/public/projects.html +168 -46
  372. package/modules/public-landing/public/terms.html +4 -6
  373. package/modules/raise/content/copy.json +40 -0
  374. package/modules/raise/content/nda.html +39 -0
  375. package/modules/raise/content/settings.json +49 -0
  376. package/modules/raise/db.js +95 -0
  377. package/modules/raise/migrations/raise_001_tables.sql +71 -0
  378. package/modules/raise/module.json +28 -0
  379. package/modules/raise/page.js +194 -0
  380. package/modules/raise/public/edit.js +152 -0
  381. package/modules/raise/public/favicon.svg +1 -0
  382. package/modules/raise/public/logo-ink.svg +1 -0
  383. package/modules/raise/public/logo-night.svg +1 -0
  384. package/modules/raise/public/mode.js +8 -0
  385. package/modules/raise/public/raise.css +234 -0
  386. package/modules/raise/public/raise.js +91 -0
  387. package/modules/raise/raise.js +174 -0
  388. package/modules/raise/routes/raise.js +152 -0
  389. package/modules/raise/views/gate.html +39 -0
  390. package/modules/raise/views/nda.html +21 -0
  391. package/modules/raise/views/page.html +133 -0
  392. package/modules/raise/web.js +72 -0
  393. package/modules/render-deploy/deploys.js +1 -1
  394. package/modules/render-deploy/render.js +2 -2
  395. package/modules/security/secret-scrub.js +3 -3
  396. package/modules/security/security.js +1 -1
  397. package/modules/security/tests/artifact_scan.mjs +1 -1
  398. package/modules/security/tests/mirror.mjs +1 -1
  399. package/modules/security/tests/scan_store.mjs +1 -1
  400. package/modules/sessions/db.js +2 -2
  401. package/modules/sessions/pulse.js +2 -2
  402. package/modules/sessions/routes/sessions.js +1 -1
  403. package/modules/specialities/specialities.js +1 -1
  404. package/modules/status-ui/public/README.md +3 -4
  405. package/modules/status-ui/public/index.html +5 -31
  406. package/modules/status-ui/public/status.js +6 -174
  407. package/modules/status-ui/public/style.css +4 -133
  408. package/modules/ui-design/docs/design-contract.md +3 -3
  409. package/modules/ui-design/kit/README.md +1 -1
  410. package/modules/ui-design/kit/serve.js +13 -4
  411. package/modules/ui-design/scripts/design-sync.js +1 -1
  412. package/modules/ui-design/scripts/figma-design-sync.js +1 -1
  413. package/modules/ui-design/scripts/validate-design.js +1 -1
  414. package/package-lock.json +27 -11
  415. package/package.json +2 -3
  416. package/release-notes.json +178 -0
  417. package/scripts/bongos/CLAUDE.md +15 -0
  418. package/scripts/bongos/abandon.js +137 -0
  419. package/scripts/bongos/accessibility-replay.js +195 -0
  420. package/scripts/bongos/address-park-sweep.sh +91 -0
  421. package/scripts/bongos/adopt-detect.js +123 -0
  422. package/scripts/bongos/adopt-import.js +111 -0
  423. package/scripts/bongos/adopt-preflight.js +187 -0
  424. package/scripts/bongos/adr-namespace.js +273 -0
  425. package/scripts/bongos/agent-invoke.js +689 -0
  426. package/scripts/bongos/agents-sync.js +502 -0
  427. package/scripts/bongos/api-alias-caller-scan.js +256 -0
  428. package/scripts/bongos/api-artifacts.js +91 -0
  429. package/scripts/bongos/api.js +86 -0
  430. package/scripts/bongos/api.ps1 +26 -0
  431. package/scripts/bongos/architect-audit.js +294 -0
  432. package/scripts/bongos/artifact-audit.js +326 -0
  433. package/scripts/bongos/artifact-format.js +203 -0
  434. package/scripts/bongos/artifact-staleness.js +267 -0
  435. package/scripts/bongos/ask.js +231 -0
  436. package/scripts/bongos/audit-authorship.sh +329 -0
  437. package/scripts/bongos/audit-deps.js +189 -0
  438. package/scripts/bongos/audit-gate.js +121 -0
  439. package/scripts/bongos/audit-rank-roles.js +172 -0
  440. package/scripts/bongos/audit-replay.sh +205 -0
  441. package/scripts/bongos/autobongos-digest.js +123 -0
  442. package/scripts/bongos/autobongos-grade-cap.js +187 -0
  443. package/scripts/bongos/autobongos-loop.js +210 -0
  444. package/scripts/bongos/autobongos-run.js +1361 -0
  445. package/scripts/bongos/autobongos-service.cmd +50 -0
  446. package/scripts/bongos/autobongos-service.ps1 +270 -0
  447. package/scripts/bongos/autobongos-tweak-lane.js +262 -0
  448. package/scripts/bongos/autobongos-verify.js +618 -0
  449. package/scripts/bongos/autonomy-gate.js +135 -0
  450. package/scripts/bongos/autonomy-gauge-statusline.js +124 -0
  451. package/scripts/bongos/autonomy-gauge.js +84 -0
  452. package/scripts/bongos/backfill-cost.js +176 -0
  453. package/scripts/bongos/backfill-disciplines.js +144 -0
  454. package/scripts/bongos/backfill-session-earnings.js +123 -0
  455. package/scripts/bongos/backfill-session-types.js +87 -0
  456. package/scripts/bongos/backfill-sessions.js +411 -0
  457. package/scripts/bongos/backfill-subagent-rewards.js +485 -0
  458. package/scripts/bongos/backfill-task-rewards.js +413 -0
  459. package/scripts/bongos/backlog-review.js +399 -0
  460. package/scripts/bongos/backup-dropin-sweep.sh +95 -0
  461. package/scripts/bongos/backup.js +116 -0
  462. package/scripts/bongos/baseline-staleness.js +217 -0
  463. package/scripts/bongos/bfg-principal-token.js +65 -0
  464. package/scripts/bongos/bug-attachment-audit.js +149 -0
  465. package/scripts/bongos/bug-attachment-recover.js +198 -0
  466. package/scripts/bongos/bug-triage.js +292 -0
  467. package/scripts/bongos/build-bongos.js +94 -0
  468. package/scripts/bongos/bump-version.js +221 -0
  469. package/scripts/bongos/capture.js +481 -0
  470. package/scripts/bongos/category-advisory-guard.js +206 -0
  471. package/scripts/bongos/ci-grade.js +82 -0
  472. package/scripts/bongos/claim-recall.js +112 -0
  473. package/scripts/bongos/claim.js +789 -0
  474. package/scripts/bongos/classify-discipline.js +153 -0
  475. package/scripts/bongos/claude-materialize.js +1200 -0
  476. package/scripts/bongos/claude-md-template.js +142 -0
  477. package/scripts/bongos/cleanup-orphans.js +74 -0
  478. package/scripts/bongos/cli-lib.js +1226 -0
  479. package/scripts/bongos/client-baseurl-guard.js +116 -0
  480. package/scripts/bongos/codemod-rename-scripts-gds.js +381 -0
  481. package/scripts/bongos/codemod-rename-src-gds.js +145 -0
  482. package/scripts/bongos/conductor-dispatch.js +535 -0
  483. package/scripts/bongos/context-pack.js +326 -0
  484. package/scripts/bongos/control-manifest.js +199 -0
  485. package/scripts/bongos/copy-apply.js +758 -0
  486. package/scripts/bongos/copy-inventory.js +571 -0
  487. package/scripts/bongos/core-origin-follow.js +185 -0
  488. package/scripts/bongos/core-pin-sync.js +260 -0
  489. package/scripts/bongos/coreB-carve-proof.sh +725 -0
  490. package/scripts/bongos/cost-report.js +63 -0
  491. package/scripts/bongos/cost.js +47 -0
  492. package/scripts/bongos/credential-presence.js +296 -0
  493. package/scripts/bongos/cutover-codemod.js +240 -0
  494. package/scripts/bongos/db-backup-nightly.sh +232 -0
  495. package/scripts/bongos/db-backup-offsite.sh +267 -0
  496. package/scripts/bongos/demote.js +45 -0
  497. package/scripts/bongos/deploy-divergence.js +454 -0
  498. package/scripts/bongos/deploy-main-audit-gate.sh +97 -0
  499. package/scripts/bongos/design-sync.js +12 -0
  500. package/scripts/bongos/dev-box-guard.js +166 -0
  501. package/scripts/bongos/dev-lib.js +722 -0
  502. package/scripts/bongos/dev.js +645 -0
  503. package/scripts/bongos/device-flow-help.js +72 -0
  504. package/scripts/bongos/diagnose-achievements.js +118 -0
  505. package/scripts/bongos/diagram-facts.js +355 -0
  506. package/scripts/bongos/discord-channels.js +77 -0
  507. package/scripts/bongos/do-api.js +109 -0
  508. package/scripts/bongos/doc-cli-guard.js +274 -0
  509. package/scripts/bongos/doc-comment-coverage.js +139 -0
  510. package/scripts/bongos/doc-control-claims.js +170 -0
  511. package/scripts/bongos/docs-entropy.js +453 -0
  512. package/scripts/bongos/doctor.js +493 -0
  513. package/scripts/bongos/enroll-control-plane.js +101 -0
  514. package/scripts/bongos/exec-path-guard.js +564 -0
  515. package/scripts/bongos/feedback-send.js +249 -0
  516. package/scripts/bongos/fetch-art-key.js +106 -0
  517. package/scripts/bongos/fetch-sound-prefs.js +126 -0
  518. package/scripts/bongos/figma-design-sync.js +11 -0
  519. package/scripts/bongos/find-untested.js +371 -0
  520. package/scripts/bongos/fitness-checks-error-envelope.js +134 -0
  521. package/scripts/bongos/fitness-checks-identity.js +343 -0
  522. package/scripts/bongos/fitness-checks-packaging.js +132 -0
  523. package/scripts/bongos/fitness-checks-route-pins.js +76 -0
  524. package/scripts/bongos/fitness-checks-vocabulary.js +392 -0
  525. package/scripts/bongos/fitness-checks-write-validation.js +157 -0
  526. package/scripts/bongos/fitness-lib.js +127 -0
  527. package/scripts/bongos/fitness-migration-contraction.js +50 -0
  528. package/scripts/bongos/fitness-ratchets.js +594 -0
  529. package/scripts/bongos/fitness.js +1498 -0
  530. package/scripts/bongos/forwarder.js +80 -0
  531. package/scripts/bongos/gate-review.js +330 -0
  532. package/scripts/bongos/gating.js +348 -0
  533. package/scripts/{gds → bongos}/gds-db-backup.service +6 -6
  534. package/scripts/{gds → bongos}/gds-db-backup.timer +4 -4
  535. package/scripts/{gds → bongos}/gds-db-offsite.service +4 -4
  536. package/scripts/{gds → bongos}/gds-db-offsite.timer +4 -4
  537. package/scripts/bongos/gds-literal-scan.js +196 -0
  538. package/scripts/bongos/gen-api-client.js +576 -0
  539. package/scripts/bongos/gen-api-docs.js +1111 -0
  540. package/scripts/bongos/gen-atlas.js +366 -0
  541. package/scripts/bongos/gen-diagrams.js +608 -0
  542. package/scripts/bongos/gen-file-map.js +337 -0
  543. package/scripts/bongos/gen-freshness.js +32 -0
  544. package/scripts/bongos/gen-interaction-posture.js +122 -0
  545. package/scripts/bongos/gen-repo-map.js +540 -0
  546. package/scripts/bongos/gen-role-responsibilities.js +134 -0
  547. package/scripts/bongos/gen-session-index.js +243 -0
  548. package/scripts/bongos/gen-sounds.js +176 -0
  549. package/scripts/bongos/git-merge-regen.js +254 -0
  550. package/scripts/bongos/go-live.js +1071 -0
  551. package/scripts/bongos/goal-names.js +102 -0
  552. package/scripts/bongos/goal.js +272 -0
  553. package/scripts/bongos/government-walk.js +1477 -0
  554. package/scripts/bongos/grade-correlation-audit.js +310 -0
  555. package/scripts/bongos/grade-replay.js +237 -0
  556. package/scripts/bongos/grade-smoke.js +205 -0
  557. package/scripts/bongos/home-isolation-guard.js +126 -0
  558. package/scripts/bongos/hooks/pre-push.js +211 -0
  559. package/scripts/bongos/howto.js +145 -0
  560. package/scripts/bongos/http-api-client.js +81 -0
  561. package/scripts/bongos/identity-strip.js +75 -0
  562. package/scripts/bongos/init.js +1159 -0
  563. package/scripts/bongos/install-git-hooks.js +200 -0
  564. package/scripts/bongos/instance-apex.js +38 -0
  565. package/scripts/bongos/intent-retry.js +52 -0
  566. package/scripts/bongos/key-card.js +222 -0
  567. package/scripts/bongos/key-status.js +126 -0
  568. package/scripts/bongos/land-watch.js +201 -0
  569. package/scripts/bongos/leak-scan-allowlist.js +293 -0
  570. package/scripts/bongos/learning-capture.js +145 -0
  571. package/scripts/bongos/lib.sh +74 -0
  572. package/scripts/bongos/linkify-refs.js +655 -0
  573. package/scripts/bongos/lint-infra-exec.js +70 -0
  574. package/scripts/bongos/lint-migrations.js +102 -0
  575. package/scripts/bongos/lint-workflow-exec.js +63 -0
  576. package/scripts/bongos/local-preview-lib.js +128 -0
  577. package/scripts/bongos/local-preview.js +82 -0
  578. package/scripts/bongos/login.js +360 -0
  579. package/scripts/bongos/main-audit.js +625 -0
  580. package/scripts/bongos/me.js +97 -0
  581. package/scripts/bongos/memory-map.js +176 -0
  582. package/scripts/bongos/merge-lock.js +71 -0
  583. package/scripts/bongos/migration-namespace.js +313 -0
  584. package/scripts/bongos/mirror-lineage-check.js +343 -0
  585. package/scripts/bongos/mirror-redact.js +350 -0
  586. package/scripts/bongos/module-artifact.js +289 -0
  587. package/scripts/bongos/module-assess-docs.js +238 -0
  588. package/scripts/bongos/module-assess-installs.js +228 -0
  589. package/scripts/bongos/module-assess-score.js +111 -0
  590. package/scripts/bongos/module-assess-security.js +252 -0
  591. package/scripts/bongos/module-assess-tests.js +278 -0
  592. package/scripts/bongos/module-assess-version.js +92 -0
  593. package/scripts/bongos/module-error-report.js +148 -0
  594. package/scripts/{gds → bongos}/module-test-runner/README.md +3 -3
  595. package/scripts/{gds → bongos}/module-test-runner/module-tests.yml +2 -2
  596. package/scripts/bongos/module-test-runner.js +414 -0
  597. package/scripts/bongos/module.js +1376 -0
  598. package/scripts/bongos/move-escalation.js +141 -0
  599. package/scripts/{gds → bongos}/newcomer-floor.config.json +1 -1
  600. package/scripts/bongos/newcomer-floor.js +421 -0
  601. package/scripts/{gds → bongos}/newcomer-floor.templates.json +13 -13
  602. package/scripts/bongos/newcomer-floor.test.js +235 -0
  603. package/scripts/bongos/next-number.js +163 -0
  604. package/scripts/bongos/oauth-secret.js +202 -0
  605. package/scripts/bongos/onboard.js +267 -0
  606. package/scripts/bongos/onboarding-analyze.js +226 -0
  607. package/scripts/bongos/onboarding-config.js +179 -0
  608. package/scripts/bongos/onboarding-ship.js +92 -0
  609. package/scripts/bongos/pack-env-prefix.js +73 -0
  610. package/scripts/bongos/package-core.js +1200 -0
  611. package/scripts/bongos/page-inventory.js +348 -0
  612. package/scripts/bongos/page-reader.js +722 -0
  613. package/scripts/bongos/paste-token.js +212 -0
  614. package/scripts/bongos/plain-cards.js +351 -0
  615. package/scripts/bongos/portability-smoke-art.sh +85 -0
  616. package/scripts/bongos/portability-smoke-memory.sh +176 -0
  617. package/scripts/bongos/preflight.js +214 -0
  618. package/scripts/bongos/probe-cache.js +246 -0
  619. package/scripts/bongos/prove-strict-versioning.js +284 -0
  620. package/scripts/bongos/provision-auto-upgrade.js +162 -0
  621. package/scripts/bongos/provision-byo-host.js +68 -0
  622. package/scripts/bongos/provision-capacity.js +79 -0
  623. package/scripts/bongos/provision-caps.js +63 -0
  624. package/scripts/bongos/provision-config.js +233 -0
  625. package/scripts/bongos/provision-core-upgrade.js +1166 -0
  626. package/scripts/bongos/provision-disconnect.js +88 -0
  627. package/scripts/bongos/provision-github-setup.js +168 -0
  628. package/scripts/bongos/provision-net.js +357 -0
  629. package/scripts/bongos/provision-pin-key.js +176 -0
  630. package/scripts/bongos/provision-pin-replay.js +126 -0
  631. package/scripts/bongos/provision-process.js +170 -0
  632. package/scripts/bongos/provision-render.js +201 -0
  633. package/scripts/bongos/provision-repo-auth.js +164 -0
  634. package/scripts/bongos/provision-repo-private.js +98 -0
  635. package/scripts/bongos/provision-repo.js +1337 -0
  636. package/scripts/bongos/provision-teardown.js +106 -0
  637. package/scripts/bongos/provision-units.js +469 -0
  638. package/scripts/bongos/provision.js +1479 -0
  639. package/scripts/bongos/publish-credential-check.js +66 -0
  640. package/scripts/bongos/publish-integration-gate.js +142 -0
  641. package/scripts/bongos/publish-manifest.js +440 -0
  642. package/scripts/bongos/publish-watch.js +268 -0
  643. package/scripts/bongos/pulse.js +336 -0
  644. package/scripts/bongos/push-main.js +56 -0
  645. package/scripts/bongos/push-path-brief.js +100 -0
  646. package/scripts/bongos/read-session-export.js +359 -0
  647. package/scripts/bongos/reauth.js +155 -0
  648. package/scripts/bongos/recall.js +183 -0
  649. package/scripts/bongos/redteam-patrol.js +437 -0
  650. package/scripts/bongos/regen-instance-docs.js +47 -0
  651. package/scripts/bongos/release-core.js +80 -0
  652. package/scripts/bongos/release-notes.js +271 -0
  653. package/scripts/bongos/release.js +139 -0
  654. package/scripts/bongos/rename-goals.js +109 -0
  655. package/scripts/bongos/rename-history-check.js +369 -0
  656. package/scripts/bongos/rename-ledger-prose.js +482 -0
  657. package/scripts/bongos/render-api.js +197 -0
  658. package/scripts/bongos/render-check.js +206 -0
  659. package/scripts/bongos/render-ideas.js +226 -0
  660. package/scripts/bongos/render-payload.js +85 -0
  661. package/scripts/bongos/repo-metrics.js +363 -0
  662. package/scripts/bongos/review-sheet.js +108 -0
  663. package/scripts/bongos/role-pack-guard.js +142 -0
  664. package/scripts/bongos/route-shadow-guard.js +175 -0
  665. package/scripts/bongos/routine-schedule.js +283 -0
  666. package/scripts/bongos/run-routine.js +257 -0
  667. package/scripts/bongos/run-unit-tests.js +654 -0
  668. package/scripts/bongos/runner-drift.js +151 -0
  669. package/scripts/bongos/sandbox-stage.js +459 -0
  670. package/scripts/bongos/scope-map-guard.js +300 -0
  671. package/scripts/bongos/scope-roster-guard.js +118 -0
  672. package/scripts/bongos/seam-wiring-guard.js +275 -0
  673. package/scripts/bongos/search-ingest-db.js +288 -0
  674. package/scripts/bongos/search-ingest-md.js +269 -0
  675. package/scripts/bongos/seed-adopt-tasks.js +75 -0
  676. package/scripts/bongos/seed-api-contract-goal-tasks.js +141 -0
  677. package/scripts/bongos/seed-board-room-tasks.js +196 -0
  678. package/scripts/bongos/seed-bongos-app-tasks.js +294 -0
  679. package/scripts/bongos/seed-bongos-coreB-tranche1-tasks.js +81 -0
  680. package/scripts/bongos/seed-bongos-coreB-tranche2-tasks.js +100 -0
  681. package/scripts/bongos/seed-bongos-goal-hierarchy-tasks.js +307 -0
  682. package/scripts/bongos/seed-bongos-module-system-tasks.js +346 -0
  683. package/scripts/bongos/seed-bongos-tasks.js +214 -0
  684. package/scripts/bongos/seed-bongos-v1-idea-routing-tasks.js +152 -0
  685. package/scripts/bongos/seed-bongos-v1-seo-tasks.js +104 -0
  686. package/scripts/bongos/seed-bv1-community-tasks.js +131 -0
  687. package/scripts/bongos/seed-bv1-privacy-invites-tasks.js +133 -0
  688. package/scripts/bongos/seed-bv1-profile-page-tasks.js +161 -0
  689. package/scripts/bongos/seed-bv1-profiles-tasks.js +135 -0
  690. package/scripts/bongos/seed-bv1-r01-delta-tasks.js +154 -0
  691. package/scripts/bongos/seed-bv2-ideator-surface-tasks.js +390 -0
  692. package/scripts/bongos/seed-bv2-tweak-mode-tasks.js +277 -0
  693. package/scripts/bongos/seed-gds-v4-tasks.js +624 -0
  694. package/scripts/bongos/seed-governance-tasks.js +340 -0
  695. package/scripts/bongos/seed-medusa-tasks.js +440 -0
  696. package/scripts/bongos/seed-module-upstreaming.js +219 -0
  697. package/scripts/bongos/seed-productization-tasks.js +235 -0
  698. package/scripts/bongos/seed-project-admin-console-tasks.js +88 -0
  699. package/scripts/bongos/seed-provisioning-tasks.js +83 -0
  700. package/scripts/bongos/seed-staging.sh +117 -0
  701. package/scripts/bongos/seed-strict-versioning-tasks.js +275 -0
  702. package/scripts/bongos/seed-v2-world-tasks.js +283 -0
  703. package/scripts/bongos/seed-verify-criteria.js +124 -0
  704. package/scripts/bongos/sequence.js +597 -0
  705. package/scripts/bongos/session-cost.js +430 -0
  706. package/scripts/bongos/session-digest-build.js +293 -0
  707. package/scripts/bongos/session-digest.js +200 -0
  708. package/scripts/bongos/session-eval.js +631 -0
  709. package/scripts/bongos/session-transcript-build.js +155 -0
  710. package/scripts/bongos/session-transcript-upload.js +29 -0
  711. package/scripts/bongos/session.js +404 -0
  712. package/scripts/bongos/setup.js +646 -0
  713. package/scripts/bongos/ship-check.js +89 -0
  714. package/scripts/bongos/ship-deploy-target.js +393 -0
  715. package/scripts/bongos/ship-escalation.js +167 -0
  716. package/scripts/bongos/ship-finish.js +420 -0
  717. package/scripts/bongos/ship-flow.js +1217 -0
  718. package/scripts/bongos/ship-git.js +100 -0
  719. package/scripts/bongos/ship-grade-steps.js +547 -0
  720. package/scripts/bongos/ship-grade.js +426 -0
  721. package/scripts/bongos/ship-honesty.js +314 -0
  722. package/scripts/bongos/ship-io.js +139 -0
  723. package/scripts/bongos/ship-land.js +1130 -0
  724. package/scripts/bongos/ship-memory-sync.js +249 -0
  725. package/scripts/bongos/ship-merge-gate.js +225 -0
  726. package/scripts/bongos/ship-merge.js +466 -0
  727. package/scripts/bongos/ship-mode-ask.js +138 -0
  728. package/scripts/bongos/ship-mode-manual.js +54 -0
  729. package/scripts/bongos/ship-preflight-steps.js +399 -0
  730. package/scripts/bongos/ship-regen.js +292 -0
  731. package/scripts/bongos/ship-resume.js +201 -0
  732. package/scripts/bongos/ship-session-upload.js +313 -0
  733. package/scripts/bongos/ship-state.js +110 -0
  734. package/scripts/bongos/ship-surprise.js +84 -0
  735. package/scripts/bongos/ship-visual.js +75 -0
  736. package/scripts/bongos/ship.js +382 -0
  737. package/scripts/bongos/shipping-mode.js +71 -0
  738. package/scripts/bongos/skill-lint.js +250 -0
  739. package/scripts/bongos/skill-preflight.js +361 -0
  740. package/scripts/bongos/smoke-batch-claim.sh +238 -0
  741. package/scripts/bongos/smoke-batch-release.sh +316 -0
  742. package/scripts/bongos/smoke-claim-consistency.sh +222 -0
  743. package/scripts/bongos/smoke-dependencies.sh +143 -0
  744. package/scripts/bongos/smoke-gds.js +256 -0
  745. package/scripts/bongos/smoke-write.sh +275 -0
  746. package/scripts/bongos/source-text-test-scan.js +106 -0
  747. package/scripts/bongos/spark.js +294 -0
  748. package/scripts/bongos/stale-worktrees.js +212 -0
  749. package/scripts/bongos/start-goals.js +102 -0
  750. package/scripts/bongos/start.js +1090 -0
  751. package/scripts/bongos/status.js +545 -0
  752. package/scripts/bongos/strand-watch.js +315 -0
  753. package/scripts/bongos/stranded-rows.js +200 -0
  754. package/scripts/bongos/stray-unit-sweep.sh +71 -0
  755. package/scripts/bongos/surface.js +101 -0
  756. package/scripts/bongos/task.js +273 -0
  757. package/scripts/bongos/test-path-guard.js +99 -0
  758. package/scripts/bongos/triage.js +742 -0
  759. package/scripts/bongos/turn-end-sound.js +74 -0
  760. package/scripts/bongos/tweak-halt.js +70 -0
  761. package/scripts/bongos/tweak-renders.js +200 -0
  762. package/scripts/bongos/uat.js +120 -0
  763. package/scripts/bongos/ui-kit-transform.js +43 -0
  764. package/scripts/bongos/update-channel.js +512 -0
  765. package/scripts/bongos/update-sweep.js +829 -0
  766. package/scripts/bongos/upgrade-artist-gate.js +46 -0
  767. package/scripts/bongos/upgrade-commit-identity.js +32 -0
  768. package/scripts/bongos/upgrade-migrate.js +224 -0
  769. package/scripts/bongos/upgrade-operator.js +73 -0
  770. package/scripts/bongos/upgrade-outcome.js +174 -0
  771. package/scripts/bongos/upgrade.js +1499 -0
  772. package/scripts/bongos/validate-design.js +12 -0
  773. package/scripts/bongos/version-close.js +621 -0
  774. package/scripts/bongos/version-literal-guard.js +140 -0
  775. package/scripts/bongos/version-select.js +79 -0
  776. package/scripts/bongos/visual-review-nudge.js +39 -0
  777. package/scripts/bongos/wedge-remedy.js +174 -0
  778. package/scripts/bongos/worktree-claim-guard.js +130 -0
  779. package/scripts/bongos/worktree.js +449 -0
  780. package/scripts/discord/post.js +1 -1
  781. package/scripts/gds/README.md +9 -0
  782. package/scripts/gds/abandon.js +6 -136
  783. package/scripts/gds/accessibility-replay.js +5 -194
  784. package/scripts/gds/address-park-sweep.sh +7 -90
  785. package/scripts/gds/adopt-detect.js +5 -121
  786. package/scripts/gds/adopt-import.js +5 -109
  787. package/scripts/gds/adopt-preflight.js +5 -185
  788. package/scripts/gds/adr-namespace.js +5 -271
  789. package/scripts/gds/agent-invoke.js +5 -687
  790. package/scripts/gds/agents-sync.js +5 -500
  791. package/scripts/gds/api-alias-caller-scan.js +5 -255
  792. package/scripts/gds/api-artifacts.js +6 -0
  793. package/scripts/gds/api.js +6 -85
  794. package/scripts/gds/api.ps1 +8 -26
  795. package/scripts/gds/architect-audit.js +6 -293
  796. package/scripts/gds/artifact-audit.js +5 -324
  797. package/scripts/gds/artifact-format.js +6 -203
  798. package/scripts/gds/artifact-staleness.js +5 -265
  799. package/scripts/gds/ask.js +5 -229
  800. package/scripts/gds/audit-authorship.sh +7 -328
  801. package/scripts/gds/audit-deps.js +6 -188
  802. package/scripts/gds/audit-gate.js +5 -119
  803. package/scripts/gds/audit-rank-roles.js +6 -171
  804. package/scripts/gds/audit-replay.sh +7 -204
  805. package/scripts/gds/autobongos-digest.js +5 -121
  806. package/scripts/gds/autobongos-grade-cap.js +5 -186
  807. package/scripts/gds/autobongos-loop.js +5 -208
  808. package/scripts/gds/autobongos-run.js +5 -1359
  809. package/scripts/gds/autobongos-service.cmd +8 -49
  810. package/scripts/gds/autobongos-service.ps1 +8 -270
  811. package/scripts/gds/autobongos-tweak-lane.js +5 -261
  812. package/scripts/gds/autobongos-verify.js +5 -616
  813. package/scripts/gds/autonomy-gate.js +5 -133
  814. package/scripts/gds/autonomy-gauge-statusline.js +5 -122
  815. package/scripts/gds/autonomy-gauge.js +5 -82
  816. package/scripts/gds/backfill-cost.js +6 -175
  817. package/scripts/gds/backfill-disciplines.js +5 -142
  818. package/scripts/gds/backfill-session-earnings.js +5 -121
  819. package/scripts/gds/backfill-session-types.js +5 -85
  820. package/scripts/gds/backfill-sessions.js +5 -409
  821. package/scripts/gds/backfill-subagent-rewards.js +5 -483
  822. package/scripts/gds/backfill-task-rewards.js +5 -411
  823. package/scripts/gds/backlog-review.js +6 -398
  824. package/scripts/gds/backup-dropin-sweep.sh +7 -94
  825. package/scripts/gds/backup.js +6 -115
  826. package/scripts/gds/baseline-staleness.js +5 -215
  827. package/scripts/gds/bfg-principal-token.js +6 -64
  828. package/scripts/gds/bug-attachment-audit.js +5 -147
  829. package/scripts/gds/bug-attachment-recover.js +5 -196
  830. package/scripts/gds/bug-triage.js +6 -291
  831. package/scripts/gds/build-bongos.js +5 -92
  832. package/scripts/gds/bump-version.js +5 -219
  833. package/scripts/gds/capture.js +6 -480
  834. package/scripts/gds/category-advisory-guard.js +5 -205
  835. package/scripts/gds/ci-grade.js +6 -81
  836. package/scripts/gds/claim-recall.js +6 -111
  837. package/scripts/gds/claim.js +6 -788
  838. package/scripts/gds/classify-discipline.js +6 -152
  839. package/scripts/gds/claude-materialize.js +5 -1198
  840. package/scripts/gds/claude-md-template.js +5 -140
  841. package/scripts/gds/cleanup-orphans.js +6 -73
  842. package/scripts/gds/cli-lib.js +6 -1204
  843. package/scripts/gds/client-baseurl-guard.js +5 -114
  844. package/scripts/gds/codemod-rename-src-gds.js +6 -144
  845. package/scripts/gds/conductor-dispatch.js +6 -534
  846. package/scripts/gds/context-pack.js +6 -325
  847. package/scripts/gds/control-manifest.js +5 -197
  848. package/scripts/gds/copy-apply.js +5 -756
  849. package/scripts/gds/copy-inventory.js +5 -569
  850. package/scripts/gds/core-origin-follow.js +5 -184
  851. package/scripts/gds/core-pin-sync.js +5 -258
  852. package/scripts/gds/coreB-carve-proof.sh +7 -724
  853. package/scripts/gds/cost-report.js +6 -62
  854. package/scripts/gds/cost.js +6 -46
  855. package/scripts/gds/credential-presence.js +5 -294
  856. package/scripts/gds/cutover-codemod.js +5 -239
  857. package/scripts/gds/db-backup-nightly.sh +7 -231
  858. package/scripts/gds/db-backup-offsite.sh +7 -266
  859. package/scripts/gds/demote.js +6 -44
  860. package/scripts/gds/deploy-divergence.js +6 -445
  861. package/scripts/gds/deploy-main-audit-gate.sh +7 -96
  862. package/scripts/gds/design-sync.js +5 -10
  863. package/scripts/gds/dev-box-guard.js +5 -164
  864. package/scripts/gds/dev-lib.js +5 -721
  865. package/scripts/gds/dev.js +5 -643
  866. package/scripts/gds/device-flow-help.js +5 -70
  867. package/scripts/gds/diagnose-achievements.js +5 -116
  868. package/scripts/gds/diagram-facts.js +6 -355
  869. package/scripts/gds/discord-channels.js +5 -75
  870. package/scripts/gds/do-api.js +6 -109
  871. package/scripts/gds/doc-cli-guard.js +5 -266
  872. package/scripts/gds/doc-comment-coverage.js +5 -137
  873. package/scripts/gds/doc-control-claims.js +5 -166
  874. package/scripts/gds/docs-entropy.js +5 -443
  875. package/scripts/gds/doctor.js +6 -492
  876. package/scripts/gds/enroll-control-plane.js +5 -99
  877. package/scripts/gds/exec-path-guard.js +5 -562
  878. package/scripts/gds/feedback-send.js +5 -247
  879. package/scripts/gds/fetch-art-key.js +5 -104
  880. package/scripts/gds/fetch-sound-prefs.js +5 -124
  881. package/scripts/gds/figma-design-sync.js +5 -9
  882. package/scripts/gds/find-untested.js +5 -369
  883. package/scripts/gds/fitness-checks-error-envelope.js +5 -133
  884. package/scripts/gds/fitness-checks-identity.js +5 -342
  885. package/scripts/gds/fitness-checks-packaging.js +5 -131
  886. package/scripts/gds/fitness-checks-route-pins.js +5 -75
  887. package/scripts/gds/fitness-checks-vocabulary.js +5 -391
  888. package/scripts/gds/fitness-checks-write-validation.js +5 -156
  889. package/scripts/gds/fitness-lib.js +5 -126
  890. package/scripts/gds/fitness-migration-contraction.js +5 -49
  891. package/scripts/gds/fitness-ratchets.js +5 -563
  892. package/scripts/gds/fitness.js +5 -1493
  893. package/scripts/gds/gate-review.js +5 -328
  894. package/scripts/gds/gating.js +5 -346
  895. package/scripts/gds/gds-literal-scan.js +5 -194
  896. package/scripts/gds/gen-api-client.js +5 -555
  897. package/scripts/gds/gen-api-docs.js +5 -1100
  898. package/scripts/gds/gen-atlas.js +5 -364
  899. package/scripts/gds/gen-diagrams.js +6 -607
  900. package/scripts/gds/gen-file-map.js +5 -335
  901. package/scripts/gds/gen-freshness.js +5 -31
  902. package/scripts/gds/gen-interaction-posture.js +5 -120
  903. package/scripts/gds/gen-repo-map.js +5 -538
  904. package/scripts/gds/gen-role-responsibilities.js +5 -133
  905. package/scripts/gds/gen-session-index.js +5 -241
  906. package/scripts/gds/gen-sounds.js +5 -174
  907. package/scripts/gds/git-merge-regen.js +6 -291
  908. package/scripts/gds/go-live.js +5 -1069
  909. package/scripts/gds/goal-names.js +5 -100
  910. package/scripts/gds/goal.js +6 -271
  911. package/scripts/gds/government-walk.js +5 -1475
  912. package/scripts/gds/grade-correlation-audit.js +5 -308
  913. package/scripts/gds/grade-replay.js +5 -235
  914. package/scripts/gds/grade-smoke.js +6 -204
  915. package/scripts/gds/home-isolation-guard.js +5 -125
  916. package/scripts/gds/hooks/pre-push.js +5 -209
  917. package/scripts/gds/howto.js +5 -143
  918. package/scripts/gds/http-api-client.js +6 -81
  919. package/scripts/gds/identity-strip.js +5 -74
  920. package/scripts/gds/init.js +5 -1157
  921. package/scripts/gds/install-git-hooks.js +5 -198
  922. package/scripts/gds/instance-apex.js +5 -37
  923. package/scripts/gds/intent-retry.js +5 -51
  924. package/scripts/gds/key-card.js +6 -221
  925. package/scripts/gds/key-status.js +5 -124
  926. package/scripts/gds/land-watch.js +5 -199
  927. package/scripts/gds/leak-scan-allowlist.js +5 -291
  928. package/scripts/gds/learning-capture.js +6 -144
  929. package/scripts/gds/lib.sh +7 -73
  930. package/scripts/gds/linkify-refs.js +6 -654
  931. package/scripts/gds/lint-infra-exec.js +5 -68
  932. package/scripts/gds/lint-migrations.js +5 -100
  933. package/scripts/gds/lint-workflow-exec.js +5 -61
  934. package/scripts/gds/local-preview-lib.js +6 -128
  935. package/scripts/gds/local-preview.js +6 -81
  936. package/scripts/gds/login.js +5 -358
  937. package/scripts/gds/main-audit.js +5 -623
  938. package/scripts/gds/me.js +6 -96
  939. package/scripts/gds/memory-map.js +5 -174
  940. package/scripts/gds/merge-lock.js +6 -70
  941. package/scripts/gds/migration-namespace.js +5 -311
  942. package/scripts/gds/mirror-lineage-check.js +5 -341
  943. package/scripts/gds/mirror-redact.js +5 -348
  944. package/scripts/gds/module-artifact.js +6 -289
  945. package/scripts/gds/module-assess-docs.js +6 -237
  946. package/scripts/gds/module-assess-installs.js +6 -227
  947. package/scripts/gds/module-assess-score.js +6 -110
  948. package/scripts/gds/module-assess-security.js +6 -251
  949. package/scripts/gds/module-assess-tests.js +6 -277
  950. package/scripts/gds/module-assess-version.js +6 -91
  951. package/scripts/gds/module-error-report.js +5 -146
  952. package/scripts/gds/module-test-runner.js +6 -413
  953. package/scripts/gds/module.js +5 -1374
  954. package/scripts/gds/move-escalation.js +5 -140
  955. package/scripts/gds/newcomer-floor.js +6 -420
  956. package/scripts/gds/newcomer-floor.test.js +6 -234
  957. package/scripts/gds/next-number.js +6 -162
  958. package/scripts/gds/oauth-secret.js +5 -200
  959. package/scripts/gds/onboard.js +5 -265
  960. package/scripts/gds/onboarding-analyze.js +6 -225
  961. package/scripts/gds/onboarding-config.js +6 -179
  962. package/scripts/gds/onboarding-ship.js +6 -91
  963. package/scripts/gds/pack-env-prefix.js +5 -72
  964. package/scripts/gds/package-core.js +5 -1102
  965. package/scripts/gds/page-inventory.js +5 -346
  966. package/scripts/gds/page-reader.js +5 -720
  967. package/scripts/gds/paste-token.js +6 -211
  968. package/scripts/gds/plain-cards.js +5 -350
  969. package/scripts/gds/portability-smoke-art.sh +7 -84
  970. package/scripts/gds/portability-smoke-memory.sh +7 -175
  971. package/scripts/gds/preflight.js +5 -212
  972. package/scripts/gds/probe-cache.js +5 -244
  973. package/scripts/gds/prove-strict-versioning.js +6 -283
  974. package/scripts/gds/provision-auto-upgrade.js +5 -161
  975. package/scripts/gds/provision-byo-host.js +5 -67
  976. package/scripts/gds/provision-capacity.js +5 -78
  977. package/scripts/gds/provision-caps.js +5 -62
  978. package/scripts/gds/provision-config.js +5 -232
  979. package/scripts/gds/provision-core-upgrade.js +5 -1165
  980. package/scripts/gds/provision-disconnect.js +5 -87
  981. package/scripts/gds/provision-github-setup.js +5 -167
  982. package/scripts/gds/provision-net.js +5 -356
  983. package/scripts/gds/provision-pin-key.js +5 -175
  984. package/scripts/gds/provision-pin-replay.js +5 -125
  985. package/scripts/gds/provision-process.js +5 -169
  986. package/scripts/gds/provision-render.js +5 -200
  987. package/scripts/gds/provision-repo-auth.js +5 -163
  988. package/scripts/gds/provision-repo-private.js +5 -97
  989. package/scripts/gds/provision-repo.js +5 -1336
  990. package/scripts/gds/provision-teardown.js +5 -105
  991. package/scripts/gds/provision-units.js +5 -468
  992. package/scripts/gds/provision.js +5 -1477
  993. package/scripts/gds/publish-credential-check.js +6 -65
  994. package/scripts/gds/publish-integration-gate.js +5 -140
  995. package/scripts/gds/publish-manifest.js +5 -437
  996. package/scripts/gds/publish-watch.js +5 -266
  997. package/scripts/gds/pulse.js +6 -335
  998. package/scripts/gds/push-main.js +5 -54
  999. package/scripts/gds/push-path-brief.js +5 -98
  1000. package/scripts/gds/read-session-export.js +5 -357
  1001. package/scripts/gds/reauth.js +6 -154
  1002. package/scripts/gds/recall.js +6 -182
  1003. package/scripts/gds/redteam-patrol.js +5 -435
  1004. package/scripts/gds/regen-instance-docs.js +5 -45
  1005. package/scripts/gds/release-core.js +5 -78
  1006. package/scripts/gds/release-notes.js +5 -270
  1007. package/scripts/gds/release.js +6 -138
  1008. package/scripts/gds/rename-goals.js +5 -107
  1009. package/scripts/gds/rename-history-check.js +5 -367
  1010. package/scripts/gds/rename-ledger-prose.js +5 -480
  1011. package/scripts/gds/render-api.js +5 -196
  1012. package/scripts/gds/render-check.js +5 -204
  1013. package/scripts/gds/render-ideas.js +6 -225
  1014. package/scripts/gds/render-payload.js +5 -84
  1015. package/scripts/gds/repo-metrics.js +6 -362
  1016. package/scripts/gds/review-sheet.js +5 -106
  1017. package/scripts/gds/role-pack-guard.js +5 -141
  1018. package/scripts/gds/route-shadow-guard.js +5 -173
  1019. package/scripts/gds/routine-schedule.js +5 -281
  1020. package/scripts/gds/run-routine.js +5 -255
  1021. package/scripts/gds/run-unit-tests.js +6 -659
  1022. package/scripts/gds/runner-drift.js +5 -149
  1023. package/scripts/gds/sandbox-stage.js +6 -458
  1024. package/scripts/gds/scope-map-guard.js +5 -299
  1025. package/scripts/gds/scope-roster-guard.js +5 -117
  1026. package/scripts/gds/seam-wiring-guard.js +5 -274
  1027. package/scripts/gds/search-ingest-db.js +6 -287
  1028. package/scripts/gds/search-ingest-md.js +6 -268
  1029. package/scripts/gds/seed-adopt-tasks.js +6 -74
  1030. package/scripts/gds/seed-api-contract-goal-tasks.js +6 -140
  1031. package/scripts/gds/seed-board-room-tasks.js +6 -196
  1032. package/scripts/gds/seed-bongos-app-tasks.js +6 -293
  1033. package/scripts/gds/seed-bongos-coreB-tranche1-tasks.js +6 -80
  1034. package/scripts/gds/seed-bongos-coreB-tranche2-tasks.js +6 -99
  1035. package/scripts/gds/seed-bongos-goal-hierarchy-tasks.js +6 -306
  1036. package/scripts/gds/seed-bongos-module-system-tasks.js +6 -345
  1037. package/scripts/gds/seed-bongos-tasks.js +6 -213
  1038. package/scripts/gds/seed-bongos-v1-idea-routing-tasks.js +6 -152
  1039. package/scripts/gds/seed-bongos-v1-seo-tasks.js +6 -104
  1040. package/scripts/gds/seed-bv1-community-tasks.js +6 -131
  1041. package/scripts/gds/seed-bv1-privacy-invites-tasks.js +6 -133
  1042. package/scripts/gds/seed-bv1-profile-page-tasks.js +6 -161
  1043. package/scripts/gds/seed-bv1-profiles-tasks.js +6 -135
  1044. package/scripts/gds/seed-bv1-r01-delta-tasks.js +6 -154
  1045. package/scripts/gds/seed-bv2-ideator-surface-tasks.js +6 -390
  1046. package/scripts/gds/seed-bv2-tweak-mode-tasks.js +6 -277
  1047. package/scripts/gds/seed-gds-v4-tasks.js +6 -623
  1048. package/scripts/gds/seed-governance-tasks.js +6 -339
  1049. package/scripts/gds/seed-medusa-tasks.js +6 -439
  1050. package/scripts/gds/seed-module-upstreaming.js +5 -217
  1051. package/scripts/gds/seed-productization-tasks.js +6 -234
  1052. package/scripts/gds/seed-project-admin-console-tasks.js +6 -88
  1053. package/scripts/gds/seed-provisioning-tasks.js +6 -82
  1054. package/scripts/gds/seed-staging.sh +7 -116
  1055. package/scripts/gds/seed-strict-versioning-tasks.js +6 -274
  1056. package/scripts/gds/seed-v2-world-tasks.js +6 -282
  1057. package/scripts/gds/seed-verify-criteria.js +6 -124
  1058. package/scripts/gds/sequence.js +6 -596
  1059. package/scripts/gds/session-cost.js +6 -429
  1060. package/scripts/gds/session-digest-build.js +6 -293
  1061. package/scripts/gds/session-digest.js +6 -199
  1062. package/scripts/gds/session-eval.js +6 -630
  1063. package/scripts/gds/session-transcript-build.js +6 -155
  1064. package/scripts/gds/session-transcript-upload.js +6 -29
  1065. package/scripts/gds/session.js +6 -403
  1066. package/scripts/gds/setup.js +6 -645
  1067. package/scripts/gds/ship-check.js +5 -85
  1068. package/scripts/gds/ship-deploy-target.js +5 -392
  1069. package/scripts/gds/ship-escalation.js +5 -166
  1070. package/scripts/gds/ship-finish.js +5 -419
  1071. package/scripts/gds/ship-flow.js +5 -1216
  1072. package/scripts/gds/ship-git.js +5 -99
  1073. package/scripts/gds/ship-grade-steps.js +5 -546
  1074. package/scripts/gds/ship-grade.js +5 -425
  1075. package/scripts/gds/ship-honesty.js +5 -312
  1076. package/scripts/gds/ship-io.js +5 -138
  1077. package/scripts/gds/ship-land.js +5 -1129
  1078. package/scripts/gds/ship-memory-sync.js +5 -248
  1079. package/scripts/gds/ship-merge-gate.js +5 -224
  1080. package/scripts/gds/ship-merge.js +5 -465
  1081. package/scripts/gds/ship-mode-ask.js +5 -137
  1082. package/scripts/gds/ship-mode-manual.js +5 -53
  1083. package/scripts/gds/ship-preflight-steps.js +5 -398
  1084. package/scripts/gds/ship-regen.js +5 -313
  1085. package/scripts/gds/ship-resume.js +5 -200
  1086. package/scripts/gds/ship-session-upload.js +5 -312
  1087. package/scripts/gds/ship-state.js +5 -109
  1088. package/scripts/gds/ship-surprise.js +5 -83
  1089. package/scripts/gds/ship-visual.js +5 -74
  1090. package/scripts/gds/ship.js +5 -380
  1091. package/scripts/gds/shipping-mode.js +5 -69
  1092. package/scripts/gds/skill-lint.js +5 -248
  1093. package/scripts/gds/skill-preflight.js +5 -359
  1094. package/scripts/gds/smoke-batch-claim.sh +7 -237
  1095. package/scripts/gds/smoke-batch-release.sh +7 -315
  1096. package/scripts/gds/smoke-claim-consistency.sh +7 -221
  1097. package/scripts/gds/smoke-dependencies.sh +7 -142
  1098. package/scripts/gds/smoke-gds.js +6 -255
  1099. package/scripts/gds/smoke-write.sh +7 -274
  1100. package/scripts/gds/source-text-test-scan.js +7 -0
  1101. package/scripts/gds/spark.js +6 -293
  1102. package/scripts/gds/stale-worktrees.js +5 -210
  1103. package/scripts/gds/start-goals.js +5 -101
  1104. package/scripts/gds/start.js +6 -1089
  1105. package/scripts/gds/status.js +6 -544
  1106. package/scripts/gds/strand-watch.js +5 -313
  1107. package/scripts/gds/stranded-rows.js +5 -198
  1108. package/scripts/gds/stray-unit-sweep.sh +7 -70
  1109. package/scripts/gds/surface.js +5 -100
  1110. package/scripts/gds/task.js +6 -272
  1111. package/scripts/gds/test-path-guard.js +5 -97
  1112. package/scripts/gds/triage.js +6 -741
  1113. package/scripts/gds/turn-end-sound.js +5 -72
  1114. package/scripts/gds/tweak-halt.js +5 -68
  1115. package/scripts/gds/tweak-renders.js +5 -198
  1116. package/scripts/gds/uat.js +6 -119
  1117. package/scripts/gds/ui-kit-transform.js +5 -41
  1118. package/scripts/gds/update-channel.js +5 -510
  1119. package/scripts/gds/update-sweep.js +5 -827
  1120. package/scripts/gds/upgrade-artist-gate.js +5 -45
  1121. package/scripts/gds/upgrade-commit-identity.js +5 -31
  1122. package/scripts/gds/upgrade-migrate.js +5 -223
  1123. package/scripts/gds/upgrade-operator.js +6 -73
  1124. package/scripts/gds/upgrade-outcome.js +5 -173
  1125. package/scripts/gds/upgrade.js +5 -1497
  1126. package/scripts/gds/validate-design.js +5 -10
  1127. package/scripts/gds/version-close.js +6 -620
  1128. package/scripts/gds/version-literal-guard.js +5 -138
  1129. package/scripts/gds/version-select.js +5 -77
  1130. package/scripts/gds/visual-review-nudge.js +5 -38
  1131. package/scripts/gds/wedge-remedy.js +5 -173
  1132. package/scripts/gds/worktree-claim-guard.js +5 -129
  1133. package/scripts/gds/worktree.js +6 -448
  1134. package/scripts/hall-preview/refresh-fixtures.js +1 -1
  1135. package/scripts/hall-preview/server.js +2 -2
  1136. package/scripts/migrate.sh +3 -3
  1137. package/scripts/public-mirror-export.js +3 -3
  1138. package/scripts/setup-builder.js +7 -7
  1139. package/src/bongos/api-errors.js +1 -0
  1140. package/src/bongos/api-prefix.js +1 -1
  1141. package/src/bongos/auth-github.js +19 -3
  1142. package/src/bongos/auth-idp.js +7 -0
  1143. package/src/bongos/claim-attribution.js +2 -2
  1144. package/src/bongos/core-moves.js +1 -1
  1145. package/src/bongos/core-update.js +3 -3
  1146. package/src/bongos/craft-mode.js +2 -2
  1147. package/src/bongos/db-kernel.js +15 -3
  1148. package/src/bongos/db.js +30 -4
  1149. package/src/bongos/github-repos.js +1 -1
  1150. package/src/bongos/llm-cache.js +1 -1
  1151. package/src/bongos/llm-pricing.js +1 -1
  1152. package/src/bongos/metrics.js +1 -1
  1153. package/src/bongos/middleware/rate-limit.js +2 -2
  1154. package/src/bongos/module-listing.js +93 -1
  1155. package/src/bongos/module-scope-map.js +90 -85
  1156. package/src/bongos/module-store.js +1 -1
  1157. package/src/bongos/module-submissions.js +1 -1
  1158. package/src/bongos/optimizer.js +1 -1
  1159. package/src/bongos/package-registry.js +1 -1
  1160. package/src/bongos/path-match.js +1 -1
  1161. package/src/bongos/permission-path-check.js +3 -3
  1162. package/src/bongos/platform-visibility-gate.js +3 -5
  1163. package/src/bongos/prelaunch-gate.js +7 -6
  1164. package/src/bongos/route-rank-check.js +2 -2
  1165. package/src/bongos/routes/auth.js +15 -2
  1166. package/src/bongos/routes/backup.js +1 -1
  1167. package/src/bongos/routes/builders.js +29 -1
  1168. package/src/bongos/routes/me.js +49 -18
  1169. package/src/bongos/routes/modules.js +29 -9
  1170. package/src/bongos/routes/public.js +3 -72
  1171. package/src/bongos/schema-lag.js +1 -1
  1172. package/src/bongos/sensitive-surfaces.js +1 -1
  1173. package/src/bongos/serve-internal.js +65 -16
  1174. package/src/bongos/software-update.js +2 -2
  1175. package/src/bongos/upgrade-hold.js +3 -3
  1176. package/src/hall-look.js +6 -5
  1177. package/src/module-api.js +3 -3
  1178. package/src/module-loader/catalog.js +1 -1
  1179. package/src/module-loader/error-tally.js +3 -3
  1180. package/src/module-loader/manifest-schema.js +3 -3
  1181. package/src/platform-server.js +10 -0
  1182. package/src/role-responsibilities.js +1 -1
  1183. package/src/stale-timer.js +2 -2
  1184. package/tests/accessibility_replay.mjs +1 -1
  1185. package/tests/activity_rollup_order_db.mjs +1 -1
  1186. package/tests/activity_snapshots_db.mjs +1 -1
  1187. package/tests/adopt_detect.mjs +1 -1
  1188. package/tests/adopt_import.mjs +1 -1
  1189. package/tests/adopt_preflight.mjs +1 -1
  1190. package/tests/adr_0089_scope.mjs +10 -7
  1191. package/tests/adr_0162_citation.mjs +1 -1
  1192. package/tests/adr_0162_gate_citation.mjs +1 -1
  1193. package/tests/agent_invoke.mjs +1 -1
  1194. package/tests/agent_invoke_live.mjs +3 -3
  1195. package/tests/agents_cron_trigger.mjs +2 -2
  1196. package/tests/agents_roster.mjs +1 -1
  1197. package/tests/agents_sync.mjs +4 -4
  1198. package/tests/allow_rule_guard.mjs +20 -20
  1199. package/tests/api_alias_caller_ratchet.mjs +9 -10
  1200. package/tests/api_alias_exceptions.mjs +7 -6
  1201. package/tests/api_artifacts.mjs +214 -0
  1202. package/tests/api_cli_flags.mjs +3 -3
  1203. package/tests/api_client.mjs +56 -54
  1204. package/tests/api_docs.mjs +30 -9
  1205. package/tests/api_error_envelope_buildcheck.mjs +1 -1
  1206. package/tests/api_msys_path_repair.mjs +2 -2
  1207. package/tests/architect.mjs +1 -1
  1208. package/tests/art_stage.mjs +2 -2
  1209. package/tests/artifact_audit.mjs +2 -2
  1210. package/tests/artifact_staleness.mjs +9 -9
  1211. package/tests/atlas.mjs +1 -1
  1212. package/tests/audit_deps.mjs +1 -1
  1213. package/tests/audit_gate.mjs +1 -1
  1214. package/tests/auth_flow_slice1.mjs +3 -3
  1215. package/tests/auth_inactive_builder.mjs +43 -5
  1216. package/tests/auth_session_expiry_db.mjs +16 -4
  1217. package/tests/auth_session_ttl.mjs +23 -0
  1218. package/tests/authorship_audit.mjs +2 -2
  1219. package/tests/autobongos_cadence.mjs +1 -1
  1220. package/tests/autobongos_fence.mjs +1 -1
  1221. package/tests/autobongos_grade_cap.mjs +2 -2
  1222. package/tests/autobongos_heartbeat_head.mjs +1 -1
  1223. package/tests/autobongos_host_access.mjs +3 -3
  1224. package/tests/autobongos_loop.mjs +17 -17
  1225. package/tests/autobongos_service_ps1.mjs +3 -3
  1226. package/tests/autobongos_tweak_lane.mjs +2 -2
  1227. package/tests/autobongos_verify.mjs +2 -2
  1228. package/tests/autonomous_fit_protected_paths.mjs +3 -3
  1229. package/tests/autonomy_config_idle.mjs +1 -1
  1230. package/tests/autonomy_digest.mjs +1 -1
  1231. package/tests/autonomy_gate.mjs +1 -1
  1232. package/tests/autonomy_gauge.mjs +2 -2
  1233. package/tests/autonomy_runner_identity.mjs +1 -1
  1234. package/tests/backfill_sessions.mjs +8 -8
  1235. package/tests/backfill_subagent_rewards.mjs +1 -1
  1236. package/tests/backfill_task_rewards.mjs +2 -2
  1237. package/tests/backlog_review.mjs +3 -3
  1238. package/tests/baseline_staleness.mjs +2 -2
  1239. package/tests/bfg.mjs +11 -5
  1240. package/tests/bfg_write.mjs +20 -11
  1241. package/tests/blockers_hall.mjs +17 -5
  1242. package/tests/blockers_page_ui.mjs +56 -12
  1243. package/tests/bongos_dispatch.mjs +5 -5
  1244. package/tests/bongos_login.mjs +2 -2
  1245. package/tests/bug_attachment_audit.mjs +1 -1
  1246. package/tests/bug_attachment_recover.mjs +2 -2
  1247. package/tests/bug_triage.mjs +3 -3
  1248. package/tests/build_info.mjs +1 -1
  1249. package/tests/builder_tester_tag.mjs +184 -0
  1250. package/tests/bump_version.mjs +3 -3
  1251. package/tests/canonical_profile_url.mjs +1 -1
  1252. package/tests/capture_error_format.mjs +1 -1
  1253. package/tests/capture_goal_routing.mjs +2 -2
  1254. package/tests/category_advisory_guard.mjs +3 -3
  1255. package/tests/claim_error_surface.mjs +2 -2
  1256. package/tests/claim_from_task_and_home.mjs +1 -1
  1257. package/tests/claim_gate_open_blocker.mjs +7 -4
  1258. package/tests/claim_gate_rebase.mjs +12 -8
  1259. package/tests/claim_recall.mjs +4 -4
  1260. package/tests/claim_resolve_worktree_lock.mjs +1 -1
  1261. package/tests/claude_materialize.mjs +58 -58
  1262. package/tests/clawback_confirmed_backlog.mjs +8 -5
  1263. package/tests/cli_allowlist_permissions.mjs +11 -11
  1264. package/tests/cli_dispatcher.mjs +2 -2
  1265. package/tests/cli_err_code.mjs +6 -6
  1266. package/tests/cli_exit_no_abort.mjs +7 -7
  1267. package/tests/cli_lib_formatters.mjs +2 -2
  1268. package/tests/cli_sessions.mjs +5 -5
  1269. package/tests/cli_surface.mjs +15 -15
  1270. package/tests/cli_token_reissue.mjs +2 -2
  1271. package/tests/client_baseurl_guard.mjs +1 -1
  1272. package/tests/client_bundle_route.mjs +35 -4
  1273. package/tests/cloud_bongos_pack.mjs +1 -1
  1274. package/tests/community_leaderboard_db.mjs +1 -1
  1275. package/tests/conductor.mjs +18 -18
  1276. package/tests/conflict_resolve.mjs +14 -16
  1277. package/tests/consumer_layout_boot.mjs +12 -12
  1278. package/tests/context_pack.mjs +6 -6
  1279. package/tests/control_manifest.mjs +4 -4
  1280. package/tests/copy_desk_page_reads.mjs +1 -1
  1281. package/tests/copy_desk_page_release.mjs +192 -0
  1282. package/tests/copy_inventory.mjs +2 -2
  1283. package/tests/core_auto_upgrade.mjs +1 -1
  1284. package/tests/core_move_notice.mjs +2 -2
  1285. package/tests/core_origin_follow.mjs +7 -7
  1286. package/tests/core_pin_sync.mjs +3 -3
  1287. package/tests/core_upgrade_door.mjs +2 -2
  1288. package/tests/core_upgrade_owner_door.mjs +34 -1
  1289. package/tests/core_upgrade_runner.mjs +19 -19
  1290. package/tests/credential_presence.mjs +2 -2
  1291. package/tests/credit_grant.mjs +3 -3
  1292. package/tests/credit_log_single_writer.mjs +5 -5
  1293. package/tests/criterion_ref_status.mjs +2 -2
  1294. package/tests/cross_discipline_priority_direction.mjs +3 -3
  1295. package/tests/cutover_codemod.mjs +2 -4
  1296. package/tests/db_backup_nightly.mjs +1 -1
  1297. package/tests/db_backup_offsite.mjs +1 -1
  1298. package/tests/db_ownership_handover.mjs +2 -2
  1299. package/tests/dead_deps.mjs +3 -3
  1300. package/tests/dependency_advisory.mjs +1 -1
  1301. package/tests/deploy_audit_gate.mjs +4 -4
  1302. package/tests/deploy_divergence_line.mjs +36 -16
  1303. package/tests/deploy_page_projects.mjs +35 -4
  1304. package/tests/dev_lib.mjs +2 -2
  1305. package/tests/dev_windows.mjs +2 -2
  1306. package/tests/diagram_facts_offset.mjs +1 -1
  1307. package/tests/diagram_repo_slug.mjs +1 -1
  1308. package/tests/diff_derived_signals.mjs +2 -2
  1309. package/tests/dns_preflight.mjs +2 -2
  1310. package/tests/do_api.mjs +3 -3
  1311. package/tests/doc_cli_guard.mjs +28 -28
  1312. package/tests/doc_comment_coverage.mjs +1 -1
  1313. package/tests/doc_control_claims.mjs +11 -11
  1314. package/tests/docs_entropy.mjs +2 -2
  1315. package/tests/docs_openapi_route.mjs +8 -6
  1316. package/tests/doctor_hooks.mjs +1 -1
  1317. package/tests/edit_hints.mjs +3 -2
  1318. package/tests/effective_visibility_predicate.mjs +3 -3
  1319. package/tests/env_knobs_neutral_prefix.mjs +13 -13
  1320. package/tests/exec_path_guard.mjs +4 -4
  1321. package/tests/executed_closure.mjs +18 -12
  1322. package/tests/file_map.mjs +1 -1
  1323. package/tests/find_untested.mjs +13 -13
  1324. package/tests/first_admin_bootstrap.mjs +1 -1
  1325. package/tests/fitness.mjs +16 -16
  1326. package/tests/fitness_gds_ratchet.mjs +2 -2
  1327. package/tests/fitness_installed_core.mjs +3 -3
  1328. package/tests/fitness_no_raw_nul.mjs +1 -1
  1329. package/tests/fitness_ratchets.mjs +3 -3
  1330. package/tests/fitness_scope_roster.mjs +2 -2
  1331. package/tests/fitness_two_root.mjs +8 -8
  1332. package/tests/fixtures/accessibility-replay.json +5 -5
  1333. package/tests/fixtures/grade-replay/recorded-panel-grades.json +1 -1
  1334. package/tests/fixtures/ideator-prefold/README.md +1 -1
  1335. package/tests/fixtures/page-ledger.mjs +22 -0
  1336. package/tests/fixtures/session-506-digest.json +5 -5
  1337. package/tests/gate_approvals.mjs +50 -0
  1338. package/tests/gate_review.mjs +8 -8
  1339. package/tests/gating_review_retired.mjs +2 -2
  1340. package/tests/gen_freshness.mjs +3 -3
  1341. package/tests/git_guard.mjs +3 -3
  1342. package/tests/git_merge_regen.mjs +41 -65
  1343. package/tests/github_one_trip.mjs +4 -4
  1344. package/tests/github_pick_up.mjs +2 -2
  1345. package/tests/github_push_merge_driver.mjs +1 -1
  1346. package/tests/go_live.mjs +3 -2
  1347. package/tests/goal_category.mjs +1 -1
  1348. package/tests/goal_cli.mjs +2 -2
  1349. package/tests/goal_create_spec_entry.mjs +1 -1
  1350. package/tests/goal_invite_consent.mjs +3 -1
  1351. package/tests/goal_move.mjs +1 -1
  1352. package/tests/goal_names.mjs +2 -2
  1353. package/tests/goal_working_area.mjs +1 -1
  1354. package/tests/government_agent_asks.mjs +7 -7
  1355. package/tests/government_board_room_copy.mjs +6 -1
  1356. package/tests/government_board_view.mjs +39 -0
  1357. package/tests/government_board_vote_ui.mjs +39 -1
  1358. package/tests/government_config.mjs +2 -2
  1359. package/tests/government_live_proof_shape.mjs +1 -1
  1360. package/tests/government_protected_surfaces.mjs +54 -53
  1361. package/tests/government_require_permission.mjs +9 -1
  1362. package/tests/government_vanilla_boot.mjs +1 -1
  1363. package/tests/government_vocabulary.mjs +2 -2
  1364. package/tests/government_walk.mjs +2 -2
  1365. package/tests/grade_body_limit.mjs +6 -4
  1366. package/tests/grade_correlation_audit.mjs +3 -3
  1367. package/tests/grade_diff_hash.mjs +1 -1
  1368. package/tests/grade_engine_replay.mjs +2 -2
  1369. package/tests/grade_server_authoritative.mjs +1 -1
  1370. package/tests/grade_unavailable_display.mjs +1 -1
  1371. package/tests/grader.mjs +8 -24
  1372. package/tests/grader_generated_provenance.mjs +14 -14
  1373. package/tests/grader_no_artifact.mjs +1 -1
  1374. package/tests/grader_prompt_fencing.mjs +1 -1
  1375. package/tests/grader_quality_window_overflow.mjs +1 -1
  1376. package/tests/grader_reader_lens.mjs +3 -3
  1377. package/tests/grader_regrade_delta.mjs +1 -1
  1378. package/tests/grader_unbacked_score.mjs +2 -2
  1379. package/tests/hall_acclaim_vote_control.mjs +113 -0
  1380. package/tests/hall_asset_cache.mjs +127 -0
  1381. package/tests/hall_audit.mjs +63 -0
  1382. package/tests/hall_board_world.mjs +20 -0
  1383. package/tests/hall_city_card_words.mjs +61 -0
  1384. package/tests/hall_client_request_shape.mjs +5 -1
  1385. package/tests/hall_home_ships_bounded.mjs +160 -0
  1386. package/tests/hall_landing_boot.mjs +15 -2
  1387. package/tests/hall_nav.mjs +33 -0
  1388. package/tests/hall_onboarding_bongos_setup.mjs +1 -1
  1389. package/tests/hall_oversight_world.mjs +44 -4
  1390. package/tests/hall_palette.mjs +12 -9
  1391. package/tests/hall_preview_security.mjs +1 -1
  1392. package/tests/hall_profile_world.mjs +17 -0
  1393. package/tests/hall_reading_world.mjs +16 -1
  1394. package/tests/hall_roster_world.mjs +2 -1
  1395. package/tests/hall_studio_world.mjs +4 -1
  1396. package/tests/hall_work_history_id.mjs +39 -0
  1397. package/tests/held_tweak_reporting.mjs +4 -4
  1398. package/tests/helpers.mjs +3 -3
  1399. package/tests/home_attention_cards.mjs +2 -0
  1400. package/tests/home_bounded_reads.mjs +1 -1
  1401. package/tests/home_isolation_guard.mjs +1 -1
  1402. package/tests/hook_core_resolve.mjs +7 -7
  1403. package/tests/hook_user_agents.mjs +1 -1
  1404. package/tests/hooks_drain.mjs +2 -2
  1405. package/tests/host_topology_skips.mjs +1 -1
  1406. package/tests/howto_guide.mjs +1 -1
  1407. package/tests/howto_moments.mjs +3 -3
  1408. package/tests/hub_account_page.mjs +1 -1
  1409. package/tests/idea_capture_grades.mjs +2 -2
  1410. package/tests/idea_develop_spark.mjs +1 -1
  1411. package/tests/idea_filed_via.mjs +2 -2
  1412. package/tests/idea_ideate_full.mjs +1 -1
  1413. package/tests/idea_spark_mark.mjs +1 -1
  1414. package/tests/idea_spark_queue.mjs +1 -1
  1415. package/tests/idea_triage.mjs +1 -1
  1416. package/tests/idea_triage_grade.mjs +3 -3
  1417. package/tests/idea_vote_permission.mjs +113 -0
  1418. package/tests/idea_votes_fold_db.mjs +123 -0
  1419. package/tests/infra_exec_paths.mjs +12 -12
  1420. package/tests/init.mjs +2 -2
  1421. package/tests/instance_db_migrated_on_code_move.mjs +5 -5
  1422. package/tests/instance_feedback.mjs +9 -9
  1423. package/tests/instance_mismatch_guard.mjs +2 -2
  1424. package/tests/integration_parked_ratchet.mjs +24 -2
  1425. package/tests/intent_retry.mjs +1 -1
  1426. package/tests/interaction_posture.mjs +3 -3
  1427. package/tests/invite_expiry_db.mjs +1 -1
  1428. package/tests/joinability_invite_only.mjs +1 -1
  1429. package/tests/karma_vote_lists.mjs +270 -0
  1430. package/tests/key-card.mjs +2 -2
  1431. package/tests/key-status.mjs +2 -2
  1432. package/tests/knip_ratchet_ambient.mjs +2 -2
  1433. package/tests/known_failing_ratchet.mjs +1 -1
  1434. package/tests/land_watch.mjs +2 -2
  1435. package/tests/landing_legal_pages.mjs +1 -1
  1436. package/tests/landing_page.mjs +2 -2
  1437. package/tests/leaderboard_roles.mjs +4 -1
  1438. package/tests/leak_scan_allowlist.mjs +8 -8
  1439. package/tests/leak_scan_fail_closed.mjs +1 -1
  1440. package/tests/lib_sh_resolution.mjs +9 -9
  1441. package/tests/lifecycle-card.mjs +7 -7
  1442. package/tests/linkify_check.mjs +2 -2
  1443. package/tests/linkify_refs.mjs +1 -1
  1444. package/tests/llm-cache-route.mjs +1 -1
  1445. package/tests/local_preview.mjs +2 -2
  1446. package/tests/main_audit.mjs +3 -3
  1447. package/tests/main_audit_attestation.mjs +1 -1
  1448. package/tests/main_audit_db_roster.mjs +2 -2
  1449. package/tests/main_worktree_busy_reason.mjs +3 -3
  1450. package/tests/markdown_line_endings.mjs +2 -2
  1451. package/tests/me_streak_leaderboard_queries.mjs +193 -0
  1452. package/tests/membership_kind_lockstep.mjs +1 -1
  1453. package/tests/memory_isolation.mjs +16 -8
  1454. package/tests/memory_map.mjs +2 -2
  1455. package/tests/memory_pull.mjs +33 -25
  1456. package/tests/merge_driver_register.mjs +3 -3
  1457. package/tests/migration_allocation.mjs +2 -2
  1458. package/tests/migration_namespace.mjs +1 -1
  1459. package/tests/migrations_forward_safe.mjs +1 -1
  1460. package/tests/mingle.mjs +1 -1
  1461. package/tests/mirror_lineage_fulltree.mjs +3 -3
  1462. package/tests/mirror_lineage_proof.mjs +2 -2
  1463. package/tests/mirror_redact.mjs +4 -4
  1464. package/tests/missing_dep_classify.mjs +3 -3
  1465. package/tests/module-scope-map.mjs +22 -22
  1466. package/tests/module_api_lazy.mjs +1 -1
  1467. package/tests/module_assess_docs.mjs +2 -2
  1468. package/tests/module_assess_installs.mjs +3 -3
  1469. package/tests/module_assess_price_parity.mjs +5 -5
  1470. package/tests/module_assess_score.mjs +5 -5
  1471. package/tests/module_assess_security.mjs +4 -4
  1472. package/tests/module_assess_tests.mjs +3 -3
  1473. package/tests/module_assessments_migration.mjs +1 -1
  1474. package/tests/module_catalog.mjs +2 -2
  1475. package/tests/module_cli.mjs +3 -3
  1476. package/tests/module_entitlements.mjs +1 -1
  1477. package/tests/module_error_counts.mjs +1 -1
  1478. package/tests/module_install.mjs +4 -4
  1479. package/tests/module_loader.mjs +3 -1
  1480. package/tests/module_owned_tests.mjs +1 -1
  1481. package/tests/module_release_channels.mjs +1 -1
  1482. package/tests/module_store_howto.mjs +3 -3
  1483. package/tests/module_store_listing.mjs +139 -2
  1484. package/tests/module_store_publish.mjs +4 -4
  1485. package/tests/module_store_publish_route.mjs +1 -1
  1486. package/tests/module_store_reassess.mjs +1 -1
  1487. package/tests/module_store_registry_migration.mjs +1 -1
  1488. package/tests/module_test_runner.mjs +3 -3
  1489. package/tests/module_update.mjs +4 -4
  1490. package/tests/module_upgrade_updates.mjs +1 -1
  1491. package/tests/move_escalation.mjs +2 -2
  1492. package/tests/nav_permission_atoms.mjs +3 -2
  1493. package/tests/needs_rebase.mjs +7 -3
  1494. package/tests/newcomer_floor.mjs +1 -1
  1495. package/tests/newcomer_generator.mjs +48 -0
  1496. package/tests/next_number.mjs +1 -1
  1497. package/tests/no_artifact_escalation.mjs +3 -3
  1498. package/tests/npm_release_where.mjs +1 -1
  1499. package/tests/oauth_secret.mjs +2 -2
  1500. package/tests/onboard.mjs +6 -6
  1501. package/tests/onboarding_gate.mjs +2 -2
  1502. package/tests/opt_in_skill_modules.mjs +3 -3
  1503. package/tests/own_scope_guard.mjs +1 -1
  1504. package/tests/own_session_revoke.mjs +4 -1
  1505. package/tests/package_core.mjs +10 -11
  1506. package/tests/page_inventory.mjs +5 -5
  1507. package/tests/page_reader.mjs +7 -7
  1508. package/tests/page_tweak_hold.mjs +6 -6
  1509. package/tests/parallel-load.mjs +1 -1
  1510. package/tests/paste_token_api_base.mjs +1 -1
  1511. package/tests/paste_token_session_store.mjs +2 -2
  1512. package/tests/pending_invite_purge_db.mjs +1 -1
  1513. package/tests/permission_path.mjs +1 -1
  1514. package/tests/pin_replay.mjs +1 -1
  1515. package/tests/pin_write_key.mjs +7 -7
  1516. package/tests/plain_cards.mjs +15 -15
  1517. package/tests/pr_assign.mjs +1 -1
  1518. package/tests/pre_push_hook.mjs +3 -3
  1519. package/tests/preflight_checks.mjs +2 -2
  1520. package/tests/prelaunch_gate.mjs +1 -1
  1521. package/tests/privacy_matrix.mjs +1 -1
  1522. package/tests/probe_cache.mjs +6 -6
  1523. package/tests/profile_connections_ui.mjs +4 -3
  1524. package/tests/profile_fields.mjs +11 -1
  1525. package/tests/profile_privacy_owner_view.mjs +1 -1
  1526. package/tests/profile_role_headline.mjs +10 -9
  1527. package/tests/project_admin_console_model.mjs +1 -1
  1528. package/tests/projects_hub.mjs +1 -1
  1529. package/tests/projects_hub_cloud_hop.mjs +1 -1
  1530. package/tests/promote_goal_id.mjs +6 -6
  1531. package/tests/promotion_sweep.mjs +1 -1
  1532. package/tests/provision.mjs +24 -24
  1533. package/tests/provision_account_identity.mjs +2 -2
  1534. package/tests/provision_byo_host.mjs +1 -1
  1535. package/tests/provision_caddy_wiring.mjs +2 -2
  1536. package/tests/provision_disconnect.mjs +2 -2
  1537. package/tests/provision_dns_first.mjs +1 -1
  1538. package/tests/provision_render.mjs +9 -9
  1539. package/tests/provision_repo_private.mjs +3 -3
  1540. package/tests/provision_resource_caps.mjs +5 -5
  1541. package/tests/provision_restart.mjs +3 -3
  1542. package/tests/provision_settings_apply.mjs +7 -7
  1543. package/tests/provision_teardown_address.mjs +2 -2
  1544. package/tests/provisioning_capacity.mjs +5 -5
  1545. package/tests/provisioning_credential_preflight.mjs +1 -1
  1546. package/tests/provisioning_disconnect.mjs +1 -1
  1547. package/tests/provisioning_error_note_scope.mjs +4 -4
  1548. package/tests/provisioning_paid_shape_gate.mjs +2 -2
  1549. package/tests/provisioning_planet_physics.mjs +16 -0
  1550. package/tests/provisioning_runner_drift_notice.mjs +2 -2
  1551. package/tests/provisioning_settings_env.mjs +1 -1
  1552. package/tests/pruned_lockfile_integrity.mjs +1 -1
  1553. package/tests/public_mirror_export.mjs +1 -1
  1554. package/tests/publish_integration_gate.mjs +2 -2
  1555. package/tests/publish_manifest.mjs +6 -6
  1556. package/tests/publish_watch.mjs +1 -1
  1557. package/tests/push_path_brief.mjs +2 -2
  1558. package/tests/raise.mjs +248 -0
  1559. package/tests/rank_roles_audit.mjs +1 -1
  1560. package/tests/rank_tier_single_source.mjs +2 -2
  1561. package/tests/rate_limit_public.mjs +1 -1
  1562. package/tests/read_default_meter.mjs +2 -2
  1563. package/tests/read_session_export.mjs +1 -1
  1564. package/tests/rebase_gate_set_aside.mjs +1 -1
  1565. package/tests/recall_cli.mjs +1 -1
  1566. package/tests/recall_corpus_health.mjs +3 -2
  1567. package/tests/recall_hints.mjs +1 -1
  1568. package/tests/recruiter_sliver_boundary.mjs +1 -1
  1569. package/tests/redteam_patrol.mjs +2 -2
  1570. package/tests/regrade_actual_minutes.mjs +2 -2
  1571. package/tests/regrade_eligibility.mjs +2 -2
  1572. package/tests/release_core.mjs +2 -2
  1573. package/tests/release_notes.mjs +4 -4
  1574. package/tests/rename_history_restraint.mjs +3 -3
  1575. package/tests/rename_ledger_prose.mjs +6 -6
  1576. package/tests/render_api.mjs +1 -1
  1577. package/tests/render_check.mjs +4 -4
  1578. package/tests/render_deploy.mjs +1 -1
  1579. package/tests/repo_info_binding.mjs +1 -1
  1580. package/tests/repo_map.mjs +5 -5
  1581. package/tests/reward_mode_cost_plus_only.mjs +7 -3
  1582. package/tests/reward_mode_surfacing.mjs +1 -1
  1583. package/tests/role_responsibilities.mjs +1 -1
  1584. package/tests/rot_inbox.mjs +10 -7
  1585. package/tests/route_permission_check.mjs +1 -1
  1586. package/tests/route_shadow_guard.mjs +1 -1
  1587. package/tests/route_validation.mjs +1 -1
  1588. package/tests/routine_capture_kind.mjs +6 -6
  1589. package/tests/routine_schedule.mjs +9 -9
  1590. package/tests/run_routine.mjs +5 -5
  1591. package/tests/run_routine_two_root.mjs +5 -5
  1592. package/tests/runner_drift.mjs +17 -17
  1593. package/tests/sandbox_stage.mjs +5 -5
  1594. package/tests/scope_map_guard.mjs +7 -7
  1595. package/tests/scouting_owner_access_and_reach.mjs +1 -1
  1596. package/tests/scripts_gds_forwarders.mjs +224 -0
  1597. package/tests/scrubber_corpus.mjs +2 -2
  1598. package/tests/seam_wiring_guard.mjs +1 -1
  1599. package/tests/search_ingest.mjs +2 -2
  1600. package/tests/search_ingest_db.mjs +1 -1
  1601. package/tests/search_ingest_nul.mjs +6 -6
  1602. package/tests/seed_verify_criteria.mjs +3 -3
  1603. package/tests/sequence.mjs +3 -3
  1604. package/tests/served_paths_shipped.mjs +3 -3
  1605. package/tests/session_506_regression.mjs +1 -1
  1606. package/tests/session_accessibility.mjs +1 -1
  1607. package/tests/session_caps.mjs +1 -1
  1608. package/tests/session_cost.mjs +1 -1
  1609. package/tests/session_digest.mjs +2 -2
  1610. package/tests/session_eval.mjs +6 -6
  1611. package/tests/session_index.mjs +1 -1
  1612. package/tests/session_records.mjs +4 -4
  1613. package/tests/session_rename_fallback.mjs +2 -2
  1614. package/tests/session_reward_on_land.mjs +7 -149
  1615. package/tests/session_reward_on_land_db.mjs +191 -0
  1616. package/tests/session_reward_reconcile.mjs +6 -88
  1617. package/tests/session_reward_reconcile_db.mjs +132 -0
  1618. package/tests/session_transcript.mjs +1 -1
  1619. package/tests/sessions_kit_pager.mjs +2 -1
  1620. package/tests/setup_device_flow_fallback.mjs +2 -2
  1621. package/tests/setup_smoke.mjs +12 -5
  1622. package/tests/setup_status_facts.mjs +54 -12
  1623. package/tests/ship_autolinkify.mjs +2 -2
  1624. package/tests/ship_automerge_injection.mjs +1 -1
  1625. package/tests/ship_base_flag.mjs +1 -1
  1626. package/tests/ship_broadcast_routing.mjs +1 -1
  1627. package/tests/ship_broadcast_server.mjs +2 -2
  1628. package/tests/ship_builder_model.mjs +1 -1
  1629. package/tests/ship_cannot_lie.mjs +9 -9
  1630. package/tests/ship_card.mjs +2 -2
  1631. package/tests/ship_ci_deploy.mjs +7 -7
  1632. package/tests/ship_error_shape.mjs +1 -1
  1633. package/tests/ship_land_ci_not_started.mjs +3 -3
  1634. package/tests/ship_land_conflict.mjs +3 -3
  1635. package/tests/ship_land_proof.mjs +3 -3
  1636. package/tests/ship_land_red_pr.mjs +5 -5
  1637. package/tests/ship_merge_gate.mjs +14 -14
  1638. package/tests/ship_mode.mjs +1 -1
  1639. package/tests/ship_mode_first_ship.mjs +4 -4
  1640. package/tests/ship_mode_hands_off.mjs +8 -8
  1641. package/tests/ship_post_land_verify.mjs +1 -1
  1642. package/tests/ship_preflight.mjs +19 -19
  1643. package/tests/ship_premerge.mjs +1 -1
  1644. package/tests/ship_publish_error.mjs +2 -2
  1645. package/tests/ship_push_diagnosis.mjs +1 -1
  1646. package/tests/ship_regen_copy_inventory.mjs +3 -3
  1647. package/tests/ship_resume.mjs +4 -4
  1648. package/tests/ship_smoke_gate.mjs +1 -1
  1649. package/tests/ship_upload_skip.mjs +1 -1
  1650. package/tests/ship_upstream_deletion.mjs +1 -1
  1651. package/tests/ship_vendored_instance.mjs +8 -8
  1652. package/tests/ship_visual_regrade.mjs +3 -3
  1653. package/tests/ship_zero_commit.mjs +1 -1
  1654. package/tests/skill_docs_unavailable_regrade.mjs +3 -3
  1655. package/tests/skill_friction_kind.mjs +1 -1
  1656. package/tests/skill_grade_recover.mjs +1 -1
  1657. package/tests/skill_grader_health.mjs +1 -1
  1658. package/tests/skill_lint.mjs +1 -1
  1659. package/tests/skill_menu_ruling.mjs +1 -1
  1660. package/tests/skill_preflight.mjs +7 -7
  1661. package/tests/skip_is_not_pass.mjs +22 -1
  1662. package/tests/smoke_dependencies_witness.mjs +2 -2
  1663. package/tests/smoke_preflight.mjs +1 -1
  1664. package/tests/smoke_target.mjs +2 -2
  1665. package/tests/smoke_write_contract.mjs +2 -2
  1666. package/tests/sound_player.mjs +8 -8
  1667. package/tests/source_text_test_ratchet.mjs +97 -0
  1668. package/tests/speciality_corpus_scope.mjs +1 -1
  1669. package/tests/speciality_session_skills.mjs +1 -1
  1670. package/tests/sso_checkin_legacy_field_gone.mjs +4 -2
  1671. package/tests/stale_timer.mjs +3 -3
  1672. package/tests/stale_worktrees.mjs +1 -1
  1673. package/tests/start_env_guard.mjs +1 -1
  1674. package/tests/start_goal_first.mjs +3 -3
  1675. package/tests/start_inbox_count.mjs +1 -1
  1676. package/tests/start_rebase_warning.mjs +1 -1
  1677. package/tests/status_default_version.mjs +3 -3
  1678. package/tests/status_mirror_sync.mjs +1 -1
  1679. package/tests/status_page_no_dead_uptime.mjs +80 -0
  1680. package/tests/stop_refcheck.mjs +1 -1
  1681. package/tests/strand_watch.mjs +1 -1
  1682. package/tests/stranded_rows.mjs +1 -1
  1683. package/tests/stuck_detector.mjs +14 -14
  1684. package/tests/sweep_app_account.mjs +3 -3
  1685. package/tests/task_cli.mjs +2 -2
  1686. package/tests/task_detail_ui.mjs +11 -1
  1687. package/tests/task_discipline_required.mjs +2 -2
  1688. package/tests/task_list_paging.mjs +1 -1
  1689. package/tests/task_visual_slots.mjs +2 -2
  1690. package/tests/terms_acceptance.mjs +1 -1
  1691. package/tests/terms_grandfather_db.mjs +1 -1
  1692. package/tests/test_path_guard.mjs +1 -1
  1693. package/tests/triage_development.mjs +1 -1
  1694. package/tests/tweak_batch_apply.mjs +2 -2
  1695. package/tests/tweak_land_heal.mjs +3 -3
  1696. package/tests/tweak_unattended.mjs +3 -3
  1697. package/tests/ui_design_skills.mjs +2 -2
  1698. package/tests/unit_report_status.mjs +2 -2
  1699. package/tests/unit_runner_serial.mjs +2 -2
  1700. package/tests/unit_runner_teardown_abort.mjs +1 -1
  1701. package/tests/update_channel.mjs +2 -2
  1702. package/tests/update_channel_db.mjs +4 -4
  1703. package/tests/update_subscription_engine.mjs +26 -26
  1704. package/tests/update_sweep_home.mjs +14 -14
  1705. package/tests/upgrade.mjs +11 -11
  1706. package/tests/upgrade_artist_gate.mjs +4 -4
  1707. package/tests/upgrade_commit_identity.mjs +2 -2
  1708. package/tests/upgrade_migrate.mjs +7 -7
  1709. package/tests/upgrade_operator.mjs +2 -2
  1710. package/tests/upgrade_outcome.mjs +2 -2
  1711. package/tests/upgrade_persist_pin.mjs +5 -5
  1712. package/tests/upkeep_home.mjs +1 -1
  1713. package/tests/version_close.mjs +2 -2
  1714. package/tests/version_close_cli.mjs +2 -2
  1715. package/tests/version_close_route.mjs +1 -1
  1716. package/tests/version_literals.mjs +23 -23
  1717. package/tests/visual_review.mjs +5 -5
  1718. package/tests/wedge_remedy.mjs +5 -5
  1719. package/tests/welcome_boot.mjs +116 -0
  1720. package/tests/welcome_boot_browser.mjs +271 -0
  1721. package/tests/wizard_born_first_board.mjs +3 -3
  1722. package/tests/wizard_demo.mjs +1 -1
  1723. package/tests/wizard_one_page.mjs +4 -3
  1724. package/tests/wizard_physics.mjs +3 -1
  1725. package/tests/wizard_physics_more.mjs +42 -3
  1726. package/tests/work_title_wrap.mjs +1 -1
  1727. package/tests/workflow_exec_paths.mjs +6 -6
  1728. package/tests/worktree_claim_guard.mjs +1 -1
  1729. package/tests/worktree_helper.mjs +2 -2
  1730. package/tests/write_validation_gaps.mjs +3 -3
  1731. package/scripts/gds/api.sh +0 -6
  1732. package/scripts/gds/audit-exports.js +0 -128
  1733. package/scripts/gds/resolve-skill-model.js +0 -57
  1734. package/scripts/gds/security-baseline-check.sh +0 -180
  1735. package/scripts/gds/spike-task-map.js +0 -899
  1736. package/scripts/status-probe.mjs +0 -213
  1737. package/src/bongos/uptime-poller.js +0 -93
  1738. package/tests/government_fold_bench.mjs +0 -50
  1739. package/tests/spike_task_map.mjs +0 -422
  1740. package/tests/status-probe.mjs +0 -89
  1741. /package/{scripts/gds → modules/raise}/CLAUDE.md +0 -0
  1742. /package/scripts/{gds → bongos}/cloudbongos-token-isolation.conf +0 -0
  1743. /package/scripts/{gds → bongos}/discipline-modes.json +0 -0
  1744. /package/scripts/{gds → bongos}/retired-core-skills.json +0 -0
@@ -1,7 +1,7 @@
1
1
  // tests/instance_mismatch_guard.mjs
2
2
  //
3
3
  // Unit test for the PURE fail-closed instance guard exported from
4
- // scripts/gds/cli-lib.js (task 2102):
4
+ // scripts/bongos/cli-lib.js (task 2102):
5
5
  // - instanceOriginHost(origin) → host string, or null if unparseable
6
6
  // - detectInstanceMismatch({ session, brand, env }) → { mismatch, expected, actual }
7
7
  //
@@ -15,7 +15,7 @@ import { strict as assert } from 'node:assert';
15
15
  import { createRequire } from 'node:module';
16
16
 
17
17
  const require = createRequire(import.meta.url);
18
- const cli = require('../scripts/gds/cli-lib.js');
18
+ const cli = require('../scripts/bongos/cli-lib.js');
19
19
 
20
20
  let passed = 0;
21
21
  let failed = 0;
@@ -28,7 +28,7 @@ import { createRequire } from 'node:module';
28
28
 
29
29
  const require = createRequire(import.meta.url);
30
30
  const TESTS_DIR = path.dirname(fileURLToPath(import.meta.url));
31
- const { INTEGRATION, INTEGRATION_PARKED, KNOWN_FAILING } = require('../scripts/gds/run-unit-tests.js');
31
+ const { INTEGRATION, INTEGRATION_PARKED, KNOWN_FAILING } = require('../scripts/bongos/run-unit-tests.js');
32
32
 
33
33
  // The ceiling. Twenty-three is what the integration lane's first ever run surfaced
34
34
  // (task 1000862) — every one a test nothing had executed before, not a regression.
@@ -44,7 +44,14 @@ const { INTEGRATION, INTEGRATION_PARKED, KNOWN_FAILING } = require('../scripts/g
44
44
  //
45
45
  // LOWERED 24 → 23 by task 1002863: consumer_layout_boot was fixed and un-parked, and the
46
46
  // ceiling follows it down so the freed slot cannot quietly be spent on a new failure.
47
- const MAX_PARKED = 23;
47
+ // LOWERED 23 → 14 by task 1004865: bfg, bfg_write, memory_isolation, memory_pull and setup_smoke
48
+ // were repaired and moved to the unit lane (they never needed a database).
49
+ // LOWERED 14 → 11 by task 1004864: handle_machinery, profile_fields and project_visibility_db
50
+ // pass once integration.yml switches the platform-identity module on.
51
+ // LOWERED 11 → 6 by task 1004861: claim_gate_open_blocker, claim_gate_rebase,
52
+ // clawback_confirmed_backlog, needs_rebase and reward_mode_cost_plus_only stopped adding a
53
+ // second 'planning' version (and had three stale fixtures under it repaired).
54
+ const MAX_PARKED = 6;
48
55
 
49
56
  // The one test that proves the PUBLISHED package works end to end: packaged, installed into
50
57
  // a consumer, installed again from its own shipped lockfile, migrated onto EMPTY databases,
@@ -100,3 +107,18 @@ test('the parked count is ratcheted and cannot grow silently', () => {
100
107
  `${n} parked integration tests exceeds the ratchet of ${MAX_PARKED}. Fix the new `
101
108
  + 'failure rather than parking it; raising MAX_PARKED is a deliberate act.');
102
109
  });
110
+
111
+ // task 1004865: five tests sat in INTEGRATION (and so, failing, in INTEGRATION_PARKED) that
112
+ // never needed a database — each failed on a stale harness that was read as "needs Postgres".
113
+ // Repaired, they gate the cross-builder memory read and write, memory isolation, the memory
114
+ // restore hook and setup. Back in a database lane they would run only weekly, parked, again.
115
+ const REPAIRED_DB_FREE = ['bfg', 'bfg_write', 'memory_isolation', 'memory_pull', 'setup_smoke'];
116
+
117
+ test('the five repaired DB-free tests stay in the unit lane', () => {
118
+ for (const name of REPAIRED_DB_FREE) {
119
+ assert.ok(fs.existsSync(path.join(TESTS_DIR, `${name}.mjs`)), `tests/${name}.mjs is gone`);
120
+ assert.ok(!INTEGRATION.has(name) && !INTEGRATION_PARKED.has(name) && !KNOWN_FAILING.has(name),
121
+ `${name} is excluded from the DB-free unit lane again. It needs no database; if it fails, `
122
+ + 'repair the harness rather than moving it somewhere it only runs weekly.');
123
+ }
124
+ });
@@ -8,7 +8,7 @@
8
8
  // Run: node tests/intent_retry.mjs
9
9
 
10
10
  import { strict as assert } from 'node:assert';
11
- import { retryDecision, maxAttemptsFor, TRANSIENT_BACKOFF_MS, DEFAULT_RETRY_DELAY_MS } from '../scripts/gds/intent-retry.js';
11
+ import { retryDecision, maxAttemptsFor, TRANSIENT_BACKOFF_MS, DEFAULT_RETRY_DELAY_MS } from '../scripts/bongos/intent-retry.js';
12
12
 
13
13
  let passed = 0;
14
14
  let failed = 0;
@@ -22,12 +22,12 @@ import { createRequire } from 'node:module';
22
22
 
23
23
  const require = createRequire(import.meta.url);
24
24
  const REPO_ROOT = join(dirname(fileURLToPath(import.meta.url)), '..');
25
- const gen = require('../scripts/gds/gen-interaction-posture.js');
25
+ const gen = require('../scripts/bongos/gen-interaction-posture.js');
26
26
  const prefs = require('../modules/builder-settings/interaction-prefs.js');
27
27
  // Never `===` on raw file bytes here: the generator renders LF, and a default Windows
28
28
  // clone checks CLAUDE.md out as CRLF, so a byte comparison would fail on one OS and pass
29
29
  // on the other. gen-freshness.js exists for exactly this (and its header says so).
30
- const { sameContent } = require('../scripts/gds/gen-freshness.js');
30
+ const { sameContent } = require('../scripts/bongos/gen-freshness.js');
31
31
 
32
32
  test('the block carries one bullet per DEFAULT value that injects, and none for one that does not', () => {
33
33
  const block = gen.renderBlock();
@@ -71,7 +71,7 @@ test('the committed CLAUDE.md §2 block matches a freshly rendered one', () => {
71
71
  const e = claude.indexOf(gen.END);
72
72
  assert.ok(b !== -1 && e > b, 'CLAUDE.md §2 must carry the posture markers');
73
73
  assert.ok(sameContent(claude.slice(b, e + gen.END.length), gen.renderBlock()),
74
- 'CLAUDE.md §2 is STALE or hand-edited — run `node scripts/gds/gen-interaction-posture.js`');
74
+ 'CLAUDE.md §2 is STALE or hand-edited — run `node scripts/bongos/gen-interaction-posture.js`');
75
75
  });
76
76
 
77
77
  test('CLAUDE.md expresses the posture through the knob instead of restating it', () => {
@@ -16,7 +16,7 @@
16
16
  // never seen or changed.
17
17
  //
18
18
  // Real-DB integration test: self-skips without a reachable Postgres; in the
19
- // INTEGRATION set (scripts/gds/run-unit-tests.js) so the default DB-free lane
19
+ // INTEGRATION set (scripts/bongos/run-unit-tests.js) so the default DB-free lane
20
20
  // never runs it.
21
21
  //
22
22
  // Run: DATABASE_URL=... node tests/invite_expiry_db.mjs
@@ -192,7 +192,7 @@ test('the hall landing renders one door per mode, and its form collapses on the
192
192
  });
193
193
 
194
194
  test('the CLI says invite-only and stops, rather than filing a request the project refuses', () => {
195
- const cli = src('scripts/gds/login.js');
195
+ const cli = src('scripts/bongos/login.js');
196
196
  assert.match(cli, /joinability === 'invite_only'/);
197
197
  assert.match(cli, /is invite-only — it doesn’t take applications/);
198
198
  });
@@ -0,0 +1,270 @@
1
+ // tests/karma_vote_lists.mjs — karma vote buttons on every hall task/idea list,
2
+ // and ideas voted for karma like tasks (task 1004727).
3
+ //
4
+ // Owner decisions this pins (2026-10-23):
5
+ // * an idea vote earns karma for the builder who SUBMITTED the idea, weighs
6
+ // the same as a task vote, and has the same guards: no self-vote, a vote
7
+ // already folded into karma is frozen, and the same 7-day lag in the fold;
8
+ // * ONE vote control (modules/hall-ui/public/vote-control.js), reused by the
9
+ // work board, goal task lists, idea lists and profile task lists;
10
+ // * a task row offers the vote only where the server accepts one (confirmed
11
+ // or shipped). Any other row renders NOTHING, not a disabled button;
12
+ // * voting from a list updates that row in place.
13
+ //
14
+ // The real fold over a real Postgres is tests/idea_votes_fold_db.mjs.
15
+ import { test } from 'node:test';
16
+ import assert from 'node:assert/strict';
17
+ import fs from 'node:fs';
18
+ import path from 'node:path';
19
+ import vm from 'node:vm';
20
+ import { createRequire } from 'node:module';
21
+ import { fileURLToPath } from 'node:url';
22
+
23
+ const require = createRequire(import.meta.url);
24
+ const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
25
+ const HALL = path.join(ROOT, 'modules', 'hall-ui', 'public');
26
+ const read = (rel) => fs.readFileSync(path.join(ROOT, rel), 'utf8').replace(/\r\n/g, '\n');
27
+
28
+ // ---------------------------------------------------------------------------
29
+ // the server half: modules/ideas/votes.js over a scripted pool
30
+ // ---------------------------------------------------------------------------
31
+
32
+ // A pool that answers by matching the SQL; records every statement it saw.
33
+ function fakePool({ idea = { id: 7, captured_by: 2 }, upsertRows = 1, net = 1, total = 1 } = {}) {
34
+ const seen = [];
35
+ return {
36
+ seen,
37
+ async query(sql, params) {
38
+ seen.push({ sql, params });
39
+ if (/FROM idea_inbox/.test(sql)) return { rows: idea ? [idea] : [], rowCount: idea ? 1 : 0 };
40
+ if (/INSERT INTO ideas_votes/.test(sql)) return { rows: upsertRows ? [{ id: 1 }] : [], rowCount: upsertRows };
41
+ if (/DELETE FROM ideas_votes/.test(sql)) return { rows: [], rowCount: upsertRows };
42
+ if (/SUM\(vote\)/.test(sql)) return { rows: [{ net, total }], rowCount: 1 };
43
+ return { rows: [], rowCount: 0 };
44
+ },
45
+ };
46
+ }
47
+
48
+ const votes = () => require(path.join(ROOT, 'modules', 'ideas', 'votes.js'));
49
+
50
+ test('an idea vote is cast and returns the authoritative tally', async () => {
51
+ const pool = fakePool({ net: 3, total: 4 });
52
+ const r = await votes().castIdeaVote(pool, { voterId: 1, ideaId: 7, vote: 1 });
53
+ assert.equal(r.ok, true);
54
+ assert.equal(r.net_votes, 3);
55
+ assert.equal(r.my_vote, 1);
56
+ assert.ok(pool.seen.some((s) => /INSERT INTO ideas_votes/.test(s.sql)));
57
+ });
58
+
59
+ test('no voting on your own idea', async () => {
60
+ const r = await votes().castIdeaVote(fakePool({ idea: { id: 7, captured_by: 1 } }), { voterId: 1, ideaId: 7, vote: 1 });
61
+ assert.equal(r.ok, false);
62
+ assert.equal(r.code, 'self_vote_forbidden');
63
+ assert.equal(r.status, 403);
64
+ });
65
+
66
+ test('an unknown idea and an idea with no submitter are refused', async () => {
67
+ const gone = await votes().castIdeaVote(fakePool({ idea: null }), { voterId: 1, ideaId: 7, vote: 1 });
68
+ assert.equal(gone.code, 'idea_not_found');
69
+ const orphan = await votes().castIdeaVote(fakePool({ idea: { id: 7, captured_by: null } }), { voterId: 1, ideaId: 7, vote: 1 });
70
+ assert.equal(orphan.code, 'no_submitter');
71
+ });
72
+
73
+ test('a vote already folded into karma is frozen', async () => {
74
+ const r = await votes().castIdeaVote(fakePool({ upsertRows: 0 }), { voterId: 1, ideaId: 7, vote: -1 });
75
+ assert.equal(r.code, 'vote_already_counted');
76
+ assert.equal(r.status, 409);
77
+ });
78
+
79
+ test('the upsert carries the same tallied-freeze guard as the task vote', () => {
80
+ const src = read('modules/ideas/votes.js');
81
+ assert.match(src, /WHERE ideas_votes\.tallied_at IS NULL/);
82
+ });
83
+
84
+ // ---------------------------------------------------------------------------
85
+ // the fold: ONE fold counts task votes AND idea votes
86
+ // ---------------------------------------------------------------------------
87
+
88
+ test('the karma fold folds idea votes into the submitter, with the same lag', () => {
89
+ const src = read('modules/lifecycle/db-analytics.js');
90
+ const fold = src.slice(src.indexOf('async function tallyPeerVotes'), src.indexOf('module.exports'));
91
+ assert.match(fold, /FROM ideas_votes/);
92
+ assert.match(fold, /captured_by/);
93
+ assert.match(fold, /UPDATE ideas_votes SET tallied_at/);
94
+ // the same lag constant drives both halves
95
+ assert.ok((fold.match(/PEER_VOTE_KARMA_LAG_DAYS/g) || []).length >= 2);
96
+ });
97
+
98
+ test('the migration lives in the ideas module and the DB test joins the integration set', () => {
99
+ const mig = read('modules/ideas/migrations/ideas_011_idea_votes.sql');
100
+ assert.match(mig, /CREATE TABLE IF NOT EXISTS ideas_votes/);
101
+ assert.match(mig, /UNIQUE \(voter_builder_id, target_idea_id\)/);
102
+ assert.match(read('scripts/bongos/run-unit-tests.js'), /'idea_votes_fold_db'/);
103
+ });
104
+
105
+ // ---------------------------------------------------------------------------
106
+ // the client half: ONE vote control, in a vm with a small fake DOM
107
+ // ---------------------------------------------------------------------------
108
+
109
+ function el(tag, attrs = {}) {
110
+ const node = {
111
+ tagName: tag.toUpperCase(), attrs: { ...attrs }, children: [], textContent: '', disabled: false, parent: null,
112
+ classList: {
113
+ set: new Set(),
114
+ add(...c) { c.forEach((x) => this.set.add(x)); },
115
+ remove(...c) { c.forEach((x) => this.set.delete(x)); },
116
+ toggle(c, on) { if (on) this.set.add(c); else this.set.delete(c); },
117
+ contains(c) { return this.set.has(c); },
118
+ },
119
+ getAttribute(k) { return k in this.attrs ? this.attrs[k] : null; },
120
+ setAttribute(k, v) { this.attrs[k] = String(v); },
121
+ hasAttribute(k) { return k in this.attrs; },
122
+ querySelector(sel) { return this.querySelectorAll(sel)[0] || null; },
123
+ querySelectorAll(sel) {
124
+ const out = [];
125
+ const m = sel.match(/^\[([\w-]+)\]$/);
126
+ const walk = (n) => { for (const c of n.children) { if (m && c.hasAttribute(m[1])) out.push(c); walk(c); } };
127
+ walk(this);
128
+ return out;
129
+ },
130
+ closest(sel) {
131
+ const m = sel.match(/^\[([\w-]+)\]$/);
132
+ for (let n = this; n; n = n.parent) if (m && n.hasAttribute(m[1])) return n;
133
+ return null;
134
+ },
135
+ append(c) { c.parent = this; this.children.push(c); return c; },
136
+ };
137
+ return node;
138
+ }
139
+
140
+ function control(kind, id) {
141
+ const root = el('span', { 'data-vote-kind': kind, 'data-vote-id': String(id) });
142
+ root.append(el('button', { 'data-vote': '1' }));
143
+ root.append(el('span', { 'data-vote-net': '' }));
144
+ root.append(el('button', { 'data-vote': '-1' }));
145
+ return root;
146
+ }
147
+
148
+ function boot(fetchImpl) {
149
+ const ctx = { console, fetch: fetchImpl };
150
+ ctx.window = ctx;
151
+ vm.createContext(ctx);
152
+ vm.runInContext(fs.readFileSync(path.join(HALL, 'vote-control.js'), 'utf8'), ctx);
153
+ return ctx.OTBVote;
154
+ }
155
+
156
+ test('a task row renders the control only when the server would accept a vote', () => {
157
+ const V = boot(async () => ({}));
158
+ for (const status of ['confirmed', 'shipped']) {
159
+ assert.match(V.taskHtml({ id: 5, status }), /data-vote-kind="task"/, status);
160
+ }
161
+ for (const status of ['ready', 'active', 'backlog', 'completed', '', undefined]) {
162
+ assert.equal(V.taskHtml({ id: 5, status }), '', `status ${status} renders nothing`);
163
+ }
164
+ });
165
+
166
+ test('an idea row always offers the vote', () => {
167
+ const V = boot(async () => ({}));
168
+ const html = V.ideaHtml({ id: 9 });
169
+ assert.match(html, /data-vote-kind="idea"/);
170
+ assert.match(html, /data-vote-id="9"/);
171
+ assert.match(html, /data-vote="1"/);
172
+ assert.match(html, /data-vote="-1"/);
173
+ });
174
+
175
+ test('voting from a list posts to the right route and updates the row in place', async () => {
176
+ const calls = [];
177
+ const fetchImpl = async (url, opts) => {
178
+ calls.push({ url, opts });
179
+ return { ok: true, status: 200, json: async () => ({ ok: true, net_votes: 4, my_vote: 1 }) };
180
+ };
181
+ const V = boot(fetchImpl);
182
+ for (const [kind, route] of [['task', '/api/bongos/tasks/5/vote'], ['idea', '/api/bongos/inbox/5/vote']]) {
183
+ const row = control(kind, 5);
184
+ const up = row.children[0];
185
+ await V.cast(up);
186
+ const last = calls[calls.length - 1];
187
+ assert.equal(last.url, route);
188
+ assert.equal(JSON.parse(last.opts.body).vote, 1);
189
+ assert.equal(row.children[1].textContent, '+4');
190
+ assert.equal(up.getAttribute('aria-pressed'), 'true');
191
+ assert.equal(row.children[2].getAttribute('aria-pressed'), 'false');
192
+ }
193
+ });
194
+
195
+ test('clicking your current vote clears it', async () => {
196
+ const bodies = [];
197
+ const V = boot(async (url, opts) => { bodies.push(JSON.parse(opts.body)); return { ok: true, json: async () => ({ ok: true, net_votes: 0, my_vote: null }) }; });
198
+ const row = control('idea', 3);
199
+ row.children[0].classList.add('is-active');
200
+ await V.cast(row.children[0]);
201
+ assert.equal(bodies[0].vote, 0);
202
+ assert.equal(row.children[1].textContent, '0');
203
+ });
204
+
205
+ test('a refused vote leaves the row as it was and says why', async () => {
206
+ const V = boot(async () => ({ ok: false, status: 403, json: async () => ({ error: { code: 'self_vote_forbidden' } }) }));
207
+ const row = control('idea', 3);
208
+ row.children[1].textContent = '+1';
209
+ const msg = await V.cast(row.children[0]);
210
+ assert.equal(row.children[1].textContent, '+1');
211
+ assert.match(String(msg), /own/);
212
+ });
213
+
214
+ test('hydrate reads every control on the page in one batched call per kind', async () => {
215
+ const urls = [];
216
+ const V = boot(async (url) => {
217
+ urls.push(url);
218
+ const body = url.includes('/inbox/')
219
+ ? { votes: { 9: { net: -2, mine: -1 } } }
220
+ : { votes: { 5: { net: 2, mine: null }, 6: { net: 0, mine: 1 } } };
221
+ return { ok: true, json: async () => body };
222
+ });
223
+ const page = el('div');
224
+ const a = page.append(control('task', 5));
225
+ page.append(control('task', 6));
226
+ const c = page.append(control('idea', 9));
227
+ await V.hydrate(page);
228
+ assert.deepEqual(urls.sort(), ['/api/bongos/inbox/votes?ids=9', '/api/bongos/tasks/peer-votes/lookup?ids=5,6']);
229
+ assert.equal(a.children[1].textContent, '+2');
230
+ assert.equal(c.children[1].textContent, '-2');
231
+ assert.equal(c.children[2].getAttribute('aria-pressed'), 'true');
232
+ });
233
+
234
+ // ---------------------------------------------------------------------------
235
+ // the surfaces: every listed page loads the ONE control and uses it
236
+ // ---------------------------------------------------------------------------
237
+
238
+ const SURFACES = [
239
+ { page: 'work.html', js: 'work.js', call: 'OTBVote.taskHtml' },
240
+ { page: 'goals.html', js: 'goals-render.js', call: 'OTBVote.taskHtml' },
241
+ { page: 'profile.html', js: 'profile.js', call: 'OTBVote.taskHtml' },
242
+ { page: 'ideas.html', js: 'ideas.js', call: 'OTBVote.ideaHtml' },
243
+ { page: 'index.html', js: 'builders.js', call: 'OTBVote.ideaHtml' },
244
+ ];
245
+
246
+ for (const s of SURFACES) {
247
+ test(`${s.page} loads the shared vote control and ${s.js} renders it`, () => {
248
+ assert.match(read(`modules/hall-ui/public/${s.page}`), /<script src="\/builders\/vote-control\.js/);
249
+ assert.ok(read(`modules/hall-ui/public/${s.js}`).includes(s.call), `${s.js} calls ${s.call}`);
250
+ });
251
+ }
252
+
253
+ test('no page carries its own copy of the idea or batch vote calls', () => {
254
+ for (const s of SURFACES) {
255
+ assert.doesNotMatch(read(`modules/hall-ui/public/${s.js}`), /\/inbox\/\$\{[^}]*\}\/vote|\/votes\?ids=/, `${s.js} must not post votes itself`);
256
+ }
257
+ });
258
+
259
+ test('the task vote read is batched, two segments deep, and registered by the lifecycle module', async () => {
260
+ const mod = require(path.join(ROOT, 'modules', 'lifecycle', 'routes', 'task-votes.js'));
261
+ const seen = [];
262
+ const pool = { async query(sql, params) { seen.push(params); return { rows: [{ id: 5, net: 2, mine: -1 }] }; } };
263
+ const out = await mod.readTaskVotes(pool, { voterId: 1, ids: ['5', '6', 'x', '5'] });
264
+ assert.deepEqual(JSON.parse(JSON.stringify(out)), { 5: { net: 2, mine: -1 }, 6: { net: 0, mine: null } });
265
+ assert.deepEqual(seen[0][0], [5, 6]);
266
+ const manifest = JSON.parse(read('modules/lifecycle/module.json'));
267
+ assert.ok(manifest.contributes.routes.includes('task-votes'));
268
+ // GET /tasks/:id would swallow a one-segment path such as /tasks/votes.
269
+ assert.match(read('modules/lifecycle/routes/task-votes.js'), /router\.get\('\/tasks\/peer-votes\/lookup'/);
270
+ });
@@ -1,6 +1,6 @@
1
1
  // tests/key-card.mjs
2
2
  //
3
- // Unit tests for scripts/gds/key-card.js (task 1391) — the reusable "key
3
+ // Unit tests for scripts/bongos/key-card.js (task 1391) — the reusable "key
4
4
  // needed" visual callout, mirroring modules/lifecycle/ship-card.js's model.
5
5
  // Pure surface: buildKeyCardModel, renderMonospaceKeyCard, renderKeyCardHtml.
6
6
  // emitKeyCard writes to os.tmpdir(), so it's exercised too (file-system side
@@ -13,7 +13,7 @@ import { createRequire } from 'node:module';
13
13
  import fs from 'node:fs';
14
14
 
15
15
  const require = createRequire(import.meta.url);
16
- const keyCard = require('../scripts/gds/key-card.js');
16
+ const keyCard = require('../scripts/bongos/key-card.js');
17
17
 
18
18
  let passed = 0;
19
19
  let failed = 0;
@@ -1,6 +1,6 @@
1
1
  // tests/key-status.mjs
2
2
  //
3
- // Unit tests for scripts/gds/key-status.js's pasted-key guard (task 1391,
3
+ // Unit tests for scripts/bongos/key-status.js's pasted-key guard (task 1391,
4
4
  // done-when #3: "no code path accepts a key pasted in chat without warning +
5
5
  // redirect"). Only the pure guard function is exercised here — the rest of
6
6
  // the script makes network calls (GET /me/art-key) and belongs in the
@@ -12,7 +12,7 @@ import { strict as assert } from 'node:assert';
12
12
  import { createRequire } from 'node:module';
13
13
 
14
14
  const require = createRequire(import.meta.url);
15
- const keyStatus = require('../scripts/gds/key-status.js');
15
+ const keyStatus = require('../scripts/bongos/key-status.js');
16
16
 
17
17
  let passed = 0;
18
18
  let failed = 0;
@@ -32,8 +32,8 @@ import { createRequire } from 'node:module';
32
32
 
33
33
  const require = createRequire(import.meta.url);
34
34
  const REPO_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
35
- const ratchets = require('../scripts/gds/fitness-ratchets.js');
36
- const SRC = readFileSync(path.join(REPO_ROOT, 'scripts/gds/fitness-ratchets.js'), 'utf8');
35
+ const ratchets = require('../scripts/bongos/fitness-ratchets.js');
36
+ const SRC = readFileSync(path.join(REPO_ROOT, 'scripts/bongos/fitness-ratchets.js'), 'utf8');
37
37
 
38
38
  test('the local-knip check runs BEFORE npx, so an ambient knip is never scored', () => {
39
39
  const fn = SRC.slice(SRC.indexOf('function knipIssueCount()'));
@@ -3,7 +3,7 @@
3
3
  //
4
4
  // WHY THIS EXISTS, AND WHY IT IS NOT A MUTE
5
5
  //
6
- // `scripts/gds/run-unit-tests.js` already has a KNOWN_FAILING set, but gate-review.js
6
+ // `scripts/bongos/run-unit-tests.js` already has a KNOWN_FAILING set, but gate-review.js
7
7
  // HARD-FLOORS that file (ADR 0058): adding an entry there is classified as muting a
8
8
  // test and escalates to the owner. It also genuinely hides the failure — a muted test
9
9
  // stops running. This file does the opposite:
@@ -1,6 +1,6 @@
1
1
  // tests/land_watch.mjs
2
2
  //
3
- // GDS-V4 task 1687 — locks the pending-land watcher (scripts/gds/land-watch.js) that
3
+ // GDS-V4 task 1687 — locks the pending-land watcher (scripts/bongos/land-watch.js) that
4
4
  // renders the SHIPPED banner once an async CI land completes. Pure + DB-free + network-
5
5
  // free: classifyLand's truth table, buildShippedEnvelope's shape (forces the shipped
6
6
  // stage, honors widgets-off), and watch()'s orchestration (emit newest shipped, drop the
@@ -12,7 +12,7 @@ import { strict as assert } from 'node:assert';
12
12
  import { createRequire } from 'node:module';
13
13
 
14
14
  const require = createRequire(import.meta.url);
15
- const L = require('../scripts/gds/land-watch.js');
15
+ const L = require('../scripts/bongos/land-watch.js');
16
16
  const { classifyLand, buildShippedEnvelope, watch } = L;
17
17
 
18
18
  let passed = 0, failed = 0;
@@ -165,7 +165,7 @@ for (const p of PAGES) {
165
165
  for (const piece of [
166
166
  '<header class="shell bar">',
167
167
  '<a class="barMark" id="barMark" href="/">',
168
- '<ellipse cx="8.4" cy="5.6" rx="6.6" ry="2.9"/>',
168
+ '<svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true">',
169
169
  '<button class="trig" type="button" id="projTrig" data-menu="projects" aria-expanded="false" aria-controls="menuProjects">Projects<svg class="cv" viewBox="0 0 20 20" aria-hidden="true"><path d="m5.6 8 4.4 4.4L14.4 8"/></svg></button>',
170
170
  '<button class="trig who" type="button" id="who" data-menu="profile" aria-expanded="false" aria-controls="menuProfile" hidden>',
171
171
  '<div class="menuBand" id="menuProjects" data-menu="projects" hidden>',
@@ -416,7 +416,7 @@ test('the chrome bongo pair is not a hero object; it keeps the closing figure, t
416
416
  // the pair is still the world's object elsewhere on the page
417
417
  assert.match(PAGE_CSS, /\.close \.closemark\{[^}]*--sky-bongos/, 'the closing figure is the pair');
418
418
  assert.match(PAGE_CSS, /\.o2\{[^}]*--bead-src:var\(--sky-bongos\)/, 'the second project orb is the pair');
419
- assert.match(HTML, /<a class="barMark" href="\/"[^>]*>\s*<svg viewBox="0 0 26 20"/, 'the bar keeps the mark');
419
+ assert.match(HTML, /<a class="barMark" href="\/"[^>]*>\s*<svg class="bongosMark" viewBox="0 0 200 200"/, 'the bar keeps the mark');
420
420
  });
421
421
 
422
422
  // ── the live-data contract ─────────────────────────────────────────────────
@@ -540,7 +540,7 @@ test('the page satisfies the parked platform_boot assertions', () => {
540
540
  test('the bar is markup: the mark, the Projects trigger, the sign-in door — and no mode glyph (tasks 1003300, 1003336)', () => {
541
541
  const body = HTML.split('<body>')[1].split('<script>')[0];
542
542
  assert.match(body, /<header class="topbar bar">/, 'one bar, the hub\'s class beside the page\'s');
543
- assert.match(body, /<a class="barMark" href="\/" aria-label="\{\{productName\}\}">\s*<svg viewBox="0 0 26 20"/, 'the static mark is the way home, labelled from the stamped name');
543
+ assert.match(body, /<a class="barMark" href="\/" aria-label="\{\{productName\}\}">\s*<svg class="bongosMark" viewBox="0 0 200 200"/, 'the static mark is the way home, labelled from the stamped name');
544
544
  assert.match(body, /<span class="mark-word">\{\{productName\}\}<\/span>/, 'the product name as plain type, folded away under 900');
545
545
  assert.match(body, /<button class="trig" type="button" id="projTrig" data-menu="projects" aria-expanded="false" aria-controls="menuProjects">Projects<svg class="cv"/);
546
546
  assert.doesNotMatch(body, /modeBtn|id="mode"|class="moon"|class="sun"/, 'the mode glyph left the bar — the apex is dark only (task 1003336)');
@@ -136,7 +136,10 @@ await test('a roles failure costs the roles, never the board', async () => {
136
136
 
137
137
  await test('the public list carries karma, so the roster can read it and keep its karma column', () => {
138
138
  const sql = read('modules/economy/achievements.js');
139
- const q = sql.slice(sql.indexOf('async function getLeaderboardWithAchievements'), sql.indexOf('async function getLeaderboardWithAchievements') + 1200);
139
+ // task 1004853: the SQL moved behind the cache, into queryLeaderboardWithAchievements.
140
+ const at = sql.indexOf('async function queryLeaderboardWithAchievements');
141
+ assert.ok(at >= 0, 'the leaderboard query function is where this test reads it');
142
+ const q = sql.slice(at, at + 1200);
140
143
  assert.match(q, /\bb\.karma\b/);
141
144
  });
142
145
 
@@ -11,9 +11,9 @@ import { strict as assert } from 'node:assert';
11
11
  import { createRequire } from 'node:module';
12
12
 
13
13
  const require = createRequire(import.meta.url);
14
- const A = require('../scripts/gds/leak-scan-allowlist.js');
14
+ const A = require('../scripts/bongos/leak-scan-allowlist.js');
15
15
  const { allowReason, partitionHits, unusedEntries, FILE_ALLOWLIST, WELL_KNOWN_PUBLIC_IPS } = A;
16
- const { PRIOR_INSTANCE_FLOOR } = require('../scripts/gds/package-core.js');
16
+ const { PRIOR_INSTANCE_FLOOR } = require('../scripts/bongos/package-core.js');
17
17
 
18
18
  // This test file is itself published, so it derives the literals it exercises rather
19
19
  // than spelling them out — the same self-leak invariant the allowlist module holds.
@@ -43,14 +43,14 @@ t('every entry names a path, at least one literal, and a substantive reason', ()
43
43
  t('an allowlisted file still fails on a literal it was not listed for', () => {
44
44
  // mirror-redact.js is listed for public-ip only. An owner login appearing there would
45
45
  // be a real leak — the SELF-LEAK INVARIANT that file documents about itself.
46
- assert.ok(allowReason('scripts/gds/mirror-redact.js', 'public-ip', '8.8.8.8'));
47
- assert.equal(allowReason('scripts/gds/mirror-redact.js', `literal:${OWNER}`, OWNER), null,
46
+ assert.ok(allowReason('scripts/bongos/mirror-redact.js', 'public-ip', '8.8.8.8'));
47
+ assert.equal(allowReason('scripts/bongos/mirror-redact.js', `literal:${OWNER}`, OWNER), null,
48
48
  'a literal whose class is not named for this path must still fail');
49
49
  });
50
50
  t('an entry does not leak across to another path', () => {
51
51
  // audit-authorship.sh may carry the owner login; an arbitrary script may not.
52
- assert.ok(allowReason('scripts/gds/audit-authorship.sh', `literal:${OWNER}`, OWNER));
53
- assert.equal(allowReason('scripts/gds/some-other-script.js', `literal:${OWNER}`, OWNER), null);
52
+ assert.ok(allowReason('scripts/bongos/audit-authorship.sh', `literal:${OWNER}`, OWNER));
53
+ assert.equal(allowReason('scripts/bongos/some-other-script.js', `literal:${OWNER}`, OWNER), null);
54
54
  });
55
55
  t('an unlisted file gets no exception at all', () => {
56
56
  assert.equal(allowReason('src/bongos/routes/auth.js', `literal:${TOKEN}`, TOKEN), null);
@@ -86,8 +86,8 @@ t('unusedEntries reports an entry that has stopped matching', () => {
86
86
  // No hits at all → every file entry is stale, which is the signal to prune.
87
87
  assert.ok(unusedEntries([]).length > 0);
88
88
  // A hit that covers one entry removes exactly that one from the stale list.
89
- const stale = unusedEntries([{ path: 'scripts/gds/mirror-redact.js', label: 'public-ip', sample: '8.8.8.8' }]);
90
- assert.ok(!stale.some((s) => s.path === 'scripts/gds/mirror-redact.js' && s.literal === 'public-ip'));
89
+ const stale = unusedEntries([{ path: 'scripts/bongos/mirror-redact.js', label: 'public-ip', sample: '8.8.8.8' }]);
90
+ assert.ok(!stale.some((s) => s.path === 'scripts/bongos/mirror-redact.js' && s.literal === 'public-ip'));
91
91
  });
92
92
 
93
93
  console.log(`\n${passed} passed, ${failed} failed`);
@@ -17,7 +17,7 @@ import { fileURLToPath } from 'node:url';
17
17
  import { dirname, join } from 'node:path';
18
18
 
19
19
  const require = createRequire(import.meta.url);
20
- const { scanArtifactForLeaks, leakScanVerdict, PRIOR_INSTANCE_FLOOR } = require('../scripts/gds/package-core.js');
20
+ const { scanArtifactForLeaks, leakScanVerdict, PRIOR_INSTANCE_FLOOR } = require('../scripts/bongos/package-core.js');
21
21
 
22
22
  const ROOT = join(dirname(fileURLToPath(import.meta.url)), '..');
23
23
 
@@ -1,7 +1,7 @@
1
1
  // tests/lib_sh_resolution.mjs — the bash smokes resolve their token + API base
2
2
  // from instance-config, never from a baked-in literal (task 1002567).
3
3
  //
4
- // THE BUG. scripts/gds/lib.sh — sourced by every bash smoke — resolved the CLI
4
+ // THE BUG. scripts/bongos/lib.sh — sourced by every bash smoke — resolved the CLI
5
5
  // session token from a hardcoded `${HOME}/.config/otb/` and defaulted the API
6
6
  // base to a hardcoded founder host. On any instance whose configDir is not
7
7
  // `otb` (this one's is `cloudbongos`) every sourcing script died looking for a
@@ -32,7 +32,7 @@ import { fitnessSource } from './helpers.mjs';
32
32
 
33
33
  const require = createRequire(import.meta.url);
34
34
  const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
35
- const GDS = path.join(ROOT, 'scripts', 'gds');
35
+ const GDS = path.join(ROOT, 'scripts', 'bongos');
36
36
  const fitness = require(path.join(GDS, 'fitness.js'));
37
37
 
38
38
  // Every bash script that resolves a GDS token or API base.
@@ -92,23 +92,23 @@ test('lib.sh resolves both values through node, not python3', () => {
92
92
  // ---- 2. the scripts still parse, and the helpers behave --------------------
93
93
 
94
94
  test('every smoke script passes bash -n', (t) => {
95
- const probe = bash(['-n', 'scripts/gds/lib.sh']);
95
+ const probe = bash(['-n', 'scripts/bongos/lib.sh']);
96
96
  if (!probe) return t.skip('bash not available on this machine');
97
97
  for (const f of SMOKES) {
98
- const r = bash(['-n', `scripts/gds/${f}`]);
99
- assert.equal(r.status, 0, `bash -n scripts/gds/${f} failed:\n${r.stderr}`);
98
+ const r = bash(['-n', `scripts/bongos/${f}`]);
99
+ assert.equal(r.status, 0, `bash -n scripts/bongos/${f} failed:\n${r.stderr}`);
100
100
  }
101
101
  });
102
102
 
103
103
  test('gds_api_base honors the GDS_API_BASE override', (t) => {
104
- const r = bash(['-c', 'source scripts/gds/lib.sh; GDS_API_BASE=http://127.0.0.1:9 gds_api_base']);
104
+ const r = bash(['-c', 'source scripts/bongos/lib.sh; GDS_API_BASE=http://127.0.0.1:9 gds_api_base']);
105
105
  if (!r) return t.skip('bash not available on this machine');
106
106
  assert.equal(r.status, 0, r.stderr);
107
107
  assert.equal(r.stdout, 'http://127.0.0.1:9');
108
108
  });
109
109
 
110
110
  test('gds_api_base falls back to the instance, never a foreign host', (t) => {
111
- const r = bash(['-c', 'source scripts/gds/lib.sh; gds_api_base']);
111
+ const r = bash(['-c', 'source scripts/bongos/lib.sh; gds_api_base']);
112
112
  if (!r) return t.skip('bash not available on this machine');
113
113
  assert.equal(r.status, 0, r.stderr);
114
114
  assert.match(r.stdout, /^https?:\/\/\S+$/, `expected a resolved origin, got "${r.stdout}"`);
@@ -135,7 +135,7 @@ test('a re-hardcoded host in a .sh is caught, and a rationale comment is not', (
135
135
  '# rationale: this used to point at https://amazonprimea.com',
136
136
  'BASE="${GDS_API_BASE:-https://amazonprimea.com}"',
137
137
  ].join('\n');
138
- const found = fitness.scanPromptIdentity('scripts/gds/fake.sh', sh, '.sh');
138
+ const found = fitness.scanPromptIdentity('scripts/bongos/fake.sh', sh, '.sh');
139
139
  assert.equal(found.length, 1, `expected exactly the code line to trip: ${JSON.stringify(found)}`);
140
140
  assert.match(found[0], /fake\.sh:3/);
141
141
  });
@@ -144,7 +144,7 @@ test('the .sh comment strip cannot swallow a literal after an inline #', () => {
144
144
  // Cutting from ANY `#` would truncate `${v#p}` / `$#` lines and hide what
145
145
  // follows them. Only full-line comments are stripped.
146
146
  const sh = 'N=${VAR#prefix}; curl https://amazonprimea.com/healthz\n';
147
- assert.equal(fitness.scanPromptIdentity('scripts/gds/fake.sh', sh, '.sh').length, 1);
147
+ assert.equal(fitness.scanPromptIdentity('scripts/bongos/fake.sh', sh, '.sh').length, 1);
148
148
  assert.match(fitness.stripCommentsForIdentity(' # only a comment\ncode\n', '.sh'), /^\ncode/);
149
149
  });
150
150