@bongos/core 1.19.492 → 1.19.493

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.
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Bongos API reference
4
4
 
5
- > **Generated from the live route files** — the route file is authoritative. 344 endpoints across 56 route files.
5
+ > **Generated from the live route files** — the route file is authoritative. 345 endpoints across 56 route files.
6
6
  > Machine-readable spec: [`docs/api/openapi.json`](api/openapi.json) (OpenAPI 3.1). Rendered docs site: **`/docs`** (e.g. `cloudbongos.com/docs`).
7
7
 
8
8
  Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>.md)): `public` < `any-builder` < `metic+archon` < `archon`.
@@ -166,12 +166,13 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
166
166
  | GET | `/api/bongos/connections/degree/:handle` | `any-builder` | — | the degree label between the CALLER and one handle, plus the mutuals it was computed from (own-scope read, D4 §4). |
167
167
  | GET | `/api/bongos/connections/requests` | `any-builder` | — | MY pending requests, both directions (own data). |
168
168
 
169
- ## `copy-desk` (4)
169
+ ## `copy-desk` (5)
170
170
 
171
171
  | Method | Path | Rank | Body | Description |
172
172
  |---|---|---|---|---|
173
173
  | POST | `/api/bongos/copy-desk/flags` | `any-builder` | `scope`, `surface`, `string_id`, `reason`, `kind` | ------------------------------------------------------------------------- POST /copy-desk/flags — file a flag. |
174
174
  | POST | `/api/bongos/copy-desk/flags/:id/close` | `any-builder` | `status`, `resolution_note`, `resolved_task_id` | ------------------------------------------------------------------------- POST /copy-desk/flags/:id/close — resolve or dismiss. |
175
+ | POST | `/api/bongos/copy-desk/proposals` | `any-builder` | `string_id`, `proposed_text`, `why`, `file`, `line`, `flag_id` | ------------------------------------------------------------------------- POST /copy-desk/proposals — an artist proposes new wording, and… |
175
176
  | GET | `/api/bongos/copy-desk/queue` | `any-builder` | — | ------------------------------------------------------------------------- GET /copy-desk/queue — the artist's working list. |
176
177
  | GET | `/api/bongos/copy-desk/strings` | `any-builder` | — | ------------------------------------------------------------------------- GET /copy-desk/strings — search the inventory, to find somethin… |
177
178
 
