@bongos/core 1.24.1 → 1.24.2

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 (38) hide show
  1. package/.bongos-core.json +64 -39
  2. package/clients/bongos-client/README.md +1 -1
  3. package/clients/bongos-client/bongos-client.global.js +6 -0
  4. package/clients/bongos-client/index.cjs +6 -0
  5. package/clients/bongos-client/index.d.ts +6 -0
  6. package/clients/bongos-client/index.mjs +6 -0
  7. package/docs/adr/0385-money-lives-with-a-processor-credits-stay-a-project-meter.md +12 -1
  8. package/docs/adr/README.md +1 -1
  9. package/docs/api/openapi.json +140 -1
  10. package/docs/api-reference.md +5 -2
  11. package/docs/copy-inventory.md +11 -6
  12. package/docs/copy-registry.json +63 -8
  13. package/docs/module-api-changelog.md +2 -0
  14. package/docs/page-inventory.json +2 -1
  15. package/docs/page-readings.json +29 -20
  16. package/modules/government/access-routes.js +70 -0
  17. package/modules/government/access.js +88 -0
  18. package/modules/government/asks.js +5 -2
  19. package/modules/government/db.js +38 -0
  20. package/modules/government/docket.js +12 -2
  21. package/modules/government/migrations/government_036_access_holders.sql +33 -0
  22. package/modules/government/routes/government.js +9 -0
  23. package/modules/government/routing.js +11 -3
  24. package/modules/government/waiting.js +4 -0
  25. package/modules/hall-ui/public/blockers-by-person.js +2 -0
  26. package/modules/hall-ui/public/government-access.js +108 -0
  27. package/modules/hall-ui/public/government.html +21 -0
  28. package/modules/hall-ui/records/blockers-people.md +14 -0
  29. package/package-lock.json +2 -2
  30. package/package.json +1 -1
  31. package/release-notes.json +10 -0
  32. package/scripts/bongos/government-walk.js +3 -0
  33. package/src/bongos/route-rank-check.js +4 -0
  34. package/src/module-api.js +1 -1
  35. package/tests/access_holders.mjs +214 -0
  36. package/tests/government_board_membership.mjs +4 -1
  37. package/tests/government_routes.mjs +1 -1
  38. package/tests/government_seed.mjs +1 -0
package/.bongos-core.json CHANGED
@@ -2,22 +2,22 @@
2
2
  "artifact": "bongos-core",
3
3
  "manifest_schema": 1,
4
4
  "generator": "scripts/bongos/package-core.js",
5
- "core_version": "1.24.1",
6
- "core_contract": "1.24.1",
7
- "source_commit": "88fb96554d0a673aa7eeeb596b01216b01062092",
5
+ "core_version": "1.24.2",
6
+ "core_contract": "1.24.2",
7
+ "source_commit": "ee62d8bbc8ba5881c14529f59c7c4977cdd3d369",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-10-30T01:22:15.450Z",
9
+ "built_at": "2026-10-30T04:03:46.558Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 628,
13
13
  "agent_docs_stubbed": 32,
14
- "functional_verbatim": 3702,
14
+ "functional_verbatim": 3707,
15
15
  "rules": 3,
16
16
  "gate_literals": 3,
17
17
  "gate": "passed"
18
18
  },
19
- "file_count": 4363,
20
- "tree_sha256": "d003b43f93bfa1a5dd38f6db57b7d5389419c6bddc72bddca88d9603231e09e5",
19
+ "file_count": 4368,
20
+ "tree_sha256": "fdbf473ba97bae610265a82edb99185a1d26c069f869004283746e7d404265dd",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/ask-for-help/SKILL.md",
@@ -327,12 +327,12 @@
327
327
  {
328
328
  "path": "clients/bongos-client/README.md",
329
329
  "mode": "0000644",
330
- "sha256": "32db59559c6f640117131c2203965c2227c29f3c522a7e2b535b72a40cce52b2"
330
+ "sha256": "0319fd50716b382de913d14dfb410b80f5e643a5c70f097dc2e803cd2c0b5031"
331
331
  },
332
332
  {
333
333
  "path": "clients/bongos-client/bongos-client.global.js",
334
334
  "mode": "0000644",
335
- "sha256": "dc87c1d068deb83d20b50eb887450e3a1649c162fea14872ad630ebbc5090e55"
335
+ "sha256": "5c8dbe02b7ca7bd995a90466cfc5537b2b0da806b379a4dd97a0af057879e444"
336
336
  },
