@bongos/core 1.19.951 → 1.19.952

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.951",
6
- "core_contract": "1.19.951",
7
- "source_commit": "52686c08170a959adbd2fff6681162b3b3e248ae",
5
+ "core_version": "1.19.952",
6
+ "core_contract": "1.19.952",
7
+ "source_commit": "76560f7026937d8fcb87e98f1cbb582781a7852a",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-09-22T04:02:59.605Z",
9
+ "built_at": "2026-09-22T04:20:21.435Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 513,
@@ -17,7 +17,7 @@
17
17
  "gate": "passed"
18
18
  },
19
19
  "file_count": 2889,
20
- "tree_sha256": "4c573e93b9c8147a0c7657ef1f9c43b7e3a0e37d6254e65502e205f91a77fdb0",
20
+ "tree_sha256": "b5e1b32c4cf3b07a161044a90c080241342270c91f71fcc551b02670ad0dd720",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/ask-for-help/SKILL.md",
@@ -2687,7 +2687,7 @@
2687
2687
  {
2688
2688
  "path": "docs/module-api-changelog.md",
2689
2689
  "mode": "0000644",
2690
- "sha256": "707238093af0e4b56e36139173b6d46d7ffd33a86c348181a40dc74083821738"
2690
+ "sha256": "961a09f17879832bc7fa1e4607a41bddcc1a2d08e0c9ce55c1e5de6ba5af822e"
2691
2691
  },
