@bongos/core 1.19.1068 → 1.19.1070
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 +59 -54
- package/.claude/skills/design/SKILL.md +1 -1
- package/docs/adr/0342-module-categories-are-eight-parents-with-approved-sub-categories.md +83 -0
- package/docs/adr/README.md +1 -0
- package/docs/copy-inventory.md +12 -12
- package/docs/copy-registry.json +22 -22
- package/docs/module-api-changelog.md +4 -0
- package/docs/packs/artist.md +55 -31
- package/docs/packs/engineer.md +2 -0
- package/docs/page-readings.json +494 -488
- package/modules/hall-ui/public/atlas.html +1 -1
- package/modules/hall-ui/public/blockers.html +1 -1
- package/modules/hall-ui/public/board-room.html +1 -1
- package/modules/hall-ui/public/collab.html +1 -1
- package/modules/hall-ui/public/copy-desk.html +1 -1
- package/modules/hall-ui/public/deploy.html +1 -1
- package/modules/hall-ui/public/diagrams.html +1 -1
- package/modules/hall-ui/public/drachmae.html +1 -1
- package/modules/hall-ui/public/fleet.html +1 -1
- package/modules/hall-ui/public/gate.html +1 -1
- package/modules/hall-ui/public/goals.html +1 -1
- package/modules/hall-ui/public/government.html +1 -1
- package/modules/hall-ui/public/idea.html +3 -3
- package/modules/hall-ui/public/ideas.html +1 -1
- package/modules/hall-ui/public/index.html +1 -1
- package/modules/hall-ui/public/modules.html +1 -1
- package/modules/hall-ui/public/primer.html +1 -1
- package/modules/hall-ui/public/profile.html +1 -1
- package/modules/hall-ui/public/project-settings.html +1 -1
- package/modules/hall-ui/public/ranks.html +1 -1
- package/modules/hall-ui/public/roadmap.html +1 -1
- package/modules/hall-ui/public/roster.html +1 -1
- package/modules/hall-ui/public/sessions.html +1 -1
- package/modules/hall-ui/public/settings.html +1 -1
- package/modules/hall-ui/public/shell.js +23 -32
- package/modules/hall-ui/public/studio.html +1 -1
- package/modules/hall-ui/public/task.html +1 -1
- package/modules/hall-ui/public/thinking.html +1 -1
- package/modules/hall-ui/public/tweak-editor.html +1 -1
- package/modules/hall-ui/public/watch.html +1 -1
- package/modules/hall-ui/public/work.html +1 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +16 -0
- package/src/module-api.js +1 -1
- package/tests/hall_nav.mjs +25 -1
- package/tests/hall_page_gate_map.mjs +2 -0
- package/tests/hall_tweak_editor.mjs +1 -1
- package/tests/nav_permission_atoms.mjs +1 -1
package/docs/copy-registry.json
CHANGED
|
@@ -192,7 +192,7 @@
|
|
|
192
192
|
"modules/hall-ui/public/hall-render.js:367",
|
|
193
193
|
"modules/hall-ui/public/hall-render.js:391",
|
|
194
194
|
"modules/hall-ui/public/hall-render.js:461",
|
|
195
|
-
"modules/hall-ui/public/shell.js:
|
|
195
|
+
"modules/hall-ui/public/shell.js:446"
|
|
196
196
|
]
|
|
197
197
|
},
|
|
198
198
|
{
|
|
@@ -1510,8 +1510,8 @@
|
|
|
1510
1510
|
"text": "Sign out",
|
|
1511
1511
|
"occurrences": 2,
|
|
1512
1512
|
"at": [
|
|
1513
|
-
"modules/hall-ui/public/shell.js:
|
|
1514
|
-
"modules/hall-ui/public/shell.js:
|
|
1513
|
+
"modules/hall-ui/public/shell.js:464",
|
|
1514
|
+
"modules/hall-ui/public/shell.js:776"
|
|
1515
1515
|
]
|
|
1516
1516
|
},
|
|
1517
1517
|
{
|
|
@@ -3265,20 +3265,20 @@
|
|
|
3265
3265
|
"confidence": "certain"
|
|
3266
3266
|
},
|
|
3267
3267
|
{
|
|
3268
|
-
"id": "
|
|
3268
|
+
"id": "ef2fab4901d6",
|
|
3269
3269
|
"surface": "builders-hall",
|
|
3270
|
-
"text": "Back to
|
|
3271
|
-
"file": "modules/hall-ui/public/
|
|
3272
|
-
"line":
|
|
3270
|
+
"text": "Back to tasks",
|
|
3271
|
+
"file": "modules/hall-ui/public/task.html",
|
|
3272
|
+
"line": 34,
|
|
3273
3273
|
"origin": "html-text",
|
|
3274
3274
|
"confidence": "certain"
|
|
3275
3275
|
},
|
|
3276
3276
|
{
|
|
3277
|
-
"id": "
|
|
3277
|
+
"id": "64e2fbc2c072",
|
|
3278
3278
|
"surface": "builders-hall",
|
|
3279
|
-
"text": "Back to
|
|
3280
|
-
"file": "modules/hall-ui/public/
|
|
3281
|
-
"line":
|
|
3279
|
+
"text": "Back to your thinking",
|
|
3280
|
+
"file": "modules/hall-ui/public/idea.html",
|
|
3281
|
+
"line": 31,
|
|
3282
3282
|
"origin": "html-text",
|
|
3283
3283
|
"confidence": "certain"
|
|
3284
3284
|
},
|
|
@@ -6824,7 +6824,7 @@
|
|
|
6824
6824
|
"surface": "builders-hall",
|
|
6825
6825
|
"text": "Its details are below.",
|
|
6826
6826
|
"file": "modules/hall-ui/public/shell.js",
|
|
6827
|
-
"line":
|
|
6827
|
+
"line": 734,
|
|
6828
6828
|
"origin": "js-markup",
|
|
6829
6829
|
"confidence": "certain"
|
|
6830
6830
|
},
|
|
@@ -6905,7 +6905,7 @@
|
|
|
6905
6905
|
"surface": "builders-hall",
|
|
6906
6906
|
"text": "Jump to a page or record",
|
|
6907
6907
|
"file": "modules/hall-ui/public/shell.js",
|
|
6908
|
-
"line":
|
|
6908
|
+
"line": 485,
|
|
6909
6909
|
"origin": "js-markup",
|
|
6910
6910
|
"confidence": "certain"
|
|
6911
6911
|
},
|
|
@@ -6914,7 +6914,7 @@
|
|
|
6914
6914
|
"surface": "builders-hall",
|
|
6915
6915
|
"text": "Jump to…",
|
|
6916
6916
|
"file": "modules/hall-ui/public/shell.js",
|
|
6917
|
-
"line":
|
|
6917
|
+
"line": 487,
|
|
6918
6918
|
"origin": "js-markup",
|
|
6919
6919
|
"confidence": "certain"
|
|
6920
6920
|
},
|
|
@@ -8588,7 +8588,7 @@
|
|
|
8588
8588
|
"surface": "builders-hall",
|
|
8589
8589
|
"text": "Open navigation",
|
|
8590
8590
|
"file": "modules/hall-ui/public/shell.js",
|
|
8591
|
-
"line":
|
|
8591
|
+
"line": 476,
|
|
8592
8592
|
"origin": "js-markup",
|
|
8593
8593
|
"confidence": "certain"
|
|
8594
8594
|
},
|
|
@@ -10460,7 +10460,7 @@
|
|
|
10460
10460
|
"surface": "builders-hall",
|
|
10461
10461
|
"text": "Sign in with GitHub",
|
|
10462
10462
|
"file": "modules/hall-ui/public/shell.js",
|
|
10463
|
-
"line":
|
|
10463
|
+
"line": 446,
|
|
10464
10464
|
"origin": "js-markup",
|
|
10465
10465
|
"confidence": "certain"
|
|
10466
10466
|
},
|
|
@@ -10469,7 +10469,7 @@
|
|
|
10469
10469
|
"surface": "builders-hall",
|
|
10470
10470
|
"text": "Sign out",
|
|
10471
10471
|
"file": "modules/hall-ui/public/shell.js",
|
|
10472
|
-
"line":
|
|
10472
|
+
"line": 464,
|
|
10473
10473
|
"origin": "js-markup",
|
|
10474
10474
|
"confidence": "certain"
|
|
10475
10475
|
},
|
|
@@ -10478,7 +10478,7 @@
|
|
|
10478
10478
|
"surface": "builders-hall",
|
|
10479
10479
|
"text": "Sign out",
|
|
10480
10480
|
"file": "modules/hall-ui/public/shell.js",
|
|
10481
|
-
"line":
|
|
10481
|
+
"line": 776,
|
|
10482
10482
|
"origin": "js-markup",
|
|
10483
10483
|
"confidence": "certain"
|
|
10484
10484
|
},
|
|
@@ -10505,7 +10505,7 @@
|
|
|
10505
10505
|
"surface": "builders-hall",
|
|
10506
10506
|
"text": "Skip to content",
|
|
10507
10507
|
"file": "modules/hall-ui/public/shell.js",
|
|
10508
|
-
"line":
|
|
10508
|
+
"line": 767,
|
|
10509
10509
|
"origin": "js-text-assign",
|
|
10510
10510
|
"confidence": "certain"
|
|
10511
10511
|
},
|
|
@@ -10757,7 +10757,7 @@
|
|
|
10757
10757
|
"surface": "builders-hall",
|
|
10758
10758
|
"text": "Switch theme",
|
|
10759
10759
|
"file": "modules/hall-ui/public/shell.js",
|
|
10760
|
-
"line":
|
|
10760
|
+
"line": 491,
|
|
10761
10761
|
"origin": "js-markup",
|
|
10762
10762
|
"confidence": "certain"
|
|
10763
10763
|
},
|
|
@@ -10955,7 +10955,7 @@
|
|
|
10955
10955
|
"surface": "builders-hall",
|
|
10956
10956
|
"text": "Text size",
|
|
10957
10957
|
"file": "modules/hall-ui/public/shell.js",
|
|
10958
|
-
"line":
|
|
10958
|
+
"line": 490,
|
|
10959
10959
|
"origin": "js-markup",
|
|
10960
10960
|
"confidence": "certain"
|
|
10961
10961
|
},
|
|
@@ -12359,7 +12359,7 @@
|
|
|
12359
12359
|
"surface": "builders-hall",
|
|
12360
12360
|
"text": "Use the control below to take it.",
|
|
12361
12361
|
"file": "modules/hall-ui/public/shell.js",
|
|
12362
|
-
"line":
|
|
12362
|
+
"line": 731,
|
|
12363
12363
|
"origin": "js-markup",
|
|
12364
12364
|
"confidence": "certain"
|
|
12365
12365
|
},
|
|
@@ -2623,5 +2623,9 @@ is load-bearing: the script throws rather than guess if it is missing, and
|
|
|
2623
2623
|
landed since 1.19.1066 with no explicit bump. run 36458843914. (task 1002620)
|
|
2624
2624
|
1.19.1068 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
2625
2625
|
landed since 1.19.1067 with no explicit bump. run 36467481353. (task 1002620)
|
|
2626
|
+
1.19.1069 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
2627
|
+
landed since 1.19.1068 with no explicit bump. run 36470192310. (task 1002620)
|
|
2628
|
+
1.19.1070 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
2629
|
+
landed since 1.19.1069 with no explicit bump. run 36472133987. (task 1002620)
|
|
2626
2630
|
---------------------------------------------------------------------------
|
|
2627
2631
|
```
|
package/docs/packs/artist.md
CHANGED
|
@@ -6,71 +6,95 @@ An art session is not the engineer's text-heavy build loop. The artist's subject
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
## Where the artist works: the studio
|
|
10
|
+
|
|
11
|
+
The artist's whole loop is one page in the hall, **`/builders/studio`**: Tweak Mode ([ADR 0341](../adr/0341-the-page-is-the-unit-of-tweak-mode.md)). The unit is a **page** (an id such as `landing:index` or `builders:studio`, from [`docs/page-inventory.json`](../page-inventory.json)): the artist takes one whole page, rewrites its words as one document, submits it, and approves the applied result before it ships. No terminal, no claim command, no diff. Your first move is to open the studio in their browser and let them look.
|
|
12
|
+
|
|
13
|
+
**The studio.** A calm night room. Top right, the **tally**: credits, pages tweaked, this week. Under the greeting, Resume and three quick actions, each opening a glass panel in place:
|
|
14
|
+
|
|
15
|
+
- **Resume** — shown only while they hold a page; back into the editor on it, with "N of M lines" rewritten so far.
|
|
16
|
+
- **Tweak/CopyWrite Flow** — the page to do next, with its reason ("2 people asked for it", "4 lines changed since your last pass", "untweaked"). **take it** claims that page and opens the editor; **pick another** shows four more as chips. The order is: asked for, then changed since the last tweak, then untweaked.
|
|
17
|
+
- **Approval queue** — the pages a session has applied, waiting for them (below).
|
|
18
|
+
- **Artist Review Status** — three lines, landing, builders hall and status, each "N of M tweaked".
|
|
19
|
+
|
|
20
|
+
The studio's own words (the greeting and its sub-line) are the studio page itself: clicking them offers to take `builders:studio`, and then they type over them where they stand.
|
|
21
|
+
|
|
22
|
+
**The editor: `/builders/tweak-editor?page=<id>`.** Every line of the page, in page order, on one sheet of paper, typed over in place and **autosaved**. A changed line keeps a faint "was:". A line marked "changes this on every page" is shared shell text; one marked "goes to an engineer" cannot be placed in the code, so submitting files it as an engineer task and the page does not wait for it. The top bar holds:
|
|
23
|
+
|
|
24
|
+
- **open the page ↗** — the live page in a new tab, to read it in place;
|
|
25
|
+
- **download .docx / upload .docx** — work offline in Word, then upload; it merges into the draft, never straight to the site. Keep the paragraphs as they are: added, dropped or reordered lines are refused by name, and a page that changed since the download asks for a fresh one;
|
|
26
|
+
- **submit page** — freezes the words and puts the page in the queue. Then "The page is in." with **take next**, **pick another**, or back to the studio.
|
|
27
|
+
|
|
28
|
+
Only the holder writes. A page someone else holds is read-only and names them. A draft left unsubmitted keeps its words and can be taken up again.
|
|
29
|
+
|
|
30
|
+
**Between submit and approval, a session applies it.** Submitted pages wait for a builder session running `/tweak` ([the skill](../../.claude/skills/tweak/SKILL.md), Metic+). It transcribes every line, renders the page before and after, and parks it. **It never lands the page.**
|
|
31
|
+
|
|
32
|
+
**The Approval queue.** Pictures of the applied page, desktop or phone, light or dark, flipped **before / after**. Beside them, the changed lines ("was:" / "becomes:"); a line the applier could not apply says why. Then:
|
|
33
|
+
|
|
34
|
+
- **approve and ship** — it lands, the page's count goes up, and the artist is paid **30 credits** for the page, shown in the tally;
|
|
35
|
+
- **send it back** — with a note of at least ten characters; it returns to the `/tweak` queue and comes back once it is re-applied.
|
|
36
|
+
|
|
37
|
+
**Gone from the artist's loop:** the per-ship "Artist review" task (a ship that changes a page's words now marks it "changed since last tweak", and the Flow raises it) and flagging single strings on the copy desk (archived; a page is the unit now). Reviews filed before Tweak Mode are still answered behind the studio's quiet door under the actions ("1 review from before Tweak Mode still waits"), shown only while one does.
|
|
38
|
+
|
|
39
|
+
**When the artist is at the terminal instead.** You are their hands. The same routes the pages use are on `node scripts/gds/api.js` under `/api/bongos/copy-desk/`: `GET next`, `POST pages/<id>/claim`, `GET pages/<id>/draft`, `PUT pages/<id>/draft` (the whole draft, `{ reading_hash, lines: [{ key, after }] }`), `POST pages/<id>/submit`, `GET approvals`, `POST pages/<id>/approve`, `POST pages/<id>/send-back` (`{ note }`). Put *their* words in, then open the editor or the queue so they see the result. Never approve on their behalf.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
9
43
|
## The first rule: show, don't narrate
|
|
10
44
|
|
|
11
45
|
In every other craft Claude narrates — diffs, logs, paragraphs about what it is doing. **Here that is the failure mode.** An artist judges with their eyes.
|
|
12
46
|
|
|
13
47
|
> **Show, then briefly caption. Never narrate the pipeline at length.** Every step ends in something the artist can *look at*, with at most a one-line caption. The plumbing still runs; it runs quietly.
|
|
14
48
|
|
|
15
|
-
- **End every step with something visual.** After a generation, display the image. After a copy change, show the rendered text in place, not a diff. After a check, show the scorecard, not a prose summary.
|
|
16
|
-
- **Collapse the plumbing to one-liners.**
|
|
17
|
-
- **Verification is looking, not reading.** Surface the rendered
|
|
18
|
-
- **Nothing that changes a page ships until they have seen it** (
|
|
49
|
+
- **End every step with something visual.** After a generation, display the image. After a copy change, show the rendered text in place (the studio, the editor, the Approval queue), not a diff. After a check, show the scorecard, not a prose summary.
|
|
50
|
+
- **Collapse the plumbing to one-liners.** "Saved, 12 of 38 lines rewritten" beats three paragraphs.
|
|
51
|
+
- **Verification is looking, not reading.** Surface the rendered page, not console logs. Logs are for when something breaks.
|
|
52
|
+
- **Nothing that changes a page ships until they have seen it** (owner, 2026-09-23). In Tweak Mode the Approval queue is that look. For other work, show the before and after in both modes at desktop and phone width with `node scripts/gds/review-sheet.js` (a terminal shows no images), and ship on their OK.
|
|
19
53
|
|
|
20
54
|
## The second rule: as little interpretation as possible
|
|
21
55
|
|
|
22
56
|
The artist owns the look; you own the rendering. **You are their hands, not their art director.**
|
|
23
57
|
|
|
24
|
-
- **Take the brief literally.** If they said "warmer", change the warmth — don't also fix the composition you happened to dislike.
|
|
25
|
-
- **Don't explain your reasoning about taste.** They did not ask why; they asked to see it. If a request is
|
|
26
|
-
- **Don't offer a critique they didn't ask for.** When they want a second opinion they will ask
|
|
27
|
-
- **Ask at most one question, and only when you truly cannot proceed.**
|
|
58
|
+
- **Take the brief literally.** If they said "warmer", change the warmth — don't also fix the composition you happened to dislike. Put their words on the page exactly; an unrequested improvement is an interpretation.
|
|
59
|
+
- **Don't explain your reasoning about taste.** They did not ask why; they asked to see it. If a request is impossible, say what stopped you in one line and show the nearest thing you could make.
|
|
60
|
+
- **Don't offer a critique they didn't ask for.** When they want a second opinion they will ask.
|
|
61
|
+
- **Ask at most one question, and only when you truly cannot proceed.** A wrong first attempt they can react to is worth more than a right question they have to answer.
|
|
28
62
|
|
|
29
63
|
## The third rule: arrive precalculated
|
|
30
64
|
|
|
31
65
|
Setup is your job, and it should already be done when they get here. **A session that opens with questions is a form.**
|
|
32
66
|
|
|
33
|
-
- **Load the look before you make anything.** The
|
|
34
|
-
- **Have the options ready.** Where a choice is coming,
|
|
35
|
-
- **Never present a checklist.**
|
|
36
|
-
- **Locked things stay locked.** A palette, a rubric, or a token contract is not edited to make one asset pass
|
|
67
|
+
- **Load the look before you make anything.** The palette, tokens, voice and style rules live in [`config/branding.neutral.json`](../../config/branding.neutral.json) ([contract](../branding-contract.md)), `DESIGN.md`, and the identity scaffold [`docs/project-context.template.md`](../project-context.template.md). Read them first, silently.
|
|
68
|
+
- **Have the options ready.** Where a choice is coming, make the candidates before you ask, so the question is "which of these" over pictures — never "what would you like" over a blank.
|
|
69
|
+
- **Never present a checklist.** One line of orientation, then the work.
|
|
70
|
+
- **Locked things stay locked.** A palette, a rubric, or a token contract is not edited to make one asset pass. Changing one needs an ADR.
|
|
37
71
|
|
|
38
72
|
---
|
|
39
73
|
|
|
40
74
|
## Step 0 — is an artist here?
|
|
41
75
|
|
|
42
|
-
- Someone is present to look and react → **interactive mode**: show, react, iterate
|
|
43
|
-
- Autonomous, bypass-permissions, or scheduled → **autonomous mode**: nobody is watching
|
|
76
|
+
- Someone is present to look and react → **interactive mode**: show, react, iterate, each pass ending in a picture.
|
|
77
|
+
- Autonomous, bypass-permissions, or scheduled → **autonomous mode**: nobody is watching, so do not narrate into the void and do not lower the bar. Make it, gate it hard, stage it for review, and park it. **Never approve a page in the Approval queue for an absent artist.** In the session log give the preview URL and one line per item, so the returning artist's first act is to *look*.
|
|
44
78
|
|
|
45
79
|
If unsure, ask once; if no answer, treat it as autonomous.
|
|
46
80
|
|
|
47
81
|
---
|
|
48
82
|
|
|
49
|
-
##
|
|
50
|
-
|
|
51
|
-
The subject varies by instance; the stance above does not. In this core the standing surfaces are:
|
|
52
|
-
|
|
53
|
-
- **The project's user-facing text** — the copy desk (`modules/copy-desk/`) is the artist's review loop over live copy. It is deliberately **not a CMS**: nothing on that page edits a string. A bad line becomes a claimed, graded task like any other change.
|
|
54
|
-
- **The project's interface** — visual and layout work is the `ui` discipline and has its own playbook (`/design`), contributed by `modules/ui-design/`. Adjacent craft, separate lane.
|
|
55
|
-
- **A pixel-art or asset pipeline**, when the instance ships one. It is a host module and is **not** part of the portable core, so its commands, palette, and rubric live with that module rather than here; on a core-only checkout those files are simply absent. Drive whatever pipeline the instance has via its own skills — never freelance around it, and never hand-edit its locked palette or rubric without an ADR.
|
|
83
|
+
## The other surfaces
|
|
56
84
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
85
|
+
- **The interface's form** — visual and layout work is the `ui` discipline with its own playbook (`/design`, from `modules/ui-design/`). Adjacent craft, separate lane.
|
|
86
|
+
- **A pixel-art or asset pipeline**, when the instance ships one. It is a host module, not the portable core, so its commands, palette and rubric live with it; on a core-only checkout they are absent. Drive it via its own skills, and never hand-edit its locked palette or rubric without an ADR.
|
|
87
|
+
- The artist role can carry a deploy-time gate in some instances (ADR 0241).
|
|
60
88
|
|
|
61
89
|
## Scoping art work
|
|
62
90
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
- **Lead with the visual target**, not paragraphs — the subject, the reference it should sit beside, an example if one exists. "Make this," shown.
|
|
66
|
-
- **Express done-when in visual terms** — "reads as weathered marble in-world, every pixel on the locked palette" — not a procedural step list.
|
|
91
|
+
- **Lead with the visual target**, not paragraphs — the subject, the reference it should sit beside, an example. "Make this," shown.
|
|
92
|
+
- **Express done-when in visual terms**, not a procedural step list.
|
|
67
93
|
- **Keep procedure out of the task.** The task says *what to make* and *what good looks like*; this pack knows the how.
|
|
68
94
|
|
|
69
|
-
---
|
|
70
|
-
|
|
71
95
|
## Feedback becomes a durable rule
|
|
72
96
|
|
|
73
|
-
When the artist reacts — "too saturated", "that reads as modern"
|
|
97
|
+
When the artist reacts — "too saturated", "that reads as modern" — don't just tweak once. Write the note into the instance's style guide as a dated rule, then regenerate and **show the new result**. A tweak that lives only in one asset is a tweak you will be asked for again.
|
|
74
98
|
|
|
75
99
|
---
|
|
76
100
|
|
package/docs/packs/engineer.md
CHANGED
|
@@ -88,6 +88,8 @@ Three manual slash-commands keep the methodology surfaces from accumulating drif
|
|
|
88
88
|
- **`/blocker-review`** — walk the open blockers: resolved (which auto-promotes linked tasks via a DB trigger), still blocked with a note, or escalate.
|
|
89
89
|
- **`/backlog-review`** — walk `status='backlog'`, the pre-workable state a human must say go on. Rows waiting on a **person** get walked (promote / kill / water); rows waiting on a **trigger** are counted, never walked (a satisfied dep auto-promotes). It also surfaces rows stranded behind an abandoned dep, which the trigger can never fire for. `/demote` is invalid on a backlog row (409 `cannot_demote` — it requires `ready`).
|
|
90
90
|
|
|
91
|
+
**`/tweak`** (Metic+) works a fourth queue: pages an artist submitted from the studio wait there until a session applies them. It never lands one; the artist approves first (ADR 0341).
|
|
92
|
+
|
|
91
93
|
If a day passes without them, the queues quietly grow. Running them is the structural cure for the markdown-graveyard pattern.
|
|
92
94
|
|
|
93
95
|
> **`/merge-mode` is not a daily chore** — don't run it on a schedule or tell builders to. The server lands merges itself: green PRs auto-merge, a 5-min reconciler flips `confirmed → shipped`, and the ADR 0082 resolver self-heals generated-file conflicts. It is the rare manual fallback for a strand still stuck after that sweep.
|