@@ -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
- **1600 strings** across 3 surfaces · 1391 distinct pieces of copy · 1600 certain, 0 heuristic · 150 shown in more than one place.
7
+ **1612 strings** across 3 surfaces · 1403 distinct pieces of copy · 1612 certain, 0 heuristic · 150 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` | 73 | 1157 |
13
+ | `builders-hall` | `modules/hall-ui/public` | 73 | 1169 |
14
14
  | `status-dashboard` | `modules/status-ui/public` | 4 | 98 |
15
15
  | `landing` | `modules/public-landing/public` | 5 | 345 |
16
16
 
@@ -78,7 +78,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
78
78
  | `563d29ed86d8` | 2x | Bulk actions | modules/hall-ui/public/goals.html:172, modules/hall-ui/public/work.html:129 |
79
79
  | … | | _110 more in the JSON registry_ | |
80
80
 
81
- ## `builders-hall` — 1157 strings
81
+ ## `builders-hall` — 1169 strings
82
82
 
83
83
  | id | conf | text | where |
84
84
  |---|---|---|---|
@@ -116,7 +116,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
116
116
  | `3e5a62bc4887` | certain | A GitHub username is needed. | `modules/hall-ui/public/hall-render.js:361` |
117
117
  | `3e5a62bc4887` | certain | A GitHub username is needed. | `modules/hall-ui/public/watch.js:279` |
118
118
  | `2c23271d5d71` | certain | A device is asking to act as you | `modules/hall-ui/public/pair.html:32` |
119
- | `a22df5ebbd5e` | certain | A flag needs a reason an artist can act on. What is wrong with it, and what would better look like? | `modules/hall-ui/public/copy-desk.js:334` |
119
+ | `a22df5ebbd5e` | certain | A flag needs a reason an artist can act on. What is wrong with it, and what would better look like? | `modules/hall-ui/public/copy-desk.js:372` |
120
120
  | `634738746b81` | certain | A fresh box has a | `modules/hall-ui/public/harbor.js:125` |
121
121
  | `df5eb70b5a05` | certain | A higher rank. Its details are hidden until you reach the rank directly below it. | `modules/hall-ui/public/ranks.js:125` |
122
122
  | `2e17d7e236d9` | certain | A module built here can be submitted upstream for review, so it can join the shared catalog with your name and | `modules/hall-ui/public/modules.html:71` |
@@ -138,7 +138,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
138
138
  | `62eded408097` | certain | Add {…} | `modules/hall-ui/public/profile-nudge.js:68` |
139
139
  | `8b736e365191` | certain | All builders | `modules/hall-ui/public/hall-render.js:1132` |
140
140
  | `b5e03617b319` | certain | All goals | `modules/hall-ui/public/goals.html:53` |
141
- | `bea7817e57a4` | certain | All surfaces | `modules/hall-ui/public/copy-desk.js:263` |
141
+ | `bea7817e57a4` | certain | All surfaces | `modules/hall-ui/public/copy-desk.js:301` |
142
142
  | `627c683a5e5d` | certain | All time | `modules/hall-ui/public/hall-widgets.js:130` |
143
143
  | `b38c01691857` | certain | All your work → | `modules/hall-ui/public/hall-widgets.js:110` |
144
144
  | `e99cc5d37404` | certain | Already a member? | `modules/hall-ui/public/hall-render.js:330` |
@@ -227,8 +227,8 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
227
227
  | `512ab32e3bf2` | certain | Close box | `modules/hall-ui/public/box-panel.js:226` |
228
228
  | `70f6a704d504` | certain | Close it | `modules/hall-ui/public/copy-desk.html:140` |
229
229
  | `d12a2fb5730d` | certain | Close this flag | `modules/hall-ui/public/copy-desk.html:116` |
230
- | `3d148e19e03a` | certain | Closed. | `modules/hall-ui/public/copy-desk.js:393` |
231
- | `2654dc3ded21` | certain | Closing is a judgement too — say what you decided, so the next person does not re-litigate it. | `modules/hall-ui/public/copy-desk.js:378` |
230
+ | `3d148e19e03a` | certain | Closed. | `modules/hall-ui/public/copy-desk.js:510` |
231
+ | `2654dc3ded21` | certain | Closing is a judgement too — say what you decided, so the next person does not re-litigate it. | `modules/hall-ui/public/copy-desk.js:495` |
232
232
  | `f8a914076098` | certain | Closing the terminal tab keeps your session running — reopen to resume right where you left off. To shut the b | `modules/hall-ui/public/box-panel.js:226` |
233
233
  | `cfe0f4c4fcc2` | certain | Closing your box… (a few seconds) | `modules/hall-ui/public/box-panel.js:265` |
234
234
  | `cfe0f4c4fcc2` | certain | Closing your box… (a few seconds) | `modules/hall-ui/public/box-panel.js:370` |
@@ -395,6 +395,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
395
395
  | `647513e4838a` | certain | Everything this builder has shipped. Seen one craft at a time, with goals and ideas, under | `modules/hall-ui/public/profile.html:108` |
396
396
  | `efdb46f76b02` | certain | Everything this instance can run: what the core ships, what this project built, and who keeps each one true as | `modules/hall-ui/public/modules.html:32` |
397
397
  | `d629e152f074` | certain | Expires {…} · refreshes on use. | `modules/hall-ui/public/settings.js:992` |
398
+ | `0c4632f983db` | certain | File the change | `modules/hall-ui/public/copy-desk.html:173` |
398
399
  | `536a7e99640a` | certain | File the flag | `modules/hall-ui/public/copy-desk.html:108` |
399
400
  | `077cf99f49f6` | certain | File this idea | `modules/hall-ui/public/ideas.html:90` |
400
401
  | `1def0e7c716e` | certain | Find something to flag | `modules/hall-ui/public/copy-desk.html:64` |
@@ -407,8 +408,8 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
407
408
  | `78107a76a755` | certain | Five diagrams that show, at a glance, how work flows through {{worldName}}'s development system. | `modules/hall-ui/public/diagrams.html:33` |
408
409
  | `18ab1be9d3ad` | certain | Five questions, and a score that counts how much of each you actually answered. | `modules/hall-ui/public/ideas.js:448` |
409
410
  | `b9267033b1f1` | certain | Flag this copy | `modules/hall-ui/public/copy-desk.html:83` |
410
- | `82149b1deacd` | certain | Flag this… | `modules/hall-ui/public/copy-desk.js:146` |
411
- | `448d00771dc8` | certain | Flagged. It is in the queue. | `modules/hall-ui/public/copy-desk.js:353` |
411
+ | `82149b1deacd` | certain | Flag this… | `modules/hall-ui/public/copy-desk.js:164` |
412
+ | `448d00771dc8` | certain | Flagged. It is in the queue. | `modules/hall-ui/public/copy-desk.js:391` |
412
413
  | `6149e9ca69f7` | certain | Fleet summary | `modules/hall-ui/public/harbor.html:44` |
413
414
  | `617f13fa3fdb` | certain | Flip the switch. | `modules/hall-ui/public/hall-render.js:744` |
414
415
  | `42cee5cb3584` | certain | Fold this idea into # | `modules/hall-ui/public/task-detail.js:457` |
@@ -494,6 +495,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
494
495
  | `2bfc5a50ce88` | certain | Jump to a page or record | `modules/hall-ui/public/shell.js:344` |
495
496
  | `eba610d25523` | certain | Jump to… | `modules/hall-ui/public/shell.js:346` |
496
497
  | `bc779353aa0c` | certain | Karma — peer recognition and approvals, a separate counter from {…}. | `modules/hall-ui/public/profile.js:65` |
498
+ | `de0e1590667f` | certain | Keep all {…} {…} — they are the values the code drops in, and the change cannot land without them. | `modules/hall-ui/public/copy-desk.js:442` |
497
499
  | `32d25ef2182d` | certain | Keep box | `modules/hall-ui/public/box-panel.js:164` |
498
500
  | `fbe40b5818a3` | certain | Key removed. | `modules/hall-ui/public/settings.js:1193` |
499
501
  | `93c17262bacf` | certain | Key storage is being set up by an Archon — check back shortly. {…} | `modules/hall-ui/public/settings.js:1072` |
@@ -598,6 +600,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
598
600
  | `2c19f41704b9` | certain | Not yet available — {{worldName}} | `modules/hall-ui/public/not-ready.html:6` |
599
601
  | `571b9b22dbda` | certain | Not yet ready — blocked by dependencies or awaiting promotion. These become claimable when their blockers ship | `modules/hall-ui/public/work.html:98` |
600
602
  | `0c59d118db9b` | certain | Note (optional) | `modules/hall-ui/public/task-detail.js:460` |
603
+ | `cd652d04d616` | certain | Nothing changes yet. This files a task carrying your wording; whoever claims it lands the diff, and it ships g | `modules/hall-ui/public/copy-desk.html:168` |
601
604
  | `fec5d78497e8` | certain | Nothing in the backlog right now. | `modules/hall-ui/public/work.js:1055` |
602
605
  | `2c6e0dfbd781` | certain | Nothing is waiting on you. Requests reach you by your craft — set yours in | `modules/hall-ui/public/collab.html:44` |
603
606
  | `2ec0fbb20a42` | certain | Nothing is waiting. A spark appears here when its author offers a quick idea up for development. | `modules/hall-ui/public/ideas.js:365` |
@@ -669,6 +672,8 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
669
672
  | `dd4bc23c7759` | certain | Prompt for #{…} copied to your clipboard. | `modules/hall-ui/public/work.js:550` |
670
673
  | `cd7dc83871b6` | certain | Prompt for #{…} copied. | `modules/hall-ui/public/goals-page.js:373` |
671
674
  | `cd7dc83871b6` | certain | Prompt for #{…} copied. | `modules/hall-ui/public/work.js:561` |
675
+ | `fe7f3488fda8` | certain | Propose new wording | `modules/hall-ui/public/copy-desk.html:152` |
676
+ | `abee9a18325d` | certain | Propose wording… | `modules/hall-ui/public/copy-desk.js:179` |
672
677
  | `3f85bdc47099` | certain | Protected module scope — join by request; an Archon admits members | `modules/hall-ui/public/goals-render.js:792` |
673
678
  | `e5c292c8b361` | certain | Provides (seams) | `modules/hall-ui/public/atlas.js:288` |
674
679
  | `b9c6def6b120` | certain | Rank set to {…}. | `modules/hall-ui/public/watch.js:625` |
@@ -739,8 +744,9 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
739
744
  | `11486793742e` | certain | Saves the moment you toggle; applies from your next session. | `modules/hall-ui/public/settings.html:284` |
740
745
  | `e8e4e49fe8f4` | certain | Saves when you press Save; shows everywhere at once. | `modules/hall-ui/public/settings.html:88` |
741
746
  | `42cbc20a6ec8` | certain | Saves when you press Save; your next | `modules/hall-ui/public/settings.html:136` |
747
+ | `fc9d783ed0f5` | certain | Say why it is better. Whoever reviews this decides it from your reason, without asking you. | `modules/hall-ui/public/copy-desk.js:446` |
742
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` |
743
- | `5d2ba8e72fa1` | certain | Search failed. | `modules/hall-ui/public/copy-desk.js:305` |
749
+ | `5d2ba8e72fa1` | certain | Search failed. | `modules/hall-ui/public/copy-desk.js:343` |
744
750
  | `373a7639bcb9` | certain | Sections in this primer | `modules/hall-ui/public/primer.html:52` |
