@bongos/core 1.21.177 → 1.21.178

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 (121) hide show
  1. package/.bongos-core.json +140 -150
  2. package/clients/bongos-client/README.md +1 -1
  3. package/clients/bongos-client/bongos-client.global.js +0 -6
  4. package/clients/bongos-client/index.cjs +0 -6
  5. package/clients/bongos-client/index.d.ts +0 -6
  6. package/clients/bongos-client/index.mjs +0 -6
  7. package/docs/adr/0042-builder-self-deploy-ci-auto-merge.md +3 -2
  8. package/docs/api/openapi.json +1 -87
  9. package/docs/api-reference.md +1 -8
  10. package/docs/canonical-permissions.md +3 -3
  11. package/docs/copy-inventory.md +25 -39
  12. package/docs/copy-registry.json +73 -200
  13. package/docs/file-map.md +3 -3
  14. package/docs/module-api-changelog.md +2 -0
  15. package/docs/modules-contract.md +2 -2
  16. package/docs/page-inventory.json +4 -7
  17. package/docs/page-readings.json +1520 -1569
  18. package/modules/government/catalog.js +10 -7
  19. package/modules/government/decision-board.js +0 -1
  20. package/modules/government/decision-rules.js +0 -1
  21. package/modules/government/docket.js +0 -1
  22. package/modules/government/protected-surfaces.js +1 -1
  23. package/modules/government/protected-surfaces.json +2 -3
  24. package/modules/hall-ui/public/atlas.html +1 -1
  25. package/modules/hall-ui/public/blockers.html +1 -1
  26. package/modules/hall-ui/public/board-room.html +1 -1
  27. package/modules/hall-ui/public/city.html +1 -1
  28. package/modules/hall-ui/public/collab.html +1 -1
  29. package/modules/hall-ui/public/commands.html +1 -1
  30. package/modules/hall-ui/public/copy-desk.html +1 -1
  31. package/modules/hall-ui/public/deploy.html +1 -1
  32. package/modules/hall-ui/public/diagrams.html +1 -1
  33. package/modules/hall-ui/public/drachmae.html +1 -1
  34. package/modules/hall-ui/public/fleet.html +1 -1
  35. package/modules/hall-ui/public/gate.css +4 -26
  36. package/modules/hall-ui/public/gate.html +12 -27
  37. package/modules/hall-ui/public/gate.js +26 -176
  38. package/modules/hall-ui/public/gate.states.json +4 -22
  39. package/modules/hall-ui/public/goal-map.html +1 -1
  40. package/modules/hall-ui/public/goals.html +1 -1
  41. package/modules/hall-ui/public/government.html +1 -1
  42. package/modules/hall-ui/public/idea.html +1 -1
  43. package/modules/hall-ui/public/ideas.html +1 -1
  44. package/modules/hall-ui/public/index.html +1 -1
  45. package/modules/hall-ui/public/modules.html +1 -1
  46. package/modules/hall-ui/public/my-agents.html +1 -1
  47. package/modules/hall-ui/public/primer.html +1 -1
  48. package/modules/hall-ui/public/profile.html +1 -1
  49. package/modules/hall-ui/public/project-settings.html +1 -1
  50. package/modules/hall-ui/public/ranks.html +1 -1
  51. package/modules/hall-ui/public/roadmap.html +1 -1
  52. package/modules/hall-ui/public/roster.html +1 -1
  53. package/modules/hall-ui/public/sessions.html +1 -1
  54. package/modules/hall-ui/public/settings.html +1 -1
  55. package/modules/hall-ui/public/shell.js +1 -1
  56. package/modules/hall-ui/public/street-card.js +5 -9
  57. package/modules/hall-ui/public/street-desk.js +2 -2
  58. package/modules/hall-ui/public/street-inside.js +1 -1
  59. package/modules/hall-ui/public/street.html +1 -1
  60. package/modules/hall-ui/public/studio.html +1 -1
  61. package/modules/hall-ui/public/task.html +1 -1
  62. package/modules/hall-ui/public/thinking.html +1 -1
  63. package/modules/hall-ui/public/tweak-editor.html +1 -1
  64. package/modules/hall-ui/public/watch.html +1 -1
  65. package/modules/hall-ui/public/work.html +1 -1
  66. package/modules/lifecycle/matter-acts.js +0 -6
  67. package/modules/lifecycle/module.json +0 -1
  68. package/package-lock.json +2 -2
  69. package/package.json +1 -1
  70. package/release-notes.json +22 -0
  71. package/scripts/bongos/adopt-preflight.js +3 -3
  72. package/scripts/bongos/audit-authorship.sh +1 -3
  73. package/scripts/bongos/bump-version.js +46 -9
  74. package/scripts/bongos/doc-cli-guard.js +2 -0
  75. package/scripts/bongos/doc-control-claims.js +2 -2
  76. package/scripts/bongos/government-walk.js +3 -9
  77. package/scripts/bongos/hard-floor.js +52 -0
  78. package/scripts/bongos/publish-manifest.js +3 -3
  79. package/scripts/bongos/run-unit-tests.js +17 -5
  80. package/scripts/gds/hard-floor.js +6 -0
  81. package/src/bongos/module-scope-map.js +2 -2
  82. package/src/bongos/permission-path-check.js +1 -1
  83. package/src/bongos/route-rank-check.js +1 -8
  84. package/src/bongos/routes.js +1 -2
  85. package/src/module-api.js +1 -1
  86. package/src/modules.js +1 -1
  87. package/tests/acclaim_feed_evidence_db.mjs +42 -23
  88. package/tests/adr_0089_scope.mjs +7 -5
  89. package/tests/bump_version.mjs +52 -18
  90. package/tests/copy_desk_flags_db.mjs +22 -14
  91. package/tests/gating_review_retired.mjs +1 -1
  92. package/tests/government_act_alone_buildings.mjs +1 -3
  93. package/tests/government_board_membership_db.mjs +35 -22
  94. package/tests/government_protected_surfaces.mjs +29 -13
  95. package/tests/governor_docket.mjs +0 -2
  96. package/tests/governor_matter_acts.mjs +6 -8
  97. package/tests/hall_city.mjs +1 -1
  98. package/tests/hall_matter_card.mjs +2 -2
  99. package/tests/hall_oversight_world.mjs +16 -12
  100. package/tests/hall_street_desk.mjs +4 -3
  101. package/tests/hall_street_inside.mjs +1 -1
  102. package/tests/helpers.mjs +34 -0
  103. package/tests/howto_state.mjs +33 -56
  104. package/tests/howto_state_db.mjs +68 -0
  105. package/tests/idea_credit_streams_db.mjs +11 -3
  106. package/tests/integration_parked_ratchet.mjs +7 -1
  107. package/tests/nav_permission_atoms.mjs +1 -1
  108. package/tests/page_notes_db.mjs +12 -8
  109. package/tests/page_tweak_no_rearm.mjs +50 -0
  110. package/tests/publish_manifest.mjs +64 -0
  111. package/tests/search_isolation.mjs +5 -103
  112. package/tests/search_isolation_db.mjs +140 -0
  113. package/tests/session_earnings_mirror_db.mjs +2 -0
  114. package/tests/workflow_exec_paths.mjs +9 -11
  115. package/modules/lifecycle/routes/gate-approvals.js +0 -299
  116. package/scripts/bongos/ci-grade.js +0 -82
  117. package/scripts/bongos/gate-review.js +0 -330
  118. package/scripts/gds/ci-grade.js +0 -7
  119. package/scripts/gds/gate-review.js +0 -7
  120. package/tests/gate_approvals.mjs +0 -611
  121. package/tests/gate_review.mjs +0 -152
