@bongos/core 1.20.78 → 1.20.79
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 +14 -14
- package/docs/module-api-changelog.md +2 -0
- package/modules/provisioning/render-standup.js +2 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +6 -0
- package/scripts/gds/init.js +16 -6
- package/src/module-api.js +1 -1
- package/tests/init.mjs +21 -5
- package/tests/upgrade_migrate.mjs +1 -1
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.20.
|
|
6
|
-
"core_contract": "1.20.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.20.79",
|
|
6
|
+
"core_contract": "1.20.79",
|
|
7
|
+
"source_commit": "64ae8acdc9544a463ce41e8e0ce8dfee875327cd",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-10-01T20:
|
|
9
|
+
"built_at": "2026-10-01T20:53:47.318Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 575,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
19
|
"file_count": 3414,
|
|
20
|
-
"tree_sha256": "
|
|
20
|
+
"tree_sha256": "5941d8223207a2d128e436b272afafd9d42babc2a4e3a6f53703030f345c2524",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/ask-for-help/SKILL.md",
|
|
@@ -2812,7 +2812,7 @@
|
|
|
2812
2812
|
{
|
|
2813
2813
|
"path": "docs/module-api-changelog.md",
|
|
2814
2814
|
"mode": "0000644",
|
|
2815
|
-
"sha256": "
|
|
2815
|
+
"sha256": "00fccfe8cd2be193718d7afb974532b1894c9a7e84d253efbc4d701bdeb77fd8"
|
|
2816
2816
|
},
|
|
2817
2817
|
{
|
|
2818
2818
|
"path": "docs/modules-contract.md",
|
|
@@ -8062,7 +8062,7 @@
|
|
|
8062
8062
|
{
|
|
8063
8063
|
"path": "modules/provisioning/render-standup.js",
|
|
8064
8064
|
"mode": "0000644",
|
|
8065
|
-
"sha256": "
|
|
8065
|
+
"sha256": "51c00d712c515978cdffcde9ae2c6a170c96be931937a10d557b56de553baf67"
|
|
8066
8066
|
},
|
|
8067
8067
|
{
|
|
8068
8068
|
"path": "modules/provisioning/repo-private.js",
|
|
@@ -9492,12 +9492,12 @@
|
|
|
9492
9492
|
{
|
|
9493
9493
|
"path": "package-lock.json",
|
|
9494
9494
|
"mode": "0000644",
|
|
9495
|
-
"sha256": "
|
|
9495
|
+
"sha256": "a4642f9f20444bff0403d128e168c46d6b4f324e2ac1f4c96d7bedfd46364993"
|
|
9496
9496
|
},
|
|
9497
9497
|
{
|
|
9498
9498
|
"path": "package.json",
|
|
9499
9499
|
"mode": "0000644",
|
|
9500
|
-
"sha256": "
|
|
9500
|
+
"sha256": "777adb699d644169fbc9f584cc905c72f2194e128bbbd2b9964e3cc5f0b85c8a"
|
|
9501
9501
|
},
|
|
9502
9502
|
{
|
|
9503
9503
|
"path": "public-docs/index.html",
|
|
@@ -9517,7 +9517,7 @@
|
|
|
9517
9517
|
{
|
|
9518
9518
|
"path": "release-notes.json",
|
|
9519
9519
|
"mode": "0000644",
|
|
9520
|
-
"sha256": "
|
|
9520
|
+
"sha256": "3e51a0173ecdada1d9b65f38767b58a304e2a6b8db380d19cd385161a04802f5"
|
|
9521
9521
|
},
|
|
9522
9522
|
{
|
|
9523
9523
|
"path": "scripts/bongos-mcp.js",
|
|
@@ -10242,7 +10242,7 @@
|
|
|
10242
10242
|
{
|
|
10243
10243
|
"path": "scripts/gds/init.js",
|
|
10244
10244
|
"mode": "0000644",
|
|
10245
|
-
"sha256": "
|
|
10245
|
+
"sha256": "f9e77db85aa1ec20f55f0e96cade7c2977863d21a4c148407deb965b436bfdc3"
|
|
10246
10246
|
},
|
|
10247
10247
|
{
|
|
10248
10248
|
"path": "scripts/gds/install-git-hooks.js",
|
|
@@ -11712,7 +11712,7 @@
|
|
|
11712
11712
|
{
|
|
11713
11713
|
"path": "src/module-api.js",
|
|
11714
11714
|
"mode": "0000644",
|
|
11715
|
-
"sha256": "
|
|
11715
|
+
"sha256": "63daeed9c2794aa30bb815c8e2af623e13808ecbe4d58c3d02b9d8fb1aeeae79"
|
|
11716
11716
|
},
|
|
11717
11717
|
{
|
|
11718
11718
|
"path": "src/module-loader/catalog.js",
|
|
@@ -14367,7 +14367,7 @@
|
|
|
14367
14367
|
{
|
|
14368
14368
|
"path": "tests/init.mjs",
|
|
14369
14369
|
"mode": "0000644",
|
|
14370
|
-
"sha256": "
|
|
14370
|
+
"sha256": "6549706010a545b9d387d8e3f4f4a157a5088c4292dbc288e3e7fc27f5335ead"
|
|
14371
14371
|
},
|
|
14372
14372
|
{
|
|
14373
14373
|
"path": "tests/instance_config.mjs",
|
|
@@ -16892,7 +16892,7 @@
|
|
|
16892
16892
|
{
|
|
16893
16893
|
"path": "tests/upgrade_migrate.mjs",
|
|
16894
16894
|
"mode": "0000644",
|
|
16895
|
-
"sha256": "
|
|
16895
|
+
"sha256": "47048521bb37c9debc02ef5c366bfe863450eb944023cce60ba182b9640563ee"
|
|
16896
16896
|
},
|
|
16897
16897
|
{
|
|
16898
16898
|
"path": "tests/upgrade_outcome.mjs",
|
|
@@ -2813,5 +2813,7 @@ is load-bearing: the script throws rather than guess if it is missing, and
|
|
|
2813
2813
|
landed since 1.20.76 with no explicit bump. run 36909904812. (task 1002620)
|
|
2814
2814
|
1.20.78 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
2815
2815
|
landed since 1.20.77 with no explicit bump. run 36923602676. (task 1002620)
|
|
2816
|
+
1.20.79 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
2817
|
+
landed since 1.20.78 with no explicit bump. run 36924822923. (task 1002620)
|
|
2816
2818
|
---------------------------------------------------------------------------
|
|
2817
2819
|
```
|
|
@@ -57,7 +57,8 @@ const SERVICE_RE = /^srv-[a-z0-9]{8,64}$/;
|
|
|
57
57
|
// The hall is never the app (ADR 0345 D1). A command that runs the Bongos core itself puts
|
|
58
58
|
// a second, database-less copy of the project's hall on Render, where it never answers and
|
|
59
59
|
// the deploy times out — measured live on project 43 (task 1004483). It cannot see through
|
|
60
|
-
//
|
|
60
|
+
// `npm start`, so the scaffold no longer puts the hall there: it is `npm run hall`, and
|
|
61
|
+
// `npm start` is left for the app (task 1004484, scripts/gds/init.js).
|
|
61
62
|
const HALL_COMMAND_RE = /platform-server\.js|node_modules[\\/]@bongos[\\/]core/i;
|
|
62
63
|
const HALL_REFUSAL = 'That command starts the project’s Builders’ hall, which we already host — not your app. Give the command that starts your app.';
|
|
63
64
|
function badRequest(body) {
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.20.
|
|
3
|
+
"version": "1.20.79",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bongos/core",
|
|
9
|
-
"version": "1.20.
|
|
9
|
+
"version": "1.20.79",
|
|
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.20.
|
|
3
|
+
"version": "1.20.79",
|
|
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/release-notes.json
CHANGED
|
@@ -8609,5 +8609,11 @@
|
|
|
8609
8609
|
"id": "1004297",
|
|
8610
8610
|
"text": "Each project can now be set to take every new version (Bongos) or only released ones (everyone else), a version that fails is no longer retried in a loop, and the deploy page shows each upgrade, any rollback, and when the auto"
|
|
8611
8611
|
}
|
|
8612
|
+
],
|
|
8613
|
+
"1.20.79": [
|
|
8614
|
+
{
|
|
8615
|
+
"id": "1004484",
|
|
8616
|
+
"text": "New projects no longer have their 'start' command pointing at the Bongos hall, so when an owner later connects Render with the usual 'npm start', it runs their app instead of a broken second copy of the hall."
|
|
8617
|
+
}
|
|
8612
8618
|
]
|
|
8613
8619
|
}
|
package/scripts/gds/init.js
CHANGED
|
@@ -126,20 +126,24 @@ function coreVersionSafe() {
|
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
// The npm scripts a STANDALONE greenfield instance runs. They MIRROR how the control
|
|
129
|
-
// plane runs a standalone instance (scripts/gds/provision.js): `
|
|
129
|
+
// plane runs a standalone instance (scripts/gds/provision.js): `hall` = the systemd
|
|
130
130
|
// ExecStart (`node <core>/src/platform-server.js`), `migrate` = standaloneMigrateCmd
|
|
131
|
-
// (`bash <core>/scripts/migrate.sh`). Keeping them identical means `npm
|
|
131
|
+
// (`bash <core>/scripts/migrate.sh`). Keeping them identical means `npm run hall` /
|
|
132
132
|
// `npm run migrate` on the instance behave like production, and `bongos upgrade`'s
|
|
133
133
|
// `npm run migrate` step resolves to the core's migrate.sh (ADR 0108).
|
|
134
|
+
// The hall is deliberately NOT `start` (task 1004484): `npm start` belongs to the
|
|
135
|
+
// project's own app, and a host like Render reads it as "how this app starts" — given the
|
|
136
|
+
// hall there, the deploy has no database and times out. Nothing runs an instance's
|
|
137
|
+
// `npm start`: the box unit and `bongos dev` both start platform-server.js directly.
|
|
134
138
|
const INSTANCE_CORE_PKG_DIR = 'node_modules/@bongos/core';
|
|
135
|
-
const
|
|
139
|
+
const INSTANCE_HALL_SCRIPT = `node ${INSTANCE_CORE_PKG_DIR}/src/platform-server.js`;
|
|
136
140
|
const INSTANCE_MIGRATE_SCRIPT = `bash ${INSTANCE_CORE_PKG_DIR}/scripts/migrate.sh`;
|
|
137
141
|
|
|
138
142
|
// PURE (exported for tests) — build/augment the greenfield instance package.json so a
|
|
139
143
|
// fresh instance is `npm ci`-installable and runnable (ADR 0108 greenfield gap 1/4,
|
|
140
144
|
// task 2053): the @bongos/core dependency (the `file:` tarball pin when a tarball is
|
|
141
145
|
// vendored, else the declared caret range — the CARET RESOLVES NOWHERE on npm, which is
|
|
142
|
-
// exactly why the vendored path pins `file:`) plus the
|
|
146
|
+
// exactly why the vendored path pins `file:`) plus the hall/migrate npm scripts a
|
|
143
147
|
// standalone instance runs. Preserves any pre-existing fields + scripts (fills only what
|
|
144
148
|
// is missing); greenfield OWNS the core dep, so it is always (re)set to `coreDep`. Never
|
|
145
149
|
// spawns npm — generating the lockfile is a separate imperative step in main().
|
|
@@ -155,7 +159,13 @@ function buildInstancePackageJson(existing, { name = 'cloudbongos-instance', cor
|
|
|
155
159
|
if (!pkg.name) pkg.name = name;
|
|
156
160
|
if (pkg.private === undefined) pkg.private = true;
|
|
157
161
|
pkg.scripts = { ...(isObj(pkg.scripts) ? pkg.scripts : {}) };
|
|
158
|
-
|
|
162
|
+
// A scaffold from before task 1004484 wrote the hall as `start`; move exactly that
|
|
163
|
+
// command (never an owner's own start) to `hall`, unless they already have a `hall`.
|
|
164
|
+
if (pkg.scripts.start === INSTANCE_HALL_SCRIPT && !pkg.scripts.hall) {
|
|
165
|
+
pkg.scripts.hall = pkg.scripts.start;
|
|
166
|
+
delete pkg.scripts.start;
|
|
167
|
+
}
|
|
168
|
+
if (!pkg.scripts.hall) pkg.scripts.hall = INSTANCE_HALL_SCRIPT;
|
|
159
169
|
if (!pkg.scripts.migrate) pkg.scripts.migrate = INSTANCE_MIGRATE_SCRIPT;
|
|
160
170
|
pkg.dependencies = {
|
|
161
171
|
...(isObj(moduleDeps) ? moduleDeps : {}),
|
|
@@ -1136,7 +1146,7 @@ module.exports = {
|
|
|
1136
1146
|
buildReadmeSection, appendReadmeSection, layerReadme, README_MARKER,
|
|
1137
1147
|
KNOWN_MODULES, HOSTING_SHAPES, CORE_PKG,
|
|
1138
1148
|
// greenfield installability (ADR 0108 gap 1/4, task 2053)
|
|
1139
|
-
buildInstancePackageJson, coreVersionSafe,
|
|
1149
|
+
buildInstancePackageJson, coreVersionSafe, INSTANCE_HALL_SCRIPT, INSTANCE_MIGRATE_SCRIPT,
|
|
1140
1150
|
// enabled-module dep composition (ADR 0138 / task 2160)
|
|
1141
1151
|
moduleDeclaredDeps, enabledModuleDeps,
|
|
1142
1152
|
};
|
package/src/module-api.js
CHANGED
|
@@ -75,7 +75,7 @@ const { responsibilityFor, ROLE_RESPONSIBILITIES } = require('./role-responsibil
|
|
|
75
75
|
// MAJOR (see allowBoxScope below): passes the request through untouched.
|
|
76
76
|
function deprecatedNoopMiddleware(_req, _res, next) { next(); }
|
|
77
77
|
|
|
78
|
-
const CORE_VERSION = '1.20.
|
|
78
|
+
const CORE_VERSION = '1.20.79'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
|
|
79
79
|
|
|
80
80
|
// A namespaced logger so a module's log lines are attributable + consistent.
|
|
81
81
|
// Usage: const log = api.logger('discord'); log.info('mounted');
|
package/tests/init.mjs
CHANGED
|
@@ -389,15 +389,18 @@ test('layerPackageJson: no package.json → creates one; second run → present,
|
|
|
389
389
|
// ---- greenfield installability: package.json minting + writeConfigs (ADR 0108 gap 1/4, task 2053) ----
|
|
390
390
|
// PURE — no fs, no npm. The imperative vendor + `npm install` lockfile step lives in main()
|
|
391
391
|
// and is deliberately NOT unit-tested (keeps real npm out of the suite, per the task).
|
|
392
|
-
test('buildInstancePackageJson: no package.json → mints a private one with the caret core dep +
|
|
392
|
+
test('buildInstancePackageJson: no package.json → mints a private one with the caret core dep + hall/migrate scripts', () => {
|
|
393
393
|
const pkg = init.buildInstancePackageJson(null, { name: 'demo' });
|
|
394
394
|
assert.equal(pkg.name, 'demo');
|
|
395
395
|
assert.equal(pkg.private, true);
|
|
396
396
|
assert.equal(pkg.dependencies[init.CORE_PKG], init.coreDepRange()); // caret when no tarball vendored
|
|
397
|
-
assert.equal(pkg.scripts.
|
|
397
|
+
assert.equal(pkg.scripts.hall, init.INSTANCE_HALL_SCRIPT);
|
|
398
398
|
assert.equal(pkg.scripts.migrate, init.INSTANCE_MIGRATE_SCRIPT);
|
|
399
|
-
//
|
|
400
|
-
|
|
399
|
+
// `npm start` is left for the project's OWN app (task 1004484): a host like Render reads it
|
|
400
|
+
// as "how this app starts", and the hall there has no database and times out.
|
|
401
|
+
assert.equal(pkg.scripts.start, undefined);
|
|
402
|
+
// the hall/migrate scripts must target the installed core package so `npm ci` output is runnable
|
|
403
|
+
assert.match(pkg.scripts.hall, /node_modules\/@bongos\/core\/src\/platform-server\.js$/);
|
|
401
404
|
assert.match(pkg.scripts.migrate, /node_modules\/@bongos\/core\/scripts\/migrate\.sh$/);
|
|
402
405
|
});
|
|
403
406
|
|
|
@@ -419,6 +422,18 @@ test('buildInstancePackageJson: preserves existing fields + never clobbers a cus
|
|
|
419
422
|
assert.equal(pkg.dependencies[init.CORE_PKG], 'file:vendor/bongos-core-1.17.0.tgz'); // dep (re)pinned
|
|
420
423
|
});
|
|
421
424
|
|
|
425
|
+
test('buildInstancePackageJson: a start that is exactly the old scaffolded hall command moves to "hall" (task 1004484)', () => {
|
|
426
|
+
const old = 'node node_modules/@bongos/core/src/platform-server.js';
|
|
427
|
+
const pkg = init.buildInstancePackageJson({ scripts: { start: old, test: 'node --test' } }, { name: 'demo' });
|
|
428
|
+
assert.equal(pkg.scripts.start, undefined, 'npm start no longer runs the hall');
|
|
429
|
+
assert.equal(pkg.scripts.hall, old);
|
|
430
|
+
assert.equal(pkg.scripts.test, 'node --test');
|
|
431
|
+
// an owner's own "hall" script is never overwritten by the move
|
|
432
|
+
const kept = init.buildInstancePackageJson({ scripts: { start: old, hall: 'node my-hall.js' } }, { name: 'demo' });
|
|
433
|
+
assert.equal(kept.scripts.hall, 'node my-hall.js');
|
|
434
|
+
assert.equal(kept.scripts.start, old, 'with "hall" taken, start is left as the owner has it');
|
|
435
|
+
});
|
|
436
|
+
|
|
422
437
|
// --- enabled-module dep composition (ADR 0138 / task 2160) --------------------
|
|
423
438
|
|
|
424
439
|
test('enabledModuleDeps: merges only the ENABLED modules’ declared deps', () => {
|
|
@@ -475,7 +490,8 @@ test('writeConfigs (greenfield): mints package.json with the caret core dep + st
|
|
|
475
490
|
assert.equal(pkg.name, 'cloud-bongos'); // slugified productName
|
|
476
491
|
assert.equal(pkg.private, true);
|
|
477
492
|
assert.equal(pkg.dependencies[init.CORE_PKG], init.coreDepRange());
|
|
478
|
-
assert.equal(pkg.scripts.
|
|
493
|
+
assert.equal(pkg.scripts.hall, init.INSTANCE_HALL_SCRIPT);
|
|
494
|
+
assert.equal(pkg.scripts.start, undefined);
|
|
479
495
|
assert.equal(pkg.scripts.migrate, init.INSTANCE_MIGRATE_SCRIPT);
|
|
480
496
|
} finally {
|
|
481
497
|
rmSync(dir, { recursive: true, force: true });
|
|
@@ -47,7 +47,7 @@ function adoptedProject({ installed = '1.19.312' } = {}) {
|
|
|
47
47
|
return dir;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
function scaffoldedProject(scripts = { migrate: init.INSTANCE_MIGRATE_SCRIPT,
|
|
50
|
+
function scaffoldedProject(scripts = { migrate: init.INSTANCE_MIGRATE_SCRIPT, hall: init.INSTANCE_HALL_SCRIPT }) {
|
|
51
51
|
const dir = fixture('upgrade-migrate-scaffold-');
|
|
52
52
|
writeFileSync(path.join(dir, 'package.json'), `${JSON.stringify({ name: 'charter', private: true, scripts, dependencies: { '@bongos/core': '1.19.871' } }, null, 2)}\n`);
|
|
53
53
|
return dir;
|