745
751
  | `00ca4e3c7c7d` | certain | Sections in this reference | `modules/hall-ui/public/drachmae.html:49` |
746
752
  | `ab8af800f2bb` | certain | Security reports | `modules/hall-ui/public/watch.html:47` |
@@ -825,6 +831,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
825
831
  | `44579eef0c8d` | certain | Tasks — {{worldName}} | `modules/hall-ui/public/work.html:6` |
826
832
  | `2f4f047dc1b4` | certain | Text size | `modules/hall-ui/public/shell.js:349` |
827
833
  | `545c59c1deb7` | certain | That is the session you are using right now. Ending it signs you out of this page. | `modules/hall-ui/public/settings-sessions.js:74` |
834
+ | `282c3fa2d456` | certain | That is the wording it already has. Change something, or file a flag instead if you only want to mark it. | `modules/hall-ui/public/copy-desk.js:438` |
828
835
  | `c0e28f30524d` | certain | That project's own standing, as reported by that project. | `modules/hall-ui/public/profile.js:285` |
829
836
  | `e99d4a811e92` | certain | That request is no longer available. | `modules/hall-ui/public/profile-connections.js:270` |
830
837
  | `50198c465225` | certain | The 16-value rank enum in three bands, which ranks are live, and the permissions each rank holds. | `modules/hall-ui/public/diagrams.html:59` |
@@ -871,7 +878,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
871
878
  | `7d016f4a65bf` | certain | The system is mid-build. These diagrams deliberately separate what stands today from what is yet planned, so t | `modules/hall-ui/public/diagrams.html:40` |
872
879
  | `198ba9353bf6` | certain | The task feed did not answer. Nothing on the record has changed, only the read failed. Try again in a moment, | `modules/hall-ui/public/task.js:632` |
873
880
  | `34555793f33e` | certain | The task list could not be loaded right now. | `modules/hall-ui/public/work.js:1215` |
874
- | `a42a37c43bfb` | certain | The words this project shows people — what has been flagged, and what nobody has looked at. | `modules/hall-ui/public/copy-desk.js:290` |
881
+ | `a42a37c43bfb` | certain | The words this project shows people — what has been flagged, and what nobody has looked at. | `modules/hall-ui/public/copy-desk.js:328` |
875
882
  | `bcdbded93d4e` | certain | The work board failed to load. Reload to try again. | `modules/hall-ui/public/work.js:1401` |