@@ -1,5 +1,5 @@
1
1
  {
2
- "_": "Gate — the access-request queue behind requireGovernmentPage. Its confirm modal once had a second user, and the two had guessed two different z-indexes for it. Written with the re-skin (task 1003307) so this page is MEASURED at three widths in both modes rather than looked at once.",
2
+ "_": "Autobongos — the owner's runner panel behind requireGovernmentPage, still served at /gate (task 1004859 removed the held-PR list). Measured at three widths in both modes rather than looked at once.",
3
3
  "page": "/builders/gate",
4
4
  "surface": "hall-ui",
5
5
  "stub": {
@@ -13,9 +13,9 @@
13
13
  "/api/(gds|bongos)/goals",
14
14
  "/api/(gds|bongos)/inbox/",
15
15
  "/api/(gds|bongos)/versions",
16
- "/api/(gds|bongos)/gate-approvals",
17
16
  "/api/(gds|bongos)/builders",
18
- "/api/(gds|bongos)/access-requests"
17
+ "/api/(gds|bongos)/access-requests",
18
+ "/api/(gds|bongos)/autonomy/"
19
19
  ],
20
20
  "ignoreConsole": [
21
21
  "/api/(gds|bongos)/",
@@ -46,23 +46,6 @@
46
46
  },
47
47
  "out": {
48
48
  "auth": false
49
- },
50
- "approve": {
51
- "auth": true,
52
- "actions": [
53
- [
54
- "wait",
55
- 700
56
- ],
57
- [
58
- "clickIfVisible",
59
- "[data-act=approve]"
60
- ],
61
- [
62
- "wait",
63
- 250
64
- ]
65
- ]
66
49
  }
67
50
  },
