@bongos/core 1.19.156 → 1.19.157

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 (59) hide show
  1. package/.bongos-core.json +63 -63
  2. package/.claude/skills/blocker-review/SKILL.md +3 -3
  3. package/.claude/skills/blocker-solve/SKILL.md +3 -3
  4. package/.claude/skills/builder-backup/SKILL.md +2 -2
  5. package/.claude/skills/builder-box/SKILL.md +1 -1
  6. package/.claude/skills/builder-claim/SKILL.md +1 -1
  7. package/.claude/skills/builder-connect/SKILL.md +5 -5
  8. package/.claude/skills/builder-cost/SKILL.md +2 -2
  9. package/.claude/skills/builder-exit/SKILL.md +1 -1
  10. package/.claude/skills/builder-reauth/SKILL.md +2 -2
  11. package/.claude/skills/builder-redteam/SKILL.md +2 -2
  12. package/.claude/skills/builder-setup/SKILL.md +4 -4
  13. package/.claude/skills/builder-start/SKILL.md +4 -4
  14. package/.claude/skills/close-box/SKILL.md +2 -2
  15. package/.claude/skills/design-sync/SKILL.md +2 -2
  16. package/.claude/skills/dev/SKILL.md +2 -2
  17. package/.claude/skills/feedback/SKILL.md +2 -2
  18. package/.claude/skills/fix-task/SKILL.md +1 -1
  19. package/.claude/skills/goal-create/SKILL.md +2 -2
  20. package/.claude/skills/goal-review/SKILL.md +2 -2
  21. package/.claude/skills/grader-health/SKILL.md +1 -1
  22. package/.claude/skills/idea-triage/SKILL.md +3 -3
  23. package/.claude/skills/merge-mode/SKILL.md +2 -2
  24. package/.claude/skills/planning-session/SKILL.md +2 -2
  25. package/.claude/skills/priority-session/SKILL.md +2 -2
  26. package/.claude/skills/read-session-export/SKILL.md +2 -2
  27. package/.claude/skills/scan-before-install/SKILL.md +3 -3
  28. package/.claude/skills/status/SKILL.md +1 -1
  29. package/docs/architecture.md +7 -7
  30. package/docs/branding-contract.md +1 -1
  31. package/docs/design/modular-architecture/01-architecture.md +2 -2
  32. package/docs/design/modular-architecture/02-module-map.md +1 -1
  33. package/docs/design/modular-architecture/03-builder-flows.md +1 -1
  34. package/docs/design-contract.md +4 -4
  35. package/docs/file-map.md +12 -12
  36. package/docs/modules-contract.md +2 -2
  37. package/docs/onboarding/diagrams/README.md +4 -4
  38. package/docs/onboarding/drachmae-and-karma.md +1 -1
  39. package/docs/recipes/README.md +1 -1
  40. package/docs/recipes/audit-replay.md +1 -1
  41. package/docs/recipes/builder-box-lifecycle.md +2 -2
  42. package/docs/recipes/claude-design-loop.md +4 -4
  43. package/docs/recipes/core-release-pipeline.md +1 -1
  44. package/docs/recipes/devbox-app-release.md +2 -2
  45. package/docs/recipes/devbox-app-windows-test.md +1 -1
  46. package/docs/recipes/figma-design-loop.md +4 -4
  47. package/docs/recipes/gds-db-backup.md +3 -3
  48. package/docs/recipes/instance-deploy.md +1 -1
  49. package/docs/recipes/managed-settings-remote-control.md +9 -9
  50. package/docs/recipes/ops-gotchas.md +2 -2
  51. package/docs/recipes/overnight-builder.md +2 -2
  52. package/docs/recipes/packaging-the-core.md +1 -1
  53. package/docs/recipes/search-index-ingestion.md +3 -3
  54. package/docs/recipes/self-host.md +2 -2
  55. package/docs/recipes/work-on-a-task-from-your-dev-box.md +1 -1
  56. package/docs/research/llm-model-agnostic-and-cheaper-grader.md +1 -1
  57. package/package-lock.json +2 -2
  58. package/package.json +1 -1
  59. package/src/module-api.js +3 -1
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: builder-setup
3
- description: One-time setup for a new builder on the Example project management system. Triggers when the user says "/builder-setup", "set up builder", "register me", "set up GDS", or when a builder slash command fails with "no GDS session." Authenticates the user against GitHub via Device Flow and stores a session token at ~/.config/otb/gds-session.json so future /builder-* commands work. If a valid session already exists for another account on this machine, setup.js asks whether to continue as that builder or sign in as a different one (multi-builder-on-one-device gate).
3
+ description: One-time setup for a new builder on the Example Bongos instance. Triggers when the user says "/builder-setup", "set up builder", "register me", "set up Bongos", or when a builder slash command fails with "no Bongos session." Authenticates the user against GitHub via Device Flow and stores a session token at ~/.config/otb/gds-session.json so future /builder-* commands work. If a valid session already exists for another account on this machine, setup.js asks whether to continue as that builder or sign in as a different one (multi-builder-on-one-device gate).
4
4
  ---
5
5
 
6
- You are running the one-time setup that registers this Claude Code installation as a builder on the Example GDS.
6
+ You are running the one-time setup that registers this Claude Code installation as a builder on the Example Bongos.
7
7
 
8
8
  ## Background
9
9
 
10
- The GDS authenticates builders against GitHub via OAuth Device Flow. The auth happens inside the terminal: the script prints a code, the user opens a URL, types the code, the script polls until it gets approval. The setup is builder-agnostic — every path is resolved from the current user's home directory, so this works on any developer's machine.
10
+ Bongos authenticates builders against GitHub via OAuth Device Flow. The auth happens inside the terminal: the script prints a code, the user opens a URL, types the code, the script polls until it gets approval. The setup is builder-agnostic — every path is resolved from the current user's home directory, so this works on any developer's machine.
11
11
 
12
12
  Before running this skill, **two things must be true**:
13
13
 
@@ -53,7 +53,7 @@ Runs `node scripts/gds/setup.js`. The script:
53
53
  - **Never write the session token to chat or any file other than `~/.config/otb/gds-session.json`.** It's a bearer token equivalent to a GitHub OAuth grant for this user.
54
54
  - **If `auth_not_configured` is returned**, do NOT keep polling or trying to recover — explain to the user that an Archon needs to register the GitHub OAuth App and provide credentials on the server. Point them to `blockers/blockers.md#github-oauth-app`.
55
55
  - **`GDS_API_BASE` env var** can override the API endpoint. Default is `https://example.com`. For local dev: `GDS_API_BASE=http://localhost:3000`.
56
- - **`HOME` env var override** — `setup.js` (and the rest of the GDS CLI) resolves every path via `os.homedir()`, which honors `$HOME`. Tests can simulate a fresh-user setup by running the script with `HOME=/tmp/some-dir`. See `tests/setup_smoke.mjs` for the smoke test that exercises this.
56
+ - **`HOME` env var override** — `setup.js` (and the rest of the Bongos CLI) resolves every path via `os.homedir()`, which honors `$HOME`. Tests can simulate a fresh-user setup by running the script with `HOME=/tmp/some-dir`. See `tests/setup_smoke.mjs` for the smoke test that exercises this.
57
57
 
58
58
  ## Files this skill touches
59
59
 
@@ -5,11 +5,11 @@ description: Start a Claude Code session by listing what tasks the builder can c
5
5
 
6
6
  **Script skill (authoritative).** The core action is `node scripts/gds/start.js [--widget]`. Run it and render its output verbatim — do not rebuild the table, reorder rows, or add a recap. The card is the summary.
7
7
 
8
- You are starting a working session on the Example project. Before any other work, you check the GDS to see what's claimable.
8
+ You are starting a working session on the Example project. Before any other work, you check Bongos to see what's claimable.
9
9
 
10
10
  ## Background
11
11
 
12
- The GDS keeps a database of tasks tagged with `touches[]` — file/folder fingerprints that determine parallel-safety. The API computes "claimable for me right now" as: tasks in `ready` status, not blocked, with no `touches[]` overlap with any currently-active claim by any builder. `ready` itself is gated by **dependencies** ([ADR 0015](../../../docs/adr/<redacted>.md)): a task enters `ready` only once every task in its `dependencies[]` is `shipped`. So if a task you want isn't listed, the usual reason is "its deps haven't shipped yet" — surface that, don't offer to override.
12
+ Bongos keeps a database of tasks tagged with `touches[]` — file/folder fingerprints that determine parallel-safety. The API computes "claimable for me right now" as: tasks in `ready` status, not blocked, with no `touches[]` overlap with any currently-active claim by any builder. `ready` itself is gated by **dependencies** ([ADR 0015](../../../docs/adr/<redacted>.md)): a task enters `ready` only once every task in its `dependencies[]` is `shipped`. So if a task you want isn't listed, the usual reason is "its deps haven't shipped yet" — surface that, don't offer to override.
13
13
 
14
14
  `start.js` produces a deterministic **card** (identity → quiet status line → holdings → a clean claimable table → next step), the same shape every session. It comes in two forms from the same data: an HTML widget (`--widget`) and a markdown fallback (default). Your job is to render it — not to rebuild or re-summarize it.
