@bongos/core 1.19.473 → 1.19.474
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.bongos-core.json +30 -20
- package/docs/adr/0228-the-reading-room-owes-a-reference-content-rules-not-a-second-archetype.md +44 -0
- package/docs/adr/README.md +1 -0
- package/docs/copy-inventory.md +25 -23
- package/docs/copy-registry.json +80 -52
- package/docs/module-api-changelog.md +2 -0
- package/modules/hall-ui/public/drachmae.html +50 -44
- package/modules/hall-ui/public/drachmae.js +147 -59
- package/modules/hall-ui/public/drachmae.states.json +20 -26
- package/modules/hall-ui/public/md-reader.js +10 -4
- package/modules/hall-ui/public/room.css +116 -3
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/src/module-api.js +1 -1
- package/tests/hall_reference_world.mjs +222 -0
package/.bongos-core.json
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
"artifact": "bongos-core",
|
|
3
3
|
"manifest_schema": 1,
|
|
4
4
|
"generator": "scripts/gds/package-core.js",
|
|
5
|
-
"core_version": "1.19.
|
|
6
|
-
"core_contract": "1.19.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.19.474",
|
|
6
|
+
"core_contract": "1.19.474",
|
|
7
|
+
"source_commit": "cbed4469409e30c69a32b07f647a33f1ad72764e",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-09-02T15:
|
|
9
|
+
"built_at": "2026-09-02T15:40:28.383Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
|
-
"docs_redacted":
|
|
12
|
+
"docs_redacted": 412,
|
|
13
13
|
"agent_docs_stubbed": 24,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 1835,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 2271,
|
|
20
|
+
"tree_sha256": "4f93b9431f1f6511a3839bfad51625dc009b96fcece556e986af904e9ab62d63",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/blocker-review/SKILL.md",
|
|
@@ -1644,10 +1644,15 @@
|
|
|
1644
1644
|
"mode": "0000644",
|
|
1645
1645
|
"sha256": "19a6e49700fa63ef781c3fa9b96d868785995c4037b078543b354e45c6db823f"
|
|
1646
1646
|
},
|
|
1647
|
+
{
|
|
1648
|
+
"path": "docs/adr/0228-the-reading-room-owes-a-reference-content-rules-not-a-second-archetype.md",
|
|
1649
|
+
"mode": "0000644",
|
|
1650
|
+
"sha256": "5dd1936d04cd259b2f56eea3c272ea35850d9272b68d9e314692dc58c04e4aed"
|
|
1651
|
+
},
|
|
1647
1652
|
{
|
|
1648
1653
|
"path": "docs/adr/README.md",
|
|
1649
1654
|
"mode": "0000644",
|
|
1650
|
-
"sha256": "
|
|
1655
|
+
"sha256": "7957f1adf1329b402729e4b8ea14ea5279ef9b58b38ac5c6e711107909d13b8f"
|
|
1651
1656
|
},
|
|
1652
1657
|
{
|
|
1653
1658
|
"path": "docs/api-reference.md",
|
|
@@ -1682,12 +1687,12 @@
|
|
|
1682
1687
|
{
|
|
1683
1688
|
"path": "docs/copy-inventory.md",
|
|
1684
1689
|
"mode": "0000644",
|
|
1685
|
-
"sha256": "
|
|
1690
|
+
"sha256": "aeebc3c4c680301220b1d6109608e04bff778041934da47a4eb81c7a63f66141"
|
|
1686
1691
|
},
|
|
1687
1692
|
{
|
|
1688
1693
|
"path": "docs/copy-registry.json",
|
|
1689
1694
|
"mode": "0000644",
|
|
1690
|
-
"sha256": "
|
|
1695
|
+
"sha256": "a56f2f9079612548b0c1232afc214e1f94c3a6f861bf3657ec5d4c6f897a25ed"
|
|
1691
1696
|
},
|
|
1692
1697
|
{
|
|
1693
1698
|
"path": "docs/design/apex-pass-2-direction.md",
|
|
@@ -2137,7 +2142,7 @@
|
|
|
2137
2142
|
{
|
|
2138
2143
|
"path": "docs/module-api-changelog.md",
|
|
2139
2144
|
"mode": "0000644",
|
|
2140
|
-
"sha256": "
|
|
2145
|
+
"sha256": "0e5739856bba05e57c75990fa302988e3e9b3f6d4ec8cc47cbcdd975daebad32"
|
|
2141
2146
|
},
|
|
2142
2147
|
{
|
|
2143
2148
|
"path": "docs/modules-contract.md",
|
|
@@ -4137,17 +4142,17 @@
|
|
|
4137
4142
|
{
|
|
4138
4143
|
"path": "modules/hall-ui/public/drachmae.html",
|
|
4139
4144
|
"mode": "0000644",
|
|
4140
|
-
"sha256": "
|
|
4145
|
+
"sha256": "25cf34cf723e8ca2fb492f589fb3415e51aab0b2ab187bad77f2c270248c61b8"
|
|
4141
4146
|
},
|
|
4142
4147
|
{
|
|
4143
4148
|
"path": "modules/hall-ui/public/drachmae.js",
|
|
4144
4149
|
"mode": "0000644",
|
|
4145
|
-
"sha256": "
|
|
4150
|
+
"sha256": "7da97f075f12cb479491d43d5501b9e39aecfd36a250c066917c7381db292872"
|
|
4146
4151
|
},
|
|
4147
4152
|
{
|
|
4148
4153
|
"path": "modules/hall-ui/public/drachmae.states.json",
|
|
4149
4154
|
"mode": "0000644",
|
|
4150
|
-
"sha256": "
|
|
4155
|
+
"sha256": "bc27c8079a69a0d2a1cee6f376db0c86bb22b282818734e8795046cec898ed6b"
|
|
4151
4156
|
},
|
|
4152
4157
|
{
|
|
4153
4158
|
"path": "modules/hall-ui/public/fanfare.wav",
|
|
@@ -4322,7 +4327,7 @@
|
|
|
4322
4327
|
{
|
|
4323
4328
|
"path": "modules/hall-ui/public/md-reader.js",
|
|
4324
4329
|
"mode": "0000644",
|
|
4325
|
-
"sha256": "
|
|
4330
|
+
"sha256": "ac9cc29bf8f480c7bd9560309a36a540e33421d65bfdbdbd2d24cd9808dc51d1"
|
|
4326
4331
|
},
|
|
4327
4332
|
{
|
|
4328
4333
|
"path": "modules/hall-ui/public/modules.css",
|
|
@@ -4497,7 +4502,7 @@
|
|
|
4497
4502
|
{
|
|
4498
4503
|
"path": "modules/hall-ui/public/room.css",
|
|
4499
4504
|
"mode": "0000644",
|
|
4500
|
-
"sha256": "
|
|
4505
|
+
"sha256": "cdc1b17139a9752fb90c6866a7c2ec114d3255002176fd5a4812a1b1df9b4617"
|
|
4501
4506
|
},
|
|
4502
4507
|
{
|
|
4503
4508
|
"path": "modules/hall-ui/public/sessions.css",
|
|
@@ -6667,12 +6672,12 @@
|
|
|
6667
6672
|
{
|
|
6668
6673
|
"path": "package-lock.json",
|
|
6669
6674
|
"mode": "0000644",
|
|
6670
|
-
"sha256": "
|
|
6675
|
+
"sha256": "7ac1efdfd6206b8eed68fe2b06c4020c2e93652369dc9c43d5ef5b8615c09adb"
|
|
6671
6676
|
},
|
|
6672
6677
|
{
|
|
6673
6678
|
"path": "package.json",
|
|
6674
6679
|
"mode": "0000644",
|
|
6675
|
-
"sha256": "
|
|
6680
|
+
"sha256": "644b5140f039216491e355536933459469d0fd23b26c2a3c45b2368d8c2e0462"
|
|
6676
6681
|
},
|
|
6677
6682
|
{
|
|
6678
6683
|
"path": "public-docs/index.html",
|
|
@@ -8327,7 +8332,7 @@
|
|
|
8327
8332
|
{
|
|
8328
8333
|
"path": "src/module-api.js",
|
|
8329
8334
|
"mode": "0000644",
|
|
8330
|
-
"sha256": "
|
|
8335
|
+
"sha256": "9e3d4023c04a2851d2af8f0ddcb41d9883ffbdf06d865c6b2890fa6ebdd5e9e6"
|
|
8331
8336
|
},
|
|
8332
8337
|
{
|
|
8333
8338
|
"path": "src/module-loader/catalog.js",
|
|
@@ -9754,6 +9759,11 @@
|
|
|
9754
9759
|
"mode": "0000644",
|
|
9755
9760
|
"sha256": "09a7aadf345c75208af035a0f6fad1ecfe10ff056b025d885361647d4e8127b9"
|
|
9756
9761
|
},
|
|
9762
|
+
{
|
|
9763
|
+
"path": "tests/hall_reference_world.mjs",
|
|
9764
|
+
"mode": "0000644",
|
|
9765
|
+
"sha256": "efa4896db5902cdad99cbaa82787a39394a41753e0ff086d4e6582514178b1c0"
|
|
9766
|
+
},
|
|
9757
9767
|
{
|
|
9758
9768
|
"path": "tests/hall_roster_world.mjs",
|
|
9759
9769
|
"mode": "0000644",
|
package/docs/adr/0228-the-reading-room-owes-a-reference-content-rules-not-a-second-archetype.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# ADR 0228 — The reading room owes a reference its content rules, not a second archetype
|
|
2
|
+
|
|
3
|
+
**Status:** accepted · **Date:** 2026-09-02 · **Task:** [task 1003473](https://cloudbongos.com/builders#/task/1003473) · **Goal:** 1000081 (the builders' hall in the chrome world)
|
|
4
|
+
|
|
5
|
+
## Context
|
|
6
|
+
|
|
7
|
+
Task 1003306 built the reading-room archetype (`modules/hall-ui/public/room.css`) for the primer: a progress hairline under the top bar, the room's name alone over the ground, a glass table of contents beside a `--bg-card` article card, numbered sections, and an acknowledge gate at the end. Task 1003307 found that drachmae (`/builders/drachmae`, the "how you get paid" doc) had been wearing half of that room since task 1472 — no `room.css`, no `room` class, unstyled loading states — and repaired the source without moving the screen.
|
|
8
|
+
|
|
9
|
+
What was left was a design question rather than a repair: the archetype was designed for ONE document and now serves two, and the second is not shaped like the first. The primer is a linear onboarding read with a gate at the end. Drachmae is a **reference**: people open it to answer one question about how they get paid, it carries a live table (the security bounty rates, fetched from `/public/bounty-table`), and it is scanned and deep-linked rather than read start to finish. The task asked what the room owes a reference, and whether that is a variant of `.page-head--room` and `room.css` or the same room with different content rules.
|
|
10
|
+
|
|
11
|
+
Rendering the page through the kit against the fixture harness before touching it found four things no floor measures:
|
|
12
|
+
|
|
13
|
+
- The shared markdown reader (`md-reader.js`) parsed headings to `###` only, so the doc's six `####` earning sources — the very questions a reader arrives with — rendered as paragraphs beginning with a literal `####`.
|
|
14
|
+
- The bold rule refused an inner `*`, so `**It's the API *list* price, deliberately**` showed its asterisks.
|
|
15
|
+
- The live rate card was appended as the LAST section, after the doc's own "See it / dig deeper" links: an appendix to a footer.
|
|
16
|
+
- A deep link into the page landed nowhere: the document arrives after `load`, so the browser's own fragment jump found nothing, and `:target` resolved against nothing.
|
|
17
|
+
|
|
18
|
+
One thing the task said to raise rather than decide: the mock's `.pane` carries a `--rule-soft` hairline while the shell's `.scroll` is `border: 1px solid transparent`, and `docs/design/hall-direction-v2.md` §6 says v3 has "no hairline edge". Changing `.scroll` repaints all 27 hall pages, so it is an owner decision. It was raised in task 1003470 and the owner closed it: **the transparent edge stands.** This task inherits that decision — the article, the skeleton and the failure note stay the shell's `.scroll`, and nothing is repainted.
|
|
19
|
+
|
|
20
|
+
## Decision
|
|
21
|
+
|
|
22
|
+
**The same room, one body modifier, and the difference is content rules.** `drachmae.html` opts into `room room--reference`; `room.css` §8 is what the modifier switches on. Nothing about the composition changes — the head keeps `.page-head--room` (in a reading room the document *is* the page, and that is as true of a reference), the glass contents sit beside the card, the measure and the rhythm are the archetype's — because the room is right for both documents. What the room does for a reader who is *looking* rather than *reading* is:
|
|
23
|
+
|
|
24
|
+
1. **The linear-read instruments are off.** No progress hairline (the page omits the markup; §1 stays for the primer, whose gate is fed by it), no section counters (`content: none` on the h2's and the contents' `::before`), no "About a five-minute read" (the sub line says what kind of document this is). `primer.css` is no longer loaded: it holds only the acknowledge gate.
|
|
25
|
+
2. **The outline goes to h3 depth, nests, and lights the trail.** `drachmae.js` collects `h2[id], h3[id]` from the RENDERED article — so `*not*` and a link in a heading arrive as words, and the live section inserted below is one more heading in order — nests h3s under their part (`.primer-toc__sub`), and the scrollspy lights the entry AND its part (`.is-trail`). On a phone the collapsed toggle rides under the top bar (`position: sticky` at the room's 760px breakpoint, on the card's ground at 92% because light's glass has no blur and prose showed through the bare tint) and its middle (`#primer-toc-current`) names the part the reader is in.
|
|
26
|
+
3. **Every heading is an address.** `.room-anchor` on every h2/h3/h4: the heading's own id as a real `<a href>`, a 24px box of its own, ALWAYS visible in the faint ink (an address is part of the content, not a hover secret, and a phone has no hover), the accent when it is the one the reader arrived at, copying the absolute link on click. The landing is the page's: `landOnHash()` scrolls to the target after the document, the live section AND the fonts (a swap after the jump moved the landing 300px short on a phone and past it on a desktop), and marks it `.is-target` until the next hash change hands the mark back to `:target`.
|
|
27
|
+
4. **The live table is a section ahead of the closing links,** not an appendix after them: `insertBountySection` puts it before the h2 matching `/^see it/i`, and falls back to appending if the footer is retitled.
|
|
28
|
+
|
|
29
|
+
**The parser reaches h4, slugs a linked heading by its text, and renders nested emphasis.** `md-reader.js` is `#{1,4}` in both regexes (the heading and the paragraph break), the bold rule is `\*\*(.+?)\*\*`, and `slugify` strips a markdown link down to its text first so the copied address is `#<redacted>` rather than the target's path. The primer's markdown has no `####` and no linked heading, so its render is unchanged; `room.css` gives the h4 a rule (the body face at the body size, one weight step up) and the measure.
|
|
30
|
+
|
|
31
|
+
## Alternatives rejected
|
|
32
|
+
|
|
33
|
+
- **A second archetype sheet (`reference.css`) or a `.page-head--reference` voice.** It would be `room.css` again with the counter deleted, and the head is the same voice for the same reason. The third scanned document (the ranks ladder, the API docs) takes the four rules by one body class.
|
|
34
|
+
- **Hover-only anchors,** the documentation-site default. A phone has no hover, and on a reference the addresses are content.
|
|
35
|
+
- **An accordion outline** that shows a part's h3s only while the reader is in it. Fourteen entries fit beside the card at 1440, and the sub-questions are what a reader is scanning FOR — hiding them defeats the outline.
|
|
36
|
+
- **Placing the live table inside the prose that describes it** (under the `####` bounty source). It would lose its outline entry and its deep link, which for a live schedule are the point.
|
|
37
|
+
- **Teaching the kit stub to serve the markdown** so the states file could pin the populated document under both bases. The kit's stub (`modules/ui-design/kit/serve.js`) is the ui-design module's; the states file documents that the populated render is the harness's job, as `primer.states.json` already does.
|
|
38
|
+
|
|
39
|
+
## Consequences
|
|
40
|
+
|
|
41
|
+
- `tests/hall_reference_world.mjs` pins the modifier, the instruments' absence (and the primer's keeping them), the outline, the anchors, the landing order, the table's placement, the h4 rule, and RUNS the reader in a vm for the h4, the slug and the nested emphasis.
|
|
42
|
+
- The primer is untouched; `tests/hall_reading_world.mjs` still passes on it. The reader change reaches every document the hall renders through `OTBMdReader`; both changes only add rendering where a literal marker showed before.
|
|
43
|
+
- Measured through the kit against the harness: 24 renders + 2 reduced-motion passes, all clean, at 1440/390/320 in both modes, across `read`, `toc-open`, `jump` and `out`.
|
|
44
|
+
- Honest limits: no page has been used in a real browser by a person; the kit stub still renders the failure note for this page (documented in the states file); the `:target` mark on the initial landing is script-set, since the browser resolved `:target` before the heading existed.
|
package/docs/adr/README.md
CHANGED
|
@@ -313,6 +313,7 @@ This keeps the decision history honest and traceable.
|
|
|
313
313
|
| 0224 | [**Module-owned skills reach the core checkout as untracked, self-ignored copies with a manifest: the self-copy guard stays, the dev path is a flag, and the file map skips what the module documents** ([task 1003330](https://cloudbongos.com/builders#/task/1003330) · goal 1000083). `materializeClaude`'s self-copy guard is right (a core copying itself is a no-op at best), but Claude Code discovers only `.claude/skills/` at the project root, so a builder IN the core checkout could not invoke any of the nine ui-design skills written there. Decisions: **D1** `node scripts/gds/claude-materialize.js --module-skills-only [--dry-run] [--clean]` calls `materializeModuleSkillsIntoCore`: the same roster, gate and slug rule as step 1b, verbatim copies (no bongosify: the checkout runs `node scripts/gds/…`), a core-owned name kept, a disabled module's excluded; the guard untouched. **D2** untracked and self-ignored: a generated `.claude/skills/.module-skills.json` manifest and a `.gitignore` that ignores itself, the manifest and every materialised dir; each run removes what the last manifest named then lands the current set (byte-identical on repeat; a dropped declaration disappears); `--clean` stops after the removal. **D3** `gen-file-map.js` and `tests/file_map.mjs` skip materialised names by the manifest (a module skill is documented by its module's README, not by the notes sidecar). **D4** init from a checkout that carries the copies still lands them through step 1b, transformed, and never the dotfiles. **D5** pinned end to end in `tests/claude_materialize.mjs`. Rejected: dropping the guard; committing the copies; symlinks or junctions; notes for dirs not in the repository.](<redacted>.md) | materialiser / skills |
|
|
314
314
|
| 0225 | [**Privacy suppresses cross-project surfaces only: a private builder still appears on their own project's roster** ([task 1003443](https://cloudbongos.com/builders#/task/1003443) · goal 1000075). The accepted privacy spec defined its two flags inconsistently for one case: `hide_stats` suppresses "everything derived from the CROSS-PROJECT rollup" (qualified, so an in-project leaderboard is out of scope) while `account_visibility: private` said "absent from search, LEADERBOARDS, sitemap" (unqualified, so it read as covering the in-project one too) — and PV2 demands "ONE shared predicate used by every public read: … leaderboards …" while `modules/economy/credits.js`'s `leaderboard()` is a bare `SELECT … FROM builders` with no join and no predicate. Read one way that is an unshipped PV2 violation in main; read the other it is correct, and nothing settled which. **Owner decision (2026-08-30): privacy suppresses CROSS-PROJECT surfaces only.** A `private` builder is absent from `/u/<handle>`, platform search, the sitemap, Explore and the recruiting reach, and still appears on the roster of a project they build on — a project's record of its own work is the project's business. Two consequences are the point of recording it: `credits.leaderboard()` is **correct as written** (adding a predicate there would be a regression, not a fix — exactly what a literal PV2 reading would have done), and PV2's "leaderboards" means the cross-project ones. The spec was amended rather than annotated: the D1 row and both `active · public` matrix rows now say *cross-project*, the two `active · private` rows drop "absent everywhere" (the file's most misreadable phrase) for "absent from every cross-project surface", PV2's ship-table row is qualified, and the boundary lands as the **third rule** under D2 beside "`hide_stats` beats everything". Rejected: making `private` hide a builder from projects they build on (it reads as more protective and breaks the ledger — a roster that omits contributors cannot show who built the thing, and credits would accrue to someone invisible on the surface explaining them); and leaving it as a dated spec note (it pins shipped code as deliberately predicate-free, which is an ADR's job).](<redacted>.md) | privacy / spec |
|
|
315
315
|
| 0227 | [**A task network map is refused; the goal graph is the map, and search answers findability** ([task 1003282](https://cloudbongos.com/builders#/task/1003282) · goal 1000072, criterion `legibility-project-map`, which gates itself on this spike). Measured across a swept density range (p=2%–40% of tasks carrying a dependency): a node-link view of ~1,357 tasks is confetti, not structure, and densifying it draws forty goals badly while claiming to show a thousand tasks — a confident picture of nothing is the opposite of the legibility this goal serves. Decision: NO whole-corpus task map at any density; the readable surface is the ~40-node GOAL graph as the entry point with a per-goal DEPENDENCY FOREST as the drill-down, queried when a goal is opened rather than zoomed out of a global map. Every edge a map could draw already exists in the DB and none needs a new table — `task_dependencies` (020), `tasks.parent_task_id`, `tasks.goal_id`, `task_criteria`→`done_when_criteria`, `idea_inbox.promoted_to_task_id`, `idea_inbox.merged_into_idea_id` (`core_195`), `tasks.version_id` (membership, never an edge). **Findability (goal 1000027) answers the owner’s question more cheaply than a map**: the ask splits into “find what I was brainstorming”, which `/recall` (ADR 0060) plus the two lineage columns already answers end to end and which wants a text LINEAGE TRAIL — one thing and its ancestry — not a picture; and “see the shape of the portfolio”, the only half a graph earns, which is about ~40 goals and not about tasks. So the trail outranks the map and is sequenced first. Accessibility: the TABLE is the primary surface and the graph the enhancement (not an `aria-label` on an SVG blob, not a toggle hiding the accessible path), no sideways scroll on the page (the graph scrolls inside its own container), and category is text as well as colour since the ADR 0192 set is not colour-distinguishable at forty nodes. Ranked list: (1) measure the real density against the live DB — it GATES and may cancel the rest, (2) the lineage trail, (3) the goal graph, (4) the per-goal forest. Rejected: view A (every task); view D (densified); a prototype as the output (the criterion forbade it — `spike-task-map.js` is a measuring instrument under `docs/research/`, wired to no route); and building before measuring. Honest limit: the corpus is SYNTHETIC (the live DB was unreachable), so the verdict is robust across the sweep but the specific numbers are model output — which is why item 1 is a measurement against the real DB.](<redacted>.md) | GDS / legibility + hall |
|
|
316
|
+
| 0228 | [**The reading room owes a reference its content rules, not a second archetype** ([task 1003473](https://cloudbongos.com/builders#/task/1003473) · goal 1000081). The archetype task 1003306 built for the primer — a linear read with a gate — now serves drachmae, a REFERENCE people open to answer one question about how they get paid. Decision: the same room with ONE body modifier, `room--reference`, switching on content rules in `room.css` §8 rather than a second sheet or a `.page-head--reference` voice: the linear-read instruments are off (no progress hairline, no section counters, no read time; `primer.css`, which holds only the acknowledge gate, is no longer loaded), the outline goes to h3 depth read from the rendered DOM and lights the entry and its part, every h2/h3/h4 is an always-visible address (`.room-anchor`) that copies its link, a deep link is landed by the page after the document, the live section and the fonts (a swap moved the browser's own landing 300px, and `:target` had resolved against nothing), the collapsed phone outline rides under the top bar naming the part, and the live bounty table is a section ahead of the closing links rather than an appendix after them. Found by rendering before touching anything and fixed in the shared reader: `md-reader.js` stopped at `###`, so the doc's six earning sources rendered as paragraphs with a literal `####`; the bold rule refused an inner `*`; a linked heading slugged its target's path into the address. Rejected: a second archetype sheet, hover-only anchors (a phone has no hover), an accordion outline (the sub-questions are what a reader scans for), placing the live table inside the prose (it would lose its outline entry), and teaching the kit stub to serve markdown (the ui-design module's). Pinned by `tests/hall_reference_world.mjs`, four of whose tests run the reader in a vm.](<redacted>.md) | hall / design |
|
|
316
317
|
| 0226 | [**One stale-claim timer; reporting degrades where enforcement refuses** ([task 1003476](https://cloudbongos.com/builders#/task/1003476), goal 1000072, criterion `legibility-sort-and-staleness`). "How long may a claim go silent" had FOUR answers and none of them was the project's: the sweeper that actually releases a claim read `GDS_STALE_CLAIM_HOURS` (else 6h); `GET /builders/roster` and `GET /builders/:id/active-claims` each hardcoded 24h in byte-identical blocks; and the two `session_pulses` helpers defaulted to 30 minutes. The 6-vs-24 pair is the harm: the roster is the screen an Archon opens to decide whether to intervene, and for **eighteen hours** after the sweeper had released a claim, stamped its session log `[auto-released:stale]` and returned the task to `ready`, that screen still showed it healthy — while the roster's own comment claimed to "mirror" the sweeper, true of the definition and false of the number. Decision: ONE resolver, `src/stale-timer.js` (a KERNEL file, the `instance-config.js`/`branding.js` category — host config a module reads, never hardcodes), reached by modules through the doorway and by core routes and the CLI directly. Precedence: explicit override (`--threshold-hours`, `?stale_hours=` — a LENS, labelled `query`, never a reconfiguration) → `<PREFIX>_STALE_CLAIM_HOURS` via `instance-config.resolveEnv`, whose legacy prefix chain still honours the live `GDS_STALE_CLAIM_HOURS` so **nothing in a running deployment has to change** (and which is the channel ADR 0190's runner already patches into `web.env`) → **6**, the SWEEP's historical number and deliberately not the roster's 24, because the sweep is the surface that acts and unifying on 24 would have made every project three times more patient with a dead claim under cover of a refactor. Bound 1..720h — the range `/builders/roster` has published since V3.R14; one timer, one bound. Every surface that prints the timer prints its PROVENANCE (`stale_hours_source`, the sweep header, the auto-release note): a number without it is exactly what let 6 and 24 coexist unnoticed. **The fail posture is asymmetric and that is the decision**: the resolver reports an unusable value rather than throwing, then a surface that only READS degrades to the default and names the bad var (500-ing the roster an Archon opened to find the problem would hide the problem), while the SWEEP refuses to run at all (it releases other people's claims and stamps their logs; no reload undoes that) — a surface that only reads may guess and say so, a surface that acts may not guess. Both routes now share one `staleHoursFor(req, res)`; two copies of a literal is how the drift happened twice inside one file. Rejected: a new `config/stale.json` tier (the env route already IS the per-project channel); making 24 the shared default; throwing from the resolver (forces a second reader — the original bug); folding in the boards' 14/30/60-DAY task buckets (a different question — days, about a task, a browsing lens with no enforcement behind it); a DB row + settings UI (a reasonable next step, but the defect was four numbers, not a missing knob — a row added before the readers agreed would have been a fifth).](<redacted>.md) | GDS / claims + ops |
|
|
317
318
|
|
|
318
319
|
> ⚠️ **Numbering collisions are now machine-enforced, not narrated.** Twenty numbers are shared by two ADRs each — assigned in parallel sessions before anything checked. The files keep their filenames (renumbering would break every existing citation, and a number once assigned is never reused), and this table disambiguates each pair as `NNNN-a` / `NNNN-b`. The authoritative list is `LEGACY_DUPLICATE_ADRS` in [`scripts/gds/adr-namespace.js`](../../scripts/gds/adr-namespace.js), frozen by exact filename: a **new** collision — or a third file joining a legacy number, or a rename of either half — hard-fails the `unit` CI gate, as does an index row that points at no file or an ADR with no row. The list may only shrink. This paragraph used to narrate the collisions one by one and had fallen eight behind reality; see [ADR 0195](<redacted>.md) for why the check exists and why the pairs are grandfathered rather than renumbered.
|
package/docs/copy-inventory.md
CHANGED
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
> Deterministic on a given tree — regenerate and commit rather than hand-editing.
|
|
5
5
|
> Machine-readable twin: [`copy-registry.json`](copy-registry.json).
|
|
6
6
|
|
|
7
|
-
**
|
|
7
|
+
**1585 strings** across 3 surfaces · 1374 distinct pieces of copy · 1585 certain, 0 heuristic · 152 shown in more than one place.
|
|
8
8
|
|
|
9
9
|
## Surfaces
|
|
10
10
|
|
|
11
11
|
| surface | lives at | files | strings |
|
|
12
12
|
|---|---|---|---|
|
|
13
|
-
| `builders-hall` | `modules/hall-ui/public` | 72 |
|
|
13
|
+
| `builders-hall` | `modules/hall-ui/public` | 72 | 1142 |
|
|
14
14
|
| `status-dashboard` | `modules/status-ui/public` | 4 | 98 |
|
|
15
15
|
| `landing` | `modules/public-landing/public` | 5 | 345 |
|
|
16
16
|
|
|
@@ -54,11 +54,11 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
54
54
|
| `9a685b01e2c6` | 4x | This page opens at a higher rank. | modules/hall-ui/public/gate.html:37, modules/hall-ui/public/government.html:37, modules/hall-ui/public/harbor.html:37 |
|
|
55
55
|
| `b31fc908c962` | 4x | You claimed #{…}. Open a terminal to start work. | modules/hall-ui/public/goals-page.js:418, modules/hall-ui/public/goals-page.js:515, modules/hall-ui/public/work.js:851 |
|
|
56
56
|
| `1de02052abf2` | 3x | Available from the {…} rank up. | modules/hall-ui/public/gate.js:222, modules/hall-ui/public/government.js:1107, modules/hall-ui/public/harbor.js:340 |
|
|
57
|
-
| `08afb1257b71` | 3x | Back to home | modules/hall-ui/public/drachmae.html:
|
|
57
|
+
| `08afb1257b71` | 3x | Back to home | modules/hall-ui/public/drachmae.html:87, modules/hall-ui/public/primer.html:90, modules/hall-ui/public/primer.js:283 |
|
|
58
58
|
| `a78477a24a48` | 3x | Builders' Hall | modules/hall-ui/public/index.html:12, modules/hall-ui/public/index.html:12, modules/hall-ui/public/index.html:37 |
|
|
59
59
|
| `12ee050d0180` | 3x | Copy desk | modules/hall-ui/public/copy-desk.html:15, modules/hall-ui/public/copy-desk.html:15, modules/hall-ui/public/copy-desk.html:27 |
|
|
60
60
|
| `a873e7c29d80` | 3x | Copy prompt | modules/hall-ui/public/task.js:386, modules/hall-ui/public/task.js:406, modules/hall-ui/public/work.js:546 |
|
|
61
|
-
| `9c728558d6e7` | 3x | Drachmae & karma | modules/hall-ui/public/drachmae.html:
|
|
61
|
+
| `9c728558d6e7` | 3x | Drachmae & karma | modules/hall-ui/public/drachmae.html:22, modules/hall-ui/public/drachmae.html:22, modules/hall-ui/public/drachmae.html:37 |
|
|
62
62
|
| `df335a1224ae` | 3x | Member since {…} | modules/hall-ui/public/hall-render.js:490, modules/hall-ui/public/hall-render.js:544, modules/hall-ui/public/profile.js:58 |
|
|
63
63
|
| `0e02adf55409` | 3x | Open the work board | modules/hall-ui/public/task.js:386, modules/hall-ui/public/task.js:433, modules/hall-ui/public/task.js:445 |
|
|
64
64
|
| `f6f68ba322be` | 3x | Open {…} | modules/hall-ui/public/goal-inbox.js:53, modules/hall-ui/public/goal-inbox.js:69, modules/hall-ui/public/goals.js:67 |
|
|
@@ -76,22 +76,22 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
76
76
|
| `490b73a0c6e8` | 2x | Approve your Dev Box app — {{worldName}} | modules/hall-ui/public/pair.html:6, modules/hall-ui/public/pair.html:6 |
|
|
77
77
|
| `b2656d0b2402` | 2x | Asked {…} | modules/hall-ui/public/collab.js:41, modules/hall-ui/public/watch.js:315 |
|
|
78
78
|
| `563d29ed86d8` | 2x | Bulk actions | modules/hall-ui/public/goals.html:172, modules/hall-ui/public/work.html:129 |
|
|
79
|
-
| … | |
|
|
79
|
+
| … | | _112 more in the JSON registry_ | |
|
|
80
80
|
|
|
81
|
-
## `builders-hall` —
|
|
81
|
+
## `builders-hall` — 1142 strings
|
|
82
82
|
|
|
83
83
|
| id | conf | text | where |
|
|
84
84
|
|---|---|---|---|
|
|
85
85
|
| `a8813c34d20d` | certain | “Host denied” | `modules/hall-ui/public/box-panel.js:160` |
|
|
86
86
|
| `a8813c34d20d` | certain | “Host denied” | `modules/hall-ui/public/box-panel.js:340` |
|
|
87
|
-
| `b585019e3e1d` | certain | ' lines collapse into one | `modules/hall-ui/public/md-reader.js:
|
|
88
|
-
| `44e29d37ddf6` | certain | '); out = out.replace(/(^\|[^*])\*([^*]+)\*(?!\*)/g, '$1 | `modules/hall-ui/public/md-reader.js:
|
|
89
|
-
| `66cea7cefa4e` | certain | '; for (const row of bodyRows) { html += ' | `modules/hall-ui/public/md-reader.js:
|
|
90
|
-
| `53e4ac514458` | certain | '; out.push(html); continue; } // Lists (unordered '- ' or ordered '1. '); consecutive items collapse. if (/^( | `modules/hall-ui/public/md-reader.js:
|
|
91
|
-
| `87fa099f5068` | certain | '; } html += ' | `modules/hall-ui/public/md-reader.js:
|
|
87
|
+
| `b585019e3e1d` | certain | ' lines collapse into one | `modules/hall-ui/public/md-reader.js:163` |
|
|
88
|
+
| `44e29d37ddf6` | certain | '); out = out.replace(/(^\|[^*])\*([^*]+)\*(?!\*)/g, '$1 | `modules/hall-ui/public/md-reader.js:117` |
|
|
89
|
+
| `66cea7cefa4e` | certain | '; for (const row of bodyRows) { html += ' | `modules/hall-ui/public/md-reader.js:194` |
|
|
90
|
+
| `53e4ac514458` | certain | '; out.push(html); continue; } // Lists (unordered '- ' or ordered '1. '); consecutive items collapse. if (/^( | `modules/hall-ui/public/md-reader.js:198` |
|
|
91
|
+
| `87fa099f5068` | certain | '; } html += ' | `modules/hall-ui/public/md-reader.js:198` |
|
|
92
92
|
| `cb327c50b079` | certain | 's dev box (state: {…}). Any uncommitted work on that box is lost. The box is destroyed; the builder can open | `modules/hall-ui/public/harbor.js:125` |
|
|
93
93
|
| `544794f1ec8f` | certain | (later in | `modules/hall-ui/public/index.html:9` |
|
|
94
|
-
| `3ac2eb36ba97` | certain | (no sections) | `modules/hall-ui/public/drachmae.js:
|
|
94
|
+
| `3ac2eb36ba97` | certain | (no sections) | `modules/hall-ui/public/drachmae.js:128` |
|
|
95
95
|
| `a4614c0b8eb5` | certain | (or use the Claude Code CLI) and open the project. | `modules/hall-ui/public/hall-render.js:691` |
|
|
96
96
|
| `c72946be7ac0` | certain | (spin-up {…} · compute {…} · storage {…}) | `modules/hall-ui/public/box-panel.js:236` |
|
|
97
97
|
| `1eee272d5ff4` | certain | (the droplet) is both the authority and production; | `modules/hall-ui/public/diagrams.html:74` |
|
|
@@ -166,7 +166,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
166
166
|
| `1de02052abf2` | certain | Available from the {…} rank up. | `modules/hall-ui/public/harbor.js:340` |
|
|
167
167
|
| `bdbe9ff6a177` | certain | Awaiting the grader, or a confirmation, before it can ship. | `modules/hall-ui/public/task.js:376` |
|
|
168
168
|
| `ecfbb10d4ca9` | certain | Awaiting the owner/manager's approval | `modules/hall-ui/public/goals-render.js:841` |
|
|
169
|
-
| `08afb1257b71` | certain | Back to home | `modules/hall-ui/public/drachmae.html:
|
|
169
|
+
| `08afb1257b71` | certain | Back to home | `modules/hall-ui/public/drachmae.html:87` |
|
|
170
170
|
| `08afb1257b71` | certain | Back to home | `modules/hall-ui/public/primer.html:90` |
|
|
171
171
|
| `08afb1257b71` | certain | Back to home | `modules/hall-ui/public/primer.js:283` |
|
|
172
172
|
| `b3c1c5615971` | certain | Back to ideas | `modules/hall-ui/public/idea.html:31` |
|
|
@@ -361,9 +361,9 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
361
361
|
| `2ed2fd8376c0` | certain | Download for Windows | `modules/hall-ui/public/settings.html:215` |
|
|
362
362
|
| `c7af57097d94` | certain | Download the Dev Box app: | `modules/hall-ui/public/hall-render.js:650` |
|
|
363
363
|
| `9cf07334a5a9` | certain | Downvote (−1) | `modules/hall-ui/public/builders.js:730` |
|
|
364
|
-
| `9c728558d6e7` | certain | Drachmae & karma | `modules/hall-ui/public/drachmae.html:
|
|
365
|
-
| `9c728558d6e7` | certain | Drachmae & karma | `modules/hall-ui/public/drachmae.html:
|
|
366
|
-
| `9c728558d6e7` | certain | Drachmae & karma | `modules/hall-ui/public/drachmae.html:
|
|
364
|
+
| `9c728558d6e7` | certain | Drachmae & karma | `modules/hall-ui/public/drachmae.html:22` |
|
|
365
|
+
| `9c728558d6e7` | certain | Drachmae & karma | `modules/hall-ui/public/drachmae.html:22` |
|
|
366
|
+
| `9c728558d6e7` | certain | Drachmae & karma | `modules/hall-ui/public/drachmae.html:37` |
|
|
367
367
|
| `9d9cc4ef8557` | certain | Drachmae & karma — {{worldName}} | `modules/hall-ui/public/drachmae.html:6` |
|
|
368
368
|
| `9d9cc4ef8557` | certain | Drachmae & karma — {{worldName}} | `modules/hall-ui/public/drachmae.html:6` |
|
|
369
369
|
| `2f8d0404039e` | certain | Draft discarded. | `modules/hall-ui/public/ideas.js:347` |
|
|
@@ -455,7 +455,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
455
455
|
| `4f3802e6c81e` | certain | How the whole build is doing — the program at a glance, then each version. Shipped work stays out of the way. | `modules/hall-ui/public/roadmap.js:400` |
|
|
456
456
|
| `b536897de6a3` | certain | How this project is governed. | `modules/hall-ui/public/government.js:1142` |
|
|
457
457
|
| `2d156231e9fe` | certain | How you advance | `modules/hall-ui/public/ranks.html:55` |
|
|
458
|
-
| `
|
|
458
|
+
| `c763425718f2` | certain | How you get paid, and how you earn trust. A reference to jump around in: every section has its own link, and t | `modules/hall-ui/public/drachmae.html:38` |
|
|
459
459
|
| `4c247368c384` | certain | How you got here, what you'd build | `modules/hall-ui/public/hall-render.js:275` |
|
|
460
460
|
| `298ff22576ee` | certain | How your output has changed over time — work shipped, cost and time per work, and how reviews held up. | `modules/hall-ui/public/hall-widgets.js:182` |
|
|
461
461
|
| `08d3bf741a2c` | certain | I have read it | `modules/hall-ui/public/primer.html:102` |
|
|
@@ -473,7 +473,6 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
473
473
|
| `b6c47d4ee42c` | certain | Image key removed. | `modules/hall-ui/public/settings.js:1184` |
|
|
474
474
|
| `783853467d52` | certain | Image-generation key | `modules/hall-ui/public/settings.html:174` |
|
|
475
475
|
| `5c2e2bcbd5fb` | certain | In Progress | `modules/hall-ui/public/work.html:83` |
|
|
476
|
-
| `810e47b6a209` | certain | In this guide | `modules/hall-ui/public/drachmae.html:52` |
|
|
477
476
|
| `75cfcdd41661` | certain | In this primer | `modules/hall-ui/public/primer.html:58` |
|
|
478
477
|
| `3102d1d90c98` | certain | Intel Mac? | `modules/hall-ui/public/settings.html:216` |
|
|
479
478
|
| `dad3388b49c9` | certain | Invitation rescinded. | `modules/hall-ui/public/goals-page.js:692` |
|
|
@@ -507,6 +506,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
507
506
|
| `1526a7ae8c85` | certain | Latest version: v{…}. | `modules/hall-ui/public/settings.js:1452` |
|
|
508
507
|
| `7c9b7a89353b` | certain | Leave goal | `modules/hall-ui/public/goals-render.js:838` |
|
|
509
508
|
| `f192ff6563f9` | certain | Leave your GitHub username and an Archon will let you in. No coding needed to start — once you're approved, si | `modules/hall-ui/public/hall-render.js:275` |
|
|
509
|
+
| `43660902bf79` | certain | Link copied. | `modules/hall-ui/public/drachmae.js:200` |
|
|
510
510
|
| `a53e0cde7ff7` | certain | Link first — your rank role is set the moment you join. | `modules/hall-ui/public/settings.js:922` |
|
|
511
511
|
| `64e85f1691f9` | certain | Link your Discord account and you're added to the {{worldName}} server with your rank role already set — no in | `modules/hall-ui/public/settings.html:52` |
|
|
512
512
|
| `9a31cf5fe05b` | certain | Linking opens Discord's consent screen; unlinking applies at once. | `modules/hall-ui/public/settings.html:57` |
|
|
@@ -609,6 +609,8 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
609
609
|
| `9d25ba1d2f17` | certain | Off voice — says it in the wrong register | `modules/hall-ui/public/copy-desk.html:89` |
|
|
610
610
|
| `55bc72820efc` | certain | Older → | `modules/hall-ui/public/sessions.html:70` |
|
|
611
611
|
| `b89ad49770e7` | certain | On Windows, run | `modules/hall-ui/public/hall-render.js:717` |
|
|
612
|
+
| `ea1f179dd878` | certain | On this page | `modules/hall-ui/public/drachmae.html:51` |
|
|
613
|
+
| `ea1f179dd878` | certain | On this page | `modules/hall-ui/public/drachmae.html:56` |
|
|
612
614
|
| `c9454da07fc7` | certain | One click, and the app can act as you. | `modules/hall-ui/public/pair.js:52` |
|
|
613
615
|
| `d5f0b7156024` | certain | One line. This is what the idea is called everywhere else. | `modules/hall-ui/public/ideas.html:73` |
|
|
614
616
|
| `0bc1d1470e22` | certain | Only an open goal can be managed. | `modules/hall-ui/public/goals-render.js:1029` |
|
|
@@ -745,8 +747,8 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
745
747
|
| `42cbc20a6ec8` | certain | Saves when you press Save; your next | `modules/hall-ui/public/settings.html:126` |
|
|
746
748
|
| `46711f7bc3df` | certain | Search every string the product shows a person, by what it says or the file it lives in. | `modules/hall-ui/public/copy-desk.html:65` |
|
|
747
749
|
| `5d2ba8e72fa1` | certain | Search failed. | `modules/hall-ui/public/copy-desk.js:305` |
|
|
748
|
-
| `c6b31f5b998f` | certain | Sections in this guide | `modules/hall-ui/public/drachmae.html:46` |
|
|
749
750
|
| `373a7639bcb9` | certain | Sections in this primer | `modules/hall-ui/public/primer.html:52` |
|
|
751
|
+
| `00ca4e3c7c7d` | certain | Sections in this reference | `modules/hall-ui/public/drachmae.html:49` |
|
|
750
752
|
| `ab8af800f2bb` | certain | Security reports | `modules/hall-ui/public/watch.html:47` |
|
|
751
753
|
| `9e370ee74bc4` | certain | See all ready work → | `modules/hall-ui/public/hall-widgets.js:105` |
|
|
752
754
|
| `324af64c8b6e` | certain | See all {…} goals {…} | `modules/hall-ui/public/roadmap.js:116` |
|
|
@@ -842,13 +844,12 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
842
844
|
| `bac12faf3328` | certain | The developmental ladder: {…}. Formality is adopted only where informal coordination breaks. | `modules/hall-ui/public/government.js:728` |
|
|
843
845
|
| `6e2554615883` | certain | The event sounds could not be loaded. Reload the page to try again. | `modules/hall-ui/public/settings.js:386` |
|
|
844
846
|
| `4dd13bc5a35b` | certain | The goal's leads have paused applications; they can still invite you | `modules/hall-ui/public/goals-render.js:846` |
|
|
845
|
-
| `9854151c6266` | certain | The guide did not load | `modules/hall-ui/public/drachmae.html:80` |
|
|
846
847
|
| `797f02fa8295` | certain | The hosted machine your work runs on. Open it in your browser (the online terminal) or connect over SSH — whic | `modules/hall-ui/public/settings.html:194` |
|
|
847
848
|
| `9f45c63c9697` | certain | The kinds of work you prefer. Task suggestions lean toward your choices — pick one, several, or none. | `modules/hall-ui/public/settings.html:117` |
|
|
848
849
|
| `a02d386fbc13` | certain | The map | `modules/hall-ui/public/atlas.html:45` |
|
|
849
850
|
| `e1ce3766c6fe` | certain | The map has not been generated on this deploy yet. | `modules/hall-ui/public/atlas.js:416` |
|
|
850
851
|
| `689a13ba5bd6` | certain | The map is being drawn. | `modules/hall-ui/public/atlas.html:63` |
|
|
851
|
-
| `7f03838faf0c` | certain | The markdown behind this page could not be fetched. Reload to try again, or read it in the repo. | `modules/hall-ui/public/drachmae.html:
|
|
852
|
+
| `7f03838faf0c` | certain | The markdown behind this page could not be fetched. Reload to try again, or read it in the repo. | `modules/hall-ui/public/drachmae.html:86` |
|
|
852
853
|
| `7f03838faf0c` | certain | The markdown behind this page could not be fetched. Reload to try again, or read it in the repo. | `modules/hall-ui/public/primer.html:89` |
|
|
853
854
|
| `a0a4a7ecfa72` | certain | The most recent works this builder has shipped. | `modules/hall-ui/public/profile.html:66` |
|
|
854
855
|
| `381f29be7497` | certain | The most recently shipped tasks. | `modules/hall-ui/public/work.html:108` |
|
|
@@ -858,6 +859,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
858
859
|
| `6c3d88de42de` | certain | The primer | `modules/hall-ui/public/primer.html:41` |
|
|
859
860
|
| `dea378cd4837` | certain | The primer did not load | `modules/hall-ui/public/primer.html:88` |
|
|
860
861
|
| `3bc5ec5f35ec` | certain | The ranks, lowest to highest | `modules/hall-ui/public/ranks.html:46` |
|
|
862
|
+
| `1ce78006fe00` | certain | The reference did not load | `modules/hall-ui/public/drachmae.html:85` |
|
|
861
863
|
| `3b5260b8780a` | certain | The reserved 16-rank ladder, which ranks are live today (archon, metic, thetes, xenos), and what each may do. | `modules/hall-ui/public/diagrams.html:60` |
|
|
862
864
|
| `cfa55899240b` | certain | The roadmap could not be loaded right now. Reload to try again. | `modules/hall-ui/public/roadmap.js:407` |
|
|
863
865
|
| `2dea5ed89aa1` | certain | The roadmap failed to load. Reload to try again. | `modules/hall-ui/public/roadmap.js:408` |
|
|
@@ -930,7 +932,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
930
932
|
| `0658f0358ffd` | certain | Welcome back, {…}. | `modules/hall-ui/public/hall-render.js:523` |
|
|
931
933
|
| `04ef2f1bc4c4` | certain | Welcome, {…}. Claim and release tasks and follow work in progress — no terminal needed. | `modules/hall-ui/public/work.js:1143` |
|
|
932
934
|
| `d6bae87dc29b` | certain | What builders will see | `modules/hall-ui/public/government.html:88` |
|
|
933
|
-
| `f3d93a872a38` | certain | What counts | `modules/hall-ui/public/drachmae.js:
|
|
935
|
+
| `f3d93a872a38` | certain | What counts | `modules/hall-ui/public/drachmae.js:98` |
|
|
934
936
|
| `4a33938611be` | certain | What each builder's dev box has cost — spin-up, compute, and storage. Tracked for oversight; not charged in th | `modules/hall-ui/public/watch.html:95` |
|
|
935
937
|
| `0874800c694a` | certain | What is being built right now. See | `modules/hall-ui/public/work.html:84` |
|
|
936
938
|
| `70dc106494cf` | certain | What is wrong with it, and what would better look like? | `modules/hall-ui/public/copy-desk.html:101` |
|
|
@@ -1002,7 +1004,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1002
1004
|
| `3c148c7b9539` | certain | Your work runs on a dev box we host for you — there's almost nothing to install. Choose how to connect: | `modules/hall-ui/public/hall-render.js:650` |
|
|
1003
1005
|
| `137b07b42203` | certain | Zoom in | `modules/hall-ui/public/diagram-viewer.js:98` |
|
|
1004
1006
|
| `0d0bfa651b36` | certain | Zoom out | `modules/hall-ui/public/diagram-viewer.js:96` |
|
|
1005
|
-
| `cc361cc7333a` | certain | \s?/.test(raw)) { const quoteLines = []; while (i | `modules/hall-ui/public/md-reader.js:
|
|
1007
|
+
| `cc361cc7333a` | certain | \s?/.test(raw)) { const quoteLines = []; while (i | `modules/hall-ui/public/md-reader.js:163` |
|
|
1006
1008
|
| `44e6e402db94` | certain | account, then open | `modules/hall-ui/public/hall-render.js:650` |
|
|
1007
1009
|
| `ae43396446ed` | certain | account. | `modules/hall-ui/public/hall-render.js:650` |
|
|
1008
1010
|
| `9612c983451f` | certain | achieved · | `modules/hall-ui/public/roadmap.js:263` |
|