@bongos/core 1.24.21 → 1.24.22

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/bongos/package-core.js",
5
- "core_version": "1.24.21",
6
- "core_contract": "1.24.21",
7
- "source_commit": "7b027cf222baf3f5fdd12b802afdc14ad7c5747d",
5
+ "core_version": "1.24.22",
6
+ "core_contract": "1.24.22",
7
+ "source_commit": "25ff48c6d442a8dce64b481eaf3f4e7a8b9e02fa",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-11-02T00:01:42.101Z",
9
+ "built_at": "2026-11-02T00:23:18.248Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 632,
@@ -17,7 +17,7 @@
17
17
  "gate": "passed"
18
18
  },
19
19
  "file_count": 4468,
20
- "tree_sha256": "b017a6fd8efa5ec4e886e0f2877b6d50acec7e1febd611464b0f6c7c2975f8b5",
20
+ "tree_sha256": "5e6e3d870be65a768c0574be5c3d7a16b2be8850748f9f622d66da5c4f3f5ef2",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/ask-for-help/SKILL.md",
@@ -352,7 +352,7 @@
352
352
  {
353
353
  "path": "clients/bongos-client/index.d.ts",
354
354
  "mode": "0000644",
355
- "sha256": "0e60eb71a4c912b79c2cac3bc338403883667da5c6f871ed811f21dec58d33f9"
355
+ "sha256": "3c301345609619337a39f6385a735722d54552a8e2c4496bc1ab923cd9a65ca5"
356
356
  },
