@bongos/core 1.20.25 → 1.20.27

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 (41) hide show
  1. package/.bongos-core.json +92 -37
  2. package/clients/bongos-client/README.md +1 -1
  3. package/clients/bongos-client/bongos-client.global.js +4 -0
  4. package/clients/bongos-client/index.cjs +4 -0
  5. package/clients/bongos-client/index.d.ts +7 -1
  6. package/clients/bongos-client/index.mjs +4 -0
  7. package/docs/adr/0353-a-hub-invite-is-a-notice-of-the-projects-own-invite.md +1 -1
  8. package/docs/adr/0355-a-soft-limit-is-a-rule-with-a-reason-and-nobody-enforces-it.md +30 -0
  9. package/docs/adr/README.md +1 -0
  10. package/docs/api/openapi.json +137 -3
  11. package/docs/api-reference.md +4 -2
  12. package/docs/copy-inventory.md +34 -34
  13. package/docs/copy-registry.json +38 -38
  14. package/docs/module-api-changelog.md +4 -0
  15. package/docs/page-readings.json +75 -73
  16. package/modules/discord/board-broadcast.js +1 -0
  17. package/modules/government/board.js +261 -2
  18. package/modules/government/charter.js +232 -0
  19. package/modules/government/db.js +42 -1
  20. package/modules/government/migrations/government_020_genesis_stage_subject.sql +55 -0
  21. package/modules/government/routes/government.js +82 -0
  22. package/modules/hall-ui/public/board-room.js +5 -0
  23. package/modules/hall-ui/public/government.js +11 -0
  24. package/modules/platform-identity/migrations/platform_identity_028_purge_pre_notice_invites.sql +65 -0
  25. package/modules/provisioning/planet-physics.js +154 -0
  26. package/modules/provisioning/provisioning.js +29 -9
  27. package/modules/provisioning/routes/body-validators.js +25 -7
  28. package/modules/provisioning/routes/provisioning.js +8 -3
  29. package/modules/provisioning/screening.js +62 -0
  30. package/modules/provisioning/soft-limits.js +146 -0
  31. package/package-lock.json +2 -2
  32. package/package.json +1 -1
  33. package/release-notes.json +20 -0
  34. package/scripts/gds/run-unit-tests.js +4 -0
  35. package/src/bongos/route-rank-check.js +6 -0
  36. package/src/module-api.js +1 -1
  37. package/tests/government_board_genesis_stage.mjs +305 -0
  38. package/tests/government_charter_forms.mjs +283 -0
  39. package/tests/government_seed.mjs +1 -0
  40. package/tests/pending_invite_purge_db.mjs +129 -0
  41. package/tests/provisioning_planet_physics.mjs +377 -0
@@ -5,7 +5,7 @@
5
5
  "adr": "0341 D3",
6
6
  "reread": "node scripts/gds/page-reader.js --stale",
7
7
  "how": ["Generated by node scripts/gds/page-reader.js (BV2.TW04, task 1004315; ADR 0341 D3). Do not hand-edit.","One entry per page of docs/page-inventory.json. Lines are in page order: the default state first, and a line only another state shows sits where that state shows it, with its state named.","placement: placed = a docs/copy-registry.json row renders it (file, line, string_id); shared = shell text every page of the surface carries (top bar, sidebar, footer), with its row when the registry has one; unplaced = the registry cannot place it (a rewrite becomes an engineer task, ADR 0341 D4).","text keeps {…} where the registry row has a hole, or where a value the page read from its API was filled in. A string that is only such data is counted under omitted.data, not listed.","reading_hash is over the non-shared lines (key, section, text); files_hash is over the page's inventory files. --check compares files_hash only and never opens a browser.","Rendered through the hall-preview harness (hall) and the ui-design kit stub (landing, status), at 1280x800 with the clock pinned, so a reading is the fixture world's page."],
