@bongos/core 1.21.177 → 1.21.179
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 +147 -152
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +0 -6
- package/clients/bongos-client/index.cjs +0 -6
- package/clients/bongos-client/index.d.ts +0 -6
- package/clients/bongos-client/index.mjs +0 -6
- package/docs/adr/0042-builder-self-deploy-ci-auto-merge.md +3 -2
- package/docs/api/openapi.json +1 -87
- package/docs/api-reference.md +1 -8
- package/docs/canonical-permissions.md +3 -3
- package/docs/copy-inventory.md +50 -64
- package/docs/copy-registry.json +109 -236
- package/docs/file-map.md +3 -3
- package/docs/module-api-changelog.md +4 -0
- package/docs/modules-contract.md +2 -2
- package/docs/page-inventory.json +4 -7
- package/docs/page-readings.json +1520 -1569
- package/modules/government/catalog.js +10 -7
- package/modules/government/decision-board.js +0 -1
- package/modules/government/decision-rules.js +0 -1
- package/modules/government/docket.js +0 -1
- package/modules/government/protected-surfaces.js +1 -1
- package/modules/government/protected-surfaces.json +2 -3
- package/modules/hall-ui/public/atlas.html +1 -1
- package/modules/hall-ui/public/blockers.html +1 -1
- package/modules/hall-ui/public/board-room.html +1 -1
- package/modules/hall-ui/public/city.html +1 -1
- package/modules/hall-ui/public/collab.html +1 -1
- package/modules/hall-ui/public/commands.html +1 -1
- package/modules/hall-ui/public/copy-desk.html +1 -1
- package/modules/hall-ui/public/deploy.html +1 -1
- package/modules/hall-ui/public/diagrams.html +1 -1
- package/modules/hall-ui/public/drachmae.html +1 -1
- package/modules/hall-ui/public/fleet.html +1 -1
- package/modules/hall-ui/public/gate.css +4 -26
- package/modules/hall-ui/public/gate.html +12 -27
- package/modules/hall-ui/public/gate.js +26 -176
- package/modules/hall-ui/public/gate.states.json +4 -22
- package/modules/hall-ui/public/goal-map.html +1 -1
- package/modules/hall-ui/public/goals.html +1 -1
- package/modules/hall-ui/public/government.html +1 -1
- package/modules/hall-ui/public/idea.html +1 -1
- package/modules/hall-ui/public/ideas.html +1 -1
- package/modules/hall-ui/public/index.html +1 -1
- package/modules/hall-ui/public/modules.html +1 -1
- package/modules/hall-ui/public/my-agents.html +1 -1
- package/modules/hall-ui/public/primer.html +1 -1
- package/modules/hall-ui/public/profile.html +1 -1
- package/modules/hall-ui/public/project-settings.html +1 -1
- package/modules/hall-ui/public/ranks.html +1 -1
- package/modules/hall-ui/public/roadmap.html +1 -1
- package/modules/hall-ui/public/roster.html +1 -1
- package/modules/hall-ui/public/sessions.html +1 -1
- package/modules/hall-ui/public/settings.html +1 -1
- package/modules/hall-ui/public/shell.js +1 -1
- package/modules/hall-ui/public/street-card.js +5 -9
- package/modules/hall-ui/public/street-desk.js +2 -2
- package/modules/hall-ui/public/street-inside.js +1 -1
- package/modules/hall-ui/public/street.html +1 -1
- package/modules/hall-ui/public/studio.html +1 -1
- package/modules/hall-ui/public/task.html +1 -1
- package/modules/hall-ui/public/thinking.html +1 -1
- package/modules/hall-ui/public/tweak-editor.html +1 -1
- package/modules/hall-ui/public/watch.html +1 -1
- package/modules/hall-ui/public/work.html +1 -1
- package/modules/hall-ui/public/work.js +67 -14
- package/modules/lifecycle/matter-acts.js +0 -6
- package/modules/lifecycle/module.json +0 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +28 -0
- package/scripts/bongos/adopt-preflight.js +3 -3
- package/scripts/bongos/audit-authorship.sh +1 -3
- package/scripts/bongos/bump-version.js +46 -9
- package/scripts/bongos/doc-cli-guard.js +2 -0
- package/scripts/bongos/doc-control-claims.js +2 -2
- package/scripts/bongos/government-walk.js +3 -9
- package/scripts/bongos/hard-floor.js +52 -0
- package/scripts/bongos/publish-manifest.js +3 -3
- package/scripts/bongos/run-unit-tests.js +17 -5
- package/scripts/gds/hard-floor.js +6 -0
- package/src/bongos/module-scope-map.js +2 -2
- package/src/bongos/permission-path-check.js +1 -1
- package/src/bongos/route-rank-check.js +1 -8
- package/src/bongos/routes.js +1 -2
- package/src/module-api.js +1 -1
- package/src/modules.js +1 -1
- package/tests/acclaim_feed_evidence_db.mjs +42 -23
- package/tests/adr_0089_scope.mjs +7 -5
- package/tests/bump_version.mjs +52 -18
- package/tests/copy_desk_flags_db.mjs +22 -14
- package/tests/gating_review_retired.mjs +1 -1
- package/tests/goal_sort_staleness.mjs +1 -1
- package/tests/government_act_alone_buildings.mjs +1 -3
- package/tests/government_board_membership_db.mjs +35 -22
- package/tests/government_protected_surfaces.mjs +29 -13
- package/tests/governor_docket.mjs +0 -2
- package/tests/governor_matter_acts.mjs +6 -8
- package/tests/hall_city.mjs +1 -1
- package/tests/hall_matter_card.mjs +2 -2
- package/tests/hall_oversight_world.mjs +16 -12
- package/tests/hall_street_desk.mjs +4 -3
- package/tests/hall_street_inside.mjs +1 -1
- package/tests/helpers.mjs +34 -0
- package/tests/howto_state.mjs +33 -56
- package/tests/howto_state_db.mjs +68 -0
- package/tests/idea_credit_streams_db.mjs +11 -3
- package/tests/integration_parked_ratchet.mjs +7 -1
- package/tests/nav_permission_atoms.mjs +1 -1
- package/tests/page_notes_db.mjs +12 -8
- package/tests/page_tweak_no_rearm.mjs +50 -0
- package/tests/publish_manifest.mjs +64 -0
- package/tests/search_isolation.mjs +5 -103
- package/tests/search_isolation_db.mjs +140 -0
- package/tests/session_earnings_mirror_db.mjs +2 -0
- package/tests/work_board_live_refresh.mjs +236 -0
- package/tests/workflow_exec_paths.mjs +9 -11
- package/modules/lifecycle/routes/gate-approvals.js +0 -299
- package/scripts/bongos/ci-grade.js +0 -82
- package/scripts/bongos/gate-review.js +0 -330
- package/scripts/gds/ci-grade.js +0 -7
- package/scripts/gds/gate-review.js +0 -7
- package/tests/gate_approvals.mjs +0 -611
- package/tests/gate_review.mjs +0 -152
|
@@ -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
|
+
- 578 operations across 76 resource groups
|
|
9
9
|
|
|
10
10
|
## Use it from your project
|
|
11
11
|
|
|
@@ -408,12 +408,6 @@ function createClient(opts = {}) {
|
|
|
408
408
|
// POST /founding/start — rank: any-builder — POST /founding/start
|
|
409
409
|
postFoundingStart: (args) => request("POST", "/founding/start", { hasBody: true }, args),
|
|
410
410
|
},
|
|
411
|
-
"gateApprovals": {
|
|
412
|
-
// GET /gate-approvals — rank: metic+archon — GET /gate-approvals
|
|
413
|
-
getGateApprovals: (args) => request("GET", "/gate-approvals", { hasBody: false }, args),
|
|
414
|
-
// POST /gate-approvals/{pr}/approve — rank: archon — POST /gate-approvals/:pr/approve
|
|
415
|
-
postGateApprovalsPrApprove: (args) => request("POST", "/gate-approvals/{pr}/approve", { hasBody: true }, args),
|
|
416
|
-
},
|
|
417
411
|
"github": {
|
|
418
412
|
// GET /github/orgs — rank: any-builder — GET /github/orgs
|
|
419
413
|
getGithubOrgs: (args) => request("GET", "/github/orgs", { hasBody: false }, args),
|
|
@@ -407,12 +407,6 @@ function createClient(opts = {}) {
|
|
|
407
407
|
// POST /founding/start — rank: any-builder — POST /founding/start
|
|
408
408
|
postFoundingStart: (args) => request("POST", "/founding/start", { hasBody: true }, args),
|
|
409
409
|
},
|
|
410
|
-
"gateApprovals": {
|
|
411
|
-
// GET /gate-approvals — rank: metic+archon — GET /gate-approvals
|
|
412
|
-
getGateApprovals: (args) => request("GET", "/gate-approvals", { hasBody: false }, args),
|
|
413
|
-
// POST /gate-approvals/{pr}/approve — rank: archon — POST /gate-approvals/:pr/approve
|
|
414
|
-
postGateApprovalsPrApprove: (args) => request("POST", "/gate-approvals/{pr}/approve", { hasBody: true }, args),
|
|
415
|
-
},
|
|
416
410
|
"github": {
|
|
417
411
|
// GET /github/orgs — rank: any-builder — GET /github/orgs
|
|
418
412
|
getGithubOrgs: (args) => request("GET", "/github/orgs", { hasBody: false }, args),
|
|
@@ -963,12 +963,6 @@ export interface BongosClient {
|
|
|
963
963
|
/** POST /founding/start — rank: any-builder */
|
|
964
964
|
postFoundingStart(args?: RequestArgs): Promise<ApiResponse>;
|
|
965
965
|
};
|
|
966
|
-
"gateApprovals": {
|
|
967
|
-
/** GET /gate-approvals — rank: metic+archon */
|
|
968
|
-
getGateApprovals(args?: RequestArgs): Promise<ApiResponse>;
|
|
969
|
-
/** POST /gate-approvals/{pr}/approve — rank: archon */
|
|
970
|
-
postGateApprovalsPrApprove(args?: RequestArgs): Promise<ApiResponse>;
|
|
971
|
-
};
|
|
972
966
|
"github": {
|
|
973
967
|
/** GET /github/orgs — rank: any-builder */
|
|
974
968
|
getGithubOrgs(args?: RequestArgs): Promise<ApiResponse>;
|
|
@@ -404,12 +404,6 @@ export function createClient(opts = {}) {
|
|
|
404
404
|
// POST /founding/start — rank: any-builder — POST /founding/start
|
|
405
405
|
postFoundingStart: (args) => request("POST", "/founding/start", { hasBody: true }, args),
|
|
406
406
|
},
|
|
407
|
-
"gateApprovals": {
|
|
408
|
-
// GET /gate-approvals — rank: metic+archon — GET /gate-approvals
|
|
409
|
-
getGateApprovals: (args) => request("GET", "/gate-approvals", { hasBody: false }, args),
|
|
410
|
-
// POST /gate-approvals/{pr}/approve — rank: archon — POST /gate-approvals/:pr/approve
|
|
411
|
-
postGateApprovalsPrApprove: (args) => request("POST", "/gate-approvals/{pr}/approve", { hasBody: true }, args),
|
|
412
|
-
},
|
|
413
407
|
"github": {
|
|
414
408
|
// GET /github/orgs — rank: any-builder — GET /github/orgs
|
|
415
409
|
getGithubOrgs: (args) => request("GET", "/github/orgs", { hasBody: false }, args),
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
**Date:** 2026-06-07
|
|
4
4
|
**Context:** GDS-V3, task [#679](https://example.com/builders#/task/679) (cut prod deploy over to CI). Completes the [#597](https://example.com/builders#/task/597) / [ADR 0031](0031-cloud-dev-environments-for-builders.md) §6 goal — *no builder box holds the production droplet SSH key*. Extends [ADR 0031](0031-cloud-dev-environments-for-builders.md) §6; re-applies [ADR 0016](0016-trust-boundary-server-enforced-permissions.md) to CI.
|
|
5
|
-
**Status:** Accepted — **armed in production 2026-06-13** (interim, grader-off variant — task [#859](https://example.com/builders#/task/859); `config/deploy.json` `mode: ci`; see the *Arming record* below + session log [`<redacted>.md`](../session-logs/<redacted>.md)).
|
|
6
5
|
**Amended 2026-09-30:** the CI grade-gate (precondition 1) is permanently retired, not deferred — see the *Amendment* at the end (task 1004456, blocker 1000103).
|
|
6
|
+
**Status:** Accepted — **armed in production 2026-06-13** (interim, grader-off variant — task [#859](https://example.com/builders#/task/859); `config/deploy.json` `mode: ci`; see the *Arming record* below + session log [`<redacted>.md`](../session-logs/<redacted>.md)).
|
|
7
|
+
**Amended 2026-09-30:** the CI grade-gate (precondition 1) is permanently retired, not deferred — see the *Amendment* at the end (task 1004456, blocker 1000103).
|
|
7
8
|
|
|
8
9
|
## Problem
|
|
9
10
|
|
|
@@ -35,7 +36,7 @@ With no human in the merge loop, **the CI checks *are* the authority**. The thre
|
|
|
35
36
|
|
|
36
37
|
1. **[`CODEOWNERS`](../../CODEOWNERS)** — a PR touching any gate surface (`.github/`, `config/deploy.json`, `ship.js`, the grader, `auth.js`/`route-rank-check.js`) **or any code that executes on the droplet at deploy** (`migrations/`, `scripts/migrate.sh`, `package.json`/`package-lock.json`, `scripts/deploy/` — `~/deploy.sh` runs migrations + `npm ci` from the merged tree, so a malicious migration or poisoned lockfile would otherwise auto-merge and run on prod) requires Archon review *even under auto-merge*, when branch protection has "Require review from Code Owners" on. Ordinary PRs (game, art, docs) carry no code owner and auto-merge freely — that's the point.
|
|
37
38
|
|
|
38
|
-
2. **The grader must RE-RUN in CI** — CODEOWNERS only catches *committed* changes to `ship.js`. A builder could run a **locally-edited, uncommitted** `ship.js` that skips the grade and opens an auto-merge PR anyway. An earlier draft of this ADR proposed a CI check that *reads the server-recorded grade* — but that is **theater**: `POST /tasks/:id/grade` records the grader scores *from the request body* (the server does not recompute them), so a tampered local ship.js can POST a fake passing grade. The only tamper-proof gate runs the grader **in CI, against the PR diff**, where the builder cannot touch it — [`.github/workflows/grade-gate.yml`](../../.github/workflows/grade-gate.yml) +
|
|
39
|
+
2. **The grader must RE-RUN in CI** — CODEOWNERS only catches *committed* changes to `ship.js`. A builder could run a **locally-edited, uncommitted** `ship.js` that skips the grade and opens an auto-merge PR anyway. An earlier draft of this ADR proposed a CI check that *reads the server-recorded grade* — but that is **theater**: `POST /tasks/:id/grade` records the grader scores *from the request body* (the server does not recompute them), so a tampered local ship.js can POST a fake passing grade. The only tamper-proof gate runs the grader **in CI, against the PR diff**, where the builder cannot touch it — [`.github/workflows/grade-gate.yml`](../../.github/workflows/grade-gate.yml) + `scripts/gds/ci-grade.js` (deleted by task 1004859) ([#855](https://example.com/builders#/task/855)), which reuse the exact production grading path (`ship.js runSubagentGrader` → the adversarial worker panel) and **fail closed**. It is **skip-safe** (green-but-not-gating) until the operator wires a grader auth secret AND marks it a required check — the same inert-until-armed pattern as `deploy-prod.yml`. This was written as a **hard precondition** of arming `ci` mode. *(Superseded 2026-09-30: the CI grade-gate is permanently retired — see the Amendment below.)*
|
|
39
40
|
|
|
40
41
|
### Why not just hand builders the droplet key
|
|
41
42
|
|
package/docs/api/openapi.json
CHANGED
|
@@ -133,10 +133,6 @@
|
|
|
133
133
|
"name": "founding",
|
|
134
134
|
"description": "Endpoints under `/api/bongos/founding`."
|
|
135
135
|
},
|
|
136
|
-
{
|
|
137
|
-
"name": "gate-approvals",
|
|
138
|
-
"description": "Endpoints under `/api/bongos/gate-approvals`."
|
|
139
|
-
},
|
|
140
136
|
{
|
|
141
137
|
"name": "github",
|
|
142
138
|
"description": "Endpoints under `/api/bongos/github`."
|
|
@@ -6435,88 +6431,6 @@
|
|
|
6435
6431
|
]
|
|
6436
6432
|
}
|
|
6437
6433
|
},
|
|
6438
|
-
"/gate-approvals": {
|
|
6439
|
-
"get": {
|
|
6440
|
-
"operationId": "get_gate_approvals",
|
|
6441
|
-
"tags": [
|
|
6442
|
-
"gate-approvals"
|
|
6443
|
-
],
|
|
6444
|
-
"summary": "GET /gate-approvals",
|
|
6445
|
-
"description": "GET /gate-approvals — open PRs awaiting owner approval (gate-review red), with the verdict + per-file reasons + changed files + diff link. rank: metic+archon. BV1.R105 left this on requireRank because `gate_approval.decide` was declared over the /approve WRITE only and no atom named the read. ADR 0157 extends the catalog with exactly that atom — `gate_approval.read`, floor metic — so the mapping is now one the catalog makes. The split is load-bearing, not cosmetic: `page.view.government` opens /gate to Metic, and without a Metic-readable data endpoint that page would render nothing but a 403. Approving a held PR stays archon (`.decide`, system).\n\n**Rank:** `metic+archon` — Metic or Archon rank (review/triage powers).\n\n**Permissions:** `gate_approval.read` (all required).",
|
|
6446
|
-
"x-rank": "metic+archon",
|
|
6447
|
-
"x-source": "modules/lifecycle/routes/gate-approvals.js",
|
|
6448
|
-
"x-permissions": [
|
|
6449
|
-
"gate_approval.read"
|
|
6450
|
-
],
|
|
6451
|
-
"responses": {
|
|
6452
|
-
"200": {
|
|
6453
|
-
"description": "Success."
|
|
6454
|
-
},
|
|
6455
|
-
"400": {
|
|
6456
|
-
"$ref": "#/components/responses/BadRequest"
|
|
6457
|
-
},
|
|
6458
|
-
"401": {
|
|
6459
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
6460
|
-
},
|
|
6461
|
-
"403": {
|
|
6462
|
-
"$ref": "#/components/responses/Forbidden"
|
|
6463
|
-
}
|
|
6464
|
-
},
|
|
6465
|
-
"security": [
|
|
6466
|
-
{
|
|
6467
|
-
"builderSession": []
|
|
6468
|
-
}
|
|
6469
|
-
]
|
|
6470
|
-
}
|
|
6471
|
-
},
|
|
6472
|
-
"/gate-approvals/{pr}/approve": {
|
|
6473
|
-
"post": {
|
|
6474
|
-
"operationId": "post_gate_approvals_pr_approve",
|
|
6475
|
-
"tags": [
|
|
6476
|
-
"gate-approvals"
|
|
6477
|
-
],
|
|
6478
|
-
"summary": "POST /gate-approvals/:pr/approve",
|
|
6479
|
-
"description": "POST /gate-approvals/:pr/approve — record owner approval for a stuck gate PR and re-run the gate-review check so it clears. rank: archon (clears the hard floor — pinned in route-rank-check.EXPECTED_RANKS for downgrade protection).\n\n**Rank:** `archon` — Archon only (rank and identity management + the escalation keys — the trust boundary).\n\n**Permissions:** `gate_approval.decide` (all required).",
|
|
6480
|
-
"x-rank": "archon",
|
|
6481
|
-
"x-source": "modules/lifecycle/routes/gate-approvals.js",
|
|
6482
|
-
"x-permissions": [
|
|
6483
|
-
"gate_approval.decide"
|
|
6484
|
-
],
|
|
6485
|
-
"parameters": [
|
|
6486
|
-
{
|
|
6487
|
-
"name": "pr",
|
|
6488
|
-
"in": "path",
|
|
6489
|
-
"required": true,
|
|
6490
|
-
"schema": {
|
|
6491
|
-
"type": "string"
|
|
6492
|
-
},
|
|
6493
|
-
"description": "Path parameter `pr`."
|
|
6494
|
-
}
|
|
6495
|
-
],
|
|
6496
|
-
"responses": {
|
|
6497
|
-
"200": {
|
|
6498
|
-
"description": "Success."
|
|
6499
|
-
},
|
|
6500
|
-
"400": {
|
|
6501
|
-
"$ref": "#/components/responses/BadRequest"
|
|
6502
|
-
},
|
|
6503
|
-
"401": {
|
|
6504
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
6505
|
-
},
|
|
6506
|
-
"403": {
|
|
6507
|
-
"$ref": "#/components/responses/Forbidden"
|
|
6508
|
-
},
|
|
6509
|
-
"404": {
|
|
6510
|
-
"$ref": "#/components/responses/NotFound"
|
|
6511
|
-
}
|
|
6512
|
-
},
|
|
6513
|
-
"security": [
|
|
6514
|
-
{
|
|
6515
|
-
"builderSession": []
|
|
6516
|
-
}
|
|
6517
|
-
]
|
|
6518
|
-
}
|
|
6519
|
-
},
|
|
6520
6434
|
"/github/orgs": {
|
|
6521
6435
|
"get": {
|
|
6522
6436
|
"operationId": "get_github_orgs",
|
|
@@ -37066,7 +36980,7 @@
|
|
|
37066
36980
|
"description": "A required dependency/feature is not configured or is temporarily down."
|
|
37067
36981
|
}
|
|
37068
36982
|
},
|
|
37069
|
-
"x-endpoint-count":
|
|
36983
|
+
"x-endpoint-count": 578,
|
|
37070
36984
|
"x-schema-count": 622,
|
|
37071
36985
|
"x-undocumented-bodies": 12,
|
|
37072
36986
|
"x-response-schemas": 404,
|
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. 578 endpoints across 98 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`.
|
|
@@ -281,13 +281,6 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
281
281
|
| POST | `/api/bongos/founding/stages/:stage/close` | `any-builder` | — | |
|
|
282
282
|
| POST | `/api/bongos/founding/start` | `any-builder` | — | |
|
|
283
283
|
|
|
284
|
-
## `gate-approvals` (2)
|
|
285
|
-
|
|
286
|
-
| Method | Path | Rank | Body | Description |
|
|
287
|
-
|---|---|---|---|---|
|
|
288
|
-
| GET | `/api/bongos/gate-approvals` | `metic+archon` | — | GET /gate-approvals — open PRs awaiting owner approval (gate-review red), with the verdict + per-file reasons + changed files + diff link. |
|
|
289
|
-
| POST | `/api/bongos/gate-approvals/:pr/approve` | `archon` | — | POST /gate-approvals/:pr/approve — record owner approval for a stuck gate PR and re-run the gate-review check so it clears. |
|
|
290
|
-
|
|
291
284
|
## `github` (6)
|
|
292
285
|
|
|
293
286
|
| Method | Path | Rank | Body | Description |
|
|
@@ -141,7 +141,7 @@ or missing ranks fail closed.
|
|
|
141
141
|
- **identity** — `PATCH /api/bongos/builders/:id/status` (offboard/(de)activate), `GET|PATCH /api/bongos/access-requests[/:id]`
|
|
142
142
|
(who is admitted), `POST /api/gds/auth/revoke[-all]` (whose sessions are valid).
|
|
143
143
|
- **the four escalation keys**, which look operational but are not: `POST /api/bongos/tasks/:id/confirm`
|
|
144
|
-
(grader-bypass), `POST /api/bongos/gate-approvals/:pr/approve` (CI deploy-gate override), protected-module
|
|
144
|
+
(grader-bypass), `POST /api/bongos/gate-approvals/:pr/approve` (CI deploy-gate override — the route was removed by task 1004859 because the CI check it overrode never ran; its key `gate_approval.decide` stays in the catalog, retired), protected-module
|
|
145
145
|
**goal scope** ([ADR 0086](adr/0086-goal-scoped-work-hierarchy.md)), and `government.manage` (the
|
|
146
146
|
ranks/permissions tab). Delegating any one of them lets a Metic reach Archon in four steps — create a
|
|
147
147
|
protected-scope goal in the permission core, claim a task there (protected paths already floor at
|
|
@@ -235,8 +235,8 @@ or missing ranks fail closed.
|
|
|
235
235
|
`GET /override-requests` + `POST .../:id/decide`; `POST /claims/:id/release-on-behalf`;
|
|
236
236
|
`POST /done-when/:id/unsatisfy`; `POST /goals/reorder`; `POST /versions`;
|
|
237
237
|
`POST /tasks/newcomer-restock`; `POST /tasks/peer-votes/tally`; `GET /discord/channels/plan` +
|
|
238
|
-
`POST .../reconcile`; `GET /autonomy/precheck`.
|
|
239
|
-
|
|
238
|
+
`POST .../reconcile`; `GET /autonomy/precheck`. `GET /gate-approvals` (key `gate_approval.read`) was removed with its approve
|
|
239
|
+
route by task 1004859; the key stays in the catalog, retired.
|
|
240
240
|
|
|
241
241
|
> **Note the one confidentiality widening:** `/security/docs` (the engagement-report store with
|
|
242
242
|
> attacker-usable exploit detail) is now Metic-readable, because it shares `security.report.adjudicate`
|