@bongos/core 1.24.35 → 1.24.37

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 (112) hide show
  1. package/.bongos-core.json +128 -168
  2. package/.claude/skills/merge-mode/SKILL.md +1 -1
  3. package/docs/adr/0228-the-reading-room-owes-a-reference-content-rules-not-a-second-archetype.md +1 -1
  4. package/docs/copy-inventory.md +164 -219
  5. package/docs/copy-registry.json +323 -892
  6. package/docs/module-api-changelog.md +4 -0
  7. package/docs/onboarding/diagrams/README.md +1 -2
  8. package/docs/onboarding/primer.md +66 -22
  9. package/docs/page-inventory.json +39 -133
  10. package/docs/page-readings.json +882 -1346
  11. package/docs/recipes/ui-look-before-you-ship.md +2 -2
  12. package/modules/design-styles/skills/style/SKILL.md +2 -2
  13. package/modules/hall-ui/public/ai-studio.html +2 -2
  14. package/modules/hall-ui/public/atlas.html +2 -2
  15. package/modules/hall-ui/public/blockers.html +2 -2
  16. package/modules/hall-ui/public/board-room.html +2 -2
  17. package/modules/hall-ui/public/builders.js +8 -6
  18. package/modules/hall-ui/public/city.html +2 -2
  19. package/modules/hall-ui/public/collab.html +2 -2
  20. package/modules/hall-ui/public/commands.html +2 -2
  21. package/modules/hall-ui/public/copy-desk.html +2 -2
  22. package/modules/hall-ui/public/craft-mode.js +2 -2
  23. package/modules/hall-ui/public/deploy.html +2 -2
  24. package/modules/hall-ui/public/diagram-viewer.css +1 -1
  25. package/modules/hall-ui/public/diagram-viewer.js +5 -5
  26. package/modules/hall-ui/public/fleet-costs.js +3 -2
  27. package/modules/hall-ui/public/founding-mark.js +3 -2
  28. package/modules/hall-ui/public/gate.html +2 -2
  29. package/modules/hall-ui/public/goal-map.html +2 -2
  30. package/modules/hall-ui/public/goals.html +2 -2
  31. package/modules/hall-ui/public/government.html +2 -2
  32. package/modules/hall-ui/public/hall-render.js +62 -1
  33. package/modules/hall-ui/public/hall-widgets.js +11 -1
  34. package/modules/hall-ui/public/idea.html +2 -2
  35. package/modules/hall-ui/public/ideas.html +2 -2
  36. package/modules/hall-ui/public/index.html +4 -4
  37. package/modules/hall-ui/public/market-watch-item.html +2 -2
  38. package/modules/hall-ui/public/market-watch-rules.html +2 -2
  39. package/modules/hall-ui/public/market-watch.html +2 -2
  40. package/modules/hall-ui/public/modules.html +2 -2
  41. package/modules/hall-ui/public/money.html +92 -0
  42. package/modules/hall-ui/public/money.js +302 -0
  43. package/modules/hall-ui/public/money.states.json +15 -0
  44. package/modules/hall-ui/public/my-agents.html +2 -2
  45. package/modules/hall-ui/public/palette.js +22 -0
  46. package/modules/hall-ui/public/primer-live.js +101 -0
  47. package/modules/hall-ui/public/primer.html +10 -6
  48. package/modules/hall-ui/public/primer.js +93 -23
  49. package/modules/hall-ui/public/primer.states.json +54 -7
  50. package/modules/hall-ui/public/profile.html +2 -2
  51. package/modules/hall-ui/public/project-settings.css +2 -1
  52. package/modules/hall-ui/public/project-settings.html +6 -16
  53. package/modules/hall-ui/public/project-settings.js +2 -142
  54. package/modules/hall-ui/public/roadmap.html +2 -2
  55. package/modules/hall-ui/public/room.css +23 -121
  56. package/modules/hall-ui/public/roster.html +2 -2
  57. package/modules/hall-ui/public/sessions.html +2 -2
  58. package/modules/hall-ui/public/settings.html +2 -2
  59. package/modules/hall-ui/public/shell.js +21 -26
  60. package/modules/hall-ui/public/street.html +2 -2
  61. package/modules/hall-ui/public/studio.html +2 -2
  62. package/modules/hall-ui/public/style.css +8 -55
  63. package/modules/hall-ui/public/task.html +2 -2
  64. package/modules/hall-ui/public/thinking.html +2 -2
  65. package/modules/hall-ui/public/tweak-editor.html +2 -2
  66. package/modules/hall-ui/public/watch.html +2 -2
  67. package/modules/hall-ui/public/work.html +2 -2
  68. package/modules/hall-ui/records/founding-mark.md +4 -4
  69. package/modules/hall-ui/records/reading-rooms.md +2 -0
  70. package/modules/hall-ui/records/reference-room.md +2 -0
  71. package/modules/onboarding/founding-mode.js +6 -2
  72. package/modules/ui-design/kit/render.js +1 -1
  73. package/modules/ui-design/styles/README.md +2 -2
  74. package/package-lock.json +2 -2
  75. package/package.json +1 -1
  76. package/release-notes.json +12 -0
  77. package/scripts/bongos/gen-hall-sitemap.js +3 -0
  78. package/scripts/hall-preview/server.js +6 -11
  79. package/src/bongos/auth.js +0 -8
  80. package/src/bongos/serve-internal.js +43 -43
  81. package/src/module-api.js +1 -1
  82. package/tests/auth_resolve_failure.mjs +5 -4
  83. package/tests/craft_mode_home.mjs +6 -2
  84. package/tests/fleet_cost_view.mjs +2 -18
  85. package/tests/founding_builders.mjs +6 -5
  86. package/tests/founding_mode.mjs +7 -4
  87. package/tests/hall_board_world.mjs +44 -1
  88. package/tests/hall_fullscreen.mjs +1 -1
  89. package/tests/hall_loading.mjs +1 -1
  90. package/tests/hall_money_page.mjs +272 -0
  91. package/tests/hall_nav.mjs +29 -11
  92. package/tests/hall_oversight_world.mjs +1 -1
  93. package/tests/hall_page_gate_map.mjs +17 -7
  94. package/tests/hall_reading_room.mjs +385 -0
  95. package/tests/hall_reading_world.mjs +36 -30
  96. package/tests/nav_permission_atoms.mjs +3 -2
  97. package/tests/rank_tier_single_source.mjs +0 -1
  98. package/tests/ui_design_kit.mjs +1 -1
  99. package/modules/hall-ui/public/diagrams.css +0 -45
  100. package/modules/hall-ui/public/diagrams.html +0 -106
  101. package/modules/hall-ui/public/diagrams.states.json +0 -28
  102. package/modules/hall-ui/public/drachmae.html +0 -110
  103. package/modules/hall-ui/public/drachmae.js +0 -431
  104. package/modules/hall-ui/public/drachmae.states.json +0 -58
  105. package/modules/hall-ui/public/fleet.html +0 -69
  106. package/modules/hall-ui/public/fleet.js +0 -41
  107. package/modules/hall-ui/public/fleet.states.json +0 -14
  108. package/modules/hall-ui/public/ranks-founding.states.json +0 -12
  109. package/modules/hall-ui/public/ranks.html +0 -83
  110. package/modules/hall-ui/public/ranks.js +0 -229
  111. package/modules/hall-ui/public/ranks.states.json +0 -15
  112. package/tests/hall_reference_world.mjs +0 -352