876
883
  | `25794c439321` | certain | Then copy the project onto your machine and run the one-shot bootstrap (it checks your setup, installs depende | `modules/hall-ui/public/hall-render.js:811` |
877
884
  | `df316c3484de` | certain | Then drive it however you like: | `modules/hall-ui/public/hall-render.js:744` |
@@ -897,6 +904,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
897
904
  | `9a685b01e2c6` | certain | This page opens at a higher rank. | `modules/hall-ui/public/watch.html:40` |
898
905
  | `87f1c2e07790` | certain | This page unlocks as you advance. | `modules/hall-ui/public/not-ready.html:26` |
899
906
  | `69e8beced2ff` | certain | This sends the idea back to its author. Say why, and which section. | `modules/hall-ui/public/government.js:962` |
907
+ | `09256febc32d` | certain | This sentence has {…} {…} where a value is dropped in when it is shown. | `modules/hall-ui/public/copy-desk.js:422` |
900
908
  | `c9e50a67988a` | certain | This task has shipped and its credits have landed. Neither Ship it nor Confirm is available. | `modules/hall-ui/public/task.js:568` |
901
909
  | `7217c4f1769d` | certain | This will {…} | `modules/hall-ui/public/harbor.js:125` |
902
910
  | `2ad5823d2cd7` | certain | Three dials, all settings rather than code: | `modules/hall-ui/public/government.html:55` |
@@ -933,6 +941,8 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
933
941
  | `70dc106494cf` | certain | What is wrong with it, and what would better look like? | `modules/hall-ui/public/copy-desk.html:101` |
934
942
  | `ae44a375e814` | certain | What it unlocks | `modules/hall-ui/public/ranks.js:109` |
935
943
  | `00dc1f0f83e1` | certain | What kind of wrong? | `modules/hall-ui/public/copy-desk.html:87` |
944
+ | `9a85f2c19b48` | certain | What should it say? | `modules/hall-ui/public/copy-desk.html:156` |
945
+ | `2dd116d2d817` | certain | What the current wording gets wrong, and what yours does about it. | `modules/hall-ui/public/copy-desk.html:166` |
936
946
  | `5f2b989bbf6a` | certain | What this builder has done, seen one craft at a time. | `modules/hall-ui/public/profile.html:134` |
937
947
  | `32d675a2b022` | certain | What this rank is for (optional) | `modules/hall-ui/public/government.html:92` |
938
948
  | `3dade88f0584` | certain | What your box would cost: | `modules/hall-ui/public/box-panel.js:235` |
@@ -947,6 +957,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
947
957
  | `fe85463560e0` | certain | Who builds on this project, ranked by work shipped. This project's own ledger — unlike the cross-project direc | `modules/hall-ui/public/roster.html:28` |
948
958
  | `7dbdb882e967` | certain | Who can find you. Your profile page can be public or private, and recruiters looking for builders are allowed | `modules/hall-ui/public/settings.html:111` |
949
959
  | `045c629729b7` | certain | Who’s on this goal, and what they’ve contributed to it. | `modules/hall-ui/public/goals.html:198` |
960
+ | `62ab2e60f629` | certain | Why is this better? | `modules/hall-ui/public/copy-desk.html:164` |
950
961
  | `fbd8a815b808` | certain | Why — the reason the author will act on | `modules/hall-ui/public/government.js:962` |
951
962
  | `a3ac116b499a` | certain | Why? | `modules/hall-ui/public/copy-desk.html:99` |
952
963
  | `0dcb485477b6` | certain | Windows (ARM) | `modules/hall-ui/public/hall-render.js:744` |
@@ -957,6 +968,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
957
968
  | `0e6b8e8f26cc` | certain | Works completed | `modules/hall-ui/public/profile.html:140` |
958
969
  | `52e5fe3c6075` | certain | Write a Full Idea | `modules/hall-ui/public/ideas.html:52` |
959
970
  | `7664f4373d1f` | certain | Write one | `modules/hall-ui/public/idea.js:258` |
971
+ | `47f61e576454` | certain | Write the wording you want instead. | `modules/hall-ui/public/copy-desk.js:436` |
960
972
  | `c368b56ecf40` | certain | Xenos builders start with a focused set of pages — ship your first | `modules/hall-ui/public/not-ready.html:31` |
961
973
  | `b6b0fcb2bcee` | certain | You already have a pending request or invitation for this goal. | `modules/hall-ui/public/goals-render.js:1059` |
962
974
  | `52e93bbc07a6` | certain | You are already a member of this goal. | `modules/hall-ui/public/goals-render.js:1060` |
@@ -1040,7 +1052,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1040
1052
  | `df941da50c7c` | certain | fell short | `modules/hall-ui/public/builders.js:568` |
1041
1053
  | `31735e119a04` | certain | first vote | `modules/hall-ui/public/government.js:584` |
1042
1054
  | `9563bd9f4971` | certain | first — your username is all we need. | `modules/hall-ui/public/hall-render.js:278` |
1043
- | `2e111f3a4912` | certain | flagged by | `modules/hall-ui/public/copy-desk.js:130` |
1055
+ | `2e111f3a4912` | certain | flagged by | `modules/hall-ui/public/copy-desk.js:148` |
1044
1056
  | `1874087e6d87` | certain | for Mac or Windows, sign in with your | `modules/hall-ui/public/hall-render.js:744` |
1045
1057
  | `836646d95f03` | certain | for a link that runs this session in Claude's own web/app interface, the same UI you'd use on a computer. | `modules/hall-ui/public/hall-render.js:744` |
1046
1058
  | `50eb308666b2` | certain | for version-level progress and goals. | `modules/hall-ui/public/work.html:84` |
@@ -1110,7 +1122,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1110
1122
  | `f83f0a9d6b6a` | certain | recorded, on the Operations tab | `modules/hall-ui/public/watch.html:49` |
1111
1123
  | `26da1df6fd4a` | certain | reflects it. | `modules/hall-ui/public/settings.html:136` |
1112
1124
  | `594962dc9ec3` | certain | s into the view containers below (falling back to | `modules/hall-ui/public/index.html:52` |
1113
- | `2a42549b34ae` | certain | said, when flagged: | `modules/hall-ui/public/copy-desk.js:120` |
1125
+ | `2a42549b34ae` | certain | said, when flagged: | `modules/hall-ui/public/copy-desk.js:124` |
1114
1126
  | `9bec9eb4829e` | certain | scope: {…} | `modules/hall-ui/public/goals-render.js:774` |
1115
1127
  | `a6f55d7aa6f7` | certain | shipped (live) | `modules/hall-ui/public/roadmap.js:273` |
1116
1128
  | `026ba1289d4d` | certain | shipped · | `modules/hall-ui/public/goals-render.js:696` |
@@ -1119,7 +1131,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1119
1131
  | `0215b2cdca8c` | certain | submit for review | `modules/hall-ui/public/modules.js:132` |
1120
1132
  | `da30b952a60b` | certain | system / unattributed | `modules/hall-ui/public/goals-page.js:249` |
1121
1133
  | `da30b952a60b` | certain | system / unattributed | `modules/hall-ui/public/work.js:498` |
1122
- | `a6e803a31a4d` | certain | task #{…} | `modules/hall-ui/public/copy-desk.js:101` |
1134
+ | `a6e803a31a4d` | certain | task #{…} | `modules/hall-ui/public/copy-desk.js:105` |
1123
1135
  | `4d8ee7d68974` | certain | task {…} | `modules/hall-ui/public/gate.js:142` |
1124
1136
  | `4d8ee7d68974` | certain | task {…} | `modules/hall-ui/public/hall-render.js:599` |
1125
1137
  | `4d8ee7d68974` | certain | task {…} | `modules/hall-ui/public/idea.js:207` |
@@ -3,9 +3,9 @@
3
3
  "generator": "scripts/gds/copy-inventory.js",
4
4
  "goal": 1000074,
5
5
  "counts": {
6
- "strings": 1600,
7
- "unique_ids": 1391,
8
- "certain": 1600,
6
+ "strings": 1612,
7
+ "unique_ids": 1403,
8
+ "certain": 1612,
9
9
  "heuristic": 0,
10
10
  "duplicate_ids": 150
11
11
  },
@@ -13,7 +13,7 @@
13
13
  "builders-hall": {
14
14
  "at": "modules/hall-ui/public",
15
15
  "files": 73,
16
- "strings": 1157
16
+ "strings": 1169
17
17
  },
18
18
  "status-dashboard": {
19
19
  "at": "modules/status-ui/public",
@@ -1910,7 +1910,7 @@
1910
1910
  "surface": "builders-hall",
1911
1911
  "text": "A flag needs a reason an artist can act on. What is wrong with it, and what would better look like?",
1912
1912
  "file": "modules/hall-ui/public/copy-desk.js",
1913
- "line": 334,
1913
+ "line": 372,
1914
1914
  "origin": "js-text-assign",
1915
1915
  "confidence": "certain"
1916
1916
  },
@@ -2108,7 +2108,7 @@
2108
2108
  "surface": "builders-hall",
2109
2109
  "text": "All surfaces",
2110
2110
  "file": "modules/hall-ui/public/copy-desk.js",
2111
- "line": 263,
2111
+ "line": 301,
2112
2112
  "origin": "js-markup",
2113
2113
  "confidence": "certain"
2114
2114
  },
@@ -2909,7 +2909,7 @@
2909
2909
  "surface": "builders-hall",
2910
2910
  "text": "Closed.",
2911
2911
  "file": "modules/hall-ui/public/copy-desk.js",
2912
- "line": 393,
2912
+ "line": 510,
2913
2913
  "origin": "js-notice",
2914
2914
  "confidence": "certain"
2915
2915
  },
@@ -2918,7 +2918,7 @@
2918
2918
  "surface": "builders-hall",
2919
2919
  "text": "Closing is a judgement too — say what you decided, so the next person does not re-litigate it.",
2920
2920
  "file": "modules/hall-ui/public/copy-desk.js",
2921
- "line": 378,
2921
+ "line": 495,
2922
2922
  "origin": "js-text-assign",
2923
2923
  "confidence": "certain"
2924
2924
  },
@@ -4416,6 +4416,15 @@
4416
4416
  "origin": "js-markup",
4417
4417
  "confidence": "certain"
4418
4418
  },