357
357
  {
358
358
  "path": "clients/bongos-client/index.mjs",
@@ -2457,12 +2457,12 @@
2457
2457
  {
2458
2458
  "path": "docs/api-reference.md",
2459
2459
  "mode": "0000644",
2460
- "sha256": "57e77a6ffdbe2d558c088fce69e154b3b595b4d6d10b5053ad4ba0043cb00c46"
2460
+ "sha256": "391006a66d14634cfdc2333d95a9e4aab90376f679b6d4e5b9ff58cd33cec51f"
2461
2461
  },
2462
2462
  {
2463
2463
  "path": "docs/api/openapi.json",
2464
2464
  "mode": "0000644",
2465
- "sha256": "d2e12182597058030c086d3283f652f8d8e2b2e62900c9babed2eba71a97996a"
2465
+ "sha256": "a143477b8f8b9bb1facc61bd0c79f638981c498da2cd04b58997a2cc112df1d8"
2466
2466
  },
2467
2467
  {
2468
2468
  "path": "docs/architecture.md",
@@ -3002,7 +3002,7 @@
3002
3002
  {
3003
3003
  "path": "docs/module-api-changelog.md",
3004
3004
  "mode": "0000644",
3005
- "sha256": "f7f4cdac07096ec9cfe4f08041687ef307af195bc58edc60ae7a248d922e9bbb"
3005
+ "sha256": "f2c013805088a650ca5c4ea40b1c62033024d680fcdbf3cbce6bce525506af3d"
3006
3006
  },
3007
3007
  {
3008
3008
  "path": "docs/modules-contract.md",
@@ -9817,7 +9817,7 @@
9817
9817
  {
9818
9818
  "path": "modules/provisioning/routes/provisioning.js",
9819
9819
  "mode": "0000644",
9820
- "sha256": "e59a56ad8551052b8d9087f9a1c8015f8dcd0e50ff94a47070400f08141d6b80"
9820
+ "sha256": "c72d11bef0a5fd0f8bbf070dbc28152caac1b1babbdfc9de101172c4fc99d33d"
9821
9821
  },
9822
9822
  {
9823
9823
  "path": "modules/provisioning/routes/render-standup.js",
@@ -11697,12 +11697,12 @@
11697
11697
  {
11698
11698
  "path": "package-lock.json",
11699
11699
  "mode": "0000644",
11700
- "sha256": "2fd9cac0d64f6c35f9d9e86fc9fea8ebcb261e49247cc1ef8d1efa5a69b85433"
11700
+ "sha256": "f8d14423c45cc4a1765b3fb41c65c0a73634f5de15da0ab67bae8be2baab8875"
11701
11701
  },
11702
11702
  {
11703
11703
  "path": "package.json",
11704
11704
  "mode": "0000644",
11705
- "sha256": "c622f574c6c57132b0bf851323d45f64c35dd5672466216dabc5268b5eaf15d6"
11705
+ "sha256": "074860e850922d563941d386715a13c8426c5e7f3378fe433b768a616a6c6f75"
11706
11706
  },
11707
11707
  {
11708
11708
  "path": "public-docs/index.html",
@@ -11722,7 +11722,7 @@
11722
11722
  {
11723
11723
  "path": "release-notes.json",
11724
11724
  "mode": "0000644",
11725
- "sha256": "40836a48667cc62b5d077e56aee4b721cf462a93ec57ea6a40988213cc283c7c"
11725
+ "sha256": "8f5fa868a83aa8030c953ac337abb41b7e99ca41fc26e76f0d657f1732eecad8"
11726
11726
  },
11727
11727
  {
11728
11728
  "path": "scripts/bongos/CLAUDE.md",
@@ -15592,7 +15592,7 @@
15592
15592
  {
15593
15593
  "path": "src/module-api.js",
15594
15594
  "mode": "0000644",
15595
- "sha256": "c5adfcce9c4c9e69692d36fc7af8035af773ec75c3c774532087a0acc8600b3b"
15595
+ "sha256": "fa65cb9fab046030b7ccaebb950e2a3489aefb2ba8a7797454b2684356481f33"
15596
15596
  },
15597
15597
  {
15598
15598
  "path": "src/module-loader/catalog.js",
@@ -22267,7 +22267,7 @@
22267
22267
  {
22268
22268
  "path": "tests/wizard_demo.mjs",
22269
22269
  "mode": "0000644",
22270
- "sha256": "cde0f1f967f8f6c8fa270fb08a77207764dce9cdedca9de6a3de1f61fa32a80a"
22270
+ "sha256": "d65fcde85566b1cd0d9ded2c267273d6b8717595348c92953803f54485e04c49"
22271
22271
  },
22272
22272
  {
22273
22273
  "path": "tests/wizard_draft_resume.mjs",
@@ -577,7 +577,7 @@ export interface PostProvisioningInstancesIdRenderResponse { ok: boolean; queued
577
577
  export interface PostProvisioningInstancesIdRepoPrivateResponse { ok: boolean; queued: unknown; action: unknown; status: unknown; message: unknown }
578
578
  export interface PostProvisioningInstancesIdRestartResponse { ok: boolean; queued: unknown; action: unknown; status: unknown; message: unknown }
579
579
  export interface PostProvisioningInstancesIdTeardownResponse { ok: boolean; queued: unknown; action: unknown; status: unknown; superseded: unknown; message: unknown }
580
- export interface PostProvisioningInstancesRequest { slug: string; target_ref?: string; hosting_shape?: string; domain?: string; no_address?: boolean; tier?: string; onboard_mode?: string; type?: string; description?: string; detail?: Record<string, unknown>; modules?: string[]; terms_acknowledged?: boolean; demo?: Record<string, unknown>; ship_mode?: "auto" | "manual" }
580
+ export interface PostProvisioningInstancesRequest { slug: string; target_ref?: string; hosting_shape?: string; domain?: string; no_address?: boolean; tier?: string; onboard_mode?: string; type?: string; description?: string; detail?: Record<string, unknown>; modules?: string[]; terms_acknowledged?: boolean; demo?: Record<string, unknown>; ship_mode?: "auto" | "manual"; genesis?: boolean }
581
581
  export interface PostProvisioningPhysicsCheckRequest { description?: string; detail?: Record<string, unknown> }
582
582
  export interface PostProvisioningPhysicsCheckResponse { stop: boolean; message: unknown; soft_limits: unknown }
583
583
  export interface PostProvisioningRenderLookupRequest { key: string; owner_id?: string }
@@ -39404,6 +39404,9 @@
39404
39404
  "auto",
39405
39405
  "manual"
39406
39406
  ]
39407
+ },
39408
+ "genesis": {
39409
+ "type": "boolean"
39407
39410
  }
39408
39411
  },
39409
39412
  "required": [
@@ -789,7 +789,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
789
789
  | GET | `/api/bongos/provisioning/github-app/status` | `public` | — | GET /provisioning/github-app/status?state=<> — the PUBLIC progress read (task 1004548; the checklist since task 1004649). |
790
790
  | GET | `/api/bongos/provisioning/health` | `public` | — | GET /provisioning/health — liveness + the core version this module mounted against. |
791
791
  | GET | `/api/bongos/provisioning/instances` | `any-builder` | — | GET /provisioning/instances — the caller's own instances + each open intent. |
792
- | POST | `/api/bongos/provisioning/instances` | `any-builder` | `slug`, `target_ref`, `hosting_shape`, `domain`, `no_address`, `tier`, `onboard_mode`, `type`, `description`, `detail`, `modules`, `terms_acknowledged`, `demo`, `ship_mode` | POST /provisioning/instances — request a new instance. |
792
+ | POST | `/api/bongos/provisioning/instances` | `any-builder` | `slug`, `target_ref`, `hosting_shape`, `domain`, `no_address`, `tier`, `onboard_mode`, `type`, `description`, `detail`, `modules`, `terms_acknowledged`, `demo`, `ship_mode`, `genesis` | POST /provisioning/instances — request a new instance. |
793
793
  | GET | `/api/bongos/provisioning/instances/:id` | `any-builder` | — | GET /provisioning/instances/:id — read one instance (the manage page's read). |
794
794
  | GET | `/api/bongos/provisioning/instances/:id/core-upgrade` | `archon` | — | GET the same path — step ONE of the two-step (ADR 0293 D4): what a move would do. |
795
795
  | POST | `/api/bongos/provisioning/instances/:id/core-upgrade` | `archon` | — | POST /provisioning/instances/:id/core-upgrade — move the core pin. |
@@ -3298,5 +3298,7 @@ is load-bearing: the script throws rather than guess if it is missing, and
3298
3298
  landed since 1.24.19 with no explicit bump. run 41141610027. (task 1002620)
3299
3299
  1.24.21 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3300
3300
  landed since 1.24.20 with no explicit bump. run 41364831803. (task 1002620)
3301
+ 1.24.22 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3302
+ landed since 1.24.21 with no explicit bump. run 41366737579. (task 1002620)
3301
3303
  ---------------------------------------------------------------------------
3302
3304
  ```
@@ -357,7 +357,7 @@ module.exports = function provisioningRoutes() {
357
357
  // exactly the set the panel preselected. An explicit [] is the different
358
358
  // answer "none of them". maxItems is a sanity ceiling well above a catalog
359
359
  // that is three modules wide today.
360
- modules: { type: 'array', itemsType: 'string', maxItems: 50 }, terms_acknowledged: { type: 'boolean' }, demo: { type: 'object' }, ship_mode: { type: 'string', enum: ['auto', 'manual'] }, // the wizard's terms tick (task 1004417, ../terms-ack.js); the demo route's { people, hours_each } (task 1004420, ../demo.js)
360
+ modules: { type: 'array', itemsType: 'string', maxItems: 50 }, terms_acknowledged: { type: 'boolean' }, demo: { type: 'object' }, ship_mode: { type: 'string', enum: ['auto', 'manual'] }, genesis: { type: 'boolean' }, // the wizard's terms tick (task 1004417, ../terms-ack.js); the demo route's { people, hours_each } (task 1004420, ../demo.js)
361
361
  })) return;
362
362
  const body = req.body || {};
363
363
  const detailFault = badProjectDetail(body.detail);
@@ -472,7 +472,9 @@ module.exports = function provisioningRoutes() {
472
472
  // Born into genesis (task 1004506, ../birth.js): only the row this request MADE, and before the
473
473
  // provision intent exists, so the runner's web.env already carries the marker and the demo's box.
474
474
  // Best-effort: a project that misses its marker opens as an ordinary hall; the create still stands.
475
- if (created) await birth.stampBirth(pool, instance.id).catch((err) => log.error('[provisioning] birth marker not stamped', err));
475
+ // Genesis is OFF by default (owner, 2026-11-01): a new project opens as the full hall. Only a demo (its
476
+ // time box lives on the birth marker) or an explicit `genesis: true` (the test toggle) is born into it.
477
+ if (created && (demoAsk.demo || body.genesis === true)) await birth.stampBirth(pool, instance.id).catch((err) => log.error('[provisioning] birth marker not stamped', err));
476
478
  // The wizard's ship mode (task 1004629) rides beside it; a miss means the project asks at its first ship.
477
479
  if (created) await birth.stampShipMode(pool, instance.id, body.ship_mode).catch((err) => log.error('[provisioning] ship mode not stamped', err));
478
480
  const demoRow = created && demoAsk.demo ? await demo.startDemoProject(pool, provisioning, instance.id, demoAsk.demo) : null;
package/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@bongos/core",
3
- "version": "1.24.21",
3
+ "version": "1.24.22",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bongos/core",
9
- "version": "1.24.21",
9
+ "version": "1.24.22",
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.24.21",
3
+ "version": "1.24.22",
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",
@@ -11015,5 +11015,11 @@
11015
11015
  "id": "1005013",
11016
11016
  "text": "Every card in the city now says what it is. Under each question sits a short plain explanation: what kind of thing it is, which goal, task, person or module it belongs to, and what answering does. A Review card used to show a"
11017
11017
  }
11018
+ ],
11019
+ "1.24.22": [
11020
+ {
11021
+ "id": "1005034",
11022
+ "text": "New projects now open as the full hall instead of starting in the guided setup (genesis and founding mode). The guided setup is paused for now and stays available for demo projects and for test projects that ask for it. Projec"
11023
+ }
11018
11024
  ]
11019
11025
  }
package/src/module-api.js CHANGED
@@ -81,7 +81,7 @@ const { sleep } = require('./sleep');
81
81
  // MAJOR (see allowBoxScope below): passes the request through untouched.
82
82
  function deprecatedNoopMiddleware(_req, _res, next) { next(); }
83
83
 
84
- const CORE_VERSION = '1.24.21'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
84
+ const CORE_VERSION = '1.24.22'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
85
85
 
86
86
  // A namespaced logger so a module's log lines are attributable + consistent.
87
87
  // Usage: const log = api.logger('discord'); log.info('mounted');
@@ -171,7 +171,10 @@ test('a new project is stamped born, once, before its provision intent; an exist
171
171
  assert.deepEqual(order, ['birth:41', 'demo:41', 'enqueue:provision'], 'the marker and the demo box are on the row before the runner can read it');
172
172
  order.length = 0;
173
173
  assert.equal((await post('/provisioning/instances', { slug: 'born-real', hosting_shape: 'byo-host' })).status, 201);
174
- assert.deepEqual(order, ['birth:41', 'enqueue:provision'], 'a real project is born too, with no demo box');
174
+ assert.deepEqual(order, ['enqueue:provision'], 'a real project opens as the full hall: genesis is off by default (owner, 2026-11-01)');
175
+ order.length = 0;
176
+ assert.equal((await post('/provisioning/instances', { slug: 'born-test', hosting_shape: 'byo-host', genesis: true })).status, 201);
177
+ assert.deepEqual(order, ['birth:41', 'enqueue:provision'], 'the genesis toggle still births a test project, with no demo box');
175
178
  order.length = 0;
176
179
  const again = await post('/provisioning/instances', { slug: 'old-one', hosting_shape: 'byo-host' });
177
180
  assert.ok(again.status < 300, JSON.stringify(again.body));
@@ -179,7 +182,7 @@ test('a new project is stamped born, once, before its provision intent; an exist
179
182
  const keep = birth.stampBirth;
180
183
  birth.stampBirth = async () => { throw new Error('db hiccup'); };
181
184
  try {
182
- assert.equal((await post('/provisioning/instances', { slug: 'unlucky', hosting_shape: 'byo-host' })).status, 201,
185
+ assert.equal((await post('/provisioning/instances', { slug: 'unlucky', hosting_shape: 'byo-host', genesis: true })).status, 201,
183
186
  'a missed marker costs the project its genesis, never its creation');
184
187
  } finally { birth.stampBirth = keep; }
185
188
  });