2692
2692
  {
2693
2693
  "path": "docs/modules-contract.md",
@@ -8047,12 +8047,12 @@
8047
8047
  {
8048
8048
  "path": "package-lock.json",
8049
8049
  "mode": "0000644",
8050
- "sha256": "14465332b60fa42b702654bd0dd552e8b332b3c17cc969bfe08c3cd8a720320a"
8050
+ "sha256": "09603574afd51f32c16292e9b19bd8bd8c8c57927721d5187229f414aeae1144"
8051
8051
  },
8052
8052
  {
8053
8053
  "path": "package.json",
8054
8054
  "mode": "0000644",
8055
- "sha256": "f7f40ce54ba7eddac00919f6407ee95888c15a87e3fc526450b64a00365cd913"
8055
+ "sha256": "7a932995f95a2d638f25c48b9b1312f29682ac863cf8b35b4ebe58e515cd42f1"
8056
8056
  },
8057
8057
  {
8058
8058
  "path": "public-docs/index.html",
@@ -8127,7 +8127,7 @@
8127
8127
  {
8128
8128
  "path": "scripts/gds/adopt-preflight.js",
8129
8129
  "mode": "0000644",
8130
- "sha256": "1e2c8a70aec49eaa0d95a9cbf37145fa1c851b46e2ec27f72f773d4198356ab9"
8130
+ "sha256": "9b16bbd8ceb60b801f042ad955b22b67c5703ce6dc8505bf333cefffbd3f37ae"
8131
8131
  },
8132
8132
  {
8133
8133
  "path": "scripts/gds/adr-namespace.js",
@@ -8507,7 +8507,7 @@
8507
8507
  {
8508
8508
  "path": "scripts/gds/device-flow-help.js",
8509
8509
  "mode": "0000644",
8510
- "sha256": "802b8875e2aa7e51b1b95800aae461c5d289d7684ef57e6da95bebc458aa0f5e"
8510
+ "sha256": "843c7ec13103f121b5ff0056ba8d547dd20da837b5a04ef37c74bf4069411c38"
8511
8511
  },
8512
8512
  {
8513
8513
  "path": "scripts/gds/diagnose-achievements.js",
@@ -8772,7 +8772,7 @@
8772
8772
  {
8773
8773
  "path": "scripts/gds/init.js",
8774
8774
  "mode": "0000644",
8775
- "sha256": "d18b93dc0ac9136cfae79d98cd3506cb12d94fce30829a39dfb15f880770b93e"
8775
+ "sha256": "529a6af81068f10cd8eeb4738f4d2fd17aec41f40c4dd3195909828e4656fe28"
8776
8776
  },
8777
8777
  {
8778
8778
  "path": "scripts/gds/install-git-hooks.js",
@@ -8847,7 +8847,7 @@
8847
8847
  {
8848
8848
  "path": "scripts/gds/login.js",
8849
8849
  "mode": "0000644",
8850
- "sha256": "fcb70ddb8175d4cbbfd3217dcb9352e6280d5597c8caffe88a6399b54041e93b"
8850
+ "sha256": "a5502a11527ac903446e13536e78900c3af82b3382757a547e2561761ef7e396"
8851
8851
  },
8852
8852
  {
8853
8853
  "path": "scripts/gds/main-audit.js",
@@ -9362,7 +9362,7 @@
9362
9362
  {
9363
9363
  "path": "scripts/gds/setup.js",
9364
9364
  "mode": "0000644",
9365
- "sha256": "79027b353a20b02c363d691ba30eda7d3456b8a081199ddc2c2559162523d66c"
9365
+ "sha256": "edbebc4a0f4557cc8fc9dd0eb7115379a2fd0e34247725180cfb8eccb1cb0a18"
9366
9366
  },
9367
9367
  {
9368
9368
  "path": "scripts/gds/ship-check.js",
@@ -10057,7 +10057,7 @@
10057
10057
  {
10058
10058
  "path": "src/module-api.js",
10059
10059
  "mode": "0000644",
10060
- "sha256": "156e1f0be121fb3fa396c32374f1ab8d0540f1d6c42a8aee28d05b5429a14115"
10060
+ "sha256": "e780332ee4be93e25030115f0a32c91e121aa0f9080e8f2abb0df1c0f3064eb0"
10061
10061
  },
10062
10062
  {
10063
10063
  "path": "src/module-loader/catalog.js",
@@ -10177,7 +10177,7 @@
10177
10177
  {
10178
10178
  "path": "tests/adopt_preflight.mjs",
10179
10179
  "mode": "0000644",
10180
- "sha256": "2489a19e7c36f53c4046a4a6fab54a55dbdfe8da6daa3452316f9e0abea01742"
10180
+ "sha256": "c31b72a08ca2007497e6c44108f0de35aaea6d3cd1fd1a54e65162a8bf555012"
10181
10181
  },
10182
10182
  {
10183
10183
  "path": "tests/adr_renumber_integrity.mjs",
@@ -10612,7 +10612,7 @@
10612
10612
  {
10613
10613
  "path": "tests/bongos_login.mjs",
10614
10614
  "mode": "0000644",
10615
- "sha256": "149d3b80bb3fce785ffb33bda72ebb30a66c31b374de5977f2283bc713c98441"
10615
+ "sha256": "1e95957f3c780b4054128000e0deefc76e4df41c3076da76d2fbd187b47c95d2"
10616
10616
  },
10617
10617
  {
10618
10618
  "path": "tests/box_access.mjs",
@@ -11147,7 +11147,7 @@
11147
11147
  {
11148
11148
  "path": "tests/discord_approvals.mjs",
11149
11149
  "mode": "0000644",
11150
- "sha256": "748ec9bb00437eea0cb6692a8ca042f3d19c2ff7704cb2f2f79e195d459f1559"
11150
+ "sha256": "6f5e924b108a8738f3c7d4a97057049167a7a88a6f4af997321cd8585df3038b"
11151
11151
  },
11152
11152
  {
11153
11153
  "path": "tests/discord_autojoin.mjs",
@@ -12627,7 +12627,7 @@
12627
12627
  {
12628
12628
  "path": "tests/module_api.mjs",
12629
12629
  "mode": "0000644",
12630
- "sha256": "53aa3732865dfce17a3216390b057dae825a6a7a8056309f3f31654c06636bee"
12630
+ "sha256": "868942895e19730936594efb9f0fb69e4e511397ed738c05e0b27073c01846f7"
12631
12631
  },
12632
12632
  {
12633
12633
  "path": "tests/module_api_lazy.mjs",
@@ -2376,5 +2376,7 @@ is load-bearing: the script throws rather than guess if it is missing, and
2376
2376
  landed since 1.19.949 with no explicit bump. run 35683452297. (task 1002620)
2377
2377
  1.19.951 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
2378
2378
  landed since 1.19.950 with no explicit bump. run 35685346231. (task 1002620)
2379
+ 1.19.952 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
2380
+ landed since 1.19.951 with no explicit bump. run 35686469735. (task 1002620)
2379
2381
  ---------------------------------------------------------------------------
2380
2382
  ```
package/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@bongos/core",
3
- "version": "1.19.951",
3
+ "version": "1.19.952",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bongos/core",
9
- "version": "1.19.951",
9
+ "version": "1.19.952",
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.951",
3
+ "version": "1.19.952",
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",
@@ -12,7 +12,7 @@
12
12
  // • CI collisions — the repo's workflows vs core's expected unit/secret-scan/
13
13
  // gate-review checks.
14
14
  // • IGNORED incoming files — a pre-existing .gitignore rule that would swallow what
15
- // adopt is about to commit (task 1003400). This is the check that was missing when
15
+ // adopt is about to commit (task 1003881). This is the check that was missing when
16
16
  // Cloud Bongos was adopted onto a repo whose .gitignore already carried `.claude/`:
17
17
  // the skills, hooks and settings.json were materialized onto disk and then dropped
18
18
  // by `git add`, so the adopt commit landed 8 files with no methodology surface at
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  'use strict';
3
3
  // scripts/gds/device-flow-help.js — the one explanation of a Device-Flow refusal, shared
4
- // by `bongos setup` and `bongos login` (task 1003400).
4
+ // by `bongos setup` and `bongos login` (task 1003881).
5
5
  //
6
6
  // WHY IT EXISTS AT ALL. GitHub creates an App from a manifest with Device Flow OFF and
7
7
  // exposes no API to switch it on — only a checkbox in the App's settings. So on every
@@ -497,7 +497,8 @@ async function interview({ adopt = false } = {}) {
497
497
  // ---------------------------------------------------------------------------
498
498
 
499
499
  // PURE (exported for tests) — the root START-HERE guide (task 1002404, goal
500
- // 1000052). A freshly-CLONED instance must tell a human what to run FIRST: the
500
+ // 1000052; task 1003881 made it LAYER onto an existing README instead of
501
+ // skipping one — see layerReadme below). A freshly-CLONED instance must tell a human what to run FIRST: the
501
502
  // `bongos` CLI ships INSIDE the not-yet-installed @bongos/core package, so
502
503
  // `npm install` has to come before any `bongos` command (including `bongos dev`).
503
504
  // `bongos init` runs npm install during scaffolding, but a later `git clone` of
@@ -637,8 +638,9 @@ function writeConfigs(spec, { dir, force, dryRun, coreDep, log = console.log })
637
638
  log(` ✓ wrote ${path.relative(dir, modulesPath)}`);
638
639
  log(` ✓ wrote ${path.relative(dir, hierarchyPath)}`);
639
640
  log(` ✓ wrote ${path.relative(dir, pkgPath)} (pins ${CORE_PKG} → ${pinNote})`);
640
- // README START-HERE (task 1002404): mint it when absent, else APPEND the marked
641
- // section. Never a blind overwrite — an owner's own README content always survives.
641
+ // README START-HERE (task 1002404, layering added by task 1003881): mint it when
642
+ // absent, else APPEND the marked section. Never a blind overwrite — an owner's own
643
+ // README content always survives, which is why the guide stopped being skipped.
642
644
  layerReadme(branding, { dir, dryRun: false, log });
643
645
  return { brandingPath, modulesPath, hierarchyPath, pkgPath, readmePath, wrote: true };
644
646
  }
@@ -23,7 +23,7 @@
23
23
  const readline = require('node:readline');
24
24
  const { spawnSync } = require('node:child_process');
25
25
  const { saveSession, loadStoredSession, listStoredSessions } = require('./cli-lib');
26
- // The device-flow refusal detector + its plain-language cure (task 1003400). A leaf
26
+ // The device-flow refusal detector + its plain-language cure (task 1003881). A leaf
27
27
  // module, NOT setup.js: setup requires this file for runDeviceFlow, so requiring it
28
28
  // back would close a require cycle. Both callers depend on the leaf instead.
29
29
  const { isDeviceFlowDisabled, deviceFlowFallbackLines } = require('./device-flow-help');
@@ -274,7 +274,7 @@ async function promptOnboardingConsent() {
274
274
  }
275
275
 
276
276
  // ── W1: the manifest-born App has Device Flow OFF (task 1003051) ─────────────
277
- // The detector + the guidance moved to ./device-flow-help (task 1003400) so
277
+ // The detector + the guidance moved to ./device-flow-help (task 1003881) so
278
278
  // `bongos login` can use the same words without closing a require cycle back
279
279
  // through this file (setup requires login for runDeviceFlow). Re-exported here
280
280
  // because both are part of setup.js's tested public surface.
package/src/module-api.js CHANGED
@@ -71,7 +71,7 @@ const { responsibilityFor, ROLE_RESPONSIBILITIES } = require('./role-responsibil
71
71
  // there. scripts/gds/bump-version.js still rewrites the literal below; it appends
72
72
  // the entry to that file. Look for a version's history there, not here.
73
73
  // ---------------------------------------------------------------------------
74
- const CORE_VERSION = '1.19.951'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
74
+ const CORE_VERSION = '1.19.952'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
75
75
 
76
76
  // A namespaced logger so a module's log lines are attributable + consistent.
77
77
  // Usage: const log = api.logger('dev-box'); log.info('mounted');
@@ -101,7 +101,7 @@ t('preflightAdopt: a clean repo → no blocking; every category reports', () =>
101
101
  } finally { rmSync(dir, { recursive: true, force: true }); }
102
102
  });
103
103
 
104
- // ---- ignored-incoming: the check that was missing (task 1003400) ----------
104
+ // ---- ignored-incoming: the check that was missing (task 1003881) ----------
105
105
  //
106
106
  // The failure it exists to stop: adopt onto a repo whose .gitignore already carries
107
107
  // `.claude/`. The skills/hooks/settings are written to disk, `git add` drops them, the
@@ -45,7 +45,7 @@ test('pollDecision maps the /access-requests/status body to a loop action', () =
45
45
  assert.equal(pollDecision({}), 'wait');
46
46
  });
47
47
 
48
- // ---- the Device-Flow dead end (task 1003400) -------------------------------
48
+ // ---- the Device-Flow dead end (task 1003881) -------------------------------
49
49
  //
50
50
  // Device Flow is OFF on every GitHub App created from a manifest and GitHub offers no
51
51
  // API to switch it on, so terminal sign-in is broken from birth on a fresh instance —
@@ -170,7 +170,7 @@ await t('a DB error returns {error}, never throws', async () => {
170
170
  assert.equal(r.outcome, 'error');
171
171
  });
172
172
 
173
- // ---- the outbound half must not outlive the inbound half (task 1003400) ----
173
+ // ---- the outbound half must not outlive the inbound half (task 1003881) ----
174
174
  //
175
175
  // The 👍 this line invites is applied ONLY by discord-approvals.js, which lives in the
176
176
  // `discord` module. onboarding (which posts) is default-ON; discord is default-OFF; and
@@ -48,7 +48,7 @@ const PUBLISHED_SURFACE = [
48
48
  'artistGate', // added by task 1003575 (ADR 0241): the artist gate — off | advisory | strict, plus the pure verdict helpers over it. Two modules ask it two different questions ("file this review?" and "does an open one hold the deploy?") and both must resolve the knob through this one reader, never branding().project
49
49
  'readApplicantProfileFromHub', // added by task 1002972 (privacy spec D7): the reviewer queue's LIVE per-render read of one applicant's hub profile view. NARROW by design — the underlying call is authenticated with this instance's hub client secret, and loadIdpConfig stays OFF the doorway so no module ever holds the credential that speaks for the whole project
50
50
  'enabledDisciplines', // BV1.R81: instance offered-disciplines (1.9.0; onboarding restock backstop)
51
- 'isModuleEnabled', // task 1003400: is ANOTHER module present? onboarding's Discord approve/decline control is only actionable when the `discord` module's reaction handler is loaded, so the posting half has to be able to ask
51
+ 'isModuleEnabled', // task 1003881: is ANOTHER module present? onboarding's Discord approve/decline control is only actionable when the `discord` module's reaction handler is loaded, so the posting half has to be able to ask
52
52
  'registerProvider', 'hasProvider', 'resolve', 'resolveOptional', 'listPorts', 'verifyPortsSatisfied',
53
53
  'on', 'emit', 'emitAsync', 'listEvents', 'seamSnapshot',
54
54
  'contribute', 'contributions', 'collectContributions', 'listContributionPoints',