8
- "counts": {"pages":39,"lines":3795,"placed":1277,"shared":254,"unplaced":2264,"omitted_data":2054},
8
+ "counts": {"pages":39,"lines":3797,"placed":1278,"shared":254,"unplaced":2265,"omitted_data":2054},
9
9
  "pages": [
10
10
  {
11
11
  "id": "builders:atlas",
@@ -67,7 +67,7 @@
67
67
  "surface": "builders",
68
68
  "title": "Board Room",
69
69
  "states_read": ["room","out","sitting-meta","objection-form"],
70
- "files_hash": "7e203a1e5dfd2520",
70
+ "files_hash": "c1978638f2ef9558",
71
71
  "reading_hash": "202a0cbb6bc54aac",
72
72
  "counts": {"lines":56,"placed":26,"shared":5,"unplaced":25},
73
73
  "omitted": {"data":9},
@@ -83,32 +83,32 @@
83
83
  {"key":"L0008","section":"{…} Full Idea","text":"Full Idea","placement":"unplaced","occurrences":3},
84
84
  {"key":"L0009","section":"{…} Full Idea","text":"open","placement":"placed","file":"modules/hall-ui/public/approval-queue.js","line":163,"string_id":"9a803563c948"},
85
85
  {"key":"L0010","section":"{…} Full Idea","text":"closes in 73m","placement":"unplaced"},
86
- {"key":"L0011","section":"{…} Full Idea","text":"Vote yes","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":363,"string_id":"b2937e14ee9b"},
86
+ {"key":"L0011","section":"{…} Full Idea","text":"Vote yes","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":368,"string_id":"b2937e14ee9b"},
87
87
  {"key":"L0012","section":"{…} Full Idea","text":"Object…","placement":"unplaced"},
88
- {"key":"L0013","section":"{…} Full Idea","text":"This sends the idea back to its author. Say why, and which section.","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":363,"string_id":"69e8beced2ff","state":"objection-form"},
89
- {"key":"L0014","section":"{…} Full Idea","text":"Why — the reason the author will act on","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":363,"string_id":"fbd8a815b808","attr":"placeholder","state":"objection-form"},
90
- {"key":"L0015","section":"{…} Full Idea","text":"Its author gave no scope recommendation.","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":295,"string_id":"a21788f84e29"},
88
+ {"key":"L0013","section":"{…} Full Idea","text":"This sends the idea back to its author. Say why, and which section.","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":368,"string_id":"69e8beced2ff","state":"objection-form"},
89
+ {"key":"L0014","section":"{…} Full Idea","text":"Why — the reason the author will act on","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":368,"string_id":"fbd8a815b808","attr":"placeholder","state":"objection-form"},
90
+ {"key":"L0015","section":"{…} Full Idea","text":"Its author gave no scope recommendation.","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":300,"string_id":"a21788f84e29"},
91
91
  {"key":"L0016","section":"{…} Full Idea","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9","occurrences":2},
92
92
  {"key":"L0017","section":"{…} Full Idea","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","occurrences":4},
93
93
  {"key":"L0018","section":"{…} Full Idea","text":"What does the Big Picture look like","placement":"unplaced","occurrences":2},
94
94
  {"key":"L0019","section":"{…} Full Idea","text":"Why did you have the Idea","placement":"unplaced","occurrences":2},
95
95
  {"key":"L0020","section":"{…} Full Idea","text":"Why does the Idea Matter","placement":"unplaced","occurrences":2},
96
96
  {"key":"L0021","section":"{…} Full Idea","text":"{…} project{…}","placement":"placed","file":"modules/hall-ui/public/fleet.js","line":39,"string_id":"771bef3d31b5","occurrences":3},
97
- {"key":"L0022","section":"{…} Full Idea","text":"Cast objection","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":363,"string_id":"bdca1f219e6f","state":"objection-form"},
98
- {"key":"L0023","section":"{…} Full Idea","text":"{…} · who votes, and how it {…}","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":444,"string_id":"d73256fbc395","occurrences":3},
97
+ {"key":"L0022","section":"{…} Full Idea","text":"Cast objection","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":368,"string_id":"bdca1f219e6f","state":"objection-form"},
98
+ {"key":"L0023","section":"{…} Full Idea","text":"{…} · who votes, and how it {…}","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":449,"string_id":"d73256fbc395","occurrences":3},
99
99
  {"key":"L0024","section":"{…} Full Idea","text":"Every {…}","placement":"unplaced","state":"sitting-meta"},
100
100
  {"key":"L0025","section":"{…} Full Idea","text":"{…} or {…}","placement":"unplaced","state":"sitting-meta"},
101
101
  {"key":"L0026","section":"{…} Full Idea","text":"may vote on this.","placement":"unplaced","state":"sitting-meta"},
102
102
  {"key":"L0027","section":"{…} Full Idea","text":"The sitting runs 1 day, closing early once every member has voted.","placement":"unplaced","state":"sitting-meta"},
103
- {"key":"L0028","section":"{…} Full Idea","text":"It cleared the completeness grade at {…}/100.","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":326,"string_id":"bd8d04eb265c","state":"sitting-meta"},
103
+ {"key":"L0028","section":"{…} Full Idea","text":"It cleared the completeness grade at {…}/100.","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":331,"string_id":"bd8d04eb265c","state":"sitting-meta"},
104
104
  {"key":"L0029","section":"{…} and {…}","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","occurrences":4},
105
105
  {"key":"L0030","section":"{…} and {…}","text":"Full Idea","placement":"unplaced"},
106
106
  {"key":"L0031","section":"{…} and {…}","text":"open","placement":"placed","file":"modules/hall-ui/public/approval-queue.js","line":163,"string_id":"9a803563c948"},
107
107
  {"key":"L0032","section":"{…} and {…}","text":"no clock","placement":"placed","file":"modules/hall-ui/public/government.js","line":607,"string_id":"b9f2e0d43c94"},
108
- {"key":"L0033","section":"{…} and {…}","text":"Your own idea. You may vote, but it can’t be decided by your vote alone, and a vote on your own idea earns no karma.","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":361,"string_id":"c0a01a95e97e"},
109
- {"key":"L0034","section":"{…} and {…}","text":"Vote yes","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":363,"string_id":"b2937e14ee9b"},
108
+ {"key":"L0033","section":"{…} and {…}","text":"Your own idea. You may vote, but it can’t be decided by your vote alone, and a vote on your own idea earns no karma.","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":366,"string_id":"c0a01a95e97e"},
109
+ {"key":"L0034","section":"{…} and {…}","text":"Vote yes","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":368,"string_id":"b2937e14ee9b"},
110
110
  {"key":"L0035","section":"{…} and {…}","text":"Object…","placement":"unplaced"},
111
- {"key":"L0036","section":"{…} and {…}","text":"Its author recommends this becomes","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":294,"string_id":"680491549e47"},
111
+ {"key":"L0036","section":"{…} and {…}","text":"Its author recommends this becomes","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":299,"string_id":"680491549e47"},
112
112
  {"key":"L0037","section":"{…} and {…}","text":"a {…} inside an existing goal","placement":"unplaced"},
113
113
  {"key":"L0038","section":"{…} and {…}","text":". The board decides.","placement":"unplaced"},
114
114
  {"key":"L0039","section":"{…} and {…}","text":"What made you have the idea","placement":"unplaced"},
@@ -116,16 +116,16 @@
116
116
  {"key":"L0041","section":"{…} and {…}","text":"What should an {…} or artist know prior to building","placement":"unplaced"},
117
117
  {"key":"L0042","section":"{…} and {…}","text":"{…} project{…}","placement":"placed","file":"modules/hall-ui/public/fleet.js","line":39,"string_id":"771bef3d31b5","occurrences":2},
118
118
  {"key":"L0043","section":"{…} and {…}","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9","occurrences":2},
119
- {"key":"L0044","section":"{…} and {…}","text":"{…} · who votes, and how it {…}","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":444,"string_id":"d73256fbc395"},
119
+ {"key":"L0044","section":"{…} and {…}","text":"{…} · who votes, and how it {…}","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":449,"string_id":"d73256fbc395"},
120
120
  {"key":"L0045","section":"Constitutional amendment amendment","text":"Constitutional amendment","placement":"unplaced"},
121
121
  {"key":"L0046","section":"Constitutional amendment amendment","text":"amendment","placement":"unplaced"},
122
122
  {"key":"L0047","section":"Constitutional amendment amendment","text":"open","placement":"placed","file":"modules/hall-ui/public/approval-queue.js","line":163,"string_id":"9a803563c948"},
123
123
  {"key":"L0048","section":"Constitutional amendment amendment","text":"closes in 15m","placement":"unplaced"},
124
124
  {"key":"L0049","section":"Constitutional amendment amendment","text":"Proposes","placement":"unplaced"},
125
125
  {"key":"L0050","section":"Constitutional amendment amendment","text":"{\"pass_rule\":\"{…}\",\"window_minutes\":2880}","placement":"unplaced"},
126
- {"key":"L0051","section":"Constitutional amendment amendment","text":"Vote yes","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":363,"string_id":"b2937e14ee9b"},
126
+ {"key":"L0051","section":"Constitutional amendment amendment","text":"Vote yes","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":368,"string_id":"b2937e14ee9b"},
127
127
  {"key":"L0052","section":"Constitutional amendment amendment","text":"Object…","placement":"unplaced"},
128
- {"key":"L0053","section":"Constitutional amendment amendment","text":"{…} · who votes, and how it {…}","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":444,"string_id":"d73256fbc395"},
128
+ {"key":"L0053","section":"Constitutional amendment amendment","text":"{…} · who votes, and how it {…}","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":449,"string_id":"d73256fbc395"},
129
129
  {"key":"L0054","section":"Constitutional amendment amendment","text":"Closed sittings","placement":"unplaced"},
130
130
  {"key":"L0055","section":"{…} Full Idea","text":"passed","placement":"placed","file":"modules/hall-ui/public/government.js","line":633,"string_id":"da5368d10f85"},
131
131
  {"key":"L0056","section":"footer","text":"Sign out","placement":"shared","file":"modules/hall-ui/public/shell.js","line":464,"string_id":"1883ad7f07fc"}
@@ -1156,9 +1156,9 @@
1156
1156
  "surface": "builders",
1157
1157
  "title": "Government",
1158
1158
  "states_read": ["constitution","out","permissions","board","constitution-tab"],
1159
- "files_hash": "90d5bd092b4cead7",
1160
- "reading_hash": "b2d676121da4d753",
1161
- "counts": {"lines":69,"placed":23,"shared":5,"unplaced":41},
1159
+ "files_hash": "5181c9903bdea83f",
1160
+ "reading_hash": "f7f7466cabdf5569",
1161
+ "counts": {"lines":71,"placed":24,"shared":5,"unplaced":42},
1162
1162
  "omitted": {"data":10},
1163
1163
  "notes": ["board: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood"],
1164
1164
  "lines": [
@@ -1167,11 +1167,11 @@
1167
1167
  {"key":"L0003","section":"top bar","text":"Jump to…","placement":"shared","file":"modules/hall-ui/public/shell.js","line":487,"string_id":"eba610d25523"},
1168
1168
  {"key":"L0004","section":"top bar","text":"Ctrl K","placement":"shared"},
1169
1169
  {"key":"L0005","section":"Government","text":"Government","placement":"unplaced"},
1170
- {"key":"L0006","section":"Government","text":"How this project is governed.","placement":"placed","file":"modules/hall-ui/public/government.js","line":920,"string_id":"b536897de6a3"},
1170
+ {"key":"L0006","section":"Government","text":"How this project is governed.","placement":"placed","file":"modules/hall-ui/public/government.js","line":931,"string_id":"b536897de6a3"},
1171
1171
  {"key":"L0007","section":"Government","text":"Permissions","placement":"unplaced"},
1172
1172
  {"key":"L0008","section":"Government","text":"Constitution","placement":"unplaced"},
1173
- {"key":"L0009","section":"{…}s only","text":"{…}s only","placement":"placed","file":"modules/hall-ui/public/government.js","line":896,"string_id":"1e275ee0299c","state":"permissions"},
1174
- {"key":"L0010","section":"{…}s only","text":"Permissions is the Archon administration surface. The Constitution and the Board Room are yours to read.","placement":"placed","file":"modules/hall-ui/public/government.js","line":896,"string_id":"e1e10dc5e357","state":"permissions"},
1173
+ {"key":"L0009","section":"{…}s only","text":"{…}s only","placement":"placed","file":"modules/hall-ui/public/government.js","line":907,"string_id":"1e275ee0299c","state":"permissions"},
1174
+ {"key":"L0010","section":"{…}s only","text":"Permissions is the Archon administration surface. The Constitution and the Board Room are yours to read.","placement":"placed","file":"modules/hall-ui/public/government.js","line":907,"string_id":"e1e10dc5e357","state":"permissions"},
1175
1175
  {"key":"L0011","section":"footer","text":"Sign out","placement":"shared","file":"modules/hall-ui/public/shell.js","line":464,"string_id":"1883ad7f07fc","state":"permissions","occurrences":2},
1176
1176
  {"key":"L0012","section":"Constitution","text":"Constitution","placement":"unplaced"},
1177
1177
  {"key":"L0013","section":"Constitution","text":"Three dials, all settings rather than code:","placement":"placed","file":"modules/hall-ui/public/government.html","line":55,"string_id":"2ad5823d2cd7"},
@@ -1179,58 +1179,60 @@
1179
1179
  {"key":"L0015","section":"Constitution","text":"what counts as passing","placement":"placed","file":"modules/hall-ui/public/government.html","line":55,"string_id":"17705daf7b85"},
1180
1180
  {"key":"L0016","section":"Constitution","text":", and","placement":"placed","file":"modules/hall-ui/public/government.html","line":55,"string_id":"37964829d693"},
1181
1181
  {"key":"L0017","section":"Constitution","text":"how long a vote stays open","placement":"placed","file":"modules/hall-ui/public/government.html","line":55,"string_id":"7d5cbe3d81e4"},
1182
- {"key":"L0018","section":"Constitution","text":"Who sits on the board","placement":"unplaced"},
1183
- {"key":"L0019","section":"Constitution","text":"Every {…} builder at","placement":"unplaced"},
1184
- {"key":"L0020","section":"Constitution","text":"or above","placement":"placed","file":"modules/hall-ui/public/government.js","line":564,"string_id":"c38db02adb61"},
1185
- {"key":"L0021","section":"Constitution","text":"sits on the board — that is","placement":"unplaced"},
1186
- {"key":"L0022","section":"Constitution","text":"and","placement":"placed","file":"modules/hall-ui/public/deploy.js","line":375,"string_id":"084748fd85b4"},
1187
- {"key":"L0023","section":"Constitution","text":". Membership follows the rank, live.","placement":"unplaced"},
1188
- {"key":"L0024","section":"Constitution","text":"What counts as passing","placement":"unplaced"},
1189
- {"key":"L0025","section":"Constitution","text":"Items pass by","placement":"unplaced"},
1190
- {"key":"L0026","section":"Constitution","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","occurrences":2},
1191
- {"key":"L0027","section":"Constitution","text":"How long a sitting runs","placement":"unplaced"},
1192
- {"key":"L0028","section":"Constitution","text":"A sitting runs","placement":"unplaced"},
1193
- {"key":"L0029","section":"Constitution","text":"1 day","placement":"unplaced"},
1194
- {"key":"L0030","section":"Constitution","text":", closing early the moment every member has voted. An unvoted window nulls that member's vote — absence never blocks.","placement":"unplaced"},
1195
- {"key":"L0031","section":"Constitution","text":"As configuration:","placement":"placed","file":"modules/hall-ui/public/government.js","line":829,"string_id":"5fcfdf8975cf"},
1196
- {"key":"L0032","section":"Constitution","text":"{\"membership\":\"{…}\",\"pass_rule\":\"{…}\",\"window_minutes\":1440,\"close_early_on_{…}_turnout\":true}","placement":"unplaced"},
1197
- {"key":"L0033","section":"How it has changed","text":"How it has changed","placement":"placed","file":"modules/hall-ui/public/government.js","line":839,"string_id":"fb7489e8b67c"},
1198
- {"key":"L0034","section":"How it has changed","text":"Every closed amendment sitting, ratified and returned alike, with the rule it was decided under.","placement":"placed","file":"modules/hall-ui/public/government.js","line":839,"string_id":"a97b064db76f"},
1199
- {"key":"L0035","section":"How it has changed","text":"{…} proposed","placement":"placed","file":"modules/hall-ui/public/government.js","line":695,"string_id":"154bc518bab4","occurrences":2},
1200
- {"key":"L0036","section":"How it has changed","text":"{\"membership\":\"{…}\",\"pass_rule\":\"{…}\",\"window_minutes\":1440,\"close_early_on_{…}_turnout\":true}","placement":"unplaced"},
1201
- {"key":"L0037","section":"How it has changed","text":"ratified","placement":"unplaced"},
1202
- {"key":"L0038","section":"How it has changed","text":"decided by first ratifier","placement":"unplaced"},
1203
- {"key":"L0039","section":"How it has changed","text":"{\"membership\":\"{…}\",\"pass_rule\":\"{…}\",\"window_minutes\":120,\"close_early_on_{…}_turnout\":true}","placement":"unplaced"},
1204
- {"key":"L0040","section":"How it has changed","text":"decided by {…}","placement":"unplaced"},
1205
- {"key":"L0041","section":"Charter library","text":"Charter library","placement":"placed","file":"modules/hall-ui/public/government.js","line":799,"string_id":"e6982a9ff948"},
1206
- {"key":"L0042","section":"Charter library","text":"The seven government structures, for getting a team up to speed before deciding when to flip a switch.","placement":"placed","file":"modules/hall-ui/public/government.js","line":799,"string_id":"af664a644b13"},
1207
- {"key":"L0043","section":"Charter library","text":"Selectable today","placement":"placed","file":"modules/hall-ui/public/government.js","line":799,"string_id":"ae43a132699b"},
1208
- {"key":"L0044","section":"Charter library","text":"means expressible through the real configuration — a rank-based membership plus a pass rule — with no new code. This project has","placement":"placed","file":"modules/hall-ui/public/government.js","line":799,"string_id":"5c3fdd34cd02"},
1209
- {"key":"L0045","section":"Charter library","text":"{…} builders:","placement":"unplaced"},
1210
- {"key":"L0046","section":"Charter library","text":"Monarchy / BDFL","placement":"unplaced"},
1211
- {"key":"L0047","section":"Charter library","text":"{…} project{…}","placement":"placed","file":"modules/hall-ui/public/fleet.js","line":39,"string_id":"771bef3d31b5","occurrences":2},
1212
- {"key":"L0048","section":"Charter library","text":"selectable today","placement":"unplaced","occurrences":4},
1213
- {"key":"L0049","section":"Charter library","text":"as configuration: {…}","placement":"placed","file":"modules/hall-ui/public/government.js","line":785,"string_id":"d7c511423bc0","occurrences":4},
1214
- {"key":"L0050","section":"Charter library","text":"Timocratic Republic","placement":"unplaced"},
1215
- {"key":"L0051","section":"Charter library","text":"Standing accrues to those actively building: the franchise follows earned rank, not headcount.","placement":"unplaced"},
1216
- {"key":"L0052","section":"Charter library","text":"Direct Democracy","placement":"unplaced"},
1217
- {"key":"L0053","section":"Charter library","text":"Every builder sits on the board. Consent keeps it unblockable: silence passes, one reasoned objection returns.","placement":"unplaced"},
1218
- {"key":"L0054","section":"Charter library","text":"Presidential","placement":"unplaced"},
1219
- {"key":"L0055","section":"Charter library","text":"An ELECTED executive with a fixed term. Needs election machinery this system does not have yet — documented for later.","placement":"unplaced"},
1220
- {"key":"L0056","section":"Charter library","text":"documented for later","placement":"unplaced","occurrences":3},
1221
- {"key":"L0057","section":"Charter library","text":"Cooperative","placement":"unplaced"},
1222
- {"key":"L0058","section":"Charter library","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232"},
1223
- {"key":"L0059","section":"Charter library","text":"Federation","placement":"unplaced"},
1224
- {"key":"L0060","section":"Charter library","text":"Multiple chambers or sub-projects, each self-governing, coordinating through a compact. The >150 shape — documented for later.","placement":"unplaced"},
1225
- {"key":"L0061","section":"Charter library","text":"Foundation","placement":"unplaced"},
1226
- {"key":"L0062","section":"Charter library","text":"A written charter carried by a small appointed council. Expressible today by governing through a custom rank.","placement":"unplaced"},
1227
- {"key":"L0063","section":"Charter library","text":"Trajectories","placement":"unplaced"},
1228
- {"key":"L0064","section":"Charter library","text":"The constitution stays as founded until deliberately amended — no automatic movement.","placement":"unplaced"},
1229
- {"key":"L0065","section":"Charter library","text":"Laddered","placement":"unplaced"},
1230
- {"key":"L0066","section":"Charter library","text":"Steps up the developmental ladder as the team crosses each headcount threshold.","placement":"unplaced"},
1231
- {"key":"L0067","section":"Charter library","text":"Scheduled","placement":"unplaced"},
1232
- {"key":"L0068","section":"Charter library","text":"Pre-commits the dates or milestones at which each step happens, decided in advance.","placement":"unplaced"},
1233
- {"key":"L0069","section":"Charter library","text":"The developmental ladder: {…}. Formality is adopted only where informal coordination breaks.","placement":"placed","file":"modules/hall-ui/public/government.js","line":806,"string_id":"bac12faf3328"}
1182
+ {"key":"L0018","section":"Constitution","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9"},
1183
+ {"key":"L0019","section":"Constitution","text":"Not available from this server yet.","placement":"unplaced"},
1184
+ {"key":"L0020","section":"Constitution","text":"Who sits on the board","placement":"unplaced"},
1185
+ {"key":"L0021","section":"Constitution","text":"Every {…} builder at","placement":"unplaced"},
1186
+ {"key":"L0022","section":"Constitution","text":"or above","placement":"placed","file":"modules/hall-ui/public/government.js","line":564,"string_id":"c38db02adb61"},
1187
+ {"key":"L0023","section":"Constitution","text":"sits on the board — that is","placement":"unplaced"},
1188
+ {"key":"L0024","section":"Constitution","text":"and","placement":"placed","file":"modules/hall-ui/public/deploy.js","line":375,"string_id":"084748fd85b4"},
1189
+ {"key":"L0025","section":"Constitution","text":". Membership follows the rank, live.","placement":"unplaced"},
1190
+ {"key":"L0026","section":"Constitution","text":"What counts as passing","placement":"unplaced"},
1191
+ {"key":"L0027","section":"Constitution","text":"Items pass by","placement":"unplaced"},
1192
+ {"key":"L0028","section":"Constitution","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","occurrences":2},
1193
+ {"key":"L0029","section":"Constitution","text":"How long a sitting runs","placement":"unplaced"},
1194
+ {"key":"L0030","section":"Constitution","text":"A sitting runs","placement":"unplaced"},
1195
+ {"key":"L0031","section":"Constitution","text":"1 day","placement":"unplaced"},
1196
+ {"key":"L0032","section":"Constitution","text":", closing early the moment every member has voted. An unvoted window nulls that member's vote — absence never blocks.","placement":"unplaced"},
1197
+ {"key":"L0033","section":"Constitution","text":"As configuration:","placement":"placed","file":"modules/hall-ui/public/government.js","line":839,"string_id":"5fcfdf8975cf"},
1198
+ {"key":"L0034","section":"Constitution","text":"{\"membership\":\"{…}\",\"pass_rule\":\"{…}\",\"window_minutes\":1440,\"close_early_on_{…}_turnout\":true}","placement":"unplaced"},
1199
+ {"key":"L0035","section":"How it has changed","text":"How it has changed","placement":"placed","file":"modules/hall-ui/public/government.js","line":850,"string_id":"fb7489e8b67c"},
1200
+ {"key":"L0036","section":"How it has changed","text":"Every closed amendment sitting, ratified and returned alike, with the rule it was decided under.","placement":"placed","file":"modules/hall-ui/public/government.js","line":850,"string_id":"a97b064db76f"},
1201
+ {"key":"L0037","section":"How it has changed","text":"{…} proposed","placement":"placed","file":"modules/hall-ui/public/government.js","line":705,"string_id":"154bc518bab4","occurrences":2},
1202
+ {"key":"L0038","section":"How it has changed","text":"{\"membership\":\"{…}\",\"pass_rule\":\"{…}\",\"window_minutes\":1440,\"close_early_on_{…}_turnout\":true}","placement":"unplaced"},
1203
+ {"key":"L0039","section":"How it has changed","text":"ratified","placement":"unplaced"},
1204
+ {"key":"L0040","section":"How it has changed","text":"decided by first ratifier","placement":"unplaced"},
1205
+ {"key":"L0041","section":"How it has changed","text":"{\"membership\":\"{…}\",\"pass_rule\":\"{…}\",\"window_minutes\":120,\"close_early_on_{…}_turnout\":true}","placement":"unplaced"},
1206
+ {"key":"L0042","section":"How it has changed","text":"decided by {…}","placement":"unplaced"},
1207
+ {"key":"L0043","section":"Charter library","text":"Charter library","placement":"placed","file":"modules/hall-ui/public/government.js","line":809,"string_id":"e6982a9ff948"},
1208
+ {"key":"L0044","section":"Charter library","text":"The seven government structures, for getting a team up to speed before deciding when to flip a switch.","placement":"placed","file":"modules/hall-ui/public/government.js","line":809,"string_id":"af664a644b13"},
1209
+ {"key":"L0045","section":"Charter library","text":"Selectable today","placement":"placed","file":"modules/hall-ui/public/government.js","line":809,"string_id":"ae43a132699b"},
1210
+ {"key":"L0046","section":"Charter library","text":"means expressible through the real configuration — a rank-based membership plus a pass rule — with no new code. This project has","placement":"placed","file":"modules/hall-ui/public/government.js","line":809,"string_id":"5c3fdd34cd02"},
1211
+ {"key":"L0047","section":"Charter library","text":"{…} builders:","placement":"unplaced"},
1212
+ {"key":"L0048","section":"Charter library","text":"Monarchy / BDFL","placement":"unplaced"},
1213
+ {"key":"L0049","section":"Charter library","text":"{…} project{…}","placement":"placed","file":"modules/hall-ui/public/fleet.js","line":39,"string_id":"771bef3d31b5","occurrences":2},
1214
+ {"key":"L0050","section":"Charter library","text":"selectable today","placement":"unplaced","occurrences":4},
1215
+ {"key":"L0051","section":"Charter library","text":"as configuration: {…}","placement":"placed","file":"modules/hall-ui/public/government.js","line":795,"string_id":"d7c511423bc0","occurrences":4},
1216
+ {"key":"L0052","section":"Charter library","text":"Timocratic Republic","placement":"unplaced"},
1217
+ {"key":"L0053","section":"Charter library","text":"Standing accrues to those actively building: the franchise follows earned rank, not headcount.","placement":"unplaced"},
1218
+ {"key":"L0054","section":"Charter library","text":"Direct Democracy","placement":"unplaced"},
1219
+ {"key":"L0055","section":"Charter library","text":"Every builder sits on the board. Consent keeps it unblockable: silence passes, one reasoned objection returns.","placement":"unplaced"},
1220
+ {"key":"L0056","section":"Charter library","text":"Presidential","placement":"unplaced"},
1221
+ {"key":"L0057","section":"Charter library","text":"An ELECTED executive with a fixed term. Needs election machinery this system does not have yet — documented for later.","placement":"unplaced"},
1222
+ {"key":"L0058","section":"Charter library","text":"documented for later","placement":"unplaced","occurrences":3},
1223
+ {"key":"L0059","section":"Charter library","text":"Cooperative","placement":"unplaced"},
1224
+ {"key":"L0060","section":"Charter library","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232"},
1225
+ {"key":"L0061","section":"Charter library","text":"Federation","placement":"unplaced"},
1226
+ {"key":"L0062","section":"Charter library","text":"Multiple chambers or sub-projects, each self-governing, coordinating through a compact. The >150 shape — documented for later.","placement":"unplaced"},
1227
+ {"key":"L0063","section":"Charter library","text":"Foundation","placement":"unplaced"},
1228
+ {"key":"L0064","section":"Charter library","text":"A written charter carried by a small appointed council. Expressible today by governing through a custom rank.","placement":"unplaced"},
1229
+ {"key":"L0065","section":"Charter library","text":"Trajectories","placement":"unplaced"},
1230
+ {"key":"L0066","section":"Charter library","text":"The constitution stays as founded until deliberately amended — no automatic movement.","placement":"unplaced"},
1231
+ {"key":"L0067","section":"Charter library","text":"Laddered","placement":"unplaced"},
1232
+ {"key":"L0068","section":"Charter library","text":"Steps up the developmental ladder as the team crosses each headcount threshold.","placement":"unplaced"},
1233
+ {"key":"L0069","section":"Charter library","text":"Scheduled","placement":"unplaced"},
1234
+ {"key":"L0070","section":"Charter library","text":"Pre-commits the dates or milestones at which each step happens, decided in advance.","placement":"unplaced"},
1235
+ {"key":"L0071","section":"Charter library","text":"The developmental ladder: {…}. Formality is adopted only where informal coordination breaks.","placement":"placed","file":"modules/hall-ui/public/government.js","line":816,"string_id":"bac12faf3328"}
1234
1236
  ]
1235
1237
  },
1236
1238
  {
@@ -148,6 +148,7 @@ async function postBoardAnnouncement(payload, deps = {}) {
148
148
  const CHANNEL = 'board_room';
149
149
 
150
150
  function subjectLabel(subjectType) {
151
+ if (subjectType === 'genesis_stage') return 'A genesis stage'; // task 1004429
151
152
  return subjectType === 'constitutional_amendment' ? 'A constitutional amendment' : 'A Full Idea';
152
153
  }
153
154