68
51
  "reducedMotion": {
@@ -73,6 +56,5 @@
73
56
  600
74
57
  ]
75
58
  ]
76
- },
77
- "_states": "task 1003469: `approve` opens the confirm modal on the first held PR. clickIfVisible, because the kit's own stub carries no /gate-approvals fixture and renders the empty list — the modal is measured against the harness."
59
+ }
78
60
  }
@@ -139,7 +139,7 @@
139
139
 
140
140
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
141
141
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
142
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
142
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
143
143
  <script src="/builders/palette.js" defer></script>
144
144
 
145
145
  <script src="/builders/idea-objects.js?v=2026-09-27-split"></script>
@@ -236,7 +236,7 @@
236
236
 
237
237
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
238
238
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
239
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
239
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
240
240
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
241
241
  <script src="/builders/palette.js" defer></script>
242
242
  <script src="/builders/dom-utils.js?v=2026-06-14-domutils"></script>
@@ -134,7 +134,7 @@
134
134
 
135
135
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
136
136
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
137
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
137
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
138
138
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
139
139
  <script src="/builders/palette.js" defer></script>
140
140
  <script src="/builders/dom-utils.js?v=2026-06-16-gate"></script>
@@ -52,7 +52,7 @@
52
52
 
53
53
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
54
54
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
55
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
55
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
56
56
  <script src="/builders/palette.js" defer></script>
57
57
  <script src="/builders/dom-utils.js?v=2026-06-23-contrib" defer></script>
58
58
  <!-- task-detail.js still owns the #/idea/N and #/blocker/N overlay, so a ref
@@ -227,7 +227,7 @@
227
227
 
228
228
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
229
229
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
230
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
230
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
231
231
  <script src="/builders/palette.js" defer></script>
232
232
  <script src="/builders/dom-utils.js?v=2026-06-23-contrib"></script>
233
233
  <!-- task 1004727: the ONE karma vote control every task/idea list renders -->
@@ -119,7 +119,7 @@
119
119
  <script src="/builders/welcome-boot.js?v=2026-10-23-city1" defer></script>
120
120
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab" defer></script>
121
121
  <script src="/builders/craft-mode.js?v=2026-10-09-living3" defer></script>
122
- <script src="/builders/shell.js?v=2026-10-25-logo1" defer></script>
122
+ <script src="/builders/shell.js?v=2026-10-25-autobongos" defer></script>
123
123
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
124
124
  <script src="/builders/palette.js" defer></script>
125
125
  <!-- task 2166: the shared component kit (window.OTBKit) — pager/ledger/rail.
@@ -127,7 +127,7 @@
127
127
 
128
128
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
129
129
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
130
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
130
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
131
131
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
132
132
  <script src="/builders/palette.js" defer></script>
133
133
  <script src="/builders/dom-utils.js?v=2026-06-23-contrib"></script>
