@bongos/core 1.19.882 → 1.19.883

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 (34) hide show
  1. package/.bongos-core.json +52 -52
  2. package/clients/bongos-client/index.d.ts +2 -2
  3. package/docs/adr/0309-durable-module-enablement-db-override.md +116 -0
  4. package/docs/adr/README.md +1 -0
  5. package/docs/api/openapi.json +6 -0
  6. package/docs/copy-inventory.md +24 -23
  7. package/docs/copy-registry.json +34 -25
  8. package/docs/file-map.md +1 -2
  9. package/docs/module-api-changelog.md +3 -1
  10. package/docs/recipes/bongos-cli-release.md +1 -1
  11. package/docs/recipes/managed-settings-remote-control.md +1 -1
  12. package/migrations/core_248_module_enablement_overrides.sql +50 -0
  13. package/modules/dev-box/app/README.md +4 -3
  14. package/modules/hall-ui/public/collab-lib.js +33 -1
  15. package/modules/hall-ui/public/collab.css +33 -4
  16. package/modules/hall-ui/public/collab.html +9 -2
  17. package/modules/hall-ui/public/collab.js +68 -15
  18. package/modules/hall-ui/public/dom-utils.js +23 -1
  19. package/package-lock.json +2 -2
  20. package/package.json +1 -1
  21. package/scripts/hall-preview/server.js +38 -1
  22. package/src/bongos/module-overrides.js +117 -0
  23. package/src/bongos/routes/modules.js +56 -23
  24. package/src/module-api.js +1 -1
  25. package/src/modules.js +120 -14
  26. package/src/platform-server.js +47 -5
  27. package/tests/box_sweep_docs.mjs +7 -3
  28. package/tests/collab_page.mjs +136 -1
  29. package/tests/modules.mjs +110 -0
  30. package/tests/modules_route_wiring.mjs +103 -0
  31. package/docs/recipes/builder-box-lifecycle.md +0 -181
  32. package/docs/recipes/devbox-app-release.md +0 -103
  33. package/docs/recipes/devbox-app-windows-test.md +0 -128
  34. package/docs/recipes/work-on-a-task-from-your-dev-box.md +0 -122