@@ -3324,5 +3324,9 @@ is load-bearing: the script throws rather than guess if it is missing, and
3324
3324
  landed since 1.24.33 with no explicit bump. run 41899266144. (task 1002620)
3325
3325
  1.24.35 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3326
3326
  landed since 1.24.34 with no explicit bump. run 41902956083. (task 1002620)
3327
+ 1.24.36 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3328
+ landed since 1.24.35 with no explicit bump. run 41919172906. (task 1002620)
3329
+ 1.24.37 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3330
+ landed since 1.24.36 with no explicit bump. run 42099751558. (task 1002620)
3327
3331
  ---------------------------------------------------------------------------
3328
3332
  ```
@@ -64,8 +64,7 @@ Source: [`05-versioning.mmd`](05-versioning.mmd)
64
64
 
65
65
  ## Where builders see these
66
66
 
67
- The diagrams are surfaced inside the authenticated **builders' hall** at
68
- [`/builders/diagrams`](https://example.com/builders/diagrams) (linked from the hall home page) and inlined in the primer. `modules/hall-ui/public/diagrams.html` references each diagram's `.png`, and [`diagram-viewer.js`](../../../modules/hall-ui/public/diagram-viewer.js) progressively enhances it: it fetches the matching `.svg`, injects it inline, and turns it into a pan-and-zoom canvas (drag to pan, scroll to zoom, fullscreen). If the SVG can't be fetched it falls back to the static PNG. `server.js` serves `docs/onboarding/diagrams/` at `/builders/diagrams/` (both `.svg` and `.png`), so there's a single source of truth and no duplicated binaries.
67
+ The diagrams are surfaced inside the authenticated **builders' hall** in the Primer, each inlined in the chapter it illustrates (task 1005046 folded the old `/builders/diagrams` page into it; that URL now redirects to the Primer). `modules/hall-ui/public/primer.js` (`DIAGRAM_AT_CHAPTER`) references each diagram's `.png`, and [`diagram-viewer.js`](../../../modules/hall-ui/public/diagram-viewer.js) progressively enhances it: it fetches the matching `.svg`, injects it inline, and turns it into a pan-and-zoom canvas (drag to pan, scroll to zoom, fullscreen). If the SVG can't be fetched it falls back to the static PNG. `server.js` serves `docs/onboarding/diagrams/` at `/builders/diagrams/` (both `.svg` and `.png`), so there's a single source of truth and no duplicated binaries.
69
68
 
70
69
  ## Staying current (auto-update)
71
70
 
@@ -18,6 +18,8 @@ This primer teaches the **platform** — how you claim work and ship it, the sam
18
18
 
19
19
  You don't need to understand the Bongos schema to ship work. You just need to know: *claim a task, work on it inside your worktree, ship it.* The CLI handles the rest.
20
20
 
21
+ > **Reading the diagrams.** Most chapters below carry a diagram of the thing they explain, generated from the live system each time it deploys. A **● LIVE** mark is built and enforced today, **⤍ PLANNED** is designed and tracked but not built yet, and **○ reserved** exists in the database with no behaviour behind it. Drag a diagram to pan, scroll to zoom, or open it full screen.
22
+
21
23
  ## The claim → ship lifecycle
22
24
 
23
25
  Every piece of work moves through this loop:
@@ -47,7 +49,7 @@ The one thing that decides whether your ship is **instant** or **waits for an Ar
47
49
 
48
50
  | What your change touches | What happens |
49
51
  |---|---|
50
- | **Normal work** — game code, art, docs, tests, most of `src/` | **Auto-merges on green for any rank**, Xenos included. No approval. |
52
+ | **Normal work** — product code, art, docs, tests, most of `src/` | **Auto-merges on green for any rank**, Xenos included. No approval. |
51
53
  | **A protected "gate surface"** — migrations, server routes, the ship / deploy plumbing | Auto-merges **only if you are Metic or above** (rank trust). A Xenos or Thetes ship here **waits for an Archon** to approve. |
52
54
  | **The safety core** — the gate's own machinery, the deploy switch, the rank / permission enforcement | **Always** waits for an Archon, whatever your rank. |
53
55
 
@@ -55,26 +57,68 @@ So your first tasks **ship with no approval**: the newcomer chores — a tile, a
55
57
 
56
58
  ## The rank ladder
57
59
 
58
- Four ranks, in ancient-Greek-civilization order:
60
+ Your rank decides which work you can claim and which levers you can pull. There are four live ranks, lowest to highest:
61
+
62
+ | Rank | Who holds it | What it unlocks |
63
+ |------------|-----------------------------------------------|----------------------------------------------------------------------------------|
64
+ | **Xenos** | The newcomer. Every new builder starts here, with a deliberately small surface: onboarding, safe starter tasks, and your own standing. | Read every public page. Claim and ship tasks an Archon has flagged `newcomer_friendly`. Earn credits for shipped work and karma for ratified ideas. One claim at a time. |
65
+ | **Thetes** | The proven builder, who has shipped their first work. You reach it **automatically after your 3rd shipped task** — no one has to promote you. | Claim and ship **any** task in the general queue, and hold more than one claim. No triage, blockers, planning or task-shaping yet: those open at Metic. |
66
+ | **Metic** | The trusted builder. Most of the work happens here. | Claim any ready task. Triage the idea inbox, resolve blockers, run planning sessions, file security reports, and propose new version criteria for an Archon to ratify. |
67
+ | **Archon** | The steward of the whole system. | Create, promote and edit tasks and reshape their dependencies; grant or revoke ranks; close versions; confirm ships past the grader; decide vulnerability reports and override requests. |
68
+
69
+ ### How you advance
70
+
71
+ - **Xenos → Thetes** is automatic. Ship the newcomer-friendly tasks an Archon has opened to newcomers; on your **third** clean ship you are promoted to Thetes, out of the sandbox and with the whole queue open. No fee, no application.
72
+ - **Thetes → Metic** is granted by a standing Archon alone, to a builder whose judgement has earned the project's trust. Keep shipping; rank is granted, never bought.
73
+ - **Metic → Archon** is granted rarely, by a standing Archon, to a Metic who has shaped the project's direction. There is no checklist.
74
+
75
+ Karma does not promote you on its own (see the next chapter); it is evidence an Archon can weigh. Your own rank, and what the next one asks of you, is on **[Accomplishments → Where you stand](/builders#accomplishments-progress)**.
76
+
77
+ Rank lives on the `builders.rank` column in the production database and is checked server-side on every privileged request — **with no caching**. A demotion takes effect on your next request. You cannot escalate your own rank by editing local files; the server is the source of truth. See [ADR 0016](../adr/0016-trust-boundary-server-enforced-permissions.md) and [ADR 0034](../adr/0034-thetes-graduated-newcomer-rank.md) for the full trust model.
78
+
79
+ ## Credits and karma
80
+
81
+ Two separate tracks. You don't need to *do* anything special to earn either — claim a task, do good work, ship it, and the system tracks both. **Credits** measure the work you did; **karma** measures how other builders trust the way you do it. Neither is money. The formulas in full, with the code they live in, are in **[the credits and karma reference](drachmae-and-karma.md)**.
82
+
83
+ ### How you earn credits
84
+
85
+ Credits are a **contribution meter** for this project — they measure your work and are *not* money, not redeemable and not equity ([ADR 0387](../adr/0387-two-ledgers-credits-measure-work-money-stays-with-the-processor.md)); any pay or equity is set by the project separately. Every award is a row in an append-only log, so history is never rewritten, and your total stays with you if you leave and come back. They come from:
86
+
87
+ 1. **A cost-plus reward on each shipped session — the main one.** The server prices the AI tokens your session actually burned, at the published list price, and credits you that amount in USD **plus 20%** ([ADR 0054](../adr/0054-session-token-reward-cost-plus.md)). The cost is worked out on the server, so nobody can inflate their own award; a session that ships nothing earns nothing, and re-shipping the same session pays once.
88
+ 2. **Each task's own reward, adjusted by the kind of work** ([ADR 0023](../adr/0023-kind-multipliers-and-idea-bonus.md)): a captured learning or a resolved blocker is worth 1.5×, a decision record 1.3×, a bug fix 1.2×, a feature 1.0×, a refactor 0.9× and cleanup 0.8×.
89
+ 3. **An idea bonus.** Capture an idea that someone else later ships and you get 25% of that task's reward, on top of what the shipper earns.
90
+ 4. **Achievements** pay a small one-time bonus, and a ship that **deletes more lines than it adds** earns a small bonus too.
91
+ 5. **The security bounty.** Finding a flaw in the system's own walls pays by severity; the live rate card is below.
92
+
93
+ Which of the two main streams actually pays is per-project ([ADR 0146](../adr/<redacted><redacted>.md)): the default pays both, while a `cost-plus-only` project pays the session reward alone and treats each task's reward as an estimate.
94
+
95
+ ### When credits land
96
+
97
+ Credits land at the **`confirmed → shipped`** step — when your code actually merges to `main` and deploys — **not** when verification passes ([ADR 0120](../adr/0120-pay-on-land-and-builder-owned-rebase-gate.md)). A task that passes the grader but never lands earns nothing until it does, and releasing a task with `/builder-release` pays nothing.
98
+
99
+ ### The budget cap
100
+
101
+ Builders are **uncapped by default** — your spend is tracked (it is the cost side of the same coin the reward is computed from) but it never blocks you. An Archon *can* set a per-builder **monthly budget cap** as a brake on a runaway; if one is set for you, you get a warning at 80% and `/builder-ship` pauses at 100% until it's raised or cleared ([ADR 0085](../adr/0085-remove-default-per-builder-spend-cap.md)).
59
102
 
60
- | Rank | What it means | What it unlocks |
61
- |------------|------------------------------------------------------------------------|----------------------------------------------------------------------------------|
62
- | **Xenos** | Default for new builders. "Sandbox" tier. | Can only claim tasks flagged `newcomer_friendly`. Read everything. No mutations. |
63
- | **Thetes** | Graduated newcomer. You reach it **automatically after your 3rd shipped task** — no one has to promote you. | Claim **any** task in the general queue (not just newcomer-friendly). Still no triage/blocker/scope powers. |
64
- | **Metic** | Approved working rank. The "real builders." | Claim any ready task. Idea triage, blocker review. Most of the work happens here. |
65
- | **Archon** | Project keeper. | Scope mutations, rank changes, infra-level operations. |
103
+ ### Karma
66
104
 
67
- So the sandbox is short: ship three small `newcomer_friendly` tasks and the city opens the whole queue to you on its own (the jump to **Metic** — with its triage/trust powers — is still a deliberate Archon promotion). Rank lives on the `builders.rank` column in the production database and is checked server-side on every privileged request — **with no caching**. A demotion takes effect on your next request. You cannot escalate your own rank by editing local files; the server is the source of truth. See [ADR 0016](../adr/0016-trust-boundary-server-enforced-permissions.md) and [ADR 0034](../adr/0034-thetes-graduated-newcomer-rank.md) for the full trust model.
105
+ Karma is a **separate** counter that measures **peer trust**. It is earned when Metic-and-above builders upvote your confirmed work (tallied weekly, and nobody can vote on their own), when a proposal of yours is ratified, and when an idea you captured is promoted into a task. It can also go **down** if you break things. Reactions in Discord never mint karma — only rank-gated votes do.
68
106
 
69
- ## Example and karma
107
+ Karma shows up on your profile (with a 30-day trend), as a sortable column on the leaderboard, and as one input to your "builder strength" score. **It does not gate rank promotions**: those happen by ship count (Xenos → Thetes) or by an Archon's decision. A builder who ships fast but breaks things gains credits and loses karma; a builder who ships thoughtfully gains both.
70
108
 
71
- Two parallel reputation tracks. You don't need to *do* anything special to earn either — claim a task, do good work, ship it, and the system tracks both. The full mechanics (formulas, the kind table, the budget cap, every karma source) live in **[Example & karma — how your work is counted](drachmae-and-karma.md)**; here's the shape of it.
109
+ | | **Credits** | **Karma** |
110
+ |---|---|---|
111
+ | Measures | Output — work shipped | Peer trust — how others rate your work |
112
+ | Earned by | Shipping (session reward, task rewards, bonuses) | Metic+ peer votes, ratified proposals, promoted ideas |
113
+ | Direction | Only goes up (a correction is a new row) | Can go up or down |
114
+ | Spendable? | No — a contribution meter, not money or equity | No — a trust signal |
115
+ | Gates promotions? | No | No — it informs, it doesn't gate |
72
116
 
73
- - **Example** (called "credits" in code) are a **contribution meter** for the project — they measure your work and are *not* money, not redeemable and not equity ([ADR 0387](../adr/0387-two-ledgers-credits-measure-work-money-stays-with-the-processor.md)); any pay or equity is set by the project separately. They persist if you leave and come back. Most of your example now come from a **cost-plus reward on each shipped session**: the server prices the LLM tokens your work actually burned and credits you an amount sized by that real cost in USD **plus 20%** ([ADR 0054](../adr/0054-session-token-reward-cost-plus.md)). On top of that, each task pays its `credits_reward` adjusted by the *kind* of work (a captured learning or a resolved blocker is worth 1.5×; cleanup 0.8×), and capturing an idea that someone else then ships earns you a 25% bonus ([ADR 0023](../adr/0023-kind-multipliers-and-idea-bonus.md)). Credits land at the `confirmed → shipped` edge — when your code actually merges and deploys, not when verification passes ([ADR 0120](../adr/0120-pay-on-land-and-builder-owned-rebase-gate.md)). Which of those two streams actually pays is per-instance config ([ADR 0146](../adr/<redacted><redacted>.md)): the default pays both, while a `cost-plus-only` instance pays the session reward alone and treats each task's `credits_reward` as an advertised estimate only. See the standings on [/builders](https://example.com/builders).
117
+ The project's real numbers — what it has spent, what it has awarded builders for that spend, what it has paid out and what hosting costs — are on the **[Money](../../modules/hall-ui/public/money.html)** page, which opens for the people who steer the project.
74
118
 
75
- - **Karma** is a *separate* signal that measures **peer trust** — how other builders rate the *way* you work, not how much you ship. It's earned when Metic-and-above builders upvote your confirmed work (tallied weekly), when a proposal of yours is ratified, and when you capture ideas; it can also go *down* if you break things. Karma shows up on your profile (with a 30-day trend) and as a sortable column on the leaderboard, and it feeds your "builder strength" score. **It does not gate rank promotions** — those happen automatically by ship count (Xenos → Thetes after three ships) or by an Archon's deliberate decision. A builder who ships fast but breaks things gains example and loses karma; a builder who ships thoughtfully gains both.
119
+ ## How versions organise the work
76
120
 
77
- One more thing worth knowing: builders are **uncapped by default** — your spend is tracked (it's the cost side of the same coin the reward is computed from) but never blocks you. There's no default budget. An Archon *can* set a per-builder **monthly budget cap** as a manual brake on a runaway; if one is set for you, you get a warning at 80% and `/builder-ship` pauses at 100% until it's raised ([ADR 0085](../adr/0085-remove-default-per-builder-spend-cap.md)).
121
+ Every task belongs to a **version** — a named batch of work with a written definition of done. A **planning session** (`/planning-session`) writes a version's **done-when criteria** and seeds its task pool, each task with its dependencies and the rank it needs. The version is **building** while its tasks are claimed and shipped, and it **closes** when every criterion is met: its scope is archived and a guided review comes before the next version takes over. A project runs product versions (what its users get) and platform versions (how it builds) side by side, and `/status` rolls any version up into what is left.
78
122
 
79
123
  ## How to ask Claude about anything
80
124
 
@@ -100,7 +144,7 @@ As you work, Claude writes down durable facts — your standing preferences, a g
100
144
  - **The map** (`MEMORY.md`) — a short index loaded at the **start of every session**: one line per memory, just enough to know *what* is known and where the detail lives. Kept deliberately small.
101
145
  - **The drawer** — the full notes themselves. They live on your machine, sync to the server (so your memory follows you across machines), and are searchable with `/recall`. They cost nothing until something fetches them.
102
146
 
103
- The map stays light on its own: a session-start guard warns if it's drifting large, and an auto-tidy moves the oldest, least-relevant notes off the map into the drawer when it crosses a threshold — **nothing is deleted**, it's just no longer loaded every session (a `/recall` away when a task needs it). Your standing rules, and anything pinned, always stay on the map. Full picture: [ADR 0074](../adr/0074-memory-map-stays-light.md) and [diagram 4 — the architecture](diagrams/).
147
+ The map stays light on its own: a session-start guard warns if it's drifting large, and an auto-tidy moves the oldest, least-relevant notes off the map into the drawer when it crosses a threshold — **nothing is deleted**, it's just no longer loaded every session (a `/recall` away when a task needs it). Your standing rules, and anything pinned, always stay on the map. Full picture: [ADR 0074](../adr/0074-memory-map-stays-light.md) and the architecture diagram in [Get set up on your machine](#get-set-up-on-your-machine).
104
148
 
105
149
  ## Where to find more depth
106
150
 
@@ -111,23 +155,23 @@ The whole project's source-of-truth index is [`CLAUDE.md`](../../CLAUDE.md). Two
111
155
 
112
156
  Other depth, in roughly the order you'll need it:
113
157
 
114
- - [`docs/onboarding/example-and-karma.md`](drachmae-and-karma.md) — the full reward economy: how example and karma are earned, the cost-plus session reward, and the monthly budget cap
158
+ - [`docs/onboarding/drachmae-and-karma.md`](drachmae-and-karma.md) — the full credits and karma reference: every formula, the kind table, the budget cap, every karma source, and the code each lives in
115
159
  - [`docs/onboarding/slash-commands.md`](slash-commands.md) — which slash commands ship with Claude Code and which are this project's, and what to do about the ones that collide
116
160
  - [The Commands page](../../modules/hall-ui/public/commands.html) — every slash command and terminal command this project has, what each does and what it costs
117
161
  - [The Repo Atlas](../../modules/hall-ui/public/atlas.html) — a live map of the code: how it is organised and which modules stand on their own
118
162
  - [`docs/architecture.md`](../architecture.md) — live system: droplet, stack, schema, API surface
119
- - [`docs/modules-contract.md`](../modules-contract.md) — the product is built as a small core plus swappable `modules/<key>/` (the game, Discord, art, and more); this is the live roster and how a task lands inside one
163
+ - [`docs/modules-contract.md`](../modules-contract.md) — the product is built as a small core plus swappable `modules/<key>/` (Discord, art, government, and more); this is the live roster and how a task lands inside one
120
164
  - [`docs/canonical-permissions.md`](../canonical-permissions.md) — who can do what (rank gates)
121
165
  - [`GOVERNMENT.md`](../../GOVERNMENT.md) — how your project's government works and how to change it, in plain words
122
166
  - [`docs/file-map.md`](../file-map.md) — where every folder is and what it contains
123
167
  - [`docs/recipes/`](../recipes/) — long-form ops gotchas (read before deploying)
124
- - [`docs/onboarding/diagrams/`](diagrams/) — pan-and-zoom maps of the task lifecycle, rank ladder, the credit economy, the complete architecture (where your work runs and how it reaches production), and versioning
168
+ - [`docs/onboarding/diagrams/`](diagrams/README.md) — the sources of the five diagrams in this primer, regenerated from the live system on every deploy
125
169
 
126
170
  You don't need to read these now. Bookmark them; come back when something specific is unclear.
127
171
 
128
172
  ## Get set up on your machine
129
173
 
130
- You don't need to be a programmer to build here. Entry to the project is **approval-gated**: a stranger can't just sign in with GitHub — you first ask for entry on the [builders' hall](https://example.com/builders) and an Archon admits you. Since you're reading this gated primer, you've already been admitted.
174
+ You don't need to be a programmer to build here. How you get in **depends on the project**: some are open, so anyone can sign in with GitHub and start; others are approval-gated, so you first ask for entry on the [builders' hall](https://example.com/builders) and an Archon admits you. Since you're reading this primer, you're already in.
131
175
 
132
176
  ### Where your work runs — screen, worker, brain
133
177
 
@@ -137,7 +181,7 @@ Claude Code is **three pieces that can live in different places**:
137
181
  - **The worker** — the part that opens files, runs commands, edits code, runs the project.
138
182
  - **The brain** — the AI model itself. **Always on Anthropic's servers**.
139
183
 
140
- Today the worker runs in one place: **your own computer**, working on a clone of the project. The single map that shows the whole picture — your device, the per-builder memory layer, the server (authority *and* production), and how code travels to prod — is [diagram 4, *The complete architecture*](diagrams/).
184
+ Today the worker runs in one place: **your own computer**, working on a clone of the project. The single map that shows the whole picture — your device, the per-builder memory layer, the server (authority *and* production), and how code travels to prod — is the architecture diagram at the top of this chapter.
141
185
 
142
186
  > **Why a copy of the code at all?** The `/builder-*` commands you'll use every session aren't a separate download — they live *inside* the project's code (in `.claude/skills/`). The moment Claude Code **starts a session on a folder that already holds the code**, all the commands appear automatically. So "get the code" and "get the commands" are the same step — there's no plugin or zip to install. (One wrinkle: if you *clone the code mid-session into a folder that started empty*, the commands won't appear until you start a fresh session on that folder — step 3 handles it.)
143
187
 
@@ -187,8 +231,8 @@ npx bongos setup
187
231
 
188
232
  Run `/builder-start` to see what you can claim — no acknowledgment step needed, the queue is open. New builders see only `newcomer_friendly` tasks — small, well-scoped, easy to finish in one sitting. Pick one that looks interesting, claim it with `/builder-claim N`, do the work, and ship it with `/builder-ship`.
189
233
 
190
- When you ship your **first** task, example land in your column and you're inducted as a citizen of Example. Ship your **third** and you graduate to **Thetes** — the one-claim limit lifts and the whole general queue opens to you. Welcome.
234
+ When you ship your **first** task, credits land in your column and you're inducted as a citizen of Example. Ship your **third** and you graduate to **Thetes** — the one-claim limit lifts and the whole general queue opens to you. Welcome.
191
235
 
192
236
  ## Previewing your change
193
237
 
194
- Before you ship a change that touches the game, run **`/builder-stage`** to start your own private copy of the game on your computer (at `http://localhost:<port>`) with your current edits in it. Open the link, watch your change running for real, and only then ship it. Nothing you stage there touches the live game or anyone else's work.
238
+ Before you ship a change people will see, run **`/builder-stage`** to start your own private copy of the project on your computer (at `http://localhost:<port>`) with your current edits in it. Open the link, watch your change running for real, and only then ship it. Nothing you stage there touches the live project or anyone else's work.
@@ -10,10 +10,10 @@
10
10
  "An id changes only when the host prefix, the data-page value or the file name changes; that is a rename, and records keyed on the old id move with it."