4419
+ {
4420
+ "id": "0c4632f983db",
4421
+ "surface": "builders-hall",
4422
+ "text": "File the change",
4423
+ "file": "modules/hall-ui/public/copy-desk.html",
4424
+ "line": 173,
4425
+ "origin": "html-text",
4426
+ "confidence": "certain"
4427
+ },
4419
4428
  {
4420
4429
  "id": "536a7e99640a",
4421
4430
  "surface": "builders-hall",
@@ -4529,7 +4538,7 @@
4529
4538
  "surface": "builders-hall",
4530
4539
  "text": "Flag this…",
4531
4540
  "file": "modules/hall-ui/public/copy-desk.js",
4532
- "line": 146,
4541
+ "line": 164,
4533
4542
  "origin": "js-markup",
4534
4543
  "confidence": "certain"
4535
4544
  },
@@ -4538,7 +4547,7 @@
4538
4547
  "surface": "builders-hall",
4539
4548
  "text": "Flagged. It is in the queue.",
4540
4549
  "file": "modules/hall-ui/public/copy-desk.js",
4541
- "line": 353,
4550
+ "line": 391,
4542
4551
  "origin": "js-notice",
4543
4552
  "confidence": "certain"
4544
4553
  },
@@ -5307,6 +5316,15 @@
5307
5316
  "origin": "js-markup",
5308
5317
  "confidence": "certain"
5309
5318
  },
5319
+ {
5320
+ "id": "de0e1590667f",
5321
+ "surface": "builders-hall",
5322
+ "text": "Keep all {…} {…} — they are the values the code drops in, and the change cannot land without them.",
5323
+ "file": "modules/hall-ui/public/copy-desk.js",
5324
+ "line": 442,
5325
+ "origin": "js-text-assign",
5326
+ "confidence": "certain"
5327
+ },
5310
5328
  {
5311
5329
  "id": "32d25ef2182d",
5312
5330
  "surface": "builders-hall",
@@ -6243,6 +6261,15 @@
6243
6261
  "origin": "js-markup",
6244
6262
  "confidence": "certain"
6245
6263
  },
6264
+ {
6265
+ "id": "cd652d04d616",
6266
+ "surface": "builders-hall",
6267
+ "text": "Nothing changes yet. This files a task carrying your wording; whoever claims it lands the diff, and it ships graded like every other change.",
6268
+ "file": "modules/hall-ui/public/copy-desk.html",
6269
+ "line": 168,
6270
+ "origin": "html-text",
6271
+ "confidence": "certain"
6272
+ },
6246
6273
  {
6247
6274
  "id": "fec5d78497e8",
6248
6275
  "surface": "builders-hall",
@@ -6882,6 +6909,24 @@
6882
6909
  "origin": "js-notice",
6883
6910
  "confidence": "certain"
6884
6911
  },
6912
+ {
6913
+ "id": "fe7f3488fda8",
6914
+ "surface": "builders-hall",
6915
+ "text": "Propose new wording",
6916
+ "file": "modules/hall-ui/public/copy-desk.html",
6917
+ "line": 152,
6918
+ "origin": "html-text",
6919
+ "confidence": "certain"
6920
+ },
6921
+ {
6922
+ "id": "abee9a18325d",
6923
+ "surface": "builders-hall",
6924
+ "text": "Propose wording…",
6925
+ "file": "modules/hall-ui/public/copy-desk.js",
6926
+ "line": 179,
6927
+ "origin": "js-markup",
6928
+ "confidence": "certain"
6929
+ },
6885
6930
  {
6886
6931
  "id": "3f85bdc47099",
6887
6932
  "surface": "builders-hall",
@@ -7512,6 +7557,15 @@
7512
7557
  "origin": "html-text",
7513
7558
  "confidence": "certain"
7514
7559
  },
7560
+ {
7561
+ "id": "fc9d783ed0f5",
7562
+ "surface": "builders-hall",
7563
+ "text": "Say why it is better. Whoever reviews this decides it from your reason, without asking you.",
7564
+ "file": "modules/hall-ui/public/copy-desk.js",
7565
+ "line": 446,
7566
+ "origin": "js-text-assign",
7567
+ "confidence": "certain"
7568
+ },
7515
7569
  {
7516
7570
  "id": "46711f7bc3df",
7517
7571
  "surface": "builders-hall",
@@ -7526,7 +7580,7 @@
7526
7580
  "surface": "builders-hall",
7527
7581
  "text": "Search failed.",
7528
7582
  "file": "modules/hall-ui/public/copy-desk.js",
7529
- "line": 305,
7583
+ "line": 343,
7530
7584
  "origin": "js-text-assign",
7531
7585
  "confidence": "certain"
7532
7586
  },
@@ -8286,6 +8340,15 @@
8286
8340
  "origin": "js-notice",
8287
8341
  "confidence": "certain"
8288
8342
  },
8343
+ {
8344
+ "id": "282c3fa2d456",
8345
+ "surface": "builders-hall",
8346
+ "text": "That is the wording it already has. Change something, or file a flag instead if you only want to mark it.",
8347
+ "file": "modules/hall-ui/public/copy-desk.js",
8348
+ "line": 438,
8349
+ "origin": "js-text-assign",
8350
+ "confidence": "certain"
8351
+ },
8289
8352
  {
8290
8353
  "id": "c0e28f30524d",
8291
8354
  "surface": "builders-hall",
@@ -8705,7 +8768,7 @@
8705
8768
  "surface": "builders-hall",
8706
8769
  "text": "The words this project shows people — what has been flagged, and what nobody has looked at.",
8707
8770
  "file": "modules/hall-ui/public/copy-desk.js",
8708
- "line": 290,
8771
+ "line": 328,
8709
8772
  "origin": "js-text-assign",
8710
8773
  "confidence": "certain"
8711
8774
  },
@@ -8934,6 +8997,15 @@
8934
8997
  "origin": "js-markup",
8935
8998
  "confidence": "certain"
8936
8999
  },
9000
+ {
9001
+ "id": "09256febc32d",
9002
+ "surface": "builders-hall",
9003
+ "text": "This sentence has {…} {…} where a value is dropped in when it is shown.",
9004
+ "file": "modules/hall-ui/public/copy-desk.js",
9005
+ "line": 422,
9006
+ "origin": "js-text-assign",
9007
+ "confidence": "certain"
9008
+ },
8937
9009
  {
8938
9010
  "id": "c9e50a67988a",
8939
9011
  "surface": "builders-hall",
@@ -9258,6 +9330,24 @@
9258
9330
  "origin": "html-text",
9259
9331
  "confidence": "certain"
9260
9332
  },