@@ -61,7 +61,7 @@
61
61
 
62
62
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
63
63
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
64
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
64
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
65
65
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
66
66
  <script src="/builders/palette.js" defer></script>
67
67
  <script src="/builders/dom-utils.js?v=2026-06-14-domutils"></script>
@@ -112,7 +112,7 @@
112
112
 
113
113
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
114
114
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
115
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
115
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
116
116
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
117
117
  <script src="/builders/palette.js" defer></script>
118
118
  <!-- the shared markdown reader (window.OTBMdReader) — primer.js renders through
@@ -207,7 +207,7 @@
207
207
  chrome exists before the page script runs. -->
208
208
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
209
209
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
210
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
210
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
211
211
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
212
212
  <script src="/builders/palette.js" defer></script>
213
213
  <!-- shared frontend toolkit (window.OTB) — loaded before profile.js, which pulls from it. -->
@@ -71,7 +71,7 @@
71
71
 
72
72
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
73
73
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
74
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
74
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
75
75
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
76
76
  <script src="/builders/palette.js" defer></script>
77
77
  <script src="/builders/dom-utils.js?v=2026-06-16-gate"></script>
@@ -73,7 +73,7 @@
73
73
  chrome exists before the page script runs. -->
74
74
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
75
75
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
76
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
76
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
77
77
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
78
78
  <script src="/builders/palette.js" defer></script>
79
79
  <!-- shared frontend toolkit (window.OTB) — loaded before ranks.js, which pulls from it. -->
@@ -43,7 +43,7 @@
43
43
 
44
44
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
45
45
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
46
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
46
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
47
47
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
48
48
  <script src="/builders/palette.js" defer></script>
49
49
  <script src="/builders/dom-utils.js?v=2026-06-14-domutils"></script>
@@ -55,7 +55,7 @@
55
55
  chrome exists before the page script runs. -->
56
56
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
57
57
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
58
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
58
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
59
59
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
60
60
  <script src="/builders/palette.js" defer></script>
61
61
  <!-- shared frontend toolkit (window.OTB — rank labels, number formats) + the
@@ -111,7 +111,7 @@
111
111
  chrome exists before the page script runs. -->
112
112
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
113
113
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
114
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
114
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
115
115
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
116
116
  <script src="/builders/palette.js" defer></script>
117
117
  <!-- shared frontend toolkit (window.OTB) — loaded BEFORE sessions.js so it can pull from it. -->
@@ -472,7 +472,7 @@
472
472
  chrome exists before the page scripts run. -->
473
473
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
474
474
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
475
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
475
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
476
476
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
477
477
  <script src="/builders/palette.js" defer></script>
478
478
  <!-- shared frontend toolkit (window.OTB) — loaded before consuming IIFEs. -->
@@ -371,7 +371,7 @@
371
371
  // Metic+ oversight could not honestly hold it. Everything below IS a rank
372
372
  // surface, so this group's gate and audience are unchanged.
373
373
  { id: 'watch', label: 'Watch', icon: 'watch', href: '/watch', gate: 'government', position: true },
374
- { id: 'gate', label: 'Gate', icon: 'gate', href: '/gate', gate: 'government', position: true },
374
+ { id: 'gate', label: 'Autobongos', icon: 'gate', href: '/gate', gate: 'government', position: true }, // task 1004859: the runner panel; URL kept for bookmarks
375
375
  { id: 'sessions', label: 'Sessions', icon: 'sessions', href: '/sessions', gate: 'government', position: true },
376
376
  // The project's own fundamentals (task 1003280, goal 1000072). Mirrors the
377
377
  // server's requireGovernmentPage floor; cosmetic only, as every item here is.
@@ -39,8 +39,8 @@
39
39
  // filed it — an amendment with its revised words, a who-decides change with
40
40
  // its rows, a building's matter with its revised detail. The constitution's own
41
41
  // fields are changed in the Board Room's amendment form, not here.
