@bongos/core 1.25.10 → 1.25.12

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.
Files changed (40) hide show
  1. package/.bongos-core.json +92 -37
  2. package/clients/bongos-client/README.md +1 -1
  3. package/clients/bongos-client/bongos-client.global.js +10 -0
  4. package/clients/bongos-client/index.cjs +10 -0
  5. package/clients/bongos-client/index.d.ts +13 -0
  6. package/clients/bongos-client/index.mjs +10 -0
  7. package/docs/adr/0406-every-project-gets-a-sandbox-that-follows-main-and-live-moves-only-when-a-person-promotes.md +108 -0
  8. package/docs/adr/README.md +1 -0
  9. package/docs/api/openapi.json +195 -3
  10. package/docs/api-reference.md +10 -1
  11. package/docs/file-map.md +1 -0
  12. package/docs/module-api-changelog.md +4 -0
  13. package/docs/page-readings.json +142 -142
  14. package/modules/front-door-guide/CLAUDE.md +15 -0
  15. package/modules/front-door-guide/claude.js +51 -0
  16. package/modules/front-door-guide/db.js +72 -0
  17. package/modules/front-door-guide/guide.js +139 -0
  18. package/modules/front-door-guide/limits.js +87 -0
  19. package/modules/front-door-guide/migrations/front_door_guide_001_conversations.sql +48 -0
  20. package/modules/front-door-guide/module.json +27 -0
  21. package/modules/front-door-guide/routes/front-door-guide.js +206 -0
  22. package/modules/front-door-guide/settings.js +68 -0
  23. package/modules/government/docket-vocab.js +1 -1
  24. package/modules/hall-ui/public/street-card.js +4 -0
  25. package/modules/hall-ui/public/street-desk.js +3 -3
  26. package/modules/hall-ui/public/street-inside.js +2 -2
  27. package/modules/provisioning/starter-bundles.js +3 -1
  28. package/package-lock.json +2 -2
  29. package/package.json +1 -1
  30. package/release-notes.json +16 -0
  31. package/scripts/bongos/publish-manifest.js +1 -0
  32. package/src/bongos/db-kernel.js +6 -2
  33. package/src/bongos/module-scope-map.js +5 -0
  34. package/src/bongos/routes/builders.js +26 -0
  35. package/src/module-api.js +1 -1
  36. package/tests/builder_card_requirement.mjs +28 -0
  37. package/tests/front_door_guide.mjs +410 -0
  38. package/tests/hall_street_desk.mjs +1 -1
  39. package/tests/hall_street_inside.mjs +1 -1
  40. package/tests/module_loader.mjs +1 -1
@@ -5,7 +5,7 @@
5
5
  "adr": "0341 D3",
6
6
  "reread": "node scripts/bongos/page-reader.js --stale",
7
7
  "how": ["Generated by node scripts/bongos/page-reader.js (BV2.TW04, task 1004315; ADR 0341 D3). Do not hand-edit.","One entry per page of docs/page-inventory.json. Lines are in page order: the default state first, and a line only another state shows sits where that state shows it, with its state named.","placement: placed = a docs/copy-registry.json row renders it (file, line, string_id); shared = shell text every page of the surface carries (top bar, sidebar, footer), with its row when the registry has one; unplaced = the registry cannot place it (a rewrite becomes an engineer task, ADR 0341 D4).","text keeps {…} where the registry row has a hole, or where a value the page read from its API was filled in. A string that is only such data is counted under omitted.data, not listed.","reading_hash is over the non-shared lines (key, section, text); files_hash is over the page's inventory files. --check compares files_hash only and never opens a browser.","Rendered through the hall-preview harness (hall) and the ui-design kit stub (landing, status), at 1280x800 with the clock pinned, so a reading is the fixture world's page."],