9333
+ {
9334
+ "id": "9a85f2c19b48",
9335
+ "surface": "builders-hall",
9336
+ "text": "What should it say?",
9337
+ "file": "modules/hall-ui/public/copy-desk.html",
9338
+ "line": 156,
9339
+ "origin": "html-text",
9340
+ "confidence": "certain"
9341
+ },
9342
+ {
9343
+ "id": "2dd116d2d817",
9344
+ "surface": "builders-hall",
9345
+ "text": "What the current wording gets wrong, and what yours does about it.",
9346
+ "file": "modules/hall-ui/public/copy-desk.html",
9347
+ "line": 166,
9348
+ "origin": "html-attr:placeholder",
9349
+ "confidence": "certain"
9350
+ },
9261
9351
  {
9262
9352
  "id": "5f2b989bbf6a",
9263
9353
  "surface": "builders-hall",
@@ -9384,6 +9474,15 @@
9384
9474
  "origin": "html-text",
9385
9475
  "confidence": "certain"
9386
9476
  },
9477
+ {
9478
+ "id": "62ab2e60f629",
9479
+ "surface": "builders-hall",
9480
+ "text": "Why is this better?",
9481
+ "file": "modules/hall-ui/public/copy-desk.html",
9482
+ "line": 164,
9483
+ "origin": "html-text",
9484
+ "confidence": "certain"
9485
+ },
9387
9486
  {
9388
9487
  "id": "fbd8a815b808",
9389
9488
  "surface": "builders-hall",
@@ -9474,6 +9573,15 @@
9474
9573
  "origin": "js-markup",
9475
9574
  "confidence": "certain"
9476
9575
  },
9576
+ {
9577
+ "id": "47f61e576454",
9578
+ "surface": "builders-hall",
9579
+ "text": "Write the wording you want instead.",
9580
+ "file": "modules/hall-ui/public/copy-desk.js",
9581
+ "line": 436,
9582
+ "origin": "js-text-assign",
9583
+ "confidence": "certain"
9584
+ },
9477
9585
  {
9478
9586
  "id": "c368b56ecf40",
9479
9587
  "surface": "builders-hall",
@@ -10226,7 +10334,7 @@
10226
10334
  "surface": "builders-hall",
10227
10335
  "text": "flagged by",
10228
10336
  "file": "modules/hall-ui/public/copy-desk.js",
10229
- "line": 130,
10337
+ "line": 148,
10230
10338
  "origin": "js-markup",
10231
10339
  "confidence": "certain"
10232
10340
  },
@@ -10856,7 +10964,7 @@
10856
10964
  "surface": "builders-hall",
10857
10965
  "text": "said, when flagged:",
10858
10966
  "file": "modules/hall-ui/public/copy-desk.js",
10859
- "line": 120,
10967
+ "line": 124,
10860
10968
  "origin": "js-markup",
10861
10969
  "confidence": "certain"
10862
10970
  },
@@ -10937,7 +11045,7 @@
10937
11045
  "surface": "builders-hall",
10938
11046
  "text": "task #{…}",
10939
11047
  "file": "modules/hall-ui/public/copy-desk.js",
10940
- "line": 101,
11048
+ "line": 105,
10941
11049
  "origin": "js-markup",
10942
11050
  "confidence": "certain"
10943
11051
  },
package/docs/file-map.md CHANGED
@@ -132,7 +132,7 @@
132
132
  │ ├── status-ui/ ← CORE-DOMAIN WEB-SURFACE carve (BV1.R84, default-on): the public status dashboard at status.<apex>, moved from public-status/. NO routes/db/port — declares contributes.webSurfaces:[{host:"status.",dir:"public"}], served by the loader web-surface seam (moduleWebSurfaces → serve-internal). CLAUDE.md, module.json, public/{index.html,status.js,style.css,cursors/,snapshots/}.
133
133
  │ ├── hall-ui/ ← CORE-DOMAIN WEB-SURFACE carve (BV1.R85, default-on): the authenticated builders' hall at builders.<apex>, moved from public-builders/ (~13k LOC, the largest). NO routes/db/port — declares contributes.webSurfaces:[{host:"builders.",dir:"public"}] for discovery, but UNLIKE status-ui keeps its DEDICATED serving block in serve-internal (the /builders shim + canonical redirects + citizen/Archon page gates + asset-stamping + hall-widget injection), partitioned out of the generic web-surface loop and served from BUILDERS_DIR. CLAUDE.md, module.json, public/{index.html,builders.js,style.css,work,watch,harbor,gate,pair,settings,ranks,sessions,primer,diagrams,atlas,...}.{html,js},cursors/,chime.wav. Four ARCHETYPE sheets sit beside the per-page ones: `record.css` (the task + idea records, task 1003305), `room.css` (the READING ROOMS — the primer + the diagrams index, task 1003306: the reading measure and rhythm, the table of contents, the progress hairline and the framed figure diagram-viewer.js upgrades on both pages), `oversight.css` (the OVERSIGHT family — government, watch, harbor, gate, task 1003469: the row, the figure band inside a panel, the group head, the inline form, the grant toggle and the shared confirm modal; named oversight because the vocabulary wall bans "governance" on the government surface) and `panel.css` (the PANEL family — settings, profile, pair, not-ready, task 1003308: the row, the switch, the field with its label above, the chip control, the four voices and the sign-in gate; the hall's my-projects page was DELETED in the same task — "my projects" is the hub's user-level page, and the hall keeps no link or redirect). A page sheet then holds only what one page has and the others do not — `primer.css` the acknowledge gate, `diagrams.css` the legend strip, `gate.css` the hold reasons and file chips, `watch.css` the severities, the report reader and the grade trend, `settings.css` the rail layout, the group head, the token ladder and the voices grid, `profile.css` the identity band and the shelf, `pair.css` the device row, `people.css` the directory's identity cell (task 1003470 made the legacy door `/scouting` ship the same body and script as `/people`; task 1003440 then deleted the door — `scouting.html` and `scouting.states.json` are gone and the URL 301s to `/people`).
134
134
  │ ├── lifecycle/ ← CORE-DOMAIN carve (BV1.R86, default-on): the build state machine — tasks · claims · versions · done-when · goals · dependencies · claim→ship→grade→credit · github-push + merge-lock + conflict-resolve + publish-reconciler. The LAST, most-coupled carve; registers the `lifecycle` kernel port (createTask, classifyTaskKind, tallyPeerVotes, work-tracking reads). CLAUDE.md, module.json, routes/{tasks,claims,versions,done-when,goals,dependencies,gate-approvals,analytics}.js, lifecycle.js, github-push.js, merge-lock.js, conflict-resolve.js, publish-reconciler.js, task-visuals.js + task-visual-db.js + routes/visuals.js (the optional ship-time visual, task 1003109 — the route file is NOT named task-*.js on purpose; see the module CLAUDE.md).