42
- // * Release. An override and a PR held at the gate are released from the card
43
- // through their own decide routes. A newer CORE keeps its check-then-take:
42
+ // * Release. An override is released from the card through its own decide
43
+ // route (the PR-at-the-gate release went with its route, task 1004859). A newer CORE keeps its check-then-take:
44
44
  // the card draws the Release desk's core row (check, then take it), the same
45
45
  // as the floor desk; only a hall without that row links to the pin's page.
46
46
  //
@@ -447,11 +447,9 @@
447
447
  cv.actions = [act('fine', 'fine by me', 'primary'), act('refuse', 'object', 'quiet')];
448
448
  return cv;
449
449
  }
450
- if (m.source === 'override_requests' || m.source === 'gate_approvals') {
450
+ if (m.source === 'override_requests') {
451
451
  if (!mine) { cv.readOnly = true; cv.result = 'Someone who may decide it will.'; return cv; }
452
- cv.result = m.source === 'gate_approvals'
453
- ? 'It is held at the gate. Releasing it lets it merge and go live. The call is yours.'
454
- : 'It failed a check or a grade. Releasing it lets it go live anyway. The call is yours.';
452
+ cv.result = 'It failed a check or a grade. Releasing it lets it go live anyway. The call is yours.';
455
453
  cv.actions = [act('release', 'release', 'primary'), act('hold', 'hold', 'quiet')];
456
454
  return cv;
457
455
  }
@@ -712,7 +710,6 @@
712
710
  },
713
711
  criteria_uat: { force: function (id, inp, who) { return { title: 'Sign off: ' + who, action: { type: 'satisfy_criterion', criterion_id: Number(id) } }; } },
714
712
  override_requests: { release: function (id, inp, who) { return { title: 'Release past its check: ' + who, action: { type: 'approve_override', request_id: Number(id) } }; } },
715
- gate_approvals: { release: function (id, inp, who) { return { title: 'Release from the gate: ' + who, action: { type: 'approve_gate', pr: Number(id) } }; } },
716
713
  builder_budget: {
717
714
  budget: function (id, inp, who) { return inp.option ? { title: who + ': ' + str(inp.label || inp.option), action: { type: 'set_budget', builder_id: Number(id), monthly_usd: inp.option === 'none' ? null : Number(inp.option) } } : null; },
718
715
  },
@@ -779,7 +776,6 @@
779
776
  if (s.council && COUNCIL_ACTS[s.kind] && COUNCIL_ACTS[s.kind][key]) return councilRequest(s, key, inp);
780
777
  if (ACT_ROUTES[s.kind] && ACT_ROUTES[s.kind][key]) return ACT_ROUTES[s.kind][key](enc(s.id), inp);
781
778
  if (s.kind === 'override_requests' && key === 'release') return post('/override-requests/' + enc(s.id) + '/decide', { decision: 'approve' });
782
- if (s.kind === 'gate_approvals' && key === 'release') return post('/gate-approvals/' + enc(s.id) + '/approve', {});
783
779
  return null; // hold, abstain and the core's release (a link) record nothing here
784
780
  }
785
781
 
@@ -814,7 +810,7 @@
814
810
  if (key === 'abstain') return { toast: 'Noted. Nothing goes on the record, and it still waits for your vote until it closes.', building: null, kind: null, close: true };
815
811
  if (key === 'revise') return { toast: 'Revised. It sits again on the new wording.', building: b, kind: 'light', close: true };
816
812
  if (key === 'hold') return { toast: 'Held. It waits for you.', building: null, kind: null, close: true };
817
- if (key === 'release') return { toast: cv && cv.source === 'gate_approvals' ? 'Released from the gate. It merges and goes live.' : 'Released. It goes live.', building: b, kind: 'rise', close: true };
813
+ if (key === 'release') return { toast: 'Released. It goes live.', building: b, kind: 'rise', close: true };
818
814
  if (key === 'fine') return { toast: cv && cv.source === 'goal_join_requests' ? 'Noted. ' + who + ' joins the team.' : 'Noted. ' + who + ' is invited in.', building: b, kind: 'rise', close: false };
819
815
  if (key === 'refuse') return { toast: 'Noted. ' + who + ' is not let in.', building: b, kind: 'settle', close: false };
