@bongos/core 1.24.10 → 1.24.11

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 (33) hide show
  1. package/.bongos-core.json +55 -35
  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 +10 -1
  6. package/clients/bongos-client/index.mjs +6 -0
  7. package/docs/api/openapi.json +132 -5
  8. package/docs/api-reference.md +10 -3
  9. package/docs/architecture.md +4 -0
  10. package/docs/copy-inventory.md +65 -59
  11. package/docs/copy-registry.json +123 -69
  12. package/docs/module-api-changelog.md +2 -0
  13. package/docs/page-readings.json +33 -33
  14. package/modules/government/decision-rules.js +1 -0
  15. package/modules/hall-ui/public/project-settings.css +12 -0
  16. package/modules/hall-ui/public/project-settings.js +63 -1
  17. package/modules/hall-ui/public/task.js +34 -1
  18. package/modules/lifecycle/migrations/lifecycle_018_pay_terms.sql +64 -0
  19. package/modules/lifecycle/pay-terms.js +171 -0
  20. package/modules/lifecycle/routes/project-settings.js +94 -0
  21. package/modules/lifecycle/routes/task-write-routes.js +35 -4
  22. package/package-lock.json +2 -2
  23. package/package.json +1 -1
  24. package/release-notes.json +6 -0
  25. package/scripts/bongos/government-walk.js +1 -0
  26. package/scripts/bongos/run-unit-tests.js +4 -0
  27. package/scripts/bongos/start.js +42 -2
  28. package/src/module-api.js +1 -1
  29. package/tests/government_act_alone_buildings.mjs +1 -0
  30. package/tests/patch_gate_ordering.mjs +3 -0
  31. package/tests/pay_terms.mjs +254 -0
  32. package/tests/pay_terms_db.mjs +86 -0
  33. package/tests/project_settings_page.mjs +25 -6
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.10",
6
- "core_contract": "1.24.10",
7
- "source_commit": "34bba5895307e737786b9b76f81a42dcbe2ca892",
5
+ "core_version": "1.24.11",
6
+ "core_contract": "1.24.11",
7
+ "source_commit": "0f85afc89cbcab23d402a439c728696980cc5cf3",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-10-30T09:59:13.558Z",
9
+ "built_at": "2026-10-30T10:49:40.533Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 629,
13
13
  "agent_docs_stubbed": 32,
14
- "functional_verbatim": 3747,
14
+ "functional_verbatim": 3751,
15
15
  "rules": 3,
16
16
  "gate_literals": 3,
17
17
  "gate": "passed"
18
18
  },
19
- "file_count": 4409,
20
- "tree_sha256": "2fd410a70b2fdd86e65ca5adf8f19c9668a4930b95c056164fb50e355f5117d1",
19
+ "file_count": 4413,
20
+ "tree_sha256": "6dbaddc967f3ae8de8ee96a736e45eb4fa33f4732169836fe7bc5d999e6c12bb",
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": "ab634ea0457202eaf97cc25a2b4f15ee90e4644df7a9a3aa326c540e24bf3895"
330
+ "sha256": "54fa3d2516f4095891db50ca2e6722f30b083a6f782d5d83768472751238872d"
331
331
  },
332
332
  {
333
333
  "path": "clients/bongos-client/bongos-client.global.js",
334
334
  "mode": "0000644",
335
- "sha256": "ba9b52d661f7ecc08f390401a2c3eecd01a13cded1d3bc902c196f25b6caa252"
335
+ "sha256": "d7ca7c5f90e10d9831390c44b48f083d3001e25765e1266e5b3e3091c9f4bd41"
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": "025963a5170717981d0df7d0b583bafa497f1e9c44f5c849df337b2f541c926f"
345
+ "sha256": "43307876194957fad2d87de576fee3b0daff54aaca6e76a191663494145ca1c4"
346
346
  },
347
347
  {
348
348
  "path": "clients/bongos-client/index.d.ts",
349
349
  "mode": "0000644",
350
- "sha256": "26147b2420580754957aa3ad4cd5a8a70c86e5e62e1a948ddac8d81727f412fc"
350
+ "sha256": "d9b97f43d54f9f483a5249ea139ce72a2e99dda37020069a5750026d4fb46daf"
351
351
  },
352
352
  {
353
353
  "path": "clients/bongos-client/index.mjs",
354
354
  "mode": "0000644",
355
- "sha256": "81a134502f7b526d651478f8f3b52fbf483f36433f3b9f57f2fbe66e34c0517d"
355
+ "sha256": "16c9de0860b75098953af7ac76abefda94314d6aa347fa0ef457bb63828add1f"
356
356
  },
