@bongos/core 1.19.375 → 1.19.377

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 (44) hide show
  1. package/.bongos-core.json +94 -39
  2. package/clients/bongos-client/README.md +1 -1
  3. package/clients/bongos-client/bongos-client.global.js +2 -0
  4. package/clients/bongos-client/index.cjs +2 -0
  5. package/clients/bongos-client/index.d.ts +5 -1
  6. package/clients/bongos-client/index.mjs +2 -0
  7. package/docs/api/openapi.json +76 -5
  8. package/docs/api-reference.md +4 -3
  9. package/docs/copy-inventory.md +128 -127
  10. package/docs/copy-registry.json +175 -156
  11. package/migrations/core_227_task_created_by.sql +83 -0
  12. package/modules/dev-box/app/src/vendor/bongos-client.cjs +2 -0
  13. package/modules/hall-ui/public/goals-lib.js +5 -5
  14. package/modules/hall-ui/public/goals-page.js +54 -23
  15. package/modules/hall-ui/public/goals-render.js +15 -0
  16. package/modules/hall-ui/public/task-lib.js +29 -0
  17. package/modules/hall-ui/public/work.js +117 -5
  18. package/modules/ideas/inbox.js +4 -0
  19. package/modules/lifecycle/db-tasks.js +61 -5
  20. package/modules/lifecycle/goal-rollup.js +118 -0
  21. package/modules/lifecycle/kickoff-checklist.js +138 -0
  22. package/modules/lifecycle/kickoff-seed.js +69 -0
  23. package/modules/lifecycle/module.json +4 -2
  24. package/modules/lifecycle/routes/goals.js +26 -0
  25. package/modules/lifecycle/routes/kickoff-seed.js +29 -0
  26. package/modules/lifecycle/routes/task-write-routes.js +3 -0
  27. package/modules/lifecycle/routes/tasks.js +47 -1
  28. package/package-lock.json +2 -2
  29. package/package.json +1 -1
  30. package/scripts/gds/fitness.js +1 -0
  31. package/scripts/gds/init.js +9 -79
  32. package/scripts/gds/test-path-guard.js +99 -0
  33. package/src/bongos/auth-admission.js +23 -0
  34. package/src/module-api.js +5 -1
  35. package/tests/first_admin_kickoff_seed.mjs +56 -0
  36. package/tests/goal_sort_staleness.mjs +286 -0
  37. package/tests/goal_subtitle.mjs +6 -1
  38. package/tests/goals_lib.mjs +16 -4
  39. package/tests/kickoff_checklist.mjs +107 -0
  40. package/tests/kickoff_seed.mjs +93 -0
  41. package/tests/provisioning_onboard_mode.mjs +3 -4
  42. package/tests/search_ingest.mjs +3 -2
  43. package/tests/setup_smoke.mjs +4 -2
  44. package/tests/test_path_guard.mjs +126 -0
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.375",
6
- "core_contract": "1.19.375",
7
- "source_commit": "75b8de1c408ddd51e9e44d88a1fab7eee51cf017",
5
+ "core_version": "1.19.377",
6
+ "core_contract": "1.19.377",
7
+ "source_commit": "90c7b43a6f0265aaf5d5c117cbe2721c18bd6c35",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-08-25T23:12:43.870Z",
9
+ "built_at": "2026-08-26T23:56:55.300Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 335,
13
13
  "agent_docs_stubbed": 22,
14
- "functional_verbatim": 1554,
14
+ "functional_verbatim": 1565,
15
15
  "rules": 3,
16
16
  "gate_literals": 3,
17
17
  "gate": "passed"
18
18
  },
19
- "file_count": 1911,
20
- "tree_sha256": "6f58b38b0e6751d8cbf0fbaecae632da6dd95061c28e22fd950e182471f7ea57",
19
+ "file_count": 1922,
20
+ "tree_sha256": "ef3ea529acb199c38d7dc4bb8bc657b694727f8e8ffaa8fdf2af230913416726",
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": "663c0e020d58d131bd1311d3cee1ee2b09b27287f59f0f301f89ecac3452a9dd"
350
+ "sha256": "c35dae1d34955947517c4481105267b0153f921a8db4b4c5d3b5293ab4b7987d"
351
351
  },
352
352
  {
353
353
  "path": "clients/bongos-client/bongos-client.global.js",
354
354
  "mode": "0000644",
355
- "sha256": "e2454e2affc5a2f9203d7dacbe10423264e2c3ff1a45f4d8d5c3bf805c658484"
355
+ "sha256": "05629fc4ba2d8b3c965a1e8eadee5aece7ffbb446fb473d720df890d28b2ccba"
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": "2c353c9b91dcb8c0afbc961e5b5f383aee69569c05cf7a03fabac02b34d06760"
365
+ "sha256": "e72156a07def001a8ac5ca95920f079c55a49bd0fd713fd22a06a6b84d7957d3"
366
366
  },
