@bongos/core 1.19.111 → 1.19.113
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 +10 -10
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/src/bongos/module-scope-map.js +13 -0
- package/src/module-api.js +5 -1
- package/tests/module-scope-map.mjs +37 -0
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.113",
|
|
6
|
+
"core_contract": "1.19.113",
|
|
7
|
+
"source_commit": "4f04a88c84292c94616306d95392485737ed1737",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-08-
|
|
9
|
+
"built_at": "2026-08-14T15:48:22.422Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 302,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
19
|
"file_count": 1559,
|
|
20
|
-
"tree_sha256": "
|
|
20
|
+
"tree_sha256": "52d268079196d1b135c13eab10c51c87c9b1424cad1079ec595591824b0a0daf",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/blocker-review/SKILL.md",
|
|
@@ -4152,12 +4152,12 @@
|
|
|
4152
4152
|
{
|
|
4153
4153
|
"path": "package-lock.json",
|
|
4154
4154
|
"mode": "0000644",
|
|
4155
|
-
"sha256": "
|
|
4155
|
+
"sha256": "2c8ecaac1dcae43c85fa2b642e470908f69dfdd6190e0986e06e120220ebe6d2"
|
|
4156
4156
|
},
|
|
4157
4157
|
{
|
|
4158
4158
|
"path": "package.json",
|
|
4159
4159
|
"mode": "0000644",
|
|
4160
|
-
"sha256": "
|
|
4160
|
+
"sha256": "4a7a150717c7a3336a9f72ed5ce773a229850b90cce8314de632067305371394"
|
|
4161
4161
|
},
|
|
4162
4162
|
{
|
|
4163
4163
|
"path": "public-docs/index.html",
|
|
@@ -5562,7 +5562,7 @@
|
|
|
5562
5562
|
{
|
|
5563
5563
|
"path": "src/bongos/module-scope-map.js",
|
|
5564
5564
|
"mode": "0000644",
|
|
5565
|
-
"sha256": "
|
|
5565
|
+
"sha256": "c42e08fd814524fd022f74ba651393cd8b3e5ac1418b7cb7c5ea647251af3dc2"
|
|
5566
5566
|
},
|
|
5567
5567
|
{
|
|
5568
5568
|
"path": "src/bongos/module-submissions.js",
|
|
@@ -5732,7 +5732,7 @@
|
|
|
5732
5732
|
{
|
|
5733
5733
|
"path": "src/module-api.js",
|
|
5734
5734
|
"mode": "0000644",
|
|
5735
|
-
"sha256": "
|
|
5735
|
+
"sha256": "c19adbd125efe46fba720abdecef683027e607275543b65e971630304d686b75"
|
|
5736
5736
|
},
|
|
5737
5737
|
{
|
|
5738
5738
|
"path": "src/module-loader/catalog.js",
|
|
@@ -7032,7 +7032,7 @@
|
|
|
7032
7032
|
{
|
|
7033
7033
|
"path": "tests/module-scope-map.mjs",
|
|
7034
7034
|
"mode": "0000644",
|
|
7035
|
-
"sha256": "
|
|
7035
|
+
"sha256": "f52f1f92215b6352b90faafb32d7b9ae546724d28172196cdf6137630df2d569"
|
|
7036
7036
|
},
|
|
7037
7037
|
{
|
|
7038
7038
|
"path": "tests/module_api.mjs",
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.113",
|
|
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.113",
|
|
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.113",
|
|
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",
|
|
@@ -207,6 +207,19 @@ const MODULE_GLOBS = {
|
|
|
207
207
|
'modules/game/', 'src/preview-server.js',
|
|
208
208
|
],
|
|
209
209
|
'art-pipeline': ['modules/art-pipeline/'],
|
|
210
|
+
// --- the hub identity provider + the PROJECTS CATALOG it owns (ADR 0141): platform
|
|
211
|
+
// accounts, the SSO client registry, project memberships/invites, and the
|
|
212
|
+
// platform_identity_projects rows the Explore feed reads. Carved already, so the
|
|
213
|
+
// glob is just its module home. Covers the visibility & customization work (goal
|
|
214
|
+
// 1000046) — visibility state, join/apply policy, and the catalog feed all live on
|
|
215
|
+
// this module's tables + routes; previously NO key resolved them, so the goal's
|
|
216
|
+
// scope wall was empty (task 1002322, the 1002690 precedent).
|
|
217
|
+
// The RENDERING surfaces stay with their own web-surface keys — Explore is
|
|
218
|
+
// modules/status-ui/public/explore.*, My Projects / scouting are
|
|
219
|
+
// modules/hall-ui/public/* — per the one-key-per-surface precedent (hall-ui/status-ui).
|
|
220
|
+
// The instance-side CLIENT half of federation is woven into core auth.js and is
|
|
221
|
+
// kernel territory (ADR 0141 §Packaging), NOT this key.
|
|
222
|
+
'platform-identity': ['modules/platform-identity/'],
|
|
210
223
|
// --- instance provisioning: the web-tier REQUEST + STATE surface (module home)
|
|
211
224
|
// plus the control-plane runner CLI — a command travels with its domain (the
|
|
212
225
|
// lifecycle/dev-box precedent). Covers the projects-surface work (goal
|
package/src/module-api.js
CHANGED
|
@@ -649,8 +649,12 @@ const { validateOrRespond, LIMITS, parseId, asyncHandler, corsPublicGet, parsePa
|
|
|
649
649
|
// landed since 1.19.109 with no explicit bump. run 31810003558. (task 1002620)
|
|
650
650
|
// 1.19.111 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
651
651
|
// landed since 1.19.110 with no explicit bump. run 31810638191. (task 1002620)
|
|
652
|
+
// 1.19.112 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
653
|
+
// landed since 1.19.111 with no explicit bump. run 31814245230. (task 1002620)
|
|
654
|
+
// 1.19.113 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
655
|
+
// landed since 1.19.112 with no explicit bump. run 31816239246. (task 1002620)
|
|
652
656
|
// ---------------------------------------------------------------------------
|
|
653
|
-
const CORE_VERSION = '1.19.
|
|
657
|
+
const CORE_VERSION = '1.19.113'; // CI auto-patch carrier (ADR 0161); see changelog above
|
|
654
658
|
|
|
655
659
|
// A namespaced logger so a module's log lines are attributable + consistent.
|
|
656
660
|
// Usage: const log = api.logger('dev-box'); log.info('mounted');
|
|
@@ -9,6 +9,9 @@ const require = createRequire(import.meta.url);
|
|
|
9
9
|
const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
|
|
10
10
|
const scope = require(path.join(ROOT, 'src', 'bongos', 'module-scope-map.js'));
|
|
11
11
|
const { PROTECTED_GLOBS } = require(path.join(ROOT, 'src', 'bongos', 'permission-path-check.js'));
|
|
12
|
+
// the REAL consumer of the roster — asserted against directly so a wall assertion
|
|
13
|
+
// here can never diverge from what the live goal-task-create gate computes.
|
|
14
|
+
const gsc = require(path.join(ROOT, 'src', 'bongos', 'goal-scope-check.js'));
|
|
12
15
|
|
|
13
16
|
test('roster covers the decided ~16 modules + kernel, each with non-empty globs', () => {
|
|
14
17
|
const keys = scope.moduleKeys();
|
|
@@ -99,3 +102,37 @@ test('provisioning + public-landing joined the roster (task 1002690) — territo
|
|
|
99
102
|
assert.ok(prov.includes('scripts/gds/provision.js'), 'the control-plane runner travels with its domain');
|
|
100
103
|
assert.ok(scope.globsForModules(['public-landing']).includes('public-landing/'), 'public-landing owns its surface directory');
|
|
101
104
|
});
|
|
105
|
+
|
|
106
|
+
test('platform-identity joined the roster (task 1002322) — the catalog territory goal 1000046 walls', () => {
|
|
107
|
+
// Before this, modules/platform-identity/ was covered by NO key, so goal 1000046
|
|
108
|
+
// (project visibility & customization) had an empty — i.e. authorize-nothing —
|
|
109
|
+
// scope wall: goal-scope-check denies with `empty_scope`/`unknown_scope`.
|
|
110
|
+
assert.ok(scope.isModuleKey('platform-identity'), 'roster missing module "platform-identity"');
|
|
111
|
+
const globs = scope.globsForModules(['platform-identity']);
|
|
112
|
+
assert.ok(globs.includes('modules/platform-identity/'), 'platform-identity owns its module directory');
|
|
113
|
+
// Derived, not hand-set: modules/platform-identity/ is absent from PROTECTED_GLOBS.
|
|
114
|
+
assert.equal(scope.isProtectedModule('platform-identity'), false);
|
|
115
|
+
assert.equal(
|
|
116
|
+
scope.scopeForModule('platform-identity').protected,
|
|
117
|
+
scope.isProtected(['modules/platform-identity/']),
|
|
118
|
+
'protected must be the faithful derivation, never a literal',
|
|
119
|
+
);
|
|
120
|
+
// The wall now COVERS the goal-1000046 catalog/visibility paths. Asserted through
|
|
121
|
+
// goal-scope-check.scopeSubset — the REAL consumer (directional containment), not a
|
|
122
|
+
// re-implementation here, so this can't pass while the live gate denies.
|
|
123
|
+
const wall = ['platform-identity', 'status-ui', 'hall-ui', 'public-landing', 'provisioning'];
|
|
124
|
+
const covers = (touch) => gsc.scopeSubset(wall, [touch]).ok;
|
|
125
|
+
for (const touch of [
|
|
126
|
+
'modules/platform-identity/platform-identity.js', // visibility column + catalog domain
|
|
127
|
+
'modules/platform-identity/routes/projects.js', // the feed + invite routes
|
|
128
|
+
'modules/status-ui/public/explore.js', // orb render-type surface
|
|
129
|
+
'modules/hall-ui/public/my-projects.js', // owner settings / applications queue
|
|
130
|
+
'public-landing/create.html', // the project-detail creation step
|
|
131
|
+
'modules/provisioning/', // module-bundle selection at provision time
|
|
132
|
+
]) {
|
|
133
|
+
assert.equal(covers(touch), true, `wall does not cover ${touch}`);
|
|
134
|
+
}
|
|
135
|
+
// …and still BOUNDS: the trust core stays outside it (the wall is a wall).
|
|
136
|
+
assert.equal(covers('src/bongos/auth.js'), false, 'the wall must not cover the kernel auth core');
|
|
137
|
+
assert.equal(scope.scopeIncludesProtected(wall), false, 'goal 1000046 wall stays non-protected (governance widens it later)');
|
|
138
|
+
});
|