15
15
 
@@ -24,7 +24,7 @@ Delivery is now deterministic (task 1288). The **card-delivery hook** (`.claude/
24
24
  - **No widget renderer** (raw terminal, cron, another client) → `node scripts/gds/start.js` and print its stdout **verbatim**.
25
25
  - Either way, stderr may carry an `[otb-card]` **directive for you** (restates the verbatim rule) — follow it, **never** relay it; plus private one-liners (budget / next-stage) — relay *those* as a short note after the card.
26
26
 
27
- - If `start.js` prints **"no GDS session"**, the builder isn't signed in — route them by scenario: a **first-timer** on the project runs `/builder-setup` (one-time GitHub sign-in that also registers them); a **returning builder whose session went stale** runs `/builder-reauth` (the fast UI re-issue). `start.js` now prints both options; relay the one that fits, then retry.
27
+ - If `start.js` prints **"no Bongos session"**, the builder isn't signed in — route them by scenario: a **first-timer** on the project runs `/builder-setup` (one-time GitHub sign-in that also registers them); a **returning builder whose session went stale** runs `/builder-reauth` (the fast UI re-issue). `start.js` now prints both options; relay the one that fits, then retry.
28
28
  - (`--full` adds the detailed status widgets + worktree/context block; `--json` is the machine interface; `--hook` is the envelope the hook consumes — don't run these for the user unless asked.)
29
29
 
30
30
  ## When the environment isn't ready (fresh clone)
@@ -34,7 +34,7 @@ Delivery is now deterministic (task 1288). The **card-delivery hook** (`.claude/
34
34
  - **`bongos: command not found`, a "cannot find module" from `node scripts/gds/start.js`, or you can otherwise tell this is a fresh checkout** (a scaffolded instance whose `node_modules` is absent). The `bongos` CLI ships *inside* the not-yet-installed `@bongos/core` package, so nothing runs until deps are installed — this is the #1 fresh-clone wall. Route: run `npm install`, then `bongos dev` (one-command local bring-up), then re-run `/builder-start`. Don't try to hand-run internal scripts; the package isn't unpacked yet.
35
35
  - **The card says the instance isn't reachable / running.** The local server was never brought up. Route: `bongos dev`, then re-run. (`start.js` now prints this guided card itself on a connection failure — relay it verbatim.)
36
36
  - **Exit code 3 / "Wrong instance — refusing to act".** This machine's signed-in session targets a *different* instance than this project's `config/branding.json`. This is correct-by-design (it prevents writing to the wrong place). Route: run the exact `bongos login <origin>` line the message prints (the origin is right there), then re-run. **Do not** set an env override to force the mismatched instance.
37
- - **"no GDS session"** — the auth case above (`/builder-setup` for a first-timer, `/builder-reauth` for a stale session).
37
+ - **"no Bongos session"** — the auth case above (`/builder-setup` for a first-timer, `/builder-reauth` for a stale session).
38
38
 
39
39
  Emit one guided next step, not a wall of options. These are the same fixes `bongos doctor` and the environment preflight (`preflight.js`) describe — this just front-loads them onto the first command so a newcomer isn't diagnosing a crash.
40
40
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: close-box
3
- description: Tear down the dev box you are working on, from inside the box's terminal. Asks the GDS to deprovision the caller's own box (POST /box/close — the same action as the builders'-hall "Close box" button). Triggers when the user says "/close-box", "close my box", "shut down this box", "I'm done with this box", "tear down my dev box". Own-scoped — it deprovisions only the caller's own box; it never touches another builder's box or any other infrastructure (those live on the operator control plane, node scripts/gds/box.js).
3
+ description: Tear down the dev box you are working on, from inside the box's terminal. Asks Bongos to deprovision the caller's own box (POST /box/close — the same action as the builders'-hall "Close box" button). Triggers when the user says "/close-box", "close my box", "shut down this box", "I'm done with this box", "tear down my dev box". Own-scoped — it deprovisions only the caller's own box; it never touches another builder's box or any other infrastructure (those live on the operator control plane, node scripts/gds/box.js).
4
4
  ---
5
5
 
6
6
  You are closing (deprovisioning) the dev box the builder is currently working on. This is the Claude-side twin of the `close-box` shell command (`infra/close-box.sh`) — same endpoint, for builders who'd rather say "/close-box" inside `claude` than drop to the shell. It is own-scoped and destructive (the box is destroyed), so confirm before firing.
@@ -24,7 +24,7 @@ Calls `POST /api/gds/box/close` via the cross-platform helper, after confirming
24
24
  ```
25
25
  node scripts/gds/api.js POST /api/gds/box/close
26
26
  ```
27
- (The helper resolves the GDS session token + API base itself; no manual token handling.)
27
+ (The helper resolves the Bongos session token + API base itself; no manual token handling.)
28
28
 
29
29
  3. **Relay the outcome.** On success tell the builder:
30
30
  - The box is closing now (a few seconds).
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: design-sync
3
- description: Export the repo design system into Claude Design so prototypes start from real tokens and component surfaces, then land Claude Design's generated UI code back as a GDS task. Triggers when the user says "/design-sync", "sync design", "export tokens to Claude Design", "import to Claude Design", or "push design system".
3
+ description: Export the repo design system into Claude Design so prototypes start from real tokens and component surfaces, then land Claude Design's generated UI code back as a Bongos task. Triggers when the user says "/design-sync", "sync design", "export tokens to Claude Design", "import to Claude Design", or "push design system".
4
4
  ---
5
5
 
6
6
  You are helping the builder run the Claude Design sync loop: export the repo's design tokens and surfaces into Claude Design so any prototype starts from real values, not guesses.
@@ -9,7 +9,7 @@ You are helping the builder run the Claude Design sync loop: export the repo's d
9
9
 
10
10
  1. **Import** — `node scripts/gds/design-sync.js` builds a token-preview bundle (HTML color/typography/spacing/radii cards, `tokens.css`, `tokens.json`, `surfaces.json`) in a temp directory and prints a JSON manifest.
11
11
  2. **Push** — the DesignSync MCP tool (`list_projects` → `finalize_plan` → `write_files`) uploads the bundle to a Claude Design project.
12
- 3. **Export (handoff)** — when Claude Design generates UI code, the handoff lands it under a claimed GDS task via `adapter.export()`.
12
+ 3. **Export (handoff)** — when Claude Design generates UI code, the handoff lands it under a claimed Bongos task via `adapter.export()`.
13
13
 
14
14
  ## How to use
15
15
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: dev
3
- description: The engineering session — the operating playbook for engineer-discipline work (code, infra, the GDS itself, bugs, performance). Triggers when the user says "/dev", "let's build this", "work on this bug/feature", "start a dev session", or when a claimed task's discipline routes here (claim.js prints a directive to invoke /dev for engineer tasks). This is the project's DEFAULT build loop, written down — the baseline the other discipline modes (/ideate, /paint) invert from.
3
+ description: The engineering session — the operating playbook for engineer-discipline work (code, infra, Bongos itself, bugs, performance). Triggers when the user says "/dev", "let's build this", "work on this bug/feature", "start a dev session", or when a claimed task's discipline routes here (claim.js prints a directive to invoke /dev for engineer tasks). This is the project's DEFAULT build loop, written down — the baseline the other discipline modes (/ideate, /paint) invert from.
4
4
  ---
5
5
 
6
6
  You are running an **engineering session** for Example. Unlike `/ideate` (which flips *who drives*) and `/paint` (which flips *the medium*), this skill introduces no new dynamic — engineering **is** the default text-and-code loop. Its job is to make the standard explicit and keep you on it. Read it before working; lean on it most when you're new here or running autonomously.
@@ -30,7 +30,7 @@ You are running an **engineering session** for Example. Unlike `/ideate` (which
30
30
  - **A discovery that took >10 min to diagnose → a learning** (`node scripts/gds/learning-capture.js`); a multi-page how-to → a recipe under `docs/recipes/`.
31
31
  - **Blocked on something only Lars can decide/provide → a blocker** (`POST /api/gds/blockers`), attached to the task.
32
32
  - **Touched anything the onboarding diagrams / repo-map describe** → they regenerate on deploy; never hand-edit generated artifacts — edit the source/template and run the generator (`gen-diagrams.js`, `gen-repo-map.js`).
33
- - **Trust boundary:** a sub-Metic builder (Xenos/Thetes) stays out of the permission/pipeline core (rank/authz machinery, the ship/grade/deploy pipeline, `migrations/`, `infra/`, trust-boundary docs) and never runs raw `git push origin main` / `ssh` / `~/deploy.sh` — landing code is the GDS's job (`/builder-ship`). Metic+ is unaffected.
33
+ - **Trust boundary:** a sub-Metic builder (Xenos/Thetes) stays out of the permission/pipeline core (rank/authz machinery, the ship/grade/deploy pipeline, `migrations/`, `infra/`, trust-boundary docs) and never runs raw `git push origin main` / `ssh` / `~/deploy.sh` — landing code is Bongos's job (`/builder-ship`). Metic+ is unaffected.
34
34
 
35
35
  ## Step 0 — detect the mode
36
36
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: feedback
3
- description: Pull the latest Bongos feedback bundle into this Claude Code session — the prompt.md walkthrough the Bongos app wrote (transcript + the ask) plus the screenshots it captured, loaded by absolute path so the Read tool can see them. Triggers when the user says "/feedback", "pull in my latest feedback", "load my bongos feedback", "I just recorded a walkthrough", "grab the latest feedback bundle", or "act on my screen recording". Local + read-only; no GDS auth needed.
3
+ description: Pull the latest Bongos feedback bundle into this Claude Code session — the prompt.md walkthrough the Bongos app wrote (transcript + the ask) plus the screenshots it captured, loaded by absolute path so the Read tool can see them. Triggers when the user says "/feedback", "pull in my latest feedback", "load my bongos feedback", "I just recorded a walkthrough", "grab the latest feedback bundle", or "act on my screen recording". Local + read-only; no Bongos auth needed.
4
4
  ---
5
5
 
6
6
  You are pulling in the **latest Bongos feedback bundle** — a self-contained capture the user just recorded with the Bongos desktop app (BV1.R13 / [ADR 0087](../../../docs/adr/<redacted>.md)). The app turns a spoken screen walkthrough into a model-agnostic `prompt.md` (a timestamped transcript + an ask) plus a handful of screenshots, all under `~/CloudBongos/feedback/`. This skill loads that bundle so you can act on it directly — no copy-paste, no clipboard-image fiddling.
@@ -23,7 +23,7 @@ You are pulling in the **latest Bongos feedback bundle** — a self-contained ca
23
23
 
24
24
  ## Notes
25
25
 
26
- - **Read-only + local.** The helper only reads files under `~/CloudBongos/feedback/`; it needs no GDS session and no network.
26
+ - **Read-only + local.** The helper only reads files under `~/CloudBongos/feedback/`; it needs no Bongos session and no network.
27
27
  - **"Latest" = most recently produced.** The Bongos app updates a `latest` pointer every time a capture is stopped, so this always loads the newest walkthrough. To act on an older one, point the user at the specific dir under `~/CloudBongos/feedback/`.
28
28
  - **The frames are file paths, never base64** — that's the whole point of the bundle format (it keeps the text prompt tiny and lets your Read tool load the images). See `bongos-app/README.md` for the full bundle contract.
29
29
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: fix-task
3
- description: Claim, fix, verify, and ship a single GDS task by id — the standard cloud-bongos task loop. Use when asked to "claim/fix/ship task NNNN".
3
+ description: Claim, fix, verify, and ship a single Bongos task by id — the standard cloud-bongos task loop. Use when asked to "claim/fix/ship task NNNN".
4
4
  ---
5
5
 
6
6
  You are running the standard task loop for cloud-bongos: read a task, verify its premise, claim it, fix it test-first, then ship it. This skill chains the pieces `/builder-claim` and `/builder-ship` already own — it does not re-derive their mechanics.
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: goal-create
3
- description: Plan and create ONE GDS goal — the module-scoped workspace between a version and its criteria (ADR 0086) — in a single interactive session. Claude reads the goal board, decides reuse-vs-new, infers scope_modules from the LIVE module roster, drafts the goal's done-when criteria and a seed-task outline on its own, then asks only about genuine gray areas and for one sign-off before writing anything. Scoped smaller than /planning-session (one goal in one sitting, no spec file, no migration) and the opening end of /goal-review (which closes goals out). Triggers when the user says "/goal-create", "create a goal", "make a goal for this", "plan a goal", "we need a goal to hold this work", "what goal should this live in", or automatically when a task is created with no goal to live in — a POST /tasks response carrying a `goal_advisory`, or work about to land in a version's "<version> — general" catch-all. Metic+ rank only (Metic and Archon; not Xenos) — Archon for a protected-module scope.
3
+ description: Plan and create ONE Bongos goal — the module-scoped workspace between a version and its criteria (ADR 0086) — in a single interactive session. Claude reads the goal board, decides reuse-vs-new, infers scope_modules from the LIVE module roster, drafts the goal's done-when criteria and a seed-task outline on its own, then asks only about genuine gray areas and for one sign-off before writing anything. Scoped smaller than /planning-session (one goal in one sitting, no spec file, no migration) and the opening end of /goal-review (which closes goals out). Triggers when the user says "/goal-create", "create a goal", "make a goal for this", "plan a goal", "we need a goal to hold this work", "what goal should this live in", or automatically when a task is created with no goal to live in — a POST /tasks response carrying a `goal_advisory`, or work about to land in a version's "<version> — general" catch-all. Metic+ rank only (Metic and Archon; not Xenos) — Archon for a protected-module scope.
4
4
  ---
5
5
 
6
- You are running the **goal-create** session for this Cloud Bongos instance. You produce **one goal**: a title, a scope wall, two to four done-when criteria, and a handful of seed tasks — written to the GDS in one sitting.
6
+ You are running the **goal-create** session for this Cloud Bongos instance. You produce **one goal**: a title, a scope wall, two to four done-when criteria, and a handful of seed tasks — written to Bongos in one sitting.
7
7
 
8
8
  > **Not `/planning-session`, not `/goal-review`.** `/planning-session` scopes a whole **version**: 5–9 criteria, a written spec under `docs/specs/`, a multi-round interview, a seed script, a migration. This skill produces **one goal**, with no spec file and no migration. `/goal-review` is the other end of the same lifecycle — it *confirms* criteria and auto-achieves goals. If the ask is "plan the next version", stop and run `/planning-session` instead.
9
9
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: goal-review
3
- description: Walk the GDS criterion review queue — for each criterion auto-flagged "met — pending review" (all its tasks shipped, not yet confirmed), prompt to confirm (→ satisfied), reject (not actually met), or note/defer. Confirming a goal's LAST criterion auto-flips the goal open→achieved. Triggers when the user says "/goal-review", "review goals", "review flagged criteria", "what criteria are ready to confirm", "confirm criteria", "walk the goal review queue", or runs as a scheduled daily task. Metic+ rank only (Metic and Archon; not Xenos).
3
+ description: Walk the Bongos criterion review queue — for each criterion auto-flagged "met — pending review" (all its tasks shipped, not yet confirmed), prompt to confirm (→ satisfied), reject (not actually met), or note/defer. Confirming a goal's LAST criterion auto-flips the goal open→achieved. Triggers when the user says "/goal-review", "review goals", "review flagged criteria", "what criteria are ready to confirm", "confirm criteria", "walk the goal review queue", or runs as a scheduled daily task. Metic+ rank only (Metic and Archon; not Xenos).
4
4
  ---
5
5
 
6
6
  You are running the **goal-review** session for this Cloud Bongos instance. It mirrors `/idea-triage`, but for the *closing* end of the work hierarchy (ADR 0086 §6): criteria that have **auto-flagged "met — pending review"** get walked one-at-a-time and dispositioned, so finished work actually closes out instead of sitting in limbo.
@@ -34,7 +34,7 @@ You are running the **goal-review** session for this Cloud Bongos instance. It m
34
34
  node scripts/gds/api.js GET /api/gds/done-when/pending-review
35
35
  ```
36
36
 
37
- (Add `?version=BONGOS-V1` to scope to one version. `api.js` is the cross-platform GDS API helper — it signs the request with your session token.)
37
+ (Add `?version=BONGOS-V1` to scope to one version. `api.js` is the cross-platform Bongos API helper — it signs the request with your session token.)
38
38
 
39
39
  If `count` is 0, print "review queue empty — no criteria pending review today" and exit.
40
40
 
@@ -46,7 +46,7 @@ With `--probe`, run the live panel calibration: `node scripts/gds/grade-smoke.js
46
46
 
47
47
  ## Report shape
48
48
 
49
- End with a compact findings list, most severe first: axis, evidence (the numbers you read), verdict (outage / drift / anomaly / stale-pin / healthy), and the exact remediation command or the skill to hand off to (`/grade-recover` for a single stuck task; a GDS task via `capture.js` for systemic fixes). A clean bill of health is one line per axis.
49
+ End with a compact findings list, most severe first: axis, evidence (the numbers you read), verdict (outage / drift / anomaly / stale-pin / healthy), and the exact remediation command or the skill to hand off to (`/grade-recover` for a single stuck task; a Bongos task via `capture.js` for systemic fixes). A clean bill of health is one line per axis.
50
50
 
51
51
  ## Constraints
52
52
 
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: idea-triage
3
- description: Daily walk through the GDS idea_inbox — for each open idea, prompt to promote (→ task), discard, or merge with another idea. Triggers when the user says "/idea-triage", "triage ideas", "review the inbox", "walk the idea inbox", or runs as a scheduled daily task. Metic+ rank only (Metic and Archon; not Xenos).
3
+ description: Daily walk through the Bongos idea_inbox — for each open idea, prompt to promote (→ task), discard, or merge with another idea. Triggers when the user says "/idea-triage", "triage ideas", "review the inbox", "walk the idea inbox", or runs as a scheduled daily task. Metic+ rank only (Metic and Archon; not Xenos).
4
4
  ---
5
5
 
6
- You are running the daily idea-triage session for Example. Open ideas in the GDS `idea_inbox` table get walked one-at-a-time and verdicted, so the inbox doesn't accumulate stale entries.
6
+ You are running the daily idea-triage session for Example. Open ideas in the Bongos `idea_inbox` table get walked one-at-a-time and verdicted, so the inbox doesn't accumulate stale entries.
7
7
 
8
8
  > **This skill is no longer the only way to triage.** Since task 1002447 a Metic+ builder can promote, discard and merge from the **hall** — the Home "Needs your attention" card's idea rows each carry a *Triage* verb that opens the record overlay, where all three forms live. No Claude session involved. What this skill adds over the hall is the **parallel development pass** (Step 1.5) — an idea fleshed out into open questions/risks before the verdict — so reach for it when the queue needs judgment, and use the hall when it just needs clearing.
9
9
 
@@ -35,7 +35,7 @@ You are running the daily idea-triage session for Example. Open ideas in the GDS
35
35
  node scripts/gds/api.js GET /api/gds/inbox
36
36
  ```
37
37
 
38
- (`api.js` is the cross-platform GDS API helper — it signs the request with your
38
+ (`api.js` is the cross-platform Bongos API helper — it signs the request with your
39
39
  session token and runs on Windows/macOS/Linux, replacing the old `python3`/`curl`
40
40
  block. For a human at a terminal, `node scripts/gds/triage.js` runs the whole
41
41
  walk interactively instead.)
@@ -21,7 +21,7 @@ The queue this skill works against is **tasks at status='confirmed'**. Those are
21
21
  > main worktree and deploys to the Linux droplet (owner-gated SSH). The git /
22
22
  > `ssh` / `deploy.sh` / branch-inventory steps below assume a bash environment
23
23
  > (the Archon's Mac/Linux or the droplet) by design and are NOT a Windows-builder
24
- > concern. The GDS *API* calls, however, go through the cross-platform
24
+ > concern. The Bongos *API* calls, however, go through the cross-platform
25
25
  > `node scripts/gds/api.js` helper so they work regardless of shell.
26
26
 
27
27
  **Step 1 — list the queue: tasks at confirmed.**
@@ -76,7 +76,7 @@ For each confirmed task, take its branch name (`claude/<worktree_name>` from the
76
76
  # Merge <branch-name>: <task value_summary>
77
77
  # …but first rewrite any "#NNN" in the summary to "task NNN" (task 916): commit
78
78
  # messages are GitHub-rendered and a bare "#NNN" autolinks to a dead GitHub
79
- # issue number, not the GDS task.
79
+ # issue number, not the Bongos task.
80
80
  git merge --no-ff <branch-name> -F /tmp/otb-merge-msg.txt
81
81
  ```
82
82
 
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: planning-session
3
- description: Run a structured planning session for an upcoming GDS version — set scope criteria, draft a written spec, interview the owner in depth to resolve every non-obvious decision, then seed the ranked task list from that spec. Triggers when the user says "/planning-session", "open a planning session", "let's plan V[N]", "plan the next version", or "scope a new version". Metic+ rank only (Metic and Archon; not Xenos).
3
+ description: Run a structured planning session for an upcoming Bongos version — set scope criteria, draft a written spec, interview the owner in depth to resolve every non-obvious decision, then seed the ranked task list from that spec. Triggers when the user says "/planning-session", "open a planning session", "let's plan V[N]", "plan the next version", or "scope a new version". Metic+ rank only (Metic and Archon; not Xenos).
4
4
  ---
5
5
 
6
- You are running a planning session for the Game Development System (GDS). The goal is to leave the session with: (a) a clear set of done-when criteria for a version, (b) a **written spec** (`docs/specs/<ver>-<goal-slug>.md`) that an in-depth interview refines until every non-obvious decision is resolved, (c) a ranked task list **seeded from that spec** that lives in the GDS database, and (d) a durable record of the session for the audit trail.
6
+ You are running a planning session for Bongos. The goal is to leave the session with: (a) a clear set of done-when criteria for a version, (b) a **written spec** (`docs/specs/<ver>-<goal-slug>.md`) that an in-depth interview refines until every non-obvious decision is resolved, (c) a ranked task list **seeded from that spec** that lives in the Bongos database, and (d) a durable record of the session for the audit trail.
7
7
 
8
8
  The first planning session — V3 Planning Session #1, 2026-05-12 — is the template this skill encodes. See `docs/session-logs/<redacted>.md` for the precedent and `tasks/227` (V3.R00) for the meta-task pattern.
9
9
 
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: priority-session
3
- description: Run a structured priority session — a trusted builder answers a handful of plain-speech questions, and the answers reweight the GDS idea_inbox and suggest what to claim next. Triggers when the user says "/priority-session", "run a priority session", "what should I work on next", "reprioritize the inbox", "what feels most important right now", or "help me decide what to claim". Metic+ rank only (Metic and Archon; not Xenos).
3
+ description: Run a structured priority session — a trusted builder answers a handful of plain-speech questions, and the answers reweight the Bongos idea_inbox and suggest what to claim next. Triggers when the user says "/priority-session", "run a priority session", "what should I work on next", "reprioritize the inbox", "what feels most important right now", or "help me decide what to claim". Metic+ rank only (Metic and Archon; not Xenos).
4
4
  ---
5
5
 
6
- You are running a **priority session** for the Game Development System (GDS). Where a **planning session** sets a *version's* scope (criteria + a fresh ranked task list), a priority session works the *present tense*: it takes the open `idea_inbox` exactly as it stands and reweights it against how the builder actually feels about the work right now — what's stuck, what would unblock the most people, what they're excited to build. The session ends with a **weighted ranking of the open ideas** and a single **"what should I claim next?"** suggestion, and it writes a durable session-log entry so the reweighting is on the audit trail.
6
+ You are running a **priority session** for Bongos. Where a **planning session** sets a *version's* scope (criteria + a fresh ranked task list), a priority session works the *present tense*: it takes the open `idea_inbox` exactly as it stands and reweights it against how the builder actually feels about the work right now — what's stuck, what would unblock the most people, what they're excited to build. The session ends with a **weighted ranking of the open ideas** and a single **"what should I claim next?"** suggestion, and it writes a durable session-log entry so the reweighting is on the audit trail.
7
7
 
8
8
  This is the live-flight complement to `/planning-session`: planning sessions set a version's scope; priority sessions reweight the present queue when the builder isn't sure where to point their energy.
9
9
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: read-session-export
3
- description: Read a Claude Code `/export` zip quickly and consistently — the conversation, the assistant's thinking ("the thoughts"), and what the tools did — so you can answer questions about a past session. Triggers when the user drops a `session-export-*.zip` (or names one) and says "read this session", "what happened in this session", "what was I/you thinking here", "summarize this export", "read the latest session export", or "/read-session-export". This READS the existing export — it does not create a new one. Local + read-only, no GDS auth, no network.
3
+ description: Read a Claude Code `/export` zip quickly and consistently — the conversation, the assistant's thinking ("the thoughts"), and what the tools did — so you can answer questions about a past session. Triggers when the user drops a `session-export-*.zip` (or names one) and says "read this session", "what happened in this session", "what was I/you thinking here", "summarize this export", "read the latest session export", or "/read-session-export". This READS the existing export — it does not create a new one. Local + read-only, no Bongos auth, no network.
4
4
  ---
5
5
 
6
6
  The user already has the zip — Claude Code's built-in `/export` made it. Your job is to **read it well**: a session export is the same shape every time, so don't go spelunking through it by hand or load the megabytes of debug logs. Run the reader, which prints a compact transcript (prompts + thinking + replies + one-line tool calls) to stdout, then answer whatever the user actually asked.
@@ -49,7 +49,7 @@ So if the user exported an Opus session hoping to re-read the literal reasoning,
49
49
  ## Constraints
50
50
 
51
51
  - **Reads, never writes.** Output goes to stdout for you to consume; it creates no files and never modifies the zip.
52
- - **Local + zero-dependency.** Pure Node stdlib (a small `zlib` ZIP reader) — no GDS session, no network, no install. Works on any builder machine.
52
+ - **Local + zero-dependency.** Pure Node stdlib (a small `zlib` ZIP reader) — no Bongos session, no network, no install. Works on any builder machine.
53
53
  - ZIP64 archives (multi-GB) are refused with a clear message; no real session export hits that.
54
54
 
55
55
  ## Files this skill touches
@@ -15,7 +15,7 @@ You are scanning a third-party artifact someone wants to install. The engine liv
15
15
  6. **Floor findings are untouchable.** Refuters may uphold or refute PANEL findings only. Nothing a model says can remove what the detectors proved.
16
16
  7. **The report lands in the builder's own user config dir** (`~/.config/otb/scan-reports/`), NEVER `docs/`, never anywhere in the repo. A scan report is a timestamped accusation about a named third party; `docs/` is a public AGPL repo indexed by `/recall`.
17
17
  8. **Zero new npm dependencies.** The whole pipeline is node builtins + git. A downloaded zip/tar gets a plain refusal (below) — no archive extractor exists here on purpose.
18
- 9. **Every quoted string from the artifact or a lens is scrubbed + capped** before it reaches chat, the report, or the GDS row. Never paste raw artifact text anywhere. The GDS row carries structure only.
18
+ 9. **Every quoted string from the artifact or a lens is scrubbed + capped** before it reaches chat, the report, or the Bongos row. Never paste raw artifact text anywhere. The Bongos row carries structure only.
19
19
 
20
20
  ## Targets — what is scannable
21
21
 
@@ -149,7 +149,7 @@ For a dangerous verdict, failed sanitize gates, or a user who just wants the fun
149
149
  1. `selectDocFiles(entries)` — the ONLY files a model may read for this landing, via the mirror. Documentation only, never code: the spec describes WHAT to build, derived from the artifact's own docs.
150
150
  2. Spawn one doc-reader subagent at those mirror files → it returns one-line functional requirements (JSON array of strings).
151
151
  3. `assembleRebuildSpec({ target, docPaths, requirements })` — script-owned framing, every line scrubbed. Write `REBUILD-SPEC.md` next to the scan report in `~/.config/otb/scan-reports/`.
152
- 4. Offer to file it as a GDS task: `POST /api/gds/tasks` (status `backlog`, body = the spec markdown; Metic+) or `node scripts/gds/capture.js` into the idea inbox otherwise. Record `rebuild_spec`.
152
+ 4. Offer to file it as a Bongos task: `POST /api/gds/tasks` (status `backlog`, body = the spec markdown; Metic+) or `node scripts/gds/capture.js` into the idea inbox otherwise. Record `rebuild_spec`.
153
153
 
154
154
  ## What this skill does NOT do
155
155
 
@@ -162,4 +162,4 @@ For a dangerous verdict, failed sanitize gates, or a user who just wants the fun
162
162
 
163
163
  ## When the API is unreachable
164
164
 
165
- The scan itself is fully local — quarantine, floor, panel, report all still work. What fails is the prior-scan lookup (step 3) and the row write (step 7). Say so explicitly, keep the report file, and offer to record the row later; never pretend the row was written, and never skip the scan because the GDS is down.
165
+ The scan itself is fully local — quarantine, floor, panel, report all still work. What fails is the prior-scan lookup (step 3) and the row write (step 7). Say so explicitly, keep the report file, and offer to record the row later; never pretend the row was written, and never skip the scan because Bongos is down.
@@ -3,7 +3,7 @@ name: status
3
3
  description: Answer "what's the status of X" / "what's left for criterion Cn" in one call. Triggers when the user says "/status", "what's left for C8", "status of GDS-V3", "how far along is the memory criterion", "what tasks remain to complete X", or asks how a version/criterion is progressing. Read-only — rolls up each done-when criterion → its gating tasks → live statuses → what's blocking.
4
4
  ---
5
5
 
6
- You are answering a project-status question. Before this skill existed, doing so meant ~10 sequential GDS calls (grep the seed file for which tasks map to a criterion, eyeball a "Gates R55–R63" sentence, then re-query each task's status). The structured criterion↔task link (`task_criteria`, migration 055) + the `/status` CLI collapse that to one call. See ADR 0025 and task #435.
6
+ You are answering a project-status question. Before this skill existed, doing so meant ~10 sequential Bongos calls (grep the seed file for which tasks map to a criterion, eyeball a "Gates R55–R63" sentence, then re-query each task's status). The structured criterion↔task link (`task_criteria`, migration 055) + the `/status` CLI collapse that to one call. See ADR 0025 and task #435.
7
7
 
8
8
  ## What this skill does
9
9
 
@@ -1,11 +1,11 @@
1
1
  # Architecture — current state
2
2
 
3
3
  > Split out of `CLAUDE.md` §10 in V3.R86 ([#305](https://example.com/builders#/task/305)) to keep the agent index lean. `CLAUDE.md` §10 now
4
- > carries a one-paragraph orientation and points here. This file is **descriptive** — for live GDS
4
+ > carries a one-paragraph orientation and points here. This file is **descriptive** — for live Bongos
5
5
  > state (tasks, versions, claims, ranks) the source of truth is the database via `/api/gds/*`, and
6
6
  > for permissions specifically see [`docs/canonical-permissions.md`](canonical-permissions.md).
7
7
 
8
- > **For decision rationale (why we chose what), read [`docs/adr/`](adr/). The most relevant: 0001 (stack), 0002 (DigitalOcean), 0003 (Cloudflare cert), 0006 (singleton WorldRoom + queue), 0007 (persistent identity), 0008 (Google Chat OAuth), 0010 (GDS architecture), 0016 (trust boundary).**
8
+ > **For decision rationale (why we chose what), read [`docs/adr/`](adr/). The most relevant: 0001 (stack), 0002 (DigitalOcean), 0003 (Cloudflare cert), 0006 (singleton WorldRoom + queue), 0007 (persistent identity), 0008 (Google Chat OAuth), 0010 (Bongos architecture), 0016 (trust boundary).**
9
9
 
10
10
  **Live & running:**
11
11
 
@@ -84,7 +84,7 @@ players(id text PK, current_grid_x int, current_grid_y int, current_facing text,
84
84
  indexes: (last_seen_at)
85
85
  ```
86
86
 
87
- GDS tables (migration `003_pms.sql`, see [ADR 0010](adr/0010-pms-architecture.md)):
87
+ Bongos tables (migration `003_pms.sql`, see [ADR 0010](adr/0010-pms-architecture.md)):
88
88
 
89
89
  ```
90
90
  builders(id, github_id UNIQUE, github_login, display_name, avatar_url, total_credits, karma,
@@ -201,9 +201,9 @@ audit_log(id, builder_id, route, method CHECK IN (POST|PATCH|PUT|DELETE),
201
201
  -- bfg_dream_write | bfg_correction_write.
202
202
  ```
203
203
 
204
- GDS views: `claimable_tasks` (rebuilt in 006 to use SELECT t.*; rebuilt again in 014 so the new `discipline` column flows through), `version_progress` (rebuilt in 006 to count only leaf tasks for forward-compat with task hierarchy), `tasks_session_fit` (new in 006: derives `fits_session_modes[]` and `credits_per_minute`; rebuilt in 014 for the same SELECT t.* refresh), `task_grades_with_context` (new in 016: joins task_grades × tasks × builders × cost_log so the V4 optimizer has quality-per-dollar in one read).
204
+ Bongos views: `claimable_tasks` (rebuilt in 006 to use SELECT t.*; rebuilt again in 014 so the new `discipline` column flows through), `version_progress` (rebuilt in 006 to count only leaf tasks for forward-compat with task hierarchy), `tasks_session_fit` (new in 006: derives `fits_session_modes[]` and `credits_per_minute`; rebuilt in 014 for the same SELECT t.* refresh), `task_grades_with_context` (new in 016: joins task_grades × tasks × builders × cost_log so the V4 optimizer has quality-per-dollar in one read).
205
205
 
206
- **GDS API (`/api/gds/*`, mounted in the same Node process):**
206
+ **Bongos API (`/api/gds/*`, mounted in the same Node process):**
207
207
 
208
208
  - **Canonical path is `/api/bongos` (task 1919); `/api/gds` is a PERMANENT alias.** The router + the discovery index are dual-mounted at both by `serve-internal.js`, driven by the single `src/bongos/api-prefix.js` constant (`API_PREFIX` + `LEGACY_API_PREFIXES`). The legacy `/api/gds` alias never goes away — shipped Dev Box binaries, the cached status mirror, and live boxes call it. **Exception:** the GitHub OAuth callback stays pinned to `/api/gds/auth/web/callback` (registered on the OAuth app; `src/bongos/routes/auth.js`). Not yet flipped (still ride the permanent alias): `src/**` internal callers + the deeper internal names (folders, `GDS_*` env, `gds_session` cookie) — the deferred internal-rename pass.
209
209
  - **Self-describing (task 1918, [ADR 0109](adr/<redacted>.md)).** The whole surface is documented in the standard **OpenAPI 3.1** format at [`docs/api/openapi.json`](api/openapi.json), **generated from the live route files** by `scripts/gds/gen-api-docs.js` (reusing the same `route-rank-check.js` introspection the ship-time rank gate uses — so it can't drift; a fitness `--check` + ship-time regen enforce freshness). A rendered docs site (vendored Redoc) is served at **`/docs`** on the apex of every instance (`cloudbongos.com/docs` canonical); `GET /api/gds` returns a machine-discovery index pointing at it. The generated [`docs/api-reference.md`](api-reference.md) supersedes the old hand-maintained `routes-permissions.md`. The mount prefix is the single `src/bongos/api-prefix.js` constant.
@@ -217,7 +217,7 @@ GDS views: `claimable_tasks` (rebuilt in 006 to use SELECT t.*; rebuilt again in
217
217
  - Builder memory (ADR 0024 cloneable memory + ADR 0026 BFG). Self-scoped (owner is always `req.builder.id`, never input): `POST /memory/sync` (push own memory; own 64 MB parser, vs the global 64 KB), `GET /memory/files`, `GET /memory/file`, `DELETE /memory/file` (the BFG delete affordance, 6C.2). Cross-builder (input-owner) endpoints — all privileged + audit-logged fail-closed: `GET /memory/builders/:id/files`+`/file` (**archon forensic** read), `GET /memory/bfg/builders/:id/files`+`/file` (**BFG-principal only**, 6B.1 read), and the one cross-builder WRITE `POST /memory/builders/:id/bfg-write` (**BFG-principal only**, kill-switched `BFG_WRITE_ENABLED` default-OFF, namespaced `bfg/`, attributed `author: BFG`, write+audit in one tx — dreams + transparent corrections, 6C.1/6C.2).
218
218
  - Session corpus (BFG evaluator — 6D, ADR 0027): `POST /sessions` (upload own session digest; own **4 MB** json parser — capped, vs the global 64 KB — and the digest is per-turn metadata + short scrubbed snippets, never raw transcript content), `GET /sessions/mine` (self-serve), `GET /sessions/search` (cross-builder, **archon-gated** — the BFG-principal stand-in; the principal now exists (6C.1) and the *memory* cross-reads moved to it (6B.1), but these *session* reads still use the archon stand-in pending a retrofit, + audit_log row per read), `GET /sessions/:id` (own self-serve; cross-builder needs archon + audit; non-owner → 404).
219
219
  - Public (no auth, `Cache-Control: max-age=60`): `/public/versions`, `/public/progress`, `/public/cost-summary`, `/public/recent-shipped`, `/public/leaderboard`, `/public/grades[?days=N]`, `/public/tasks/:id` ([#604](https://example.com/builders#/task/604) — single-task resolver for `#NNN` doc deep-links; `title`/`value_summary` returned **only** for `shipped`|`confirmed` work and withheld for in-flight tasks so unshipped/security task names can't leak; the status dashboard renders it at `#/task/:id`), `/public/ref-ids` ([#653](https://example.com/builders#/task/653) — `{tasks:[ids]}`, ids only, token-free; the doc-ref linkifier + its CI gate consult it to decide which bare `#NNN` are real task refs). These power `status.example.com`.
220
- - Live updates (Server-Sent Events — [#569](https://example.com/builders#/task/569), [ADR 0030](adr/<redacted>.md) signal layer, [ADR 0069](adr/<redacted>.md) transport): an SSE stream at `GET /api/gds/live` ([`src/bongos/routes/live.js`](../src/bongos/routes/live.js)), mounted in both entrypoints (`server.js` + `src/platform-server.js`) so the hall stays live on a game-less boot. This **superseded** the original broadcast-only Colyseus `builders_hall` room (R55 / task 1194 — the room and `src/rooms/BuildersHallRoom.js` were deleted because a GDS-only instance has no Colyseus in the process). The change-signal layer is **unchanged**: a statement-level Postgres `NOTIFY` trigger (migration 066) on `tasks`/`claims`/`builders`/`builder_onboarding_state`/`credit_log`/`karma_log` fires a `gds_live` notification on every write (incl. direct `psql`); one persistent `LISTEN` connection ([`src/bongos/live-channel.js`](../src/bongos/live-channel.js)) relays each notification, and the SSE endpoint emits an **opaque empty nudge** to open hall tabs (the `{table, op}` is kept server-side so internal table names can't leak); the hall re-runs its `loadAll()` (debounced) on any nudge. No row data crosses the channel — access control stays on the per-panel re-fetches.
220
+ - Live updates (Server-Sent Events — [#569](https://example.com/builders#/task/569), [ADR 0030](adr/<redacted>.md) signal layer, [ADR 0069](adr/<redacted>.md) transport): an SSE stream at `GET /api/gds/live` ([`src/bongos/routes/live.js`](../src/bongos/routes/live.js)), mounted in both entrypoints (`server.js` + `src/platform-server.js`) so the hall stays live on a game-less boot. This **superseded** the original broadcast-only Colyseus `builders_hall` room (R55 / task 1194 — the room and `src/rooms/BuildersHallRoom.js` were deleted because a Bongos-only instance has no Colyseus in the process). The change-signal layer is **unchanged**: a statement-level Postgres `NOTIFY` trigger (migration 066) on `tasks`/`claims`/`builders`/`builder_onboarding_state`/`credit_log`/`karma_log` fires a `gds_live` notification on every write (incl. direct `psql`); one persistent `LISTEN` connection ([`src/bongos/live-channel.js`](../src/bongos/live-channel.js)) relays each notification, and the SSE endpoint emits an **opaque empty nudge** to open hall tabs (the `{table, op}` is kept server-side so internal table names can't leak); the hall re-runs its `loadAll()` (debounced) on any nudge. No row data crosses the channel — access control stays on the per-panel re-fetches.
221
221
 
222
222
  **Builder ranks & the trust boundary:** moved to its own canonical reference —
223
223
  [`docs/canonical-permissions.md`](canonical-permissions.md) (rank ladder, live ranks, what's gated,
@@ -225,7 +225,7 @@ failure modes) and [ADR 0016](adr/<redacted>.md) (the decision).
225
225
  **Authority lives in `builders.rank` on the prod DB, checked server-side per request with no caching;
226
226
  markdown describes, the DB enforces.**
227
227
 
228
- > **Two entrypoints, one serving path (ADR 0062 R51, task 1190).** The host-routing + hall/status serving below is factored into `mountInternalSurfaces(app)` in [`src/bongos/serve-internal.js`](../src/bongos/serve-internal.js), called by **both** the game boot ([`server.js`](../server.js)) and the new **GDS-only boot** ([`src/platform-server.js`](../src/platform-server.js)). The platform boot constructs **no Colyseus, no game rooms, no `/vendor/*`, no `/assets/tiles`, no `public/`** — a game-less Cloud Bongos instance runs it unchanged, and "no game route is reachable" holds by absence (the inverse of `preview-server.js`, which serves only the game). Prod still runs `node server.js`; the GDS-only entrypoint is the seam the instance model (R54/R67) boots on.
228
+ > **Two entrypoints, one serving path (ADR 0062 R51, task 1190).** The host-routing + hall/status serving below is factored into `mountInternalSurfaces(app)` in [`src/bongos/serve-internal.js`](../src/bongos/serve-internal.js), called by **both** the game boot ([`server.js`](../server.js)) and the new **Bongos-only boot** ([`src/platform-server.js`](../src/platform-server.js)). The platform boot constructs **no Colyseus, no game rooms, no `/vendor/*`, no `/assets/tiles`, no `public/`** — a game-less Cloud Bongos instance runs it unchanged, and "no game route is reachable" holds by absence (the inverse of `preview-server.js`, which serves only the game). Prod still runs `node server.js`; Bongos-only entrypoint is the seam the instance model (R54/R67) boots on.
229
229
 
230
230
  **Multi-host setup (same Node process), routed by `Host` header in [`src/bongos/serve-internal.js`](../src/bongos/serve-internal.js), shared by both entrypoints:**
231
231
 
@@ -34,7 +34,7 @@ env override → instance config (config/branding.json) → neutral star
34
34
  | `domains.instanceBase` | Apex zone new projects get their **auto-assigned** address under (`<slug>.<instanceBase>`, task 1002704 — every project's hall reachable day one; `no_address: true` on the create call opts out). Same one-label-under-apex/edge-TLS constraint as `devBoxBase`. Deliberately NOT derived from `publicOrigin` (on a co-hosting control plane that is the game's domain). Empty ⇒ no auto-assign — creates are domainless unless the caller brings a domain. |
35
35
  | `domains.sandboxPrefix` / `termPrefix` | Subdomain prefixes for the sandbox-preview + browser-terminal hosts. |
36
36
  | `repo` | `{ owner, name }` GitHub binding. |
37
- | `db.database` | DB name the GDS pool connects to when neither `DATABASE_URL` nor `PGHOST`/`PGDATABASE` is set (`src/bongos/pool.js`, ADR 0062 §5). `null` in the neutral starter = **fail loud** rather than silently target a host DB. |
37
+ | `db.database` | DB name Bongos pool connects to when neither `DATABASE_URL` nor `PGHOST`/`PGDATABASE` is set (`src/bongos/pool.js`, ADR 0062 §5). `null` in the neutral starter = **fail loud** rather than silently target a host DB. |
38
38
  | `currency` | `{ label, symbol }` — the reward unit label (e.g. "example"). Display only. |
39
39
  | `reward` | `{ marginPct, usdPeg, mode }` — the per-instance reward POLICY the economy module reads ([ADR 0054](adr/<redacted>.md) + ADR 0146, tasks 2009/1002270): the cost-plus margin percent (default `20`), the example-per-USD peg (default `1`), and `mode` — `"cost-plus-and-estimate"` (default; pay both the per-task author estimate AND the cost-plus session reward) or `"cost-plus-only"` (suppress the per-task estimate payout; the cost-plus session reward is the sole equity reward). A committed, code-reviewed change — not a live UI knob. Omit ⇒ code defaults (20% margin, 1:1 peg, pay both streams). |
40
40
  | `models` | `{ main, subagentDefault, subagentRoutine }` — the per-instance subagent model-allocation DEFAULT the builder-settings module reads (task 2011): the tier for the main session, subagent-default work, and routine plumbing (tiers: `haiku`/`sonnet`/`opus`/`fable`). A per-builder override resolves over this. Omit ⇒ code defaults (`opus`/`opus`/`haiku`). |
@@ -100,7 +100,7 @@ graph LR
100
100
 
101
101
  - A rewrite **re-derives the parts you'd keep anyway** (auth, rank ladder, tasks/claims/credits, grader, ship pipeline, ~111 migrations) — no modularity win in retyping it; the win is *where code lives + enforced boundaries*, which a reorg delivers.
102
102
  - The risk profile is upside-down for a bootstrapped, ship-small, AI-first project: a rewrite is a long no-ship window ending in a big-bang cutover.
103
- - **Rule of thumb: rewrite when the foundation is wrong; reorganize when the foundation is sound but the filing is wrong.** Your foundation (trust boundary, GDS pipeline, grader) is sound; the filing (fused game/core, a 236 KB `db.js`, flat routes, hardcoded brand strings) is wrong. That's a reorg.
103
+ - **Rule of thumb: rewrite when the foundation is wrong; reorganize when the foundation is sound but the filing is wrong.** Your foundation (trust boundary, Bongos pipeline, grader) is sound; the filing (fused game/core, a 236 KB `db.js`, flat routes, hardcoded brand strings) is wrong. That's a reorg.
104
104
 
105
105
  ## 6. The migration path
106
106
 
@@ -122,4 +122,4 @@ The proof at every step (as in ADR 0062's core/host split): after moving a modul
122
122
 
123
123
  **Changes (reorganize):** code moves into `modules/<key>/` slices · a real loader replaces hand-wired `if (isModuleEnabled())` lines · `module.json` becomes load-bearing · the 236 KB `db.js` is carved per-module · a task gains a module label; `touches[]` retires · brand strings + stylesheets consolidate.
124
124
 
125
- **Stays (unchanged):** one `package.json` · one Node process (`node server.js`) · no bundler · Postgres, raw ESM client + CJS server · the trust boundary + rank ladder (extended to module routes) · the GDS ship/grade/deploy pipeline.
125
+ **Stays (unchanged):** one `package.json` · one Node process (`node server.js`) · no bundler · Postgres, raw ESM client + CJS server · the trust boundary + rank ladder (extended to module routes) · the Bongos ship/grade/deploy pipeline.
@@ -69,7 +69,7 @@ graph LR
69
69
 
70
70
  ## 4. The one warning: don't cut through the lifecycle
71
71
 
72
- The GDS lifecycle — **claim → work → ship → grade → credit** — is the most coupled part, and the graph proves it (`tasks` imports `grader`, `github-push`, `ship-broadcast`). Keep the **state machine** (tasks/claims/versions) as one module; extract the *capabilities it invokes* (grade, reward) as separate modules behind kernel seams ([04](04-module-lifecycle.md)). Forcing the state machine apart with a strict "import the kernel only" rule would break the rule constantly or bloat the kernel.
72
+ Bongos lifecycle — **claim → work → ship → grade → credit** — is the most coupled part, and the graph proves it (`tasks` imports `grader`, `github-push`, `ship-broadcast`). Keep the **state machine** (tasks/claims/versions) as one module; extract the *capabilities it invokes* (grade, reward) as separate modules behind kernel seams ([04](04-module-lifecycle.md)). Forcing the state machine apart with a strict "import the kernel only" rule would break the rule constantly or bloat the kernel.
73
73
 
74
74
  ## 5. Cross-cutting code (e.g. "security")
75
75
 
@@ -67,7 +67,7 @@ graph TD
67
67
  - **Parallel** (`--parallel N`): the conductor fans out worker subagents, each `isolation: "worktree"`, each on a different module → they can't collide (different modules).
68
68
  - **Sequential**: the conductor `EnterWorktree`s a fresh worktree per task, ships, `ExitWorktree`s, moves on.
69
69
 
70
- The session has full mobility across modules; only each *task's worker* is module-isolated. This is the orchestrator-worker pattern (ADR 0024), and the GDS already assigns a per-claim worktree.
70
+ The session has full mobility across modules; only each *task's worker* is module-isolated. This is the orchestrator-worker pattern (ADR 0024), and Bongos already assigns a per-claim worktree.
71
71
 
72
72
  ## 7. Limiting what the box holds — the jailbreak blast radius
73
73
 
@@ -48,7 +48,7 @@ All color values are CSS color strings (hex, `rgb()`, `hsl()`, `color-mix()`, et
48
48
 
49
49
  ### 1.5 Extending tokens
50
50
 
51
- An instance may add new tokens inside any group — the schema uses `additionalProperties: false` on the top-level groups to prevent misspellings of the canonical keys, but accepts that an instance may grow additional groups over time. Add a new group by proposing a schema addition via a GDS task before committing it to the instance pack.
51
+ An instance may add new tokens inside any group — the schema uses `additionalProperties: false` on the top-level groups to prevent misspellings of the canonical keys, but accepts that an instance may grow additional groups over time. Add a new group by proposing a schema addition via a Bongos task before committing it to the instance pack.
52
52
 
53
53
  ---
54
54
 
@@ -214,8 +214,8 @@ module.exports = {
214
214
  repoRoot: string; // absolute path to the repo root
215
215
  surfaceId: string; // which surface this export targets
216
216
  toolOutput: unknown; // adapter-specific; see per-adapter docs
217
- taskId?: string; // GDS task to associate the commit with
218
- authorName?: string; // git author name (defaults to GDS builder identity)
217
+ taskId?: string; // Bongos task to associate the commit with
218
+ authorName?: string; // git author name (defaults to Bongos builder identity)
219
219
  }
220
220
  ```
221
221
 
@@ -318,5 +318,5 @@ The validator is hooked into `scripts/gds/fitness.js` as an opt-in check (enable
318
318
 
319
319
  1. Create `src/ui/adapters/<id>/index.js` exporting `{ id, import, export }`.
320
320
  2. Add a `<surface-id>` entry to `config/design-sources.json` with `"tool": "<id>"`.
321
- 3. Write a task for the adapter (it unblocks from [task 1377](https://example.com/builders#/task/1377)) and ship it under a claimed GDS task.
321
+ 3. Write a task for the adapter (it unblocks from [task 1377](https://example.com/builders#/task/1377)) and ship it under a claimed Bongos task.
322
322
  4. The validator discovers the adapter automatically on the next run.
package/docs/file-map.md CHANGED
@@ -27,12 +27,12 @@
27
27
  │ ├── v1-shipped.md ← V1 game archive (shipped 2026-05-12)
28
28
  │ ├── pms-v2-shipped.md ← PMS-V2 archive (shipped 2026-05-12)
29
29
  │ ├── pms-v1-shipped.md ← PMS-V1 archive (shipped 2026-05-09)
30
- │ └── backlog.md ← FROZEN archive after one-time DB import (live tasks in GDS DB)
31
- ├── generative-ideas.md ← FROZEN archive after Phase 2c DB import (live ideas in GDS idea_inbox table)
30
+ │ └── backlog.md ← FROZEN archive after one-time DB import (live tasks in Bongos DB)
31
+ ├── generative-ideas.md ← FROZEN archive after Phase 2c DB import (live ideas in Bongos idea_inbox table)
32
32
  │ (chat-inbox.md removed 2026-06-05 — inbound is now Discord #ideas → idea_inbox, ADR 0033 F6)
33
33
  ├── blockers/
34
34
  │ ├── README.md
35
- │ └── blockers.md ← FROZEN archive after Phase 2a DB import (live blockers in GDS blockers table)
35
+ │ └── blockers.md ← FROZEN archive after Phase 2a DB import (live blockers in Bongos blockers table)
36
36
  │
37
37
  ├── brand/ ← repo-canonical design system (ADR 0081)
38
38
  │ └── cloud-bongos/ ← Cloud Bongos brand: README design guide + tokens.json + regen_*.py + assets/ (mascot, 9 animation states, Docker-homage sky-whale, coin logo + Baloo 2 wordmark, painted code-glyph charms). Built under task 1506 (mascot restyle 1529, code glyphs 1527); illustrations generated via Gemini (modules/art-pipeline/pipeline gen_api).
@@ -43,7 +43,7 @@
43
43
  │ ├── adr/ ← Architecture Decision Records
44
44
  │ │ ├── README.md ← full ADR index (authoritative)
45
45
  │ │ └── 0001…0120-*.md ← 133 ADR files (a handful of numbers collide — see README.md's disambiguation note; README.md has the live list)
46
- │ ├── architecture.md ← §10 detail: live infra, app stack, DB schema, GDS API (split out V3.R86)
46
+ │ ├── architecture.md ← §10 detail: live infra, app stack, DB schema, Bongos API (split out V3.R86)
47
47
  │ ├── canonical-permissions.md ← rank ladder + trust boundary reference (read-only mirror; DB enforces)
48
48
  │ ├── design/ ← game design docs (V2 visual redesign cluster)
49
49
  │ │ ├── container-exterior.md ← (#641) container building exterior: two-storey stacked-container structure, glass facade, deck, rooftop
@@ -81,12 +81,12 @@
81
81
  │ ├── box-terminal.service ← (#760/ADR 0038) always-on ttyd web terminal (127.0.0.1:7681, per-box basic-auth) for thin-device (Chromebook/browser) builders
82
82
  │ ├── cloudflared.service ← (#760/ADR 0038) outbound-only Cloudflare Tunnel exposing the box terminal (no inbound ports); runs cloudflared-run.sh
83
83
  │ └── cloudflared-run.sh ← (#760/ADR 0038) runs ON THE BOX: named tunnel (BOX_TUNNEL_TOKEN) or tokenless quick tunnel; writes the public URL to /run/otb/terminal-url
84
- ├── migrations/ ← CORE (build-system / GDS) migrations — schema + platform-universal seeds, applied on EVERY instance (migrate.sh `migrations/*.sql`). Game-module migrations moved to modules/game/migrations/ (BV1.R49).
84
+ ├── migrations/ ← CORE (build-system / Bongos) migrations — schema + platform-universal seeds, applied on EVERY instance (migrate.sh `migrations/*.sql`). Game-module migrations moved to modules/game/migrations/ (BV1.R49).
85
85
  │ ├── instance/ ← OTB/product SCOPE-TRUTH seeds (versions, goals, done_when_criteria). Applied only on the OWNING instance — `GDS_APPLY_INSTANCE_SEEDS=1`, default OFF — so a vanilla/branded self-host never inherits them (task 1704 / ADR 0105). Merge-sorted with core by basename, so global order is preserved.
86
86
  │ ├── game/ ← LEGACY game-module migrations (moved to modules/game/migrations/ in BV1.R49 — stem-keyed, so they did NOT re-run on prod). Kept here as a frozen archive; migrate.sh still applies them for backward compat.
87
87
  │ │ ├── 001_initial.sql ← schema_migrations + world_events (game)
88
88
  │ │ └── 002_players.sql ← players — persistent identity (game)
89
- │ ├── 003_pms.sql ← GDS schema: builders, versions, tasks, claims, costs, credits, sessions
89
+ │ ├── 003_pms.sql ← Bongos schema: builders, versions, tasks, claims, costs, credits, sessions
90
90
  │ ├── 112_drop_track_check.sql ← task 1191: drop the product|internal track CHECK on versions (taxonomy → branding.tracks config); name-independent + idempotent
91
91
  │ ├── <redacted>.sql ← cost_log unique (source, source_ref) for idempotent backfill
92
92
  │ ├── 005_pms_smoke_filter.sql ← filter __smoke__ tasks from claimable_tasks + version_progress
@@ -128,8 +128,8 @@
128
128
  │
129
129
  ├── scripts/
130
130
  │ ├── migrate.sh ← idempotent migration runner; applies core `migrations/*.sql` always + `modules/<key>/migrations/*.sql` only when the module is enabled (ADR 0083 §module-owned-migrations); stem-keyed so relocating a migration between dirs never re-runs it on prod
131
- │ ├── verify-gds-only-schema.sh ← task 1191: throwaway-DB proof that a GDS-only migration run yields the build-system schema with NO game tables (needs local Postgres; not the DB-free unit gate)
132
- │ ├── setup-builder.js ← one-command new-builder bootstrap (toolchain + npm ci + .env.local + GDS auth); cross-platform node entry (#673)
131
+ │ ├── verify-gds-only-schema.sh ← task 1191: throwaway-DB proof that a Bongos-only migration run yields the build-system schema with NO game tables (needs local Postgres; not the DB-free unit gate)
132
+ │ ├── setup-builder.js ← one-command new-builder bootstrap (toolchain + npm ci + .env.local + Bongos auth); cross-platform node entry (#673)
133
133
  │ ├── setup-builder.sh ← thin bash shim → setup-builder.js (Mac/Linux convenience + devcontainer/README refs)
134
134
  │ ├── deploy/ ← deploy scripts that run ON the droplet
135
135
  │ │ ├── deploy-prod.sh ← #1026/ADR 0056: version-controlled MIRROR of the droplet's hand-maintained ~/deploy.sh (byte-faithful). NOT auto-installed — the ci deploy key is forced-command-locked (ADR 0042/0043); reinstall by hand on change. Localhost /healthz retried 15×@1s so a slow bind no longer false-fails a deploy.
@@ -140,7 +140,7 @@
140
140
  │ │ ├── README.md
141
141
  │ │ ├── lib.js ← webhook poster (reads ~/.config/otb/discord-webhooks.json, mode 600)
142
142
  │ │ └── post.js ← post a ship summary to a channel (default ship_news)
143
- │ └── gds/ ← Game Development System CLI + bootstrap (renamed from `pms/` in V3.R01)
143
+ │ └── gds/ ← Bongos CLI + bootstrap (renamed from `pms/` in V3.R01)
144
144
  │ ├── cli-lib.js ← shared: session token, apiCall(), formatters
145
145
  │ ├── discord-channels.js ← Archon CLI: plan/apply the Discord channel layout via the API (ADR 0036, #727)
146
146
  │ ├── setup.js ← one-time GitHub Device Flow → ~/.config/otb/gds-session.json
@@ -170,7 +170,7 @@
170
170
  │ ├── smoke-gds.js ← public-surface + 401-check smoke test (asserts /api/pms/* now 404s — removed in V3.R01-followup #308)
171
171
  │ ├── box.js ← (#598/ADR 0031) per-builder dev box lifecycle CLI: provision·park·wake·deprovision·sweep-idle·sweep-dormant·status (dry-run default, --apply to act; rank-gated)
172
172
  │ ├── smoke-box.sh ← (#598) hermetic box-lifecycle smoke (no DB/DO/network): runs tests/boxes.mjs + tests/cf_tunnel.mjs (#771 named tunnel) + route-rank + module-load
173
- │ ├── recall.js ← `/recall` CLI: two-call progressive-disclosure search (summary → `--expand <id>`) over the GDS retrieval layer (ADR 0060); `node scripts/gds/recall.js <query>`
173
+ │ ├── recall.js ← `/recall` CLI: two-call progressive-disclosure search (summary → `--expand <id>`) over Bongos retrieval layer (ADR 0060); `node scripts/gds/recall.js <query>`
174
174
  │ ├── capture.js ← file an idea_inbox row from the CLI (the ideas.capture kernel port); backs the "capture a tangent" flow across skills
175
175
  │ ├── worktree.js ← (task 1002809) junction-safe worktree add/remove/list — outside-repo worktrees get a node_modules junction via node (no shell quoting), removed BEFORE `git worktree remove`
176
176
  │ ├── learning-capture.js ← file a `learnings` row (DB-backed short-form rule capture, replacing hand-edited recipe files for a single gotcha)
@@ -194,7 +194,7 @@
194
194
  │ │ ├── provenance.js ← pure "who BUILT this module" classifier from manifest.origin — the CREDIT axis (ADR 0107 §9). own-built vs core-loaded.
195
195
  │ │ ├── catalog.js ← the browsable module catalog model (ADR 0167 / ADR 0107 §2/§3): `source` (which TREE ships it — core package vs instance, read off the loader's discovery root) + resolved author/origin `credit` with an `inferred` flag. The ONE builder behind both `GET /api/bongos/modules` and `bongos module list --catalog`, so the hall + CLI can't drift.
196
196
  │ │ └── semver.js ← minimal semver `satisfies(version, range)` used by the loader (no npm dep).
197
- │ ├── platform-server.js ← GDS-ONLY entrypoint (ADR 0062 R51, task 1190): boots Express + the shared internal surface (API + hall + status) with NO game in the process; the inverse of preview-server.js. `node src/platform-server.js`
197
+ │ ├── platform-server.js ← BONGOS-ONLY entrypoint (ADR 0062 R51, task 1190): boots Express + the shared internal surface (API + hall + status) with NO game in the process; the inverse of preview-server.js. `node src/platform-server.js`
198
198
  │ ├── preview-server.js ← GAME-ONLY entrypoint for the per-box sandbox (ADR 0052): Phaser/Colyseus + tiles, NO /api/gds
199
199
  │ ├── seats.js ← in-process seat counter + EventEmitter
200
200
  │ ├── rooms/
@@ -404,7 +404,7 @@ To install on a new machine, symlink each routine's directory under `~/.claude/s
404
404
  ├── pre-compact.js ← PreCompact: thin reader around eviction-policy.js — emits an eviction directive (blocks to drop + one-line recovery stubs) at the compaction seam (task 1349)
405
405
  ├── eviction-policy.js ← pure deterministic in-session compaction classifier (transcript turns → eviction set + replacement stubs); no I/O, unit-tested in tests/eviction_policy.mjs; consumed by pre-compact.js (task 1348)
406
406
  ├── stop-sound.js ← Stop: completion sound on macOS (afplay; Glass / Hero on /tmp/otb-celebrate); silent no-op on other OSes
407
- └── stop-refcheck.js ← Stop: deterministic backstop that catches a bare `#NNN` GDS ref in live session text (autolinks to a 404 GitHub issue) and asks for the clickable form (follow-on to task 929)
407
+ └── stop-refcheck.js ← Stop: deterministic backstop that catches a bare `#NNN` Bongos ref in live session text (autolinks to a 404 GitHub issue) and asks for the clickable form (follow-on to task 929)
408
408
  ```
409
409
 
410
410
  (Before [#671](https://example.com/builders#/task/671) these ran via `bash` shims — `sync-env-local.sh`, `conductor.sh`, `onboarding-ship-logs.sh`, `rank-change-greeting.sh`, `pull-memory.sh` — which failed on Windows without Git Bash. The Node entries above replaced them.)