@bongos/core 1.19.712 → 1.19.714
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 +11 -11
- package/docs/module-api-changelog.md +4 -0
- package/modules/government/config.js +22 -6
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/src/module-api.js +1 -1
- package/tests/government_vanilla_boot.mjs +10 -7
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.
|
|
6
|
-
"core_contract": "1.19.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.19.714",
|
|
6
|
+
"core_contract": "1.19.714",
|
|
7
|
+
"source_commit": "a5a66a5abc084908ffbcb70583aa9effa9bc86d7",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-09-13T07:
|
|
9
|
+
"built_at": "2026-09-13T07:48:24.895Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 478,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
19
|
"file_count": 2649,
|
|
20
|
-
"tree_sha256": "
|
|
20
|
+
"tree_sha256": "51e98dc1aa5041914570019a3903f1b1c0cce050fff1b530c41da04241a719a7",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/ask-for-help/SKILL.md",
|
|
@@ -2807,7 +2807,7 @@
|
|
|
2807
2807
|
{
|
|
2808
2808
|
"path": "docs/module-api-changelog.md",
|
|
2809
2809
|
"mode": "0000644",
|
|
2810
|
-
"sha256": "
|
|
2810
|
+
"sha256": "3484277ad5363b99cffe978b168fcdadd40051cb9fc45c51a2aab58dd43fe601"
|
|
2811
2811
|
},
|
|
2812
2812
|
{
|
|
2813
2813
|
"path": "docs/modules-contract.md",
|
|
@@ -4547,7 +4547,7 @@
|
|
|
4547
4547
|
{
|
|
4548
4548
|
"path": "modules/government/config.js",
|
|
4549
4549
|
"mode": "0000644",
|
|
4550
|
-
"sha256": "
|
|
4550
|
+
"sha256": "0110e6a9421696632fa749291547045c60ace60255d55f35a88accd61dcf5c80"
|
|
4551
4551
|
},
|
|
4552
4552
|
{
|
|
4553
4553
|
"path": "modules/government/db.js",
|
|
@@ -7817,12 +7817,12 @@
|
|
|
7817
7817
|
{
|
|
7818
7818
|
"path": "package-lock.json",
|
|
7819
7819
|
"mode": "0000644",
|
|
7820
|
-
"sha256": "
|
|
7820
|
+
"sha256": "732fe7dc9bc6b9c48aabb5fb6dcf35aa9a71f50fcf16d6548e183a1092c40853"
|
|
7821
7821
|
},
|
|
7822
7822
|
{
|
|
7823
7823
|
"path": "package.json",
|
|
7824
7824
|
"mode": "0000644",
|
|
7825
|
-
"sha256": "
|
|
7825
|
+
"sha256": "6543f1d328faab7d974585c1ad7f0f1b79ba653563bf5d75b7948f01501ce322"
|
|
7826
7826
|
},
|
|
7827
7827
|
{
|
|
7828
7828
|
"path": "public-docs/index.html",
|
|
@@ -9602,7 +9602,7 @@
|
|
|
9602
9602
|
{
|
|
9603
9603
|
"path": "src/module-api.js",
|
|
9604
9604
|
"mode": "0000644",
|
|
9605
|
-
"sha256": "
|
|
9605
|
+
"sha256": "e836253fa5b1c1b117c308430b19b2129a19904b21371ad2c033f0613951d0c2"
|
|
9606
9606
|
},
|
|
9607
9607
|
{
|
|
9608
9608
|
"path": "src/module-loader/catalog.js",
|
|
@@ -11107,7 +11107,7 @@
|
|
|
11107
11107
|
{
|
|
11108
11108
|
"path": "tests/government_vanilla_boot.mjs",
|
|
11109
11109
|
"mode": "0000644",
|
|
11110
|
-
"sha256": "
|
|
11110
|
+
"sha256": "5c2676855575784f9fffcf909dd6179e4b588e49cb5c80b5395d6803bf89386d"
|
|
11111
11111
|
},
|
|
11112
11112
|
{
|
|
11113
11113
|
"path": "tests/government_vocabulary.mjs",
|
|
@@ -1883,5 +1883,9 @@ is load-bearing: the script throws rather than guess if it is missing, and
|
|
|
1883
1883
|
landed since 1.19.710 with no explicit bump. run 34744940181. (task 1002620)
|
|
1884
1884
|
1.19.712 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1885
1885
|
landed since 1.19.711 with no explicit bump. run 34745412403. (task 1002620)
|
|
1886
|
+
1.19.713 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1887
|
+
landed since 1.19.712 with no explicit bump. run 34745667268. (task 1002620)
|
|
1888
|
+
1.19.714 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1889
|
+
landed since 1.19.713 with no explicit bump. run 34746102135. (task 1002620)
|
|
1886
1890
|
---------------------------------------------------------------------------
|
|
1887
1891
|
```
|
|
@@ -33,8 +33,13 @@
|
|
|
33
33
|
// Their grants are DERIVED from catalog floors and materialised by
|
|
34
34
|
// governance_002; config may relabel a seeded rank, never re-grant it.
|
|
35
35
|
//
|
|
36
|
-
// Stripping rather than throwing matches resolver.js: a
|
|
37
|
-
//
|
|
36
|
+
// Stripping rather than throwing matches resolver.js: a template entry that asks for
|
|
37
|
+
// authority it may not have is DROPPED, so a wrong entry fails CLOSED rather than
|
|
38
|
+
// bricking the boot.
|
|
39
|
+
//
|
|
40
|
+
// SCOPE OF THAT RULE — it is about a pack that PARSES and asks for the wrong thing.
|
|
41
|
+
// A pack that does not parse at all is the other case, and the disk loader below
|
|
42
|
+
// throws on it deliberately. See the loadGovernmentConfig header.
|
|
38
43
|
//
|
|
39
44
|
// SLICE BOUNDARY: this file is the config CONTRACT, and deliberately has no production
|
|
40
45
|
// caller yet — R96 is the "what shape is a rank template, and what can config never
|
|
@@ -321,11 +326,22 @@ function readJson(p) {
|
|
|
321
326
|
catch (e) { if (e.code === 'ENOENT') return null; throw e; }
|
|
322
327
|
}
|
|
323
328
|
|
|
324
|
-
// Disk loader with the documented precedence. BOTH files are optional: the
|
|
325
|
-
// pack because a vanilla instance ships only the neutral starter, and the
|
|
326
|
-
// starter because the four ranks still resolve to their canonical names without
|
|
329
|
+
// Disk loader with the documented precedence. BOTH files are optional when ABSENT: the
|
|
330
|
+
// instance pack because a vanilla instance ships only the neutral starter, and the
|
|
331
|
+
// neutral starter because the four ranks still resolve to their canonical names without
|
|
327
332
|
// it. Unlike branding — where a missing identity is fatal — no value here is required,
|
|
328
|
-
// so
|
|
333
|
+
// so an absent pack falls through to sane defaults.
|
|
334
|
+
//
|
|
335
|
+
// ABSENT and MALFORMED are NOT the same case, and this loader treats them differently
|
|
336
|
+
// on purpose. readJson() swallows only ENOENT; a pack that is present but does not
|
|
337
|
+
// parse raises a SyntaxError that propagates out of here and stops boot. A corrupt
|
|
338
|
+
// authority-adjacent file must be fixed by a human, not silently replaced by defaults
|
|
339
|
+
// nobody chose — the loud stop IS the fail-closed behaviour, since a boot that never
|
|
340
|
+
// completes grants nothing. Both halves are pinned as source: the absent half by
|
|
341
|
+
// tests/government_config.mjs ('tolerates a missing instance pack') and
|
|
342
|
+
// tests/government_vanilla_boot.mjs's no-packs-at-all case, the malformed half by
|
|
343
|
+
// that file's 'a malformed config pack fails LOUD'. Changing the throw into a
|
|
344
|
+
// fallback is therefore a deliberate decision plus a test edit, not a tidy-up.
|
|
329
345
|
//
|
|
330
346
|
// CALL THIS AT BOOT, NOT PER REQUEST. The two reads are synchronous, which is correct
|
|
331
347
|
// for a startup read of a committed file and wrong inside a request handler. If a
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.714",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bongos/core",
|
|
9
|
-
"version": "1.19.
|
|
9
|
+
"version": "1.19.714",
|
|
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.
|
|
3
|
+
"version": "1.19.714",
|
|
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.
|
|
74
|
+
const CORE_VERSION = '1.19.714'; // 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');
|
|
@@ -94,13 +94,16 @@ test('a core with NO config packs at all still boots four roles rather than none
|
|
|
94
94
|
});
|
|
95
95
|
|
|
96
96
|
test('a malformed config pack fails LOUD — it never degrades into a silent grant', () => {
|
|
97
|
-
//
|
|
98
|
-
//
|
|
99
|
-
//
|
|
100
|
-
//
|
|
101
|
-
//
|
|
102
|
-
//
|
|
103
|
-
//
|
|
97
|
+
// Pins the loader's real behaviour: readJson() returns null only for ENOENT, so a
|
|
98
|
+
// syntactically broken pack throws. That is fail-CLOSED (no authority is produced),
|
|
99
|
+
// which is the property this proof cares about.
|
|
100
|
+
//
|
|
101
|
+
// This assertion used to contradict the loader's own header note, which promised
|
|
102
|
+
// "the loader fails to sane defaults rather than throwing" for the malformed case
|
|
103
|
+
// too. The PROSE was the bug, not the throw: config.js now states the absent and
|
|
104
|
+
// malformed cases separately and names this test as the oracle for the second
|
|
105
|
+
// (task 1002876). Turning a corrupt authority-adjacent file into a silent fallback
|
|
106
|
+
// remains a decision, not a typo — it would have to change this assertion first.
|
|
104
107
|
withScratchDir((dir) => {
|
|
105
108
|
const broken = path.join(dir, 'broken.json');
|
|
106
109
|
fs.writeFileSync(broken, '{ not json');
|