@bongos/core 1.21.175 → 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 (1739) hide show
  1. package/.bongos-core.json +3551 -1516
  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 +1370 -1411
  68. package/docs/copy-registry.json +2136 -2536
  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 +5 -3
  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 +20 -1
  91. package/docs/page-readings.json +4387 -4603
  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 +4 -4
  180. package/modules/hall-ui/public/blockers.js +29 -30
  181. package/modules/hall-ui/public/board-room.css +5 -17
  182. package/modules/hall-ui/public/board-room.html +5 -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-map.html +1 -1
  206. package/modules/hall-ui/public/goals-page.js +5 -5
  207. package/modules/hall-ui/public/goals-render.js +10 -11
  208. package/modules/hall-ui/public/goals.css +10 -0
  209. package/modules/hall-ui/public/goals.html +14 -7
  210. package/modules/hall-ui/public/government.html +3 -5
  211. package/modules/hall-ui/public/government.js +1 -5
  212. package/modules/hall-ui/public/hall-render.js +117 -57
  213. package/modules/hall-ui/public/hall-widgets.js +11 -11
  214. package/modules/hall-ui/public/idea.html +1 -1
  215. package/modules/hall-ui/public/ideas.html +3 -1
  216. package/modules/hall-ui/public/ideas.js +1 -0
  217. package/modules/hall-ui/public/index.html +12 -6
  218. package/modules/hall-ui/public/index.states.json +1 -1
  219. package/modules/hall-ui/public/mine-lens.js +1 -1
  220. package/modules/hall-ui/public/modules.html +7 -10
  221. package/modules/hall-ui/public/modules.js +0 -2
  222. package/modules/hall-ui/public/my-agents.html +1 -1
  223. package/modules/hall-ui/public/palette.js +5 -5
  224. package/modules/hall-ui/public/primer.html +4 -9
  225. package/modules/hall-ui/public/profile-connections.js +10 -2
  226. package/modules/hall-ui/public/profile-roles.js +3 -10
  227. package/modules/hall-ui/public/profile.html +12 -10
  228. package/modules/hall-ui/public/profile.js +13 -17
  229. package/modules/hall-ui/public/project-settings.html +3 -4
  230. package/modules/hall-ui/public/project-settings.js +0 -3
  231. package/modules/hall-ui/public/ranks.html +5 -11
  232. package/modules/hall-ui/public/ranks.js +6 -8
  233. package/modules/hall-ui/public/roadmap.css +0 -2
  234. package/modules/hall-ui/public/roadmap.html +1 -1
  235. package/modules/hall-ui/public/roadmap.js +16 -51
  236. package/modules/hall-ui/public/roster.html +1 -1
  237. package/modules/hall-ui/public/sessions.html +6 -8
  238. package/modules/hall-ui/public/sessions.js +7 -7
  239. package/modules/hall-ui/public/settings.html +1 -1
  240. package/modules/hall-ui/public/shell-trail.js +1 -1
  241. package/modules/hall-ui/public/shell.js +17 -17
  242. package/modules/hall-ui/public/street-deck.css +2 -1
  243. package/modules/hall-ui/public/street-deck.js +10 -2
  244. package/modules/hall-ui/public/street-desk.js +16 -5
  245. package/modules/hall-ui/public/street.html +1 -1
  246. package/modules/hall-ui/public/studio-lib.js +4 -0
  247. package/modules/hall-ui/public/studio.css +2 -0
  248. package/modules/hall-ui/public/studio.html +1 -1
  249. package/modules/hall-ui/public/studio.js +27 -1
  250. package/modules/hall-ui/public/style.css +43 -26
  251. package/modules/hall-ui/public/task-detail.js +10 -7
  252. package/modules/hall-ui/public/task.css +2 -0
  253. package/modules/hall-ui/public/task.html +3 -1
  254. package/modules/hall-ui/public/task.js +23 -7
  255. package/modules/hall-ui/public/thinking.html +1 -1
  256. package/modules/hall-ui/public/tweak-editor.html +1 -1
  257. package/modules/hall-ui/public/vote-control.js +208 -0
  258. package/modules/hall-ui/public/watch.html +3 -5
  259. package/modules/hall-ui/public/watch.js +5 -4
  260. package/modules/hall-ui/public/welcome-boot.css +130 -0
  261. package/modules/hall-ui/public/welcome-boot.js +334 -0
  262. package/modules/hall-ui/public/welcome-day.webp +0 -0
  263. package/modules/hall-ui/public/welcome-night.webp +0 -0
  264. package/modules/hall-ui/public/work-summary.js +1 -1
  265. package/modules/hall-ui/public/work.css +1 -0
  266. package/modules/hall-ui/public/work.html +3 -1
  267. package/modules/hall-ui/public/work.js +2 -1
  268. package/modules/hall-ui/records/accomplishments.md +16 -0
  269. package/modules/hall-ui/records/hall-ask-card.md +9 -0
  270. package/modules/hall-ui/records/karma-vote-control.md +13 -0
  271. package/modules/hall-ui/records/oversight-family.md +1 -1
  272. package/modules/hall-ui/records/profile-connections.md +2 -0
  273. package/modules/hall-ui/records/profile-roles.md +1 -1
  274. package/modules/hall-ui/records/reading-rooms.md +1 -1
  275. package/modules/hall-ui/records/welcome-tower.md +50 -0
  276. package/modules/ideas/migrations/ideas_011_idea_votes.sql +31 -0
  277. package/modules/ideas/projection.js +1 -1
  278. package/modules/ideas/routes/blockers.js +3 -3
  279. package/modules/ideas/routes/inbox.js +29 -1
  280. package/modules/ideas/routes/ratify-goal.js +1 -1
  281. package/modules/ideas/routing.js +1 -1
  282. package/modules/ideas/templates.js +1 -1
  283. package/modules/ideas/trail-descent.js +1 -1
  284. package/modules/ideas/trail-size.js +1 -1
  285. package/modules/ideas/votes.js +93 -0
  286. package/modules/lifecycle/abandon-leftovers.js +1 -1
  287. package/modules/lifecycle/cascade.js +1 -1
  288. package/modules/lifecycle/conflict-resolve.js +13 -21
  289. package/modules/lifecycle/criterion-ref.js +1 -1
  290. package/modules/lifecycle/db-analytics.js +57 -4
  291. package/modules/lifecycle/db-deps-criteria.js +1 -1
  292. package/modules/lifecycle/db-ship.js +2 -2
  293. package/modules/lifecycle/db-tasks.js +2 -2
  294. package/modules/lifecycle/db-versions.js +1 -1
  295. package/modules/lifecycle/db.js +2 -0
  296. package/modules/lifecycle/dead-deps.js +3 -3
  297. package/modules/lifecycle/dependency-advisory.js +3 -3
  298. package/modules/lifecycle/goal-category.js +1 -1
  299. package/modules/lifecycle/goal-forest.js +1 -1
  300. package/modules/lifecycle/goal-task-relevance-advisory.js +1 -1
  301. package/modules/lifecycle/kickoff-checklist.js +1 -1
  302. package/modules/lifecycle/kickoff-seed.js +1 -1
  303. package/modules/lifecycle/lifecycle.js +2 -0
  304. package/modules/lifecycle/merge-reach.js +29 -15
  305. package/modules/lifecycle/missing-dep-classify.js +3 -3
  306. package/modules/lifecycle/module.json +2 -1
  307. package/modules/lifecycle/page-tweak-approve.js +85 -1
  308. package/modules/lifecycle/page-tweak-hold.js +1 -1
  309. package/modules/lifecycle/publish-reconciler.js +1 -2
  310. package/modules/lifecycle/rot.js +1 -1
  311. package/modules/lifecycle/routes/artist-gate.js +1 -1
  312. package/modules/lifecycle/routes/gate-approvals.js +22 -1
  313. package/modules/lifecycle/routes/goals.js +1 -1
  314. package/modules/lifecycle/routes/task-route-helpers.js +1 -1
  315. package/modules/lifecycle/routes/task-votes.js +54 -0
  316. package/modules/lifecycle/routes/task-write-routes.js +1 -1
  317. package/modules/lifecycle/routes/tasks.js +2 -2
  318. package/modules/lifecycle/routes/versions.js +2 -2
  319. package/modules/lifecycle/ship-card.js +4 -4
  320. package/modules/lifecycle/ship-preflight.js +1 -1
  321. package/modules/lifecycle/task-classifier.js +1 -1
  322. package/modules/lifecycle/task-status.js +1 -1
  323. package/modules/lifecycle/task-visual-db.js +1 -1
  324. package/modules/memory/learnings.js +1 -1
  325. package/modules/memory/pollers/search-index.js +2 -2
  326. package/modules/memory/routes/learnings.js +1 -1
  327. package/modules/memory/routes/memory.js +1 -1
  328. package/modules/memory/search.js +2 -2
  329. package/modules/npm-release/release.js +1 -1
  330. package/modules/onboarding/howto-moments.js +1 -1
  331. package/modules/onboarding/newcomer-restock.js +3 -3
  332. package/modules/onboarding/onboarding.js +1 -1
  333. package/modules/pixel-art/skills/otb-tile-generate/SKILL.md +1 -1
  334. package/modules/platform-identity/origin-containment.js +1 -1
  335. package/modules/platform-identity/publish-gate.js +1 -1
  336. package/modules/platform-identity/tests/platform-identity.mjs +1 -1
  337. package/modules/provisioning/capacity.js +1 -1
  338. package/modules/provisioning/core-upgrade.js +15 -9
  339. package/modules/provisioning/credential-preflight.js +3 -3
  340. package/modules/provisioning/disconnect.js +1 -1
  341. package/modules/provisioning/dns-resolves.js +1 -1
  342. package/modules/provisioning/module.json +1 -1
  343. package/modules/provisioning/onboard-plan.js +1 -1
  344. package/modules/provisioning/paid-shape-gate.js +2 -2
  345. package/modules/provisioning/planet-physics.js +11 -2
  346. package/modules/provisioning/pollers/liveness-sweep.js +1 -1
  347. package/modules/provisioning/pollers/runner-drift-notify.js +5 -5
  348. package/modules/provisioning/provisioning.js +2 -2
  349. package/modules/provisioning/render-lookup.js +1 -1
  350. package/modules/provisioning/render-standup.js +3 -3
  351. package/modules/provisioning/repo-private.js +1 -1
  352. package/modules/provisioning/routes/callback-page.js +1 -1
  353. package/modules/provisioning/routes/core-upgrade.js +23 -3
  354. package/modules/provisioning/routes/provisioning.js +2 -2
  355. package/modules/provisioning/routes/render-standup.js +1 -1
  356. package/modules/provisioning/routes/repo-private.js +1 -1
  357. package/modules/provisioning/soft-limits.js +1 -1
  358. package/modules/provisioning/starter-bundles.js +4 -2
  359. package/modules/provisioning/tests/provisioning.mjs +1 -1
  360. package/modules/public-landing/public/account.html +4 -6
  361. package/modules/public-landing/public/assets/cosmos.css +13 -6
  362. package/modules/public-landing/public/connections.html +4 -6
  363. package/modules/public-landing/public/contact.html +4 -6
  364. package/modules/public-landing/public/guild.html +4 -6
  365. package/modules/public-landing/public/index.html +11 -9
  366. package/modules/public-landing/public/invitations.html +4 -6
  367. package/modules/public-landing/public/privacy.html +4 -6
  368. package/modules/public-landing/public/projects.html +168 -46
  369. package/modules/public-landing/public/terms.html +4 -6
  370. package/modules/raise/content/copy.json +40 -0
  371. package/modules/raise/content/nda.html +39 -0
  372. package/modules/raise/content/settings.json +49 -0
  373. package/modules/raise/db.js +95 -0
  374. package/modules/raise/migrations/raise_001_tables.sql +71 -0
  375. package/modules/raise/module.json +28 -0
  376. package/modules/raise/page.js +194 -0
  377. package/modules/raise/public/edit.js +152 -0
  378. package/modules/raise/public/favicon.svg +1 -0
  379. package/modules/raise/public/logo-ink.svg +1 -0
  380. package/modules/raise/public/logo-night.svg +1 -0
  381. package/modules/raise/public/mode.js +8 -0
  382. package/modules/raise/public/raise.css +234 -0
  383. package/modules/raise/public/raise.js +91 -0
  384. package/modules/raise/raise.js +174 -0
  385. package/modules/raise/routes/raise.js +152 -0
  386. package/modules/raise/views/gate.html +39 -0
  387. package/modules/raise/views/nda.html +21 -0
  388. package/modules/raise/views/page.html +133 -0
  389. package/modules/raise/web.js +72 -0
  390. package/modules/render-deploy/deploys.js +1 -1
  391. package/modules/render-deploy/render.js +2 -2
  392. package/modules/security/secret-scrub.js +3 -3
  393. package/modules/security/security.js +1 -1
  394. package/modules/security/tests/artifact_scan.mjs +1 -1
  395. package/modules/security/tests/mirror.mjs +1 -1
  396. package/modules/security/tests/scan_store.mjs +1 -1
  397. package/modules/sessions/db.js +2 -2
  398. package/modules/sessions/pulse.js +2 -2
  399. package/modules/sessions/routes/sessions.js +1 -1
  400. package/modules/specialities/specialities.js +1 -1
  401. package/modules/status-ui/public/README.md +3 -4
  402. package/modules/status-ui/public/index.html +5 -31
  403. package/modules/status-ui/public/status.js +6 -174
  404. package/modules/status-ui/public/style.css +4 -133
  405. package/modules/ui-design/docs/design-contract.md +3 -3
  406. package/modules/ui-design/kit/README.md +1 -1
  407. package/modules/ui-design/kit/serve.js +13 -4
  408. package/modules/ui-design/scripts/design-sync.js +1 -1
  409. package/modules/ui-design/scripts/figma-design-sync.js +1 -1
  410. package/modules/ui-design/scripts/validate-design.js +1 -1
  411. package/package-lock.json +27 -11
  412. package/package.json +2 -3
  413. package/release-notes.json +172 -0
  414. package/scripts/bongos/CLAUDE.md +15 -0
  415. package/scripts/bongos/abandon.js +137 -0
  416. package/scripts/bongos/accessibility-replay.js +195 -0
  417. package/scripts/bongos/address-park-sweep.sh +91 -0
  418. package/scripts/bongos/adopt-detect.js +123 -0
  419. package/scripts/bongos/adopt-import.js +111 -0
  420. package/scripts/bongos/adopt-preflight.js +187 -0
  421. package/scripts/bongos/adr-namespace.js +273 -0
  422. package/scripts/bongos/agent-invoke.js +689 -0
  423. package/scripts/bongos/agents-sync.js +502 -0
  424. package/scripts/bongos/api-alias-caller-scan.js +256 -0
  425. package/scripts/bongos/api-artifacts.js +91 -0
  426. package/scripts/bongos/api.js +86 -0
  427. package/scripts/bongos/api.ps1 +26 -0
  428. package/scripts/bongos/architect-audit.js +294 -0
  429. package/scripts/bongos/artifact-audit.js +326 -0
  430. package/scripts/bongos/artifact-format.js +203 -0
  431. package/scripts/bongos/artifact-staleness.js +267 -0
  432. package/scripts/bongos/ask.js +231 -0
  433. package/scripts/bongos/audit-authorship.sh +329 -0
  434. package/scripts/bongos/audit-deps.js +189 -0
  435. package/scripts/bongos/audit-gate.js +121 -0
  436. package/scripts/bongos/audit-rank-roles.js +172 -0
  437. package/scripts/bongos/audit-replay.sh +205 -0
  438. package/scripts/bongos/autobongos-digest.js +123 -0
  439. package/scripts/bongos/autobongos-grade-cap.js +187 -0
  440. package/scripts/bongos/autobongos-loop.js +210 -0
  441. package/scripts/bongos/autobongos-run.js +1361 -0
  442. package/scripts/bongos/autobongos-service.cmd +50 -0
  443. package/scripts/bongos/autobongos-service.ps1 +270 -0
  444. package/scripts/bongos/autobongos-tweak-lane.js +262 -0
  445. package/scripts/bongos/autobongos-verify.js +618 -0
  446. package/scripts/bongos/autonomy-gate.js +135 -0
  447. package/scripts/bongos/autonomy-gauge-statusline.js +124 -0
  448. package/scripts/bongos/autonomy-gauge.js +84 -0
  449. package/scripts/bongos/backfill-cost.js +176 -0
  450. package/scripts/bongos/backfill-disciplines.js +144 -0
  451. package/scripts/bongos/backfill-session-earnings.js +123 -0
  452. package/scripts/bongos/backfill-session-types.js +87 -0
  453. package/scripts/bongos/backfill-sessions.js +411 -0
  454. package/scripts/bongos/backfill-subagent-rewards.js +485 -0
  455. package/scripts/bongos/backfill-task-rewards.js +413 -0
  456. package/scripts/bongos/backlog-review.js +399 -0
  457. package/scripts/bongos/backup-dropin-sweep.sh +95 -0
  458. package/scripts/bongos/backup.js +116 -0
  459. package/scripts/bongos/baseline-staleness.js +217 -0
  460. package/scripts/bongos/bfg-principal-token.js +65 -0
  461. package/scripts/bongos/bug-attachment-audit.js +149 -0
  462. package/scripts/bongos/bug-attachment-recover.js +198 -0
  463. package/scripts/bongos/bug-triage.js +292 -0
  464. package/scripts/bongos/build-bongos.js +94 -0
  465. package/scripts/bongos/bump-version.js +221 -0
  466. package/scripts/bongos/capture.js +481 -0
  467. package/scripts/bongos/category-advisory-guard.js +206 -0
  468. package/scripts/bongos/ci-grade.js +82 -0
  469. package/scripts/bongos/claim-recall.js +112 -0
  470. package/scripts/bongos/claim.js +789 -0
  471. package/scripts/bongos/classify-discipline.js +153 -0
  472. package/scripts/bongos/claude-materialize.js +1200 -0
  473. package/scripts/bongos/claude-md-template.js +142 -0
  474. package/scripts/bongos/cleanup-orphans.js +74 -0
  475. package/scripts/bongos/cli-lib.js +1226 -0
  476. package/scripts/bongos/client-baseurl-guard.js +116 -0
  477. package/scripts/bongos/codemod-rename-scripts-gds.js +381 -0
  478. package/scripts/bongos/codemod-rename-src-gds.js +145 -0
  479. package/scripts/bongos/conductor-dispatch.js +535 -0
  480. package/scripts/bongos/context-pack.js +326 -0
  481. package/scripts/bongos/control-manifest.js +199 -0
  482. package/scripts/bongos/copy-apply.js +758 -0
  483. package/scripts/bongos/copy-inventory.js +571 -0
  484. package/scripts/bongos/core-origin-follow.js +185 -0
  485. package/scripts/bongos/core-pin-sync.js +260 -0
  486. package/scripts/bongos/coreB-carve-proof.sh +725 -0
  487. package/scripts/bongos/cost-report.js +63 -0
  488. package/scripts/bongos/cost.js +47 -0
  489. package/scripts/bongos/credential-presence.js +296 -0
  490. package/scripts/bongos/cutover-codemod.js +240 -0
  491. package/scripts/bongos/db-backup-nightly.sh +232 -0
  492. package/scripts/bongos/db-backup-offsite.sh +267 -0
  493. package/scripts/bongos/demote.js +45 -0
  494. package/scripts/bongos/deploy-divergence.js +454 -0
  495. package/scripts/bongos/deploy-main-audit-gate.sh +97 -0
  496. package/scripts/bongos/design-sync.js +12 -0
  497. package/scripts/bongos/dev-box-guard.js +166 -0
  498. package/scripts/bongos/dev-lib.js +722 -0
  499. package/scripts/bongos/dev.js +645 -0
  500. package/scripts/bongos/device-flow-help.js +72 -0
  501. package/scripts/bongos/diagnose-achievements.js +118 -0
  502. package/scripts/bongos/diagram-facts.js +355 -0
  503. package/scripts/bongos/discord-channels.js +77 -0
  504. package/scripts/bongos/do-api.js +109 -0
  505. package/scripts/bongos/doc-cli-guard.js +274 -0
  506. package/scripts/bongos/doc-comment-coverage.js +139 -0
  507. package/scripts/bongos/doc-control-claims.js +170 -0
  508. package/scripts/bongos/docs-entropy.js +453 -0
  509. package/scripts/bongos/doctor.js +493 -0
  510. package/scripts/bongos/enroll-control-plane.js +101 -0
  511. package/scripts/bongos/exec-path-guard.js +564 -0
  512. package/scripts/bongos/feedback-send.js +249 -0
  513. package/scripts/bongos/fetch-art-key.js +106 -0
  514. package/scripts/bongos/fetch-sound-prefs.js +126 -0
  515. package/scripts/bongos/figma-design-sync.js +11 -0
  516. package/scripts/bongos/find-untested.js +371 -0
  517. package/scripts/bongos/fitness-checks-error-envelope.js +134 -0
  518. package/scripts/bongos/fitness-checks-identity.js +343 -0
  519. package/scripts/bongos/fitness-checks-packaging.js +132 -0
  520. package/scripts/bongos/fitness-checks-route-pins.js +76 -0
  521. package/scripts/bongos/fitness-checks-vocabulary.js +392 -0
  522. package/scripts/bongos/fitness-checks-write-validation.js +157 -0
  523. package/scripts/bongos/fitness-lib.js +127 -0
  524. package/scripts/bongos/fitness-migration-contraction.js +50 -0
  525. package/scripts/bongos/fitness-ratchets.js +594 -0
  526. package/scripts/bongos/fitness.js +1498 -0
  527. package/scripts/bongos/forwarder.js +80 -0
  528. package/scripts/bongos/gate-review.js +330 -0
  529. package/scripts/bongos/gating.js +348 -0
  530. package/scripts/{gds → bongos}/gds-db-backup.service +6 -6
  531. package/scripts/{gds → bongos}/gds-db-backup.timer +4 -4
  532. package/scripts/{gds → bongos}/gds-db-offsite.service +4 -4
  533. package/scripts/{gds → bongos}/gds-db-offsite.timer +4 -4
  534. package/scripts/bongos/gds-literal-scan.js +196 -0
  535. package/scripts/bongos/gen-api-client.js +576 -0
  536. package/scripts/bongos/gen-api-docs.js +1111 -0
  537. package/scripts/bongos/gen-atlas.js +366 -0
  538. package/scripts/bongos/gen-diagrams.js +608 -0
  539. package/scripts/bongos/gen-file-map.js +337 -0
  540. package/scripts/bongos/gen-freshness.js +32 -0
  541. package/scripts/bongos/gen-interaction-posture.js +122 -0
  542. package/scripts/bongos/gen-repo-map.js +540 -0
  543. package/scripts/bongos/gen-role-responsibilities.js +134 -0
  544. package/scripts/bongos/gen-session-index.js +243 -0
  545. package/scripts/bongos/gen-sounds.js +176 -0
  546. package/scripts/bongos/git-merge-regen.js +254 -0
  547. package/scripts/bongos/go-live.js +1071 -0
  548. package/scripts/bongos/goal-names.js +102 -0
  549. package/scripts/bongos/goal.js +272 -0
  550. package/scripts/bongos/government-walk.js +1477 -0
  551. package/scripts/bongos/grade-correlation-audit.js +310 -0
  552. package/scripts/bongos/grade-replay.js +237 -0
  553. package/scripts/bongos/grade-smoke.js +205 -0
  554. package/scripts/bongos/home-isolation-guard.js +126 -0
  555. package/scripts/bongos/hooks/pre-push.js +211 -0
  556. package/scripts/bongos/howto.js +145 -0
  557. package/scripts/bongos/http-api-client.js +81 -0
  558. package/scripts/bongos/identity-strip.js +75 -0
  559. package/scripts/bongos/init.js +1159 -0
  560. package/scripts/bongos/install-git-hooks.js +200 -0
  561. package/scripts/bongos/instance-apex.js +38 -0
  562. package/scripts/bongos/intent-retry.js +52 -0
  563. package/scripts/bongos/key-card.js +222 -0
  564. package/scripts/bongos/key-status.js +126 -0
  565. package/scripts/bongos/land-watch.js +201 -0
  566. package/scripts/bongos/leak-scan-allowlist.js +293 -0
  567. package/scripts/bongos/learning-capture.js +145 -0
  568. package/scripts/bongos/lib.sh +74 -0
  569. package/scripts/bongos/linkify-refs.js +655 -0
  570. package/scripts/bongos/lint-infra-exec.js +70 -0
  571. package/scripts/bongos/lint-migrations.js +102 -0
  572. package/scripts/bongos/lint-workflow-exec.js +63 -0
  573. package/scripts/bongos/local-preview-lib.js +128 -0
  574. package/scripts/bongos/local-preview.js +82 -0
  575. package/scripts/bongos/login.js +360 -0
  576. package/scripts/bongos/main-audit.js +625 -0
  577. package/scripts/bongos/me.js +97 -0
  578. package/scripts/bongos/memory-map.js +176 -0
  579. package/scripts/bongos/merge-lock.js +71 -0
  580. package/scripts/bongos/migration-namespace.js +313 -0
  581. package/scripts/bongos/mirror-lineage-check.js +343 -0
  582. package/scripts/bongos/mirror-redact.js +350 -0
  583. package/scripts/bongos/module-artifact.js +289 -0
  584. package/scripts/bongos/module-assess-docs.js +238 -0
  585. package/scripts/bongos/module-assess-installs.js +228 -0
  586. package/scripts/bongos/module-assess-score.js +111 -0
  587. package/scripts/bongos/module-assess-security.js +252 -0
  588. package/scripts/bongos/module-assess-tests.js +278 -0
  589. package/scripts/bongos/module-assess-version.js +92 -0
  590. package/scripts/bongos/module-error-report.js +148 -0
  591. package/scripts/{gds → bongos}/module-test-runner/README.md +3 -3
  592. package/scripts/{gds → bongos}/module-test-runner/module-tests.yml +2 -2
  593. package/scripts/bongos/module-test-runner.js +414 -0
  594. package/scripts/bongos/module.js +1376 -0
  595. package/scripts/bongos/move-escalation.js +141 -0
  596. package/scripts/{gds → bongos}/newcomer-floor.config.json +1 -1
  597. package/scripts/bongos/newcomer-floor.js +421 -0
  598. package/scripts/{gds → bongos}/newcomer-floor.templates.json +13 -13
  599. package/scripts/bongos/newcomer-floor.test.js +235 -0
  600. package/scripts/bongos/next-number.js +163 -0
  601. package/scripts/bongos/oauth-secret.js +202 -0
  602. package/scripts/bongos/onboard.js +267 -0
  603. package/scripts/bongos/onboarding-analyze.js +226 -0
  604. package/scripts/bongos/onboarding-config.js +179 -0
  605. package/scripts/bongos/onboarding-ship.js +92 -0
  606. package/scripts/bongos/pack-env-prefix.js +73 -0
  607. package/scripts/bongos/package-core.js +1200 -0
  608. package/scripts/bongos/page-inventory.js +348 -0
  609. package/scripts/bongos/page-reader.js +722 -0
  610. package/scripts/bongos/paste-token.js +212 -0
  611. package/scripts/bongos/plain-cards.js +351 -0
  612. package/scripts/bongos/portability-smoke-art.sh +85 -0
  613. package/scripts/bongos/portability-smoke-memory.sh +176 -0
  614. package/scripts/bongos/preflight.js +214 -0
  615. package/scripts/bongos/probe-cache.js +246 -0
  616. package/scripts/bongos/prove-strict-versioning.js +284 -0
  617. package/scripts/bongos/provision-auto-upgrade.js +162 -0
  618. package/scripts/bongos/provision-byo-host.js +68 -0
  619. package/scripts/bongos/provision-capacity.js +79 -0
  620. package/scripts/bongos/provision-caps.js +63 -0
  621. package/scripts/bongos/provision-config.js +233 -0
  622. package/scripts/bongos/provision-core-upgrade.js +1166 -0
  623. package/scripts/bongos/provision-disconnect.js +88 -0
  624. package/scripts/bongos/provision-github-setup.js +168 -0
  625. package/scripts/bongos/provision-net.js +357 -0
  626. package/scripts/bongos/provision-pin-key.js +176 -0
  627. package/scripts/bongos/provision-pin-replay.js +126 -0
  628. package/scripts/bongos/provision-process.js +170 -0
  629. package/scripts/bongos/provision-render.js +201 -0
  630. package/scripts/bongos/provision-repo-auth.js +164 -0
  631. package/scripts/bongos/provision-repo-private.js +98 -0
  632. package/scripts/bongos/provision-repo.js +1337 -0
  633. package/scripts/bongos/provision-teardown.js +106 -0
  634. package/scripts/bongos/provision-units.js +469 -0
  635. package/scripts/bongos/provision.js +1479 -0
  636. package/scripts/bongos/publish-credential-check.js +66 -0
  637. package/scripts/bongos/publish-integration-gate.js +142 -0
  638. package/scripts/bongos/publish-manifest.js +440 -0
  639. package/scripts/bongos/publish-watch.js +268 -0
  640. package/scripts/bongos/pulse.js +336 -0
  641. package/scripts/bongos/push-main.js +56 -0
  642. package/scripts/bongos/push-path-brief.js +100 -0
  643. package/scripts/bongos/read-session-export.js +359 -0
  644. package/scripts/bongos/reauth.js +155 -0
  645. package/scripts/bongos/recall.js +183 -0
  646. package/scripts/bongos/redteam-patrol.js +437 -0
  647. package/scripts/bongos/regen-instance-docs.js +47 -0
  648. package/scripts/bongos/release-core.js +80 -0
  649. package/scripts/bongos/release-notes.js +271 -0
  650. package/scripts/bongos/release.js +139 -0
  651. package/scripts/bongos/rename-goals.js +109 -0
  652. package/scripts/bongos/rename-history-check.js +369 -0
  653. package/scripts/bongos/rename-ledger-prose.js +482 -0
  654. package/scripts/bongos/render-api.js +197 -0
  655. package/scripts/bongos/render-check.js +206 -0
  656. package/scripts/bongos/render-ideas.js +226 -0
  657. package/scripts/bongos/render-payload.js +85 -0
  658. package/scripts/bongos/repo-metrics.js +363 -0
  659. package/scripts/bongos/review-sheet.js +108 -0
  660. package/scripts/bongos/role-pack-guard.js +142 -0
  661. package/scripts/bongos/route-shadow-guard.js +175 -0
  662. package/scripts/bongos/routine-schedule.js +283 -0
  663. package/scripts/bongos/run-routine.js +257 -0
  664. package/scripts/bongos/run-unit-tests.js +654 -0
  665. package/scripts/bongos/runner-drift.js +151 -0
  666. package/scripts/bongos/sandbox-stage.js +459 -0
  667. package/scripts/bongos/scope-map-guard.js +300 -0
  668. package/scripts/bongos/scope-roster-guard.js +118 -0
  669. package/scripts/bongos/seam-wiring-guard.js +275 -0
  670. package/scripts/bongos/search-ingest-db.js +288 -0
  671. package/scripts/bongos/search-ingest-md.js +269 -0
  672. package/scripts/bongos/seed-adopt-tasks.js +75 -0
  673. package/scripts/bongos/seed-api-contract-goal-tasks.js +141 -0
  674. package/scripts/bongos/seed-board-room-tasks.js +196 -0
  675. package/scripts/bongos/seed-bongos-app-tasks.js +294 -0
  676. package/scripts/bongos/seed-bongos-coreB-tranche1-tasks.js +81 -0
  677. package/scripts/bongos/seed-bongos-coreB-tranche2-tasks.js +100 -0
  678. package/scripts/bongos/seed-bongos-goal-hierarchy-tasks.js +307 -0
  679. package/scripts/bongos/seed-bongos-module-system-tasks.js +346 -0
  680. package/scripts/bongos/seed-bongos-tasks.js +214 -0
  681. package/scripts/bongos/seed-bongos-v1-idea-routing-tasks.js +152 -0
  682. package/scripts/bongos/seed-bongos-v1-seo-tasks.js +104 -0
  683. package/scripts/bongos/seed-bv1-community-tasks.js +131 -0
  684. package/scripts/bongos/seed-bv1-privacy-invites-tasks.js +133 -0
  685. package/scripts/bongos/seed-bv1-profile-page-tasks.js +161 -0
  686. package/scripts/bongos/seed-bv1-profiles-tasks.js +135 -0
  687. package/scripts/bongos/seed-bv1-r01-delta-tasks.js +154 -0
  688. package/scripts/bongos/seed-bv2-ideator-surface-tasks.js +390 -0
  689. package/scripts/bongos/seed-bv2-tweak-mode-tasks.js +277 -0
  690. package/scripts/bongos/seed-gds-v4-tasks.js +624 -0
  691. package/scripts/bongos/seed-governance-tasks.js +340 -0
  692. package/scripts/bongos/seed-medusa-tasks.js +440 -0
  693. package/scripts/bongos/seed-module-upstreaming.js +219 -0
  694. package/scripts/bongos/seed-productization-tasks.js +235 -0
  695. package/scripts/bongos/seed-project-admin-console-tasks.js +88 -0
  696. package/scripts/bongos/seed-provisioning-tasks.js +83 -0
  697. package/scripts/bongos/seed-staging.sh +117 -0
  698. package/scripts/bongos/seed-strict-versioning-tasks.js +275 -0
  699. package/scripts/bongos/seed-v2-world-tasks.js +283 -0
  700. package/scripts/bongos/seed-verify-criteria.js +124 -0
  701. package/scripts/bongos/sequence.js +597 -0
  702. package/scripts/bongos/session-cost.js +430 -0
  703. package/scripts/bongos/session-digest-build.js +293 -0
  704. package/scripts/bongos/session-digest.js +200 -0
  705. package/scripts/bongos/session-eval.js +631 -0
  706. package/scripts/bongos/session-transcript-build.js +155 -0
  707. package/scripts/bongos/session-transcript-upload.js +29 -0
  708. package/scripts/bongos/session.js +404 -0
  709. package/scripts/bongos/setup.js +646 -0
  710. package/scripts/bongos/ship-check.js +89 -0
  711. package/scripts/bongos/ship-deploy-target.js +393 -0
  712. package/scripts/bongos/ship-escalation.js +167 -0
  713. package/scripts/bongos/ship-finish.js +420 -0
  714. package/scripts/bongos/ship-flow.js +1217 -0
  715. package/scripts/bongos/ship-git.js +100 -0
  716. package/scripts/bongos/ship-grade-steps.js +547 -0
  717. package/scripts/bongos/ship-grade.js +426 -0
  718. package/scripts/bongos/ship-honesty.js +314 -0
  719. package/scripts/bongos/ship-io.js +139 -0
  720. package/scripts/bongos/ship-land.js +1130 -0
  721. package/scripts/bongos/ship-memory-sync.js +249 -0
  722. package/scripts/bongos/ship-merge-gate.js +225 -0
  723. package/scripts/bongos/ship-merge.js +466 -0
  724. package/scripts/bongos/ship-mode-ask.js +138 -0
  725. package/scripts/bongos/ship-mode-manual.js +54 -0
  726. package/scripts/bongos/ship-preflight-steps.js +399 -0
  727. package/scripts/bongos/ship-regen.js +292 -0
  728. package/scripts/bongos/ship-resume.js +201 -0
  729. package/scripts/bongos/ship-session-upload.js +313 -0
  730. package/scripts/bongos/ship-state.js +110 -0
  731. package/scripts/bongos/ship-surprise.js +84 -0
  732. package/scripts/bongos/ship-visual.js +75 -0
  733. package/scripts/bongos/ship.js +382 -0
  734. package/scripts/bongos/shipping-mode.js +71 -0
  735. package/scripts/bongos/skill-lint.js +250 -0
  736. package/scripts/bongos/skill-preflight.js +361 -0
  737. package/scripts/bongos/smoke-batch-claim.sh +238 -0
  738. package/scripts/bongos/smoke-batch-release.sh +316 -0
  739. package/scripts/bongos/smoke-claim-consistency.sh +222 -0
  740. package/scripts/bongos/smoke-dependencies.sh +143 -0
  741. package/scripts/bongos/smoke-gds.js +256 -0
  742. package/scripts/bongos/smoke-write.sh +275 -0
  743. package/scripts/bongos/source-text-test-scan.js +106 -0
  744. package/scripts/bongos/spark.js +294 -0
  745. package/scripts/bongos/stale-worktrees.js +212 -0
  746. package/scripts/bongos/start-goals.js +102 -0
  747. package/scripts/bongos/start.js +1090 -0
  748. package/scripts/bongos/status.js +545 -0
  749. package/scripts/bongos/strand-watch.js +315 -0
  750. package/scripts/bongos/stranded-rows.js +200 -0
  751. package/scripts/bongos/stray-unit-sweep.sh +71 -0
  752. package/scripts/bongos/surface.js +101 -0
  753. package/scripts/bongos/task.js +273 -0
  754. package/scripts/bongos/test-path-guard.js +99 -0
  755. package/scripts/bongos/triage.js +742 -0
  756. package/scripts/bongos/turn-end-sound.js +74 -0
  757. package/scripts/bongos/tweak-halt.js +70 -0
  758. package/scripts/bongos/tweak-renders.js +200 -0
  759. package/scripts/bongos/uat.js +120 -0
  760. package/scripts/bongos/ui-kit-transform.js +43 -0
  761. package/scripts/bongos/update-channel.js +512 -0
  762. package/scripts/bongos/update-sweep.js +829 -0
  763. package/scripts/bongos/upgrade-artist-gate.js +46 -0
  764. package/scripts/bongos/upgrade-commit-identity.js +32 -0
  765. package/scripts/bongos/upgrade-migrate.js +224 -0
  766. package/scripts/bongos/upgrade-operator.js +73 -0
  767. package/scripts/bongos/upgrade-outcome.js +174 -0
  768. package/scripts/bongos/upgrade.js +1499 -0
  769. package/scripts/bongos/validate-design.js +12 -0
  770. package/scripts/bongos/version-close.js +621 -0
  771. package/scripts/bongos/version-literal-guard.js +140 -0
  772. package/scripts/bongos/version-select.js +79 -0
  773. package/scripts/bongos/visual-review-nudge.js +39 -0
  774. package/scripts/bongos/wedge-remedy.js +174 -0
  775. package/scripts/bongos/worktree-claim-guard.js +130 -0
  776. package/scripts/bongos/worktree.js +449 -0
  777. package/scripts/discord/post.js +1 -1
  778. package/scripts/gds/README.md +9 -0
  779. package/scripts/gds/abandon.js +6 -136
  780. package/scripts/gds/accessibility-replay.js +5 -194
  781. package/scripts/gds/address-park-sweep.sh +7 -90
  782. package/scripts/gds/adopt-detect.js +5 -121
  783. package/scripts/gds/adopt-import.js +5 -109
  784. package/scripts/gds/adopt-preflight.js +5 -185
  785. package/scripts/gds/adr-namespace.js +5 -271
  786. package/scripts/gds/agent-invoke.js +5 -687
  787. package/scripts/gds/agents-sync.js +5 -500
  788. package/scripts/gds/api-alias-caller-scan.js +5 -255
  789. package/scripts/gds/api-artifacts.js +6 -0
  790. package/scripts/gds/api.js +6 -85
  791. package/scripts/gds/api.ps1 +8 -26
  792. package/scripts/gds/architect-audit.js +6 -293
  793. package/scripts/gds/artifact-audit.js +5 -324
  794. package/scripts/gds/artifact-format.js +6 -203
  795. package/scripts/gds/artifact-staleness.js +5 -265
  796. package/scripts/gds/ask.js +5 -229
  797. package/scripts/gds/audit-authorship.sh +7 -328
  798. package/scripts/gds/audit-deps.js +6 -188
  799. package/scripts/gds/audit-gate.js +5 -119
  800. package/scripts/gds/audit-rank-roles.js +6 -171
  801. package/scripts/gds/audit-replay.sh +7 -204
  802. package/scripts/gds/autobongos-digest.js +5 -121
  803. package/scripts/gds/autobongos-grade-cap.js +5 -186
  804. package/scripts/gds/autobongos-loop.js +5 -208
  805. package/scripts/gds/autobongos-run.js +5 -1359
  806. package/scripts/gds/autobongos-service.cmd +8 -49
  807. package/scripts/gds/autobongos-service.ps1 +8 -270
  808. package/scripts/gds/autobongos-tweak-lane.js +5 -261
  809. package/scripts/gds/autobongos-verify.js +5 -616
  810. package/scripts/gds/autonomy-gate.js +5 -133
  811. package/scripts/gds/autonomy-gauge-statusline.js +5 -122
  812. package/scripts/gds/autonomy-gauge.js +5 -82
  813. package/scripts/gds/backfill-cost.js +6 -175
  814. package/scripts/gds/backfill-disciplines.js +5 -142
  815. package/scripts/gds/backfill-session-earnings.js +5 -121
  816. package/scripts/gds/backfill-session-types.js +5 -85
  817. package/scripts/gds/backfill-sessions.js +5 -409
  818. package/scripts/gds/backfill-subagent-rewards.js +5 -483
  819. package/scripts/gds/backfill-task-rewards.js +5 -411
  820. package/scripts/gds/backlog-review.js +6 -398
  821. package/scripts/gds/backup-dropin-sweep.sh +7 -94
  822. package/scripts/gds/backup.js +6 -115
  823. package/scripts/gds/baseline-staleness.js +5 -215
  824. package/scripts/gds/bfg-principal-token.js +6 -64
  825. package/scripts/gds/bug-attachment-audit.js +5 -147
  826. package/scripts/gds/bug-attachment-recover.js +5 -196
  827. package/scripts/gds/bug-triage.js +6 -291
  828. package/scripts/gds/build-bongos.js +5 -92
  829. package/scripts/gds/bump-version.js +5 -219
  830. package/scripts/gds/capture.js +6 -480
  831. package/scripts/gds/category-advisory-guard.js +5 -205
  832. package/scripts/gds/ci-grade.js +6 -81
  833. package/scripts/gds/claim-recall.js +6 -111
  834. package/scripts/gds/claim.js +6 -788
  835. package/scripts/gds/classify-discipline.js +6 -152
  836. package/scripts/gds/claude-materialize.js +5 -1198
  837. package/scripts/gds/claude-md-template.js +5 -140
  838. package/scripts/gds/cleanup-orphans.js +6 -73
  839. package/scripts/gds/cli-lib.js +6 -1204
  840. package/scripts/gds/client-baseurl-guard.js +5 -114
  841. package/scripts/gds/codemod-rename-src-gds.js +6 -144
  842. package/scripts/gds/conductor-dispatch.js +6 -534
  843. package/scripts/gds/context-pack.js +6 -325
  844. package/scripts/gds/control-manifest.js +5 -197
  845. package/scripts/gds/copy-apply.js +5 -756
  846. package/scripts/gds/copy-inventory.js +5 -569
  847. package/scripts/gds/core-origin-follow.js +5 -184
  848. package/scripts/gds/core-pin-sync.js +5 -258
  849. package/scripts/gds/coreB-carve-proof.sh +7 -724
  850. package/scripts/gds/cost-report.js +6 -62
  851. package/scripts/gds/cost.js +6 -46
  852. package/scripts/gds/credential-presence.js +5 -294
  853. package/scripts/gds/cutover-codemod.js +5 -239
  854. package/scripts/gds/db-backup-nightly.sh +7 -231
  855. package/scripts/gds/db-backup-offsite.sh +7 -266
  856. package/scripts/gds/demote.js +6 -44
  857. package/scripts/gds/deploy-divergence.js +6 -445
  858. package/scripts/gds/deploy-main-audit-gate.sh +7 -96
  859. package/scripts/gds/design-sync.js +5 -10
  860. package/scripts/gds/dev-box-guard.js +5 -164
  861. package/scripts/gds/dev-lib.js +5 -721
  862. package/scripts/gds/dev.js +5 -643
  863. package/scripts/gds/device-flow-help.js +5 -70
  864. package/scripts/gds/diagnose-achievements.js +5 -116
  865. package/scripts/gds/diagram-facts.js +6 -355
  866. package/scripts/gds/discord-channels.js +5 -75
  867. package/scripts/gds/do-api.js +6 -109
  868. package/scripts/gds/doc-cli-guard.js +5 -266
  869. package/scripts/gds/doc-comment-coverage.js +5 -137
  870. package/scripts/gds/doc-control-claims.js +5 -166
  871. package/scripts/gds/docs-entropy.js +5 -443
  872. package/scripts/gds/doctor.js +6 -492
  873. package/scripts/gds/enroll-control-plane.js +5 -99
  874. package/scripts/gds/exec-path-guard.js +5 -562
  875. package/scripts/gds/feedback-send.js +5 -247
  876. package/scripts/gds/fetch-art-key.js +5 -104
  877. package/scripts/gds/fetch-sound-prefs.js +5 -124
  878. package/scripts/gds/figma-design-sync.js +5 -9
  879. package/scripts/gds/find-untested.js +5 -369
  880. package/scripts/gds/fitness-checks-error-envelope.js +5 -133
  881. package/scripts/gds/fitness-checks-identity.js +5 -342
  882. package/scripts/gds/fitness-checks-packaging.js +5 -131
  883. package/scripts/gds/fitness-checks-route-pins.js +5 -75
  884. package/scripts/gds/fitness-checks-vocabulary.js +5 -391
  885. package/scripts/gds/fitness-checks-write-validation.js +5 -156
  886. package/scripts/gds/fitness-lib.js +5 -126
  887. package/scripts/gds/fitness-migration-contraction.js +5 -49
  888. package/scripts/gds/fitness-ratchets.js +5 -563
  889. package/scripts/gds/fitness.js +5 -1493
  890. package/scripts/gds/gate-review.js +5 -328
  891. package/scripts/gds/gating.js +5 -346
  892. package/scripts/gds/gds-literal-scan.js +5 -194
  893. package/scripts/gds/gen-api-client.js +5 -555
  894. package/scripts/gds/gen-api-docs.js +5 -1100
  895. package/scripts/gds/gen-atlas.js +5 -364
  896. package/scripts/gds/gen-diagrams.js +6 -607
  897. package/scripts/gds/gen-file-map.js +5 -335
  898. package/scripts/gds/gen-freshness.js +5 -31
  899. package/scripts/gds/gen-interaction-posture.js +5 -120
  900. package/scripts/gds/gen-repo-map.js +5 -538
  901. package/scripts/gds/gen-role-responsibilities.js +5 -133
  902. package/scripts/gds/gen-session-index.js +5 -241
  903. package/scripts/gds/gen-sounds.js +5 -174
  904. package/scripts/gds/git-merge-regen.js +6 -291
  905. package/scripts/gds/go-live.js +5 -1069
  906. package/scripts/gds/goal-names.js +5 -100
  907. package/scripts/gds/goal.js +6 -271
  908. package/scripts/gds/government-walk.js +5 -1475
  909. package/scripts/gds/grade-correlation-audit.js +5 -308
  910. package/scripts/gds/grade-replay.js +5 -235
  911. package/scripts/gds/grade-smoke.js +6 -204
  912. package/scripts/gds/home-isolation-guard.js +5 -125
  913. package/scripts/gds/hooks/pre-push.js +5 -209
  914. package/scripts/gds/howto.js +5 -143
  915. package/scripts/gds/http-api-client.js +6 -81
  916. package/scripts/gds/identity-strip.js +5 -74
  917. package/scripts/gds/init.js +5 -1157
  918. package/scripts/gds/install-git-hooks.js +5 -198
  919. package/scripts/gds/instance-apex.js +5 -37
  920. package/scripts/gds/intent-retry.js +5 -51
  921. package/scripts/gds/key-card.js +6 -221
  922. package/scripts/gds/key-status.js +5 -124
  923. package/scripts/gds/land-watch.js +5 -199
  924. package/scripts/gds/leak-scan-allowlist.js +5 -291
  925. package/scripts/gds/learning-capture.js +6 -144
  926. package/scripts/gds/lib.sh +7 -73
  927. package/scripts/gds/linkify-refs.js +6 -654
  928. package/scripts/gds/lint-infra-exec.js +5 -68
  929. package/scripts/gds/lint-migrations.js +5 -100
  930. package/scripts/gds/lint-workflow-exec.js +5 -61
  931. package/scripts/gds/local-preview-lib.js +6 -128
  932. package/scripts/gds/local-preview.js +6 -81
  933. package/scripts/gds/login.js +5 -358
  934. package/scripts/gds/main-audit.js +5 -623
  935. package/scripts/gds/me.js +6 -96
  936. package/scripts/gds/memory-map.js +5 -174
  937. package/scripts/gds/merge-lock.js +6 -70
  938. package/scripts/gds/migration-namespace.js +5 -311
  939. package/scripts/gds/mirror-lineage-check.js +5 -341
  940. package/scripts/gds/mirror-redact.js +5 -348
  941. package/scripts/gds/module-artifact.js +6 -289
  942. package/scripts/gds/module-assess-docs.js +6 -237
  943. package/scripts/gds/module-assess-installs.js +6 -227
  944. package/scripts/gds/module-assess-score.js +6 -110
  945. package/scripts/gds/module-assess-security.js +6 -251
  946. package/scripts/gds/module-assess-tests.js +6 -277
  947. package/scripts/gds/module-assess-version.js +6 -91
  948. package/scripts/gds/module-error-report.js +5 -146
  949. package/scripts/gds/module-test-runner.js +6 -413
  950. package/scripts/gds/module.js +5 -1374
  951. package/scripts/gds/move-escalation.js +5 -140
  952. package/scripts/gds/newcomer-floor.js +6 -420
  953. package/scripts/gds/newcomer-floor.test.js +6 -234
  954. package/scripts/gds/next-number.js +6 -162
  955. package/scripts/gds/oauth-secret.js +5 -200
  956. package/scripts/gds/onboard.js +5 -265
  957. package/scripts/gds/onboarding-analyze.js +6 -225
  958. package/scripts/gds/onboarding-config.js +6 -179
  959. package/scripts/gds/onboarding-ship.js +6 -91
  960. package/scripts/gds/pack-env-prefix.js +5 -72
  961. package/scripts/gds/package-core.js +5 -1102
  962. package/scripts/gds/page-inventory.js +5 -346
  963. package/scripts/gds/page-reader.js +5 -720
  964. package/scripts/gds/paste-token.js +6 -211
  965. package/scripts/gds/plain-cards.js +5 -350
  966. package/scripts/gds/portability-smoke-art.sh +7 -84
  967. package/scripts/gds/portability-smoke-memory.sh +7 -175
  968. package/scripts/gds/preflight.js +5 -212
  969. package/scripts/gds/probe-cache.js +5 -244
  970. package/scripts/gds/prove-strict-versioning.js +6 -283
  971. package/scripts/gds/provision-auto-upgrade.js +5 -161
  972. package/scripts/gds/provision-byo-host.js +5 -67
  973. package/scripts/gds/provision-capacity.js +5 -78
  974. package/scripts/gds/provision-caps.js +5 -62
  975. package/scripts/gds/provision-config.js +5 -232
  976. package/scripts/gds/provision-core-upgrade.js +5 -1165
  977. package/scripts/gds/provision-disconnect.js +5 -87
  978. package/scripts/gds/provision-github-setup.js +5 -167
  979. package/scripts/gds/provision-net.js +5 -356
  980. package/scripts/gds/provision-pin-key.js +5 -175
  981. package/scripts/gds/provision-pin-replay.js +5 -125
  982. package/scripts/gds/provision-process.js +5 -169
  983. package/scripts/gds/provision-render.js +5 -200
  984. package/scripts/gds/provision-repo-auth.js +5 -163
  985. package/scripts/gds/provision-repo-private.js +5 -97
  986. package/scripts/gds/provision-repo.js +5 -1336
  987. package/scripts/gds/provision-teardown.js +5 -105
  988. package/scripts/gds/provision-units.js +5 -468
  989. package/scripts/gds/provision.js +5 -1477
  990. package/scripts/gds/publish-credential-check.js +6 -65
  991. package/scripts/gds/publish-integration-gate.js +5 -140
  992. package/scripts/gds/publish-manifest.js +5 -437
  993. package/scripts/gds/publish-watch.js +5 -266
  994. package/scripts/gds/pulse.js +6 -335
  995. package/scripts/gds/push-main.js +5 -54
  996. package/scripts/gds/push-path-brief.js +5 -98
  997. package/scripts/gds/read-session-export.js +5 -357
  998. package/scripts/gds/reauth.js +6 -154
  999. package/scripts/gds/recall.js +6 -182
  1000. package/scripts/gds/redteam-patrol.js +5 -435
  1001. package/scripts/gds/regen-instance-docs.js +5 -45
  1002. package/scripts/gds/release-core.js +5 -78
  1003. package/scripts/gds/release-notes.js +5 -270
  1004. package/scripts/gds/release.js +6 -138
  1005. package/scripts/gds/rename-goals.js +5 -107
  1006. package/scripts/gds/rename-history-check.js +5 -367
  1007. package/scripts/gds/rename-ledger-prose.js +5 -480
  1008. package/scripts/gds/render-api.js +5 -196
  1009. package/scripts/gds/render-check.js +5 -204
  1010. package/scripts/gds/render-ideas.js +6 -225
  1011. package/scripts/gds/render-payload.js +5 -84
  1012. package/scripts/gds/repo-metrics.js +6 -362
  1013. package/scripts/gds/review-sheet.js +5 -106
  1014. package/scripts/gds/role-pack-guard.js +5 -141
  1015. package/scripts/gds/route-shadow-guard.js +5 -173
  1016. package/scripts/gds/routine-schedule.js +5 -281
  1017. package/scripts/gds/run-routine.js +5 -255
  1018. package/scripts/gds/run-unit-tests.js +6 -659
  1019. package/scripts/gds/runner-drift.js +5 -149
  1020. package/scripts/gds/sandbox-stage.js +6 -458
  1021. package/scripts/gds/scope-map-guard.js +5 -299
  1022. package/scripts/gds/scope-roster-guard.js +5 -117
  1023. package/scripts/gds/seam-wiring-guard.js +5 -274
  1024. package/scripts/gds/search-ingest-db.js +6 -287
  1025. package/scripts/gds/search-ingest-md.js +6 -268
  1026. package/scripts/gds/seed-adopt-tasks.js +6 -74
  1027. package/scripts/gds/seed-api-contract-goal-tasks.js +6 -140
  1028. package/scripts/gds/seed-board-room-tasks.js +6 -196
  1029. package/scripts/gds/seed-bongos-app-tasks.js +6 -293
  1030. package/scripts/gds/seed-bongos-coreB-tranche1-tasks.js +6 -80
  1031. package/scripts/gds/seed-bongos-coreB-tranche2-tasks.js +6 -99
  1032. package/scripts/gds/seed-bongos-goal-hierarchy-tasks.js +6 -306
  1033. package/scripts/gds/seed-bongos-module-system-tasks.js +6 -345
  1034. package/scripts/gds/seed-bongos-tasks.js +6 -213
  1035. package/scripts/gds/seed-bongos-v1-idea-routing-tasks.js +6 -152
  1036. package/scripts/gds/seed-bongos-v1-seo-tasks.js +6 -104
  1037. package/scripts/gds/seed-bv1-community-tasks.js +6 -131
  1038. package/scripts/gds/seed-bv1-privacy-invites-tasks.js +6 -133
  1039. package/scripts/gds/seed-bv1-profile-page-tasks.js +6 -161
  1040. package/scripts/gds/seed-bv1-profiles-tasks.js +6 -135
  1041. package/scripts/gds/seed-bv1-r01-delta-tasks.js +6 -154
  1042. package/scripts/gds/seed-bv2-ideator-surface-tasks.js +6 -390
  1043. package/scripts/gds/seed-bv2-tweak-mode-tasks.js +6 -277
  1044. package/scripts/gds/seed-gds-v4-tasks.js +6 -623
  1045. package/scripts/gds/seed-governance-tasks.js +6 -339
  1046. package/scripts/gds/seed-medusa-tasks.js +6 -439
  1047. package/scripts/gds/seed-module-upstreaming.js +5 -217
  1048. package/scripts/gds/seed-productization-tasks.js +6 -234
  1049. package/scripts/gds/seed-project-admin-console-tasks.js +6 -88
  1050. package/scripts/gds/seed-provisioning-tasks.js +6 -82
  1051. package/scripts/gds/seed-staging.sh +7 -116
  1052. package/scripts/gds/seed-strict-versioning-tasks.js +6 -274
  1053. package/scripts/gds/seed-v2-world-tasks.js +6 -282
  1054. package/scripts/gds/seed-verify-criteria.js +6 -124
  1055. package/scripts/gds/sequence.js +6 -596
  1056. package/scripts/gds/session-cost.js +6 -429
  1057. package/scripts/gds/session-digest-build.js +6 -293
  1058. package/scripts/gds/session-digest.js +6 -199
  1059. package/scripts/gds/session-eval.js +6 -630
  1060. package/scripts/gds/session-transcript-build.js +6 -155
  1061. package/scripts/gds/session-transcript-upload.js +6 -29
  1062. package/scripts/gds/session.js +6 -403
  1063. package/scripts/gds/setup.js +6 -645
  1064. package/scripts/gds/ship-check.js +5 -85
  1065. package/scripts/gds/ship-deploy-target.js +5 -392
  1066. package/scripts/gds/ship-escalation.js +5 -166
  1067. package/scripts/gds/ship-finish.js +5 -419
  1068. package/scripts/gds/ship-flow.js +5 -1216
  1069. package/scripts/gds/ship-git.js +5 -99
  1070. package/scripts/gds/ship-grade-steps.js +5 -546
  1071. package/scripts/gds/ship-grade.js +5 -425
  1072. package/scripts/gds/ship-honesty.js +5 -312
  1073. package/scripts/gds/ship-io.js +5 -138
  1074. package/scripts/gds/ship-land.js +5 -1129
  1075. package/scripts/gds/ship-memory-sync.js +5 -248
  1076. package/scripts/gds/ship-merge-gate.js +5 -224
  1077. package/scripts/gds/ship-merge.js +5 -465
  1078. package/scripts/gds/ship-mode-ask.js +5 -137
  1079. package/scripts/gds/ship-mode-manual.js +5 -53
  1080. package/scripts/gds/ship-preflight-steps.js +5 -398
  1081. package/scripts/gds/ship-regen.js +5 -313
  1082. package/scripts/gds/ship-resume.js +5 -200
  1083. package/scripts/gds/ship-session-upload.js +5 -312
  1084. package/scripts/gds/ship-state.js +5 -109
  1085. package/scripts/gds/ship-surprise.js +5 -83
  1086. package/scripts/gds/ship-visual.js +5 -74
  1087. package/scripts/gds/ship.js +5 -380
  1088. package/scripts/gds/shipping-mode.js +5 -69
  1089. package/scripts/gds/skill-lint.js +5 -248
  1090. package/scripts/gds/skill-preflight.js +5 -359
  1091. package/scripts/gds/smoke-batch-claim.sh +7 -237
  1092. package/scripts/gds/smoke-batch-release.sh +7 -315
  1093. package/scripts/gds/smoke-claim-consistency.sh +7 -221
  1094. package/scripts/gds/smoke-dependencies.sh +7 -142
  1095. package/scripts/gds/smoke-gds.js +6 -255
  1096. package/scripts/gds/smoke-write.sh +7 -274
  1097. package/scripts/gds/source-text-test-scan.js +7 -0
  1098. package/scripts/gds/spark.js +6 -293
  1099. package/scripts/gds/stale-worktrees.js +5 -210
  1100. package/scripts/gds/start-goals.js +5 -101
  1101. package/scripts/gds/start.js +6 -1089
  1102. package/scripts/gds/status.js +6 -544
  1103. package/scripts/gds/strand-watch.js +5 -313
  1104. package/scripts/gds/stranded-rows.js +5 -198
  1105. package/scripts/gds/stray-unit-sweep.sh +7 -70
  1106. package/scripts/gds/surface.js +5 -100
  1107. package/scripts/gds/task.js +6 -272
  1108. package/scripts/gds/test-path-guard.js +5 -97
  1109. package/scripts/gds/triage.js +6 -741
  1110. package/scripts/gds/turn-end-sound.js +5 -72
  1111. package/scripts/gds/tweak-halt.js +5 -68
  1112. package/scripts/gds/tweak-renders.js +5 -198
  1113. package/scripts/gds/uat.js +6 -119
  1114. package/scripts/gds/ui-kit-transform.js +5 -41
  1115. package/scripts/gds/update-channel.js +5 -510
  1116. package/scripts/gds/update-sweep.js +5 -827
  1117. package/scripts/gds/upgrade-artist-gate.js +5 -45
  1118. package/scripts/gds/upgrade-commit-identity.js +5 -31
  1119. package/scripts/gds/upgrade-migrate.js +5 -223
  1120. package/scripts/gds/upgrade-operator.js +6 -73
  1121. package/scripts/gds/upgrade-outcome.js +5 -173
  1122. package/scripts/gds/upgrade.js +5 -1497
  1123. package/scripts/gds/validate-design.js +5 -10
  1124. package/scripts/gds/version-close.js +6 -620
  1125. package/scripts/gds/version-literal-guard.js +5 -138
  1126. package/scripts/gds/version-select.js +5 -77
  1127. package/scripts/gds/visual-review-nudge.js +5 -38
  1128. package/scripts/gds/wedge-remedy.js +5 -173
  1129. package/scripts/gds/worktree-claim-guard.js +5 -129
  1130. package/scripts/gds/worktree.js +6 -448
  1131. package/scripts/hall-preview/refresh-fixtures.js +1 -1
  1132. package/scripts/hall-preview/server.js +2 -2
  1133. package/scripts/migrate.sh +3 -3
  1134. package/scripts/public-mirror-export.js +3 -3
  1135. package/scripts/setup-builder.js +7 -7
  1136. package/src/bongos/api-errors.js +1 -0
  1137. package/src/bongos/api-prefix.js +1 -1
  1138. package/src/bongos/auth-github.js +19 -3
  1139. package/src/bongos/auth-idp.js +7 -0
  1140. package/src/bongos/claim-attribution.js +2 -2
  1141. package/src/bongos/core-moves.js +1 -1
  1142. package/src/bongos/core-update.js +3 -3
  1143. package/src/bongos/craft-mode.js +2 -2
  1144. package/src/bongos/db-kernel.js +15 -3
  1145. package/src/bongos/db.js +30 -4
  1146. package/src/bongos/github-repos.js +1 -1
  1147. package/src/bongos/llm-cache.js +1 -1
  1148. package/src/bongos/llm-pricing.js +1 -1
  1149. package/src/bongos/metrics.js +1 -1
  1150. package/src/bongos/middleware/rate-limit.js +2 -2
  1151. package/src/bongos/module-listing.js +93 -1
  1152. package/src/bongos/module-scope-map.js +90 -85
  1153. package/src/bongos/module-store.js +1 -1
  1154. package/src/bongos/module-submissions.js +1 -1
  1155. package/src/bongos/optimizer.js +1 -1
  1156. package/src/bongos/package-registry.js +1 -1
  1157. package/src/bongos/path-match.js +1 -1
  1158. package/src/bongos/permission-path-check.js +3 -3
  1159. package/src/bongos/platform-visibility-gate.js +3 -5
  1160. package/src/bongos/prelaunch-gate.js +7 -6
  1161. package/src/bongos/route-rank-check.js +2 -2
  1162. package/src/bongos/routes/auth.js +15 -2
  1163. package/src/bongos/routes/backup.js +1 -1
  1164. package/src/bongos/routes/builders.js +29 -1
  1165. package/src/bongos/routes/me.js +49 -18
  1166. package/src/bongos/routes/modules.js +29 -9
  1167. package/src/bongos/routes/public.js +3 -72
  1168. package/src/bongos/schema-lag.js +1 -1
  1169. package/src/bongos/sensitive-surfaces.js +1 -1
  1170. package/src/bongos/serve-internal.js +65 -16
  1171. package/src/bongos/software-update.js +2 -2
  1172. package/src/bongos/upgrade-hold.js +3 -3
  1173. package/src/hall-look.js +6 -5
  1174. package/src/module-api.js +3 -3
  1175. package/src/module-loader/catalog.js +1 -1
  1176. package/src/module-loader/error-tally.js +3 -3
  1177. package/src/module-loader/manifest-schema.js +3 -3
  1178. package/src/platform-server.js +10 -0
  1179. package/src/role-responsibilities.js +1 -1
  1180. package/src/stale-timer.js +2 -2
  1181. package/tests/accessibility_replay.mjs +1 -1
  1182. package/tests/activity_rollup_order_db.mjs +1 -1
  1183. package/tests/activity_snapshots_db.mjs +1 -1
  1184. package/tests/adopt_detect.mjs +1 -1
  1185. package/tests/adopt_import.mjs +1 -1
  1186. package/tests/adopt_preflight.mjs +1 -1
  1187. package/tests/adr_0089_scope.mjs +10 -7
  1188. package/tests/adr_0162_citation.mjs +1 -1
  1189. package/tests/adr_0162_gate_citation.mjs +1 -1
  1190. package/tests/agent_invoke.mjs +1 -1
  1191. package/tests/agent_invoke_live.mjs +3 -3
  1192. package/tests/agents_cron_trigger.mjs +2 -2
  1193. package/tests/agents_roster.mjs +1 -1
  1194. package/tests/agents_sync.mjs +4 -4
  1195. package/tests/allow_rule_guard.mjs +20 -20
  1196. package/tests/api_alias_caller_ratchet.mjs +9 -10
  1197. package/tests/api_alias_exceptions.mjs +7 -6
  1198. package/tests/api_artifacts.mjs +214 -0
  1199. package/tests/api_cli_flags.mjs +3 -3
  1200. package/tests/api_client.mjs +56 -54
  1201. package/tests/api_docs.mjs +30 -9
  1202. package/tests/api_error_envelope_buildcheck.mjs +1 -1
  1203. package/tests/api_msys_path_repair.mjs +2 -2
  1204. package/tests/architect.mjs +1 -1
  1205. package/tests/art_stage.mjs +2 -2
  1206. package/tests/artifact_audit.mjs +2 -2
  1207. package/tests/artifact_staleness.mjs +9 -9
  1208. package/tests/atlas.mjs +1 -1
  1209. package/tests/audit_deps.mjs +1 -1
  1210. package/tests/audit_gate.mjs +1 -1
  1211. package/tests/auth_flow_slice1.mjs +3 -3
  1212. package/tests/auth_inactive_builder.mjs +43 -5
  1213. package/tests/auth_session_expiry_db.mjs +16 -4
  1214. package/tests/auth_session_ttl.mjs +23 -0
  1215. package/tests/authorship_audit.mjs +2 -2
  1216. package/tests/autobongos_cadence.mjs +1 -1
  1217. package/tests/autobongos_fence.mjs +1 -1
  1218. package/tests/autobongos_grade_cap.mjs +2 -2
  1219. package/tests/autobongos_heartbeat_head.mjs +1 -1
  1220. package/tests/autobongos_host_access.mjs +3 -3
  1221. package/tests/autobongos_loop.mjs +17 -17
  1222. package/tests/autobongos_service_ps1.mjs +3 -3
  1223. package/tests/autobongos_tweak_lane.mjs +2 -2
  1224. package/tests/autobongos_verify.mjs +2 -2
  1225. package/tests/autonomous_fit_protected_paths.mjs +3 -3
  1226. package/tests/autonomy_config_idle.mjs +1 -1
  1227. package/tests/autonomy_digest.mjs +1 -1
  1228. package/tests/autonomy_gate.mjs +1 -1
  1229. package/tests/autonomy_gauge.mjs +2 -2
  1230. package/tests/autonomy_runner_identity.mjs +1 -1
  1231. package/tests/backfill_sessions.mjs +8 -8
  1232. package/tests/backfill_subagent_rewards.mjs +1 -1
  1233. package/tests/backfill_task_rewards.mjs +2 -2
  1234. package/tests/backlog_review.mjs +3 -3
  1235. package/tests/baseline_staleness.mjs +2 -2
  1236. package/tests/bfg.mjs +11 -5
  1237. package/tests/bfg_write.mjs +20 -11
  1238. package/tests/blockers_hall.mjs +14 -4
  1239. package/tests/blockers_page_ui.mjs +56 -12
  1240. package/tests/bongos_dispatch.mjs +5 -5
  1241. package/tests/bongos_login.mjs +2 -2
  1242. package/tests/bug_attachment_audit.mjs +1 -1
  1243. package/tests/bug_attachment_recover.mjs +2 -2
  1244. package/tests/bug_triage.mjs +3 -3
  1245. package/tests/build_info.mjs +1 -1
  1246. package/tests/builder_tester_tag.mjs +184 -0
  1247. package/tests/bump_version.mjs +3 -3
  1248. package/tests/canonical_profile_url.mjs +1 -1
  1249. package/tests/capture_error_format.mjs +1 -1
  1250. package/tests/capture_goal_routing.mjs +2 -2
  1251. package/tests/category_advisory_guard.mjs +3 -3
  1252. package/tests/claim_error_surface.mjs +2 -2
  1253. package/tests/claim_from_task_and_home.mjs +1 -1
  1254. package/tests/claim_gate_open_blocker.mjs +7 -4
  1255. package/tests/claim_gate_rebase.mjs +12 -8
  1256. package/tests/claim_recall.mjs +4 -4
  1257. package/tests/claim_resolve_worktree_lock.mjs +1 -1
  1258. package/tests/claude_materialize.mjs +58 -58
  1259. package/tests/clawback_confirmed_backlog.mjs +8 -5
  1260. package/tests/cli_allowlist_permissions.mjs +11 -11
  1261. package/tests/cli_dispatcher.mjs +2 -2
  1262. package/tests/cli_err_code.mjs +6 -6
  1263. package/tests/cli_exit_no_abort.mjs +7 -7
  1264. package/tests/cli_lib_formatters.mjs +2 -2
  1265. package/tests/cli_sessions.mjs +5 -5
  1266. package/tests/cli_surface.mjs +15 -15
  1267. package/tests/cli_token_reissue.mjs +2 -2
  1268. package/tests/client_baseurl_guard.mjs +1 -1
  1269. package/tests/client_bundle_route.mjs +35 -4
  1270. package/tests/cloud_bongos_pack.mjs +1 -1
  1271. package/tests/community_leaderboard_db.mjs +1 -1
  1272. package/tests/conductor.mjs +18 -18
  1273. package/tests/conflict_resolve.mjs +14 -16
  1274. package/tests/consumer_layout_boot.mjs +12 -12
  1275. package/tests/context_pack.mjs +6 -6
  1276. package/tests/control_manifest.mjs +4 -4
  1277. package/tests/copy_desk_page_reads.mjs +1 -1
  1278. package/tests/copy_desk_page_release.mjs +192 -0
  1279. package/tests/copy_inventory.mjs +2 -2
  1280. package/tests/core_auto_upgrade.mjs +1 -1
  1281. package/tests/core_move_notice.mjs +2 -2
  1282. package/tests/core_origin_follow.mjs +7 -7
  1283. package/tests/core_pin_sync.mjs +3 -3
  1284. package/tests/core_upgrade_door.mjs +2 -2
  1285. package/tests/core_upgrade_owner_door.mjs +34 -1
  1286. package/tests/core_upgrade_runner.mjs +19 -19
  1287. package/tests/credential_presence.mjs +2 -2
  1288. package/tests/credit_grant.mjs +3 -3
  1289. package/tests/credit_log_single_writer.mjs +5 -5
  1290. package/tests/criterion_ref_status.mjs +2 -2
  1291. package/tests/cross_discipline_priority_direction.mjs +3 -3
  1292. package/tests/cutover_codemod.mjs +2 -4
  1293. package/tests/db_backup_nightly.mjs +1 -1
  1294. package/tests/db_backup_offsite.mjs +1 -1
  1295. package/tests/db_ownership_handover.mjs +2 -2
  1296. package/tests/dead_deps.mjs +3 -3
  1297. package/tests/dependency_advisory.mjs +1 -1
  1298. package/tests/deploy_audit_gate.mjs +4 -4
  1299. package/tests/deploy_divergence_line.mjs +36 -16
  1300. package/tests/deploy_page_projects.mjs +35 -4
  1301. package/tests/dev_lib.mjs +2 -2
  1302. package/tests/dev_windows.mjs +2 -2
  1303. package/tests/diagram_facts_offset.mjs +1 -1
  1304. package/tests/diagram_repo_slug.mjs +1 -1
  1305. package/tests/diff_derived_signals.mjs +2 -2
  1306. package/tests/dns_preflight.mjs +2 -2
  1307. package/tests/do_api.mjs +3 -3
  1308. package/tests/doc_cli_guard.mjs +28 -28
  1309. package/tests/doc_comment_coverage.mjs +1 -1
  1310. package/tests/doc_control_claims.mjs +11 -11
  1311. package/tests/docs_entropy.mjs +2 -2
  1312. package/tests/docs_openapi_route.mjs +8 -6
  1313. package/tests/doctor_hooks.mjs +1 -1
  1314. package/tests/edit_hints.mjs +3 -2
  1315. package/tests/effective_visibility_predicate.mjs +3 -3
  1316. package/tests/env_knobs_neutral_prefix.mjs +13 -13
  1317. package/tests/exec_path_guard.mjs +4 -4
  1318. package/tests/executed_closure.mjs +18 -12
  1319. package/tests/file_map.mjs +1 -1
  1320. package/tests/find_untested.mjs +13 -13
  1321. package/tests/first_admin_bootstrap.mjs +1 -1
  1322. package/tests/fitness.mjs +16 -16
  1323. package/tests/fitness_gds_ratchet.mjs +2 -2
  1324. package/tests/fitness_installed_core.mjs +3 -3
  1325. package/tests/fitness_no_raw_nul.mjs +1 -1
  1326. package/tests/fitness_ratchets.mjs +3 -3
  1327. package/tests/fitness_scope_roster.mjs +2 -2
  1328. package/tests/fitness_two_root.mjs +8 -8
  1329. package/tests/fixtures/accessibility-replay.json +5 -5
  1330. package/tests/fixtures/grade-replay/recorded-panel-grades.json +1 -1
  1331. package/tests/fixtures/ideator-prefold/README.md +1 -1
  1332. package/tests/fixtures/page-ledger.mjs +22 -0
  1333. package/tests/fixtures/session-506-digest.json +5 -5
  1334. package/tests/gate_approvals.mjs +50 -0
  1335. package/tests/gate_review.mjs +8 -8
  1336. package/tests/gating_review_retired.mjs +2 -2
  1337. package/tests/gen_freshness.mjs +3 -3
  1338. package/tests/git_guard.mjs +3 -3
  1339. package/tests/git_merge_regen.mjs +41 -65
  1340. package/tests/github_one_trip.mjs +4 -4
  1341. package/tests/github_pick_up.mjs +2 -2
  1342. package/tests/github_push_merge_driver.mjs +1 -1
  1343. package/tests/go_live.mjs +3 -2
  1344. package/tests/goal_category.mjs +1 -1
  1345. package/tests/goal_cli.mjs +2 -2
  1346. package/tests/goal_create_spec_entry.mjs +1 -1
  1347. package/tests/goal_invite_consent.mjs +3 -1
  1348. package/tests/goal_move.mjs +1 -1
  1349. package/tests/goal_names.mjs +2 -2
  1350. package/tests/goal_working_area.mjs +1 -1
  1351. package/tests/government_agent_asks.mjs +7 -7
  1352. package/tests/government_board_room_copy.mjs +6 -1
  1353. package/tests/government_board_view.mjs +39 -0
  1354. package/tests/government_board_vote_ui.mjs +39 -1
  1355. package/tests/government_config.mjs +2 -2
  1356. package/tests/government_live_proof_shape.mjs +1 -1
  1357. package/tests/government_protected_surfaces.mjs +54 -53
  1358. package/tests/government_require_permission.mjs +9 -1
  1359. package/tests/government_vanilla_boot.mjs +1 -1
  1360. package/tests/government_vocabulary.mjs +2 -2
  1361. package/tests/government_walk.mjs +2 -2
  1362. package/tests/grade_body_limit.mjs +6 -4
  1363. package/tests/grade_correlation_audit.mjs +3 -3
  1364. package/tests/grade_diff_hash.mjs +1 -1
  1365. package/tests/grade_engine_replay.mjs +2 -2
  1366. package/tests/grade_server_authoritative.mjs +1 -1
  1367. package/tests/grade_unavailable_display.mjs +1 -1
  1368. package/tests/grader.mjs +8 -24
  1369. package/tests/grader_generated_provenance.mjs +14 -14
  1370. package/tests/grader_no_artifact.mjs +1 -1
  1371. package/tests/grader_prompt_fencing.mjs +1 -1
  1372. package/tests/grader_quality_window_overflow.mjs +1 -1
  1373. package/tests/grader_reader_lens.mjs +3 -3
  1374. package/tests/grader_regrade_delta.mjs +1 -1
  1375. package/tests/grader_unbacked_score.mjs +2 -2
  1376. package/tests/hall_acclaim_vote_control.mjs +113 -0
  1377. package/tests/hall_asset_cache.mjs +127 -0
  1378. package/tests/hall_audit.mjs +63 -0
  1379. package/tests/hall_board_world.mjs +20 -0
  1380. package/tests/hall_city_card_words.mjs +61 -0
  1381. package/tests/hall_client_request_shape.mjs +5 -1
  1382. package/tests/hall_home_ships_bounded.mjs +160 -0
  1383. package/tests/hall_landing_boot.mjs +15 -2
  1384. package/tests/hall_nav.mjs +33 -0
  1385. package/tests/hall_onboarding_bongos_setup.mjs +1 -1
  1386. package/tests/hall_oversight_world.mjs +44 -4
  1387. package/tests/hall_palette.mjs +12 -9
  1388. package/tests/hall_preview_security.mjs +1 -1
  1389. package/tests/hall_profile_world.mjs +17 -0
  1390. package/tests/hall_reading_world.mjs +16 -1
  1391. package/tests/hall_roster_world.mjs +2 -1
  1392. package/tests/hall_studio_world.mjs +4 -1
  1393. package/tests/hall_work_history_id.mjs +39 -0
  1394. package/tests/held_tweak_reporting.mjs +4 -4
  1395. package/tests/helpers.mjs +3 -3
  1396. package/tests/home_bounded_reads.mjs +1 -1
  1397. package/tests/home_isolation_guard.mjs +1 -1
  1398. package/tests/hook_core_resolve.mjs +7 -7
  1399. package/tests/hook_user_agents.mjs +1 -1
  1400. package/tests/hooks_drain.mjs +2 -2
  1401. package/tests/host_topology_skips.mjs +1 -1
  1402. package/tests/howto_guide.mjs +1 -1
  1403. package/tests/howto_moments.mjs +3 -3
  1404. package/tests/hub_account_page.mjs +1 -1
  1405. package/tests/idea_capture_grades.mjs +2 -2
  1406. package/tests/idea_develop_spark.mjs +1 -1
  1407. package/tests/idea_filed_via.mjs +2 -2
  1408. package/tests/idea_ideate_full.mjs +1 -1
  1409. package/tests/idea_spark_mark.mjs +1 -1
  1410. package/tests/idea_spark_queue.mjs +1 -1
  1411. package/tests/idea_triage.mjs +1 -1
  1412. package/tests/idea_triage_grade.mjs +3 -3
  1413. package/tests/idea_vote_permission.mjs +113 -0
  1414. package/tests/idea_votes_fold_db.mjs +123 -0
  1415. package/tests/infra_exec_paths.mjs +12 -12
  1416. package/tests/init.mjs +2 -2
  1417. package/tests/instance_db_migrated_on_code_move.mjs +5 -5
  1418. package/tests/instance_feedback.mjs +9 -9
  1419. package/tests/instance_mismatch_guard.mjs +2 -2
  1420. package/tests/integration_parked_ratchet.mjs +24 -2
  1421. package/tests/intent_retry.mjs +1 -1
  1422. package/tests/interaction_posture.mjs +3 -3
  1423. package/tests/invite_expiry_db.mjs +1 -1
  1424. package/tests/joinability_invite_only.mjs +1 -1
  1425. package/tests/karma_vote_lists.mjs +270 -0
  1426. package/tests/key-card.mjs +2 -2
  1427. package/tests/key-status.mjs +2 -2
  1428. package/tests/knip_ratchet_ambient.mjs +2 -2
  1429. package/tests/known_failing_ratchet.mjs +1 -1
  1430. package/tests/land_watch.mjs +2 -2
  1431. package/tests/landing_legal_pages.mjs +1 -1
  1432. package/tests/landing_page.mjs +2 -2
  1433. package/tests/leaderboard_roles.mjs +4 -1
  1434. package/tests/leak_scan_allowlist.mjs +8 -8
  1435. package/tests/leak_scan_fail_closed.mjs +1 -1
  1436. package/tests/lib_sh_resolution.mjs +9 -9
  1437. package/tests/lifecycle-card.mjs +7 -7
  1438. package/tests/linkify_check.mjs +2 -2
  1439. package/tests/linkify_refs.mjs +1 -1
  1440. package/tests/llm-cache-route.mjs +1 -1
  1441. package/tests/local_preview.mjs +2 -2
  1442. package/tests/main_audit.mjs +3 -3
  1443. package/tests/main_audit_attestation.mjs +1 -1
  1444. package/tests/main_audit_db_roster.mjs +2 -2
  1445. package/tests/main_worktree_busy_reason.mjs +3 -3
  1446. package/tests/markdown_line_endings.mjs +2 -2
  1447. package/tests/me_streak_leaderboard_queries.mjs +193 -0
  1448. package/tests/membership_kind_lockstep.mjs +1 -1
  1449. package/tests/memory_isolation.mjs +16 -8
  1450. package/tests/memory_map.mjs +2 -2
  1451. package/tests/memory_pull.mjs +33 -25
  1452. package/tests/merge_driver_register.mjs +3 -3
  1453. package/tests/migration_allocation.mjs +2 -2
  1454. package/tests/migration_namespace.mjs +1 -1
  1455. package/tests/migrations_forward_safe.mjs +1 -1
  1456. package/tests/mingle.mjs +1 -1
  1457. package/tests/mirror_lineage_fulltree.mjs +3 -3
  1458. package/tests/mirror_lineage_proof.mjs +2 -2
  1459. package/tests/mirror_redact.mjs +4 -4
  1460. package/tests/missing_dep_classify.mjs +3 -3
  1461. package/tests/module-scope-map.mjs +22 -22
  1462. package/tests/module_api_lazy.mjs +1 -1
  1463. package/tests/module_assess_docs.mjs +2 -2
  1464. package/tests/module_assess_installs.mjs +3 -3
  1465. package/tests/module_assess_price_parity.mjs +5 -5
  1466. package/tests/module_assess_score.mjs +5 -5
  1467. package/tests/module_assess_security.mjs +4 -4
  1468. package/tests/module_assess_tests.mjs +3 -3
  1469. package/tests/module_assessments_migration.mjs +1 -1
  1470. package/tests/module_catalog.mjs +2 -2
  1471. package/tests/module_cli.mjs +3 -3
  1472. package/tests/module_entitlements.mjs +1 -1
  1473. package/tests/module_error_counts.mjs +1 -1
  1474. package/tests/module_install.mjs +4 -4
  1475. package/tests/module_loader.mjs +3 -1
  1476. package/tests/module_owned_tests.mjs +1 -1
  1477. package/tests/module_release_channels.mjs +1 -1
  1478. package/tests/module_store_howto.mjs +3 -3
  1479. package/tests/module_store_listing.mjs +139 -2
  1480. package/tests/module_store_publish.mjs +4 -4
  1481. package/tests/module_store_publish_route.mjs +1 -1
  1482. package/tests/module_store_reassess.mjs +1 -1
  1483. package/tests/module_store_registry_migration.mjs +1 -1
  1484. package/tests/module_test_runner.mjs +3 -3
  1485. package/tests/module_update.mjs +4 -4
  1486. package/tests/module_upgrade_updates.mjs +1 -1
  1487. package/tests/move_escalation.mjs +2 -2
  1488. package/tests/nav_permission_atoms.mjs +3 -2
  1489. package/tests/needs_rebase.mjs +7 -3
  1490. package/tests/newcomer_floor.mjs +1 -1
  1491. package/tests/newcomer_generator.mjs +48 -0
  1492. package/tests/next_number.mjs +1 -1
  1493. package/tests/no_artifact_escalation.mjs +3 -3
  1494. package/tests/npm_release_where.mjs +1 -1
  1495. package/tests/oauth_secret.mjs +2 -2
  1496. package/tests/onboard.mjs +6 -6
  1497. package/tests/onboarding_gate.mjs +2 -2
  1498. package/tests/opt_in_skill_modules.mjs +3 -3
  1499. package/tests/own_scope_guard.mjs +1 -1
  1500. package/tests/own_session_revoke.mjs +4 -1
  1501. package/tests/package_core.mjs +10 -11
  1502. package/tests/page_inventory.mjs +5 -5
  1503. package/tests/page_reader.mjs +7 -7
  1504. package/tests/page_tweak_hold.mjs +6 -6
  1505. package/tests/parallel-load.mjs +1 -1
  1506. package/tests/paste_token_api_base.mjs +1 -1
  1507. package/tests/paste_token_session_store.mjs +2 -2
  1508. package/tests/pending_invite_purge_db.mjs +1 -1
  1509. package/tests/permission_path.mjs +1 -1
  1510. package/tests/pin_replay.mjs +1 -1
  1511. package/tests/pin_write_key.mjs +7 -7
  1512. package/tests/plain_cards.mjs +15 -15
  1513. package/tests/pr_assign.mjs +1 -1
  1514. package/tests/pre_push_hook.mjs +3 -3
  1515. package/tests/preflight_checks.mjs +2 -2
  1516. package/tests/prelaunch_gate.mjs +1 -1
  1517. package/tests/privacy_matrix.mjs +1 -1
  1518. package/tests/probe_cache.mjs +6 -6
  1519. package/tests/profile_connections_ui.mjs +4 -3
  1520. package/tests/profile_fields.mjs +11 -1
  1521. package/tests/profile_privacy_owner_view.mjs +1 -1
  1522. package/tests/profile_role_headline.mjs +10 -9
  1523. package/tests/project_admin_console_model.mjs +1 -1
  1524. package/tests/projects_hub.mjs +1 -1
  1525. package/tests/projects_hub_cloud_hop.mjs +1 -1
  1526. package/tests/promote_goal_id.mjs +6 -6
  1527. package/tests/promotion_sweep.mjs +1 -1
  1528. package/tests/provision.mjs +24 -24
  1529. package/tests/provision_account_identity.mjs +2 -2
  1530. package/tests/provision_byo_host.mjs +1 -1
  1531. package/tests/provision_caddy_wiring.mjs +2 -2
  1532. package/tests/provision_disconnect.mjs +2 -2
  1533. package/tests/provision_dns_first.mjs +1 -1
  1534. package/tests/provision_render.mjs +9 -9
  1535. package/tests/provision_repo_private.mjs +3 -3
  1536. package/tests/provision_resource_caps.mjs +5 -5
  1537. package/tests/provision_restart.mjs +3 -3
  1538. package/tests/provision_settings_apply.mjs +7 -7
  1539. package/tests/provision_teardown_address.mjs +2 -2
  1540. package/tests/provisioning_capacity.mjs +5 -5
  1541. package/tests/provisioning_credential_preflight.mjs +1 -1
  1542. package/tests/provisioning_disconnect.mjs +1 -1
  1543. package/tests/provisioning_error_note_scope.mjs +4 -4
  1544. package/tests/provisioning_paid_shape_gate.mjs +2 -2
  1545. package/tests/provisioning_planet_physics.mjs +16 -0
  1546. package/tests/provisioning_runner_drift_notice.mjs +2 -2
  1547. package/tests/provisioning_settings_env.mjs +1 -1
  1548. package/tests/pruned_lockfile_integrity.mjs +1 -1
  1549. package/tests/public_mirror_export.mjs +1 -1
  1550. package/tests/publish_integration_gate.mjs +2 -2
  1551. package/tests/publish_manifest.mjs +6 -6
  1552. package/tests/publish_watch.mjs +1 -1
  1553. package/tests/push_path_brief.mjs +2 -2
  1554. package/tests/raise.mjs +248 -0
  1555. package/tests/rank_roles_audit.mjs +1 -1
  1556. package/tests/rank_tier_single_source.mjs +2 -2
  1557. package/tests/rate_limit_public.mjs +1 -1
  1558. package/tests/read_default_meter.mjs +2 -2
  1559. package/tests/read_session_export.mjs +1 -1
  1560. package/tests/rebase_gate_set_aside.mjs +1 -1
  1561. package/tests/recall_cli.mjs +1 -1
  1562. package/tests/recall_corpus_health.mjs +3 -2
  1563. package/tests/recall_hints.mjs +1 -1
  1564. package/tests/recruiter_sliver_boundary.mjs +1 -1
  1565. package/tests/redteam_patrol.mjs +2 -2
  1566. package/tests/regrade_actual_minutes.mjs +2 -2
  1567. package/tests/regrade_eligibility.mjs +2 -2
  1568. package/tests/release_core.mjs +2 -2
  1569. package/tests/release_notes.mjs +4 -4
  1570. package/tests/rename_history_restraint.mjs +3 -3
  1571. package/tests/rename_ledger_prose.mjs +6 -6
  1572. package/tests/render_api.mjs +1 -1
  1573. package/tests/render_check.mjs +4 -4
  1574. package/tests/render_deploy.mjs +1 -1
  1575. package/tests/repo_info_binding.mjs +1 -1
  1576. package/tests/repo_map.mjs +5 -5
  1577. package/tests/reward_mode_cost_plus_only.mjs +7 -3
  1578. package/tests/reward_mode_surfacing.mjs +1 -1
  1579. package/tests/role_responsibilities.mjs +1 -1
  1580. package/tests/route_permission_check.mjs +1 -1
  1581. package/tests/route_shadow_guard.mjs +1 -1
  1582. package/tests/route_validation.mjs +1 -1
  1583. package/tests/routine_capture_kind.mjs +6 -6
  1584. package/tests/routine_schedule.mjs +9 -9
  1585. package/tests/run_routine.mjs +5 -5
  1586. package/tests/run_routine_two_root.mjs +5 -5
  1587. package/tests/runner_drift.mjs +17 -17
  1588. package/tests/sandbox_stage.mjs +5 -5
  1589. package/tests/scope_map_guard.mjs +7 -7
  1590. package/tests/scouting_owner_access_and_reach.mjs +1 -1
  1591. package/tests/scripts_gds_forwarders.mjs +224 -0
  1592. package/tests/scrubber_corpus.mjs +2 -2
  1593. package/tests/seam_wiring_guard.mjs +1 -1
  1594. package/tests/search_ingest.mjs +2 -2
  1595. package/tests/search_ingest_db.mjs +1 -1
  1596. package/tests/search_ingest_nul.mjs +6 -6
  1597. package/tests/seed_verify_criteria.mjs +3 -3
  1598. package/tests/sequence.mjs +3 -3
  1599. package/tests/served_paths_shipped.mjs +3 -3
  1600. package/tests/session_506_regression.mjs +1 -1
  1601. package/tests/session_accessibility.mjs +1 -1
  1602. package/tests/session_caps.mjs +1 -1
  1603. package/tests/session_cost.mjs +1 -1
  1604. package/tests/session_digest.mjs +2 -2
  1605. package/tests/session_eval.mjs +6 -6
  1606. package/tests/session_index.mjs +1 -1
  1607. package/tests/session_records.mjs +4 -4
  1608. package/tests/session_rename_fallback.mjs +2 -2
  1609. package/tests/session_reward_on_land.mjs +7 -149
  1610. package/tests/session_reward_on_land_db.mjs +191 -0
  1611. package/tests/session_reward_reconcile.mjs +6 -88
  1612. package/tests/session_reward_reconcile_db.mjs +132 -0
  1613. package/tests/session_transcript.mjs +1 -1
  1614. package/tests/sessions_kit_pager.mjs +2 -1
  1615. package/tests/setup_device_flow_fallback.mjs +2 -2
  1616. package/tests/setup_smoke.mjs +12 -5
  1617. package/tests/setup_status_facts.mjs +54 -12
  1618. package/tests/ship_autolinkify.mjs +2 -2
  1619. package/tests/ship_automerge_injection.mjs +1 -1
  1620. package/tests/ship_base_flag.mjs +1 -1
  1621. package/tests/ship_broadcast_routing.mjs +1 -1
  1622. package/tests/ship_broadcast_server.mjs +2 -2
  1623. package/tests/ship_builder_model.mjs +1 -1
  1624. package/tests/ship_cannot_lie.mjs +9 -9
  1625. package/tests/ship_card.mjs +2 -2
  1626. package/tests/ship_ci_deploy.mjs +7 -7
  1627. package/tests/ship_error_shape.mjs +1 -1
  1628. package/tests/ship_land_ci_not_started.mjs +3 -3
  1629. package/tests/ship_land_conflict.mjs +3 -3
  1630. package/tests/ship_land_proof.mjs +3 -3
  1631. package/tests/ship_land_red_pr.mjs +5 -5
  1632. package/tests/ship_merge_gate.mjs +14 -14
  1633. package/tests/ship_mode.mjs +1 -1
  1634. package/tests/ship_mode_first_ship.mjs +4 -4
  1635. package/tests/ship_mode_hands_off.mjs +8 -8
  1636. package/tests/ship_post_land_verify.mjs +1 -1
  1637. package/tests/ship_preflight.mjs +19 -19
  1638. package/tests/ship_premerge.mjs +1 -1
  1639. package/tests/ship_publish_error.mjs +2 -2
  1640. package/tests/ship_push_diagnosis.mjs +1 -1
  1641. package/tests/ship_regen_copy_inventory.mjs +3 -3
  1642. package/tests/ship_resume.mjs +4 -4
  1643. package/tests/ship_smoke_gate.mjs +1 -1
  1644. package/tests/ship_upload_skip.mjs +1 -1
  1645. package/tests/ship_upstream_deletion.mjs +1 -1
  1646. package/tests/ship_vendored_instance.mjs +8 -8
  1647. package/tests/ship_visual_regrade.mjs +3 -3
  1648. package/tests/ship_zero_commit.mjs +1 -1
  1649. package/tests/skill_docs_unavailable_regrade.mjs +3 -3
  1650. package/tests/skill_friction_kind.mjs +1 -1
  1651. package/tests/skill_grade_recover.mjs +1 -1
  1652. package/tests/skill_grader_health.mjs +1 -1
  1653. package/tests/skill_lint.mjs +1 -1
  1654. package/tests/skill_menu_ruling.mjs +1 -1
  1655. package/tests/skill_preflight.mjs +7 -7
  1656. package/tests/skip_is_not_pass.mjs +22 -1
  1657. package/tests/smoke_dependencies_witness.mjs +2 -2
  1658. package/tests/smoke_preflight.mjs +1 -1
  1659. package/tests/smoke_target.mjs +2 -2
  1660. package/tests/smoke_write_contract.mjs +2 -2
  1661. package/tests/sound_player.mjs +8 -8
  1662. package/tests/source_text_test_ratchet.mjs +97 -0
  1663. package/tests/speciality_corpus_scope.mjs +1 -1
  1664. package/tests/speciality_session_skills.mjs +1 -1
  1665. package/tests/sso_checkin_legacy_field_gone.mjs +4 -2
  1666. package/tests/stale_timer.mjs +3 -3
  1667. package/tests/stale_worktrees.mjs +1 -1
  1668. package/tests/start_env_guard.mjs +1 -1
  1669. package/tests/start_goal_first.mjs +3 -3
  1670. package/tests/start_inbox_count.mjs +1 -1
  1671. package/tests/start_rebase_warning.mjs +1 -1
  1672. package/tests/status_default_version.mjs +3 -3
  1673. package/tests/status_mirror_sync.mjs +1 -1
  1674. package/tests/status_page_no_dead_uptime.mjs +80 -0
  1675. package/tests/stop_refcheck.mjs +1 -1
  1676. package/tests/strand_watch.mjs +1 -1
  1677. package/tests/stranded_rows.mjs +1 -1
  1678. package/tests/stuck_detector.mjs +14 -14
  1679. package/tests/sweep_app_account.mjs +3 -3
  1680. package/tests/task_cli.mjs +2 -2
  1681. package/tests/task_detail_ui.mjs +11 -1
  1682. package/tests/task_discipline_required.mjs +2 -2
  1683. package/tests/task_list_paging.mjs +1 -1
  1684. package/tests/task_visual_slots.mjs +2 -2
  1685. package/tests/terms_acceptance.mjs +1 -1
  1686. package/tests/terms_grandfather_db.mjs +1 -1
  1687. package/tests/test_path_guard.mjs +1 -1
  1688. package/tests/triage_development.mjs +1 -1
  1689. package/tests/tweak_batch_apply.mjs +2 -2
  1690. package/tests/tweak_land_heal.mjs +3 -3
  1691. package/tests/tweak_unattended.mjs +3 -3
  1692. package/tests/ui_design_skills.mjs +2 -2
  1693. package/tests/unit_report_status.mjs +2 -2
  1694. package/tests/unit_runner_serial.mjs +2 -2
  1695. package/tests/unit_runner_teardown_abort.mjs +1 -1
  1696. package/tests/update_channel.mjs +2 -2
  1697. package/tests/update_channel_db.mjs +4 -4
  1698. package/tests/update_subscription_engine.mjs +26 -26
  1699. package/tests/update_sweep_home.mjs +14 -14
  1700. package/tests/upgrade.mjs +11 -11
  1701. package/tests/upgrade_artist_gate.mjs +4 -4
  1702. package/tests/upgrade_commit_identity.mjs +2 -2
  1703. package/tests/upgrade_migrate.mjs +7 -7
  1704. package/tests/upgrade_operator.mjs +2 -2
  1705. package/tests/upgrade_outcome.mjs +2 -2
  1706. package/tests/upgrade_persist_pin.mjs +5 -5
  1707. package/tests/upkeep_home.mjs +1 -1
  1708. package/tests/version_close.mjs +2 -2
  1709. package/tests/version_close_cli.mjs +2 -2
  1710. package/tests/version_close_route.mjs +1 -1
  1711. package/tests/version_literals.mjs +23 -23
  1712. package/tests/visual_review.mjs +5 -5
  1713. package/tests/wedge_remedy.mjs +5 -5
  1714. package/tests/welcome_boot.mjs +116 -0
  1715. package/tests/welcome_boot_browser.mjs +271 -0
  1716. package/tests/wizard_born_first_board.mjs +3 -3
  1717. package/tests/wizard_demo.mjs +1 -1
  1718. package/tests/wizard_one_page.mjs +4 -3
  1719. package/tests/wizard_physics.mjs +3 -1
  1720. package/tests/wizard_physics_more.mjs +42 -3
  1721. package/tests/work_title_wrap.mjs +1 -1
  1722. package/tests/workflow_exec_paths.mjs +6 -6
  1723. package/tests/worktree_claim_guard.mjs +1 -1
  1724. package/tests/worktree_helper.mjs +2 -2
  1725. package/tests/write_validation_gaps.mjs +3 -3
  1726. package/scripts/gds/api.sh +0 -6
  1727. package/scripts/gds/audit-exports.js +0 -128
  1728. package/scripts/gds/resolve-skill-model.js +0 -57
  1729. package/scripts/gds/security-baseline-check.sh +0 -180
  1730. package/scripts/gds/spike-task-map.js +0 -899
  1731. package/scripts/status-probe.mjs +0 -213
  1732. package/src/bongos/uptime-poller.js +0 -93
  1733. package/tests/government_fold_bench.mjs +0 -50
  1734. package/tests/spike_task_map.mjs +0 -422
  1735. package/tests/status-probe.mjs +0 -89
  1736. /package/{scripts/gds → modules/raise}/CLAUDE.md +0 -0
  1737. /package/scripts/{gds → bongos}/cloudbongos-token-isolation.conf +0 -0
  1738. /package/scripts/{gds → bongos}/discipline-modes.json +0 -0
  1739. /package/scripts/{gds → bongos}/retired-core-skills.json +0 -0
