@bongos/core 1.19.767 → 1.19.768

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.767",
6
- "core_contract": "1.19.767",
7
- "source_commit": "eb349d772c37baba9353ce3d7e4fb60ee0c50120",
5
+ "core_version": "1.19.768",
6
+ "core_contract": "1.19.768",
7
+ "source_commit": "ec2107bdda1e0c2ee8404d14e539b83a836f767d",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-09-16T14:32:00.184Z",
9
+ "built_at": "2026-09-16T14:46:45.582Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 483,
@@ -17,7 +17,7 @@
17
17
  "gate": "passed"
18
18
  },
19
19
  "file_count": 2631,
20
- "tree_sha256": "a176823f439c4744fa68e223d9a6c892eae966f0584eca0fc53b785e65a80bf1",
20
+ "tree_sha256": "9d2871bffc966902b2a18d7c59fc92a2e5ea137e0bee5675716ca3fbee9e01ef",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/ask-for-help/SKILL.md",
@@ -2512,7 +2512,7 @@
2512
2512
  {
2513
2513
  "path": "docs/module-api-changelog.md",
2514
2514
  "mode": "0000644",
2515
- "sha256": "758ba4125664158bbbbedce4610178b629d74da7b8defb902caa63750be147f2"
2515
+ "sha256": "5c95283ebfac1200dcabcba2fa712b6b041be345412b92cd1f896e3648d9ecd0"
2516
2516
  },