820
816
  if (key === 'record') {
@@ -154,12 +154,12 @@
154
154
 
155
155
  // The words a floor counts its rows in, and says when it is cleared.
156
156
  const NOUNS = Object.freeze({
157
- access_requests: 'waiting', goal_join_requests: 'asking', override_requests: 'asked', gate_approvals: 'ready',
157
+ access_requests: 'waiting', goal_join_requests: 'asking', override_requests: 'asked',
158
158
  core_update: 'update', blockers: 'waiting', board: 'open vote', idea: 'open vote',
159
159
  });
160
160
  const CLEAR = Object.freeze({
161
161
  access_requests: 'Everyone is in', goal_join_requests: 'No one is asking', override_requests: 'No overrides asked',
162
- gate_approvals: 'Everything ready is live', blockers: 'Nothing blocked on you', board: 'Every vote is in', idea: 'No ideas waiting',
162
+ blockers: 'Nothing blocked on you', board: 'Every vote is in', idea: 'No ideas waiting',
163
163
  // every other floor that holds matters says its own line too (task 1004562)
164
164
  redteam_reports: 'No reports open', removal_proposals: 'No removals asked', grade_appeals: 'No appeals open',
165
165
  module_rechecks: 'Every module checked', criteria_uat: 'Nothing waits for a tester', core_update: 'Core is up to date',
@@ -466,7 +466,7 @@
466
466
  release: {
467
467
  holds: 'Putting finished work live, and taking updates to Bongos itself.', rule: 'decide', cap: 7,
468
468
  growth: 'Room for a second gate if releases are ever split by area.', annex: 'room for a second gate',
469
- floors: [['Overrides', 'past a failed check or grade', { source: 'override_requests' }], ['Modules', 'listed modules, and their re-checks', { source: 'module_rechecks' }], ['Held back', 'work held from going live', { floor: 'release.held_back' }], ['Core update', 'a new version of Bongos', { source: 'core_update', desk: 'release.core' }], ['Live this month', 'what went live', { floor: 'release.live_month' }], ['Ready to go', 'signed off, waiting to go live', { source: 'gate_approvals' }]],
469
+ floors: [['Overrides', 'past a failed check or grade', { source: 'override_requests' }], ['Modules', 'listed modules, and their re-checks', { source: 'module_rechecks' }], ['Held back', 'work held from going live', { floor: 'release.held_back' }], ['Core update', 'a new version of Bongos', { source: 'core_update', desk: 'release.core' }], ['Live this month', 'what went live', { floor: 'release.live_month' }]],
470
470
  },
471
471
  treasury: {
472
472
  holds: 'The budget, and who gets paid for what.', rule: 'majority', cap: 7,
@@ -230,7 +230,7 @@
230
230
 
231
231
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
232
232
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
233
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
233
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
234
234
  <script src="/builders/palette.js" defer></script>
235
235
  <script src="/builders/gov-living.js?v=2026-10-09-positions1"></script>
236
236
  <script src="/builders/gov-feeds.js?v=2026-10-09-living3"></script>
@@ -190,7 +190,7 @@
190
190
 
191
191
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
192
192
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
193
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
193
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
194
194
  <script src="/builders/palette.js" defer></script>
195
195
  <script src="/builders/dom-utils.js?v=2026-06-23-contrib"></script>
196
196
  <!-- The kit, for its ONE renderer: the full-size ship-time visual figure
@@ -57,7 +57,7 @@
57
57
  time so the chrome exists before the deferred page scripts execute. -->
58
58
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
59
59
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
60
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
60
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
61
61
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
62
62
  <script src="/builders/palette.js" defer></script>
63
63
  <!-- shared frontend toolkit (window.OTB) — loaded FIRST so task.js can pull from it. -->
@@ -140,7 +140,7 @@
140
140
 
141
141
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
142
142
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
143
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
143
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
144
144
  <script src="/builders/palette.js" defer></script>
145
145
 
146
146
  <script src="/builders/idea-objects.js?v=2026-09-27-split"></script>
@@ -144,7 +144,7 @@
144
144
 
145
145
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
146
146
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
147
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
147
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
148
148
  <script src="/builders/palette.js" defer></script>
149
149
  <script src="/builders/dom-utils.js?v=2026-06-23-contrib"></script>
150
150
  <script src="/builders/brand-holes.js?v=2026-09-29-aqfix"></script>
@@ -165,7 +165,7 @@
165
165
  chrome exists before the page script runs. -->
166
166
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
167
167
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
168
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
168
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
169
169
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
170
170
  <script src="/builders/palette.js" defer></script>
171
171
  <!-- shared frontend toolkit (window.OTB) — loaded before watch.js, which pulls from it. -->
@@ -173,7 +173,7 @@
173
173
  time so the chrome exists before the deferred page scripts execute. -->
174
174
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
175
175
  <script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
176
- <script src="/builders/shell.js?v=2026-10-25-logo1"></script>
176
+ <script src="/builders/shell.js?v=2026-10-25-autobongos"></script>
177
177
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
178
178
  <script src="/builders/palette.js" defer></script>
179
179
  <!-- shared frontend toolkit (window.OTB) — loaded FIRST so work.js can pull from it. -->
@@ -6,7 +6,6 @@
6
6
  // commits, through the SAME function the direct route calls:
7
7
  // review satisfy_criterion → satisfyByOverride (POST /done-when/:id/satisfy)
8
8
  // release approve_override → db.decideOverrideRequest (POST /override-requests/:id/decide)
9
- // release approve_gate → approveGatePr (POST /gate-approvals/:pr/approve)
10
9
  // The government module only checks the act's shape and calls in through the
11
10
  // 'governor.matterAct' contribution point (a module never requires a sibling).
12
11
  // Each act returns { done, reason? }: a refusal the route would give (already
@@ -23,7 +22,6 @@ const why = (area, ctx) => `A passed ${area} matter (matter ${ctx && ctx.matterI
23
22
  // functions are needed here.
24
23
  const routes = {
25
24
  doneWhen: () => require('./routes/done-when'),
26
- gate: () => require('./routes/gate-approvals'),
27
25
  };
28
26
 
29
27
  const ACTS = Object.freeze({
@@ -47,10 +45,6 @@ const ACTS = Object.freeze({
47
45
  throw err;
48
46
  }
49
47
  },
50
- approve_gate: async (action, ctx) => {
51
- const out = await routes.gate().approveGatePr({ number: action.pr, login: `council, matter ${ctx && ctx.matterId}` });
52
- return out.ok ? { done: true } : { done: false, reason: out.code };
53
- },
54
48
  }),
55
49
  });
56
50
 
@@ -19,7 +19,6 @@
19
19
  "goals",
20
20
  "goal-move",
21
21
  "dependencies",
22
- "gate-approvals",
23
22
  "analytics",
24
23
  "lifecycle",
25
24
  "help-requests",
package/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@bongos/core",
3
- "version": "1.21.177",
3
+ "version": "1.21.178",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bongos/core",
9
- "version": "1.21.177",
9
+ "version": "1.21.178",
10
10
  "license": "AGPL-3.0-or-later",
11
11
  "dependencies": {
12
12
  "express": "^4.21.2",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bongos/core",
3
- "version": "1.21.177",
3
+ "version": "1.21.178",
4
4
  "description": "Cloud Bongos — the AI-first build platform core (GDS + platform surfaces + module system), installed as a versioned dependency (ADR 0108).",
5
5
  "license": "AGPL-3.0-or-later",
6
6
  "main": "src/platform-server.js",
@@ -10322,5 +10322,27 @@
10322
10322
  "id": "1004856",
10323
10323
  "text": "Removed 30 old scripts that each did one job once (mostly creating batches of tasks) and were never used again — about 6,500 lines less to read and maintain. Nothing that runs today used them."
10324
10324
  }
10325
+ ],
10326
+ "1.21.178": [
10327
+ {
10328
+ "id": "1004888",
10329
+ "text": "A test now guarantees the 2.4 MB of hall sample data from this instance can never sneak back into the core every hosted project installs, while the hall preview tool itself keeps shipping."
10330
+ },
10331
+ {
10332
+ "id": "1004889",
10333
+ "text": "An automatic security check on search results works again, and it now really catches a private note leaking to the wrong person instead of passing by luck."
10334
+ },
10335
+ {
10336
+ "id": "1004886",
10337
+ "text": "Core releases can no longer be labelled as containing code that never actually went out."
10338
+ },
10339
+ {
10340
+ "id": "1004859",
10341
+ "text": "The Gate page is now called Autobongos. It keeps the runner controls and drops the list of held pull requests, which was always empty because the check it waited on never ran. Old links to /gate still work. The two permissions"
10342
+ },
10343
+ {
10344
+ "id": "1004863",
10345
+ "text": "Eight database tests that had quietly stopped working are repaired and now run on every change, including the one that proves an idea's author is never paid twice and the one that proves search never shows someone a page above"
10346
+ }
10325
10347
  ]
10326
10348
  }
@@ -8,7 +8,7 @@
8
8
  // • core<->host fitness-boundary overlaps — repo dirs that shadow core's reserved
9
9
  // src/bongos or modules/ namespaces the fitness gate scans (ADR 0062 §1).
10
10
  // • protected-path landings — incoming files that fall on the trust-boundary hard
11
- // floor (ADR 0043, via gate-review.js's canonical matchesHardFloor).
11
+ // floor (ADR 0043, via hard-floor.js's canonical matchesHardFloor).
12
12
  // • CI collisions — the repo's workflows vs core's expected unit/secret-scan/
13
13
  // gate-review checks.
14
14
  // • IGNORED incoming files — a pre-existing .gitignore rule that would swallow what
@@ -26,7 +26,7 @@ const nodeFs = require('node:fs');
26
26
  const nodePath = require('node:path');
27
27
  const { execFileSync: nodeExecFileSync } = require('node:child_process');
28
28
  const { filenameViolation, INSTANCE_NS } = require('./migration-namespace');
29
- const { matchesHardFloor } = require('./gate-review');
29
+ const { matchesHardFloor } = require('./hard-floor');
30
30
 
31
31
  const SEV = { BLOCK: 'blocking', WARN: 'warning', INFO: 'info' };
32
32
  const CORE_EXPECTED_CHECKS = ['unit', 'secret-scan', 'gate-review']; // the merge-gate checks core adds
@@ -66,7 +66,7 @@ function checkFitnessBoundary({ topLevelDirs = [], hasSrcBongos = false } = {})
66
66
  }
67
67
 
68
68
  // PURE — incoming paths → protected-path findings (ADR 0043). Which files adopt writes
69
- // land on the trust-boundary hard floor (via gate-review's canonical matcher)?
69
+ // land on the trust-boundary hard floor (via hard-floor.js's canonical matcher)?
70
70
  function checkProtectedPaths(incoming = INCOMING_PATHS) {
71
71
  const hits = incoming.filter((p) => matchesHardFloor(p));
72
72
  if (!hits.length) return [{ category: 'protected-paths', severity: SEV.INFO, message: 'no incoming files land on protected paths.' }];
@@ -165,14 +165,12 @@ ALLOWLIST=(
165
165
  'tests/setup_smoke.mjs'
166
166
 
167
167
  # Test DATA that pins a real contract (task 1002640) — identity in an
168
- # assertion IS the contract, not a mis-attribution: owner approval RECORDS
169
- # the Archon's login (gate_approvals), packaging/provisioning tests
168
+ # assertion IS the contract, not a mis-attribution: packaging/provisioning tests
170
169
  # exercise the real repo owner + the mirror-redaction floor. Listed per file
171
170
  # (never a blanket tests/ exclusion) so a NEW test file is still scanned.
172
171
  'tests/provision.mjs'
173
172
  'tests/package_core.mjs'
174
173
  'tests/init.mjs'
175
- 'tests/gate_approvals.mjs'
176
174
  'tests/publish_reconciler.mjs'
177
175
  'tests/dev_lib.mjs'
178
176
  'tests/ship_card.mjs'