11
11
  ],
12
12
  "counts": {
13
- "pages": 51,
13
+ "pages": 48,
14
14
  "surfaces": 3,
15
- "with_states": 45,
16
- "states": 381
15
+ "with_states": 42,
16
+ "states": 374
17
17
  },
18
18
  "surfaces": [
19
19
  {
@@ -22,7 +22,7 @@
22
22
  "at": "modules/hall-ui/public",
23
23
  "answers_at": "host prefix builders.",
24
24
  "origin": "https://builders.{apex}",
25
- "pages": 39
25
+ "pages": 36
26
26
  },
27
27
  {
28
28
  "id": "landing",
@@ -363,104 +363,6 @@
363
363
  "out"
364
364
  ]
365
365
  },
366
- {
367
- "id": "builders:diagrams",
368
- "surface": "builders",
369
- "module": "hall-ui",
370
- "page": "diagrams",
371
- "id_from": "data-page",
372
- "title": "Diagrams",
373
- "document_title": "How the system works — {{worldName}}",
374
- "path": "/diagrams",
375
- "url": "https://builders.{apex}/diagrams",
376
- "files": [
377
- "modules/hall-ui/public/diagrams.html",
378
- "modules/hall-ui/public/style.css",
379
- "modules/hall-ui/public/room.css",
380
- "modules/hall-ui/public/diagrams.css",
381
- "modules/hall-ui/public/diagram-viewer.css",
382
- "modules/hall-ui/public/dom-utils.js",
383
- "modules/hall-ui/public/shell-trail.js",
384
- "modules/hall-ui/public/craft-mode.js",
385
- "modules/hall-ui/public/shell.js",
386
- "modules/hall-ui/public/palette.js",
387
- "modules/hall-ui/public/diagram-viewer.js",
388
- "modules/hall-ui/public/copy-on-click.js"
389
- ],
390
- "states_files": [
391
- "modules/hall-ui/public/diagrams.states.json"
392
- ],
393
- "states": [
394
- "in",
395
- "out"
396
- ]
397
- },
398
- {
399
- "id": "builders:drachmae",
400
- "surface": "builders",
401
- "module": "hall-ui",
402
- "page": "drachmae",
403
- "id_from": "data-page",
404
- "title": "Drachmae & karma",
405
- "document_title": "Drachmae & karma — {{worldName}}",
406
- "path": "/drachmae",
407
- "url": "https://builders.{apex}/drachmae",
408
- "files": [
409
- "modules/hall-ui/public/drachmae.html",
410
- "modules/hall-ui/public/style.css",
411
- "modules/hall-ui/public/room.css",
412
- "modules/hall-ui/public/dom-utils.js",
413
- "modules/hall-ui/public/shell-trail.js",
414
- "modules/hall-ui/public/craft-mode.js",
415
- "modules/hall-ui/public/shell.js",
416
- "modules/hall-ui/public/palette.js",
417
- "modules/hall-ui/public/md-reader.js",
418
- "modules/hall-ui/public/hall-kit.js",
419
- "modules/hall-ui/public/drachmae.js",
420
- "modules/hall-ui/public/copy-on-click.js"
421
- ],
422
- "states_files": [
423
- "modules/hall-ui/public/drachmae.states.json"
424
- ],
425
- "states": [
426
- "read",
427
- "toc-open",
428
- "jump",
429
- "out"
430
- ]
431
- },
432
- {
433
- "id": "builders:fleet",
434
- "surface": "builders",
435
- "module": "hall-ui",
436
- "page": "fleet",
437
- "id_from": "data-page",
438
- "title": "Fleet costs",
439
- "document_title": "Fleet costs — {{worldName}}",
440
- "path": "/fleet",
441
- "url": "https://builders.{apex}/fleet",
442
- "files": [
443
- "modules/hall-ui/public/fleet.html",
444
- "modules/hall-ui/public/style.css",
445
- "modules/hall-ui/public/oversight.css",
446
- "modules/hall-ui/public/project-settings.css",
447
- "modules/hall-ui/public/dom-utils.js",
448
- "modules/hall-ui/public/shell-trail.js",
449
- "modules/hall-ui/public/craft-mode.js",
450
- "modules/hall-ui/public/shell.js",
451
- "modules/hall-ui/public/palette.js",
452
- "modules/hall-ui/public/hall-kit.js",
453
- "modules/hall-ui/public/fleet-costs.js",
454
- "modules/hall-ui/public/fleet.js"
455
- ],
456
- "states_files": [
457
- "modules/hall-ui/public/fleet.states.json"
458
- ],
459
- "states": [
460
- "ledger",
461
- "out"
462
- ]
463
- },
464
366
  {
465
367
  "id": "builders:gate",
466
368
  "surface": "builders",
@@ -893,6 +795,39 @@
893
795
  "out"
894
796
  ]