@@ -1,197 +1,6 @@
1
- // scripts/gds/render-api.js — a thin Render API v1 client for the control plane, with
2
- // the workspace (ownerId) guard (task 1004183; ADR 0327).
3
- //
4
- // Control-plane code, like its model scripts/gds/do-api.js: only the provisioning runner
5
- // uses it, never the web tier (ADR 0111 §2). Same skeleton (JsonHttpApi): injectable
6
- // transport, dry-run by default, and live mode refuses to start without a token.
7
- //
8
- // THE GUARD. A Render API key belongs to a USER, not a workspace, and carries that user's
9
- // rights in every workspace they belong to — measured 2026-09-22: one owner's key reached
10
- // three workspaces, one of them another builder's, holding live production services. So:
11
- //
12
- // - the client is built for ONE workspace (`ownerId`) and refuses to exist without it —
13
- // never defaulted, and never derived by taking the first of GET /owners;
14
- // - every call that names an owner sends this one;
15
- // - every response that carries an owner is ASSERTED to carry this one, and a missing
16
- // or different owner is a hard error (RenderOwnerMismatch). Assert on the response,
17
- // not the request: a request you got right says nothing about a response that came
18
- // from somewhere else. A list is checked element by element.
19
- //
20
- // Render's own shapes decide where the owner sits: a service carries `ownerId`, a
21
- // Postgres carries `owner.id` (both measured by the pilot, task 1004142). A few calls
22
- // answer with no owner at all (a database's connection-info, an env-var PUT, a deploy
23
- // trigger). Those are only reachable through a method that first reads the parent
24
- // resource through the guard, so nothing is ever sent to or read from a resource whose
25
- // workspace was not checked.
26
- //
27
- // NO DELETE. The platform must not hold the ability to destroy infrastructure in an
28
- // account it does not own (ADR 0327 §3). There is no delete method, and _req refuses the
29
- // verb outright, so adding one later is a visible change to this file, not a one-liner.
30
-
1
+ // scripts/gds/render-api.js — @bongos-forwarder (task 1004848). Generated by
2
+ // scripts/bongos/codemod-rename-scripts-gds.js; do not edit.
3
+ // The real script is scripts/bongos/render-api.js. This forwarder keeps callers that still name
4
+ // the old path working, and warns once so they get repointed. Task 1003706 removes it.
31
5
  'use strict';
