@bongos/core 1.19.338 → 1.19.339
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
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"artifact": "bongos-core",
|
|
3
3
|
"manifest_schema": 1,
|
|
4
4
|
"generator": "scripts/gds/package-core.js",
|
|
5
|
-
"core_version": "1.19.
|
|
6
|
-
"core_contract": "1.19.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.19.339",
|
|
6
|
+
"core_contract": "1.19.339",
|
|
7
|
+
"source_commit": "2fec46ecdc4aff13a2b42b6dd37e7151fa7a7c6c",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-08-25T01:
|
|
9
|
+
"built_at": "2026-08-25T01:23:32.854Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 325,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
19
|
"file_count": 1830,
|
|
20
|
-
"tree_sha256": "
|
|
20
|
+
"tree_sha256": "7a407b4e4d5c929c91502bf31d949fb6bbf8634ce0a2ea6caa9b7dd48ddfbdd9",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/blocker-review/SKILL.md",
|
|
@@ -707,7 +707,7 @@
|
|
|
707
707
|
{
|
|
708
708
|
"path": "docs/adr/0055-server-mediated-branch-publish.md",
|
|
709
709
|
"mode": "0000644",
|
|
710
|
-
"sha256": "
|
|
710
|
+
"sha256": "5607ab08040d7127fbdad579cf091166b5be5eb6e39a88d3e7337e4f94171fee"
|
|
711
711
|
},
|
|
712
712
|
{
|
|
713
713
|
"path": "docs/adr/0056-prod-deploy-script-mirror-and-healthcheck-retry.md",
|
|
@@ -1362,7 +1362,7 @@
|
|
|
1362
1362
|
{
|
|
1363
1363
|
"path": "docs/adr/0176-private-repo-deploy-keys.md",
|
|
1364
1364
|
"mode": "0000644",
|
|
1365
|
-
"sha256": "
|
|
1365
|
+
"sha256": "80c1b9d283892454f45504fe3f20f3a215967de7cca66a5b3ef30970bb8eed47"
|
|
1366
1366
|
},
|
|
1367
1367
|
{
|
|
1368
1368
|
"path": "docs/adr/0177-goal-membership-kind.md",
|
|
@@ -4727,12 +4727,12 @@
|
|
|
4727
4727
|
{
|
|
4728
4728
|
"path": "package-lock.json",
|
|
4729
4729
|
"mode": "0000644",
|
|
4730
|
-
"sha256": "
|
|
4730
|
+
"sha256": "d422f518f25f5a4063fa0f114cb86ee4b501e8362e8c0f0f526707d8d6ec137d"
|
|
4731
4731
|
},
|
|
4732
4732
|
{
|
|
4733
4733
|
"path": "package.json",
|
|
4734
4734
|
"mode": "0000644",
|
|
4735
|
-
"sha256": "
|
|
4735
|
+
"sha256": "4988c346e6258b2eca07502ffdf4991652f381983258a2a13de47dc4cafc72b6"
|
|
4736
4736
|
},
|
|
4737
4737
|
{
|
|
4738
4738
|
"path": "public-docs/index.html",
|
|
@@ -6557,7 +6557,7 @@
|
|
|
6557
6557
|
{
|
|
6558
6558
|
"path": "src/module-api.js",
|
|
6559
6559
|
"mode": "0000644",
|
|
6560
|
-
"sha256": "
|
|
6560
|
+
"sha256": "930f33a07876e76cf85203ff41de06eb1eebe120508946991f2ad0c73bd0a99c"
|
|
6561
6561
|
},
|
|
6562
6562
|
{
|
|
6563
6563
|
"path": "src/module-loader/catalog.js",
|
|
@@ -49,5 +49,17 @@ A **fine-grained GitHub PAT** scoped to the single repo: `Contents: read/write`
|
|
|
49
49
|
- A dev-box builder ships end-to-end: `/builder-reauth` → claim → edit → `/builder-stage` ([ADR 0046](<redacted>.md)) → `/builder-ship`, with the GDS doing the push. The box holds no GitHub credential, so the [ADR 0053](0053-scoped-dev-box-session.md) blast-radius argument still holds.
|
|
50
50
|
- The blast radius moves from "box holds a push credential" to "server holds a branch-push-only PAT." This is the direction blocker [#15](https://example.com/builders#/blocker/15) ([SEC #863](https://example.com/builders#/task/863)) already wants — a server identity holding the push credential, not builder machines.
|
|
51
51
|
- **Follow-up (hardening) — DONE + LIVE (task 1028 code, task 1043 cutover):** the standing PAT is replaced by a **GitHub App** (the server holds only the App private key and mints short-lived, repo-scoped installation tokens per push). See the *Update* above — the App is live on prod and the PAT has been removed.
|
|
52
|
+
- **Verified end-to-end on hardware, 2026-08-25 (task 1003247)** — first proof since the
|
|
53
|
+
repo went private (~2026-08-15). The verification was performed by shipping from a live dev
|
|
54
|
+
box: `/builder-reauth` -> claim -> edit -> `/builder-ship`. The instance that carried it
|
|
55
|
+
through was **task 1003252**, whose ship published its branch and produced **PR #353**,
|
|
56
|
+
which auto-merged and deployed. Task 1003247 is the decision record of that verification --
|
|
57
|
+
it is not the branch PR #353 was opened from. The box demonstrably held no push credential
|
|
58
|
+
at the time: with a working READ credential in hand, `git push --dry-run` returned 403
|
|
59
|
+
`Write access to repository not granted`. A PR nonetheless existing is the proof that the
|
|
60
|
+
server, not the box, did the push. Also exercised: box source-fetch against a PRIVATE repo,
|
|
61
|
+
a non-box-scoped session, bundle upload to `POST /tasks/:id/publish-branch`, and the
|
|
62
|
+
confirmed->shipped flip.
|
|
63
|
+
|
|
52
64
|
- **Residual:** the server verifies the bundle tip == the claimed sha and that the caller holds the claim, but does not cheaply prove every commit in the bundle was authored under the claim — branch protection + required checks on `main` (which the credential cannot bypass) are the real gate, exactly as for any PR.
|
|
53
65
|
- **Operator action — DONE (blocker 31, resolved 2026-06-13):** the GitHub App was created and `GITHUB_APP_ID` + `GITHUB_APP_INSTALLATION_ID` + `GITHUB_APP_PRIVATE_KEY` set on the droplet (task 1043); `GITHUB_PUSH_TOKEN` then removed. To rotate the key: generate a new private key in the App's settings, replace `GITHUB_APP_PRIVATE_KEY` (single-line, literal `\n`) in `/etc/example/web-source.env`, restart `example`. To roll back to the PAT: restore `web-source.env.bak-task1043` and set a fresh `GITHUB_PUSH_TOKEN` (with the App vars absent, `resolveToken()` falls back to the PAT).
|
|
@@ -51,8 +51,18 @@ best-effort revokes the key by title. Pushes keep preferring the owner-token HTT
|
|
|
51
51
|
- The flip-to-private refusal on the manage page (task 1003045) stays until existing
|
|
52
52
|
already-provisioned instances get the same wiring on flip — a follow-up task, since their
|
|
53
53
|
origin still rides the shared alias.
|
|
54
|
-
- Builder **dev boxes** of a private-repo project
|
|
55
|
-
|
|
54
|
+
- Builder **dev boxes** of a private-repo project were parked here as out of scope.
|
|
55
|
+
**Answered on hardware 2026-08-25 (task 1003247): a box CAN read the private repo, and the
|
|
56
|
+
auth design needed no change.** The GDS-backed credential helper (`otb-git-credential`,
|
|
57
|
+
task 1002907) fetches a per-request, per-LIVE-rank credential from `/box/source-access`, so
|
|
58
|
+
`git ls-remote origin` succeeds against the private repo. ADR 0055's posture holds
|
|
59
|
+
underneath it: that same credential is read-only, so `git push` still returns 403 `Write
|
|
60
|
+
access to repository not granted`. The real gap was not box-side auth at all but a
|
|
61
|
+
config-dir mismatch -- `box-source-fetch.sh` and the helper read the legacy
|
|
62
|
+
`~/.config/otb/` while `/builder-reauth` writes to the branding `configDir`, so after a
|
|
63
|
+
re-auth both presented a dead token and every git op died with the opaque "could not read
|
|
64
|
+
Username". Task 1003252 fixed the four tracked `infra/box-*.sh` scripts; the two
|
|
65
|
+
instance-owned consumers are task 1003253.
|
|
56
66
|
- `bongos upgrade --commit-pin` on a private instance pushes its pin via `origin` — now the
|
|
57
67
|
read-only key, so GitHub refuses it and the pull-deploy reset can revert the bump.
|
|
58
68
|
`upgrade.js` needs the owner-token push path (follow-up).
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.339",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bongos/core",
|
|
9
|
-
"version": "1.19.
|
|
9
|
+
"version": "1.19.339",
|
|
10
10
|
"license": "AGPL-3.0-or-later",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"express": "^4.21.2",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.339",
|
|
4
4
|
"description": "Cloud Bongos — the AI-first build platform core (GDS + platform surfaces + module system), installed as a versioned dependency (ADR 0108).",
|
|
5
5
|
"license": "AGPL-3.0-or-later",
|
|
6
6
|
"main": "src/platform-server.js",
|
package/src/module-api.js
CHANGED
|
@@ -1106,8 +1106,10 @@ const { validateOrRespond, LIMITS, parseId, asyncHandler, corsPublicGet, parsePa
|
|
|
1106
1106
|
// landed since 1.19.336 with no explicit bump. run 32795896926. (task 1002620)
|
|
1107
1107
|
// 1.19.338 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1108
1108
|
// landed since 1.19.337 with no explicit bump. run 32796733697. (task 1002620)
|
|
1109
|
+
// 1.19.339 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1110
|
+
// landed since 1.19.338 with no explicit bump. run 32797325535. (task 1002620)
|
|
1109
1111
|
// ---------------------------------------------------------------------------
|
|
1110
|
-
const CORE_VERSION = '1.19.
|
|
1112
|
+
const CORE_VERSION = '1.19.339'; // CI auto-patch carrier (ADR 0161); see changelog above
|
|
1111
1113
|
|
|
1112
1114
|
// A namespaced logger so a module's log lines are attributable + consistent.
|
|
1113
1115
|
// Usage: const log = api.logger('dev-box'); log.info('mounted');
|