@bongos/core 1.19.82 → 1.19.84
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 +57 -22
- package/docs/adr/0055-server-mediated-branch-publish.md +4 -0
- package/docs/design/mocks/component-sheet.html +428 -0
- package/docs/design/mocks/projects-page-mock.html +167 -0
- package/docs/design/projects-surfaces-redesign-direction.md +3 -2
- package/modules/lifecycle/github-push.js +82 -0
- package/modules/provisioning/migrations/provisioning_006_liveness.sql +30 -0
- package/modules/provisioning/module.json +2 -1
- package/modules/provisioning/onboard-plan.js +20 -4
- package/modules/provisioning/pollers/liveness-sweep.js +266 -0
- package/modules/provisioning/provisioning.js +43 -0
- package/modules/provisioning/routes/provisioning.js +6 -2
- package/modules/provisioning/tests/liveness.mjs +420 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/public-landing/assets/cosmos.css +311 -0
- package/public-landing/create.html +253 -125
- package/public-landing/gate/index.html +3 -0
- package/public-landing/gate/space.css +11 -1
- package/public-landing/projects.html +298 -213
- package/scripts/gds/publish-credential-check.js +63 -0
- package/src/module-api.js +5 -1
- package/tests/publish_branch_route.mjs +69 -0
package/.bongos-core.json
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
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.84",
|
|
6
|
+
"core_contract": "1.19.84",
|
|
7
|
+
"source_commit": "39493e5006e0adc42f628e8fcc7a96ff0a10a024",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-08-12T23:
|
|
9
|
+
"built_at": "2026-08-12T23:32:24.005Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 295,
|
|
13
13
|
"agent_docs_stubbed": 21,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 1234,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 1550,
|
|
20
|
+
"tree_sha256": "5b888a43d2616ba06ba176e5611635624d1e8f8d6bf60225393639f236b5fba9",
|
|
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": "6f51c67939eacaf510774894625d0a09e6883e4c8e1d8fdea2cf35f8d9f58ea4"
|
|
711
711
|
},
|
|
712
712
|
{
|
|
713
713
|
"path": "docs/adr/0056-prod-deploy-script-mirror-and-healthcheck-retry.md",
|
|
@@ -1354,6 +1354,16 @@
|
|
|
1354
1354
|
"mode": "0000644",
|
|
1355
1355
|
"sha256": "a86af6a923ed70bb8ea0846266f232f31a5fc9709d286362bcd37104d683342b"
|
|
1356
1356
|
},
|
|
1357
|
+
{
|
|
1358
|
+
"path": "docs/design/mocks/component-sheet.html",
|
|
1359
|
+
"mode": "0000644",
|
|
1360
|
+
"sha256": "c77dbf2152c6109b6ce925e2badf6dfaa74f74c2d0cb7eb76fa1101eec7b3310"
|
|
1361
|
+
},
|
|
1362
|
+
{
|
|
1363
|
+
"path": "docs/design/mocks/projects-page-mock.html",
|
|
1364
|
+
"mode": "0000644",
|
|
1365
|
+
"sha256": "c70f4c19af84280ed69a59e02633b53830035cbe8eb31d1b836fff6d454117b4"
|
|
1366
|
+
},
|
|
1357
1367
|
{
|
|
1358
1368
|
"path": "docs/design/modular-architecture/00-research-report.md",
|
|
1359
1369
|
"mode": "0000644",
|
|
@@ -1387,7 +1397,7 @@
|
|
|
1387
1397
|
{
|
|
1388
1398
|
"path": "docs/design/projects-surfaces-redesign-direction.md",
|
|
1389
1399
|
"mode": "0000644",
|
|
1390
|
-
"sha256": "
|
|
1400
|
+
"sha256": "750f39818862c66964788bb0dbc7dba6725ed6ad861f09536195fb3509342abf"
|
|
1391
1401
|
},
|
|
1392
1402
|
{
|
|
1393
1403
|
"path": "docs/design/vanilla-hall-ui-redesign-scope.md",
|
|
@@ -3412,7 +3422,7 @@
|
|
|
3412
3422
|
{
|
|
3413
3423
|
"path": "modules/lifecycle/github-push.js",
|
|
3414
3424
|
"mode": "0000644",
|
|
3415
|
-
"sha256": "
|
|
3425
|
+
"sha256": "0534cf4522f5a644301946abf6a703852375fe269401902dfae10d7b9192c3d5"
|
|
3416
3426
|
},
|
|
3417
3427
|
{
|
|
3418
3428
|
"path": "modules/lifecycle/goal-advisory.js",
|
|
@@ -3744,20 +3754,30 @@
|
|
|
3744
3754
|
"mode": "0000644",
|
|
3745
3755
|
"sha256": "230e8a9df147495ee5113c1400c582e9e39e3286baab7e01ce7684e1b1c7860c"
|
|
3746
3756
|
},
|
|
3757
|
+
{
|
|
3758
|
+
"path": "modules/provisioning/migrations/provisioning_006_liveness.sql",
|
|
3759
|
+
"mode": "0000644",
|
|
3760
|
+
"sha256": "49dee0b12551089acc0d7f218f1cba00b1377ba581770146734b2c2f71d3bf7c"
|
|
3761
|
+
},
|
|
3747
3762
|
{
|
|
3748
3763
|
"path": "modules/provisioning/module.json",
|
|
3749
3764
|
"mode": "0000644",
|
|
3750
|
-
"sha256": "
|
|
3765
|
+
"sha256": "5fcab8bc3d4987c93138642abd6d2bcb997691cd54811ca10633c186d27713b5"
|
|
3751
3766
|
},
|
|
3752
3767
|
{
|
|
3753
3768
|
"path": "modules/provisioning/onboard-plan.js",
|
|
3754
3769
|
"mode": "0000644",
|
|
3755
|
-
"sha256": "
|
|
3770
|
+
"sha256": "fe0990abe9087922ca2e376fed805b9138c5b716a684531c173b903c633bdffa"
|
|
3771
|
+
},
|
|
3772
|
+
{
|
|
3773
|
+
"path": "modules/provisioning/pollers/liveness-sweep.js",
|
|
3774
|
+
"mode": "0000644",
|
|
3775
|
+
"sha256": "f47e30b7d4bc1275f65e29a1d9f987c7f20e6baa0a6c441fb4ddbb56f11fe58f"
|
|
3756
3776
|
},
|
|
3757
3777
|
{
|
|
3758
3778
|
"path": "modules/provisioning/provisioning.js",
|
|
3759
3779
|
"mode": "0000644",
|
|
3760
|
-
"sha256": "
|
|
3780
|
+
"sha256": "0363fd616966ec413d3c16bea222622ae0f9cf59a456627946c7cbdb89b7885e"
|
|
3761
3781
|
},
|
|
3762
3782
|
{
|
|
3763
3783
|
"path": "modules/provisioning/rate-limit.js",
|
|
@@ -3767,7 +3787,12 @@
|
|
|
3767
3787
|
{
|
|
3768
3788
|
"path": "modules/provisioning/routes/provisioning.js",
|
|
3769
3789
|
"mode": "0000644",
|
|
3770
|
-
"sha256": "
|
|
3790
|
+
"sha256": "f3242a86d28b91fb089d58b1d6ce1735946bcac15d6fe3438d79e805bf4ba1bc"
|
|
3791
|
+
},
|
|
3792
|
+
{
|
|
3793
|
+
"path": "modules/provisioning/tests/liveness.mjs",
|
|
3794
|
+
"mode": "0000644",
|
|
3795
|
+
"sha256": "84a169641163d82fdaddecabb2e432b21addaf863055f5af046b9f7aa7d9ac23"
|
|
3771
3796
|
},
|
|
3772
3797
|
{
|
|
3773
3798
|
"path": "modules/provisioning/tests/provisioning.mjs",
|
|
@@ -4057,12 +4082,12 @@
|
|
|
4057
4082
|
{
|
|
4058
4083
|
"path": "package-lock.json",
|
|
4059
4084
|
"mode": "0000644",
|
|
4060
|
-
"sha256": "
|
|
4085
|
+
"sha256": "af4e543cec8805d479252218ee7fb173f5daa82683719b544a5809c265426638"
|
|
4061
4086
|
},
|
|
4062
4087
|
{
|
|
4063
4088
|
"path": "package.json",
|
|
4064
4089
|
"mode": "0000644",
|
|
4065
|
-
"sha256": "
|
|
4090
|
+
"sha256": "34009dd8769a83f36d6825e22ac90bae4370416e06e280746c78ba44afcd9624"
|
|
4066
4091
|
},
|
|
4067
4092
|
{
|
|
4068
4093
|
"path": "public-docs/index.html",
|
|
@@ -4299,6 +4324,11 @@
|
|
|
4299
4324
|
"mode": "0000644",
|
|
4300
4325
|
"sha256": "69d603ee6e73411d11716ee567d844aa4b467ab31168c1f7a6c106b397084e10"
|
|
4301
4326
|
},
|
|
4327
|
+
{
|
|
4328
|
+
"path": "public-landing/assets/cosmos.css",
|
|
4329
|
+
"mode": "0000644",
|
|
4330
|
+
"sha256": "571c051fbd678d17a35202785ee42092886b9ffb17222e7d8dc21d97f20bf1e5"
|
|
4331
|
+
},
|
|
4302
4332
|
{
|
|
4303
4333
|
"path": "public-landing/buddha.png",
|
|
4304
4334
|
"mode": "0000644",
|
|
@@ -4307,7 +4337,7 @@
|
|
|
4307
4337
|
{
|
|
4308
4338
|
"path": "public-landing/create.html",
|
|
4309
4339
|
"mode": "0000644",
|
|
4310
|
-
"sha256": "
|
|
4340
|
+
"sha256": "5f8dda878cea216fad95f722c4d17e8d35629e7e6040cf547eafcae1fb86d001"
|
|
4311
4341
|
},
|
|
4312
4342
|
{
|
|
4313
4343
|
"path": "public-landing/gate/README.md",
|
|
@@ -4332,7 +4362,7 @@
|
|
|
4332
4362
|
{
|
|
4333
4363
|
"path": "public-landing/gate/index.html",
|
|
4334
4364
|
"mode": "0000644",
|
|
4335
|
-
"sha256": "
|
|
4365
|
+
"sha256": "7e9e68da92493b0a728de0a4ff4d1a036d888df6b47267e5a5ac628ac55fcd07"
|
|
4336
4366
|
},
|
|
4337
4367
|
{
|
|
4338
4368
|
"path": "public-landing/gate/previews/cloud-bongos.jpg",
|
|
@@ -4347,7 +4377,7 @@
|
|
|
4347
4377
|
{
|
|
4348
4378
|
"path": "public-landing/gate/space.css",
|
|
4349
4379
|
"mode": "0000644",
|
|
4350
|
-
"sha256": "
|
|
4380
|
+
"sha256": "e6ab371ee547125e6d28098ee367a9021bff4d2dde566448ef014c08a6ebed44"
|
|
4351
4381
|
},
|
|
4352
4382
|
{
|
|
4353
4383
|
"path": "public-landing/gate/space.js",
|
|
@@ -4382,7 +4412,7 @@
|
|
|
4382
4412
|
{
|
|
4383
4413
|
"path": "public-landing/projects.html",
|
|
4384
4414
|
"mode": "0000644",
|
|
4385
|
-
"sha256": "
|
|
4415
|
+
"sha256": "1bced570761a901c4dab1247f160ca9230e38762058c000e75c955783c11ed09"
|
|
4386
4416
|
},
|
|
4387
4417
|
{
|
|
4388
4418
|
"path": "public-landing/world/assets/clouds/cloud-island-large.png",
|
|
@@ -5039,6 +5069,11 @@
|
|
|
5039
5069
|
"mode": "0000644",
|
|
5040
5070
|
"sha256": "7ad384495370312a57f7c1f0dab4770888c83afd08b89a8dc27aebae408abfd1"
|
|
5041
5071
|
},
|
|
5072
|
+
{
|
|
5073
|
+
"path": "scripts/gds/publish-credential-check.js",
|
|
5074
|
+
"mode": "0000644",
|
|
5075
|
+
"sha256": "0d700716747617c43e3cf410ef9395cc2f28fff342feef400a8ae45209e893c1"
|
|
5076
|
+
},
|
|
5042
5077
|
{
|
|
5043
5078
|
"path": "scripts/gds/publish-manifest.js",
|
|
5044
5079
|
"mode": "0000644",
|
|
@@ -5687,7 +5722,7 @@
|
|
|
5687
5722
|
{
|
|
5688
5723
|
"path": "src/module-api.js",
|
|
5689
5724
|
"mode": "0000644",
|
|
5690
|
-
"sha256": "
|
|
5725
|
+
"sha256": "c6df7e76c73ea039b407602d8e05f082f1ecb7447fa629fd6a9d8fdaa38f3f51"
|
|
5691
5726
|
},
|
|
5692
5727
|
{
|
|
5693
5728
|
"path": "src/module-loader/loader.js",
|
|
@@ -7232,7 +7267,7 @@
|
|
|
7232
7267
|
{
|
|
7233
7268
|
"path": "tests/publish_branch_route.mjs",
|
|
7234
7269
|
"mode": "0000644",
|
|
7235
|
-
"sha256": "
|
|
7270
|
+
"sha256": "ea46629917c3236b9dfb7133af643a9fecc9a205323c345e16671b5093606fd6"
|
|
7236
7271
|
},
|
|
7237
7272
|
{
|
|
7238
7273
|
"path": "tests/publish_manifest.mjs",
|
|
@@ -38,6 +38,10 @@ A **fine-grained GitHub PAT** scoped to the single repo: `Contents: read/write`
|
|
|
38
38
|
|
|
39
39
|
> **Update (2026-06-13, task 1028 — GitHub App):** the preferred server credential is now a **GitHub App**, not a standing PAT. The server holds only the App private key (`GITHUB_APP_ID` + `GITHUB_APP_INSTALLATION_ID` + `GITHUB_APP_PRIVATE_KEY`) and mints a short-lived (~1h), repo-scoped **installation token** per push window — so there's no standing push secret at rest. `github-push.js resolveToken()` prefers the App and falls back to the PAT (`GITHUB_PUSH_TOKEN`) during cutover; `isConfigured()` is true if **either** is set, so the route's inert-safe `503` is unchanged. The App JWT is RS256-signed with `node:crypto` (no new dependency). Same single-repo scopes (Contents r/w + PR r/w + Actions read) and the same can't-touch-`main` guarantee. **LIVE on prod as of 2026-06-13 (task 1043 cutover, blocker 31 resolved):** the App (App ID 4047551, installation 140135657, `repository_selection=selected`) is installed and its key is set in `/etc/example/web-source.env`; verified that the server mints + uses an installation token (`publish-status` → 200, and a broken key fails loud as `503`/error rather than falling back). The old `GITHUB_PUSH_TOKEN` was **removed** — there is now **no standing push secret at rest**, only the App private key.
|
|
40
40
|
|
|
41
|
+
> **Update (2026-08-12, task 1002733 — verify `Actions: read`, and verify WHICH credential is live):** the 2026-06-13 note above says the PAT was removed and the App is live. **On cloudbongos.com that is no longer true.** Checked on the host this session: <redacted> sets `GITHUB_PUSH_TOKEN` and **none** of `GITHUB_APP_ID` / `GITHUB_APP_INSTALLATION_ID` / `GITHUB_APP_PRIVATE_KEY`. So `appConfigured()` is false and `resolveToken()` falls through to the **PAT** — the App is not the running credential here. Whichever one an instance is actually on, **that** one needs `Actions: read`; don't assume from this ADR's history. If the live credential lacks it, `getPublishStatus`'s deploy probe cannot see workflow runs and reports a merged PR as still deploying **forever**, which stranded task 1002695 at `confirmed` across four reconciler sweeps on 2026-08-12. That failure is invisible from the outside: on a private repo GitHub returns 404 for both "no such workflow" and "not yours", so a single probe cannot tell a legitimately workflow-less instance (the ADR 0108 pin-bump shape) from a blind credential.
|
|
42
|
+
>
|
|
43
|
+
> Check it with `node scripts/gds/publish-credential-check.js` on the host — it lists the repo's workflows as a control call first, so `blind` and `readable_no_workflow` are distinguishable. Task 1002724 makes a blind probe non-fatal (the reconciler falls back to the git-history land proof), but a blind credential means the deploy gate is **not being enforced**, only bypassed.
|
|
44
|
+
|
|
41
45
|
## Consequences
|
|
42
46
|
|
|
43
47
|
- 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.
|