@bongos/core 1.19.852 → 1.19.853

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.852",
6
- "core_contract": "1.19.852",
7
- "source_commit": "bf625696dfb7d52ffce6a01a498a5f9bb7fdfa75",
5
+ "core_version": "1.19.853",
6
+ "core_contract": "1.19.853",
7
+ "source_commit": "23d160b78996d913c0510928995bae59a1ae6832",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-09-17T21:07:34.757Z",
9
+ "built_at": "2026-09-17T21:14:11.854Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 497,
@@ -17,7 +17,7 @@
17
17
  "gate": "passed"
18
18
  },
19
19
  "file_count": 2801,
20
- "tree_sha256": "d02b8c530b080946a1eeca76fc4a81f1cee5c8d893f9f41639fb880495862380",
20
+ "tree_sha256": "cfc90395d496db6fa9ae34f98458137adcc184faa73c806f2bfdba99027d74ff",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/ask-for-help/SKILL.md",
@@ -2587,7 +2587,7 @@
2587
2587
  {
2588
2588
  "path": "docs/module-api-changelog.md",
2589
2589
  "mode": "0000644",
2590
- "sha256": "75cf389b149eecb2feb08521e846ec486059c4b2b56f01ec3d6d46f62e89ecf9"
2590
+ "sha256": "cd9e820a59b864c0b7c48431cbfe39edfeb421fcb807d24679a768c217373720"
2591
2591
  },