32
-
33
- const { JsonHttpApi, makeApiError } = require('./http-api-client');
34
-
35
- const RENDER_API_BASE = 'https://api.render.com/v1';
36
-
37
- const RenderApiError = makeApiError('RenderApiError', 'RENDER_API_ERROR');
38
- const RenderOwnerMismatch = makeApiError('RenderOwnerMismatch', 'RENDER_OWNER_MISMATCH');
39
-
40
- // The owner id a Render resource carries, in either of the two shapes Render uses.
41
- // null when it carries none.
42
- function ownerOf(resource) {
43
- if (!resource || typeof resource !== 'object') return null;
44
- if (typeof resource.ownerId === 'string' && resource.ownerId) return resource.ownerId;
45
- if (resource.owner && typeof resource.owner.id === 'string' && resource.owner.id) return resource.owner.id;
46
- return null;
47
- }
48
-
49
- // Env var values are the owner's secrets on their way to Render. A dry-run log is the one
50
- // place this client would otherwise print a request body, so it prints the names only.
51
- function redact(body) {
52
- if (!body || typeof body !== 'object') return body;
53
- const out = { ...body };
54
- if (Array.isArray(out.envVars)) out.envVars = out.envVars.map((v) => ({ key: v && v.key, value: '[redacted]' }));
55
- if ('value' in out) out.value = '[redacted]';
56
- return out;
57
- }
58
-
59
- class RenderApi extends JsonHttpApi {
60
- // opts: { token, ownerId, dryRun=true, fetchImpl=globalThis.fetch, base, log }
61
- constructor(opts = {}) {
62
- super(opts, { base: RENDER_API_BASE, logTag: 'Render', ErrorClass: RenderApiError });
63
- if (typeof opts.ownerId !== 'string' || !opts.ownerId.trim()) {
64
- throw new RenderApiError('a Render client needs the workspace it acts in (ownerId) — it is never defaulted');
65
- }
66
- this.ownerId = opts.ownerId.trim();
67
- if (!this.dryRun && !this.token) {
68
- throw new RenderApiError('live Render call requested with no API key');
69
- }
70
- if (!this.dryRun && typeof this.fetchImpl !== 'function') {
71
- throw new RenderApiError('no fetch implementation available for live mode');
72
- }
73
- }
74
-
75
- async _req(method, path, body, opts = {}) {
76
- if (method === 'DELETE') throw new RenderApiError(`refusing ${method} ${path}: the platform never deletes in an account it does not own (ADR 0327 §3)`);
77
- if (this.dryRun) {
78
- this.log(`[dry-run] Render ${method} ${path}${body ? ' ' + JSON.stringify(redact(body)) : ''}`);
79
- return { dryRun: true, ...(opts.dryRunResult || {}) };
80
- }
81
- return super._req(method, path, body, opts);
82
- }
83
-
84
- // Throws unless `resource` carries exactly this client's workspace.
85
- assertOwned(resource, what) {
86
- const got = ownerOf(resource);
87
- if (got !== this.ownerId) {
88
- throw new RenderOwnerMismatch(
89
- got
90
- ? `Render answered ${what} from workspace ${got}, not ${this.ownerId} — refusing to go on`
91
- : `Render answered ${what} with no workspace on it — refusing to go on`,
92
- { body: null });
93
- }
94
- return resource;
95
- }
96
-
97
- // ---- workspaces ------------------------------------------------------------
98
-
99
- // The workspaces the key can reach, as [{ id, name, type }]. Used for MEMBERSHIP only —
100
- // "is the workspace the owner named one this key can act in" — never to pick one.
101
- async listOwners() {
102
- const json = await this._req('GET', '/owners?limit=100', null, {
103
- dryRunResult: { items: [{ owner: { id: this.ownerId, name: '(dry-run)', type: 'team' } }] },
104
- });
105
- const items = Array.isArray(json) ? json : (json && json.items) || [];
106
- return items.map((e) => (e && e.owner) || e).filter((o) => o && typeof o.id === 'string');
107
- }
108
-
109
- // ---- services --------------------------------------------------------------
110
-
111
- async getService(serviceId) {
112
- const json = await this._req('GET', `/services/${encodeURIComponent(serviceId)}`, null, {
113
- dryRunResult: { id: serviceId, ownerId: this.ownerId, serviceDetails: { url: null } },
114
- });
115
- return this.assertOwned(json && json.service ? json.service : json, `service ${serviceId}`);
116
- }
117
-
118
- // payload: the POST /services body (render-payload.js). Its ownerId must be ours — the
119
- // payload builder takes it as an argument, so this is checked, not overwritten.
120
- async createService(payload) {
121
- if (!payload || payload.ownerId !== this.ownerId) throw new RenderApiError('a service payload must name this client\'s workspace');
122
- const json = await this._req('POST', '/services', payload, {
123
- dryRunResult: { deployId: null, service: { id: `dryrun-srv-${payload.name}`, ownerId: this.ownerId, serviceDetails: { url: null } } },
124
- });
125
- return { deployId: (json && json.deployId) || null, service: this.assertOwned(json && json.service, 'the new service') };
126
- }
127
-
128
- // Set one env var on a service this workspace owns. The PUT answers with no owner, so
129
- // the service is read through the guard first.
130
- async putEnvVar(serviceId, key, value) {
131
- await this.getService(serviceId);
132
- return this._req('PUT', `/services/${encodeURIComponent(serviceId)}/env-vars/${encodeURIComponent(key)}`, { value }, { dryRunResult: { key } });
133
- }
134
-
135
- async triggerDeploy(serviceId) {
136
- await this.getService(serviceId);
137
- return this._req('POST', `/services/${encodeURIComponent(serviceId)}/deploys`, {}, { dryRunResult: { id: null } });
138
- }
139
-
140
- // A service's deploys, newest first, as the bare deploy objects (Render wraps each in
141
- // `{ deploy, cursor }`; both shapes are read). The list carries no owner, so the
142
- // service is read through the guard first (the deploy hall's history, task 1004270).
143
- async listDeploys(serviceId, { limit = 30 } = {}) {
144
- await this.getService(serviceId);
145
- const n = Math.max(1, Math.min(100, Number.parseInt(limit, 10) || 30));
146
- const json = await this._req('GET', `/services/${encodeURIComponent(serviceId)}/deploys?limit=${n}`, null, { dryRunResult: { items: [] } });
147
- const items = Array.isArray(json) ? json : (json && json.items) || [];
148
- return items.map((e) => (e && e.deploy) || e).filter((d) => d && typeof d.id === 'string');
149
- }
150
-
151
- // Roll the service back to one of its earlier deploys. The answer carries no owner, so
152
- // the service is read through the guard first. This is a write on the owner's account;
153
- // the caller (the deploy hall) asks the owner twice before it reaches here.
154
- async rollbackTo(serviceId, deployId) {
155
- await this.getService(serviceId);
156
- return this._req('POST', `/services/${encodeURIComponent(serviceId)}/rollback`, { deployId }, { dryRunResult: { id: null } });
157
- }
158
-
159
- // ---- Postgres --------------------------------------------------------------
160
-
161
- async createPostgres(payload) {
162
- if (!payload || payload.ownerId !== this.ownerId) throw new RenderApiError('a Postgres payload must name this client\'s workspace');
163
- const json = await this._req('POST', '/postgres', payload, {
164
- dryRunResult: { id: `dryrun-pg-${payload.name}`, status: 'creating', owner: { id: this.ownerId } },
165
- });
166
- return this.assertOwned(json, 'the new database');
167
- }
168
-
169
- async getPostgres(postgresId) {
170
- const json = await this._req('GET', `/postgres/${encodeURIComponent(postgresId)}`, null, {
171
- dryRunResult: { id: postgresId, status: 'available', owner: { id: this.ownerId } },
172
- });
173
- return this.assertOwned(json, `database ${postgresId}`);
174
- }
175
-
176
- // The database's connection strings. The answer carries no owner, so the database is
177
- // read through the guard first.
178
- async postgresConnectionInfo(postgresId) {
179
- await this.getPostgres(postgresId);
180
- return this._req('GET', `/postgres/${encodeURIComponent(postgresId)}/connection-info`, null, {
181
- dryRunResult: { internalConnectionString: 'postgres://dry-run' },
182
- });
183
- }
184
-
185
- // Poll until a new database is 'available'. `sleepFn` lets tests drive it with no clock.
186
- async settlePostgres(postgresId, { tries = 60, sleepMs = 5000, sleepFn } = {}) {
187
- const sleep = sleepFn || ((ms) => new Promise((r) => setTimeout(r, ms)));
188
- for (let i = 0; i < tries; i++) {
189
- const pg = await this.getPostgres(postgresId);
190
- if (pg.status === 'available') return pg;
191
- await sleep(sleepMs);
192
- }
193
- throw new RenderApiError(`database ${postgresId} did not become available in time`);
194
- }
195
- }
196
-
197
- module.exports = { RenderApi, RenderApiError, RenderOwnerMismatch, RENDER_API_BASE, ownerOf, redact };
6
+ require('../bongos/forwarder.js').forward(module, 'render-api.js');
@@ -1,206 +1,7 @@
1
1
  #!/usr/bin/env node