135
- │ ├── copy-desk/ ← CORE-DOMAIN module (task 1003113 / R02 of goal 1000074, default-on): the COPY half of the design contract — ADR 0081 gave design TOKENS a repo-owned source of truth, text had none. Owns the FLAG (anyone in any role marks a string or a whole surface as needing an artist's attention, with a reason required in BOTH the route and a CHECK constraint) and the QUEUE an artist reads it from. READS R01's committed registry (docs/copy-registry.json, generated by scripts/gds/copy-inventory.js) and never writes it. NO LIVE CMS is the hard non-goal: no column here could hold replacement text, and copy_no_cms.mjs pins that. Key is `copy-desk`, not `copy` — the branding contract already owns a `copy` block, so the bare word reds the "core carries no module code" fitness check. CLAUDE.md, module.json, registry.js, flags.js, routes/copy-desk.js, migrations/copy_desk_001_flags.sql, tests/{copy_flags,copy_queue,copy_no_cms}.mjs. Its hall surface lives with hall-ui (public/copy-desk.{html,js,css}), per the one-key-per-web-surface precedent.
135
+ │ ├── copy-desk/ ← CORE-DOMAIN module (task 1003113 / R02 of goal 1000074, default-on): the COPY half of the design contract — ADR 0081 gave design TOKENS a repo-owned source of truth, text had none. Owns the FLAG (anyone in any role marks a string or a whole surface as needing an artist's attention, with a reason required in BOTH the route and a CHECK constraint) and the QUEUE an artist reads it from. READS R01's committed registry (docs/copy-registry.json, generated by scripts/gds/copy-inventory.js) and never writes it. NO LIVE CMS is the hard non-goal: no column here could hold replacement text, and copy_no_cms.mjs pins that. Key is `copy-desk`, not `copy` — the branding contract already owns a `copy` block, so the bare word reds the "core carries no module code" fitness check. R03 (task 1003114, ADR 0233) added the PROPOSAL: an artist writes the replacement wording and it becomes a GDS task carrying a fenced copy-proposal patch — no row, NO second migration (a proposals table is the forbidden column with extra steps), and scripts/gds/copy-apply.js lands it as a real diff under a claim. CLAUDE.md, module.json, registry.js, flags.js, proposals.js, routes/copy-desk.js, migrations/copy_desk_001_flags.sql, tests/{copy_flags,copy_queue,copy_no_cms,copy_proposals}.mjs. Its hall surface lives with hall-ui (public/copy-desk.{html,js,css}), per the one-key-per-web-surface precedent.
136
136
  │ ├── ui-design/ ← CORE-DOMAIN module (task 1003324 / ADR 0197, default-on): the design capability every builder on every instance gets — ships METHOD, never a world. Absorbs ADR 0081's layer: adapters/{claude-design,figma}/index.js (moved from src/ui/adapters/), scripts/{design-sync,figma-design-sync,validate-design}.js (moved from scripts/gds/, which keeps thin shims), docs/design-contract.md (moved from docs/). Declaration-only: contributes.skills design (the /design playbook, new) + design-sync + figma-design-sync; no routes/port/migrations, so disabling it touches no served surface. CLAUDE.md separates the platform FLOORS (the Fifteen Rule, the dark twins, no page :root, the 24px floor, AA in both modes, the kill switch) from the instance's WORLD (its packs + DESIGN.md). kit/ (task 1003320) is the look-before-you-ship kit: lib.js (the floors, the states/probes contracts, the action + expectation vocabularies, the WCAG maths, the stub spawner), serve.js (any surface through the doorway's real transforms + fixtures/), render.js (states × 1440/390/320 × dark/light, audited), probe.js (PASS/FAIL contracts), check-mock.js (platform rules + the instance's DESIGN.md taste bans, then the detector), tells.js (task 1003329 / ADR 0223: the anti-pattern detector as two tiers — floors FAIL, craft tells WARN, kit-ignore waivers per file; the rendered twins live in lib.js factsInPage), contrast.js + png.js; a page's <page>.states.json / <page>.probes.json sit BESIDE the surface (modules/public-landing/public/, modules/hall-ui/public/). Recipe: docs/recipes/ui-look-before-you-ship.md. skills/ (task 1003321 / ADR 0198) is the vendoring policy: policy.json (licence allowlist, verdicts that may land, sidecar fields, preamble markers), PREAMBLE.md (the platform preamble every vendored SKILL.md opens with), README.md (the roster — both origins scanned dangerous on 2026-08-28, landed as rebuild specs; nothing vendored — and the landing recipe); a landable copy goes under skills/vendor/<name>/ with PROVENANCE.md + LICENSE and is materialised into an instance's .claude/skills/ by claude-materialize.js step 1b. skills/<name>/ (task 1003325 / ADR 0220) are the in-house rebuilds from the specs, first-party and counted: design-taste-frontend (the default taste skill), design-taste-frontend-v1 (the earlier generation, kept distinct), high-end-visual-design (the polish pass), redesign-existing-projects (the in-place upgrade); each opens with the same preamble and carries a "Rebuilt from" section instead of a sidecar. impeccable/ (task 1003326 / ADR 0221) is the design-craft method as ONE skill with sub-commands: SKILL.md (the router, the menu, the craft floor, the bounded finish) + reference/<sub-command>.md (eighteen playbooks, one loaded per request); no hooks, no bypass agent, no telemetry, no live server. minimalist-ui/, industrial-brutalist-ui/, gpt-taste/, stitch-design-taste/ (task 1003327 / ADR 0230) are the four looks, composition grammars with no colours of their own: the palette is the instance's pack and the texture is a named entry in styles/; a substrate is an archetype that still ships both modes, gpt-taste's selection is derived from the route rather than rolled, and stitch-design-taste writes a DESIGN.md-shaped contract document whose thirteen are transcribed from the pack. image-to-code/, imagegen-frontend-web/, imagegen-frontend-mobile/, brandkit/ (task 1003328 / ADR 0222) are the image family under the hero-only rule: plates and hero objects only, the pair (JPEG dark plate + WebP alpha cutout) with a <file>.json sidecar beside each, through the instance's art pipeline key; the grove specimen's styles/grove/assets/ is the worked example. style/ (task 1003475 / ADR 0231) is the module's first FIRST-PARTY skill (no upstream, so a `## First party` section instead of `## Rebuilt from`): the /style session in which an owner authors their own look in four bounded steps, rendering the nearest library entries before asking, drafting inside the contract, retuning by measurement, and handing over the one-step adoption without ever writing config/branding.json. styles/ (task 1003323 / ADR 0219) is the style library: <name>/pack.json (the theme.ui overlay, exactly the fifteen) + DESIGN.md (the look's derived recipes, thirteen in lockstep with the pack) + mock.html (the specimen); chrome-world (pinned to the neutral pack), expedition, grove, blueprint (the first cool look, authored through /style at task 1003475); STYLE=<name> on the kit lays a look over the instance's pack through GDS_BRANDING_FILE; tests/ui_design_styles.mjs runs the world/cosmos/hall token suites once per alternate (UI_DESIGN_PACK). config/design-tokens.* + design-sources.json STAY in config/ as the host boundary; public-landing keeps its own key (first customer, not owner).
137
137
  │ ├── character-anim/ ← consistent-character generative animation (ADR 0088) — graded painterly frame sets + manifest, the otb-character-review skill. CLAUDE.md, module.json.
138
138
  │ ├── provisioning/ ← stands up + operates a Cloud Bongos instance's own infra (server/DB/domain/DNS/TLS) via the API (ADR 0111); web-tier request+state only, no cloud tokens — a separate control-plane runner drains the intents. Distinct from the `hosting` module (ADR 0092), which brokers compute workloads. CLAUDE.md, module.json.
@@ -194,6 +194,7 @@
194
194
  │ ├── docs-entropy.js ← ([#…] docs-entropy) markdown-corpus linter: broken internal links + cross-file duplicate-prose detector across every tracked `.md`; `--verbose` / `--file-ideas`
195
195
  │ ├── doc-comment-coverage.js ← ADR 0095 / task 1001654: the ADVISORY doc-comment nudge (fitness Check 28) — reports source files under src/·scripts/·modules/ that open with no module header. Never hard-fails: a doc-comment gate that blocks a ship buys filler prose, and making it blocking needs owner sign-off + its own ADR. CRLF-safe (unlike docs-entropy.js); an empty enumeration throws as a scan defect
196
196
  │ ├── copy-inventory.js ← R01 of goal 1000074 (the artist's loop): the COPY REGISTRY — every user-facing string across the hall / status / landing surfaces, each row naming the render path that shows it (html-text · html-attr · js-markup · js-notice · js-text-assign) + a stable id that survives a move. Writes docs/copy-registry.json + docs/copy-inventory.md; `--check` fails on drift. Precision over recall: a JS literal with no render path is not listed
197
+ │ ├── copy-apply.js ← R03 of goal 1000074 (ADR 0233): lands a copy proposal as a REAL DIFF under a claim — the design half’s adapter.export() applied to text. Reads the fenced copy-proposal patch off a task (--task N; --dry-run, --patch-file), RE-DERIVES the string’s position by re-running copy-inventory’s own extractor over the working tree (the registry commits no offsets — they go stale, the id does not), re-injects the source’s own ${expr} into the proposal’s {…} holes, writes, regenerates the registry and verifies its own edit. Refuses BY NAME on target_gone / ambiguous_target / no_exact_span / placeholder_mismatch / path_outside_surface. The ONLY writer in the copy feature, and deliberately a command rather than a route
197
198
  │ ├── gen-diagrams.js ← generates the 5 onboarding diagrams (`.mmd`/`.svg`/`.png` + `assertions.json`) from templates in this file — never hand-edit a `.mmd`/assertions.json; runs on deploy
198
199
  │ ├── gen-api-docs.js ← ADR 0109: generates `docs/api/openapi.json` + `docs/api-reference.md` from the live route files via `route-rank-check.js` introspection, so the API reference cannot drift from what the server actually mounts
199
200
  │ ├── architect-audit.js ← MAS Phase 5 (ADR 0024): the Architect's bounded first-principles `--scope`/`--paths` audit CLI → `docs/audits/`
@@ -1421,5 +1421,7 @@ is load-bearing: the script throws rather than guess if it is missing, and
1421
1421
  landed since 1.19.490 with no explicit bump. run 33692191645. (task 1002620)
1422
1422
  1.19.492 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
1423
1423
  landed since 1.19.491 with no explicit bump. run 33693742388. (task 1002620)
1424
+ 1.19.493 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
1425
+ landed since 1.19.492 with no explicit bump. run 33694576680. (task 1002620)
1424
1426
  ---------------------------------------------------------------------------
1425
1427
  ```
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "key": "copy-desk",
3
3
  "title": "Copy desk (the artist's loop over user-facing text)",
4
- "description": "The COPY half of the design contract (goal 1000074, the artist's loop). Named for the editorial desk copy passes over before it is published — which is exactly the job, and which keeps the module key off the generic word 'copy' that the branding contract already owns (branding.copy.tagline/hallName/notFound). ADR 0081 made the repo the source of truth for design TOKENS and component surfaces; there was no equivalent for user-facing TEXT. This module owns that half: the FLAG — anyone, in any role, marks a string or a whole surface as needing an artist's attention, with a required reason — and the QUEUE an artist reads it from. The inventory a flag points at is the committed registry docs/copy-registry.json, generated by scripts/gds/copy-inventory.js (R01); this module reads it and never writes it. NO LIVE CMS is the goal's hard non-goal: nothing here can change a rendered string. A flag is a work request; the fix ships as a claimed, graded GDS task like every other change. default-on — every instance shows a person words, so every instance can flag them.",
4
+ "description": "The COPY half of the design contract (goal 1000074, the artist's loop). Named for the editorial desk copy passes over before it is published — which is exactly the job, and which keeps the module key off the generic word 'copy' that the branding contract already owns (branding.copy.tagline/hallName/notFound). ADR 0081 made the repo the source of truth for design TOKENS and component surfaces; there was no equivalent for user-facing TEXT. This module owns that half: the FLAG — anyone, in any role, marks a string or a whole surface as needing an artist's attention, with a required reason — and the QUEUE an artist reads it from. The inventory a flag points at is the committed registry docs/copy-registry.json, generated by scripts/gds/copy-inventory.js (R01); this module reads it and never writes it. R03 (task 1003114) added the PROPOSAL: an artist writes the replacement wording and it becomes a GDS task carrying a patch, which scripts/gds/copy-apply.js lands as a real diff under a claim — the design half's adapter.export() contract (ADR 0081) applied to text. NO LIVE CMS is the goal's hard non-goal: nothing here can change a rendered string. A flag is a work request; a proposal is a work request with a suggested fix; the fix ships as a claimed, graded GDS task like every other change. default-on — every instance shows a person words, so every instance can flag them.",
5
5
  "coreVersion": "^1.8.0",
6
6
  "default": true,
7
7
  "maintenance": { "status": "core-maintained" },
8
8
  "contributes": { "routes": ["copy-desk"], "migrations": true },
9
9
  "provides": [],
10
- "consumes": []
10
+ "consumes": ["lifecycle"]
11
11
  }