895
797
  },
798
+ {
799
+ "id": "builders:money",
800
+ "surface": "builders",
801
+ "module": "hall-ui",
802
+ "page": "money",
803
+ "id_from": "data-page",
804
+ "title": "Money",
805
+ "document_title": "Money — {{worldName}}",
806
+ "path": "/money",
807
+ "url": "https://builders.{apex}/money",
808
+ "files": [
809
+ "modules/hall-ui/public/money.html",
810
+ "modules/hall-ui/public/style.css",
811
+ "modules/hall-ui/public/oversight.css",
812
+ "modules/hall-ui/public/project-settings.css",
813
+ "modules/hall-ui/public/dom-utils.js",
814
+ "modules/hall-ui/public/shell-trail.js",
815
+ "modules/hall-ui/public/craft-mode.js",
816
+ "modules/hall-ui/public/shell.js",
817
+ "modules/hall-ui/public/palette.js",
818
+ "modules/hall-ui/public/hall-kit.js",
819
+ "modules/hall-ui/public/fleet-costs.js",
820
+ "modules/hall-ui/public/money.js"
821
+ ],
822
+ "states_files": [
823
+ "modules/hall-ui/public/money.states.json"
824
+ ],
825
+ "states": [
826
+ "money",
827
+ "hosting",
828
+ "out"
829
+ ]
830
+ },
896
831
  {
897
832
  "id": "builders:my-agents",
898
833
  "surface": "builders",
@@ -954,6 +889,7 @@
954
889
  "modules/hall-ui/public/shell.js",
955
890
  "modules/hall-ui/public/palette.js",
956
891
  "modules/hall-ui/public/md-reader.js",
892
+ "modules/hall-ui/public/primer-live.js",
957
893
  "modules/hall-ui/public/primer.js",
958
894
  "modules/hall-ui/public/diagram-viewer.js",
959
895
  "modules/hall-ui/public/copy-on-click.js"
@@ -964,6 +900,7 @@
964
900
  "states": [
965
901
  "in",
966
902
  "toc-open",
903
+ "jump",
967
904
  "out"
968
905
  ]
969
906
  },