2
+ // scripts/gds/render-check.js — @bongos-forwarder (task 1004848). Generated by
3
+ // scripts/bongos/codemod-rename-scripts-gds.js; do not edit.
4
+ // The real script is scripts/bongos/render-check.js. This forwarder keeps callers that still name
5
+ // the old path working, and warns once so they get repointed. Task 1003706 removes it.
2
6
  'use strict';
3
- // scripts/gds/render-check.js — render the pages a branch changed and report text wider than its box and
4
- // overlapping siblings, naming the element and the page (task 1004203, ADR 0329).
5
- //
6
- // Why: nothing else in the pipeline renders a page. The grader reads the diff, so a title clipped by character
7
- // count that still ran past its card (task 1003480) and a second grid child landing on the first (task 1003078)
8
- // both shipped looking correct in code and were found only by opening a browser.
9
- //
10
- // A SIGNAL, never a gate (ADR 0329, decisions 3-4): /ship-check shows it as an advisory row; ship.js and the grader never
11
- // read it. The measurement is the kit's `text-fit` + `sibling-overlap` floors (modules/ui-design/kit/lib.js);
12
- // this file only picks the pages, runs the kit's renderer at 1280 + 390, and keeps those two floors.
13
- //
14
- // node scripts/gds/render-check.js the pages this branch changed against origin/main
15
- // node scripts/gds/render-check.js --base <ref> ... against another base
16
- // node scripts/gds/render-check.js --files a,b the pages these repo paths reach
17
- //
18
- // Exit 0 nothing found or nothing to render · 1 findings · 3 no system browser.
19
- const fs = require('node:fs');
20
- const os = require('node:os');
21
- const path = require('node:path');
22
- const { spawn, spawnSync } = require('node:child_process');
23
- const { isUiSurfacePath } = require('../../modules/lifecycle/cascade');
24
- const kit = require('../../modules/ui-design/kit/lib');
25
-
26
- const REPO_ROOT = path.resolve(__dirname, '..', '..');
27
- const RENDER_JS = path.join(REPO_ROOT, 'modules', 'ui-design', 'kit', 'render.js');
28
- const HARNESS_JS = path.join(REPO_ROOT, 'scripts', 'hall-preview', 'server.js');
29
- const FIT_FLOORS = Object.freeze(['text-fit', 'sibling-overlap']);
30
- const SIZES = Object.freeze([1280, 390]);
31
- const MAX_STATES_FILES = 6; // a shared sheet reaches every page; past this the builder runs render.js by hand
32
- // The whole run fits inside ship-check's 15-minute cap on a slow step, so ship-check never has to kill it
33
- // (a killed parent cannot stop its harness and renderers). Files that would start past it are listed instead.
34
- const RUN_BUDGET_MS = 12 * 60 * 1000;
35
- const MIN_RENDER_MS = 60 * 1000;
36
- const HARNESS_BOOT_MS = 30 * 1000;
37
- const rel = (file) => path.relative(REPO_ROOT, file).split(path.sep).join('/');
38
-
39
- // statesFilesFor — the states files a list of changed repo paths reaches. A page, or a file named like one
40
- // (goal-map.js), reaches its own <page>.states.json; any other script, sheet or image reaches every page in
41
- // the same public dir whose HTML names it (text-fit.js → goal-map, goals). Own pages come first, so the
42
- // MAX_STATES_FILES cut never drops the page the builder changed for pages a shared sheet reaches.
43
- function statesFilesFor(paths, root = REPO_ROOT) {
44
- const own = new Set(), reached = new Set();
45
- for (const p of paths) {
46
- if (!isUiSurfacePath(p)) continue;
47
- const dir = p.slice(0, p.indexOf('/public/') + '/public'.length);
48
- const file = p.slice(dir.length + 1);
49
- const beside = path.join(root, dir, `${file.replace(/\.[^./]+$/, '')}.states.json`);
50
- if (!file.includes('/') && fs.existsSync(beside)) { own.add(beside); continue; }
51
- if (/\.html?$/i.test(file) || !fs.existsSync(path.join(root, dir))) continue;
52
- const named = new RegExp(`(^|[/"'=\\s])${path.basename(file).replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}`);
53
- for (const html of fs.readdirSync(path.join(root, dir)).filter((f) => f.endsWith('.html'))) {
54
- const states = path.join(root, dir, html.replace(/\.html$/, '.states.json'));
55
- if (fs.existsSync(states) && named.test(fs.readFileSync(path.join(root, dir, html), 'utf8'))) reached.add(states);
56
- }
57
- }
58
- return [...[...own].sort(), ...[...reached].filter((f) => !own.has(f)).sort()];
59
- }
60
-
61
- // fitFindings — every element the two fit floors named in one render.js report.json, read from the
62
- // structured facts (auditFloors' problem line stops at five). One finding per element across all the
63
- // renders it appeared in, with its largest measure — a title past its card at 1280 and 390 is one finding.
64
- const MEASURE = / (\d+)px past its (?:box|card)$| (\d+)x(\d+)$/;
65
- function fitFindings(report) {
66
- const byElement = new Map();
67
- for (const [render, r] of Object.entries((report && report.renders) || {})) {
68
- const facts = (r && r.facts) || {};
69
- for (const [floor, items] of [['text-fit', facts.textFit], ['sibling-overlap', facts.overlaps]]) {
70
- for (const item of items || []) {
71
- const m = MEASURE.exec(item);
72
- const key = `${floor}: ${m ? item.slice(0, m.index) : item}`;
73
- const size = m ? (m[1] ? Number(m[1]) : Number(m[2]) * Number(m[3])) : 0;
74
- if (!byElement.has(key)) byElement.set(key, { key, measure: '', size: -1, renders: [] });
75
- const f = byElement.get(key);
76
- f.renders.push(render);
77
- if (size > f.size) { f.size = size; f.measure = m ? m[0].trim() : ''; }
78
- }
79
- }
80
- }
81
- return [...byElement.values()].map((f) => ({ page: report.page, problem: f.measure ? `${f.key} — ${f.measure}` : f.key, renders: f.renders }));
82
- }
83
-
84
- // Two pages of one name (hall-ui/index, public-landing/index) must never share a shots folder.
85
- function shotsDir(outRoot, file) {
86
- return path.join(outRoot, rel(file).replace(/\.states\.json$/, '').replace(/[\\/]/g, '_'));
87
- }
88
-
89
- function changedFiles(base) {
90
- const git = (...args) => spawnSync('git', args, { cwd: REPO_ROOT, encoding: 'utf8' });
91
- const mergeBase = git('merge-base', base, 'HEAD').stdout.trim();
92
- if (!mergeBase) return null;
93
- const listed = `${git('diff', '--name-only', mergeBase).stdout}\n${git('ls-files', '--others', '--exclude-standard').stdout}`;
94
- return [...new Set(listed.split(/\r?\n/).filter(Boolean))];
95
- }
96
-
97
- // Kill a child and everything it started (render.js starts two stubs and a browser).
98
- const DETACH = process.platform !== 'win32';
99
- function killTree(child) {
100
- if (!child || child.exitCode !== null || child.signalCode !== null) return;
101
- try {
102
- if (process.platform === 'win32') spawnSync('taskkill', ['/pid', String(child.pid), '/T', '/F'], { stdio: 'ignore' });
103
- else process.kill(-child.pid, 'SIGKILL');
104
- } catch { /* already gone */ }
105
- }
106
-
107
- // The hall's states files are written against the hall-preview harness (their notes say so): its fixtures
108
- // carry the populated pages, where the kit's own stub serves the hall its signed-out, empty reads. Its
109
- // output is read for the whole run, since a pipe left unread fills and stalls it mid-render.
110
- async function startHarness({ script = HARNESS_JS, bootMs = HARNESS_BOOT_MS } = {}) {
111
- const port = await kit.freePort();
112
- const proc = spawn(process.execPath, [script, '--port', String(port), '--fixture-me'], { cwd: REPO_ROOT, stdio: ['ignore', 'pipe', 'pipe'], detached: DETACH });
113
- const stop = () => killTree(proc);
114
- await new Promise((resolve, reject) => {
115
- let said = '', ready = false;
116
- const fail = (why) => { clearTimeout(timer); stop(); reject(new Error(`${why}: ${said.trim()}`)); };
117
- const timer = setTimeout(() => fail(`the hall-preview harness did not start within ${bootMs / 1000}s`), bootMs);
118
- const hear = (d) => {
119
- if (ready) return;
120
- said += d;
121
- if (/hall-preview: http/.test(said)) { ready = true; clearTimeout(timer); resolve(); }
122
- };
123
- proc.stdout.on('data', hear);
124
- proc.stderr.on('data', hear);
125
- proc.on('exit', (code) => { if (!ready) fail(`the hall-preview harness exited ${code}`); });
126
- });
127
- return { base: `http://localhost:${port}`, pid: proc.pid, stop };
128
- }
129
-
130
- // Run a node script without blocking the event loop (the harness's pipes keep draining meanwhile);
131
- // past timeoutMs the script and everything it started are killed.
132
- function runNode(args, timeoutMs) {
133
- return new Promise((resolve) => {
134
- const child = spawn(process.execPath, args, { cwd: REPO_ROOT, stdio: ['ignore', 'ignore', 'pipe'], detached: DETACH });
135
- let stderr = '';
136
- child.stderr.on('data', (d) => { if (stderr.length < 4000) stderr += d; });
137
- const timer = setTimeout(() => killTree(child), timeoutMs);
138
- child.on('error', (e) => { clearTimeout(timer); resolve({ status: null, signal: null, stderr: e.message }); });
139
- child.on('close', (status, signal) => { clearTimeout(timer); resolve({ status, signal, stderr }); });
140
- });
141
- }
142
-
143
- // One states file through the kit's renderer: { findings, note?, noBrowser? }. ONE colour mode (the file's
144
- // first): the fit floors measure geometry, and the pack's two font stacks are the same in both modes. No
145
- // reduced-motion pass either — only the fit floors are read. render.js still runs everything when asked.
146
- async function renderStatesFile(file, { outRoot, harness, timeoutMs }) {
147
- const json = kit.readJson(file);
148
- const out = shotsDir(outRoot, file);
149
- const mode = (json.modes || kit.MODES)[0];
150
- const args = [RENDER_JS, '--states', file, '--sizes', SIZES.join(','), '--modes', mode, '--no-reduced-motion', '--out', out];
151
- if (json.surface === 'hall-ui' && harness) args.push('--base-in', harness.base, '--base-out', harness.base);
152
- const r = await runNode(args, timeoutMs);
153
- if (r.status === kit.EXIT.NO_BROWSER) return { findings: [], noBrowser: true, note: String(r.stderr || '').trim().split('\n')[0] };
154
- const reportFile = path.join(out, 'report.json');
155
- if (r.status === kit.EXIT.USAGE || !fs.existsSync(reportFile)) {
156
- const why = String(r.stderr || `exit ${r.status}${r.signal ? ` (${r.signal})` : ''}`).trim().split('\n').slice(0, 2).join(' ');
157
- return { findings: [], note: `${rel(file)}: the renderer produced no report — ${why}` };
158
- }
159
- return { findings: fitFindings(kit.readJson(reportFile)), out };
160
- }
161
-
162
- async function main() {
163
- const started = Date.now();
164
- const args = process.argv.slice(2);
165
- const explicit = kit.listArg(args, '--files', null);
166
- const paths = explicit || changedFiles(kit.argOf(args, '--base', 'origin/main'));
167
- if (!paths) { console.log('render-check: no merge base with origin/main — nothing to compare against, nothing rendered'); return 0; }
168
- const all = statesFilesFor(paths);
169
- const uiCount = paths.filter(isUiSurfacePath).length;
170
- if (!all.length) {
171
- console.log(uiCount
172
- ? `render-check: ${uiCount} rendered-surface file(s) changed, but no <page>.states.json reaches them — nothing to measure (docs/recipes/ui-look-before-you-ship.md)`
173
- : 'render-check: no rendered surface changed — nothing to render');
174
- return 0;
175
- }
176
- const outRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'render-check-'));
177
- console.log(`render-check — text past its box and overlapping siblings at ${SIZES.join(' + ')} (a signal, never a gate)`);
178
- let harness = null;
179
- const findings = [], notes = [], unrendered = all.slice(MAX_STATES_FILES).map((f) => [f, `past ${MAX_STATES_FILES}`]);
180
- try {
181
- const files = all.slice(0, MAX_STATES_FILES);
182
- if (files.some((f) => kit.readJson(f).surface === 'hall-ui')) harness = await startHarness();
183
- for (const [i, file] of files.entries()) {
184
- const left = RUN_BUDGET_MS - (Date.now() - started);
185
- if (left < MIN_RENDER_MS) { unrendered.unshift(...files.slice(i).map((f) => [f, 'out of time'])); break; }
186
- const res = await renderStatesFile(file, { outRoot, harness, timeoutMs: left });
187
- if (res.noBrowser) { console.log(`render-check: no system browser, nothing rendered — ${res.note}`); return kit.EXIT.NO_BROWSER; }
188
- if (res.note) notes.push(res.note);
189
- findings.push(...res.findings.map((x) => ({ ...x, shots: res.out })));
190
- console.log(` ${rel(file)}: ${res.findings.length ? `${res.findings.length} finding(s)` : res.note ? 'no report' : 'clean'}${res.out ? ` (shots: ${res.out})` : ''}`);
191
- }
192
- } finally {
193
- if (harness) harness.stop();
194
- }
195
- for (const [f, why] of unrendered) console.log(` not rendered (${why}): node modules/ui-design/kit/render.js --states ${rel(f)} --sizes 1280,390`);
196
- for (const n of notes) console.log(`✗ ${n}`);
197
- for (const f of findings) console.log(`✗ ${f.page} ${f.problem} [${f.renders.join(', ')}] shots: ${f.shots}`);
198
- const unmeasured = notes.length ? `; ${notes.length} states file(s) not measured` : '';
199
- console.log(findings.length || notes.length ? `${findings.length} finding(s)${unmeasured} — look at the shots, then fix the element or say in the ship notes why it is right` : 'nothing past its box, no overlapping siblings');
200
- return findings.length || notes.length ? 1 : 0;
201
- }
202
-
203
- module.exports = { FIT_FLOORS, SIZES, statesFilesFor, fitFindings, shotsDir, startHarness };
204
- if (require.main === module) {
205
- main().then((code) => { process.exitCode = code; }, (e) => { console.error(`render-check: ${e.stack || e.message}`); process.exitCode = 1; });
206
- }
7
+ require('../bongos/forwarder.js').forward(module, 'render-check.js');
@@ -1,226 +1,7 @@
1
1
  #!/usr/bin/env node