2592
2592
  {
2593
2593
  "path": "docs/modules-contract.md",
@@ -7912,12 +7912,12 @@
7912
7912
  {
7913
7913
  "path": "package-lock.json",
7914
7914
  "mode": "0000644",
7915
- "sha256": "197f6af6f83b766818989ee6f6fb71723dcf8420ddd190c18703e8c26b5aa889"
7915
+ "sha256": "d6109cde0d5b5a6a8667252455ec1221dbcd4891b4937bfd240743990d0a354a"
7916
7916
  },
7917
7917
  {
7918
7918
  "path": "package.json",
7919
7919
  "mode": "0000644",
7920
- "sha256": "065f7ae763810587db17bc9522c11f8672ef9b9689a1cb8630debc9e12ae586e"
7920
+ "sha256": "e4c6a0d643d7fbf5c9220a2449763f4cbd0b05594eec7fec5d1fffd7e691c54c"
7921
7921
  },
7922
7922
  {
7923
7923
  "path": "public-docs/index.html",
@@ -9857,7 +9857,7 @@
9857
9857
  {
9858
9858
  "path": "src/module-api.js",
9859
9859
  "mode": "0000644",
9860
- "sha256": "82b3a923d967a361a85d409528a785f2e70434289ee10cf25f3fd1e580eddacb"
9860
+ "sha256": "239294e8e4023ccc05619cd66992afebfceea6453821ec3ee7ceb8cabb540cf7"
9861
9861
  },
9862
9862
  {
9863
9863
  "path": "src/module-loader/catalog.js",
@@ -12932,7 +12932,7 @@
12932
12932
  {
12933
12933
  "path": "tests/rank_gate.mjs",
12934
12934
  "mode": "0000644",
12935
- "sha256": "78626dc42e6d31685352e43e1e8e094a904f59d9d0562caf6b6e126934df973f"
12935
+ "sha256": "05e193a23bb1218c1c96a4f4bbc734f2f09a6dd76434eb59750014277f0cef3b"
12936
12936
  },
12937
12937
  {
12938
12938
  "path": "tests/rank_roles_audit.mjs",
@@ -2178,5 +2178,7 @@ is load-bearing: the script throws rather than guess if it is missing, and
2178
2178
  landed since 1.19.850 with no explicit bump. run 35274042996. (task 1002620)
2179
2179
  1.19.852 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
2180
2180
  landed since 1.19.851 with no explicit bump. run 35274827497. (task 1002620)
2181
+ 1.19.853 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
2182
+ landed since 1.19.852 with no explicit bump. run 35275456041. (task 1002620)
2181
2183
  ---------------------------------------------------------------------------
2182
2184
  ```
package/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@bongos/core",
3
- "version": "1.19.852",
3
+ "version": "1.19.853",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bongos/core",
9
- "version": "1.19.852",
9
+ "version": "1.19.853",
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.852",
3
+ "version": "1.19.853",
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
@@ -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.852'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
74
+ const CORE_VERSION = '1.19.853'; // 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');
@@ -323,12 +323,41 @@ const __dir = dirname(fileURLToPath(import.meta.url));
323
323
  // task 1003204: the lifecycle data layer is db.js + db-*.js now — read the family.
324
324
  const dbSrc = lifecycleDbSource();
325
325
 
326
- t('every live rank appears in the claimable CASE at its REQUIRES_RANK_TIER value', () => {
327
- // Isolate the listClaimableTasks function body so we don't match CASE
328
- // expressions elsewhere in db.js.
326
+ // Isolate the listClaimableTasks function body so we don't match CASE expressions
327
+ // elsewhere in the lifecycle data layer.
328
+ //
329
+ // ANCHORED TO THE NEXT TOP-LEVEL FUNCTION, not to a byte count (task 1004015; the
330
+ // same fix task 1004002 landed in tests/reward_gate.mjs). The window used to be
331
+ // `start + 4000`, and listClaimableTasks measures 12019 chars — so the slice carried
332
+ // a THIRD of the function it claims to scan.
333
+ //
334
+ // That is a false RED for the positive assertion below (the last WHEN clause it needs
335
+ // sits at +3400, leaving 600 characters of margin before an unrelated feature pushes
336
+ // it out of frame — reward_gate was widened four times for exactly that). It is a
337
+ // false GREEN for the NEGATIVE assertions in the next test, which is the worse half:
338
+ // a stale pre-thetes mapping living anywhere past +4000 — two thirds of the body —
339
+ // passes a test whose entire purpose is to catch it.
340
+ //
341
+ // The boundary lookup is ASSERTED rather than defaulted: if listActiveClaims is ever
342
+ // renamed or moved, this fails loudly and names the fix, instead of silently falling
343
+ // back to a byte window and reinstating the bug.
344
+ // LAZY, and called from inside each t() — deliberately not an IIFE evaluated at module
345
+ // load. Every assertion in this file lives inside a t() closure so a failure is caught,
346
+ // named and counted while the other ~30 tests below still run. An assert at top level
347
+ // would throw at IMPORT time in exactly the case it guards (listActiveClaims renamed),
348
+ // aborting the file before any downstream test registers — trading a false green for a
349
+ // silent loss of the rest of the suite.
350
+ const claimableBody = () => {
329
351
  const start = dbSrc.indexOf('async function listClaimableTasks');
330
- assert.ok(start >= 0, 'listClaimableTasks not found in db.js');
331
- const body = dbSrc.slice(start, start + 4000);
352
+ assert.ok(start >= 0, 'listClaimableTasks not found in the lifecycle data layer');
353
+ const end = dbSrc.indexOf('async function listActiveClaims', start);
354
+ assert.ok(end > start,
355
+ 'listActiveClaims boundary not found — re-anchor this slice to whatever function now follows listClaimableTasks');
356
+ return dbSrc.slice(start, end);
357
+ };
358
+
359
+ t('every live rank appears in the claimable CASE at its REQUIRES_RANK_TIER value', () => {
360
+ const body = claimableBody();
332
361
  for (const [rank, tier] of Object.entries(db.REQUIRES_RANK_TIER)) {
333
362
  const re = new RegExp(`WHEN '${rank}' THEN ${tier}\\b`);
334
363
  assert.ok(re.test(body),
@@ -338,8 +367,7 @@ t('every live rank appears in the claimable CASE at its REQUIRES_RANK_TIER value
338
367
  });
339
368
 
340
369
  t('the claimable CASE no longer carries the pre-thetes archon=3/metic=2 scale', () => {
341
- const start = dbSrc.indexOf('async function listClaimableTasks');
342
- const body = dbSrc.slice(start, start + 4000);
370
+ const body = claimableBody();
343
371
  assert.ok(!/WHEN 'archon' THEN 3\b/.test(body),
344
372
  "stale archon=3 mapping present — CASE not migrated to the 4-rank scale");
345
373
  assert.ok(!/WHEN 'metic' THEN 2\b/.test(body),