367
367
  {
368
368
  "path": "clients/bongos-client/index.d.ts",
369
369
  "mode": "0000644",
370
- "sha256": "b19f0435cf2a0124d9e568ad6daac87b54220ea3f170f65fda54ed391058f480"
370
+ "sha256": "28f456a1b259b898b4bfc0d353c9877b5f10828beae478c2ee6aa1a66e64c33a"
371
371
  },
372
372
  {
373
373
  "path": "clients/bongos-client/index.mjs",
374
374
  "mode": "0000644",
375
- "sha256": "f6d8b1a0ba6b2868204aabda309594e3c25f092611972dbd32753a257a095bd3"
375
+ "sha256": "7332b346c70cf367f441ba15aa19a0c35180d98239b3525bc2c26285e94c6eb7"
376
376
  },
377
377
  {
378
378
  "path": "clients/bongos-client/package.json",
@@ -1477,12 +1477,12 @@
1477
1477
  {
1478
1478
  "path": "docs/api-reference.md",
1479
1479
  "mode": "0000644",
1480
- "sha256": "3fca3c9ed9fe092266ac1b4c721094cd0d50792e1b17a0821f7135d65fb89a57"
1480
+ "sha256": "96e9749fd1a6061c3ae96edf1da81a42fc6f89144bca6844870e5abcc7aeb7fe"
1481
1481
  },
1482
1482
  {
1483
1483
  "path": "docs/api/openapi.json",
1484
1484
  "mode": "0000644",
1485
- "sha256": "72f2236c4123dd96be29c778df0b6b2b8531923cd394f193cf80b221b9bb8bdb"
1485
+ "sha256": "a743ea7c9fbe29419a6efc5978472c8fa27da2178eef34edbc988574990733f8"
1486
1486
  },
1487
1487
  {
1488
1488
  "path": "docs/architecture.md",
@@ -1507,12 +1507,12 @@
1507
1507
  {
1508
1508
  "path": "docs/copy-inventory.md",
1509
1509
  "mode": "0000644",
1510
- "sha256": "fd5277bcf4ea80591a81d0b321d67f51380e0db35d0c08e237d95477f02d93b3"
1510
+ "sha256": "0b1369b8f91cd2058ff958fb7dbc97d223eaf740b779123ba1485d6473bcf652"
1511
1511
  },
1512
1512
  {
1513
1513
  "path": "docs/copy-registry.json",
1514
1514
  "mode": "0000644",
1515
- "sha256": "24955cb19ef7ef3b24783f58e9a8b403bdd43c8845b4a800b992191d6872dc01"
1515
+ "sha256": "08a804d711a6345dd89bfc0a0b908b0e40ee7fe5c563bf7ba9bd12dad0123735"
1516
1516
  },
1517
1517
  {
1518
1518
  "path": "docs/design-contract.md",
@@ -2534,6 +2534,11 @@
2534
2534
  "mode": "0000644",
2535
2535
  "sha256": "322578d3d22b87eb07c4b9b4b521c66b0c986a937c3657d0b90123f73867461d"
2536
2536
  },
2537
+ {
2538
+ "path": "migrations/core_227_task_created_by.sql",
2539
+ "mode": "0000644",
2540
+ "sha256": "b3fbc5d91adf6c6021859bdd8050015c0449360eb33d70c71fdeda0cc1276dd3"
2541
+ },
2537
2542
  {
2538
2543
  "path": "modules/agents/migrations/agents_001_definitions.sql",
2539
2544
  "mode": "0000644",
@@ -2917,7 +2922,7 @@
2917
2922
  {
2918
2923
  "path": "modules/dev-box/app/src/vendor/bongos-client.cjs",
2919
2924
  "mode": "0000644",
2920
- "sha256": "2c353c9b91dcb8c0afbc961e5b5f383aee69569c05cf7a03fabac02b34d06760"
2925
+ "sha256": "e72156a07def001a8ac5ca95920f079c55a49bd0fd713fd22a06a6b84d7957d3"
2921
2926
  },
2922
2927
  {
2923
2928
  "path": "modules/dev-box/app/test/unit.mjs",
@@ -3572,17 +3577,17 @@
3572
3577
  {
3573
3578
  "path": "modules/hall-ui/public/goals-lib.js",
3574
3579
  "mode": "0000644",
3575
- "sha256": "a7a0385c3c8026e6b21ac5793bdf5b48fa31968f176ebe891c43ad5c867df1c8"
3580
+ "sha256": "c3c4774664474b245a9eae081e41e9d9659cfbefa68b97651f58d5331b1f601b"
3576
3581
  },
3577
3582
  {
3578
3583
  "path": "modules/hall-ui/public/goals-page.js",
3579
3584
  "mode": "0000644",
3580
- "sha256": "0855874df7337e46cc17251dd98155f69eb3469c59a8622cfdcaf7aa4c3941e8"
3585
+ "sha256": "968063dbbdbe060a855dde61d3e2db8ade8869f09ab1024dfb20582b1a15ceeb"
3581
3586
  },
3582
3587
  {
3583
3588
  "path": "modules/hall-ui/public/goals-render.js",
3584
3589
  "mode": "0000644",
3585
- "sha256": "52f00a63296f8f2068980d86e2bbd70a966d06da4b8adf42a7caa987a5a5704a"
3590
+ "sha256": "99c81d1ea257d64c312e0917379b4437ba9b645ae8ba74809a1a05a095280bba"
3586
3591
  },
3587
3592
  {
3588
3593
  "path": "modules/hall-ui/public/goals.css",
@@ -3867,7 +3872,7 @@
3867
3872
  {
3868
3873
  "path": "modules/hall-ui/public/task-lib.js",
3869
3874
  "mode": "0000644",
3870
- "sha256": "c2cc0c75f660312f543c84138bc5b82652b710682bc86ae8fd517d7ee1d9e661"
3875
+ "sha256": "dde9fe5cc1d80829c45aa6ef4f486697345a122cf0a7054991b7c7ebc390754f"
3871
3876
  },
3872
3877
  {
3873
3878
  "path": "modules/hall-ui/public/task.html",
@@ -3912,7 +3917,7 @@
3912
3917
  {
3913
3918
  "path": "modules/hall-ui/public/work.js",
3914
3919
  "mode": "0000644",
3915
- "sha256": "5492625cba8e190637faee5bf74fbc868ecb2e6e21833d10dc8210cac7a19510"
3920
+ "sha256": "a9a33001c0cd788926c50c670718ac52552690f67a9de7a07999600907555b9f"
3916
3921
  },
3917
3922
  {
3918
3923
  "path": "modules/ideas/CLAUDE.md",
@@ -3932,7 +3937,7 @@
3932
3937
  {
3933
3938
  "path": "modules/ideas/inbox.js",
3934
3939
  "mode": "0000644",
3935
- "sha256": "d862199e649f817cc95e95bb57a0a5d7262acac37d3315df1ec916b983547e0d"
3940
+ "sha256": "edb3fc66ff0c89fde112b691bd761478ccf621bacb0bb91f7ae94ec63c2546c7"
3936
3941
  },
3937
3942
  {
3938
3943
  "path": "modules/ideas/migrations/ideas_001_grades.sql",
@@ -4072,7 +4077,7 @@
4072
4077
  {
4073
4078
  "path": "modules/lifecycle/db-tasks.js",
4074
4079
  "mode": "0000644",
4075
- "sha256": "43748950aee899125bc40b8fb6f26a7df5645746e23fcbe6bbe3ea486f0b7248"
4080
+ "sha256": "94b785f970615056c9c3e896009868ef762fe78ab9f640889b9286ccef46fcf0"
4076
4081
  },
4077
4082
  {
4078
4083
  "path": "modules/lifecycle/db-versions.js",
@@ -4129,6 +4134,11 @@
4129
4134
  "mode": "0000644",
4130
4135
  "sha256": "7115a27272fe2594b65e2e56a796f5bf97600cb94ba301bc21599c6bc4e60175"
4131
4136
  },
4137
+ {
4138
+ "path": "modules/lifecycle/goal-rollup.js",
4139
+ "mode": "0000644",
4140
+ "sha256": "cd3c3c28e9e1361b1f02a8de7a973d0d4d87b916477af98b9032de87dfbc588d"
4141
+ },
4132
4142
  {
4133
4143
  "path": "modules/lifecycle/goal-suggest.js",
4134
4144
  "mode": "0000644",
@@ -4144,6 +4154,16 @@
4144
4154
  "mode": "0000644",
4145
4155
  "sha256": "0027e5e8a3b718a16dcae5ad4387b4773525d429944e712228fbd38a5335e23a"
4146
4156
  },
4157
+ {
4158
+ "path": "modules/lifecycle/kickoff-checklist.js",
4159
+ "mode": "0000644",
4160
+ "sha256": "829dd13fb87033dba1db8d3003a0359e1be8bb97198df419edb2617558bfd984"
4161
+ },
4162
+ {
4163
+ "path": "modules/lifecycle/kickoff-seed.js",
4164
+ "mode": "0000644",
4165
+ "sha256": "f26a507ea55169df9f4841edb2347610f3dea9b7eac729c034c038a0edd1c7af"
4166
+ },
4147
4167
  {
4148
4168
  "path": "modules/lifecycle/lifecycle.js",
4149
4169
  "mode": "0000644",
@@ -4177,7 +4197,7 @@
4177
4197
  {
4178
4198
  "path": "modules/lifecycle/module.json",
4179
4199
  "mode": "0000644",
4180
- "sha256": "30653b4064be8933894679ac4e272711edcc629e151d87017e2b2e45be96d78f"
4200
+ "sha256": "401e4121a3f335ae0ae532b6b7ccff63e668b3a53520a0ff3f0d1a4223b02020"
4181
4201
  },
4182
4202
  {
4183
4203
  "path": "modules/lifecycle/pollers/publish-reconciler.js",
@@ -4227,13 +4247,18 @@
4227
4247
  {
4228
4248
  "path": "modules/lifecycle/routes/goals.js",
4229
4249
  "mode": "0000644",
4230
- "sha256": "db587e3a79c76671cdba1900bfdce156d62d0ef270319adb82a3b0805f3d091c"
4250
+ "sha256": "22c4d71ae825dc0601532d45c22d37bcd656cdd408ec2fc3e8e668a916541687"
4231
4251
  },
4232
4252
  {
4233
4253
  "path": "modules/lifecycle/routes/help-requests.js",
4234
4254
  "mode": "0000644",
4235
4255
  "sha256": "0e9430101ce99d0a84f1893d13bcf1434af13325c2ce531e693b6bce42cb9385"
4236
4256
  },
4257
+ {
4258
+ "path": "modules/lifecycle/routes/kickoff-seed.js",
4259
+ "mode": "0000644",
4260
+ "sha256": "f5090caaf0d0f32feff5bf4263e65ecf831ad6fd10ae5b053788c987e1a86399"
4261
+ },
4237
4262
  {
4238
4263
  "path": "modules/lifecycle/routes/lifecycle.js",
4239
4264
  "mode": "0000644",
@@ -4252,12 +4277,12 @@
4252
4277
  {
4253
4278
  "path": "modules/lifecycle/routes/task-write-routes.js",
4254
4279
  "mode": "0000644",
4255
- "sha256": "d4b1eb471d334fdf164acd76814cc19358030b8d02146f51481d61a990925e41"
4280
+ "sha256": "4ef343018b69528ab9518683ba0c6878bfcf5b9398ee7a2ade21780c20218538"
4256
4281
  },
4257
4282
  {
4258
4283
  "path": "modules/lifecycle/routes/tasks.js",
4259
4284
  "mode": "0000644",
4260
- "sha256": "e27a8ce945d8d7e68d618e60b3cac72af9722588affb876fa22df0f525ec3dc5"
4285
+ "sha256": "87b2e23ceedac103b61007348976c257a2961954a4853ce5ff3be0e2f74a4ede"
4261
4286
  },
4262
4287
  {
4263
4288
  "path": "modules/lifecycle/routes/versions.js",
@@ -4917,12 +4942,12 @@
4917
4942
  {
4918
4943
  "path": "package-lock.json",
4919
4944
  "mode": "0000644",
4920
- "sha256": "63450349ce8f5c64c960a3f83c7f217324c1a7ee61f28e5ff06e8972021b53d3"
4945
+ "sha256": "e5e8b0e3c6879a8636f96f6bdce1c4fd8d9b06521e431bd6051bb2be2ea96518"
4921
4946
  },
4922
4947
  {
4923
4948
  "path": "package.json",
4924
4949
  "mode": "0000644",
4925
- "sha256": "e7deabfda7d0840b92653973c68e280bbe64ded769d1dd8fa94db95a21cc0ba6"
4950
+ "sha256": "3057a201c65b95c06512dfbf5642b4d3de10c513382e771b478f0eb43dad3ff8"
4926
4951
  },
4927
4952
  {
4928
4953
  "path": "public-docs/index.html",
@@ -5617,7 +5642,7 @@
5617
5642
  {
5618
5643
  "path": "scripts/gds/fitness.js",
5619
5644
  "mode": "0000644",
5620
- "sha256": "95f116e70ba6d6e890705ff862a5c5011002c42a58ba60553c50ec2d656dcf3b"
5645
+ "sha256": "4dec7f6bee219ca3c11dbf5b9c3380de286264a66830fd8e2d37018a989eb83e"
5621
5646
  },
5622
5647
  {
5623
5648
  "path": "scripts/gds/gate-review.js",
@@ -5737,7 +5762,7 @@
5737
5762
  {
5738
5763
  "path": "scripts/gds/init.js",
5739
5764
  "mode": "0000644",
5740
- "sha256": "bde86f3f65cdd4a1ad0e143c58f6517328dd7cdee7c1194c0fa614aaf9df56f6"
5765
+ "sha256": "280197b62032374c11824c4f97ec713725e28e2b57cfd6c8aa42d493b02c4ed7"
5741
5766
  },
5742
5767
  {
5743
5768
  "path": "scripts/gds/install-git-hooks.js",
@@ -6389,6 +6414,11 @@
6389
6414
  "mode": "0000644",
6390
6415
  "sha256": "88b9b721b3911957b13aa5e8023e6d41534e34afd4bbc70f40435efc52e2017b"
6391
6416
  },
6417
+ {
6418
+ "path": "scripts/gds/test-path-guard.js",
6419
+ "mode": "0000644",
6420
+ "sha256": "d3e542cf977f9aadad8f856defa6d809f3604e184cd261fbee7738aa1da736ea"
6421
+ },
6392
6422
  {
6393
6423
  "path": "scripts/gds/triage.js",
6394
6424
  "mode": "0000644",
@@ -6532,7 +6562,7 @@
6532
6562
  {
6533
6563
  "path": "src/bongos/auth-admission.js",
6534
6564
  "mode": "0000644",
6535
- "sha256": "0d2e4aaf4b99ac4b1122c182f279ae622f53d8896baa31d796c5bb0f4ef6532c"
6565
+ "sha256": "9978b10e2e675b6f7c1211dd74c8cf302395b2f47062eba5df376203ee77d341"
6536
6566
  },
6537
6567
  {
6538
6568
  "path": "src/bongos/auth-config.js",
@@ -6807,7 +6837,7 @@
6807
6837
  {
6808
6838
  "path": "src/module-api.js",
6809
6839
  "mode": "0000644",
6810
- "sha256": "8d822b226b35e7226e3678e7e1e53e0c4da9d27be845bfe69d6832c976d2ffcb"
6840
+ "sha256": "5287468c8e1a2ba691e02ff2150bcb425b00db6c0ce676b063d32cb20ef640c5"
6811
6841
  },
6812
6842
  {
6813
6843
  "path": "src/module-loader/catalog.js",
@@ -7684,6 +7714,11 @@
7684
7714
  "mode": "0000644",
7685
7715
  "sha256": "5466ddf0b7e0298206d46da7b84cfd3826e0f549395088bf5ed91397d15f1746"
7686
7716
  },
7717
+ {
7718
+ "path": "tests/first_admin_kickoff_seed.mjs",
7719
+ "mode": "0000644",
7720
+ "sha256": "8006f4696e6bae21b84c9e8ec25cb7a7d34c5899f187d2ac59b2a6dcbb6f92d1"
7721
+ },
7687
7722
  {
7688
7723
  "path": "tests/first_run_engine_check.mjs",
7689
7724
  "mode": "0000644",
@@ -7839,10 +7874,15 @@
7839
7874
  "mode": "0000644",
7840
7875
  "sha256": "447e6376ae5f5e2bedf1a80b3355604544a5e349da87d110fc0135cc3cd98fac"
7841
7876
  },
7877
+ {
7878
+ "path": "tests/goal_sort_staleness.mjs",
7879
+ "mode": "0000644",
7880
+ "sha256": "1c34a429a1e96c409e8f6e2199d79a0f75b95f25a2cd5f1a86b6f2e254d6ac40"
7881
+ },
7842
7882
  {
7843
7883
  "path": "tests/goal_subtitle.mjs",
7844
7884
  "mode": "0000644",
7845
- "sha256": "b963d8a8e5d5a405de841a5f965b99e5f4d34bdb33bdbf7964f961f0901c1cc8"
7885
+ "sha256": "d3f104c710cecd545c9999149a5f02c54ba43ba8ea1e8bcd7e1659eaa2b21f33"
7846
7886
  },
7847
7887
  {
7848
7888
  "path": "tests/goal_suggest.mjs",
@@ -7867,7 +7907,7 @@
7867
7907
  {
7868
7908
  "path": "tests/goals_lib.mjs",
7869
7909
  "mode": "0000644",
7870
- "sha256": "5377b04f5c2153d1edcd5f38604a24195a2da8e4f7dcbc95692ceb7a1079354a"
7910
+ "sha256": "92aa5dbf8eba0a0aaa34bf5d25aa439ef5a9265f5e8cd374c2334670a3cdc28d"
7871
7911
  },
7872
7912
  {
7873
7913
  "path": "tests/government_abuse_matrix.mjs",
@@ -8359,6 +8399,16 @@
8359
8399
  "mode": "0000644",
8360
8400
  "sha256": "db9ad86df4c9593db89f91ef2306c30eb33ae56bebe5b210a4b3a1912f67d42c"
8361
8401
  },
8402
+ {
8403
+ "path": "tests/kickoff_checklist.mjs",
8404
+ "mode": "0000644",
8405
+ "sha256": "d0849053675cb4705fe6774b1a8ac6b3edb5b43a758775446fad257be6cb9ba3"
8406
+ },
8407
+ {
8408
+ "path": "tests/kickoff_seed.mjs",
8409
+ "mode": "0000644",
8410
+ "sha256": "416d413757a13fbddb5841ea8a2c503077d7e6067bc1c58ce1f4d416b8d8487f"
8411
+ },
8362
8412
  {
8363
8413
  "path": "tests/known_failing_ratchet.mjs",
8364
8414
  "mode": "0000644",
@@ -8817,7 +8867,7 @@
8817
8867
  {
8818
8868
  "path": "tests/provisioning_onboard_mode.mjs",
8819
8869
  "mode": "0000644",
8820
- "sha256": "7749df454ac3cca7c7e5ea1acc94ead15d1c9f87b38fe2028a1c93c8adf31bcf"
8870
+ "sha256": "97d04ee39cc06b720d4a5b42f3e3cc614f64d9462b27471a1af7598b5e2929be"
8821
8871
  },
8822
8872
  {
8823
8873
  "path": "tests/provisioning_settings.mjs",
@@ -9042,7 +9092,7 @@
9042
9092
  {
9043
9093
  "path": "tests/search_ingest.mjs",
9044
9094
  "mode": "0000644",
9045
- "sha256": "504a855803d88468667663f663656dfd8e25726b90a412e34bcf55da0ad57d5e"
9095
+ "sha256": "8d685a46ab9f4cf9aaa71b9ee78774d95c16daa27c15a229b8628a97688b9a55"
9046
9096
  },
9047
9097
  {
9048
9098
  "path": "tests/search_ingest_db.mjs",
@@ -9177,7 +9227,7 @@
9177
9227
  {
9178
9228
  "path": "tests/setup_smoke.mjs",
9179
9229
  "mode": "0000644",
9180
- "sha256": "919541c9444b7dc60f33a1e56b2f7defaf07ea1da5fb4b0c9760ca1bb9e7f1e0"
9230
+ "sha256": "c55f6c506758d973b7cbe750a873e8c38d02006e1495f027fedb0ebfc84c7186"
9181
9231
  },
9182
9232
  {
9183
9233
  "path": "tests/ship_api_client_pathspec.mjs",
@@ -9444,6 +9494,11 @@
9444
9494
  "mode": "0000644",
9445
9495
  "sha256": "3ff18b286a68b244a272b3f2606ae33b298622347aae97305152f235ca57b330"
9446
9496
  },
9497
+ {
9498
+ "path": "tests/test_path_guard.mjs",
9499
+ "mode": "0000644",
9500
+ "sha256": "bbb0b063bffc6e394114bc4895da5006d8797a0317ed38f1c7f9b989841d5eab"
9501
+ },
9447
9502
  {
9448
9503
  "path": "tests/tool-scan-fixtures/README.md",
9449
9504
  "mode": "0000644",
@@ -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
- - 321 operations across 52 resource groups
8
+ - 322 operations across 52 resource groups
9
9
 
10
10
  ## Install
11
11
 
@@ -367,6 +367,8 @@ function createClient(opts = {}) {
367
367
  getGoalsInbox: (args) => request("GET", "/goals/inbox", { hasBody: false }, args),
368
368
  // POST /goals/reorder — rank: metic+archon — POST /goals/reorder
369
369
  postGoalsReorder: (args) => request("POST", "/goals/reorder", { hasBody: true }, args),
370
+ // GET /goals/rollups — rank: any-builder — GET /goals/rollups
371
+ getGoalsRollups: (args) => request("GET", "/goals/rollups", { hasBody: false }, args),
370
372
  // GET /goals/suggestions — rank: any-builder — GET /goals/suggestions
371
373
  getGoalsSuggestions: (args) => request("GET", "/goals/suggestions", { hasBody: false }, args),
372
374
  },
@@ -366,6 +366,8 @@ function createClient(opts = {}) {
366
366
  getGoalsInbox: (args) => request("GET", "/goals/inbox", { hasBody: false }, args),
367
367
  // POST /goals/reorder — rank: metic+archon — POST /goals/reorder
368
368
  postGoalsReorder: (args) => request("POST", "/goals/reorder", { hasBody: true }, args),
369
+ // GET /goals/rollups — rank: any-builder — GET /goals/rollups
370
+ getGoalsRollups: (args) => request("GET", "/goals/rollups", { hasBody: false }, args),
369
371
  // GET /goals/suggestions — rank: any-builder — GET /goals/suggestions
370
372
  getGoalsSuggestions: (args) => request("GET", "/goals/suggestions", { hasBody: false }, args),
371
373
  },
@@ -46,6 +46,7 @@ export interface GetGoalsIdConflictsResponse { ok: boolean; goal_id: unknown; co
46
46
  export interface GetGoalsIdRequestsResponse { requests: unknown }
47
47
  export interface GetGoalsIdResponse { goal: unknown; members: unknown; criteria: unknown; dependencies: unknown }
48
48
  export interface GetGoalsResponse { goals: unknown }
49
+ export interface GetGoalsRollupsResponse { rollups: unknown }
49
50
  export interface GetGovernmentAssignmentsResponse { assignments: unknown }
50
51
  export interface GetGovernmentPermissionsResponse { permissions: unknown; principals: unknown }
51
52
  export interface GetGovernmentRanksResponse { ranks: unknown }
@@ -351,6 +352,7 @@ export interface PostTasksIdVoteRequest { vote: -1 | 0 | 1 }
351
352
  export interface PostTasksIdVoteResponse { ok: boolean; task_id: unknown; my_vote: unknown; net_votes: unknown; total_votes: unknown }
352
353
  export interface PostTasksNewcomerRestockResponse { ok: boolean; stamped: unknown; results: unknown }
353
354
  export interface PostTasksRequest { version_id: string; title: string; description?: string; status?: string; touches?: string[]; est_minutes?: number; est_cost_usd?: number; manual_degree?: number; priority?: number; automation_tag?: string; credits_reward?: number; source?: string; source_ref?: string; value_summary?: string; kind?: string; discipline?: string; parallel_safe?: unknown; newcomer_friendly?: boolean; security_sensitive?: boolean; requires_rank?: string; auto_detect_touches?: boolean; criterion_ids?: unknown[]; module_key?: string; goal_id?: number }
355
+ export interface PostTasksResponse { task: unknown; needs_migration: unknown; criteria: unknown; idempotent: boolean }
354
356
  export interface PostVersionsIdDoneWhenRequest { criterion_id: string; criterion_md: string; goal_id?: number; sort_order?: number }
355
357
  export interface PostVersionsIdDoneWhenResponse { ok: boolean; criterion: unknown }
356
358
  export interface PostVersionsRequest { id: string; name: string; status?: string; track?: string; done_when?: string; scope_doc_path?: string; criteria?: unknown[] }
@@ -655,6 +657,8 @@ export interface BongosClient {
655
657
  getGoalsInbox(args?: RequestArgs): Promise<ApiResponse>;
656
658
  /** POST /goals/reorder — rank: metic+archon */
657
659
  postGoalsReorder(args: RequestArgs & { body: PostGoalsReorderRequest }): Promise<PostGoalsReorderResponse>;
660
+ /** GET /goals/rollups — rank: any-builder */
661
+ getGoalsRollups(args?: RequestArgs): Promise<GetGoalsRollupsResponse>;
658
662
  /** GET /goals/suggestions — rank: any-builder */
659
663
  getGoalsSuggestions(args?: RequestArgs): Promise<ApiResponse>;
660
664
  };
@@ -1038,7 +1042,7 @@ export interface BongosClient {
1038
1042
  /** GET /tasks — rank: any-builder */
1039
1043
  getTasks(args?: RequestArgs): Promise<GetTasksResponse>;
1040
1044
  /** POST /tasks — rank: metic+archon */
1041
- postTasks(args: RequestArgs & { body: PostTasksRequest }): Promise<ApiResponse>;
1045
+ postTasks(args: RequestArgs & { body: PostTasksRequest }): Promise<PostTasksResponse>;
1042
1046
  /** GET /tasks/{id} — rank: any-builder */
1043
1047
  getTasksId(args?: RequestArgs): Promise<ApiResponse>;
1044
1048
  /** PATCH /tasks/{id} — rank: metic+archon */
@@ -363,6 +363,8 @@ export function createClient(opts = {}) {
363
363
  getGoalsInbox: (args) => request("GET", "/goals/inbox", { hasBody: false }, args),
364
364
  // POST /goals/reorder — rank: metic+archon — POST /goals/reorder
365
365
  postGoalsReorder: (args) => request("POST", "/goals/reorder", { hasBody: true }, args),
366
+ // GET /goals/rollups — rank: any-builder — GET /goals/rollups
367
+ getGoalsRollups: (args) => request("GET", "/goals/rollups", { hasBody: false }, args),
366
368
  // GET /goals/suggestions — rank: any-builder — GET /goals/suggestions
367
369
  getGoalsSuggestions: (args) => request("GET", "/goals/suggestions", { hasBody: false }, args),
368
370
  },
@@ -4428,6 +4428,44 @@
4428
4428
  ]
4429
4429
  }
4430
4430
  },
4431
+ "/goals/rollups": {
4432
+ "get": {
4433
+ "operationId": "get_goals_rollups",
4434
+ "tags": [
4435
+ "goals"
4436
+ ],
4437
+ "summary": "GET /goals/rollups",
4438
+ "description": "GET /goals/rollups?version= — one small row per goal: readiness counters, the last-activity timestamp, the craft set, and the next claimable task (task 1003278). It replaces the Goals page's whole-version task fetch, which measured 5,229,455 bytes for ~1,400 tasks on 2026-08-25 to produce ~40 counter objects. Registered BEFORE /goals/:id or Express routes 'rollups' to the param. rank: any-builder — the same read as the goal board it feeds.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
4439
+ "x-rank": "any-builder",
4440
+ "x-source": "modules/lifecycle/routes/goals.js",
4441
+ "responses": {
4442
+ "200": {
4443
+ "description": "Success.",
4444
+ "content": {
4445
+ "application/json": {
4446
+ "schema": {
4447
+ "$ref": "#/components/schemas/GetGoalsRollupsResponse"
4448
+ }
4449
+ }
4450
+ }
4451
+ },
4452
+ "400": {
4453
+ "$ref": "#/components/responses/BadRequest"
4454
+ },
4455
+ "401": {
4456
+ "$ref": "#/components/responses/Unauthorized"
4457
+ },
4458
+ "403": {
4459
+ "$ref": "#/components/responses/Forbidden"
4460
+ }
4461
+ },
4462
+ "security": [
4463
+ {
4464
+ "builderSession": []
4465
+ }
4466
+ ]
4467
+ }
4468
+ },
4431
4469
  "/goals/suggestions": {
4432
4470
  "get": {
4433
4471
  "operationId": "get_goals_suggestions",
@@ -12632,7 +12670,7 @@
12632
12670
  "tasks"
12633
12671
  ],
12634
12672
  "summary": "GET /tasks",
12635
- "description": "reads (filtered task list); preserved per CRITICAL §4.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
12673
+ "description": "**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
12636
12674
  "x-rank": "any-builder",
12637
12675
  "x-source": "modules/lifecycle/routes/tasks.js",
12638
12676
  "responses": {
@@ -12687,7 +12725,14 @@
12687
12725
  },
12688
12726
  "responses": {
12689
12727
  "200": {
12690
- "description": "Success."
12728
+ "description": "Success.",
12729
+ "content": {
12730
+ "application/json": {
12731
+ "schema": {
12732
+ "$ref": "#/components/schemas/PostTasksResponse"
12733
+ }
12734
+ }
12735
+ }
12691
12736
  },
12692
12737
  "400": {
12693
12738
  "$ref": "#/components/responses/ValidationFailed"
@@ -15130,6 +15175,15 @@
15130
15175
  "goals"
15131
15176
  ]
15132
15177
  },
15178
+ "GetGoalsRollupsResponse": {
15179
+ "type": "object",
15180
+ "properties": {
15181
+ "rollups": {}
15182
+ },
15183
+ "required": [
15184
+ "rollups"
15185
+ ]
15186
+ },
15133
15187
  "GetGovernmentAssignmentsResponse": {
15134
15188
  "type": "object",
15135
15189
  "properties": {
@@ -19974,6 +20028,23 @@
19974
20028
  ],
19975
20029
  "additionalProperties": false
19976
20030
  },
20031
+ "PostTasksResponse": {
20032
+ "type": "object",
20033
+ "properties": {
20034
+ "task": {},
20035
+ "needs_migration": {},
20036
+ "criteria": {},
20037
+ "idempotent": {
20038
+ "type": "boolean"
20039
+ }
20040
+ },
20041
+ "required": [
20042
+ "task",
20043
+ "needs_migration",
20044
+ "criteria",
20045
+ "idempotent"
20046
+ ]
20047
+ },
19977
20048
  "PostVersionsIdDoneWhenRequest": {
19978
20049
  "type": "object",
19979
20050
  "properties": {
@@ -20234,9 +20305,9 @@
20234
20305
  "description": "A required dependency/feature is not configured or is temporarily down."
20235
20306
  }
20236
20307
  },
20237
- "x-endpoint-count": 321,
20238
- "x-schema-count": 355,
20308
+ "x-endpoint-count": 322,
20309
+ "x-schema-count": 357,
20239
20310
  "x-undocumented-bodies": 9,
20240
- "x-response-schemas": 238,
20311
+ "x-response-schemas": 240,
20241
20312
  "x-generated-by": "scripts/gds/gen-api-docs.js"
20242
20313
  }
@@ -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. 321 endpoints across 52 route files.
5
+ > **Generated from the live route files** — the route file is authoritative. 322 endpoints across 52 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`.
@@ -206,7 +206,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
206
206
  | GET | `/api/bongos/github/repos` | `any-builder` | — | acts only on the caller's OWN GitHub identity (the token they granted). |
207
207
  | POST | `/api/bongos/github/repos` | `any-builder` | `name` | creates a repo in the caller's OWN account. |
208
208
 
209
- ## `goals` (27)
209
+ ## `goals` (28)
210
210
 
211
211
  | Method | Path | Rank | Body | Description |
212
212
  |---|---|---|---|---|
@@ -236,6 +236,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
236
236
  | PATCH | `/api/bongos/goals/:id/visibility` | `any-builder` | — | PATCH /goals/:id/visibility — make a goal public\|private (task 1952 / ADR 0112). |
237
237
  | 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… |
238
238
  | 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). |
239
+ | 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… |
239
240
  | 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). |
240
241
 
241
242
  ## `government` (13)
@@ -538,7 +539,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
538
539
 
539
540
  | Method | Path | Rank | Body | Description |
540
541
  |---|---|---|---|---|
541
- | GET | `/api/bongos/tasks` | `any-builder` | — | reads (filtered task list); preserved per CRITICAL §4. |
542
+ | GET | `/api/bongos/tasks` | `any-builder` | — | |
542
543
  | 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`, `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 … |
543
544
  | GET | `/api/bongos/tasks/:id` | `any-builder` | — | single-task read; preserved per CRITICAL §4 (supervisor hot path). |
544
545
  | 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_migration`, `description`, `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 … |