@bongos/core 1.19.223 → 1.19.224
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 +12 -12
- package/modules/hall-ui/public/government.html +28 -2
- package/modules/hall-ui/public/government.js +40 -4
- package/modules/hall-ui/public/palette.js +10 -4
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/src/module-api.js +3 -1
- package/tests/hall_palette.mjs +10 -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.224",
|
|
6
|
+
"core_contract": "1.19.224",
|
|
7
|
+
"source_commit": "cddd2aa1a006cc4524db36eb319d3813a35c5e57",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-08-18T04:
|
|
9
|
+
"built_at": "2026-08-18T04:10:09.443Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 311,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
19
|
"file_count": 1637,
|
|
20
|
-
"tree_sha256": "
|
|
20
|
+
"tree_sha256": "88a20aaa26450db245b3da0aa9685b344fb4c9c2a53618fb5242e79dfe8ec9fb",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/blocker-review/SKILL.md",
|
|
@@ -3247,12 +3247,12 @@
|
|
|
3247
3247
|
{
|
|
3248
3248
|
"path": "modules/hall-ui/public/government.html",
|
|
3249
3249
|
"mode": "0000644",
|
|
3250
|
-
"sha256": "
|
|
3250
|
+
"sha256": "23ceb462eddfb0f66ba3030231ae1394d72eb0b6689a7f127c1ba52554c874bf"
|
|
3251
3251
|
},
|
|
3252
3252
|
{
|
|
3253
3253
|
"path": "modules/hall-ui/public/government.js",
|
|
3254
3254
|
"mode": "0000644",
|
|
3255
|
-
"sha256": "
|
|
3255
|
+
"sha256": "4778f9a83d63900aca6969a85e7cb67850ffb591a6cbae1fb4be270393741cd1"
|
|
3256
3256
|
},
|
|
3257
3257
|
{
|
|
3258
3258
|
"path": "modules/hall-ui/public/hall-kit.js",
|
|
@@ -3342,7 +3342,7 @@
|
|
|
3342
3342
|
{
|
|
3343
3343
|
"path": "modules/hall-ui/public/palette.js",
|
|
3344
3344
|
"mode": "0000644",
|
|
3345
|
-
"sha256": "
|
|
3345
|
+
"sha256": "f6b2dc3a7ee452ff7121fbc0245bd554c692f6d8be1dc6285d0fa0eab2d6aed6"
|
|
3346
3346
|
},
|
|
3347
3347
|
{
|
|
3348
3348
|
"path": "modules/hall-ui/public/people.html",
|
|
@@ -4297,12 +4297,12 @@
|
|
|
4297
4297
|
{
|
|
4298
4298
|
"path": "package-lock.json",
|
|
4299
4299
|
"mode": "0000644",
|
|
4300
|
-
"sha256": "
|
|
4300
|
+
"sha256": "c0b226a7cd5289673d7a88f416d410c5855a7094e8cd0bcff12e063b705baf82"
|
|
4301
4301
|
},
|
|
4302
4302
|
{
|
|
4303
4303
|
"path": "package.json",
|
|
4304
4304
|
"mode": "0000644",
|
|
4305
|
-
"sha256": "
|
|
4305
|
+
"sha256": "49b050b03e108d8f8be6aef3ed472dfd699496a1101e7bd286793e17351db3b5"
|
|
4306
4306
|
},
|
|
4307
4307
|
{
|
|
4308
4308
|
"path": "public-docs/index.html",
|
|
@@ -5917,7 +5917,7 @@
|
|
|
5917
5917
|
{
|
|
5918
5918
|
"path": "src/module-api.js",
|
|
5919
5919
|
"mode": "0000644",
|
|
5920
|
-
"sha256": "
|
|
5920
|
+
"sha256": "ff93015b043ae508d50b88b8de3fe512221a9906479d36e28bc418d837455fd4"
|
|
5921
5921
|
},
|
|
5922
5922
|
{
|
|
5923
5923
|
"path": "src/module-loader/catalog.js",
|
|
@@ -7017,7 +7017,7 @@
|
|
|
7017
7017
|
{
|
|
7018
7018
|
"path": "tests/hall_palette.mjs",
|
|
7019
7019
|
"mode": "0000644",
|
|
7020
|
-
"sha256": "
|
|
7020
|
+
"sha256": "7cb75511b1b09bc2ff542aa7d85849ad800d18624646e40f23483ae86127fa28"
|
|
7021
7021
|
},
|
|
7022
7022
|
{
|
|
7023
7023
|
"path": "tests/hall_signout.mjs",
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
6
|
<title>Government — {{worldName}}</title>
|
|
7
|
-
<meta name="description" content="
|
|
7
|
+
<meta name="description" content="How this project is governed — the constitution it runs, the Board Room where Full Ideas are ratified, and the ranks & permissions that administer it.">
|
|
8
8
|
<link rel="icon" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text x='16' y='24' font-size='24' text-anchor='middle' font-family='sans-serif'>⌂</text></svg>">
|
|
9
9
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
10
10
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
@@ -26,6 +26,30 @@
|
|
|
26
26
|
<p class="gov-sealed" id="gov-sealed" hidden>Archons only.</p>
|
|
27
27
|
|
|
28
28
|
<section id="gov-body" hidden>
|
|
29
|
+
<!-- The three-section IA (R15 of goal 1000069, ADR 0175): the page that
|
|
30
|
+
answers "how is this project governed". Tabs are OTBKit.makeTabs
|
|
31
|
+
(the work.js idiom) with hash deep links — #constitution,
|
|
32
|
+
#board-room, #ranks. -->
|
|
33
|
+
<div id="gov-tabs"></div>
|
|
34
|
+
|
|
35
|
+
<!-- §1 Constitution — what this project runs. The live view (today's
|
|
36
|
+
values + the change history) and the charter library land with
|
|
37
|
+
R18/R19; until then the section frames the model honestly. -->
|
|
38
|
+
<section id="gov-panel-constitution" hidden>
|
|
39
|
+
<h2 class="gov-h">Constitution</h2>
|
|
40
|
+
<p class="gov-grid-note">Three dials decide how this project is governed: <strong>who sits on the board</strong> (a rank — everyone holding it is a member), <strong>what counts as passing</strong> (a first ratifier, or the consent of the sitting), and <strong>how long a vote stays open</strong> (a timed sitting, or no clock at all). They are configuration on the same machinery at every setting — a project starts with the founder ratifying alone and opens up by changing numbers, not code.</p>
|
|
41
|
+
<div id="gov-constitution"></div>
|
|
42
|
+
</section>
|
|
43
|
+
|
|
44
|
+
<!-- §2 Board Room — open items, the clock, your vote (R16/R17). -->
|
|
45
|
+
<section id="gov-panel-board" hidden>
|
|
46
|
+
<h2 class="gov-h">Board Room</h2>
|
|
47
|
+
<p class="gov-grid-note">Where a Full Idea that cleared the completeness grade comes to be ratified — and where the constitution itself is amended. Open items appear here with their clock and a live tally; an objection must carry a reason and name the section it faults, which is why votes are cast here and only mirrored to chat.</p>
|
|
48
|
+
<div id="gov-board"></div>
|
|
49
|
+
</section>
|
|
50
|
+
|
|
51
|
+
<!-- §3 Ranks & Permissions — the administration surface, unchanged. -->
|
|
52
|
+
<section id="gov-panel-ranks" hidden>
|
|
29
53
|
<div class="gov-layout">
|
|
30
54
|
<div class="gov-ranks-col">
|
|
31
55
|
<h2 class="gov-h">Ranks</h2>
|
|
@@ -59,6 +83,7 @@
|
|
|
59
83
|
<h2 class="gov-h">Machine principals</h2>
|
|
60
84
|
<p class="gov-grid-note">Capabilities held by a machine identity, never by a person or a rank. Shown for completeness — nothing here can be granted.</p>
|
|
61
85
|
<div id="gov-principals"></div>
|
|
86
|
+
</section>
|
|
62
87
|
</section>
|
|
63
88
|
</main>
|
|
64
89
|
|
|
@@ -73,6 +98,7 @@
|
|
|
73
98
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
74
99
|
<script src="/builders/palette.js" defer></script>
|
|
75
100
|
<script src="/builders/dom-utils.js?v=2026-06-16-gate"></script>
|
|
76
|
-
<script src="/builders/
|
|
101
|
+
<script src="/builders/hall-kit.js"></script>
|
|
102
|
+
<script src="/builders/government.js?v=2026-08-18-government-ia"></script>
|
|
77
103
|
</body>
|
|
78
104
|
</html>
|
|
@@ -25,9 +25,16 @@
|
|
|
25
25
|
// gated server-side on the `government.manage` atom (archon floor). On 401 →
|
|
26
26
|
// web sign-in.
|
|
27
27
|
//
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
//
|
|
28
|
+
// SINCE R15 (goal 1000069, ADR 0175) this page carries the three-section IA —
|
|
29
|
+
// Constitution · Board Room · Ranks & Permissions — because Government is the
|
|
30
|
+
// page that answers "how is this project governed", and administration is only
|
|
31
|
+
// the third part of that answer. Tabs are OTBKit.makeTabs with hash deep links
|
|
32
|
+
// (#constitution / #board-room / #ranks). The first two sections are FRAMES
|
|
33
|
+
// until their build-out lands: R18 fills Constitution with the live values +
|
|
34
|
+
// change history, R19 adds the charter library, R16/R17 fill the Board Room
|
|
35
|
+
// with open items and the vote. Until then each frame states what belongs there
|
|
36
|
+
// and shows an honest kit empty state — never a fake or a hardcoded value that
|
|
37
|
+
// could drift from the real config.
|
|
31
38
|
|
|
32
39
|
(() => {
|
|
33
40
|
'use strict';
|
|
@@ -392,6 +399,34 @@
|
|
|
392
399
|
});
|
|
393
400
|
}
|
|
394
401
|
|
|
402
|
+
// ---- the three-section IA (R15) -------------------------------------------
|
|
403
|
+
|
|
404
|
+
// Tab order is the spec's — Constitution · Board Room · Ranks & Permissions —
|
|
405
|
+
// but the INITIAL tab is Ranks until R16/R18 fill the other two: landing the
|
|
406
|
+
// Archon on a frame when the working surface is one tab over would be IA
|
|
407
|
+
// winning over usefulness. Flip `initial` to 'constitution' when R18 lands.
|
|
408
|
+
function wireTabs() {
|
|
409
|
+
window.OTBKit.makeTabs({
|
|
410
|
+
mount: document.getElementById('gov-tabs'),
|
|
411
|
+
hash: true,
|
|
412
|
+
initial: 'ranks',
|
|
413
|
+
tabs: [
|
|
414
|
+
{ id: 'constitution', label: 'Constitution', panel: 'gov-panel-constitution' },
|
|
415
|
+
{ id: 'board-room', label: 'Board Room', panel: 'gov-panel-board' },
|
|
416
|
+
{ id: 'ranks', label: 'Ranks & Permissions', panel: 'gov-panel-ranks' },
|
|
417
|
+
],
|
|
418
|
+
});
|
|
419
|
+
// The frames' empty states — kit-standard, one line, no fake data. What this
|
|
420
|
+
// project actually RUNS is config the server owns; rendering it here before
|
|
421
|
+
// the R18 read exists would mean hardcoding a value that drifts.
|
|
422
|
+
document.getElementById('gov-constitution').innerHTML = window.OTBKit.emptyStateHtml(
|
|
423
|
+
'The live constitution — what this project runs today, and how it has changed — appears here when the Board Room opens.',
|
|
424
|
+
);
|
|
425
|
+
document.getElementById('gov-board').innerHTML = window.OTBKit.emptyStateHtml(
|
|
426
|
+
'Nothing is before the board. When a Full Idea clears the completeness grade, its window opens here.',
|
|
427
|
+
);
|
|
428
|
+
}
|
|
429
|
+
|
|
395
430
|
// ---- init ----------------------------------------------------------------
|
|
396
431
|
|
|
397
432
|
function showSealed() {
|
|
@@ -416,8 +451,9 @@
|
|
|
416
451
|
const rank = (me && (me.builder || me).rank || '').toLowerCase();
|
|
417
452
|
if (rank !== 'archon') { showSealed(); return; }
|
|
418
453
|
|
|
419
|
-
document.getElementById('gov-sub').textContent = '
|
|
454
|
+
document.getElementById('gov-sub').textContent = 'How this project is governed — the constitution it runs, the Board Room, and the ranks & permissions that administer it.';
|
|
420
455
|
document.getElementById('gov-body').hidden = false;
|
|
456
|
+
wireTabs();
|
|
421
457
|
wireForms();
|
|
422
458
|
try {
|
|
423
459
|
await load();
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
// 1. Pages — read live from the sidebar shell.js rendered, so rank + module
|
|
14
14
|
// gating come for free and can never drift from the nav. A hidden nav item
|
|
15
15
|
// is a hidden destination. (Cosmetic only; the server still gates each page.)
|
|
16
|
-
// 2. Sections — the sub-destinations of the
|
|
16
|
+
// 2. Sections — the sub-destinations of the four pages that have them. These
|
|
17
17
|
// cannot be read from another page's DOM, so they are declared below and
|
|
18
18
|
// held to the real ids by tests/hall_palette.mjs.
|
|
19
19
|
// 3. Records — id syntax: `1234`, `g 12`, `b 7`, `i 42`.
|
|
@@ -28,9 +28,10 @@
|
|
|
28
28
|
// element whose visibility decides whether the group is offered — the nav item
|
|
29
29
|
// itself for pages, the profile chip for Settings (which is not a nav item).
|
|
30
30
|
// Anchors must stay in step with their source of truth; the test asserts it:
|
|
31
|
-
// standing
|
|
32
|
-
// work
|
|
33
|
-
//
|
|
31
|
+
// standing → builders.js STANDING_GROUPS (+ shell.js VIEW_ALIASES)
|
|
32
|
+
// work → work.js makeTabs ids
|
|
33
|
+
// government → government.js makeTabs ids (the R15 three-section IA)
|
|
34
|
+
// settings → settings.js RAIL_GROUPS
|
|
34
35
|
var SECTIONS = [
|
|
35
36
|
{ parent: 'Standing', gate: 'nav-standing', items: [
|
|
36
37
|
{ label: 'Work', href: '/#standing-work' },
|
|
@@ -44,6 +45,11 @@
|
|
|
44
45
|
{ label: 'Backlog', href: '/work#backlog' },
|
|
45
46
|
{ label: 'Completed', href: '/work#completed' },
|
|
46
47
|
] },
|
|
48
|
+
{ parent: 'Government', gate: 'nav-government', items: [
|
|
49
|
+
{ label: 'Constitution', href: '/government#constitution' },
|
|
50
|
+
{ label: 'Board Room', href: '/government#board-room' },
|
|
51
|
+
{ label: 'Ranks & Permissions', href: '/government#ranks' },
|
|
52
|
+
] },
|
|
47
53
|
{ parent: 'Settings', gate: 'shell-user', items: [
|
|
48
54
|
{ label: 'Account', href: '/settings#account' },
|
|
49
55
|
{ label: 'Access', href: '/settings#access' },
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.224",
|
|
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.224",
|
|
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.224",
|
|
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
|
@@ -873,8 +873,10 @@ const { validateOrRespond, LIMITS, parseId, asyncHandler, corsPublicGet, parsePa
|
|
|
873
873
|
// landed since 1.19.221 with no explicit bump. run 32096034408. (task 1002620)
|
|
874
874
|
// 1.19.223 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
875
875
|
// landed since 1.19.222 with no explicit bump. run 32097491676. (task 1002620)
|
|
876
|
+
// 1.19.224 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
877
|
+
// landed since 1.19.223 with no explicit bump. run 32098083321. (task 1002620)
|
|
876
878
|
// ---------------------------------------------------------------------------
|
|
877
|
-
const CORE_VERSION = '1.19.
|
|
879
|
+
const CORE_VERSION = '1.19.224'; // CI auto-patch carrier (ADR 0161); see changelog above
|
|
878
880
|
|
|
879
881
|
// A namespaced logger so a module's log lines are attributable + consistent.
|
|
880
882
|
// Usage: const log = api.logger('dev-box'); log.info('mounted');
|
package/tests/hall_palette.mjs
CHANGED
|
@@ -111,6 +111,16 @@ test('Tasks tab anchors exist in work.js makeTabs', () => {
|
|
|
111
111
|
}
|
|
112
112
|
});
|
|
113
113
|
|
|
114
|
+
test('Government section anchors exist in government.js makeTabs (the R15 three-section IA)', () => {
|
|
115
|
+
const ids = [...read('government.js').matchAll(/\{ id: '([a-z-]+)', label: '[^']*', panel:/g)].map((m) => m[1]);
|
|
116
|
+
assert.ok(ids.length === 3, `sanity: found the three government tabs (${ids})`);
|
|
117
|
+
const declared = declaredHrefs((x) => x.startsWith('/government#'));
|
|
118
|
+
assert.ok(declared.length === 3, 'palette declares the three Government sections');
|
|
119
|
+
for (const h of declared) {
|
|
120
|
+
assert.ok(ids.includes(h.split('#')[1]), `${h} must be a real government.js tab id`);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
|
|
114
124
|
test('Settings panel anchors exist in settings.js RAIL_GROUPS', () => {
|
|
115
125
|
// RAIL_GROUPS is derived: RAIL_ITEMS.map(i => i.id).concat('extensions').
|
|
116
126
|
const src = read('settings.js');
|