2517
2517
  {
2518
2518
  "path": "docs/modules-contract.md",
@@ -7577,12 +7577,12 @@
7577
7577
  {
7578
7578
  "path": "package-lock.json",
7579
7579
  "mode": "0000644",
7580
- "sha256": "c20cc0b8296799714beb07358a69f4c0c520adcbe121dfe53899cf5ee5dca0b6"
7580
+ "sha256": "4f7ef5cc202176fb1c83a20baea17017b6adb0892051832a4bd6a440d57f1fcc"
7581
7581
  },
7582
7582
  {
7583
7583
  "path": "package.json",
7584
7584
  "mode": "0000644",
7585
- "sha256": "734c747e81d3c512988159903a57a4ce901b67c353ea77fe7e253f4814cab10a"
7585
+ "sha256": "ee2355bc92153c9c139cf79e19f22b80dda73a5a2abdd102b67830cb3bee0d14"
7586
7586
  },
7587
7587
  {
7588
7588
  "path": "public-docs/index.html",
@@ -8442,7 +8442,7 @@
8442
8442
  {
8443
8443
  "path": "scripts/gds/provision.js",
8444
8444
  "mode": "0000644",
8445
- "sha256": "87a9abe0f4744a0b3a3b5cc2e326ff2adb8cba3e559228cca0798e40feaee8f6"
8445
+ "sha256": "bf403052607f7cce560633fc11d03f51ecf1e9fc1d32e4d6c601c6406787a143"
8446
8446
  },
8447
8447
  {
8448
8448
  "path": "scripts/gds/publish-credential-check.js",
@@ -9402,7 +9402,7 @@
9402
9402
  {
9403
9403
  "path": "src/module-api.js",
9404
9404
  "mode": "0000644",
9405
- "sha256": "9be4adbc202e2c681d8a2ebba85d6ce541cd8a75d10a8802e1042b43e75f50c0"
9405
+ "sha256": "163989f8fd93a919241ac12e7627303618fc6d2d47b75f79e1b6fb875874a534"
9406
9406
  },
9407
9407
  {
9408
9408
  "path": "src/module-loader/catalog.js",
@@ -12062,7 +12062,7 @@
12062
12062
  {
12063
12063
  "path": "tests/provision.mjs",
12064
12064
  "mode": "0000644",
12065
- "sha256": "245deb7b090f528180dde1457b821a8c8c2bd74a643524f441519859659643e8"
12065
+ "sha256": "5f7ec2483f8564dc9561f0becdfc36166bca5021b7f964db6d6e40d62108e041"
12066
12066
  },
12067
12067
  {
12068
12068
  "path": "tests/provision_restart.mjs",
@@ -2008,5 +2008,7 @@ is load-bearing: the script throws rather than guess if it is missing, and
2008
2008
  landed since 1.19.765 with no explicit bump. run 35104246900. (task 1002620)
2009
2009
  1.19.767 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
2010
2010
  landed since 1.19.766 with no explicit bump. run 35109111074. (task 1002620)
2011
+ 1.19.768 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
2012
+ landed since 1.19.767 with no explicit bump. run 35110800163. (task 1002620)
2011
2013
  ---------------------------------------------------------------------------
2012
2014
  ```
package/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@bongos/core",
3
- "version": "1.19.767",
3
+ "version": "1.19.768",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bongos/core",
9
- "version": "1.19.767",
9
+ "version": "1.19.768",
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.767",
3
+ "version": "1.19.768",
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",
@@ -1033,12 +1033,11 @@ async function teardownInstance(inst, deps) {
1033
1033
  if (inst.hosting_shape !== 'dedicated') {
1034
1034
  boxExec(`${sudoP}systemctl disable --now ${inst.slug}`, { allowFail: true });
1035
1035
  boxExec(`${sudoP}rm -f ${serviceUnitPath(inst)}`, { allowFail: true });
1036
- // Stop + remove the nightly backup units too (task 2213). The backup DIR + its
1037
- // dumps are left in place — like the DB below, they are precious data a teardown
1038
- // must not silently destroy.
1036
+ // Stop + remove the nightly backup units too (task 2213; the dir + dumps stay — precious data, like the DB below), then reset-failed (task 1003940): a removed unit's FAILED state outlives its file, so `systemctl --failed` listed torn-down ghosts for weeks.
1039
1037
  boxExec(`${sudoP}systemctl disable --now ${backupUnitName(inst)}.timer`, { allowFail: true });
1040
1038
  boxExec(`${sudoP}rm -f ${backupServicePath(inst)} ${backupTimerPath(inst)}`, { allowFail: true });
1041
1039
  boxExec(`${sudoP}systemctl daemon-reload`, { allowFail: true });
1040
+ boxExec(`${sudoP}systemctl reset-failed ${inst.slug}.service ${backupUnitName(inst)}.service`, { allowFail: true });
1042
1041
  // Left for an operator (data is precious), naming ONLY what this row created —
1043
1042
  // teardown now takes 'requested'/'error'. `port` + `domain` stay held: ADR 0181.
1044
1043
  const dumps = inst.db_name ? [`dropdb ${dbName(inst)}`, `prune ${CONFIG.backupDir}/${dbName(inst)}-*.sql.gz`] : [];
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.767'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
74
+ const CORE_VERSION = '1.19.768'; // 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');
@@ -1485,6 +1485,18 @@ await ta('teardownInstance(privileged): systemctl + rm-under-/etc are sudo-prefi
1485
1485
  // task 2213: the backup units come down too (the dumps + dir are left in place)
1486
1486
  assert.match(joined, /sudo systemctl disable --now mercury-db-backup\.timer/);
1487
1487
  assert.match(joined, /sudo rm -f \/etc\/systemd\/system\/mercury-db-backup\.service \/etc\/systemd\/system\/mercury-db-backup\.timer/);
1488
+ // task 1003940: a removed unit's FAILED state outlives its file — clear it, AFTER the rm + reload,
1489
+ // for both the instance unit and its backup unit (the two ghosts task 1003930 found on the box).
1490
+ assert.match(joined, /sudo systemctl reset-failed mercury\.service mercury-db-backup\.service/);
1491
+ const idx = (re) => cmds.findIndex((c) => re.test(c));
1492
+ assert.ok(idx(/rm -f .*mercury-db-backup\.service/) < idx(/daemon-reload/), 'rm before reload');
1493
+ assert.ok(idx(/daemon-reload/) < idx(/reset-failed/), 'reset-failed after the reload that forgets the file — reset first and the stopped unit could fail again');
1494
+ });
1495
+
1496
+ await ta('teardownInstance(dedicated): no systemd steps at all, so no reset-failed either (its own droplet)', async () => {
1497
+ const { deps, cmds } = recorder();
1498
+ await P.teardownInstance({ ...coTenant, hosting_shape: 'dedicated', droplet_id: 9 }, deps);
1499
+ assert.ok(!cmds.some((c) => /reset-failed|daemon-reload|disable --now/.test(c)), cmds.join(' | '));
1488
1500
  });
1489
1501
 
1490
1502
  await ta('teardownInstance(default): NO sudo (bare, unchanged)', async () => {