2
- // Renders generative-ideas.md from the GDS idea_inbox table.
3
- //
4
- // Reads via GET /api/bongos/inbox (authenticated). Writes a generated markdown
5
- // view to the repo's top-level generative-ideas.md. The file is overwritten
6
- // on every run — manual edits will not survive. Capture via /builder-capture
7
- // or `node scripts/gds/capture.js`; triage via /builder-triage or the API.
8
- //
9
- // Note (2026-05-10): the current GET /api/bongos/inbox endpoint returns open
10
- // ideas only (see src/bongos/inbox.js listOpenIdeas). The "Recently Promoted",
11
- // "Recently Discarded", and "Merged" sections will be empty until the API
12
- // is extended to expose those statuses. The script is forward-compatible:
13
- // when /inbox starts returning non-open rows, those sections populate
14
- // automatically.
15
- //
16
- // Usage:
17
- // node scripts/gds/render-ideas.js # writes generative-ideas.md
18
- // node scripts/gds/render-ideas.js --dry-run # prints to stdout instead
19
-
20
- const path = require('node:path');
21
- const fsp = require('node:fs/promises');
22
- const { cliClient, requireSession } = require('./cli-lib');
23
-
24
- const REPO_ROOT = path.resolve(__dirname, '..', '..');
25
- const OUT_PATH = path.join(REPO_ROOT, 'generative-ideas.md');
26
- const RECENT_DAYS = 30;
27
-
28
- const HEADER = `<!-- GENERATED FILE — Edit via /builder-capture or /builder-triage. Manual edits will be overwritten. -->
29
-
30
- # Generative ideas
31
-
32
- > **This file is a read-only view of the GDS \`idea_inbox\` table.** It is regenerated by \`scripts/gds/render-ideas.js\`. Do not edit by hand.
33
- >
34
- > **Capture an idea:** \`node scripts/gds/capture.js "short title"\` (or the \`/builder-capture\` slash command).
35
- >
36
- > **Triage open ideas:** \`/idea-triage\` (or \`PATCH /api/bongos/inbox/<id>\` with \`{ status: 'promoted' | 'discarded' | 'merged', promoted_to_task_id: N }\`).
37
- `;
38
-
39
- function fmtTimestamp(iso) {
40
- if (!iso) return '—';
41
- try {
42
- return new Date(iso).toISOString().replace('T', ' ').slice(0, 16) + ' UTC';
43
- } catch (_) {
44
- return String(iso);
45
- }
46
- }
47
-
48
- function daysAgo(iso) {
49
- if (!iso) return Infinity;
50
- const ms = Date.now() - new Date(iso).getTime();
51
- return ms / (1000 * 60 * 60 * 24);
52
- }
53
-
54
- // The grade, in words, for a triage surface (task 1002924 / BV1.R148). An idea
55
- // with no ideas_grades row reads as 'quick' — the R140 absence-is-quick design —
56
- // so a missing grade is a real answer here, not a gap to hide.
57
- function gradeLabel(idea) {
58
- const g = idea.grade || 'quick';
59
- if (g === 'full') {
60
- const s = idea.completeness_score;
61
- return Number.isInteger(s) ? `FULL ${s}/100` : 'FULL (unscored)';
62
- }
63
- if (g === 'spark') return 'SPARK — awaiting development';
64
- return 'quick';
65
- }
66
-
67
- function renderIdea(idea) {
68
- const lines = [];
69
- const titleSuffix = idea.kind ? ` _(${idea.kind})_` : '';
70
- lines.push(`### #${idea.id} — ${idea.title}${titleSuffix}`);
71
- lines.push('');
72
- const meta = [];
73
- // FIRST in the meta run, deliberately: the grade decides what kind of verdict
74
- // this idea even needs (a Full Idea gets a recommended shape, R149; a quick one
75
- // promotes straight to a task), so it is the first thing a triager should read.
76
- meta.push(`**${gradeLabel(idea)}**`);
77
- meta.push(`captured ${fmtTimestamp(idea.captured_at)}`);
78
- if (idea.reviewed_at) meta.push(`reviewed ${fmtTimestamp(idea.reviewed_at)}`);
79
- if (idea.suggested_version) meta.push(`suggested → ${idea.suggested_version}`);
80
- if (idea.suggested_priority != null) meta.push(`P${idea.suggested_priority}`);
81
- if (idea.promoted_to_task_id != null) meta.push(`→ task #${idea.promoted_to_task_id}`);
82
- lines.push(`_${meta.join(' · ')}_`);
83
- lines.push('');
84
- if (idea.body_md && idea.body_md.trim()) {
85
- lines.push(idea.body_md.trim());
86
- lines.push('');
87
- }
88
- return lines.join('\n');
89
- }
90
-
91
- function renderSection(heading, ideas, emptyMsg) {
92
- const out = [`## ${heading}`, ''];
93
- if (!ideas.length) {
94
- out.push(`_${emptyMsg}_`);
95
- out.push('');
96
- return out.join('\n');
97
- }
98
- for (const idea of ideas) {
99
- out.push(renderIdea(idea));
100
- }
101
- return out.join('\n');
102
- }
103
-
104
- async function fetchAllIdeas() {
105
- // GET /api/bongos/inbox currently returns open ideas only. We request the max
106
- // limit so this works as the inbox grows. When the API is extended to
107
- // return other statuses, this script will pick them up automatically.
108
- const api = await cliClient();
109
- const { ok, status, data } = await api.inbox.getInbox({ query: { limit: 500 } });
110
- if (!ok) {
111
- throw new Error(`GET /api/bongos/inbox failed: HTTP ${status} ${JSON.stringify(data)}`);
112
- }
113
- return data.ideas || [];
114
- }
115
-
116
- // Full ideas rank by how completely they were answered; everything else by
117
- // recency. Kept as one comparator per bucket rather than one clever composite:
118
- // mixing a 0-100 score and a timestamp into a single ordering is how a quick idea
119
- // ends up sorted by a number it does not have.
120
- const byCompletenessDesc = (a, b) => {
121
- const sa = Number.isInteger(a.completeness_score) ? a.completeness_score : -1;
122
- const sb = Number.isInteger(b.completeness_score) ? b.completeness_score : -1;
123
- if (sa !== sb) return sb - sa;
124
- return new Date(b.captured_at).getTime() - new Date(a.captured_at).getTime();
125
- };
126
-
127
- function partition(ideas) {
128
- const open = [];
129
- const promoted = [];
130
- const discarded = [];
131
- const merged = [];
132
- for (const idea of ideas) {
133
- if (idea.status === 'open') {
134
- open.push(idea);
135
- continue;
136
- }
137
- // Recency uses reviewed_at when present, otherwise captured_at.
138
- const ref = idea.reviewed_at || idea.captured_at;
139
- if (daysAgo(ref) > RECENT_DAYS) continue;
140
- if (idea.status === 'promoted') promoted.push(idea);
141
- else if (idea.status === 'discarded') discarded.push(idea);
142
- else if (idea.status === 'merged') merged.push(idea);
143
- }
144
- // Newest first within each bucket.
145
- const byCapturedDesc = (a, b) =>
146
- new Date(b.captured_at).getTime() - new Date(a.captured_at).getTime();
147
- promoted.sort(byCapturedDesc);
148
- discarded.sort(byCapturedDesc);
149
- merged.sort(byCapturedDesc);
150
-
151
- // TWO OPEN SECTIONS, NOT ONE SORTED LIST (task 1002924 / R148). The done-when
152
- // wants full ideas ordered by completeness AND quick ideas and sparks still
153
- // visible rather than buried under scored ideas — and a single list sorted by
154
- // score cannot do both: every unscored idea lands after every scored one, which
155
- // for a long inbox means nobody ever reads them. Two labelled runs give each
156
- // kind its own ordering and its own top.
157
- const openFull = open.filter((i) => (i.grade || 'quick') === 'full').sort(byCompletenessDesc);
158
- const openRest = open.filter((i) => (i.grade || 'quick') !== 'full').sort(byCapturedDesc);
159
- return { open, openFull, openRest, promoted, discarded, merged };
160
- }
161
-
162
- function render(ideas) {
163
- const { open, openFull, openRest, promoted, discarded, merged } = partition(ideas);
164
- const renderedAt = new Date().toISOString().replace('T', ' ').slice(0, 16) + ' UTC';
165
-
166
- const parts = [
167
- HEADER,
168
- `_Last rendered: ${renderedAt} · ${open.length} open (${openFull.length} full, ${openRest.length} quick/spark) · ${promoted.length} promoted (last ${RECENT_DAYS}d) · ${discarded.length} discarded (last ${RECENT_DAYS}d) · ${merged.length} merged (last ${RECENT_DAYS}d)_`,
169
- '',
170
- '---',
171
- '',
172
- renderSection(
173
- 'Open — Full Ideas (best-formed first)',
174
- openFull,
175
- 'No Full Ideas open. One is written at /builders/ideas, or by developing a spark.'
176
- ),
177
- renderSection(
178
- 'Open — quick ideas and sparks (newest first)',
179
- openRest,
180
- 'No quick ideas open. Inbox zero — capture one with node scripts/gds/capture.js.'
181
- ),
182
- renderSection(
183
- `Recently Promoted (last ${RECENT_DAYS} days)`,
184
- promoted,
185
- 'Nothing promoted in the window.'
186
- ),
187
- renderSection(
188
- `Recently Discarded (last ${RECENT_DAYS} days)`,
189
- discarded,
190
- 'Nothing discarded in the window.'
191
- ),
192
- renderSection(
193
- `Merged (last ${RECENT_DAYS} days)`,
194
- merged,
195
- 'Nothing merged in the window.'
196
- ),
197
- ];
198
-
199
- return parts.join('\n') + '\n';
200
- }
201
-
202
- async function main() {
203
- await requireSession();
204
- const dryRun = process.argv.includes('--dry-run');
205
- const ideas = await fetchAllIdeas();
206
- const md = render(ideas);
207
- if (dryRun) {
208
- process.stdout.write(md);
209
- return;
210
- }
211
- await fsp.writeFile(OUT_PATH, md, 'utf8');
212
- console.log(`Wrote ${OUT_PATH} (${ideas.length} idea${ideas.length === 1 ? '' : 's'} fetched)`);
213
- }
214
-
215
- // Exported so the R148 ordering + grade label are unit-testable without a
216
- // session or the network — they are the whole substance of this file now, and the
217
- // pure functions are the right seam. Guarded main(), the capture.js pattern:
218
- // without it a require() for the test would run the renderer.
219
- module.exports = { gradeLabel, partition };
220
-
221
- if (require.main === module) {
222
- main().catch((err) => {
223
- console.error(err.stack || err.message || err);
224
- process.exit(1);
225
- });
226
- }
2
+ // scripts/gds/render-ideas.js — @bongos-forwarder (task 1004848). Generated by
3
+ // scripts/bongos/codemod-rename-scripts-gds.js; do not edit.
4
+ // The real script is scripts/bongos/render-ideas.js. This forwarder keeps callers that still name
5
+ // the old path working, and warns once so they get repointed. Task 1003706 removes it.
6
+ 'use strict';
7
+ require('../bongos/forwarder.js').forward(module, 'render-ideas.js');