@bongos/core 1.19.874 → 1.19.875
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.bongos-core.json +49 -29
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +8 -0
- package/clients/bongos-client/index.cjs +8 -0
- package/clients/bongos-client/index.d.ts +11 -0
- package/clients/bongos-client/index.mjs +8 -0
- package/docs/adr/0307-autobongos-a-deterministic-supervisor-and-agentic-workers.md +18 -0
- package/docs/api/openapi.json +218 -3
- package/docs/api-reference.md +6 -2
- package/docs/copy-inventory.md +35 -26
- package/docs/copy-registry.json +108 -27
- package/docs/module-api-changelog.md +2 -0
- package/modules/autonomy/db.js +74 -0
- package/modules/autonomy/fence.js +172 -0
- package/modules/autonomy/migrations/autonomy_001_autobongos_fence.sql +71 -0
- package/modules/autonomy/routes/autonomy.js +91 -0
- package/modules/dev-box/app/src/vendor/bongos-client.cjs +8 -0
- package/modules/government/catalog.js +11 -0
- package/modules/government/migrations/government_016_autonomy_fence_manage.sql +37 -0
- package/modules/hall-ui/public/gate.html +14 -1
- package/modules/hall-ui/public/gate.js +117 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/scripts/gds/autobongos-run.js +90 -15
- package/src/module-api.js +1 -1
- package/tests/autobongos_fence.mjs +262 -0
- package/tests/autobongos_loop.mjs +120 -1
package/.bongos-core.json
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
"artifact": "bongos-core",
|
|
3
3
|
"manifest_schema": 1,
|
|
4
4
|
"generator": "scripts/gds/package-core.js",
|
|
5
|
-
"core_version": "1.19.
|
|
6
|
-
"core_contract": "1.19.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.19.875",
|
|
6
|
+
"core_contract": "1.19.875",
|
|
7
|
+
"source_commit": "d1782be0c7671dd7dd82c4f354a77d231fb274be",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-09-
|
|
9
|
+
"built_at": "2026-09-19T04:13:30.837Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 500,
|
|
13
13
|
"agent_docs_stubbed": 26,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 2305,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 2831,
|
|
20
|
+
"tree_sha256": "1217f7ece32a73d51483fbdd8aabfd37cb8021c9506bca34d253378aedbdd9b3",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/ask-for-help/SKILL.md",
|
|
@@ -347,12 +347,12 @@
|
|
|
347
347
|
{
|
|
348
348
|
"path": "clients/bongos-client/README.md",
|
|
349
349
|
"mode": "0000644",
|
|
350
|
-
"sha256": "
|
|
350
|
+
"sha256": "54cdd993cbae28a4dbd1aab84d565905f672b4e1095cfde9212de02ae30e367a"
|
|
351
351
|
},
|
|
352
352
|
{
|
|
353
353
|
"path": "clients/bongos-client/bongos-client.global.js",
|
|
354
354
|
"mode": "0000644",
|
|
355
|
-
"sha256": "
|
|
355
|
+
"sha256": "b344141a606defff7530f0546e3fc741c5f9685cd6a8d20f6c64f8de1633bc87"
|
|
356
356
|
},
|
|
357
357
|
{
|
|
358
358
|
"path": "clients/bongos-client/examples/hello-world.mjs",
|
|
@@ -362,17 +362,17 @@
|
|
|
362
362
|
{
|
|
363
363
|
"path": "clients/bongos-client/index.cjs",
|
|
364
364
|
"mode": "0000644",
|
|
365
|
-
"sha256": "
|
|
365
|
+
"sha256": "46c9fb18c486f413cda2d73a4dee92c73d6ca15be08109b8dd5986ede3b23a4b"
|
|
366
366
|
},
|
|
367
367
|
{
|
|
368
368
|
"path": "clients/bongos-client/index.d.ts",
|
|
369
369
|
"mode": "0000644",
|
|
370
|
-
"sha256": "
|
|
370
|
+
"sha256": "cc54c6e360985bfbcf4a00206f16989affd706177cfe3715c77ccd91c3c9d1d9"
|
|
371
371
|
},
|
|
372
372
|
{
|
|
373
373
|
"path": "clients/bongos-client/index.mjs",
|
|
374
374
|
"mode": "0000644",
|
|
375
|
-
"sha256": "
|
|
375
|
+
"sha256": "5bec4eae4564aba7087341014a4690d0717252300cd297ae97b9108102aaabd3"
|
|
376
376
|
},
|
|
377
377
|
{
|
|
378
378
|
"path": "clients/bongos-client/package.json",
|
|
@@ -2027,7 +2027,7 @@
|
|
|
2027
2027
|
{
|
|
2028
2028
|
"path": "docs/adr/0307-autobongos-a-deterministic-supervisor-and-agentic-workers.md",
|
|
2029
2029
|
"mode": "0000644",
|
|
2030
|
-
"sha256": "
|
|
2030
|
+
"sha256": "c3509e08e96fc65e2e2eb0e6306d79c06d2302652efad47b60107bcf4c0078a8"
|
|
2031
2031
|
},
|
|
2032
2032
|
{
|
|
2033
2033
|
"path": "docs/adr/0308-an-eleventh-working-area.md",
|
|
@@ -2042,12 +2042,12 @@
|
|
|
2042
2042
|
{
|
|
2043
2043
|
"path": "docs/api-reference.md",
|
|
2044
2044
|
"mode": "0000644",
|
|
2045
|
-
"sha256": "
|
|
2045
|
+
"sha256": "505ce889291a3dddbe66c2d375b7f0a631531b741ebe6fdf5d960af3b42173b3"
|
|
2046
2046
|
},
|
|
2047
2047
|
{
|
|
2048
2048
|
"path": "docs/api/openapi.json",
|
|
2049
2049
|
"mode": "0000644",
|
|
2050
|
-
"sha256": "
|
|
2050
|
+
"sha256": "0b47552a99357a93cb13ea0f546a61b3850c3a8e8a324d243cced32813dfa619"
|
|
2051
2051
|
},
|
|
2052
2052
|
{
|
|
2053
2053
|
"path": "docs/architecture.md",
|
|
@@ -2072,12 +2072,12 @@
|
|
|
2072
2072
|
{
|
|
2073
2073
|
"path": "docs/copy-inventory.md",
|
|
2074
2074
|
"mode": "0000644",
|
|
2075
|
-
"sha256": "
|
|
2075
|
+
"sha256": "c923e66a5b77c20784cfb0e50d8bba2bb41ec38895a029c2bbb69a829c3e6eb3"
|
|
2076
2076
|
},
|
|
2077
2077
|
{
|
|
2078
2078
|
"path": "docs/copy-registry.json",
|
|
2079
2079
|
"mode": "0000644",
|
|
2080
|
-
"sha256": "
|
|
2080
|
+
"sha256": "864bbc41a5c93bf63aa529dd396d8784a56d65975d6ebd7e15edab51e3c5093f"
|
|
2081
2081
|
},
|
|
2082
2082
|
{
|
|
2083
2083
|
"path": "docs/design/apex-pass-2-direction.md",
|
|
@@ -2602,7 +2602,7 @@
|
|
|
2602
2602
|
{
|
|
2603
2603
|
"path": "docs/module-api-changelog.md",
|
|
2604
2604
|
"mode": "0000644",
|
|
2605
|
-
"sha256": "
|
|
2605
|
+
"sha256": "0d33c3fc850860d87fcb70790d850de2a2be38635fb152dd7d021c6176f67292"
|
|
2606
2606
|
},
|
|
2607
2607
|
{
|
|
2608
2608
|
"path": "docs/modules-contract.md",
|
|
@@ -3787,13 +3787,23 @@
|
|
|
3787
3787
|
{
|
|
3788
3788
|
"path": "modules/autonomy/db.js",
|
|
3789
3789
|
"mode": "0000644",
|
|
3790
|
-
"sha256": "
|
|
3790
|
+
"sha256": "147b12a8b268a62456d8d8f685f067ba36884d28e72aa9d97e096aba4dd58584"
|
|
3791
|
+
},
|
|
3792
|
+
{
|
|
3793
|
+
"path": "modules/autonomy/fence.js",
|
|
3794
|
+
"mode": "0000644",
|
|
3795
|
+
"sha256": "6debf9929cf269e84596032146d5bc953e0d7d96c86eea0d25e42c2f94a173fd"
|
|
3791
3796
|
},
|
|
3792
3797
|
{
|
|
3793
3798
|
"path": "modules/autonomy/gauge.js",
|
|
3794
3799
|
"mode": "0000644",
|
|
3795
3800
|
"sha256": "64726adb15d64521a3a4da80d4528fa0db7e67b302d0ca407e7142eefdd57e7d"
|
|
3796
3801
|
},
|
|
3802
|
+
{
|
|
3803
|
+
"path": "modules/autonomy/migrations/autonomy_001_autobongos_fence.sql",
|
|
3804
|
+
"mode": "0000644",
|
|
3805
|
+
"sha256": "23d98c938efdeb221bdcaef1c1ed3f09ac0f389ad6fb38fc221450b34158b5ad"
|
|
3806
|
+
},
|
|
3797
3807
|
{
|
|
3798
3808
|
"path": "modules/autonomy/module.json",
|
|
3799
3809
|
"mode": "0000644",
|
|
@@ -3807,7 +3817,7 @@
|
|
|
3807
3817
|
{
|
|
3808
3818
|
"path": "modules/autonomy/routes/autonomy.js",
|
|
3809
3819
|
"mode": "0000644",
|
|
3810
|
-
"sha256": "
|
|
3820
|
+
"sha256": "abb70f760ab019c4ad8f1962a2700f3801c71e3dd86b5124b02900e1812d1e04"
|
|
3811
3821
|
},
|
|
3812
3822
|
{
|
|
3813
3823
|
"path": "modules/builder-settings/CLAUDE.md",
|
|
@@ -4162,7 +4172,7 @@
|
|
|
4162
4172
|
{
|
|
4163
4173
|
"path": "modules/dev-box/app/src/vendor/bongos-client.cjs",
|
|
4164
4174
|
"mode": "0000644",
|
|
4165
|
-
"sha256": "
|
|
4175
|
+
"sha256": "46c9fb18c486f413cda2d73a4dee92c73d6ca15be08109b8dd5986ede3b23a4b"
|
|
4166
4176
|
},
|
|
4167
4177
|
{
|
|
4168
4178
|
"path": "modules/dev-box/app/test/unit.mjs",
|
|
@@ -4412,7 +4422,7 @@
|
|
|
4412
4422
|
{
|
|
4413
4423
|
"path": "modules/government/catalog.js",
|
|
4414
4424
|
"mode": "0000644",
|
|
4415
|
-
"sha256": "
|
|
4425
|
+
"sha256": "c705435848db169f6a37832b88ae7280193232a3f0f918388a11b05072836af3"
|
|
4416
4426
|
},
|
|
4417
4427
|
{
|
|
4418
4428
|
"path": "modules/government/config.js",
|
|
@@ -4539,6 +4549,11 @@
|
|
|
4539
4549
|
"mode": "0000644",
|
|
4540
4550
|
"sha256": "d376d2532b942c77a8ad71f6bdbeea389db3276ee86a6e57a58eed41439b6bdd"
|
|
4541
4551
|
},
|
|
4552
|
+
{
|
|
4553
|
+
"path": "modules/government/migrations/government_016_autonomy_fence_manage.sql",
|
|
4554
|
+
"mode": "0000644",
|
|
4555
|
+
"sha256": "56bf6e19318922577ca8c9bb3d7a10177957b993f7d572b1bb2f623e5179fce7"
|
|
4556
|
+
},
|
|
4542
4557
|
{
|
|
4543
4558
|
"path": "modules/government/module.json",
|
|
4544
4559
|
"mode": "0000644",
|
|
@@ -4937,12 +4952,12 @@
|
|
|
4937
4952
|
{
|
|
4938
4953
|
"path": "modules/hall-ui/public/gate.html",
|
|
4939
4954
|
"mode": "0000644",
|
|
4940
|
-
"sha256": "
|
|
4955
|
+
"sha256": "88f8a79743e7fc40651ab64306c5dec5d52c8a0886d4fd4515227ad89ca837e4"
|
|
4941
4956
|
},
|
|
4942
4957
|
{
|
|
4943
4958
|
"path": "modules/hall-ui/public/gate.js",
|
|
4944
4959
|
"mode": "0000644",
|
|
4945
|
-
"sha256": "
|
|
4960
|
+
"sha256": "1445bece8bebdcc43174ee7873729a843d4f60fdd617226d936783e243763754"
|
|
4946
4961
|
},
|
|
4947
4962
|
{
|
|
4948
4963
|
"path": "modules/hall-ui/public/gate.states.json",
|
|
@@ -7932,12 +7947,12 @@
|
|
|
7932
7947
|
{
|
|
7933
7948
|
"path": "package-lock.json",
|
|
7934
7949
|
"mode": "0000644",
|
|
7935
|
-
"sha256": "
|
|
7950
|
+
"sha256": "f5357bd73be9ea55bd37f72b3510637906159d36638a1ba23366fda56d93da6e"
|
|
7936
7951
|
},
|
|
7937
7952
|
{
|
|
7938
7953
|
"path": "package.json",
|
|
7939
7954
|
"mode": "0000644",
|
|
7940
|
-
"sha256": "
|
|
7955
|
+
"sha256": "c4516d41236cc62820827c5fed694403aaf255e0e8ad566041ee6397e9eff429"
|
|
7941
7956
|
},
|
|
7942
7957
|
{
|
|
7943
7958
|
"path": "public-docs/index.html",
|
|
@@ -8102,7 +8117,7 @@
|
|
|
8102
8117
|
{
|
|
8103
8118
|
"path": "scripts/gds/autobongos-run.js",
|
|
8104
8119
|
"mode": "0000644",
|
|
8105
|
-
"sha256": "
|
|
8120
|
+
"sha256": "6b91b2f34173d0c8bf516f074a7d9f7197c2a69fafcae949f1f2d2e57e353df3"
|
|
8106
8121
|
},
|
|
8107
8122
|
{
|
|
8108
8123
|
"path": "scripts/gds/autobongos-verify.js",
|
|
@@ -9922,7 +9937,7 @@
|
|
|
9922
9937
|
{
|
|
9923
9938
|
"path": "src/module-api.js",
|
|
9924
9939
|
"mode": "0000644",
|
|
9925
|
-
"sha256": "
|
|
9940
|
+
"sha256": "30eab36a9a6432777dcf0df87512a6d06b40eb03ded24b3119a8ceb231e0cc52"
|
|
9926
9941
|
},
|
|
9927
9942
|
{
|
|
9928
9943
|
"path": "src/module-loader/catalog.js",
|
|
@@ -10324,10 +10339,15 @@
|
|
|
10324
10339
|
"mode": "0000644",
|
|
10325
10340
|
"sha256": "d7ac18d14e8e9e5e7b9e913a76953fe69bfefea4912e77ca30b285647bfcfca8"
|
|
10326
10341
|
},
|
|
10342
|
+
{
|
|
10343
|
+
"path": "tests/autobongos_fence.mjs",
|
|
10344
|
+
"mode": "0000644",
|
|
10345
|
+
"sha256": "00709f1c010f594c457b9bdb49bd0d7377cebdb140e080869a8f7458960841ff"
|
|
10346
|
+
},
|
|
10327
10347
|
{
|
|
10328
10348
|
"path": "tests/autobongos_loop.mjs",
|
|
10329
10349
|
"mode": "0000644",
|
|
10330
|
-
"sha256": "
|
|
10350
|
+
"sha256": "2f9c2b4e115b2c7411748cfe5179344bcc0e45c855c68102821966ab63ccbc21"
|
|
10331
10351
|
},
|
|
10332
10352
|
{
|
|
10333
10353
|
"path": "tests/autobongos_verify.mjs",
|
|
@@ -5,7 +5,7 @@ A **generated**, zero-dependency typed client for the Bongos API — produced fr
|
|
|
5
5
|
by hand; it regenerates when the spec changes, so it can never drift from the routes.
|
|
6
6
|
|
|
7
7
|
- API version: **v1** (served at `/api/bongos/v1`)
|
|
8
|
-
-
|
|
8
|
+
- 398 operations across 60 resource groups
|
|
9
9
|
|
|
10
10
|
## Use it from your project
|
|
11
11
|
|
|
@@ -173,6 +173,14 @@ function createClient(opts = {}) {
|
|
|
173
173
|
getAuthWebStart: (args) => request("GET", "/auth/web/start", { hasBody: false }, args),
|
|
174
174
|
},
|
|
175
175
|
"autonomy": {
|
|
176
|
+
// GET /autonomy/fence — rank: any-builder — GET /autonomy/fence
|
|
177
|
+
getAutonomyFence: (args) => request("GET", "/autonomy/fence", { hasBody: false }, args),
|
|
178
|
+
// POST /autonomy/fence — rank: archon — POST /autonomy/fence
|
|
179
|
+
postAutonomyFence: (args) => request("POST", "/autonomy/fence", { hasBody: true }, args),
|
|
180
|
+
// POST /autonomy/fence/goals — rank: archon — POST /autonomy/fence/goals
|
|
181
|
+
postAutonomyFenceGoals: (args) => request("POST", "/autonomy/fence/goals", { hasBody: true }, args),
|
|
182
|
+
// DELETE /autonomy/fence/goals/{goalId} — rank: archon — DELETE /autonomy/fence/goals/:goalId
|
|
183
|
+
deleteAutonomyFenceGoalsGoalId: (args) => request("DELETE", "/autonomy/fence/goals/{goalId}", { hasBody: false }, args),
|
|
176
184
|
// GET /autonomy/precheck — rank: metic+archon — GET /autonomy/precheck
|
|
177
185
|
getAutonomyPrecheck: (args) => request("GET", "/autonomy/precheck", { hasBody: false }, args),
|
|
178
186
|
},
|
|
@@ -172,6 +172,14 @@ function createClient(opts = {}) {
|
|
|
172
172
|
getAuthWebStart: (args) => request("GET", "/auth/web/start", { hasBody: false }, args),
|
|
173
173
|
},
|
|
174
174
|
"autonomy": {
|
|
175
|
+
// GET /autonomy/fence — rank: any-builder — GET /autonomy/fence
|
|
176
|
+
getAutonomyFence: (args) => request("GET", "/autonomy/fence", { hasBody: false }, args),
|
|
177
|
+
// POST /autonomy/fence — rank: archon — POST /autonomy/fence
|
|
178
|
+
postAutonomyFence: (args) => request("POST", "/autonomy/fence", { hasBody: true }, args),
|
|
179
|
+
// POST /autonomy/fence/goals — rank: archon — POST /autonomy/fence/goals
|
|
180
|
+
postAutonomyFenceGoals: (args) => request("POST", "/autonomy/fence/goals", { hasBody: true }, args),
|
|
181
|
+
// DELETE /autonomy/fence/goals/{goalId} — rank: archon — DELETE /autonomy/fence/goals/:goalId
|
|
182
|
+
deleteAutonomyFenceGoalsGoalId: (args) => request("DELETE", "/autonomy/fence/goals/{goalId}", { hasBody: false }, args),
|
|
175
183
|
// GET /autonomy/precheck — rank: metic+archon — GET /autonomy/precheck
|
|
176
184
|
getAutonomyPrecheck: (args) => request("GET", "/autonomy/precheck", { hasBody: false }, args),
|
|
177
185
|
},
|
|
@@ -227,6 +227,9 @@ export interface PostAuthRevokeAllRequest { builder_id?: StringifiableId }
|
|
|
227
227
|
export interface PostAuthRevokeAllResponse { ok: boolean; revoked: unknown }
|
|
228
228
|
export interface PostAuthRevokeRequest { session_id?: StringifiableId }
|
|
229
229
|
export interface PostAuthRevokeResponse { ok: boolean; revoked: unknown }
|
|
230
|
+
export interface PostAutonomyFenceGoalsRequest { goal_id: StringifiableId; note?: string }
|
|
231
|
+
export interface PostAutonomyFenceGoalsResponse { goal: unknown }
|
|
232
|
+
export interface PostAutonomyFenceRequest { enabled: boolean; reason?: string }
|
|
230
233
|
export interface PostBackupTriggerResponse { ok: boolean; message: unknown; started_at: unknown }
|
|
231
234
|
export interface PostBlockersIdLinkRequest { task_id: StringifiableId }
|
|
232
235
|
export interface PostBlockersIdLinkResponse { ok: boolean; blocked: unknown }
|
|
@@ -539,6 +542,14 @@ export interface BongosClient {
|
|
|
539
542
|
getAuthWebStart(args?: RequestArgs): Promise<ApiResponse>;
|
|
540
543
|
};
|
|
541
544
|
"autonomy": {
|
|
545
|
+
/** GET /autonomy/fence — rank: any-builder */
|
|
546
|
+
getAutonomyFence(args?: RequestArgs): Promise<ApiResponse>;
|
|
547
|
+
/** POST /autonomy/fence — rank: archon */
|
|
548
|
+
postAutonomyFence(args: RequestArgs & { body: PostAutonomyFenceRequest }): Promise<ApiResponse>;
|
|
549
|
+
/** POST /autonomy/fence/goals — rank: archon */
|
|
550
|
+
postAutonomyFenceGoals(args: RequestArgs & { body: PostAutonomyFenceGoalsRequest }): Promise<PostAutonomyFenceGoalsResponse>;
|
|
551
|
+
/** DELETE /autonomy/fence/goals/{goalId} — rank: archon */
|
|
552
|
+
deleteAutonomyFenceGoalsGoalId(args?: RequestArgs): Promise<ApiResponse>;
|
|
542
553
|
/** GET /autonomy/precheck — rank: metic+archon */
|
|
543
554
|
getAutonomyPrecheck(args?: RequestArgs): Promise<ApiResponse>;
|
|
544
555
|
};
|
|
@@ -169,6 +169,14 @@ export function createClient(opts = {}) {
|
|
|
169
169
|
getAuthWebStart: (args) => request("GET", "/auth/web/start", { hasBody: false }, args),
|
|
170
170
|
},
|
|
171
171
|
"autonomy": {
|
|
172
|
+
// GET /autonomy/fence — rank: any-builder — GET /autonomy/fence
|
|
173
|
+
getAutonomyFence: (args) => request("GET", "/autonomy/fence", { hasBody: false }, args),
|
|
174
|
+
// POST /autonomy/fence — rank: archon — POST /autonomy/fence
|
|
175
|
+
postAutonomyFence: (args) => request("POST", "/autonomy/fence", { hasBody: true }, args),
|
|
176
|
+
// POST /autonomy/fence/goals — rank: archon — POST /autonomy/fence/goals
|
|
177
|
+
postAutonomyFenceGoals: (args) => request("POST", "/autonomy/fence/goals", { hasBody: true }, args),
|
|
178
|
+
// DELETE /autonomy/fence/goals/{goalId} — rank: archon — DELETE /autonomy/fence/goals/:goalId
|
|
179
|
+
deleteAutonomyFenceGoalsGoalId: (args) => request("DELETE", "/autonomy/fence/goals/{goalId}", { hasBody: false }, args),
|
|
172
180
|
// GET /autonomy/precheck — rank: metic+archon — GET /autonomy/precheck
|
|
173
181
|
getAutonomyPrecheck: (args) => request("GET", "/autonomy/precheck", { hasBody: false }, args),
|
|
174
182
|
},
|
|
@@ -115,6 +115,24 @@ ship pipeline and its server-side grade. That grade is the *only* review between
|
|
|
115
115
|
an unattended worker and main, so **a grader outage stops the runner** rather
|
|
116
116
|
than downgrading it to shipping unreviewed.
|
|
117
117
|
|
|
118
|
+
Three things the implementation settled (`modules/autonomy/fence.js`, task
|
|
119
|
+
1003908). The kill switch is `autonomy.fence.manage`, declared **`system: true,
|
|
120
|
+
floor: 'archon'`** in the permission catalog, because a switch the runner could
|
|
121
|
+
be granted the power to flip is not a switch — the catalog's own invariant
|
|
122
|
+
forbids granting a system key to a lower rank, and that invariant is what makes
|
|
123
|
+
it a stop button. `--goal` and `AUTOBONGOS_GOALS` are kept but **demoted to a
|
|
124
|
+
narrowing filter**: they intersect with the database allowlist, so a setting on
|
|
125
|
+
the runner host can take a goal away and can never add one. And an **unknown**
|
|
126
|
+
grader state refuses exactly as a bypassed one does — "I could not tell" must not
|
|
127
|
+
resolve to "go ahead" when the thing being checked is the only review there is.
|
|
128
|
+
|
|
129
|
+
The protected-path gate reads the task's **declared** `touches[]`, which is a
|
|
130
|
+
claim by whoever filed the task and not a fact about what the work will edit. That
|
|
131
|
+
is acceptable only because it is the outer of three layers — the grader's
|
|
132
|
+
permission-path pre-pass and the post-push main audit both read the real diff,
|
|
133
|
+
server-side, where the machine cannot reach. Treating it as sufficient on its own
|
|
134
|
+
would be the bug, and the file says so where someone might be tempted.
|
|
135
|
+
|
|
118
136
|
### 7. Workers run with blanket `bypassPermissions`
|
|
119
137
|
|
|
120
138
|
`--permission-prompt-tool` exists and is print-mode only, so routing every
|
package/docs/api/openapi.json
CHANGED
|
@@ -1772,6 +1772,180 @@
|
|
|
1772
1772
|
"security": []
|
|
1773
1773
|
}
|
|
1774
1774
|
},
|
|
1775
|
+
"/autonomy/fence": {
|
|
1776
|
+
"get": {
|
|
1777
|
+
"operationId": "get_autonomy_fence",
|
|
1778
|
+
"tags": [
|
|
1779
|
+
"autonomy"
|
|
1780
|
+
],
|
|
1781
|
+
"summary": "GET /autonomy/fence",
|
|
1782
|
+
"description": "The runner's own read, every iteration. ANY-BUILDER on purpose: learning that you must stop should never require an elevated session, because the failure mode of \"could not read the fence\" is a machine that keeps going. The body carries no secret — it is a boolean, a reason string and a list of goal ids.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
1783
|
+
"x-rank": "any-builder",
|
|
1784
|
+
"x-source": "modules/autonomy/routes/autonomy.js",
|
|
1785
|
+
"responses": {
|
|
1786
|
+
"200": {
|
|
1787
|
+
"description": "Success."
|
|
1788
|
+
},
|
|
1789
|
+
"400": {
|
|
1790
|
+
"$ref": "#/components/responses/BadRequest"
|
|
1791
|
+
},
|
|
1792
|
+
"401": {
|
|
1793
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
1794
|
+
},
|
|
1795
|
+
"403": {
|
|
1796
|
+
"$ref": "#/components/responses/Forbidden"
|
|
1797
|
+
}
|
|
1798
|
+
},
|
|
1799
|
+
"security": [
|
|
1800
|
+
{
|
|
1801
|
+
"builderSession": []
|
|
1802
|
+
}
|
|
1803
|
+
]
|
|
1804
|
+
},
|
|
1805
|
+
"post": {
|
|
1806
|
+
"operationId": "post_autonomy_fence",
|
|
1807
|
+
"tags": [
|
|
1808
|
+
"autonomy"
|
|
1809
|
+
],
|
|
1810
|
+
"summary": "POST /autonomy/fence",
|
|
1811
|
+
"description": "The kill switch. Archon, system:true — see the catalog entry for why it is the one permission that cannot be delegated to a custom rank.\n\n**Rank:** `archon` — Archon only (rank and identity management + the escalation keys — the trust boundary).\n\n**Permissions:** `autonomy.fence.manage` (all required).",
|
|
1812
|
+
"x-rank": "archon",
|
|
1813
|
+
"x-source": "modules/autonomy/routes/autonomy.js",
|
|
1814
|
+
"x-permissions": [
|
|
1815
|
+
"autonomy.fence.manage"
|
|
1816
|
+
],
|
|
1817
|
+
"requestBody": {
|
|
1818
|
+
"required": true,
|
|
1819
|
+
"content": {
|
|
1820
|
+
"application/json": {
|
|
1821
|
+
"schema": {
|
|
1822
|
+
"$ref": "#/components/schemas/PostAutonomyFenceRequest"
|
|
1823
|
+
}
|
|
1824
|
+
}
|
|
1825
|
+
},
|
|
1826
|
+
"x-validated": true
|
|
1827
|
+
},
|
|
1828
|
+
"responses": {
|
|
1829
|
+
"200": {
|
|
1830
|
+
"description": "Success."
|
|
1831
|
+
},
|
|
1832
|
+
"400": {
|
|
1833
|
+
"$ref": "#/components/responses/ValidationFailed"
|
|
1834
|
+
},
|
|
1835
|
+
"401": {
|
|
1836
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
1837
|
+
},
|
|
1838
|
+
"403": {
|
|
1839
|
+
"$ref": "#/components/responses/Forbidden"
|
|
1840
|
+
}
|
|
1841
|
+
},
|
|
1842
|
+
"security": [
|
|
1843
|
+
{
|
|
1844
|
+
"builderSession": []
|
|
1845
|
+
}
|
|
1846
|
+
]
|
|
1847
|
+
}
|
|
1848
|
+
},
|
|
1849
|
+
"/autonomy/fence/goals": {
|
|
1850
|
+
"post": {
|
|
1851
|
+
"operationId": "post_autonomy_fence_goals",
|
|
1852
|
+
"tags": [
|
|
1853
|
+
"autonomy"
|
|
1854
|
+
],
|
|
1855
|
+
"summary": "POST /autonomy/fence/goals",
|
|
1856
|
+
"description": "Add a goal to the allowlist.\n\n**Rank:** `archon` — Archon only (rank and identity management + the escalation keys — the trust boundary).\n\n**Permissions:** `autonomy.fence.manage` (all required).",
|
|
1857
|
+
"x-rank": "archon",
|
|
1858
|
+
"x-source": "modules/autonomy/routes/autonomy.js",
|
|
1859
|
+
"x-permissions": [
|
|
1860
|
+
"autonomy.fence.manage"
|
|
1861
|
+
],
|
|
1862
|
+
"requestBody": {
|
|
1863
|
+
"required": true,
|
|
1864
|
+
"content": {
|
|
1865
|
+
"application/json": {
|
|
1866
|
+
"schema": {
|
|
1867
|
+
"$ref": "#/components/schemas/PostAutonomyFenceGoalsRequest"
|
|
1868
|
+
}
|
|
1869
|
+
}
|
|
1870
|
+
},
|
|
1871
|
+
"x-validated": true
|
|
1872
|
+
},
|
|
1873
|
+
"responses": {
|
|
1874
|
+
"200": {
|
|
1875
|
+
"description": "Success.",
|
|
1876
|
+
"content": {
|
|
1877
|
+
"application/json": {
|
|
1878
|
+
"schema": {
|
|
1879
|
+
"$ref": "#/components/schemas/PostAutonomyFenceGoalsResponse"
|
|
1880
|
+
}
|
|
1881
|
+
}
|
|
1882
|
+
}
|
|
1883
|
+
},
|
|
1884
|
+
"400": {
|
|
1885
|
+
"$ref": "#/components/responses/ValidationFailed"
|
|
1886
|
+
},
|
|
1887
|
+
"401": {
|
|
1888
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
1889
|
+
},
|
|
1890
|
+
"403": {
|
|
1891
|
+
"$ref": "#/components/responses/Forbidden"
|
|
1892
|
+
}
|
|
1893
|
+
},
|
|
1894
|
+
"security": [
|
|
1895
|
+
{
|
|
1896
|
+
"builderSession": []
|
|
1897
|
+
}
|
|
1898
|
+
]
|
|
1899
|
+
}
|
|
1900
|
+
},
|
|
1901
|
+
"/autonomy/fence/goals/{goalId}": {
|
|
1902
|
+
"delete": {
|
|
1903
|
+
"operationId": "delete_autonomy_fence_goals_goalId",
|
|
1904
|
+
"tags": [
|
|
1905
|
+
"autonomy"
|
|
1906
|
+
],
|
|
1907
|
+
"summary": "DELETE /autonomy/fence/goals/:goalId",
|
|
1908
|
+
"description": "Revoke one. `removed` distinguishes \"just revoked\" from \"already gone\" — an owner clicking Remove deserves to know which happened.\n\n**Rank:** `archon` — Archon only (rank and identity management + the escalation keys — the trust boundary).\n\n**Permissions:** `autonomy.fence.manage` (all required).",
|
|
1909
|
+
"x-rank": "archon",
|
|
1910
|
+
"x-source": "modules/autonomy/routes/autonomy.js",
|
|
1911
|
+
"x-permissions": [
|
|
1912
|
+
"autonomy.fence.manage"
|
|
1913
|
+
],
|
|
1914
|
+
"parameters": [
|
|
1915
|
+
{
|
|
1916
|
+
"name": "goalId",
|
|
1917
|
+
"in": "path",
|
|
1918
|
+
"required": true,
|
|
1919
|
+
"schema": {
|
|
1920
|
+
"type": "string"
|
|
1921
|
+
},
|
|
1922
|
+
"description": "Path parameter `goalId`."
|
|
1923
|
+
}
|
|
1924
|
+
],
|
|
1925
|
+
"responses": {
|
|
1926
|
+
"200": {
|
|
1927
|
+
"description": "Success."
|
|
1928
|
+
},
|
|
1929
|
+
"400": {
|
|
1930
|
+
"$ref": "#/components/responses/BadRequest"
|
|
1931
|
+
},
|
|
1932
|
+
"401": {
|
|
1933
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
1934
|
+
},
|
|
1935
|
+
"403": {
|
|
1936
|
+
"$ref": "#/components/responses/Forbidden"
|
|
1937
|
+
},
|
|
1938
|
+
"404": {
|
|
1939
|
+
"$ref": "#/components/responses/NotFound"
|
|
1940
|
+
}
|
|
1941
|
+
},
|
|
1942
|
+
"security": [
|
|
1943
|
+
{
|
|
1944
|
+
"builderSession": []
|
|
1945
|
+
}
|
|
1946
|
+
]
|
|
1947
|
+
}
|
|
1948
|
+
},
|
|
1775
1949
|
"/autonomy/precheck": {
|
|
1776
1950
|
"get": {
|
|
1777
1951
|
"operationId": "get_autonomy_precheck",
|
|
@@ -21166,6 +21340,47 @@
|
|
|
21166
21340
|
"revoked"
|
|
21167
21341
|
]
|
|
21168
21342
|
},
|
|
21343
|
+
"PostAutonomyFenceGoalsRequest": {
|
|
21344
|
+
"type": "object",
|
|
21345
|
+
"properties": {
|
|
21346
|
+
"goal_id": {
|
|
21347
|
+
"$ref": "#/components/schemas/StringifiableId"
|
|
21348
|
+
},
|
|
21349
|
+
"note": {
|
|
21350
|
+
"type": "string",
|
|
21351
|
+
"maxLength": 500
|
|
21352
|
+
}
|
|
21353
|
+
},
|
|
21354
|
+
"required": [
|
|
21355
|
+
"goal_id"
|
|
21356
|
+
],
|
|
21357
|
+
"additionalProperties": false
|
|
21358
|
+
},
|
|
21359
|
+
"PostAutonomyFenceGoalsResponse": {
|
|
21360
|
+
"type": "object",
|
|
21361
|
+
"properties": {
|
|
21362
|
+
"goal": {}
|
|
21363
|
+
},
|
|
21364
|
+
"required": [
|
|
21365
|
+
"goal"
|
|
21366
|
+
]
|
|
21367
|
+
},
|
|
21368
|
+
"PostAutonomyFenceRequest": {
|
|
21369
|
+
"type": "object",
|
|
21370
|
+
"properties": {
|
|
21371
|
+
"enabled": {
|
|
21372
|
+
"type": "boolean"
|
|
21373
|
+
},
|
|
21374
|
+
"reason": {
|
|
21375
|
+
"type": "string",
|
|
21376
|
+
"maxLength": 500
|
|
21377
|
+
}
|
|
21378
|
+
},
|
|
21379
|
+
"required": [
|
|
21380
|
+
"enabled"
|
|
21381
|
+
],
|
|
21382
|
+
"additionalProperties": false
|
|
21383
|
+
},
|
|
21169
21384
|
"PostBackupTriggerResponse": {
|
|
21170
21385
|
"type": "object",
|
|
21171
21386
|
"properties": {
|
|
@@ -24996,9 +25211,9 @@
|
|
|
24996
25211
|
"description": "A required dependency/feature is not configured or is temporarily down."
|
|
24997
25212
|
}
|
|
24998
25213
|
},
|
|
24999
|
-
"x-endpoint-count":
|
|
25000
|
-
"x-schema-count":
|
|
25214
|
+
"x-endpoint-count": 398,
|
|
25215
|
+
"x-schema-count": 436,
|
|
25001
25216
|
"x-undocumented-bodies": 9,
|
|
25002
|
-
"x-response-schemas":
|
|
25217
|
+
"x-response-schemas": 298,
|
|
25003
25218
|
"x-generated-by": "scripts/gds/gen-api-docs.js"
|
|
25004
25219
|
}
|
package/docs/api-reference.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Bongos API reference
|
|
4
4
|
|
|
5
|
-
> **Generated from the live route files** — the route file is authoritative.
|
|
5
|
+
> **Generated from the live route files** — the route file is authoritative. 398 endpoints across 64 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`.
|
|
@@ -83,10 +83,14 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
83
83
|
| GET | `/api/bongos/auth/web/callback` | `public` | — | OAuth callback; the state cookie + code are the bearer. |
|
|
84
84
|
| GET | `/api/bongos/auth/web/start` | `public` | — | /auth/web — browser flow (used by the /builders page). |
|
|
85
85
|
|
|
86
|
-
## `autonomy` (
|
|
86
|
+
## `autonomy` (5)
|
|
87
87
|
|
|
88
88
|
| Method | Path | Rank | Body | Description |
|
|
89
89
|
|---|---|---|---|---|
|
|
90
|
+
| GET | `/api/bongos/autonomy/fence` | `any-builder` | — | The runner's own read, every iteration. |
|
|
91
|
+
| POST | `/api/bongos/autonomy/fence` | `archon` | `enabled`, `reason` | The kill switch. |
|
|
92
|
+
| POST | `/api/bongos/autonomy/fence/goals` | `archon` | `goal_id`, `note` | Add a goal to the allowlist. |
|
|
93
|
+
| DELETE | `/api/bongos/autonomy/fence/goals/:goalId` | `archon` | — | Revoke one. |
|
|
90
94
|
| GET | `/api/bongos/autonomy/precheck` | `metic+archon` | — | |
|
|
91
95
|
|
|
92
96
|
## `backup` (2)
|