@bongos/core 1.19.33 → 1.19.34

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.33",
6
- "core_contract": "1.19.33",
7
- "source_commit": "53e6567ae132484c597ea9f16ed141b3f38c4d98",
5
+ "core_version": "1.19.34",
6
+ "core_contract": "1.19.34",
7
+ "source_commit": "4c7df27cafa52b11076549985f3b270f52a4b83d",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-08-11T15:10:31.561Z",
9
+ "built_at": "2026-08-11T15:15:18.155Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 286,
@@ -17,7 +17,7 @@
17
17
  "gate": "passed"
18
18
  },
19
19
  "file_count": 1515,
20
- "tree_sha256": "c4eb5d8939b2cfefc3bddc6b97e016418d2fd5a7c99a9090116183a407bfc937",
20
+ "tree_sha256": "36e160fe7d3ed2db78dea0705bbd6c0da8af094f50ef11a921e88f1ef5e670cb",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/blocker-review/SKILL.md",
@@ -3362,7 +3362,7 @@
3362
3362
  {
3363
3363
  "path": "modules/lifecycle/db.js",
3364
3364
  "mode": "0000644",
3365
- "sha256": "b2927d0be39718b274dda102c0d9d9035d323d1c60937ea7cd7a216315d5dc64"
3365
+ "sha256": "77528182c408edf2b8f3e07382bb83f97a7d668b979e97e60e4ff0c2e1bc7109"
3366
3366
  },
3367
3367
  {
3368
3368
  "path": "modules/lifecycle/done-when.js",
@@ -4012,12 +4012,12 @@
4012
4012
  {
4013
4013
  "path": "package-lock.json",
4014
4014
  "mode": "0000644",
4015
- "sha256": "3b7b3283efe27724944d786e894dffd69731c4aca5f10c72c4dd318f2e05e1bf"
4015
+ "sha256": "0a1787d27918736a0349bf2963267b7b164b874fa36cead87070f4ef72216385"
4016
4016
  },
4017
4017
  {
4018
4018
  "path": "package.json",
4019
4019
  "mode": "0000644",
4020
- "sha256": "854d15e8cf4e81bf848db848280b88dfc40a3836858a0ad1ab008f808f96677b"
4020
+ "sha256": "b720c31ba0ccf0ef270d7342c8cc3b0e99a9d93e720145176b4f86fc2dfa266a"
4021
4021
  },
4022
4022
  {
4023
4023
  "path": "public-docs/index.html",
@@ -5637,7 +5637,7 @@
5637
5637
  {
5638
5638
  "path": "src/module-api.js",
5639
5639
  "mode": "0000644",
5640
- "sha256": "229087cbc698ed7d1a71aa3cea5b210528e2d5d1fcc7232ee6a536e9a2ca2010"
5640
+ "sha256": "aec58f6fb1a7383beb03097fc4acea896237d45f75246101f0db10e573fc4725"
5641
5641
  },
5642
5642
  {
5643
5643
  "path": "src/module-loader/loader.js",
@@ -6832,7 +6832,7 @@
6832
6832
  {
6833
6833
  "path": "tests/migration_allocation.mjs",
6834
6834
  "mode": "0000644",
6835
- "sha256": "10b1faf40cef2a3872c44109b63680e79922446b573bb476c79540d44a5622ac"
6835
+ "sha256": "08db201ebec44ea5a711e3c86e36dda63ec22881a400e910dd7c64961c80f6e9"
6836
6836
  },
6837
6837
  {
6838
6838
  "path": "tests/migration_namespace.mjs",
@@ -1474,6 +1474,7 @@ async function findTaskBySourceRef({ source, sourceRef } = {}, deps = {}) {
1474
1474
 
1475
1475
  const TASK_SETTER_COLUMNS = new Set([
1476
1476
  'kind', 'discipline', 'newcomer_friendly', 'security_sensitive', 'parallel_safe', 'automation_tag',
1477
+ 'needs_migration', 'module_key',
1477
1478
  ]);
1478
1479
 
1479
1480
  async function updateTaskColumn(id, column, value) {
package/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@bongos/core",
3
- "version": "1.19.33",
3
+ "version": "1.19.34",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bongos/core",
9
- "version": "1.19.33",
9
+ "version": "1.19.34",
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.33",
3
+ "version": "1.19.34",
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
@@ -493,8 +493,10 @@ const { validateOrRespond, LIMITS, parseId, asyncHandler, corsPublicGet, parsePa
493
493
  // landed since 1.19.31 with no explicit bump. run 31504858325. (task 1002620)
494
494
  // 1.19.33 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
495
495
  // landed since 1.19.32 with no explicit bump. run 31505528205. (task 1002620)
496
+ // 1.19.34 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
497
+ // landed since 1.19.33 with no explicit bump. run 31505952506. (task 1002620)
496
498
  // ---------------------------------------------------------------------------
497
- const CORE_VERSION = '1.19.33'; // CI auto-patch carrier (ADR 0161); see changelog above
499
+ const CORE_VERSION = '1.19.34'; // CI auto-patch carrier (ADR 0161); see changelog above
498
500
 
499
501
  // A namespaced logger so a module's log lines are attributable + consistent.
500
502
  // Usage: const log = api.logger('dev-box'); log.info('mounted');
@@ -177,6 +177,41 @@ function shouldReserveMigrationNumber(task) {
177
177
  }
178
178
  });
179
179
 
180
+ // Runtime wiring, not source text: every column setter must clear the
181
+ // TASK_SETTER_COLUMNS allowlist inside updateTaskColumn. The needs_migration
182
+ // setter shipped throwing at runtime because only a source-regex test covered
183
+ // it — and the same gap had silently broken updateTaskModuleKey (module_key
184
+ // was never allowlisted). Stub the shared pool and drive the real functions.
185
+ await test('every task column setter clears the updateTaskColumn allowlist at runtime', async () => {
186
+ const { pool } = require('../src/bongos/pool.js');
187
+ const realQuery = pool.query;
188
+ const seen = [];
189
+ pool.query = async (sql, params) => { seen.push({ sql, params }); return { rows: [{}] }; };
190
+ try {
191
+ const db = require('../modules/lifecycle/db.js');
192
+ const setters = [
193
+ [() => db.updateTaskKind(1, 'bug'), 'kind'],
194
+ [() => db.updateTaskDiscipline(1, 'engineer'), 'discipline'],
195
+ [() => db.updateTaskNewcomerFriendly(1, true), 'newcomer_friendly'],
196
+ [() => db.updateTaskParallelSafe(1, true), 'parallel_safe'],
197
+ [() => db.updateTaskAutomationTag(1, 'live-only'), 'automation_tag'],
198
+ [() => db.updateTaskNeedsMigration(1, false), 'needs_migration'],
199
+ [() => db.updateTaskModuleKey(1, null), 'module_key'],
200
+ ];
201
+ for (const [call, column] of setters) {
202
+ const before = seen.length;
203
+ await call(); // throws here if the column is missing from the allowlist
204
+ assert.ok(seen.length > before, `${column} setter must reach pool.query`);
205
+ assert.ok(
206
+ seen[seen.length - 1].sql.includes(`SET ${column} =`),
207
+ `${column} setter must UPDATE its own column`
208
+ );
209
+ }
210
+ } finally {
211
+ pool.query = realQuery;
212
+ }
213
+ });
214
+
180
215
  await test('PATCH /tasks/:id accepts needs_migration so a wrong flag is correctable', () => {
181
216
  assert.ok(
182
217
  /needs_migration: \{ type: 'boolean' \}/.test(routesSrc),