337
337
  {
338
338
  "path": "clients/bongos-client/examples/hello-world.mjs",
@@ -342,17 +342,17 @@
342
342
  {
343
343
  "path": "clients/bongos-client/index.cjs",
344
344
  "mode": "0000644",
345
- "sha256": "26e9909fd662f84aa7e6fbaa0b2af6caf2b7f6ef530a33011ec8b4050d96ded9"
345
+ "sha256": "c2243b18e2efcc5c6ea9971c6538d1f133697e8f1b2a3e6ae666b52e9c907e13"
346
346
  },
347
347
  {
348
348
  "path": "clients/bongos-client/index.d.ts",
349
349
  "mode": "0000644",
350
- "sha256": "470fbdb467a187cadc7d735e927ca7280ed59b82c38248e54a7554adbb0dce18"
350
+ "sha256": "1f2d29a73adc57606eb48c63dc66164eb513723959d82addac836f8753616ebe"
351
351
  },
352
352
  {
353
353
  "path": "clients/bongos-client/index.mjs",
354
354
  "mode": "0000644",
355
- "sha256": "2a983306cd590fc977e1128548ba809466dd6b9b321efed58f98cdd0e605abab"
355
+ "sha256": "1778959cf9927f26cbce3f66fcdc69316fad5b93dd6baa5c8293114734191062"
356
356
  },
357
357
  {
358
358
  "path": "clients/bongos-client/package.json",
@@ -2397,7 +2397,7 @@
2397
2397
  {
2398
2398
  "path": "docs/adr/0385-money-lives-with-a-processor-credits-stay-a-project-meter.md",
2399
2399
  "mode": "0000644",
2400
- "sha256": "990e06619c229f34a79c21abce9dd7301080aac89208e8eca48683d7f39c8c55"
2400
+ "sha256": "b5d24f25bfccaab2ac39eaeb857690b52f00bc2c2bd04c0e270d5aff3e3f82c0"
2401
2401
  },
2402
2402
  {
2403
2403
  "path": "docs/adr/0386-the-funding-wall-is-a-per-project-rule-claim-time-hold-by-default.md",
@@ -2442,17 +2442,17 @@
2442
2442
  {
2443
2443
  "path": "docs/adr/README.md",
2444
2444
  "mode": "0000644",
2445
- "sha256": "9d2b7273066b367aa73a72dfa5d95584d0064010cff1289e6fb7822bf8a4541f"
2445
+ "sha256": "9eb0ee56f15eeac199fb9a4d16f4d74de34fde7fabb84ddc788de868c8198022"
2446
2446
  },
2447
2447
  {
2448
2448
  "path": "docs/api-reference.md",
2449
2449
  "mode": "0000644",
2450
- "sha256": "d63d0a84136a8cc798da597c8cfd2b28d48e0400042144d7944fbcb64ae5b79b"
2450
+ "sha256": "733b696bc7b7b25f795405bb9a37a3c2bd2dcbdc03e6eb9cb955eb1b994a95a8"
2451
2451
  },
2452
2452
  {
2453
2453
  "path": "docs/api/openapi.json",
2454
2454
  "mode": "0000644",
2455
- "sha256": "93a5f0666d9ce1ff939c78bc73e3f830df857e555f91729a2e79358a60bd0665"
2455
+ "sha256": "2b1e707d8da5061db5add81620faec6b5e101c77b780dbf7a840aa5bd2e881fb"
2456
2456
  },
2457
2457
  {
2458
2458
  "path": "docs/architecture.md",
@@ -2477,12 +2477,12 @@
2477
2477
  {
2478
2478
  "path": "docs/copy-inventory.md",
2479
2479
  "mode": "0000644",
2480
- "sha256": "007327e09a1c89e11e78de20209dc35109f7c6fdbbeee30eaabd5cbd6178707f"
2480
+ "sha256": "009f23a1c2a2601201ccb4d9ad91a6d16c4502ccf161dab99039f00d7f435bdf"
2481
2481
  },
2482
2482
  {
2483
2483
  "path": "docs/copy-registry.json",
2484
2484
  "mode": "0000644",
2485
- "sha256": "b01ae97a596548f55d0926913c92877ea38adfa7dfd494db636046875c7c5004"
2485
+ "sha256": "eeb481d009b4f1e2259022852ad084d81bec7d4461a72d5891473f00e12c5515"
2486
2486
  },
2487
2487
  {
2488
2488
  "path": "docs/design/apex-pass-2-direction.md",
@@ -2992,7 +2992,7 @@
2992
2992
  {
2993
2993
  "path": "docs/module-api-changelog.md",
2994
2994
  "mode": "0000644",
2995
- "sha256": "3b5173da0982a70697abecae13e93a222a1fabcdc3544d4cf72c50fa304f95f6"
2995
+ "sha256": "7d908c8a090025c583b91a08ea9130918cb3157f768fc0db60a6ae1930c8e88d"
2996
2996
  },
2997
2997
  {
2998
2998
  "path": "docs/modules-contract.md",
@@ -3077,12 +3077,12 @@
3077
3077
  {
3078
3078
  "path": "docs/page-inventory.json",
3079
3079
  "mode": "0000644",
3080
- "sha256": "2f474f45b88bfad44fc85abd91796b1a6968c6ae22cc1525bd14e00d4c25920a"
3080
+ "sha256": "c01a06e925175fa20e8763e9892cc2431262b163e82a07ed7b0990e914a1d3c1"
3081
3081
  },
3082
3082
  {
3083
3083
  "path": "docs/page-readings.json",
3084
3084
  "mode": "0000644",
3085
- "sha256": "fb994a593ded8544a433ebb2bb137c29532b20b8435aa022e1f44053b2c944b1"
3085
+ "sha256": "5f42ce17aec4f1cd6f50f4567657281a0427e3ad9c5ad3c05f938428b49bf1de"
3086
3086
  },
3087
3087
  {
3088
3088
  "path": "docs/project-context.template.md",
@@ -5249,6 +5249,16 @@
5249
5249
  "mode": "0000644",
5250
5250
  "sha256": "7cb9dac9cb87b679e1ae50e4112b3a7928a38ebb9902c8947a74d17bec4d9009"
5251
5251
  },
5252
+ {
5253
+ "path": "modules/government/access-routes.js",
5254
+ "mode": "0000644",
5255
+ "sha256": "618ff14f00982dfae8ac7cedc69c586f2c6f2b352103be441e6c6a6a764b620a"
5256
+ },
5257
+ {
5258
+ "path": "modules/government/access.js",
5259
+ "mode": "0000644",
5260
+ "sha256": "07da154636be47b083de5a93a5696ced209f449fbcbeec59f46d50ee5c6ba8b4"
5261
+ },
5252
5262
  {
5253
5263
  "path": "modules/government/asks-db.js",
5254
5264
  "mode": "0000644",
@@ -5257,7 +5267,7 @@
5257
5267
  {
5258
5268
  "path": "modules/government/asks.js",
5259
5269
  "mode": "0000644",
5260
- "sha256": "59fce4e7b4f0514cd946db88a961a58633a33472965d4d6089ca1741c16e7cd6"
5270
+ "sha256": "8d30db41c2e4a7d2642bcaf619ac7ec29f7303c9808098016ac421c5b05ce58a"
5261
5271
  },
5262
5272
  {
5263
5273
  "path": "modules/government/board-idea-reads.js",
@@ -5312,7 +5322,7 @@
5312
5322
  {
5313
5323
  "path": "modules/government/db.js",
5314
5324
  "mode": "0000644",
5315
- "sha256": "1b93b386528a0e4e23f76e6291044a2d4e2947481fc299bb2d4878f1c77f041a"
5325
+ "sha256": "24bfa501fa90af1774b96441ef64d5a34f33ba70650e81acba08663cce13287b"
5316
5326
  },
5317
5327
  {
5318
5328
  "path": "modules/government/decision-board.js",
@@ -5337,7 +5347,7 @@
5337
5347
  {
5338
5348
  "path": "modules/government/docket.js",
5339
5349
  "mode": "0000644",
5340
- "sha256": "674fb84797d0482f8e6e4c186068886aa749372d71fa13ef9734db3f0f1d63e1"
5350
+ "sha256": "2a0375da59110b28be9de75644ea9ff6db4c99dd1663b4e99d9273fbb324f19f"
5341
5351
  },
5342
5352
  {
5343
5353
  "path": "modules/government/law-board.js",
@@ -5569,6 +5579,11 @@
5569
5579
  "mode": "0000644",
5570
5580
  "sha256": "8b01c624e9277fb29b7c7a9b04dcc0612d0e52cdeaeff6f7cd7907acd8f9dba3"
5571
5581
  },
5582
+ {
5583
+ "path": "modules/government/migrations/government_036_access_holders.sql",
5584
+ "mode": "0000644",
5585
+ "sha256": "76f264f74a0b4a76658c2ebc717d008253e03ed4439bd4bd3e9856a1dcc2cb80"
5586
+ },
5572
5587
  {
5573
5588
  "path": "modules/government/module.json",
5574
5589
  "mode": "0000644",
@@ -5617,7 +5632,7 @@
5617
5632
  {
5618
5633
  "path": "modules/government/routes/government.js",
5619
5634
  "mode": "0000644",
5620
- "sha256": "079d88c62a1ab31d46914613cf75e5c1284d7a4c8a7d45e77d0a3ecd50018a9d"
5635
+ "sha256": "252253d401ee4f17ddad15da6c6bc35a054217953d451f429bf263e044063c86"
5621
5636
  },
5622
5637
  {
5623
5638
  "path": "modules/government/routes/rank-sync.js",
@@ -5627,7 +5642,7 @@
5627
5642
  {
5628
5643
  "path": "modules/government/routing.js",
5629
5644
  "mode": "0000644",
5630
- "sha256": "72f48d19894f1fd9ea855af5b6b94d0a0751a2e5f09283c4f2b5df7a48240fa4"
5645
+ "sha256": "1283ff7b16acbccf9acb9fbca3fde97cbb13e93f7c633d9edf5983f1e204da25"
5631
5646
  },
5632
5647
  {
5633
5648
  "path": "modules/government/session-scopes.js",
@@ -5652,7 +5667,7 @@
5652
5667
  {
5653
5668
  "path": "modules/government/waiting.js",
5654
5669
  "mode": "0000644",
5655
- "sha256": "fcbf229d9b3aa3681d0683d1681b02beb4404f371f2fe281a154ab704816f234"
5670
+ "sha256": "418a472525da6c9ae9837cf3cc9c6871fba393d97008dc4d2424827adcd6cb14"
5656
5671
  },
5657
5672
  {
5658
5673
  "path": "modules/grading/CLAUDE.md",
@@ -5872,7 +5887,7 @@
5872
5887
  {
5873
5888
  "path": "modules/hall-ui/public/blockers-by-person.js",
5874
5889
  "mode": "0000644",
5875
- "sha256": "c29b4fde5aea580c7d4ea150f24076615566e1d94821277b30d881463cc47677"
5890
+ "sha256": "f542c67e508d4ee501bb6288cf4fe5190b300303a121a117c7c49bd080515d55"
5876
5891
  },
5877
5892
  {
5878
5893
  "path": "modules/hall-ui/public/blockers-lib.js",
@@ -6354,6 +6369,11 @@
6354
6369
  "mode": "0000644",
6355
6370
  "sha256": "2683d06cfad1bd17067c23094265e39a3be758d016971f77529c5155614b7c18"
6356
6371
  },
6372
+ {
6373
+ "path": "modules/hall-ui/public/government-access.js",
6374
+ "mode": "0000644",
6375
+ "sha256": "d902d33b0db1bfde9d47e819a4936ee03a2cc0c07ea52aa867c0a9279826fde0"
6376
+ },
6357
6377
  {
6358
6378
  "path": "modules/hall-ui/public/government.css",
6359
6379
  "mode": "0000644",
@@ -6362,7 +6382,7 @@
6362
6382
  {
6363
6383
  "path": "modules/hall-ui/public/government.html",
6364
6384
  "mode": "0000644",
6365
- "sha256": "b7eabd54565ac2ef5baf2a12dddad1020d7c589e5e0ab4ea3fae770ba0037291"
6385
+ "sha256": "3ecd77c2460fbc56bcef70de6fcdf0334ca374c13b59fc0ba298711182e9a40e"
6366
6386
  },
6367
6387
  {
6368
6388
  "path": "modules/hall-ui/public/government.js",
@@ -7147,7 +7167,7 @@
7147
7167
  {
7148
7168
  "path": "modules/hall-ui/records/blockers-people.md",
7149
7169
  "mode": "0000644",
7150
- "sha256": "3fdebc225eec539099d83715a1a2b3bb99e4b59d9853abda1cec9e5d13f9f360"
7170
+ "sha256": "b311adc999ae2c57520d9481aca892a002ef6022bac8fc0ce88a4567abbb0421"
7151
7171
  },
7152
7172
  {
7153
7173
  "path": "modules/hall-ui/records/builders-roster.md",
@@ -11372,12 +11392,12 @@
11372
11392
  {
11373
11393
  "path": "package-lock.json",
11374
11394
  "mode": "0000644",
11375
- "sha256": "32eba41f99ee8a8c4d99334b20c980c453221f577550f7933b4adb9dd81c3356"
11395
+ "sha256": "d54e9e0c5bbf39452f84da6adfcbb70db3083f841949f1395a90a09bb75a9c51"
11376
11396
  },
11377
11397
  {
11378
11398
  "path": "package.json",
11379
11399
  "mode": "0000644",
11380
- "sha256": "ca60febdf4138fe1d1f43c8b146e4f5d6b744d5b28eca3a0a25e83719a4b5ce6"
11400
+ "sha256": "3613bd5a007016140cadc02da91c0156995160ea2100b25d47b0453593320305"
11381
11401
  },
11382
11402
  {
11383
11403
  "path": "public-docs/index.html",
@@ -11397,7 +11417,7 @@
11397
11417
  {
11398
11418
  "path": "release-notes.json",
11399
11419
  "mode": "0000644",
11400
- "sha256": "64c7cb86936639d343f5e34cf8e6fc7fe35d8e092c13ce121b789b299580600e"
11420
+ "sha256": "855871603a1664076bf302b341cd91e05c8ca2c51082cb66f3ba76f0ceb37ad4"
11401
11421
  },
11402
11422
  {
11403
11423
  "path": "scripts/bongos/CLAUDE.md",
@@ -12037,7 +12057,7 @@
12037
12057
  {
12038
12058
  "path": "scripts/bongos/government-walk.js",
12039
12059
  "mode": "0000644",
12040
- "sha256": "8644798265c38b2eaa7cf515747d1a3bc92f11c094fc44d9470b55fef0857b54"
12060
+ "sha256": "91a66046b7e4bf98b96fb848abfab1f1a27939f8b9efcf52dd489f56d5faa359"
12041
12061
  },
12042
12062
  {
12043
12063
  "path": "scripts/bongos/grade-correlation-audit.js",
@@ -15027,7 +15047,7 @@
15027
15047
  {
15028
15048
  "path": "src/bongos/route-rank-check.js",
15029
15049
  "mode": "0000644",
15030
- "sha256": "308dbfa1b93cec577b2da45f6ea167fa50c47f44a97e23b9f505d3a90a1f5368"
15050
+ "sha256": "da1ce57cac0712b89a2269ba82b2b8a358ec37f0dbe9da05abd77184f6c173d7"
15031
15051
  },
15032
15052
  {
15033
15053
  "path": "src/bongos/routes.js",
@@ -15232,7 +15252,7 @@
15232
15252
  {
15233
15253
  "path": "src/module-api.js",
15234
15254
  "mode": "0000644",
15235
- "sha256": "d63c584a931f52d5ee4606a9ad97cbab71b3cc1b4dcafda222d9821a7f06f130"
15255
+ "sha256": "49d1cfec2aa19c29c98f5fc96c241bfb7f7815ea86e2fc42baccf715511e180b"
15236
15256
  },
15237
15257
  {
15238
15258
  "path": "src/module-loader/catalog.js",
@@ -15319,6 +15339,11 @@
15319
15339
  "mode": "0000644",
15320
15340
  "sha256": "598f0ee6d3634dc23aeb391d2dc9644dc6a0e8287d47de7d6374cceebe9c96f3"
15321
15341
  },
15342
+ {
15343
+ "path": "tests/access_holders.mjs",
15344
+ "mode": "0000644",
15345
+ "sha256": "224991c325e5bdb69cfffd3c6e69e91a0dd3ce1ed6c248cd987c725580cc686f"
15346
+ },
15322
15347
  {
15323
15348
  "path": "tests/access_requests_invite.mjs",
15324
15349
  "mode": "0000644",
@@ -17457,7 +17482,7 @@
17457
17482
  {
17458
17483
  "path": "tests/government_board_membership.mjs",
17459
17484
  "mode": "0000644",
17460
- "sha256": "aa36727bb3fe750783f0adb82235fa7b2e5b1013c01b773a12d2dff6f0c5ce78"
17485
+ "sha256": "0e0899661d540ae6ef3d411bcc691f70c7333413eac41b4cce9e8d99fdaa0e9c"
17461
17486
  },
17462
17487
  {
17463
17488
  "path": "tests/government_board_membership_db.mjs",
@@ -17652,7 +17677,7 @@
17652
17677
  {
17653
17678
  "path": "tests/government_routes.mjs",
17654
17679
  "mode": "0000644",
17655
- "sha256": "19d0676b4c9584364fe0e29e19f0dbfb84ede9e349917f215fd13e937f93d4e8"
17680
+ "sha256": "c7da57d62028ce95dd18db7b843ac5144cf71447bd5c247c25d646b40be8f14d"
17656
17681
  },
17657
17682
  {
17658
17683
  "path": "tests/government_routing.mjs",
@@ -17662,7 +17687,7 @@
17662
17687
  {
17663
17688
  "path": "tests/government_seed.mjs",
17664
17689
  "mode": "0000644",
17665
- "sha256": "26edc9b5cc102e00f42ac5720cfc59a60c13a7dfaed2dd33a53d636f91eae65b"
17690
+ "sha256": "52cbded8e3e5eba04edc62facf4998b684a23db0080e8804a9754a7c01229300"
17666
17691
  },
17667
17692
  {
17668
17693
  "path": "tests/government_session_scope.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
- - 631 operations across 79 resource groups
8
+ - 634 operations across 79 resource groups
9
9
 
10
10
  ## Use it from your project
11
11
 
@@ -541,6 +541,12 @@ function createClient(opts = {}) {
541
541
  getGoalsSuggestions: (args) => request("GET", "/goals/suggestions", { hasBody: false }, args),
542
542
  },
543
543
  "government": {
544
+ // GET /government/access — rank: any-builder — GET /government/access
545
+ getGovernmentAccess: (args) => request("GET", "/government/access", { hasBody: false }, args),
546
+ // POST /government/access/{accessKey}/holders — rank: archon — POST /government/access/:accessKey/holders
547
+ postGovernmentAccessAccessKeyHolders: (args) => request("POST", "/government/access/{accessKey}/holders", { hasBody: true }, args),
548
+ // DELETE /government/access/{accessKey}/holders/{builderId} — rank: archon — DELETE /government/access/:accessKey/holders/:builderId
549
+ deleteGovernmentAccessAccessKeyHoldersBuilderId: (args) => request("DELETE", "/government/access/{accessKey}/holders/{builderId}", { hasBody: false }, args),
544
550
  // PUT /government/asks/{matterId} — rank: any-builder — PUT /government/asks/:matterId
545
551
  putGovernmentAsksMatterId: (args) => request("PUT", "/government/asks/{matterId}", { hasBody: true }, args),
546
552
  // POST /government/asks/{matterId}/pass — rank: any-builder — POST /government/asks/:matterId/pass
@@ -540,6 +540,12 @@ function createClient(opts = {}) {
540
540
  getGoalsSuggestions: (args) => request("GET", "/goals/suggestions", { hasBody: false }, args),
541
541
  },
542
542
  "government": {
543
+ // GET /government/access — rank: any-builder — GET /government/access
544
+ getGovernmentAccess: (args) => request("GET", "/government/access", { hasBody: false }, args),
545
+ // POST /government/access/{accessKey}/holders — rank: archon — POST /government/access/:accessKey/holders
546
+ postGovernmentAccessAccessKeyHolders: (args) => request("POST", "/government/access/{accessKey}/holders", { hasBody: true }, args),
547
+ // DELETE /government/access/{accessKey}/holders/{builderId} — rank: archon — DELETE /government/access/:accessKey/holders/:builderId
548
+ deleteGovernmentAccessAccessKeyHoldersBuilderId: (args) => request("DELETE", "/government/access/{accessKey}/holders/{builderId}", { hasBody: false }, args),
543
549
  // PUT /government/asks/{matterId} — rank: any-builder — PUT /government/asks/:matterId
544
550
  putGovernmentAsksMatterId: (args) => request("PUT", "/government/asks/{matterId}", { hasBody: true }, args),
545
551
  // POST /government/asks/{matterId}/pass — rank: any-builder — POST /government/asks/:matterId/pass
@@ -1158,6 +1158,12 @@ export interface BongosClient {
1158
1158
  getGoalsSuggestions(args?: RequestArgs): Promise<ApiResponse>;
1159
1159
  };
1160
1160
  "government": {
1161
+ /** GET /government/access — rank: any-builder */
1162
+ getGovernmentAccess(args?: RequestArgs): Promise<ApiResponse>;
1163
+ /** POST /government/access/{accessKey}/holders — rank: archon */
1164
+ postGovernmentAccessAccessKeyHolders(args?: RequestArgs): Promise<ApiResponse>;
1165
+ /** DELETE /government/access/{accessKey}/holders/{builderId} — rank: archon */
1166
+ deleteGovernmentAccessAccessKeyHoldersBuilderId(args?: RequestArgs): Promise<ApiResponse>;
1161
1167
  /** PUT /government/asks/{matterId} — rank: any-builder */
1162
1168
  putGovernmentAsksMatterId(args?: RequestArgs): Promise<PutGovernmentAsksMatterIdResponse>;
1163
1169
  /** POST /government/asks/{matterId}/pass — rank: any-builder */
@@ -537,6 +537,12 @@ export function createClient(opts = {}) {
537
537
  getGoalsSuggestions: (args) => request("GET", "/goals/suggestions", { hasBody: false }, args),
538
538
  },
539
539
  "government": {
540
+ // GET /government/access — rank: any-builder — GET /government/access
541
+ getGovernmentAccess: (args) => request("GET", "/government/access", { hasBody: false }, args),
542
+ // POST /government/access/{accessKey}/holders — rank: archon — POST /government/access/:accessKey/holders
543
+ postGovernmentAccessAccessKeyHolders: (args) => request("POST", "/government/access/{accessKey}/holders", { hasBody: true }, args),
544
+ // DELETE /government/access/{accessKey}/holders/{builderId} — rank: archon — DELETE /government/access/:accessKey/holders/:builderId
545
+ deleteGovernmentAccessAccessKeyHoldersBuilderId: (args) => request("DELETE", "/government/access/{accessKey}/holders/{builderId}", { hasBody: false }, args),
540
546
  // PUT /government/asks/{matterId} — rank: any-builder — PUT /government/asks/:matterId
541
547
  putGovernmentAsksMatterId: (args) => request("PUT", "/government/asks/{matterId}", { hasBody: true }, args),
542
548
  // POST /government/asks/{matterId}/pass — rank: any-builder — POST /government/asks/:matterId/pass
@@ -60,7 +60,18 @@ A pay type becomes switchable only after its gate is cleared and recorded.
60
60
  | Credit-weighted pool | Cash rules plus Art. III | Project | Decision 9 in force, model inputs visible, signed rule |
61
61
  | Non-monetary tracks | Volunteer and learner rules; Art. VII | Project | Guardian consent for ages 13 to 15, no cash redemption of any credit |
62
62
  | Self-managed payout | The project's own obligations | Project alone | A label saying Bongos moves and guarantees nothing |
63
- | EU labour payments | EU Platform Work Directive | Project; Verro | Not enabled until the per-country analysis is complete (Art. IV) |
63
+ | EU labour payments | EU Platform Work Directive | Project; Verro Labs (the planned holding company of Cloud Bongos LLC) | Not enabled until the per-country analysis is complete (Art. IV) |
64
+
65
+ ## Amendment, 2026-10-29: the owner's answers to the open questions
66
+
67
+ The owner answered the questions left open by the payments build plan ([task 1004970](https://cloudbongos.com/builders#/task/1004970)). Where an answer narrows a decision above, the answer wins.
68
+
69
+ - **Decision 2, "a project may change or replace it", is narrowed.** For now a project may change and tune the Bongos Standard Credit System's settings. It may not switch credits off, and there is no plug-in formula.
70
+ - **The credit reward stays required by default.** [ADR 0096](0096-require-reward-before-workable.md)'s rule stays on for every new project, not only for projects that pick the standard system.
71
+ - **Decision 3: a project's pay policy lives in the database.** It is changed on the project's settings page, and every change is kept in an audit trail (who, when, what). It does not live in the branding pack. [Task 1004990](https://cloudbongos.com/builders#/task/1004990) builds to this.
72
+ - **Modules already priced in credits are not hidden.** Each author is asked to set a cash price, and the listing stays up meanwhile. [Task 1004989](https://cloudbongos.com/builders#/task/1004989) builds to this. One question is still open. Decision 2 says credits are not spendable as money, so whether an interim listing may still be bought *with credits* (rather than only shown) needs the owner's word before that task ships.
73
+ - **"Verro" is Verro Labs**, the planned holding company of Cloud Bongos LLC and related entities, as now named in the EU labour row above.
74
+ - **ADR 0054's "credits are equity" framing is formally superseded**, as recorded in ADR 0054 itself ([task 1004967](https://cloudbongos.com/builders#/task/1004967)).
64
75
 
65
76
  ## Held for counsel (these block building the money-moving tasks)
66
77
 
@@ -503,7 +503,7 @@ These 20 numbers are each shared by exactly two files. They are **accepted histo
503
503
  | 0382 | [**A hardware card is a passkey step-up check, switched on per builder by an Archon** ([task 1004676](https://cloudbongos.com/builders#/task/1004676), proposed). No WebAuthn exists today; sign-in is GitHub OAuth or the hub IdP. **D1:** WebAuthn via a vetted library. **D2:** the card is a second factor, a server-recorded step-up, never the first. **D3:** register first; the requirement needs a registered card. **D4:** an Archon switches it on per builder, default off. **D5:** guards rank changes, deploy, session revoke, payouts. No PC/SC reader needed. Rejected: PC/SC middleware, card as sole login.](0382-a-hardware-card-is-a-passkey-step-up-an-archon-switches-on-per-builder.md) | auth / security |
504
504
  | 0383 | [**Sessions end after ten idle days, CLI included** ([task 1004830](https://cloudbongos.com/builders#/task/1004830)). Supersedes ADR 0294. Any session unused for 10 days stops authenticating and drops off the Active sessions list; measured on last_used_at, so it is an idle limit, not a ceiling. Rejected: hiding old sessions while they stay live; browser-only.](0383-sessions-end-after-ten-idle-days.md) | auth / security |
505
505
  | 0384 | [**The /raise investor page is a hub module that builders edit in place** ([task 1004847](https://cloudbongos.com/builders#/task/1004847)). A `raise` module, enabled only on the hub: every write is an audited `/api/bongos/raise/*` route, the page itself a GET-only `raise.web` port core mounts at /raise; team editing rides the ordinary builder session (any active builder, owner 2026-10-25); investors get a hashed-token session; /raise is exempt from the pre-launch gate. Everything, copy included, publishes with the core (owner's call); only the password hash stays in env.](0384-the-raise-page-is-a-hub-module-builders-edit-in-place.md) | modules / pages |
506
- | 0385 | [**Money lives with a licensed processor, credits stay a project-scoped meter, and each project sets its own pay** ([task 1004905](https://cloudbongos.com/builders#/task/1004905) · goal 1000092; also records tasks 1003180, 1003181 and 1004909). Bongos holds no user money and never redeems credits for cash; projects choose pay form and funding rule; payouts run under a project-signed rule; module sales carry a buyer-paid platform fee (processing cost plus 1 percent, per ADR 0392); crypto stays out. Six legal items are held for counsel and block the money-moving tasks.](0385-money-lives-with-a-processor-credits-stay-a-project-meter.md) | economy / legal |
506
+ | 0385 | [**Money lives with a licensed processor, credits stay a project-scoped meter, and each project sets its own pay** ([task 1004905](https://cloudbongos.com/builders#/task/1004905) · goal 1000092; also records tasks 1003180, 1003181 and 1004909). Bongos holds no user money and never redeems credits for cash; projects choose pay form and funding rule; payouts run under a project-signed rule; module sales carry a buyer-paid platform fee (processing cost plus 1 percent, per ADR 0392); crypto stays out. Six legal items are held for counsel and block the money-moving tasks.](0385-money-lives-with-a-processor-credits-stay-a-project-meter.md) _(amended 2026-10-29 with the owner's answers, task 1004970: credits tuned not switched off, credit reward required by default, pay policy in the database, Verro = Verro Labs)_ | economy / legal |
507
507
  | 0386 | [**The funding wall is a per-project rule: hold at claim, refuse at completion, or carry on and record the shortfall** ([task 1003181](https://cloudbongos.com/builders#/task/1003181) · goal 1000092). Bongos sets no wall of its own; a project that sets nothing gets the claim-time hold, which refuses before any work is spent and holds the estimate so claims cannot over-commit the balance.](0386-the-funding-wall-is-a-per-project-rule-claim-time-hold-by-default.md) | economy |
508
508
  | 0387 | [**Two ledgers: credits measure work, money stays with the processor** ([task 1003180](https://cloudbongos.com/builders#/task/1003180) · goal 1000092). Resolves ADR 0054's double denomination by splitting, not by re-denominating credits into cents: `credit_log` stays a work meter with no money column, money gets its own cents record tied to the processor, no dollar value is read off a credit, and historic rows are neither rewritten nor classified.](0387-two-ledgers-credits-measure-work-money-stays-with-the-processor.md) | economy |
509
509
  | 0388 | [**A module sale is split by the project's own rule, and the buyer pays the platform fee on top** ([task 1004909](https://cloudbongos.com/builders#/task/1004909) · goal 1000092). The platform fee is the processor's cost plus 1 percent of the price, collected for Cloud Bongos LLC and never deducted from contributors; the project sets the seller share and contributor pool, the pool is divided by recorded contribution, and no paid module lists without a split rule.](0388-a-module-sale-is-split-by-the-project-the-buyer-pays-the-platform-fee.md) | economy / marketplace |
@@ -9395,6 +9395,145 @@
9395
9395
  ]
9396
9396
  }
9397
9397
  },
9398
+ "/government/access": {
9399
+ "get": {
9400
+ "operationId": "get_government_access",
9401
+ "tags": [
9402
+ "government"
9403
+ ],
9404
+ "summary": "GET /government/access",
9405
+ "description": "**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).\n\n**Permissions:** `board.vote.cast` (all required).",
9406
+ "x-rank": "any-builder",
9407
+ "x-source": "modules/government/routes/government.js",
9408
+ "x-permissions": [
9409
+ "board.vote.cast"
9410
+ ],
9411
+ "responses": {
9412
+ "200": {
9413
+ "description": "Success."
9414
+ },
9415
+ "400": {
9416
+ "$ref": "#/components/responses/BadRequest"
9417
+ },
9418
+ "401": {
9419
+ "$ref": "#/components/responses/Unauthorized"
9420
+ },
9421
+ "403": {
9422
+ "$ref": "#/components/responses/Forbidden"
9423
+ }
9424
+ },
9425
+ "security": [
9426
+ {
9427
+ "builderSession": []
9428
+ }
9429
+ ]
9430
+ }
9431
+ },
9432
+ "/government/access/{accessKey}/holders": {
9433
+ "post": {
9434
+ "operationId": "post_government_access_accessKey_holders",
9435
+ "tags": [
9436
+ "government"
9437
+ ],
9438
+ "summary": "POST /government/access/:accessKey/holders",
9439
+ "description": "**Rank:** `archon` — Archon only (rank and identity management + the escalation keys — the trust boundary).\n\n**Permissions:** `government.manage` (all required).",
9440
+ "x-rank": "archon",
9441
+ "x-source": "modules/government/routes/government.js",
9442
+ "x-permissions": [
9443
+ "government.manage"
9444
+ ],
9445
+ "parameters": [
9446
+ {
9447
+ "name": "accessKey",
9448
+ "in": "path",
9449
+ "required": true,
9450
+ "schema": {
9451
+ "type": "string"
9452
+ },
9453
+ "description": "Path parameter `accessKey`."
9454
+ }
9455
+ ],
9456
+ "responses": {
9457
+ "200": {
9458
+ "description": "Success."
9459
+ },
9460
+ "400": {
9461
+ "$ref": "#/components/responses/BadRequest"
9462
+ },
9463
+ "401": {
9464
+ "$ref": "#/components/responses/Unauthorized"
9465
+ },
9466
+ "403": {
9467
+ "$ref": "#/components/responses/Forbidden"
9468
+ },
9469
+ "404": {
9470
+ "$ref": "#/components/responses/NotFound"
9471
+ }
9472
+ },
9473
+ "security": [
9474
+ {
9475
+ "builderSession": []
9476
+ }
9477
+ ]
9478
+ }
9479
+ },
9480
+ "/government/access/{accessKey}/holders/{builderId}": {
9481
+ "delete": {
9482
+ "operationId": "delete_government_access_accessKey_holders_builderId",
9483
+ "tags": [
9484
+ "government"
9485
+ ],
9486
+ "summary": "DELETE /government/access/:accessKey/holders/:builderId",
9487
+ "description": "**Rank:** `archon` — Archon only (rank and identity management + the escalation keys — the trust boundary).\n\n**Permissions:** `government.manage` (all required).",
9488
+ "x-rank": "archon",
9489
+ "x-source": "modules/government/routes/government.js",
9490
+ "x-permissions": [
9491
+ "government.manage"
9492
+ ],
9493
+ "parameters": [
9494
+ {
9495
+ "name": "accessKey",
9496
+ "in": "path",
9497
+ "required": true,
9498
+ "schema": {
9499
+ "type": "string"
9500
+ },
9501
+ "description": "Path parameter `accessKey`."
9502
+ },
9503
+ {
9504
+ "name": "builderId",
9505
+ "in": "path",
9506
+ "required": true,
9507
+ "schema": {
9508
+ "type": "string"
9509
+ },
9510
+ "description": "Path parameter `builderId`."
9511
+ }
9512
+ ],
9513
+ "responses": {
9514
+ "200": {
9515
+ "description": "Success."
9516
+ },
9517
+ "400": {
9518
+ "$ref": "#/components/responses/BadRequest"
9519
+ },
9520
+ "401": {
9521
+ "$ref": "#/components/responses/Unauthorized"
9522
+ },
9523
+ "403": {
9524
+ "$ref": "#/components/responses/Forbidden"
9525
+ },
9526
+ "404": {
9527
+ "$ref": "#/components/responses/NotFound"
9528
+ }
9529
+ },
9530
+ "security": [
9531
+ {
9532
+ "builderSession": []
9533
+ }
9534
+ ]
9535
+ }
9536
+ },
9398
9537
  "/government/asks/check": {
9399
9538
  "post": {
9400
9539
  "operationId": "post_government_asks_check",
@@ -40180,7 +40319,7 @@
40180
40319
  "description": "A required dependency/feature is not configured or is temporarily down."
40181
40320
  }
40182
40321
  },
40183
- "x-endpoint-count": 631,
40322
+ "x-endpoint-count": 634,
40184
40323
  "x-schema-count": 684,
40185
40324
  "x-undocumented-bodies": 12,
40186
40325
  "x-response-schemas": 440,
@@ -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. 631 endpoints across 104 route files.
5
+ > **Generated from the live route files** — the route file is authoritative. 634 endpoints across 104 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/0016-trust-boundary-server-enforced-permissions.md)): `public` < `any-builder` < `metic+archon` < `archon`.
@@ -363,10 +363,13 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
363
363
  | GET | `/api/bongos/goals/rollups` | `any-builder` | — | GET /goals/rollups?version= — one small row per goal: readiness counters, the last-activity timestamp, the craft set, and the next claima… |
364
364
  | GET | `/api/bongos/goals/suggestions` | `any-builder` | — | GET /goals/suggestions — "which goal should this draft live in?", answered before anything is created (task 1003062 / R07). |
365
365
 
366
- ## `government` (38)
366
+ ## `government` (41)
367
367
 
368
368
  | Method | Path | Rank | Body | Description |
369
369
  |---|---|---|---|---|
370
+ | GET | `/api/bongos/government/access` | `any-builder` | — | |
371
+ | POST | `/api/bongos/government/access/:accessKey/holders` | `archon` | — | |
372
+ | DELETE | `/api/bongos/government/access/:accessKey/holders/:builderId` | `archon` | — | |
370
373
  | PUT | `/api/bongos/government/asks/:matterId` | `any-builder` | — | board.vote.cast — put an ASK on a docket matter (task 1004703): the one shape every request from an agent to a person takes. |
371
374
  | POST | `/api/bongos/government/asks/:matterId/pass` | `any-builder` | `seat` | board.vote.cast — PASS AN ASK ON to another seat (task 1004705, the direction desk). |
372
375
  | POST | `/api/bongos/government/asks/:matterId/unclear` | `any-builder` | `note` | board.vote.cast — "I DON'T UNDERSTAND THIS" (the "?" on a city card, owner 2026-10-23): puts a matter the flagger can see on the reword l… |