357
357
  {
358
358
  "path": "clients/bongos-client/package.json",
@@ -2447,17 +2447,17 @@
2447
2447
  {
2448
2448
  "path": "docs/api-reference.md",
2449
2449
  "mode": "0000644",
2450
- "sha256": "3720a4cb83a3d7ea831707d517af3681b43186094a15f5ad7fb4d3e411c3b0c2"
2450
+ "sha256": "9178e55a680b093cea30c75282d1d8d74c248723f87857f49d3fe9ba426902a8"
2451
2451
  },
2452
2452
  {
2453
2453
  "path": "docs/api/openapi.json",
2454
2454
  "mode": "0000644",
2455
- "sha256": "bc3b9ba98481b3b9a3dc7f6d67d2d82ffa6b24857a511fe0e313b6164ebd44a2"
2455
+ "sha256": "d2f60403e3eb1ad448901e491899d6925feacf81ff288bcbdd66236bad694285"
2456
2456
  },
2457
2457
  {
2458
2458
  "path": "docs/architecture.md",
2459
2459
  "mode": "0000644",
2460
- "sha256": "95f3a2b4c7bbbf3527c59cc176732022dfc98238c191c00dab1e0857461fbc34"
2460
+ "sha256": "7c852997f1364f38835d8856180daf308f73bcd068e44f1202a865d852c8dd37"
2461
2461
  },
2462
2462
  {
2463
2463
  "path": "docs/branding-contract.md",
@@ -2477,12 +2477,12 @@
2477
2477
  {
2478
2478
  "path": "docs/copy-inventory.md",
2479
2479
  "mode": "0000644",
2480
- "sha256": "3e7ea07b1838d4d1846c9f71f5c43bc0973639c2b4fd629d45e95f753c73726c"
2480
+ "sha256": "e012225cca71b38bb639318fb41674e0ad3f3098e615b5042cf70652acf0b3bb"
2481
2481
  },
2482
2482
  {
2483
2483
  "path": "docs/copy-registry.json",
2484
2484
  "mode": "0000644",
2485
- "sha256": "77bd20ae4a813611580cf6597f55b57766f259cc8596c1896f9b9a3388b33b86"
2485
+ "sha256": "28bda0daa236eca2f52acdff90979f96e27a9672f1e5889dfb5ef49b64fa4635"
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": "6f1a18a7f26eaf3e1d7a9f2f44ef0c7c1af8cc4361810f734dc5e1bf90a1fcc7"
2995
+ "sha256": "d6bd0ff893a42742f1eaee6a772efbfe5b55268b4ddb463c97334e187d75e066"
2996
2996
  },
2997
2997
  {
2998
2998
  "path": "docs/modules-contract.md",
@@ -3082,7 +3082,7 @@
3082
3082
  {
3083
3083
  "path": "docs/page-readings.json",
3084
3084
  "mode": "0000644",
3085
- "sha256": "1d1b3aead24222e2f686a774a1db46eb48ea4caf97796b98f529218d9b597fb3"
3085
+ "sha256": "b0ab5b7fb6457ed102dacad123d130c10aba2eee092ec7670afc267fcf507c0b"
3086
3086
  },
3087
3087
  {
3088
3088
  "path": "docs/project-context.template.md",
@@ -5347,7 +5347,7 @@
5347
5347
  {
5348
5348
  "path": "modules/government/decision-rules.js",
5349
5349
  "mode": "0000644",
5350
- "sha256": "adba77e3af1da714230fb08f4729db04a697d502d3c1bb76a7f01bade3734f66"
5350
+ "sha256": "49128cfa99db804ea7bd07097e86f72d74daa2c845b3b0c93d49e1f80a7e33d8"
5351
5351
  },
5352
5352
  {
5353
5353
  "path": "modules/government/docket-floors.js",
@@ -6722,7 +6722,7 @@
6722
6722
  {
6723
6723
  "path": "modules/hall-ui/public/project-settings.css",
6724
6724
  "mode": "0000644",
6725
- "sha256": "d554081a9d5d8c702a00e3f305b9927a3e9b72c1c34757876e874f0ab6ed61f4"
6725
+ "sha256": "d628173de0c1d5e7e109bf322370fc635dd563e559e1aa5536172f592d617edf"
6726
6726
  },
6727
6727
  {
6728
6728
  "path": "modules/hall-ui/public/project-settings.html",
@@ -6732,7 +6732,7 @@
6732
6732
  {
6733
6733
  "path": "modules/hall-ui/public/project-settings.js",
6734
6734
  "mode": "0000644",
6735
- "sha256": "3730c8ed127d44dc9dab5c60f57c6dfdf045b13ed7a99dc704c1515173295ac4"
6735
+ "sha256": "a6ec54623fcf19ee6070ca5f06b38c6e9746ba86d5fe24f48ed3c4c451f86d45"
6736
6736
  },
6737
6737
  {
6738
6738
  "path": "modules/hall-ui/public/ranks-founding.states.json",
@@ -7077,7 +7077,7 @@
7077
7077
  {
7078
7078
  "path": "modules/hall-ui/public/task.js",
7079
7079
  "mode": "0000644",
7080
- "sha256": "a34f2ad2fac9f9dad2c5cb7a7110c877a5cd25ba40244a28d7ea0c17726a7b37"
7080
+ "sha256": "1dcf247258c670bb496969a65f9aa38319213639af25d028ece2b32812c5d60f"
7081
7081
  },
7082
7082
  {
7083
7083
  "path": "modules/hall-ui/public/task.states.json",
@@ -8024,6 +8024,11 @@
8024
8024
  "mode": "0000644",
8025
8025
  "sha256": "47cb5fac80a94bb458f8078794ed2a382144e5503771e3db09bb65487113ee1a"
8026
8026
  },
8027
+ {
8028
+ "path": "modules/lifecycle/migrations/lifecycle_018_pay_terms.sql",
8029
+ "mode": "0000644",
8030
+ "sha256": "48dd805da15cdda9fcb2b716b8f5231b0f958e1ad3c2a6ae2e8ec9a6ba3a0047"
8031
+ },
8027
8032
  {
8028
8033
  "path": "modules/lifecycle/mingle.js",
8029
8034
  "mode": "0000644",
@@ -8084,6 +8089,11 @@
8084
8089
  "mode": "0000644",
8085
8090
  "sha256": "c6b5cb868778d1043029c0f17640caa4e2124e13783319e33cbdb56b0135ba45"
8086
8091
  },
8092
+ {
8093
+ "path": "modules/lifecycle/pay-terms.js",
8094
+ "mode": "0000644",
8095
+ "sha256": "32e743a3db33d6102c4e88e481e49ffae51f18bddd753067032b9bfc99e019f8"
8096
+ },
8087
8097
  {
8088
8098
  "path": "modules/lifecycle/pg-constraint-fail.js",
8089
8099
  "mode": "0000644",
@@ -8222,7 +8232,7 @@
8222
8232
  {
8223
8233
  "path": "modules/lifecycle/routes/project-settings.js",
8224
8234
  "mode": "0000644",
8225
- "sha256": "8579902eadcfa94f425c840b71db943928d4c7d4f2cb6a6b89506767853ef311"
8235
+ "sha256": "4f0a0e2ec6fc703c9683595c83d448069b29bf85dc507f3960e6dcf2c72da4e8"
8226
8236
  },
8227
8237
  {
8228
8238
  "path": "modules/lifecycle/routes/recommendations.js",
@@ -8257,7 +8267,7 @@
8257
8267
  {
8258
8268
  "path": "modules/lifecycle/routes/task-write-routes.js",
8259
8269
  "mode": "0000644",
8260
- "sha256": "df24d82db034006f4993dd0888f726bec6a2e1265b6f1a7fafe2d198f089b757"
8270
+ "sha256": "2cb57c7fafd7d62337c99309c1ea92bb03f89c18da577b0f19ec983c6bb9960c"
8261
8271
  },
8262
8272
  {
8263
8273
  "path": "modules/lifecycle/routes/tasks.js",
@@ -11527,12 +11537,12 @@
11527
11537
  {
11528
11538
  "path": "package-lock.json",
11529
11539
  "mode": "0000644",
11530
- "sha256": "9688d4c934651f929dca89c8abb20d57e87d64908806ee70695e848d645f249e"
11540
+ "sha256": "3c012d104affe4df40fc07077a841281ca63f61d9019fdf69dfab810c08bd5bd"
11531
11541
  },
11532
11542
  {
11533
11543
  "path": "package.json",
11534
11544
  "mode": "0000644",
11535
- "sha256": "a321ad1cdd9c1b6240b2b35c0f2b6963b65d925038989ee23e19773e3a046310"
11545
+ "sha256": "ca628e7aee36246d6f09e64c1eb371967ca4bb0f8cf10ee881d59b046487a9e5"
11536
11546
  },
11537
11547
  {
11538
11548
  "path": "public-docs/index.html",
@@ -11552,7 +11562,7 @@
11552
11562
  {
11553
11563
  "path": "release-notes.json",
11554
11564
  "mode": "0000644",
11555
- "sha256": "57302535e8b5e1bf8902674a628abdf182bf632843fbd22422ba89cf97a9a6a6"
11565
+ "sha256": "124ce8ea3af7ef1bdaa604915fd8b825bd863c24c61d5c573d7d04e539bb0ae1"
11556
11566
  },
11557
11567
  {
11558
11568
  "path": "scripts/bongos/CLAUDE.md",
@@ -12192,7 +12202,7 @@
12192
12202
  {
12193
12203
  "path": "scripts/bongos/government-walk.js",
12194
12204
  "mode": "0000644",
12195
- "sha256": "d20763a3e5d87f5617a42a7e312c25a16ab8f125a1baab51cf2a4324729bffcf"
12205
+ "sha256": "024c5d3568db22b752cafc1de249f7abe487dbbca91a0f78dad7d8e5b93b81a5"
12196
12206
  },
12197
12207
  {
12198
12208
  "path": "scripts/bongos/grade-correlation-audit.js",
@@ -12777,7 +12787,7 @@
12777
12787
  {
12778
12788
  "path": "scripts/bongos/run-unit-tests.js",
12779
12789
  "mode": "0000644",
12780
- "sha256": "59bce9b896eb24b1650ce546b16c28111e148a22b33d58db3a75c48b221ac48f"
12790
+ "sha256": "f1503d132b13cc5e49c4f08272c43a23a1c1fe76b1bfcefa89690d22104b3c0a"
12781
12791
  },
12782
12792
  {
12783
12793
  "path": "scripts/bongos/runner-drift.js",
@@ -13052,7 +13062,7 @@
13052
13062
  {
13053
13063
  "path": "scripts/bongos/start.js",
13054
13064
  "mode": "0000644",
13055
- "sha256": "b8e687691bbf3d0773051a893acd986924464d06d2a6795104d565bf42cf10c1"
13065
+ "sha256": "7d7be325ec46149fad15e0a71d4f00d310e7f53fbfa0ff926d8f4c7aba3a8c68"
13056
13066
  },
13057
13067
  {
13058
13068
  "path": "scripts/bongos/status.js",
@@ -15397,7 +15407,7 @@
15397
15407
  {
15398
15408
  "path": "src/module-api.js",
15399
15409
  "mode": "0000644",
15400
- "sha256": "8f018c582864b12bc3f2eca367041b4e7cabf639a0553fe964b007134d3bbc53"
15410
+ "sha256": "9ff528e554e5c850f0bb28d26249518ccf236a2cbc4273b54bb5d5f8e9f4ccd4"
15401
15411
  },
15402
15412
  {
15403
15413
  "path": "src/module-loader/catalog.js",
@@ -17602,7 +17612,7 @@
17602
17612
  {
17603
17613
  "path": "tests/government_act_alone_buildings.mjs",
17604
17614
  "mode": "0000644",
17605
- "sha256": "8583a2f565f9d7d52fa4f3c06e61268b54b9995603d8fe24afcf6760b6e4e562"
17615
+ "sha256": "ffb269cb08f61a0cafa046bd96d45b5fb72165da342768735a4e1e0604505e07"
17606
17616
  },
17607
17617
  {
17608
17618
  "path": "tests/government_agent_asks.mjs",
@@ -19832,7 +19842,7 @@
19832
19842
  {
19833
19843
  "path": "tests/patch_gate_ordering.mjs",
19834
19844
  "mode": "0000644",
19835
- "sha256": "db5e934ef61ddc8dc5804f25a9c84c04f30570db708fd6c77a157e101c69b4d4"
19845
+ "sha256": "0186451ede29e3f203b57050b6a6022eb368403d50f68abdb11e0d941c91f5bc"
19836
19846
  },
19837
19847
  {
19838
19848
  "path": "tests/patch_value_summary_e2e.mjs",
@@ -19849,6 +19859,16 @@
19849
19859
  "mode": "0000644",
19850
19860
  "sha256": "6c623a5abe9aadf4821ad8ca291fb5d7805a7a5bc874bfc3cd7e51e83de289d2"
19851
19861
  },
19862
+ {
19863
+ "path": "tests/pay_terms.mjs",
19864
+ "mode": "0000644",
19865
+ "sha256": "c00d9fde876ac7a97db701d38bac64eb01a8f5b658e0ff5b65dfdb8e0a296c18"
19866
+ },
19867
+ {
19868
+ "path": "tests/pay_terms_db.mjs",
19869
+ "mode": "0000644",
19870
+ "sha256": "75c0665877d50f2c25c3bfd17dad1b1b7bd140d9e557ad312683d7ca2e945640"
19871
+ },
19852
19872
  {
19853
19873
  "path": "tests/payout_approvals.mjs",
19854
19874
  "mode": "0000644",
@@ -20092,7 +20112,7 @@
20092
20112
  {
20093
20113
  "path": "tests/project_settings_page.mjs",
20094
20114
  "mode": "0000644",
20095
- "sha256": "8bffff24ae3ab30ff7304a697dd993293b4506de9effbc21361ae73021fb2bce"
20115
+ "sha256": "d88fb15fef98b9cc74170223e9b1208abfc27c8382f1ae63ef676bfbc1ba6003"
20096
20116
  },
20097
20117
  {
20098
20118
  "path": "tests/project_settings_spend_cap_route.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
- - 647 operations across 80 resource groups
8
+ - 649 operations across 81 resource groups
9
9
 
10
10
  ## Use it from your project
11
11
 
@@ -1012,6 +1012,10 @@ function createClient(opts = {}) {
1012
1012
  // GET /page-notes/site — rank: any-builder — GET /page-notes/site
1013
1013
  getPageNotesSite: (args) => request("GET", "/page-notes/site", { hasBody: false }, args),
1014
1014
  },
1015
+ "payTerms": {
1016
+ // GET /pay-terms — rank: any-builder — GET /pay-terms
1017
+ getPayTerms: (args) => request("GET", "/pay-terms", { hasBody: false }, args),
1018
+ },
1015
1019
  "payouts": {
1016
1020
  // POST /payouts/age-records — rank: archon — POST /payouts/age-records
1017
1021
  postPayoutsAgeRecords: (args) => request("POST", "/payouts/age-records", { hasBody: true }, args),
@@ -1057,6 +1061,8 @@ function createClient(opts = {}) {
1057
1061
  "projectSettings": {
1058
1062
  // GET /project-settings — rank: metic+archon — GET /project-settings
1059
1063
  getProjectSettings: (args) => request("GET", "/project-settings", { hasBody: false }, args),
1064
+ // PATCH /project-settings/pay-terms — rank: metic+archon — PATCH /project-settings/pay-terms
1065
+ patchProjectSettingsPayTerms: (args) => request("PATCH", "/project-settings/pay-terms", { hasBody: true }, args),
1060
1066
  // PATCH /project-settings/rot-days — rank: metic+archon — PATCH /project-settings/rot-days
1061
1067
  patchProjectSettingsRotDays: (args) => request("PATCH", "/project-settings/rot-days", { hasBody: true }, args),
1062
1068
  // GET /project-settings/ship-mode — rank: any-builder — GET /project-settings/ship-mode
@@ -1011,6 +1011,10 @@ function createClient(opts = {}) {
1011
1011
  // GET /page-notes/site — rank: any-builder — GET /page-notes/site
1012
1012
  getPageNotesSite: (args) => request("GET", "/page-notes/site", { hasBody: false }, args),
1013
1013
  },
1014
+ "payTerms": {
1015
+ // GET /pay-terms — rank: any-builder — GET /pay-terms
1016
+ getPayTerms: (args) => request("GET", "/pay-terms", { hasBody: false }, args),
1017
+ },
1014
1018
  "payouts": {
1015
1019
  // POST /payouts/age-records — rank: archon — POST /payouts/age-records
1016
1020
  postPayoutsAgeRecords: (args) => request("POST", "/payouts/age-records", { hasBody: true }, args),
@@ -1056,6 +1060,8 @@ function createClient(opts = {}) {
1056
1060
  "projectSettings": {
1057
1061
  // GET /project-settings — rank: metic+archon — GET /project-settings
1058
1062
  getProjectSettings: (args) => request("GET", "/project-settings", { hasBody: false }, args),
1063
+ // PATCH /project-settings/pay-terms — rank: metic+archon — PATCH /project-settings/pay-terms
1064
+ patchProjectSettingsPayTerms: (args) => request("PATCH", "/project-settings/pay-terms", { hasBody: true }, args),
1059
1065
  // PATCH /project-settings/rot-days — rank: metic+archon — PATCH /project-settings/rot-days
1060
1066
  patchProjectSettingsRotDays: (args) => request("PATCH", "/project-settings/rot-days", { hasBody: true }, args),
1061
1067
  // GET /project-settings/ship-mode — rank: any-builder — GET /project-settings/ship-mode
@@ -141,6 +141,7 @@ export interface GetPageNotesIdResponse { note: unknown; images: unknown; ideas:
141
141
  export interface GetPageNotesIdeasResponse { page_path: unknown; ideas: unknown }
142
142
  export interface GetPageNotesResponse { page_id: unknown; notes: unknown }
143
143
  export interface GetPageNotesSiteResponse { notes: unknown }
144
+ export interface GetPayTermsResponse { pay_terms: unknown }
144
145
  export interface GetPayoutsApprovalsResponse { approvals: unknown }
145
146
  export interface GetPayoutsGatesBuilderIdResponse { gate: unknown }
146
147
  export interface GetPayoutsRulesResponse { rules: unknown }
@@ -264,6 +265,8 @@ export interface PatchNotesIdRequest { kind: string }
264
265
  export interface PatchNotesIdResponse { ok: boolean; note: unknown }
265
266
  export interface PatchPageNotesIdRequest { body_md: string }
266
267
  export interface PatchPageNotesIdResponse { ok: boolean; updated_at: unknown }
268
+ export interface PatchProjectSettingsPayTermsRequest { terms: unknown }
269
+ export interface PatchProjectSettingsPayTermsResponse { ok: boolean; row: unknown }
267
270
  export interface PatchProjectSettingsRotDaysRequest { days: number }
268
271
  export interface PatchProjectSettingsRotDaysResponse { ok: boolean; rot_days: unknown; source: unknown; describe: unknown }
269
272
  export interface PatchProjectSettingsShipModeRequest { mode: string }
@@ -285,7 +288,7 @@ export interface PatchSpecialitiesIdRequest { name?: string; summary?: string; c
285
288
  export interface PatchSpecialitiesIdResponse { speciality: unknown }
286
289
  export interface PatchTaskRecommendationsIdRequest { status: "declined" | "withdrawn" }
287
290
  export interface PatchTaskRecommendationsIdResponse { ok: boolean; recommendation: unknown }
288
- export interface PatchTasksIdRequest { kind?: string; discipline?: string; requires_rank?: string; module_key?: string; goal_id?: number; parent_task_id?: StringifiableId; parallel_safe?: unknown; newcomer_friendly?: boolean; xenos_claimable?: boolean; security_sensitive?: boolean; automation_tag?: string; needs?: unknown; needs_migration?: boolean; description?: string; title?: string; priority?: unknown; value_summary?: string; status?: unknown }
291
+ export interface PatchTasksIdRequest { kind?: string; discipline?: string; requires_rank?: string; module_key?: string; goal_id?: number; parent_task_id?: StringifiableId; parallel_safe?: unknown; newcomer_friendly?: boolean; xenos_claimable?: boolean; security_sensitive?: boolean; automation_tag?: string; needs?: unknown; needs_migration?: boolean; description?: string; title?: string; priority?: unknown; value_summary?: string; status?: unknown; pay_terms?: unknown }
289
292
  export interface PostAccessRequestsInviteRequest { github_login: string; note?: string }
290
293
  export interface PostAccessRequestsInviteResponse { ok: boolean; already_invited?: boolean; github_login?: unknown; request?: unknown }
291
294
  export interface PostAccessRequestsRequest { github_login: string; display_name?: string; note?: string }
@@ -1638,6 +1641,10 @@ export interface BongosClient {
1638
1641
  /** GET /page-notes/site — rank: any-builder */
1639
1642
  getPageNotesSite(args?: RequestArgs): Promise<GetPageNotesSiteResponse>;
1640
1643
  };
1644
+ "payTerms": {
1645
+ /** GET /pay-terms — rank: any-builder */
1646
+ getPayTerms(args?: RequestArgs): Promise<GetPayTermsResponse>;
1647
+ };
1641
1648
  "payouts": {
1642
1649
  /** POST /payouts/age-records — rank: archon */
1643
1650
  postPayoutsAgeRecords(args: RequestArgs & { body: PostPayoutsAgeRecordsRequest }): Promise<PostPayoutsAgeRecordsResponse>;
@@ -1683,6 +1690,8 @@ export interface BongosClient {
1683
1690
  "projectSettings": {
1684
1691
  /** GET /project-settings — rank: metic+archon */
1685
1692
  getProjectSettings(args?: RequestArgs): Promise<GetProjectSettingsResponse>;
1693
+ /** PATCH /project-settings/pay-terms — rank: metic+archon */
1694
+ patchProjectSettingsPayTerms(args: RequestArgs & { body: PatchProjectSettingsPayTermsRequest }): Promise<PatchProjectSettingsPayTermsResponse>;
1686
1695
  /** PATCH /project-settings/rot-days — rank: metic+archon */
1687
1696
  patchProjectSettingsRotDays(args: RequestArgs & { body: PatchProjectSettingsRotDaysRequest }): Promise<PatchProjectSettingsRotDaysResponse>;
1688
1697
  /** GET /project-settings/ship-mode — rank: any-builder */
@@ -1008,6 +1008,10 @@ export function createClient(opts = {}) {
1008
1008
  // GET /page-notes/site — rank: any-builder — GET /page-notes/site
1009
1009
  getPageNotesSite: (args) => request("GET", "/page-notes/site", { hasBody: false }, args),
1010
1010
  },
1011
+ "payTerms": {
1012
+ // GET /pay-terms — rank: any-builder — GET /pay-terms
1013
+ getPayTerms: (args) => request("GET", "/pay-terms", { hasBody: false }, args),
1014
+ },
1011
1015
  "payouts": {
1012
1016
  // POST /payouts/age-records — rank: archon — POST /payouts/age-records
1013
1017
  postPayoutsAgeRecords: (args) => request("POST", "/payouts/age-records", { hasBody: true }, args),
@@ -1053,6 +1057,8 @@ export function createClient(opts = {}) {
1053
1057
  "projectSettings": {
1054
1058
  // GET /project-settings — rank: metic+archon — GET /project-settings
1055
1059
  getProjectSettings: (args) => request("GET", "/project-settings", { hasBody: false }, args),
1060
+ // PATCH /project-settings/pay-terms — rank: metic+archon — PATCH /project-settings/pay-terms
1061
+ patchProjectSettingsPayTerms: (args) => request("PATCH", "/project-settings/pay-terms", { hasBody: true }, args),
1056
1062
  // PATCH /project-settings/rot-days — rank: metic+archon — PATCH /project-settings/rot-days
1057
1063
  patchProjectSettingsRotDays: (args) => request("PATCH", "/project-settings/rot-days", { hasBody: true }, args),
1058
1064
  // GET /project-settings/ship-mode — rank: any-builder — GET /project-settings/ship-mode
@@ -241,6 +241,10 @@
241
241
  "name": "page-notes",
242
242
  "description": "Endpoints under `/api/bongos/page-notes`."
243
243
  },
244
+ {
245
+ "name": "pay-terms",
246
+ "description": "Endpoints under `/api/bongos/pay-terms`."
247
+ },
244
248
  {
245
249
  "name": "payouts",
246
250
  "description": "Endpoints under `/api/bongos/payouts`."
@@ -19113,6 +19117,44 @@
19113
19117
  ]
19114
19118
  }
19115
19119
  },
19120
+ "/pay-terms": {
19121
+ "get": {
19122
+ "operationId": "get_pay_terms",
19123
+ "tags": [
19124
+ "pay-terms"
19125
+ ],
19126
+ "summary": "GET /pay-terms",
19127
+ "description": "GET /pay-terms?task_ids=1,2,3 — what each task pays, in the project's words (task 1004990, ADR 0385 D3), for a list of tasks in one read: the hall task page and `bongos start` show it so a builder sees the pay BEFORE claiming. Each entry is { source: 'task' | 'project' | 'none', terms, set_by, set_at }; a task with none of its own shows the project's standing terms (set below), and a self-managed term carries its \"Bongos does not move or guarantee this money\" label. Records only — no amount here is a Bongos figure. It lives beside the standing-terms write because both serve the one pay-terms table pair. rank: any-builder — the same task metadata GET /tasks/:id serves; nothing changed.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
19128
+ "x-rank": "any-builder",
19129
+ "x-source": "modules/lifecycle/routes/project-settings.js",
19130
+ "responses": {
19131
+ "200": {
19132
+ "description": "Success.",
19133
+ "content": {
19134
+ "application/json": {
19135
+ "schema": {
19136
+ "$ref": "#/components/schemas/GetPayTermsResponse"
19137
+ }
19138
+ }
19139
+ }
19140
+ },
19141
+ "400": {
19142
+ "$ref": "#/components/responses/BadRequest"
19143
+ },
19144
+ "401": {
19145
+ "$ref": "#/components/responses/Unauthorized"
19146
+ },
19147
+ "403": {
19148
+ "$ref": "#/components/responses/Forbidden"
19149
+ }
19150
+ },
19151
+ "security": [
19152
+ {
19153
+ "builderSession": []
19154
+ }
19155
+ ]
19156
+ }
19157
+ },
19116
19158
  "/payouts/age-records": {
19117
19159
  "post": {
19118
19160
  "operationId": "post_payouts_age_records",
@@ -20050,6 +20092,58 @@
20050
20092
  ]
20051
20093
  }
20052
20094
  },
20095
+ "/project-settings/pay-terms": {
20096
+ "patch": {
20097
+ "operationId": "patch_project_settings_pay_terms",
20098
+ "tags": [
20099
+ "project-settings"
20100
+ ],
20101
+ "summary": "PATCH /project-settings/pay-terms",
20102
+ "description": "PATCH /project-settings/pay-terms — body { terms: [{ pay_type, amount?, unit?, note? }] } (task 1004990; ADR 0385 decision 3 and the owner's 2026-10-29 ruling). The project's STANDING pay terms: what a builder is shown on any task that carries none of its own. The whole list replaces the current set; [] means none. Every change is a new row naming who set it and when, and the old sets stay, so the table is the audit trail the owner asked for. Bongos fills nothing in. rank: project.settings.manage (metic+, government_010), the same atom as the other writes on this page.\n\n**Rank:** `metic+archon` — Metic or Archon rank (review/triage powers).\n\n**Permissions:** `project.settings.manage` (all required).",
20103
+ "x-rank": "metic+archon",
20104
+ "x-source": "modules/lifecycle/routes/project-settings.js",
20105
+ "x-permissions": [
20106
+ "project.settings.manage"
20107
+ ],
20108
+ "requestBody": {
20109
+ "required": true,
20110
+ "content": {
20111
+ "application/json": {
20112
+ "schema": {
20113
+ "$ref": "#/components/schemas/PatchProjectSettingsPayTermsRequest"
20114
+ }
20115
+ }
20116
+ },
20117
+ "x-validated": true
20118
+ },
20119
+ "responses": {
20120
+ "200": {
20121
+ "description": "Success.",
20122
+ "content": {
20123
+ "application/json": {
20124
+ "schema": {
20125
+ "$ref": "#/components/schemas/PatchProjectSettingsPayTermsResponse"
20126
+ }
20127
+ }
20128
+ }
20129
+ },
20130
+ "400": {
20131
+ "$ref": "#/components/responses/ValidationFailed"
20132
+ },
20133
+ "401": {
20134
+ "$ref": "#/components/responses/Unauthorized"
20135
+ },
20136
+ "403": {
20137
+ "$ref": "#/components/responses/Forbidden"
20138
+ }
20139
+ },
20140
+ "security": [
20141
+ {
20142
+ "builderSession": []
20143
+ }
20144
+ ]
20145
+ }
20146
+ },
20053
20147
  "/project-settings/rot-days": {
20054
20148
  "patch": {
20055
20149
  "operationId": "patch_project_settings_rot_days",
@@ -27822,7 +27916,7 @@
27822
27916
  "tasks"
27823
27917
  ],
27824
27918
  "summary": "POST /tasks",
27825
- "description": "Task create/promote/edit (plan/scope mutation) is Metic+ as of ADR 0090 (owner decision 2026-06-26): a Metic who can run idea-triage may also seed + shape tasks. Was Archon-only (task task 106 / ADR 0016; three-rank model task 360 / ADR 0018). A Xenos/Thetes still cannot author — they file ideas. Setting rank and closing versions stay Archon. The every-route audit is task task 231 (V3.R06). rank: metic+archon — create work (plan/scope mutation); ADR 0090 (was ADR 0016/0018 archon).\n\n**Rank:** `metic+archon` — Metic or Archon rank (review/triage powers).\n\n**Permissions:** `task.create` (all required).",
27919
+ "description": "Task create/promote/edit (plan/scope mutation) is Metic+ as of ADR 0090 (owner decision 2026-06-26): a Metic who can run idea-triage may also seed + shape tasks. Was Archon-only (task task 106 / ADR 0016; three-rank model task 360 / ADR 0018). A Xenos/Thetes still cannot author — they file ideas. Setting rank and closing versions stay Archon. The every-route audit is task task 231 (V3.R06). NO pay_terms HERE, on purpose (task 1004990): the task's rule is that only someone who may EDIT a task sets its pay terms, and this route is gated on task.create, not task.edit — so terms are set with PATCH /tasks/:id right after create, under that route's task.edit gate. The strict validator refuses the field here rather than letting a create quietly widen who may set pay. rank: metic+archon — create work (plan/scope mutation); ADR 0090 (was ADR 0016/0018 archon).\n\n**Rank:** `metic+archon` — Metic or Archon rank (review/triage powers).\n\n**Permissions:** `task.create` (all required).",
27826
27920
  "x-rank": "metic+archon",
27827
27921
  "x-source": "modules/lifecycle/routes/task-write-routes.js",
27828
27922
  "x-permissions": [
@@ -32052,6 +32146,15 @@
32052
32146
  "notes"
32053
32147
  ]
32054
32148
  },
32149
+ "GetPayTermsResponse": {
32150
+ "type": "object",
32151
+ "properties": {
32152
+ "pay_terms": {}
32153
+ },
32154
+ "required": [
32155
+ "pay_terms"
32156
+ ]
32157
+ },
32055
32158
  "GetPayoutsApprovalsResponse": {
32056
32159
  "type": "object",
32057
32160
  "properties": {
@@ -33641,6 +33744,29 @@
33641
33744
  "updated_at"
33642
33745
  ]
33643
33746
  },
33747
+ "PatchProjectSettingsPayTermsRequest": {
33748
+ "type": "object",
33749
+ "properties": {
33750
+ "terms": {}
33751
+ },
33752
+ "required": [
33753
+ "terms"
33754
+ ],
33755
+ "additionalProperties": false
33756
+ },
33757
+ "PatchProjectSettingsPayTermsResponse": {
33758
+ "type": "object",
33759
+ "properties": {
33760
+ "ok": {
33761
+ "type": "boolean"
33762
+ },
33763
+ "row": {}
33764
+ },
33765
+ "required": [
33766
+ "ok",
33767
+ "row"
33768
+ ]
33769
+ },
33644
33770
  "PatchProjectSettingsRotDaysRequest": {
33645
33771
  "type": "object",
33646
33772
  "properties": {
@@ -34026,7 +34152,8 @@
34026
34152
  "minLength": 1,
34027
34153
  "maxLength": 1000
34028
34154
  },
34029
- "status": {}
34155
+ "status": {},
34156
+ "pay_terms": {}
34030
34157
  },
34031
34158
  "additionalProperties": false
34032
34159
  },
@@ -40980,9 +41107,9 @@
40980
41107
  "description": "A required dependency/feature is not configured or is temporarily down."
40981
41108
  }
40982
41109
  },
40983
- "x-endpoint-count": 647,
40984
- "x-schema-count": 693,
41110
+ "x-endpoint-count": 649,
41111
+ "x-schema-count": 696,
40985
41112
  "x-undocumented-bodies": 12,
40986
- "x-response-schemas": 444,
41113
+ "x-response-schemas": 446,
40987
41114
  "x-generated-by": "scripts/bongos/gen-api-docs.js"
40988
41115
  }
@@ -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. 647 endpoints across 108 route files.
5
+ > **Generated from the live route files** — the route file is authoritative. 649 endpoints across 108 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`.
@@ -691,6 +691,12 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
691
691
  | GET | `/api/bongos/page-notes/images/:id` | `any-builder` | — | |
692
692
  | GET | `/api/bongos/page-notes/site` | `any-builder` | — | The public site's reviews (task 1004499), for the Studio's list. |
693
693
 
694
+ ## `pay-terms` (1)
695
+
696
+ | Method | Path | Rank | Body | Description |
697
+ |---|---|---|---|---|
698
+ | GET | `/api/bongos/pay-terms` | `any-builder` | — | GET /pay-terms?task_ids=1,2,3 — what each task pays, in the project's words (task 1004990, ADR 0385 D3), for a list of tasks in one read:… |
699
+
694
700
  ## `payouts` (16)
695
701
 
696
702
  | Method | Path | Rank | Body | Description |
@@ -724,11 +730,12 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
724
730
  |---|---|---|---|---|
725
731
  | GET | `/api/bongos/project/manage-link` | `archon` | — | GET /project/manage-link — the hub's page for THIS project, where its owner takes it offline or disconnects it (task 1004570). |
726
732
 
727
- ## `project-settings` (7)
733
+ ## `project-settings` (8)
728
734
 
729
735
  | Method | Path | Rank | Body | Description |
730
736
  |---|---|---|---|---|
731
737
  | GET | `/api/bongos/project-settings` | `metic+archon` | — | GET /project-settings — all five rows in ONE read. |
738
+ | PATCH | `/api/bongos/project-settings/pay-terms` | `metic+archon` | `terms` | PATCH /project-settings/pay-terms — body { terms: [{ pay_type, amount?, unit?, note? }] } (task 1004990; ADR 0385 decision 3 and the owne… |
732
739
  | PATCH | `/api/bongos/project-settings/rot-days` | `metic+archon` | `days` | PATCH /project-settings/rot-days — body { days }. |
733
740
  | GET | `/api/bongos/project-settings/ship-mode` | `any-builder` | — | GET /project-settings/ship-mode — the ship mode alone, for the CLI and the AI. |
734
741
  | PATCH | `/api/bongos/project-settings/ship-mode` | `metic+archon` | `mode` | PATCH /project-settings/ship-mode — body { mode: 'auto' \| 'manual' }. |
@@ -997,7 +1004,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
997
1004
  | GET | `/api/bongos/tasks` | `any-builder` | — | |
998
1005
  | POST | `/api/bongos/tasks` | `metic+archon` | `version_id`, `title`, `description`, `status`, `touches`, `est_minutes`, `est_cost_usd`, `manual_degree`, `priority`, `automation_tag`, `credits_reward`, `source`, `source_ref`, `value_summary`, `kind`, `discipline`, `parallel_safe`, `newcomer_friendly`, `security_sensitive`, `requires_rank`, `needs`, `auto_detect_touches`, `criterion_ids`, `module_key`, `goal_id` | Task create/promote/edit (plan/scope mutation) is Metic+ as of ADR 0090 (owner decision 2026-06-26): a Metic who can run idea-triage may … |
999
1006
  | GET | `/api/bongos/tasks/:id` | `any-builder` | — | single-task read; preserved per CRITICAL §4 (supervisor hot path). |
1000
- | PATCH | `/api/bongos/tasks/:id` | `metic+archon` | `kind`, `discipline`, `requires_rank`, `module_key`, `goal_id`, `parent_task_id`, `parallel_safe`, `newcomer_friendly`, `xenos_claimable`, `security_sensitive`, `automation_tag`, `needs`, `needs_migration`, `description`, `title`, `priority`, `value_summary`, `status` | PATCH /tasks/:id — supports body.parent_task_id (V2 C2), body.kind (V2 B1), body.discipline (mig 014), body.parallel_safe (mig 028), and … |
1007
+ | PATCH | `/api/bongos/tasks/:id` | `metic+archon` | `kind`, `discipline`, `requires_rank`, `module_key`, `goal_id`, `parent_task_id`, `parallel_safe`, `newcomer_friendly`, `xenos_claimable`, `security_sensitive`, `automation_tag`, `needs`, `needs_migration`, `description`, `title`, `priority`, `value_summary`, `status`, `pay_terms` | PATCH /tasks/:id — supports body.parent_task_id (V2 C2), body.kind (V2 B1), body.discipline (mig 014), body.parallel_safe (mig 028), and … |
1001
1008
  | POST | `/api/bongos/tasks/:id/abandon` | `any-builder` | — | POST /tasks/:id/abandon — terminal "retire this task" transition (task 987). |
1002
1009
  | POST | `/api/bongos/tasks/:id/attest-gate` | `any-builder` | `head_sha` | POST /tasks/:id/attest-gate — body: { head_sha }. |
1003
1010
  | POST | `/api/bongos/tasks/:id/confirm` | `any-builder` | `verified` | |