@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.
- package/.bongos-core.json +52 -52
- package/clients/bongos-client/index.d.ts +2 -2
- package/docs/adr/0309-durable-module-enablement-db-override.md +116 -0
- package/docs/adr/README.md +1 -0
- package/docs/api/openapi.json +6 -0
- package/docs/copy-inventory.md +24 -23
- package/docs/copy-registry.json +34 -25
- package/docs/file-map.md +1 -2
- package/docs/module-api-changelog.md +3 -1
- package/docs/recipes/bongos-cli-release.md +1 -1
- package/docs/recipes/managed-settings-remote-control.md +1 -1
- package/migrations/core_248_module_enablement_overrides.sql +50 -0
- package/modules/dev-box/app/README.md +4 -3
- package/modules/hall-ui/public/collab-lib.js +33 -1
- package/modules/hall-ui/public/collab.css +33 -4
- package/modules/hall-ui/public/collab.html +9 -2
- package/modules/hall-ui/public/collab.js +68 -15
- package/modules/hall-ui/public/dom-utils.js +23 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/scripts/hall-preview/server.js +38 -1
- package/src/bongos/module-overrides.js +117 -0
- package/src/bongos/routes/modules.js +56 -23
- package/src/module-api.js +1 -1
- package/src/modules.js +120 -14
- package/src/platform-server.js +47 -5
- package/tests/box_sweep_docs.mjs +7 -3
- package/tests/collab_page.mjs +136 -1
- package/tests/modules.mjs +110 -0
- package/tests/modules_route_wiring.mjs +103 -0
- package/docs/recipes/builder-box-lifecycle.md +0 -181
- package/docs/recipes/devbox-app-release.md +0 -103
- package/docs/recipes/devbox-app-windows-test.md +0 -128
- 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.
|