@@ -1,122 +0,0 @@
1
- # Work on a task from your dev box
2
-
3
- > Your dev box serves your **rank scope**: Metic+ boxes carry the **whole repo**;
4
- > newcomer (starter) boxes carry the safe starter surface. Task-scoped slices are
5
- > **paused** per [ADR 0193](../adr/0193-pause-task-scoped-box-slices.md) (the
6
- > machinery from [ADR 0148](../adr/0148-task-scoped-box-source-access.md) remains;
7
- > `BOX_TASK_SCOPE=on` re-enables it). Your GitHub token never leaves the server —
8
- > see "How git works on a box" below, and
9
- > [ADR 0150](../adr/0150-box-first-boot-bringup-vendored-instances.md) for how the
10
- > box comes up.
11
-
12
- ## TL;DR
13
-
14
- In your dev box's terminal:
15
-
16
- ```bash
17
- /builder-start # see what you can claim
18
- /builder-claim <N> # claim task N (locks it to your session)
19
- /builder-sync # pull the latest main onto the box right now
20
- # …work in /workspace…
21
- /builder-ship # smoke + review, then land + deploy — awards credits
22
- ```
23
-
24
- That's the whole loop. `/builder-sync` pulls fresh code within seconds instead of
25
- waiting for the box's ~10-minute refresh.
26
-
27
- ## How git works on a box — read this BEFORE diagnosing "stuck"
28
-
29
- The box holds **no stored git credential, ever** — and that is the design, not a
30
- fault ([ADR 0055](../adr/0055-server-mediated-branch-publish.md)):
31
-
32
- - **Reads are server-mediated, per request.** Every remote git operation goes
33
- through `/usr/local/bin/otb-git-credential`, which asks the control plane
34
- (`GET /box/source-access`) for a **short-lived, read-only** credential. The
35
- server checks your **live** rank + status on every single request — demotion or
36
- deactivation cuts off the next fetch instantly.
37
- - **`git push` always fails with 403 here — by design.** The read credential
38
- cannot write. Landing code is the server's job: `/builder-ship` uploads your
39
- work, opens the PR, and lands it. Never try to fix the 403 by embedding a
40
- token or editing git config.
41
- - **Source refreshes from `main` every ~10 minutes** (the `box-source-fetch`
42
- cron; log at `/tmp/box-source-fetch.log`). `/builder-sync` runs the same fetch
43
- on demand.
44
- - **If a remote git op says `could not read Username`, or the sync log shows
45
- 401:** the box's Bongos session expired. Run `/builder-reauth`, then
46
- `/builder-sync`. That is the whole fix.
47
-
48
- The box writes these same facts to `/workspace/CLAUDE.local.md` on every sync, so
49
- a Claude session on the box loads them automatically (the file is gitignored and
50
- box-written — don't edit it).
51
-
52
- ## The model — what's on your box
53
-
54
- - **Metic and above:** the full repo in `/workspace` — same tree as a laptop
55
- clone, refreshed from `main` by the sync cron.
56
- - **Below Metic (starter):** the starter surface — methodology (`CLAUDE.md`,
57
- `.claude/`), build tooling (`scripts/`, `src/bongos/`), `docs/`, `infra/`,
58
- `tests/`, and the sandbox-runnable product code. Rank, checked live by the
59
- server, is what bounds a box — not the task you claimed
60
- ([ADR 0193](../adr/0193-pause-task-scoped-box-slices.md)).
61
-
62
- ## Step by step
63
-
64
- ### 1. Connect to your box
65
-
66
- If you haven't yet, run **`/builder-connect`** (or follow the
67
- [dev-box lifecycle recipe](builder-box-lifecycle.md)) to raise and connect to your
68
- box, then **`/builder-setup`** once on the box to sign the Bongos CLI in. The browser
69
- terminal drops you into `/workspace` — the one working folder.
70
-
71
- > **`bongos shell` / `bongos code` sync on connect (BV1.R101).** Connecting with
72
- > either verb runs the source fetch for you first, so you land in `/workspace`
73
- > already fresh. (The browser terminal drops you straight into `/workspace`; run
74
- > `/builder-sync` there if you want the latest immediately.)
75
-
76
- ### 2. See what you can claim — `/builder-start`
77
-
78
- Lists the tasks that are `ready` and parallel-safe against everyone else's active
79
- claims. Pick one.
80
-
81
- ### 3. Claim it — `/builder-claim <N>`
82
-
83
- Locks task N to your session so no parallel session collides with your work.
84
-
85
- ### 4. Freshen the code — `/builder-sync`
86
-
87
- Re-runs the box's source fetch immediately so `/workspace` is on the current
88
- `main` before you branch. (The ~10-minute cron does this on its own as a
89
- backstop.) Off a box there's nothing to sync — your source is your local
90
- checkout — and the command tells you so.
91
-
92
- ### 5. Work — in `/workspace`
93
-
94
- One folder, always. When you switch tasks, keep working in place.
95
-
96
- ### 6. Ship — `/builder-ship`
97
-
98
- Runs the smoke tests and the review gate, then lands + deploys and awards credits.
99
-
100
- ## Switching tasks
101
-
102
- One box, one working folder, one active claim at a time (the server enforces
103
- one-claim-per-session). To move to a different task:
104
-
105
- 1. `/builder-ship` (or `/builder-release`) the current claim.
106
- 2. `/builder-claim <M>` the new one — and keep working in `/workspace`.
107
-
108
- ## Notes + gotchas
109
-
110
- - **`tests/` is on every box** — a starter box can run the suite for the code it
111
- holds (tests live in the top-level `tests/`, not inside `modules/<key>/`).
112
- - **Idle boxes park, they don't die.** After ~2 hours of no activity the box is
113
- **parked**: a snapshot is kept and the droplet is destroyed, so compute billing
114
- stops and a wake restores your filesystem. Only weeks of staying parked lead to
115
- reclaim (with a warning first). Still: **ship or commit before you step away** —
116
- a snapshot is a safety net, not a workflow.
117
- - **`/builder-sync` is idempotent** — safe to re-run; it just does, on demand, what
118
- the cron does on its schedule.
119
- - **A fresh box comes up with the code already cloned.** If a box ever comes up
120
- *bare* (no code, no terminal), that's the packaging bug
121
- [ADR 0150](../adr/0150-box-first-boot-bringup-vendored-instances.md) fixed on the
122
- control plane — flag it rather than working around it.