@bongos/core 1.19.231 → 1.19.233
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.
- package/.bongos-core.json +47 -27
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +4 -0
- package/clients/bongos-client/index.cjs +4 -0
- package/clients/bongos-client/index.d.ts +6 -0
- package/clients/bongos-client/index.mjs +4 -0
- package/docs/api/openapi.json +123 -3
- package/docs/api-reference.md +4 -2
- package/modules/government/board.js +178 -6
- package/modules/government/config.js +31 -0
- package/modules/government/db.js +99 -0
- package/modules/government/migrations/government_007_amendments.sql +25 -0
- package/modules/government/migrations/government_008_closed_items_index.sql +17 -0
- package/modules/government/routes/government.js +55 -0
- package/modules/hall-ui/public/government.html +1 -1
- package/modules/hall-ui/public/government.js +122 -19
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/src/bongos/route-rank-check.js +6 -0
- package/src/bongos/serve-internal.js +8 -1
- package/src/module-api.js +5 -1
- package/tests/government_board_amendment.mjs +226 -0
- package/tests/government_board_view.mjs +129 -0
- package/tests/government_seed.mjs +2 -0
- package/tests/hall_page_gate_map.mjs +6 -2
package/.bongos-core.json
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
"artifact": "bongos-core",
|
|
3
3
|
"manifest_schema": 1,
|
|
4
4
|
"generator": "scripts/gds/package-core.js",
|
|
5
|
-
"core_version": "1.19.
|
|
6
|
-
"core_contract": "1.19.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.19.233",
|
|
6
|
+
"core_contract": "1.19.233",
|
|
7
|
+
"source_commit": "17f28d2147bc72ed6a97cbc256e388a889e7ddec",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-08-
|
|
9
|
+
"built_at": "2026-08-18T16:32:54.929Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 311,
|
|
13
13
|
"agent_docs_stubbed": 21,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 1317,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 1649,
|
|
20
|
+
"tree_sha256": "211de1015cfb5ba8ea8bb0e6aa7467566e296ffea14ebc4cabd2875e21fb6b2c",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/blocker-review/SKILL.md",
|
|
@@ -347,12 +347,12 @@
|
|
|
347
347
|
{
|
|
348
348
|
"path": "clients/bongos-client/README.md",
|
|
349
349
|
"mode": "0000644",
|
|
350
|
-
"sha256": "
|
|
350
|
+
"sha256": "841ea9c45ad482286f056e885cd25c6769931134a2ff066b638d7585a097888e"
|
|
351
351
|
},
|
|
352
352
|
{
|
|
353
353
|
"path": "clients/bongos-client/bongos-client.global.js",
|
|
354
354
|
"mode": "0000644",
|
|
355
|
-
"sha256": "
|
|
355
|
+
"sha256": "a9c482ca4c6d2cc313c76f3e098c3bdaa802f5c1253c749e3b5df6dfbae06463"
|
|
356
356
|
},
|
|
357
357
|
{
|
|
358
358
|
"path": "clients/bongos-client/examples/hello-world.mjs",
|
|
@@ -362,17 +362,17 @@
|
|
|
362
362
|
{
|
|
363
363
|
"path": "clients/bongos-client/index.cjs",
|
|
364
364
|
"mode": "0000644",
|
|
365
|
-
"sha256": "
|
|
365
|
+
"sha256": "fafd3c715b3eb716d7f8355001cf4ea4a8254b78fd757c4a4343ad673a4f1bd8"
|
|
366
366
|
},
|
|
367
367
|
{
|
|
368
368
|
"path": "clients/bongos-client/index.d.ts",
|
|
369
369
|
"mode": "0000644",
|
|
370
|
-
"sha256": "
|
|
370
|
+
"sha256": "dc1ef3a4e2843b836e828e5c8d290861dda56844e4f5727ad5d9b3001d7e4e6b"
|
|
371
371
|
},
|
|
372
372
|
{
|
|
373
373
|
"path": "clients/bongos-client/index.mjs",
|
|
374
374
|
"mode": "0000644",
|
|
375
|
-
"sha256": "
|
|
375
|
+
"sha256": "48ea243ec0016c7dc2842322100406c339b2b7d05bccf8f0119060fc0cf7e5b2"
|
|
376
376
|
},
|
|
377
377
|
{
|
|
378
378
|
"path": "clients/bongos-client/package.json",
|
|
@@ -1372,12 +1372,12 @@
|
|
|
1372
1372
|
{
|
|
1373
1373
|
"path": "docs/api-reference.md",
|
|
1374
1374
|
"mode": "0000644",
|
|
1375
|
-
"sha256": "
|
|
1375
|
+
"sha256": "18317d38ec567284fbb3fd3e351d8fecd10c0aa9371b353128e1e9ff0e6e7717"
|
|
1376
1376
|
},
|
|
1377
1377
|
{
|
|
1378
1378
|
"path": "docs/api/openapi.json",
|
|
1379
1379
|
"mode": "0000644",
|
|
1380
|
-
"sha256": "
|
|
1380
|
+
"sha256": "f2f81530200394e99b8591d43839ba024ab0e055331f86c119fa0e5ab39abbce"
|
|
1381
1381
|
},
|
|
1382
1382
|
{
|
|
1383
1383
|
"path": "docs/architecture.md",
|
|
@@ -2902,7 +2902,7 @@
|
|
|
2902
2902
|
{
|
|
2903
2903
|
"path": "modules/government/board.js",
|
|
2904
2904
|
"mode": "0000644",
|
|
2905
|
-
"sha256": "
|
|
2905
|
+
"sha256": "98c0543844eb7a2143fc9541098e067702d3b76b4a546034b050a45105403d1a"
|
|
2906
2906
|
},
|
|
2907
2907
|
{
|
|
2908
2908
|
"path": "modules/government/catalog.js",
|
|
@@ -2912,12 +2912,12 @@
|
|
|
2912
2912
|
{
|
|
2913
2913
|
"path": "modules/government/config.js",
|
|
2914
2914
|
"mode": "0000644",
|
|
2915
|
-
"sha256": "
|
|
2915
|
+
"sha256": "56bd51c927220b6bc0dc749ad1d591addbed25870e532b8d95da6ba5eab3f763"
|
|
2916
2916
|
},
|
|
2917
2917
|
{
|
|
2918
2918
|
"path": "modules/government/db.js",
|
|
2919
2919
|
"mode": "0000644",
|
|
2920
|
-
"sha256": "
|
|
2920
|
+
"sha256": "dd937ea64d6e4cd6ff677c136c5b8a493fecbf75b63082d9449b4a4390d1a0af"
|
|
2921
2921
|
},
|
|
2922
2922
|
{
|
|
2923
2923
|
"path": "modules/government/migrations/governance_001_tables.sql",
|
|
@@ -2984,6 +2984,16 @@
|
|
|
2984
2984
|
"mode": "0000644",
|
|
2985
2985
|
"sha256": "b2c06a954e93487f7df85eb7333c65284e364499fb96c31aad30a263c36b8f73"
|
|
2986
2986
|
},
|
|
2987
|
+
{
|
|
2988
|
+
"path": "modules/government/migrations/government_007_amendments.sql",
|
|
2989
|
+
"mode": "0000644",
|
|
2990
|
+
"sha256": "5629112a9bb932873a00b8ddefa847d9a21ed0f8f59cc8a77ffb9c9c5e0eea49"
|
|
2991
|
+
},
|
|
2992
|
+
{
|
|
2993
|
+
"path": "modules/government/migrations/government_008_closed_items_index.sql",
|
|
2994
|
+
"mode": "0000644",
|
|
2995
|
+
"sha256": "2392050b4295f9fdb4105b8434a4c44833b5f0e850f11b41afe82ea1860fef34"
|
|
2996
|
+
},
|
|
2987
2997
|
{
|
|
2988
2998
|
"path": "modules/government/module.json",
|
|
2989
2999
|
"mode": "0000644",
|
|
@@ -3017,7 +3027,7 @@
|
|
|
3017
3027
|
{
|
|
3018
3028
|
"path": "modules/government/routes/government.js",
|
|
3019
3029
|
"mode": "0000644",
|
|
3020
|
-
"sha256": "
|
|
3030
|
+
"sha256": "2c7ae89e1e8e91107a8e0a55cc82d6ee4f8804fedb76d07dbe5e502c4801e187"
|
|
3021
3031
|
},
|
|
3022
3032
|
{
|
|
3023
3033
|
"path": "modules/government/routes/rank-sync.js",
|
|
@@ -3262,12 +3272,12 @@
|
|
|
3262
3272
|
{
|
|
3263
3273
|
"path": "modules/hall-ui/public/government.html",
|
|
3264
3274
|
"mode": "0000644",
|
|
3265
|
-
"sha256": "
|
|
3275
|
+
"sha256": "ffd03d1fefcd4c4639f66812fe35dd3f74a2c65ed02a576a5d9703883df10736"
|
|
3266
3276
|
},
|
|
3267
3277
|
{
|
|
3268
3278
|
"path": "modules/hall-ui/public/government.js",
|
|
3269
3279
|
"mode": "0000644",
|
|
3270
|
-
"sha256": "
|
|
3280
|
+
"sha256": "39215495c3ec93b4426c95b0a16db76297a070aa678318507f8c064a57692e5d"
|
|
3271
3281
|
},
|
|
3272
3282
|
{
|
|
3273
3283
|
"path": "modules/hall-ui/public/hall-kit.js",
|
|
@@ -4312,12 +4322,12 @@
|
|
|
4312
4322
|
{
|
|
4313
4323
|
"path": "package-lock.json",
|
|
4314
4324
|
"mode": "0000644",
|
|
4315
|
-
"sha256": "
|
|
4325
|
+
"sha256": "c1798947aa88297385a13e4c3b16070a6a6e79208e077b5c40459580dfe3f55c"
|
|
4316
4326
|
},
|
|
4317
4327
|
{
|
|
4318
4328
|
"path": "package.json",
|
|
4319
4329
|
"mode": "0000644",
|
|
4320
|
-
"sha256": "
|
|
4330
|
+
"sha256": "25e6cf1d1ba69421a3a6ee12d77ab8609f6748aacb0d5390ccc0c287dc2c2ff0"
|
|
4321
4331
|
},
|
|
4322
4332
|
{
|
|
4323
4333
|
"path": "public-docs/index.html",
|
|
@@ -5797,7 +5807,7 @@
|
|
|
5797
5807
|
{
|
|
5798
5808
|
"path": "src/bongos/route-rank-check.js",
|
|
5799
5809
|
"mode": "0000644",
|
|
5800
|
-
"sha256": "
|
|
5810
|
+
"sha256": "a074972d1da13fb71acdd9d60126488f345ff59c33d83aca90cea50b8ed064ab"
|
|
5801
5811
|
},
|
|
5802
5812
|
{
|
|
5803
5813
|
"path": "src/bongos/routes.js",
|
|
@@ -5897,7 +5907,7 @@
|
|
|
5897
5907
|
{
|
|
5898
5908
|
"path": "src/bongos/serve-internal.js",
|
|
5899
5909
|
"mode": "0000644",
|
|
5900
|
-
"sha256": "
|
|
5910
|
+
"sha256": "885076ed4dce0676735055df3f841a72ac41846568d39434a80d48eacced3e16"
|
|
5901
5911
|
},
|
|
5902
5912
|
{
|
|
5903
5913
|
"path": "src/bongos/stealth-gate.js",
|
|
@@ -5932,7 +5942,7 @@
|
|
|
5932
5942
|
{
|
|
5933
5943
|
"path": "src/module-api.js",
|
|
5934
5944
|
"mode": "0000644",
|
|
5935
|
-
"sha256": "
|
|
5945
|
+
"sha256": "aff6b3aeff836216d9b45d025375021888c25cc3f6942705341698652836bdd2"
|
|
5936
5946
|
},
|
|
5937
5947
|
{
|
|
5938
5948
|
"path": "src/module-loader/catalog.js",
|
|
@@ -6854,6 +6864,11 @@
|
|
|
6854
6864
|
"mode": "0000644",
|
|
6855
6865
|
"sha256": "8f5354cbacf15c9b49500f96b265fe52f5c0d4500a4ec7b41b4819a149782893"
|
|
6856
6866
|
},
|
|
6867
|
+
{
|
|
6868
|
+
"path": "tests/government_board_amendment.mjs",
|
|
6869
|
+
"mode": "0000644",
|
|
6870
|
+
"sha256": "7b20463f4d0940c43a5555a7b63d156202d334477267b7d2bc045e27e964d253"
|
|
6871
|
+
},
|
|
6857
6872
|
{
|
|
6858
6873
|
"path": "tests/government_board_close.mjs",
|
|
6859
6874
|
"mode": "0000644",
|
|
@@ -6869,6 +6884,11 @@
|
|
|
6869
6884
|
"mode": "0000644",
|
|
6870
6885
|
"sha256": "1a6f90e319c88ecd3e5588d5a6df44a9848c0adf08efd13bfcc52ac99e84d5d0"
|
|
6871
6886
|
},
|
|
6887
|
+
{
|
|
6888
|
+
"path": "tests/government_board_view.mjs",
|
|
6889
|
+
"mode": "0000644",
|
|
6890
|
+
"sha256": "104dbfd5510f4abf4580cf89f57e4be15667b4b6e6f171a2635786bfd4d65f9e"
|
|
6891
|
+
},
|
|
6872
6892
|
{
|
|
6873
6893
|
"path": "tests/government_board_vote.mjs",
|
|
6874
6894
|
"mode": "0000644",
|
|
@@ -6957,7 +6977,7 @@
|
|
|
6957
6977
|
{
|
|
6958
6978
|
"path": "tests/government_seed.mjs",
|
|
6959
6979
|
"mode": "0000644",
|
|
6960
|
-
"sha256": "
|
|
6980
|
+
"sha256": "cd67c76a30e1c69838f99afbb8edd17a0ec2109a8105b61805b9564e27464137"
|
|
6961
6981
|
},
|
|
6962
6982
|
{
|
|
6963
6983
|
"path": "tests/government_session_scope.mjs",
|
|
@@ -7047,7 +7067,7 @@
|
|
|
7047
7067
|
{
|
|
7048
7068
|
"path": "tests/hall_page_gate_map.mjs",
|
|
7049
7069
|
"mode": "0000644",
|
|
7050
|
-
"sha256": "
|
|
7070
|
+
"sha256": "98a5317bf8599941802794a5a0679e1ad2ff84dbaa7c36c88140a5f5fcd30780"
|
|
7051
7071
|
},
|
|
7052
7072
|
{
|
|
7053
7073
|
"path": "tests/hall_palette.mjs",
|
|
@@ -5,7 +5,7 @@ A **generated**, zero-dependency typed client for the Bongos API — produced fr
|
|
|
5
5
|
by hand; it regenerates when the spec changes, so it can never drift from the routes.
|
|
6
6
|
|
|
7
7
|
- API version: **v1** (served at `/api/bongos/v1`)
|
|
8
|
-
-
|
|
8
|
+
- 284 operations across 46 resource groups
|
|
9
9
|
|
|
10
10
|
## Install
|
|
11
11
|
|
|
@@ -349,6 +349,10 @@ function createClient(opts = {}) {
|
|
|
349
349
|
postGovernmentAssignments: (args) => request("POST", "/government/assignments", { hasBody: true }, args),
|
|
350
350
|
// DELETE /government/assignments/{builderId}/{rankKey} — rank: archon — DELETE /government/assignments/:builderId/:rankKey
|
|
351
351
|
deleteGovernmentAssignmentsBuilderIdRankKey: (args) => request("DELETE", "/government/assignments/{builderId}/{rankKey}", { hasBody: false }, args),
|
|
352
|
+
// GET /government/board/items — rank: any-builder — GET /government/board/items
|
|
353
|
+
getGovernmentBoardItems: (args) => request("GET", "/government/board/items", { hasBody: false }, args),
|
|
354
|
+
// POST /government/board/items — rank: metic+archon — POST /government/board/items
|
|
355
|
+
postGovernmentBoardItems: (args) => request("POST", "/government/board/items", { hasBody: true }, args),
|
|
352
356
|
// POST /government/board/items/{itemId}/votes — rank: any-builder — POST /government/board/items/:itemId/votes
|
|
353
357
|
postGovernmentBoardItemsItemIdVotes: (args) => request("POST", "/government/board/items/{itemId}/votes", { hasBody: true }, args),
|
|
354
358
|
// GET /government/permissions — rank: archon — GET /government/permissions
|
|
@@ -348,6 +348,10 @@ function createClient(opts = {}) {
|
|
|
348
348
|
postGovernmentAssignments: (args) => request("POST", "/government/assignments", { hasBody: true }, args),
|
|
349
349
|
// DELETE /government/assignments/{builderId}/{rankKey} — rank: archon — DELETE /government/assignments/:builderId/:rankKey
|
|
350
350
|
deleteGovernmentAssignmentsBuilderIdRankKey: (args) => request("DELETE", "/government/assignments/{builderId}/{rankKey}", { hasBody: false }, args),
|
|
351
|
+
// GET /government/board/items — rank: any-builder — GET /government/board/items
|
|
352
|
+
getGovernmentBoardItems: (args) => request("GET", "/government/board/items", { hasBody: false }, args),
|
|
353
|
+
// POST /government/board/items — rank: metic+archon — POST /government/board/items
|
|
354
|
+
postGovernmentBoardItems: (args) => request("POST", "/government/board/items", { hasBody: true }, args),
|
|
351
355
|
// POST /government/board/items/{itemId}/votes — rank: any-builder — POST /government/board/items/:itemId/votes
|
|
352
356
|
postGovernmentBoardItemsItemIdVotes: (args) => request("POST", "/government/board/items/{itemId}/votes", { hasBody: true }, args),
|
|
353
357
|
// GET /government/permissions — rank: archon — GET /government/permissions
|
|
@@ -233,6 +233,8 @@ export interface PostGoalsRequest { version_id: string; title: string; descripti
|
|
|
233
233
|
export interface PostGoalsResponse { ok: boolean; goal: unknown; succeeds_goal_id: unknown }
|
|
234
234
|
export interface PostGovernmentAssignmentsRequest { builder_id: number; rank_key: string }
|
|
235
235
|
export interface PostGovernmentBoardItemsItemIdVotesRequest { direction: string; reason_md?: string; section_key?: string }
|
|
236
|
+
export interface PostGovernmentBoardItemsRequest { subject_type: string; proposal: Record<string, unknown>; rationale_md?: string }
|
|
237
|
+
export interface PostGovernmentBoardItemsResponse { ok: boolean; amendment: unknown; item: unknown }
|
|
236
238
|
export interface PostGovernmentRanksRankKeyResetResponse { ok: boolean; rank_key: unknown; seeded_rank: unknown; permission_count: unknown }
|
|
237
239
|
export interface PostGovernmentRanksRequest { rank_key: string; label: string; description?: string }
|
|
238
240
|
export interface PostGovernmentRanksResponse { rank: unknown }
|
|
@@ -601,6 +603,10 @@ export interface BongosClient {
|
|
|
601
603
|
postGovernmentAssignments(args: RequestArgs & { body: PostGovernmentAssignmentsRequest }): Promise<ApiResponse>;
|
|
602
604
|
/** DELETE /government/assignments/{builderId}/{rankKey} — rank: archon */
|
|
603
605
|
deleteGovernmentAssignmentsBuilderIdRankKey(args?: RequestArgs): Promise<DeleteGovernmentAssignmentsBuilderIdRankKeyResponse>;
|
|
606
|
+
/** GET /government/board/items — rank: any-builder */
|
|
607
|
+
getGovernmentBoardItems(args?: RequestArgs): Promise<ApiResponse>;
|
|
608
|
+
/** POST /government/board/items — rank: metic+archon */
|
|
609
|
+
postGovernmentBoardItems(args: RequestArgs & { body: PostGovernmentBoardItemsRequest }): Promise<PostGovernmentBoardItemsResponse>;
|
|
604
610
|
/** POST /government/board/items/{itemId}/votes — rank: any-builder */
|
|
605
611
|
postGovernmentBoardItemsItemIdVotes(args: RequestArgs & { body: PostGovernmentBoardItemsItemIdVotesRequest }): Promise<ApiResponse>;
|
|
606
612
|
/** GET /government/permissions — rank: archon */
|
|
@@ -345,6 +345,10 @@ export function createClient(opts = {}) {
|
|
|
345
345
|
postGovernmentAssignments: (args) => request("POST", "/government/assignments", { hasBody: true }, args),
|
|
346
346
|
// DELETE /government/assignments/{builderId}/{rankKey} — rank: archon — DELETE /government/assignments/:builderId/:rankKey
|
|
347
347
|
deleteGovernmentAssignmentsBuilderIdRankKey: (args) => request("DELETE", "/government/assignments/{builderId}/{rankKey}", { hasBody: false }, args),
|
|
348
|
+
// GET /government/board/items — rank: any-builder — GET /government/board/items
|
|
349
|
+
getGovernmentBoardItems: (args) => request("GET", "/government/board/items", { hasBody: false }, args),
|
|
350
|
+
// POST /government/board/items — rank: metic+archon — POST /government/board/items
|
|
351
|
+
postGovernmentBoardItems: (args) => request("POST", "/government/board/items", { hasBody: true }, args),
|
|
348
352
|
// POST /government/board/items/{itemId}/votes — rank: any-builder — POST /government/board/items/:itemId/votes
|
|
349
353
|
postGovernmentBoardItemsItemIdVotes: (args) => request("POST", "/government/board/items/{itemId}/votes", { hasBody: true }, args),
|
|
350
354
|
// GET /government/permissions — rank: archon — GET /government/permissions
|
package/docs/api/openapi.json
CHANGED
|
@@ -5336,6 +5336,90 @@
|
|
|
5336
5336
|
]
|
|
5337
5337
|
}
|
|
5338
5338
|
},
|
|
5339
|
+
"/government/board/items": {
|
|
5340
|
+
"get": {
|
|
5341
|
+
"operationId": "get_government_board_items",
|
|
5342
|
+
"tags": [
|
|
5343
|
+
"government"
|
|
5344
|
+
],
|
|
5345
|
+
"summary": "GET /government/board/items",
|
|
5346
|
+
"description": "board.vote.cast — the Board Room view: open items with their clock, the OPEN BALLOT, the closed history (R16 of goal 1000069). Gated on the XENOS-floored vote atom, deliberately: seeing the ballot is part of casting (§9 — a board whose votes are invisible constrains nobody), and the room teaches as well as governs (criterion C5). NOT government.manage — that is the admin tab's atom; the room must be visible to whoever the constitution may enfranchise. Membership still gates nothing here: this is a read, and the write (the vote) re-checks membership in-handler.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).\n\n**Permissions:** `board.vote.cast` (all required).",
|
|
5347
|
+
"x-rank": "any-builder",
|
|
5348
|
+
"x-source": "modules/government/routes/government.js",
|
|
5349
|
+
"x-permissions": [
|
|
5350
|
+
"board.vote.cast"
|
|
5351
|
+
],
|
|
5352
|
+
"responses": {
|
|
5353
|
+
"200": {
|
|
5354
|
+
"description": "Success."
|
|
5355
|
+
},
|
|
5356
|
+
"400": {
|
|
5357
|
+
"$ref": "#/components/responses/BadRequest"
|
|
5358
|
+
},
|
|
5359
|
+
"401": {
|
|
5360
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
5361
|
+
},
|
|
5362
|
+
"403": {
|
|
5363
|
+
"$ref": "#/components/responses/Forbidden"
|
|
5364
|
+
}
|
|
5365
|
+
},
|
|
5366
|
+
"security": [
|
|
5367
|
+
{
|
|
5368
|
+
"builderSession": []
|
|
5369
|
+
}
|
|
5370
|
+
]
|
|
5371
|
+
},
|
|
5372
|
+
"post": {
|
|
5373
|
+
"operationId": "post_government_board_items",
|
|
5374
|
+
"tags": [
|
|
5375
|
+
"government"
|
|
5376
|
+
],
|
|
5377
|
+
"summary": "POST /government/board/items",
|
|
5378
|
+
"description": "board.item.open — put an AMENDMENT to the board (R14 of goal 1000069, ADR 0175 §7). The board's other subject never comes through here: a Full Idea's window opens AUTOMATICALLY on grade pass (R07), so requesting one is refused with the reason rather than silently doubling the paths — exactly what the catalog's own guards note predicted this route would be. The proposal is validated STRICTLY in board.js (never sanitized — the board must not ratify text the proposer did not write), and the window runs under the constitution IN FORCE, which under monarchy resolves to \"the Archon ratifies\" — their own proposal included (§7's no-bootstrap-exception).\n\n**Rank:** `metic+archon` — Metic or Archon rank (review/triage powers).\n\n**Permissions:** `board.item.open` (all required).",
|
|
5379
|
+
"x-rank": "metic+archon",
|
|
5380
|
+
"x-source": "modules/government/routes/government.js",
|
|
5381
|
+
"x-permissions": [
|
|
5382
|
+
"board.item.open"
|
|
5383
|
+
],
|
|
5384
|
+
"requestBody": {
|
|
5385
|
+
"required": true,
|
|
5386
|
+
"content": {
|
|
5387
|
+
"application/json": {
|
|
5388
|
+
"schema": {
|
|
5389
|
+
"$ref": "#/components/schemas/PostGovernmentBoardItemsRequest"
|
|
5390
|
+
}
|
|
5391
|
+
}
|
|
5392
|
+
},
|
|
5393
|
+
"x-validated": true
|
|
5394
|
+
},
|
|
5395
|
+
"responses": {
|
|
5396
|
+
"200": {
|
|
5397
|
+
"description": "Success.",
|
|
5398
|
+
"content": {
|
|
5399
|
+
"application/json": {
|
|
5400
|
+
"schema": {
|
|
5401
|
+
"$ref": "#/components/schemas/PostGovernmentBoardItemsResponse"
|
|
5402
|
+
}
|
|
5403
|
+
}
|
|
5404
|
+
}
|
|
5405
|
+
},
|
|
5406
|
+
"400": {
|
|
5407
|
+
"$ref": "#/components/responses/ValidationFailed"
|
|
5408
|
+
},
|
|
5409
|
+
"401": {
|
|
5410
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
5411
|
+
},
|
|
5412
|
+
"403": {
|
|
5413
|
+
"$ref": "#/components/responses/Forbidden"
|
|
5414
|
+
}
|
|
5415
|
+
},
|
|
5416
|
+
"security": [
|
|
5417
|
+
{
|
|
5418
|
+
"builderSession": []
|
|
5419
|
+
}
|
|
5420
|
+
]
|
|
5421
|
+
}
|
|
5422
|
+
},
|
|
5339
5423
|
"/government/board/items/{itemId}/votes": {
|
|
5340
5424
|
"post": {
|
|
5341
5425
|
"operationId": "post_government_board_items_itemId_votes",
|
|
@@ -16098,6 +16182,42 @@
|
|
|
16098
16182
|
],
|
|
16099
16183
|
"additionalProperties": false
|
|
16100
16184
|
},
|
|
16185
|
+
"PostGovernmentBoardItemsRequest": {
|
|
16186
|
+
"type": "object",
|
|
16187
|
+
"properties": {
|
|
16188
|
+
"subject_type": {
|
|
16189
|
+
"type": "string",
|
|
16190
|
+
"maxLength": 32
|
|
16191
|
+
},
|
|
16192
|
+
"proposal": {
|
|
16193
|
+
"type": "object"
|
|
16194
|
+
},
|
|
16195
|
+
"rationale_md": {
|
|
16196
|
+
"type": "string",
|
|
16197
|
+
"maxLength": 5000
|
|
16198
|
+
}
|
|
16199
|
+
},
|
|
16200
|
+
"required": [
|
|
16201
|
+
"subject_type",
|
|
16202
|
+
"proposal"
|
|
16203
|
+
],
|
|
16204
|
+
"additionalProperties": false
|
|
16205
|
+
},
|
|
16206
|
+
"PostGovernmentBoardItemsResponse": {
|
|
16207
|
+
"type": "object",
|
|
16208
|
+
"properties": {
|
|
16209
|
+
"ok": {
|
|
16210
|
+
"type": "boolean"
|
|
16211
|
+
},
|
|
16212
|
+
"amendment": {},
|
|
16213
|
+
"item": {}
|
|
16214
|
+
},
|
|
16215
|
+
"required": [
|
|
16216
|
+
"ok",
|
|
16217
|
+
"amendment",
|
|
16218
|
+
"item"
|
|
16219
|
+
]
|
|
16220
|
+
},
|
|
16101
16221
|
"PostGovernmentRanksRankKeyResetResponse": {
|
|
16102
16222
|
"type": "object",
|
|
16103
16223
|
"properties": {
|
|
@@ -17881,9 +18001,9 @@
|
|
|
17881
18001
|
"description": "A required dependency/feature is not configured or is temporarily down."
|
|
17882
18002
|
}
|
|
17883
18003
|
},
|
|
17884
|
-
"x-endpoint-count":
|
|
17885
|
-
"x-schema-count":
|
|
18004
|
+
"x-endpoint-count": 284,
|
|
18005
|
+
"x-schema-count": 321,
|
|
17886
18006
|
"x-undocumented-bodies": 8,
|
|
17887
|
-
"x-response-schemas":
|
|
18007
|
+
"x-response-schemas": 215,
|
|
17888
18008
|
"x-generated-by": "scripts/gds/gen-api-docs.js"
|
|
17889
18009
|
}
|
package/docs/api-reference.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Bongos API reference
|
|
4
4
|
|
|
5
|
-
> **Generated from the live route files** — the route file is authoritative.
|
|
5
|
+
> **Generated from the live route files** — the route file is authoritative. 284 endpoints across 46 route files.
|
|
6
6
|
> Machine-readable spec: [`docs/api/openapi.json`](api/openapi.json) (OpenAPI 3.1). Rendered docs site: **`/docs`** (e.g. `cloudbongos.com/docs`).
|
|
7
7
|
|
|
8
8
|
Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>.md)): `public` < `any-builder` < `metic+archon` < `archon`.
|
|
@@ -216,13 +216,15 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
|
|
|
216
216
|
| GET | `/api/bongos/goals/inbox` | `any-builder` | — | GET /goals/inbox — the caller's private-goals inbox (task 1952 / ADR 0112): { invitations: invites addressed to me (accept/decline); join… |
|
|
217
217
|
| POST | `/api/bongos/goals/reorder` | `metic+archon` | `version_id`, `ordered_ids` | POST /goals/reorder — Archon drag-to-reorder: set the priority order of every goal WITHIN one version (task 1760). |
|
|
218
218
|
|
|
219
|
-
## `government` (
|
|
219
|
+
## `government` (12)
|
|
220
220
|
|
|
221
221
|
| Method | Path | Rank | Body | Description |
|
|
222
222
|
|---|---|---|---|---|
|
|
223
223
|
| GET | `/api/bongos/government/assignments` | `archon` | — | government.manage — every builder↔rank assignment row. |
|
|
224
224
|
| POST | `/api/bongos/government/assignments` | `archon` | `builder_id`, `rank_key` | government.manage — assign a CUSTOM rank to a builder. |
|
|
225
225
|
| DELETE | `/api/bongos/government/assignments/:builderId/:rankKey` | `archon` | — | government.manage — remove a custom-rank assignment. |
|
|
226
|
+
| GET | `/api/bongos/government/board/items` | `any-builder` | — | board.vote.cast — the Board Room view: open items with their clock, the OPEN BALLOT, the closed history (R16 of goal 1000069). |
|
|
227
|
+
| POST | `/api/bongos/government/board/items` | `metic+archon` | `subject_type`, `proposal`, `rationale_md` | board.item.open — put an AMENDMENT to the board (R14 of goal 1000069, ADR 0175 §7). |
|
|
226
228
|
| POST | `/api/bongos/government/board/items/:itemId/votes` | `any-builder` | `direction`, `reason_md`, `section_key` | board.vote.cast — cast a vote on an open board item (R08 of goal 1000069, ADR 0175). |
|
|
227
229
|
| GET | `/api/bongos/government/permissions` | `archon` | — | government.manage — the permission catalog + principals, straight from code (the catalog is CODE, not a table); no DB read. |
|
|
228
230
|
| GET | `/api/bongos/government/ranks` | `archon` | — | government.manage — the full rank list with each rank's grants. |
|