@@ -1042,37 +979,6 @@
1042
979
  "states_files": [],
1043
980
  "states": []
1044
981
  },
1045
- {
1046
- "id": "builders:ranks",
1047
- "surface": "builders",
1048
- "module": "hall-ui",
1049
- "page": "ranks",
1050
- "id_from": "data-page",
1051
- "title": "Ranks",
1052
- "document_title": "Ranks — {{worldName}}",
1053
- "path": "/ranks",
1054
- "url": "https://builders.{apex}/ranks",
1055
- "files": [
1056
- "modules/hall-ui/public/ranks.html",
1057
- "modules/hall-ui/public/style.css",
1058
- "modules/hall-ui/public/dom-utils.js",
1059
- "modules/hall-ui/public/shell-trail.js",
1060
- "modules/hall-ui/public/craft-mode.js",
1061
- "modules/hall-ui/public/shell.js",
1062
- "modules/hall-ui/public/palette.js",
1063
- "modules/hall-ui/public/founding-mark.js",
1064
- "modules/hall-ui/public/ranks.js"
1065
- ],
1066
- "states_files": [
1067
- "modules/hall-ui/public/ranks.states.json",
1068
- "modules/hall-ui/public/ranks-founding.states.json"
1069
- ],
1070
- "states": [
1071
- "out",
1072
- "in",
1073
- "founding"
1074
- ]
1075
- },
1076
982
  {
1077
983
  "id": "builders:roadmap",
1078
984
  "surface": "builders",