8
- "counts": {"pages":45,"lines":4408,"placed":1635,"shared":369,"unplaced":2404,"omitted_data":2980},
8
+ "counts": {"pages":45,"lines":4408,"placed":1635,"shared":369,"unplaced":2404,"omitted_data":2981},
9
9
  "pages": [
10
10
  {
11
11
  "id": "builders:ai-studio",
@@ -283,7 +283,7 @@
283
283
  "surface": "builders",
284
284
  "title": "The city",
285
285
  "states_read": ["city","fullscreen","focus","pins","living","card","card-ask"],
286
- "files_hash": "71c3ed36a93ff43e",
286
+ "files_hash": "3c25fd8c0304dc17",
287
287
  "reading_hash": "277096d903879a57",
288
288
  "counts": {"lines":26,"placed":9,"shared":6,"unplaced":11},
289
289
  "omitted": {"data":7},
@@ -2590,10 +2590,10 @@
2590
2590
  "surface": "builders",
2591
2591
  "title": "The street",
2592
2592
  "states_read": ["street","fullscreen","card","focus","here","inside-rules","inside-disputes","inside-people","inside-planning","inside-automation","inside-review","inside-release","inside-treasury","floor","amend","district","desk","desk-facts","desk-quiet","desk-people-builders","desk-people-tier","desk-disputes","desk-automation-goals","desk-release-core","desk-rules","desk-rules-category","desk-planning-priorities","desk-planning-ideas","desk-planning-blockers","pins","pins-pager","living","deck","deck-treasury","sitting","object","voted","admission","settled","blocker","blocker-more","report","report-more","core","core-more","recheck","recheck-more","idea","idea-more","queue","queue-more","automation","automation-more"],
2593
- "files_hash": "60c23fda46dd74d6",
2594
- "reading_hash": "e788e6bf4be8d68c",
2593
+ "files_hash": "9f27d4ebab0219e6",
2594
+ "reading_hash": "84dc42e85d9e23a3",
2595
2595
  "counts": {"lines":325,"placed":54,"shared":6,"unplaced":265},
2596
- "omitted": {"data":240},
2596
+ "omitted": {"data":241},
2597
2597
  "notes": ["fullscreen: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","card: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","floor: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","amend: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","desk: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","desk-facts: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","desk-quiet: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","desk-people-builders: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","desk-people-tier: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","desk-disputes: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","desk-automation-goals: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","desk-release-core: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","desk-rules: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","desk-rules-category: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","desk-planning-priorities: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","desk-planning-ideas: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","desk-planning-blockers: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","pins: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","pins-pager: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","living: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","deck: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","deck-treasury: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","sitting: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","object: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","voted: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","admission: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","settled: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","blocker: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","blocker-more: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","report: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","report-more: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","core: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","core-more: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","recheck: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","recheck-more: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","idea: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","idea-more: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","queue: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","queue-more: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","automation: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","automation-more: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood"],
2598
2598
  "lines": [
2599
2599
  {"key":"L0001","section":"skip link","text":"Skip to content","placement":"shared","file":"modules/hall-ui/public/shell.js","line":814,"string_id":"87cee78ca134"},
@@ -2618,7 +2618,7 @@
2618
2618
  {"key":"L0020","section":"page top","text":"5 need you","placement":"unplaced","state":"inside-disputes"},
2619
2619
  {"key":"L0021","section":"page top","text":"{…} in {…}","placement":"unplaced","state":"inside-rules"},
2620
2620
  {"key":"L0022","section":"page top","text":"Founding","placement":"unplaced","state":"here"},
2621
- {"key":"L0023","section":"page top","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9","state":"here","occurrences":4},
2621
+ {"key":"L0023","section":"page top","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9","state":"here","occurrences":5},
2622
2622
  {"key":"L0024","section":"page top","text":"AI {…}","placement":"unplaced","state":"inside-treasury"},
2623
2623
  {"key":"L0025","section":"page top","text":"{…} to ratify","placement":"unplaced","state":"inside-planning"},
2624
2624
  {"key":"L0026","section":"page top","text":"New {…}","placement":"unplaced","state":"inside-rules"},
@@ -2658,142 +2658,142 @@
2658
2658
  {"key":"L0060","section":"page top","text":"Ranks","placement":"unplaced","state":"inside-people"},
2659
2659
  {"key":"L0061","section":"page top","text":"§5 Money","placement":"unplaced","state":"here"},
2660
2660
  {"key":"L0062","section":"page top","text":"{…} · decides a…","placement":"unplaced","state":"here"},
2661
- {"key":"L0063","section":"page top","text":"Goal {…}","placement":"placed","file":"modules/hall-ui/public/gate.js","line":202,"string_id":"ec88b946ad16","state":"inside-people"},
2662
- {"key":"L0064","section":"page top","text":"Live this month","placement":"unplaced","state":"inside-release"},
2663
- {"key":"L0065","section":"page top","text":"{…} · decides al…","placement":"unplaced","state":"here"},
2664
- {"key":"L0066","section":"page top","text":"empty floor","placement":"unplaced","state":"here","occurrences":6},
2665
- {"key":"L0067","section":"page top","text":"{…}'s office","placement":"unplaced","state":"here"},
2666
- {"key":"L0068","section":"page top","text":"no {…} · {…} holds it","placement":"unplaced","state":"here"},
2667
- {"key":"L0069","section":"{…}","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","state":"inside-treasury","occurrences":25},
2668
- {"key":"L0070","section":"{…}","text":"B","placement":"unplaced","state":"inside-treasury","occurrences":36},
2669
- {"key":"L0071","section":"{…}","text":"you","placement":"unplaced","state":"inside-treasury","occurrences":9},
2670
- {"key":"L0072","section":"{…}","text":"change how this works","placement":"placed","file":"modules/hall-ui/public/street.html","line":171,"string_id":"3c593c73628a","state":"inside-treasury","occurrences":9},
2671
- {"key":"L0073","section":"{…}","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9","state":"inside-treasury","occurrences":16},
2672
- {"key":"L0074","section":"{…}","text":"No {…} yet","placement":"unplaced","state":"inside-treasury","occurrences":9},
2673
- {"key":"L0075","section":"{…}","text":"{…} holds {…}","placement":"unplaced","state":"inside-treasury","occurrences":9},
2674
- {"key":"L0076","section":"{…}","text":"the office","placement":"unplaced","state":"inside-treasury","occurrences":9},
2675
- {"key":"L0077","section":"{…}","text":"to {…} here","placement":"unplaced","state":"inside-treasury","occurrences":5},
2676
- {"key":"L0078","section":"{…}","text":"1 to do","placement":"unplaced","state":"inside-treasury","occurrences":2},
2677
- {"key":"L0079","section":"{…}","text":"{…} in a row","placement":"unplaced","state":"inside-treasury","occurrences":5},
2678
- {"key":"L0080","section":"{…}","text":"the {…}","placement":"unplaced","state":"inside-treasury"},
2679
- {"key":"L0081","section":"{…}","text":"this month","placement":"unplaced","state":"inside-treasury"},
2680
- {"key":"L0082","section":"{…}","text":"in reserve","placement":"unplaced","state":"inside-treasury"},
2681
- {"key":"L0083","section":"{…}","text":"Spend cap","placement":"unplaced","state":"inside-treasury"},
2682
- {"key":"L0084","section":"{…}","text":"off · no spend limit, the {…}","placement":"unplaced","state":"inside-treasury"},
2683
- {"key":"L0085","section":"{…}","text":"pots per {…}","placement":"unplaced","state":"inside-treasury"},
2684
- {"key":"L0086","section":"{…}","text":"Governor / Builder /…","placement":"unplaced","state":"inside-treasury"},
2685
- {"key":"L0087","section":"{…}","text":"maintenance","placement":"unplaced","state":"inside-treasury"},
2686
- {"key":"L0088","section":"{…}","text":"Bongos Core distribution","placement":"unplaced","state":"inside-treasury"},
2687
- {"key":"L0089","section":"{…}","text":"Account creation, managem…","placement":"unplaced","state":"inside-treasury"},
2688
- {"key":"L0090","section":"{…}","text":"Government","placement":"unplaced","state":"inside-treasury"},
2689
- {"key":"L0091","section":"{…}","text":"and 9 smaller pots","placement":"unplaced","state":"inside-treasury"},
2690
- {"key":"L0092","section":"{…}","text":"floor 5","placement":"unplaced","state":"inside-treasury","occurrences":2},
2691
- {"key":"L0093","section":"Spending matters","text":"Spending matters","placement":"unplaced","state":"inside-treasury"},
2692
- {"key":"L0094","section":"Spending matters","text":"1 {…} · oldest 1 min","placement":"unplaced","state":"inside-treasury"},
2693
- {"key":"L0095","section":"Spending matters","text":"open","placement":"placed","file":"modules/hall-ui/public/approval-queue.js","line":173,"string_id":"9a803563c948","state":"inside-treasury"},
2694
- {"key":"L0096","section":"Spending matters","text":"on {…}","placement":"unplaced","state":"inside-treasury"},
2695
- {"key":"L0097","section":"Spending matters","text":"WA","placement":"unplaced","state":"inside-treasury"},
2696
- {"key":"L0098","section":"Spending matters","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9","state":"inside-treasury"},
2697
- {"key":"L0099","section":"Spending matters","text":"{…} from the reserve?","placement":"unplaced","state":"inside-treasury"},
2698
- {"key":"L0100","section":"Spending matters","text":"{…} · today","placement":"unplaced","state":"inside-treasury"},
2699
- {"key":"L0101","section":"Spending matters","text":"7 builders earned 5,5… · today","placement":"unplaced","state":"inside-treasury"},
2700
- {"key":"L0102","section":"Spending matters","text":"{…} · 4w","placement":"unplaced","state":"inside-treasury","occurrences":2},
2701
- {"key":"L0103","section":"Spending matters","text":"the record","placement":"placed","file":"modules/hall-ui/public/street.html","line":188,"string_id":"4bde7b562cf4","state":"inside-treasury"},
2702
- {"key":"L0104","section":"Spending matters","text":"1 matter on the docket · 16 on the {…}","placement":"unplaced","state":"inside-treasury"},
2703
- {"key":"L0105","section":"Spending matters","text":"oct","placement":"unplaced","state":"inside-treasury"},
2704
- {"key":"L0106","section":"Spending matters","text":"sep","placement":"unplaced","state":"inside-treasury"},
2705
- {"key":"L0107","section":"Spending matters","text":"aug","placement":"unplaced","state":"inside-treasury"},
2706
- {"key":"L0108","section":"Spending matters","text":"jul","placement":"unplaced","state":"inside-treasury"},
2707
- {"key":"L0109","section":"Spending matters","text":"jun","placement":"unplaced","state":"inside-treasury"},
2708
- {"key":"L0110","section":"Spending matters","text":"may","placement":"unplaced","state":"inside-treasury"},
2709
- {"key":"L0111","section":"Spending matters","text":"{…} you","placement":"unplaced","state":"inside-treasury"},
2710
- {"key":"L0112","section":"Spending matters","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":746,"string_id":"fd1903586e8e","state":"inside-treasury"},
2711
- {"key":"L0113","section":"{…}","text":"floor 1","placement":"unplaced","state":"inside-release","occurrences":2},
2712
- {"key":"L0114","section":"Overrides","text":"Overrides","placement":"unplaced","state":"inside-release"},
2713
- {"key":"L0115","section":"Overrides","text":"1 {…} · oldest 3 weeks","placement":"unplaced","state":"inside-release"},
2714
- {"key":"L0116","section":"Overrides","text":"on {…}","placement":"unplaced","state":"inside-release"},
2715
- {"key":"L0117","section":"Overrides","text":"OR","placement":"unplaced","state":"inside-release"},
2716
- {"key":"L0118","section":"Overrides","text":"Override: Reconstruct the {…}-plus {…} {…} lost to the Windows transcript-encodi…","placement":"unplaced","state":"inside-release"},
2717
- {"key":"L0119","section":"Overrides","text":"{…} · 3 weeks","placement":"unplaced","state":"inside-release"},
2718
- {"key":"L0120","section":"Overrides","text":"hold","placement":"unplaced","state":"inside-release"},
2719
- {"key":"L0121","section":"Overrides","text":"mergeBlockReason coun… · today","placement":"unplaced","state":"inside-release"},
2720
- {"key":"L0122","section":"Overrides","text":"ship.js --regrade sil… · today","placement":"unplaced","state":"inside-release"},
2721
- {"key":"L0123","section":"Overrides","text":"Fix the failing cases… · today","placement":"unplaced","state":"inside-release"},
2722
- {"key":"L0124","section":"Overrides","text":"Ship reports say plai… · today","placement":"unplaced","state":"inside-release"},
2723
- {"key":"L0125","section":"Overrides","text":"the record","placement":"placed","file":"modules/hall-ui/public/street.html","line":188,"string_id":"4bde7b562cf4","state":"inside-release"},
2724
- {"key":"L0126","section":"Overrides","text":"1 matter on the docket · 60 on the {…}","placement":"unplaced","state":"inside-release"},
2725
- {"key":"L0127","section":"Overrides","text":"oct","placement":"unplaced","state":"inside-release"},
2726
- {"key":"L0128","section":"Overrides","text":"sep","placement":"unplaced","state":"inside-release"},
2727
- {"key":"L0129","section":"Overrides","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","state":"inside-release","occurrences":3},
2728
- {"key":"L0130","section":"Overrides","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9","state":"inside-release"},
2729
- {"key":"L0131","section":"Overrides","text":"and 48 more","placement":"unplaced","state":"inside-release"},
2730
- {"key":"L0132","section":"Overrides","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":746,"string_id":"fd1903586e8e","state":"inside-release"},
2731
- {"key":"L0133","section":"Reports","text":"Reports","placement":"unplaced","state":"inside-automation"},
2732
- {"key":"L0134","section":"Reports","text":"nothing {…} you · {…}","placement":"unplaced","state":"inside-automation"},
2733
- {"key":"L0135","section":"Reports","text":"on {…}","placement":"unplaced","state":"inside-automation"},
2734
- {"key":"L0136","section":"Reports","text":"Nothing {…} you here","placement":"unplaced","state":"inside-automation"},
2735
- {"key":"L0137","section":"Reports","text":"Unattended building s… · today","placement":"unplaced","state":"inside-automation"},
2736
- {"key":"L0138","section":"Reports","text":"the record","placement":"placed","file":"modules/hall-ui/public/street.html","line":188,"string_id":"4bde7b562cf4","state":"inside-automation"},
2737
- {"key":"L0139","section":"Reports","text":"1 matter on the docket · 1 on the {…}","placement":"unplaced","state":"inside-automation"},
2738
- {"key":"L0140","section":"Reports","text":"oct","placement":"unplaced","state":"inside-automation"},
2739
- {"key":"L0141","section":"Reports","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":746,"string_id":"fd1903586e8e","state":"inside-automation"},
2740
- {"key":"L0142","section":"{…}","text":"floor 7","placement":"unplaced","state":"inside-people"},
2741
- {"key":"L0143","section":"Goal {…}","text":"nothing {…} you · nothing {…}","placement":"unplaced","state":"inside-people"},
2742
- {"key":"L0144","section":"Goal {…}","text":"Nothing {…} you here","placement":"unplaced","state":"inside-people"},
2743
- {"key":"L0145","section":"Goal {…}","text":"nothing {…}","placement":"unplaced","state":"inside-people"},
2744
- {"key":"L0146","section":"Goal {…}","text":"nothing yet","placement":"unplaced","state":"inside-people"},
2745
- {"key":"L0147","section":"Goal {…}","text":"the record","placement":"placed","file":"modules/hall-ui/public/street.html","line":188,"string_id":"4bde7b562cf4","state":"inside-people"},
2746
- {"key":"L0148","section":"Goal {…}","text":"nothing on file yet","placement":"unplaced","state":"inside-people"},
2747
- {"key":"L0149","section":"{…}","text":"5 to do","placement":"unplaced","state":"inside-disputes"},
2748
- {"key":"L0150","section":"{…} reports","text":"{…} reports","placement":"unplaced","state":"inside-disputes"},
2749
- {"key":"L0151","section":"{…} reports","text":"{…} · oldest 16 weeks","placement":"unplaced","state":"inside-disputes"},
2750
- {"key":"L0152","section":"{…} reports","text":"open","placement":"placed","file":"modules/hall-ui/public/approval-queue.js","line":173,"string_id":"9a803563c948","state":"inside-disputes"},
2751
- {"key":"L0153","section":"{…} reports","text":"to fix","placement":"unplaced","state":"inside-disputes"},
2752
- {"key":"L0154","section":"{…} reports","text":"on {…}","placement":"unplaced","state":"inside-disputes"},
2753
- {"key":"L0155","section":"{…} reports","text":"SR","placement":"unplaced","state":"inside-disputes","occurrences":6},
2754
- {"key":"L0156","section":"{…} reports","text":"{…} · 16 weeks","placement":"unplaced","state":"inside-disputes"},
2755
- {"key":"L0157","section":"{…} reports","text":"{…} · 13 weeks","placement":"unplaced","state":"inside-disputes"},
2756
- {"key":"L0158","section":"{…} reports","text":"{…} · 7 weeks","placement":"unplaced","state":"inside-disputes"},
2757
- {"key":"L0159","section":"{…} reports","text":"{…} · 5 weeks","placement":"unplaced","state":"inside-disputes"},
2758
- {"key":"L0160","section":"{…} reports","text":"{…} · 4 weeks","placement":"unplaced","state":"inside-disputes"},
2759
- {"key":"L0161","section":"{…} reports","text":"{…} report — detail… · 4w","placement":"unplaced","state":"inside-disputes"},
2760
- {"key":"L0162","section":"{…} reports","text":"{…} report — detail… · 5w","placement":"unplaced","state":"inside-disputes"},
2761
- {"key":"L0163","section":"{…} reports","text":"{…} report — detai… · 4mo","placement":"unplaced","state":"inside-disputes","occurrences":2},
2762
- {"key":"L0164","section":"{…} reports","text":"the record","placement":"placed","file":"modules/hall-ui/public/street.html","line":188,"string_id":"4bde7b562cf4","state":"inside-disputes"},
2763
- {"key":"L0165","section":"{…} reports","text":"5 matters on the docket · 20 on the {…}","placement":"unplaced","state":"inside-disputes"},
2764
- {"key":"L0166","section":"{…} reports","text":"aug","placement":"unplaced","state":"inside-disputes"},
2765
- {"key":"L0167","section":"{…} reports","text":"jun","placement":"unplaced","state":"inside-disputes"},
2766
- {"key":"L0168","section":"{…} reports","text":"confirmed","placement":"placed","file":"modules/hall-ui/public/hall-render.js","line":465,"string_id":"d427d9dab01c","state":"inside-disputes"},
2767
- {"key":"L0169","section":"{…} reports","text":"{…} you","placement":"unplaced","state":"inside-disputes","occurrences":3},
2768
- {"key":"L0170","section":"{…} reports","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":746,"string_id":"fd1903586e8e","state":"inside-disputes"},
2769
- {"key":"L0171","section":"{…}","text":"the law book","placement":"unplaced","state":"inside-rules"},
2770
- {"key":"L0172","section":"{…}","text":"1 in {…}","placement":"unplaced","state":"inside-rules"},
2771
- {"key":"L0173","section":"{…}","text":"The landing {…}","placement":"unplaced","state":"inside-rules"},
2772
- {"key":"L0174","section":"{…}","text":"the docket · standing","placement":"unplaced","state":"inside-rules"},
2773
- {"key":"L0175","section":"{…}","text":"the AI","placement":"unplaced","state":"inside-rules"},
2774
- {"key":"L0176","section":"{…}","text":"what every agent reads at the start","placement":"unplaced","state":"inside-rules"},
2775
- {"key":"L0177","section":"{…}","text":"how it talks to you","placement":"unplaced","state":"inside-rules"},
2776
- {"key":"L0178","section":"{…}","text":"Interaction profile for this {…} — pitch replies accordingly:","placement":"unplaced","state":"inside-rules"},
2777
- {"key":"L0179","section":"{…}","text":"the {…}'s laws","placement":"unplaced","state":"inside-rules"},
2778
- {"key":"L0180","section":"{…}","text":"1. The landing {…} — {…}","placement":"unplaced","state":"inside-rules"},
2779
- {"key":"L0181","section":"{…}","text":"floor 2","placement":"unplaced","state":"inside-rules","occurrences":2},
2780
- {"key":"L0182","section":"New {…}","text":"New {…}","placement":"unplaced","state":"inside-rules"},
2781
- {"key":"L0183","section":"New {…}","text":"nothing {…} you · a {…} put to the counc…","placement":"unplaced","state":"inside-rules"},
2782
- {"key":"L0184","section":"New {…}","text":"on {…}","placement":"unplaced","state":"inside-rules"},
2783
- {"key":"L0185","section":"New {…}","text":"Nothing {…} you here","placement":"unplaced","state":"inside-rules"},
2784
- {"key":"L0186","section":"New {…}","text":"a {…} put to the {…}","placement":"unplaced","state":"inside-rules"},
2785
- {"key":"L0187","section":"New {…}","text":"The landing {…} sett… · today","placement":"unplaced","state":"inside-rules"},
2786
- {"key":"L0188","section":"New {…}","text":"The landing {…} {…}… · 4w","placement":"unplaced","state":"inside-rules"},
2787
- {"key":"L0189","section":"New {…}","text":"the record","placement":"placed","file":"modules/hall-ui/public/street.html","line":188,"string_id":"4bde7b562cf4","state":"inside-rules"},
2788
- {"key":"L0190","section":"New {…}","text":"2 on the {…}","placement":"unplaced","state":"inside-rules"},
2789
- {"key":"L0191","section":"New {…}","text":"oct","placement":"unplaced","state":"inside-rules"},
2790
- {"key":"L0192","section":"New {…}","text":"sep","placement":"unplaced","state":"inside-rules"},
2791
- {"key":"L0193","section":"New {…}","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":746,"string_id":"fd1903586e8e","state":"inside-rules"},
2792
- {"key":"L0194","section":"{…}","text":"how {…} the {…} run","placement":"unplaced","state":"here"},
2793
- {"key":"L0195","section":"{…}","text":"no preset yet","placement":"unplaced","state":"here"},
2794
- {"key":"L0196","section":"{…}","text":"Open {…}","placement":"placed","file":"modules/hall-ui/public/goals.js","line":84,"string_id":"f6f68ba322be","state":"here"},
2795
- {"key":"L0197","section":"{…}","text":"Laws are {…} one at a time.","placement":"unplaced","state":"here"},
2796
- {"key":"L0198","section":"{…}","text":"floor 8","placement":"unplaced","state":"here"},
2661
+ {"key":"L0063","section":"page top","text":"Cards","placement":"unplaced","state":"inside-people"},
2662
+ {"key":"L0064","section":"page top","text":"Goal {…}","placement":"placed","file":"modules/hall-ui/public/gate.js","line":202,"string_id":"ec88b946ad16","state":"inside-people"},
2663
+ {"key":"L0065","section":"page top","text":"Live this month","placement":"unplaced","state":"inside-release"},
2664
+ {"key":"L0066","section":"page top","text":"{…} · decides al…","placement":"unplaced","state":"here"},
2665
+ {"key":"L0067","section":"page top","text":"empty floor","placement":"unplaced","state":"here","occurrences":6},
2666
+ {"key":"L0068","section":"page top","text":"{…}'s office","placement":"unplaced","state":"here"},
2667
+ {"key":"L0069","section":"page top","text":"no {…} · {…} holds it","placement":"unplaced","state":"here"},
2668
+ {"key":"L0070","section":"{…}","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","state":"inside-treasury","occurrences":25},
2669
+ {"key":"L0071","section":"{…}","text":"B","placement":"unplaced","state":"inside-treasury","occurrences":36},
2670
+ {"key":"L0072","section":"{…}","text":"you","placement":"unplaced","state":"inside-treasury","occurrences":9},
2671
+ {"key":"L0073","section":"{…}","text":"change how this works","placement":"placed","file":"modules/hall-ui/public/street.html","line":171,"string_id":"3c593c73628a","state":"inside-treasury","occurrences":9},
2672
+ {"key":"L0074","section":"{…}","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9","state":"inside-treasury","occurrences":16},
2673
+ {"key":"L0075","section":"{…}","text":"No {…} yet","placement":"unplaced","state":"inside-treasury","occurrences":9},
2674
+ {"key":"L0076","section":"{…}","text":"{…} holds {…}","placement":"unplaced","state":"inside-treasury","occurrences":9},
2675
+ {"key":"L0077","section":"{…}","text":"the office","placement":"unplaced","state":"inside-treasury","occurrences":9},
2676
+ {"key":"L0078","section":"{…}","text":"to {…} here","placement":"unplaced","state":"inside-treasury","occurrences":5},
2677
+ {"key":"L0079","section":"{…}","text":"1 to do","placement":"unplaced","state":"inside-treasury","occurrences":2},
2678
+ {"key":"L0080","section":"{…}","text":"{…} in a row","placement":"unplaced","state":"inside-treasury","occurrences":5},
2679
+ {"key":"L0081","section":"{…}","text":"the {…}","placement":"unplaced","state":"inside-treasury"},
2680
+ {"key":"L0082","section":"{…}","text":"this month","placement":"unplaced","state":"inside-treasury"},
2681
+ {"key":"L0083","section":"{…}","text":"in reserve","placement":"unplaced","state":"inside-treasury"},
2682
+ {"key":"L0084","section":"{…}","text":"Spend cap","placement":"unplaced","state":"inside-treasury"},
2683
+ {"key":"L0085","section":"{…}","text":"off · no spend limit, the {…}","placement":"unplaced","state":"inside-treasury"},
2684
+ {"key":"L0086","section":"{…}","text":"pots per {…}","placement":"unplaced","state":"inside-treasury"},
2685
+ {"key":"L0087","section":"{…}","text":"Governor / Builder /…","placement":"unplaced","state":"inside-treasury"},
2686
+ {"key":"L0088","section":"{…}","text":"maintenance","placement":"unplaced","state":"inside-treasury"},
2687
+ {"key":"L0089","section":"{…}","text":"Bongos Core distribution","placement":"unplaced","state":"inside-treasury"},
2688
+ {"key":"L0090","section":"{…}","text":"Account creation, managem…","placement":"unplaced","state":"inside-treasury"},
2689
+ {"key":"L0091","section":"{…}","text":"Government","placement":"unplaced","state":"inside-treasury"},
2690
+ {"key":"L0092","section":"{…}","text":"and 9 smaller pots","placement":"unplaced","state":"inside-treasury"},
2691
+ {"key":"L0093","section":"{…}","text":"floor 5","placement":"unplaced","state":"inside-treasury","occurrences":2},
2692
+ {"key":"L0094","section":"Spending matters","text":"Spending matters","placement":"unplaced","state":"inside-treasury"},
2693
+ {"key":"L0095","section":"Spending matters","text":"1 {…} · oldest 1 min","placement":"unplaced","state":"inside-treasury"},
2694
+ {"key":"L0096","section":"Spending matters","text":"open","placement":"placed","file":"modules/hall-ui/public/approval-queue.js","line":173,"string_id":"9a803563c948","state":"inside-treasury"},
2695
+ {"key":"L0097","section":"Spending matters","text":"on {…}","placement":"unplaced","state":"inside-treasury"},
2696
+ {"key":"L0098","section":"Spending matters","text":"WA","placement":"unplaced","state":"inside-treasury"},
2697
+ {"key":"L0099","section":"Spending matters","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9","state":"inside-treasury"},
2698
+ {"key":"L0100","section":"Spending matters","text":"{…} from the reserve?","placement":"unplaced","state":"inside-treasury"},
2699
+ {"key":"L0101","section":"Spending matters","text":"{…} · today","placement":"unplaced","state":"inside-treasury"},
2700
+ {"key":"L0102","section":"Spending matters","text":"7 builders earned 5,5… · today","placement":"unplaced","state":"inside-treasury"},
2701
+ {"key":"L0103","section":"Spending matters","text":"{…} · 4w","placement":"unplaced","state":"inside-treasury","occurrences":2},
2702
+ {"key":"L0104","section":"Spending matters","text":"the record","placement":"placed","file":"modules/hall-ui/public/street.html","line":188,"string_id":"4bde7b562cf4","state":"inside-treasury"},
2703
+ {"key":"L0105","section":"Spending matters","text":"1 matter on the docket · 16 on the {…}","placement":"unplaced","state":"inside-treasury"},
2704
+ {"key":"L0106","section":"Spending matters","text":"oct","placement":"unplaced","state":"inside-treasury"},
2705
+ {"key":"L0107","section":"Spending matters","text":"sep","placement":"unplaced","state":"inside-treasury"},
2706
+ {"key":"L0108","section":"Spending matters","text":"aug","placement":"unplaced","state":"inside-treasury"},
2707
+ {"key":"L0109","section":"Spending matters","text":"jul","placement":"unplaced","state":"inside-treasury"},
2708
+ {"key":"L0110","section":"Spending matters","text":"jun","placement":"unplaced","state":"inside-treasury"},
2709
+ {"key":"L0111","section":"Spending matters","text":"may","placement":"unplaced","state":"inside-treasury"},
2710
+ {"key":"L0112","section":"Spending matters","text":"{…} you","placement":"unplaced","state":"inside-treasury"},
2711
+ {"key":"L0113","section":"Spending matters","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":746,"string_id":"fd1903586e8e","state":"inside-treasury"},
2712
+ {"key":"L0114","section":"{…}","text":"floor 1","placement":"unplaced","state":"inside-release","occurrences":2},
2713
+ {"key":"L0115","section":"Overrides","text":"Overrides","placement":"unplaced","state":"inside-release"},
2714
+ {"key":"L0116","section":"Overrides","text":"1 {…} · oldest 3 weeks","placement":"unplaced","state":"inside-release"},
2715
+ {"key":"L0117","section":"Overrides","text":"on {…}","placement":"unplaced","state":"inside-release"},
2716
+ {"key":"L0118","section":"Overrides","text":"OR","placement":"unplaced","state":"inside-release"},
2717
+ {"key":"L0119","section":"Overrides","text":"Override: Reconstruct the {…}-plus {…} {…} lost to the Windows transcript-encodi…","placement":"unplaced","state":"inside-release"},
2718
+ {"key":"L0120","section":"Overrides","text":"{…} · 3 weeks","placement":"unplaced","state":"inside-release"},
2719
+ {"key":"L0121","section":"Overrides","text":"hold","placement":"unplaced","state":"inside-release"},
2720
+ {"key":"L0122","section":"Overrides","text":"mergeBlockReason coun… · today","placement":"unplaced","state":"inside-release"},
2721
+ {"key":"L0123","section":"Overrides","text":"ship.js --regrade sil… · today","placement":"unplaced","state":"inside-release"},
2722
+ {"key":"L0124","section":"Overrides","text":"Fix the failing cases… · today","placement":"unplaced","state":"inside-release"},
2723
+ {"key":"L0125","section":"Overrides","text":"Ship reports say plai… · today","placement":"unplaced","state":"inside-release"},
2724
+ {"key":"L0126","section":"Overrides","text":"the record","placement":"placed","file":"modules/hall-ui/public/street.html","line":188,"string_id":"4bde7b562cf4","state":"inside-release"},
2725
+ {"key":"L0127","section":"Overrides","text":"1 matter on the docket · 60 on the {…}","placement":"unplaced","state":"inside-release"},
2726
+ {"key":"L0128","section":"Overrides","text":"oct","placement":"unplaced","state":"inside-release"},
2727
+ {"key":"L0129","section":"Overrides","text":"sep","placement":"unplaced","state":"inside-release"},
2728
+ {"key":"L0130","section":"Overrides","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","state":"inside-release","occurrences":3},
2729
+ {"key":"L0131","section":"Overrides","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9","state":"inside-release"},
2730
+ {"key":"L0132","section":"Overrides","text":"and 48 more","placement":"unplaced","state":"inside-release"},
2731
+ {"key":"L0133","section":"Overrides","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":746,"string_id":"fd1903586e8e","state":"inside-release"},
2732
+ {"key":"L0134","section":"Reports","text":"Reports","placement":"unplaced","state":"inside-automation"},
2733
+ {"key":"L0135","section":"Reports","text":"nothing {…} you · {…}","placement":"unplaced","state":"inside-automation"},
2734
+ {"key":"L0136","section":"Reports","text":"on {…}","placement":"unplaced","state":"inside-automation"},
2735
+ {"key":"L0137","section":"Reports","text":"Nothing {…} you here","placement":"unplaced","state":"inside-automation"},
2736
+ {"key":"L0138","section":"Reports","text":"Unattended building s… · today","placement":"unplaced","state":"inside-automation"},
2737
+ {"key":"L0139","section":"Reports","text":"the record","placement":"placed","file":"modules/hall-ui/public/street.html","line":188,"string_id":"4bde7b562cf4","state":"inside-automation"},
2738
+ {"key":"L0140","section":"Reports","text":"1 matter on the docket · 1 on the {…}","placement":"unplaced","state":"inside-automation"},
2739
+ {"key":"L0141","section":"Reports","text":"oct","placement":"unplaced","state":"inside-automation"},
2740
+ {"key":"L0142","section":"Reports","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":746,"string_id":"fd1903586e8e","state":"inside-automation"},
2741
+ {"key":"L0143","section":"{…}","text":"floor 8","placement":"unplaced","state":"inside-people","occurrences":2},
2742
+ {"key":"L0144","section":"Goal {…}","text":"nothing {…} you · nothing {…}","placement":"unplaced","state":"inside-people"},
2743
+ {"key":"L0145","section":"Goal {…}","text":"Nothing {…} you here","placement":"unplaced","state":"inside-people"},
2744
+ {"key":"L0146","section":"Goal {…}","text":"nothing {…}","placement":"unplaced","state":"inside-people"},
2745
+ {"key":"L0147","section":"Goal {…}","text":"nothing yet","placement":"unplaced","state":"inside-people"},
2746
+ {"key":"L0148","section":"Goal {…}","text":"the record","placement":"placed","file":"modules/hall-ui/public/street.html","line":188,"string_id":"4bde7b562cf4","state":"inside-people"},
2747
+ {"key":"L0149","section":"Goal {…}","text":"nothing on file yet","placement":"unplaced","state":"inside-people"},
2748
+ {"key":"L0150","section":"{…}","text":"5 to do","placement":"unplaced","state":"inside-disputes"},
2749
+ {"key":"L0151","section":"{…} reports","text":"{…} reports","placement":"unplaced","state":"inside-disputes"},
2750
+ {"key":"L0152","section":"{…} reports","text":"{…} · oldest 16 weeks","placement":"unplaced","state":"inside-disputes"},
2751
+ {"key":"L0153","section":"{…} reports","text":"open","placement":"placed","file":"modules/hall-ui/public/approval-queue.js","line":173,"string_id":"9a803563c948","state":"inside-disputes"},
2752
+ {"key":"L0154","section":"{…} reports","text":"to fix","placement":"unplaced","state":"inside-disputes"},
2753
+ {"key":"L0155","section":"{…} reports","text":"on {…}","placement":"unplaced","state":"inside-disputes"},
2754
+ {"key":"L0156","section":"{…} reports","text":"SR","placement":"unplaced","state":"inside-disputes","occurrences":6},
2755
+ {"key":"L0157","section":"{…} reports","text":"{…} · 16 weeks","placement":"unplaced","state":"inside-disputes"},
2756
+ {"key":"L0158","section":"{…} reports","text":"{…} · 13 weeks","placement":"unplaced","state":"inside-disputes"},
2757
+ {"key":"L0159","section":"{…} reports","text":"{…} · 7 weeks","placement":"unplaced","state":"inside-disputes"},
2758
+ {"key":"L0160","section":"{…} reports","text":"{…} · 5 weeks","placement":"unplaced","state":"inside-disputes"},
2759
+ {"key":"L0161","section":"{…} reports","text":"{…} · 4 weeks","placement":"unplaced","state":"inside-disputes"},
2760
+ {"key":"L0162","section":"{…} reports","text":"{…} report — detail… · 4w","placement":"unplaced","state":"inside-disputes"},
2761
+ {"key":"L0163","section":"{…} reports","text":"{…} report — detail… · 5w","placement":"unplaced","state":"inside-disputes"},
2762
+ {"key":"L0164","section":"{…} reports","text":"{…} report — detai… · 4mo","placement":"unplaced","state":"inside-disputes","occurrences":2},
2763
+ {"key":"L0165","section":"{…} reports","text":"the record","placement":"placed","file":"modules/hall-ui/public/street.html","line":188,"string_id":"4bde7b562cf4","state":"inside-disputes"},
2764
+ {"key":"L0166","section":"{…} reports","text":"5 matters on the docket · 20 on the {…}","placement":"unplaced","state":"inside-disputes"},
2765
+ {"key":"L0167","section":"{…} reports","text":"aug","placement":"unplaced","state":"inside-disputes"},
2766
+ {"key":"L0168","section":"{…} reports","text":"jun","placement":"unplaced","state":"inside-disputes"},
2767
+ {"key":"L0169","section":"{…} reports","text":"confirmed","placement":"placed","file":"modules/hall-ui/public/hall-render.js","line":465,"string_id":"d427d9dab01c","state":"inside-disputes"},
2768
+ {"key":"L0170","section":"{…} reports","text":"{…} you","placement":"unplaced","state":"inside-disputes","occurrences":3},
2769
+ {"key":"L0171","section":"{…} reports","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":746,"string_id":"fd1903586e8e","state":"inside-disputes"},
2770
+ {"key":"L0172","section":"{…}","text":"the law book","placement":"unplaced","state":"inside-rules"},
2771
+ {"key":"L0173","section":"{…}","text":"1 in {…}","placement":"unplaced","state":"inside-rules"},
2772
+ {"key":"L0174","section":"{…}","text":"The landing {…}","placement":"unplaced","state":"inside-rules"},
2773
+ {"key":"L0175","section":"{…}","text":"the docket · standing","placement":"unplaced","state":"inside-rules"},
2774
+ {"key":"L0176","section":"{…}","text":"the AI","placement":"unplaced","state":"inside-rules"},
2775
+ {"key":"L0177","section":"{…}","text":"what every agent reads at the start","placement":"unplaced","state":"inside-rules"},
2776
+ {"key":"L0178","section":"{…}","text":"how it talks to you","placement":"unplaced","state":"inside-rules"},
2777
+ {"key":"L0179","section":"{…}","text":"Interaction profile for this {…} — pitch replies accordingly:","placement":"unplaced","state":"inside-rules"},
2778
+ {"key":"L0180","section":"{…}","text":"the {…}'s laws","placement":"unplaced","state":"inside-rules"},
2779
+ {"key":"L0181","section":"{…}","text":"1. The landing {…} — {…}","placement":"unplaced","state":"inside-rules"},
2780
+ {"key":"L0182","section":"{…}","text":"floor 2","placement":"unplaced","state":"inside-rules","occurrences":2},
2781
+ {"key":"L0183","section":"New {…}","text":"New {…}","placement":"unplaced","state":"inside-rules"},
2782
+ {"key":"L0184","section":"New {…}","text":"nothing {…} you · a {…} put to the counc…","placement":"unplaced","state":"inside-rules"},
2783
+ {"key":"L0185","section":"New {…}","text":"on {…}","placement":"unplaced","state":"inside-rules"},
2784
+ {"key":"L0186","section":"New {…}","text":"Nothing {…} you here","placement":"unplaced","state":"inside-rules"},
2785
+ {"key":"L0187","section":"New {…}","text":"a {…} put to the {…}","placement":"unplaced","state":"inside-rules"},
2786
+ {"key":"L0188","section":"New {…}","text":"The landing {…} sett… · today","placement":"unplaced","state":"inside-rules"},
2787
+ {"key":"L0189","section":"New {…}","text":"The landing {…} {…}… · 4w","placement":"unplaced","state":"inside-rules"},
2788
+ {"key":"L0190","section":"New {…}","text":"the record","placement":"placed","file":"modules/hall-ui/public/street.html","line":188,"string_id":"4bde7b562cf4","state":"inside-rules"},
2789
+ {"key":"L0191","section":"New {…}","text":"2 on the {…}","placement":"unplaced","state":"inside-rules"},
2790
+ {"key":"L0192","section":"New {…}","text":"oct","placement":"unplaced","state":"inside-rules"},
2791
+ {"key":"L0193","section":"New {…}","text":"sep","placement":"unplaced","state":"inside-rules"},
2792
+ {"key":"L0194","section":"New {…}","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":746,"string_id":"fd1903586e8e","state":"inside-rules"},
2793
+ {"key":"L0195","section":"{…}","text":"how {…} the {…} run","placement":"unplaced","state":"here"},
2794
+ {"key":"L0196","section":"{…}","text":"no preset yet","placement":"unplaced","state":"here"},
2795
+ {"key":"L0197","section":"{…}","text":"Open {…}","placement":"placed","file":"modules/hall-ui/public/goals.js","line":84,"string_id":"f6f68ba322be","state":"here"},
2796
+ {"key":"L0198","section":"{…}","text":"Laws are {…} one at a time.","placement":"unplaced","state":"here"},
2797
2797
  {"key":"L0199","section":"§7 {…}","text":"nothing {…} you · whoever may put a relea…","placement":"unplaced","state":"here"},
2798
2798
  {"key":"L0200","section":"§7 {…}","text":"on {…}","placement":"unplaced","state":"here"},
2799
2799
  {"key":"L0201","section":"§7 {…}","text":"Nothing {…} you here","placement":"unplaced","state":"here"},
@@ -0,0 +1,15 @@
1
+ # @bongos/core — installed platform dependency (not your project's CLAUDE.md)
2
+
3
+ This file is a placeholder shipped inside the **@bongos/core** package. The core's own
4
+ internal agent notes are intentionally omitted from the published artifact so they cannot
5
+ load into your instance's context.
6
+
7
+ **It does not govern this repository.** Your own root `CLAUDE.md`, your `.claude/`
8
+ directory, and the live Bongos database are the source of truth for how work happens here
9
+ and who may do what.
10
+
11
+ You are seeing this only because an agent opened a file under `node_modules/@bongos/core/`.
12
+ Nothing in here needs to be read to use the platform — run `bongos help` for commands.
13
+
14
+ _To work ON the platform core itself, use the standalone @bongos/core source repository,
15
+ not this vendored copy._
@@ -0,0 +1,51 @@
1
+ // modules/front-door-guide/claude.js — the one Claude Messages API call behind the
2
+ // start-a-project guide (task 1005272), on the platform's own key.
3
+ //
4
+ // The SDK is required lazily, so an instance with the guide off never loads it, and the
5
+ // client is injectable so the tests run a mocked one and never spend real money.
6
+ // Thinking cannot be switched off on the default model; `effort` keeps a chat reply
7
+ // short and cheap, and `max_tokens` bounds the bill of one reply (thinking included).
8
+
9
+ 'use strict';
10
+
11
+ const CALL_TIMEOUT_MS = 30_000;
12
+
13
+ // createClient(apiKey, { sdk }) — the live client. The key goes only to the SDK.
14
+ function createClient(apiKey, { sdk = null } = {}) {
15
+ const mod = sdk || require('@anthropic-ai/sdk');
16
+ const Anthropic = mod.Anthropic || mod.default || mod;
17
+ return new Anthropic({ apiKey, timeout: CALL_TIMEOUT_MS, maxRetries: 1 });
18
+ }
19
+
20
+ // buildRequest — the request body, kept separate so a test can read it.
21
+ function buildRequest({ settings, system, messages }) {
22
+ return {
23
+ model: settings.model,
24
+ max_tokens: settings.maxReplyTokens,
25
+ output_config: { effort: settings.effort },
26
+ system,
27
+ messages: messages.map((m) => ({ role: m.role, content: m.content })),
28
+ };
29
+ }
30
+
31
+ // askGuide({ client, settings, system, messages }) →
32
+ // { ok: true, stopReason, content, usage, model }
33
+ // { ok: false, error } a thrown SDK error (network, 4xx, 5xx); nothing was billed.
34
+ // Never throws.
35
+ async function askGuide({ client, settings, system, messages }) {
36
+ let res;
37
+ try {
38
+ res = await client.messages.create(buildRequest({ settings, system, messages }));
39
+ } catch (e) {
40
+ return { ok: false, error: `api_error${e && e.status ? ` ${e.status}` : ''}` };
41
+ }
42
+ return {
43
+ ok: true,
44
+ stopReason: res && res.stop_reason,
45
+ content: (res && res.content) || [],
46
+ usage: (res && res.usage) || {},
47
+ model: (res && res.model) || settings.model,
48
+ };
49
+ }
50
+
51
+ module.exports = { createClient, buildRequest, askGuide, CALL_TIMEOUT_MS };
@@ -0,0 +1,72 @@
1
+ // modules/front-door-guide/db.js — the SQL behind the start-a-project guide (task
2
+ // 1005272). Every function takes an optional executor so a test can hand in a fake; the
3
+ // default is the shared pool. Money is integer micro-dollars; Postgres returns BIGINT
4
+ // sums as strings, so every read goes through Number().
5
+
6
+ 'use strict';
7
+
8
+ const exec = (executor) => executor || ((text, params) => require('../../src/module-api').pool.query(text, params));
9
+
10
+ async function createConversation(tokenHash, visitorHash, executor) {
11
+ const { rows } = await exec(executor)(
12
+ `INSERT INTO front_door_guide_conversations (token_hash, visitor_hash)
13
+ VALUES ($1, $2)
14
+ RETURNING id, visitor_hash, messages, visitor_messages, spend_micro, status, end_reason, created_at`,
15
+ [tokenHash, visitorHash]);
16
+ return rows[0];
17
+ }
18
+
19
+ // The conversation, only when the caller holds its token.
20
+ async function getConversation(id, tokenHash, executor) {
21
+ const { rows } = await exec(executor)(
22
+ `SELECT id, visitor_hash, messages, visitor_messages, spend_micro, status, end_reason, created_at
23
+ FROM front_door_guide_conversations WHERE id = $1 AND token_hash = $2`, [id, tokenHash]);
24
+ return rows[0] || null;
25
+ }
26
+
27
+ // The whole site's spend since the start of this UTC 'day' or 'month'.
28
+ async function siteSpendMicro(period, executor) {
29
+ if (period !== 'day' && period !== 'month') throw new Error('period must be day or month');
30
+ const { rows } = await exec(executor)(
31
+ `SELECT COALESCE(SUM(cost_micro), 0) AS spend FROM front_door_guide_calls
32
+ WHERE created_at >= (date_trunc($1, now() AT TIME ZONE 'UTC') AT TIME ZONE 'UTC')`, [period]);
33
+ return Number(rows[0].spend) || 0;
34
+ }
35
+
36
+ // One visitor's answered messages and spend over the last 24 hours, across every
37
+ // conversation they started: a new chat does not reset their cap.
38
+ async function visitorUsage(visitorHash, executor) {
39
+ const { rows } = await exec(executor)(
40
+ `SELECT COUNT(*) AS messages, COALESCE(SUM(cost_micro), 0) AS spend FROM front_door_guide_calls
41
+ WHERE visitor_hash = $1 AND created_at >= now() - interval '24 hours'`, [visitorHash]);
42
+ return { messages: Number(rows[0].messages) || 0, spendMicro: Number(rows[0].spend) || 0 };
43
+ }
44
+
45
+ // recordTurn — one answered visitor message, in one statement: the call's ledger row and
46
+ // the conversation's new transcript, count, spend and status.
47
+ async function recordTurn(convId, { messages, status, endReason }, call, executor) {
48
+ const { rows } = await exec(executor)(
49
+ `WITH c AS (
50
+ INSERT INTO front_door_guide_calls
51
+ (conversation_id, visitor_hash, model, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, cost_micro, stop_reason)
52
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)
53
+ RETURNING cost_micro)
54
+ UPDATE front_door_guide_conversations
55
+ SET messages = $10::jsonb, visitor_messages = visitor_messages + 1,
56
+ spend_micro = spend_micro + (SELECT cost_micro FROM c),
57
+ status = $11, end_reason = $12, updated_at = now()
58
+ WHERE id = $1
59
+ RETURNING id, visitor_hash, messages, visitor_messages, spend_micro, status, end_reason, created_at`,
60
+ [convId, call.visitorHash, call.model, call.inputTokens, call.outputTokens, call.cacheReadTokens,
61
+ call.cacheWriteTokens, call.costMicro, call.stopReason, JSON.stringify(messages), status, endReason || null]);
62
+ return rows[0];
63
+ }
64
+
65
+ // Close a conversation without a call (a cap was already reached on arrival).
66
+ async function endConversation(convId, endReason, executor) {
67
+ await exec(executor)(
68
+ `UPDATE front_door_guide_conversations SET status = 'ended', end_reason = $2, updated_at = now() WHERE id = $1`,
69
+ [convId, endReason]);
70
+ }
71
+
72
+ module.exports = { createConversation, getConversation, siteSpendMicro, visitorUsage, recordTurn, endConversation };