#67 has factory/status/blocked since 22:50
feat(web): the day count on Today — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): the day count on Today — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): the day grid and its legend — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): the habit row — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): the reminder time, on brain/select — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): the reminder switch, on brain/toggle — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): the week starts on Monday or Sunday — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): the three button variants, on helm button — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): the calendar of one habit — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): a theme control, system to dark to light — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): the settings row — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): the week strip and its met bar — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): a habit's colour, on brain/radio-group — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): the stat block on a habit's history — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): the target stepper — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): a privacy notice, reached from settings — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): the language is a setting — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): the archived habits, and the way to them — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): deleting asks twice, and the two questions differ — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): export hands over the whole record — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(web): the reminder actually arrives — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(api): the event log reaches the second device — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(api): the account, its passkey and its devices — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
fix(web): nothing re-checks the committed icons against their tokens — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
feat(events): the streak counts weeks against a target — Held. An issue this change depends on is open.
Merge the issue it waits for. The hold then clears itself.
| State | Chain | Family | Blended — comparable | Raw total — not comparable | Cache reads |
|---|---|---|---|---|---|
| specify | #80 | codex 2 runs |
232.814 | codex does not report it | — |
| review-plan | #70 | codex 1 run |
231.193 | codex does not report it | — |
| specify | #93 | codex 2 runs |
183.839 | codex does not report it | — |
| review-spec | #93 | codex 2 runs |
176.599 | codex does not report it | — |
| review-spec | #80 | claude/codex · claude-opus-5 2 runs |
143.432 | 699.359 | 616.654 · 88.2 % |
| plan | #68 | claude · claude-opus-5 1 run |
49.302 | 3.785.858 | 3.633.534 · 96.0 % |
10 states, 4 with reviews: · measured: 5 data points, 967.877 blended
docs: three claims the tree has moved past — has factory/finding, last touched 32 h 59 min ago
A person sets a state label. The factory then picks it up. No run starts before that.
fix(web): the installed app is unchecked on a real device — has factory/finding, last touched 27 h 2 min ago
A person sets a state label. The factory then picks it up. No run starts before that.
| Commit | Time | Subject | Scope |
|---|---|---|---|
| 15df880 | 17:01 | feat(deploy): serve the factory board from the Pi |
6 files · +304/−9 · no Refs line |
| 6ff586e | 16:42 | docs(factory): file overtaken proposals |
4 files · +30/−7 · Refs NONE |
| 9ce13c3 | 16:42 | fix(factory): mark direct handback comments |
5 files · +29/−5 · Refs #21 |
| 9e7deb2 | 16:40 | fix(factory): stop criteria at headings |
3 files · +34/−2 · Refs #39 |
| e143154 | 16:40 | fix(factory): drop unused mediator output |
6 files · +12/−14 · Refs NONE |
| e9b4a64 | 16:39 | docs(factory): index built proposal 59 |
1 file · +1/−0 · Refs NONE |
| beffc9b | 16:39 | fix(factory): expire stale hold repeats |
5 files · +108/−4 · Refs #63 |
| 392c906 | 16:37 | docs(factory): record proposal 59 outcome |
1 file · +22/−0 · Refs NONE |
| 5902cf8 | 16:34 | fix(factory): enforce outcome dependencies |
5 files · +176/−12 · Refs NONE |
| 39f89a3 | 16:05 | chore(specs): record QA handover |
1 file · +9/−0 · Refs #97 |
| 4179e2a | 16:01 | chore(specs): record clean change review |
2 files · +59/−0 · Refs #97 |
| 58bc4b0 | 15:34 | docs(e2e): add bare server keywords |
4 files · +33/−4 · Refs #97 |
| a6c5a1c | 15:22 | fix(web-e2e): format gate config checks |
4 files · +71/−6 · Refs #97 |
| d585fbd | 15:22 | fix(factory): correct architecture review copy |
2 files · +2/−1 · Refs NONE |
| 3f131c9 | 15:16 | docs(factory): describe architecture writer |
1 file · +32/−24 · Refs NONE |
| c40d0c5 | 15:16 | fix(factory): make architecture fill gaps |
6 files · +163/−71 · Refs NONE |
| 6f08321 | 14:55 | chore(specs): approve finding task plan |
1 file · +1/−0 · Refs #97 |
| 44aecf4 | 14:52 | fix(factory): re-point moved rule citations |
19 files · +132/−128 · Refs NONE |
| 0db0ad3 | 14:51 | fix(factory): keep unsupported uniqueness out of schemas |
3 files · +20/−4 · Refs #97 |
| 960509f | 14:43 | docs(factory): record architecture state landing |
1 file · +41/−0 · Refs NONE |
| bbaae3a | 14:38 | docs(factory): document architecture state |
1 file · +124/−46 · Refs NONE |
| 198275f | 14:34 | fix(factory): keep architecture copy in English |
1 file · +1/−1 · Refs NONE |
| 2e36b1a | 14:22 | feat(factory): add architecture state |
15 files · +479/−27 · Refs NONE |
| f892030 | 14:13 | chore(specs): record review findings |
4 files · +169/−0 · Refs #97 |
| 6cd018d | 14:01 | docs(testing): explain end-to-end server ownership |
4 files · +82/−6 · Refs #97 |
| f030f4c | 13:57 | feat(charter): the constitution says who decides |
9 files · +724/−475 · Refs #101 |
| 648da4b | 13:56 | fix(e2e): align the offline server decision |
3 files · +45/−11 · Refs #97 |
| efe0184 | 13:50 | fix(e2e): let Playwright own the development server |
6 files · +230/−64 · Refs #97 |
| fd5c8b3 | 13:39 | chore(factory): use sol for review states |
1 file · +3/−3 · no Refs line |
| 7dc914e | 13:39 | chore(specs): pass the e2e startup plan to build |
1 file · +1/−0 · Refs #97 |
| 43a0c7a | 13:38 | chore(specs): expand task 01 scope |
3 files · +6/−57 · Refs #97 |
| 79a018e | 13:34 | fix(specs): the handback carries the criterion marker its checker wants |
1 file · +2/−0 · Refs #97 |
| f56ded7 | 13:32 | chore(specs): hand task 01 AC2 back to plan |
3 files · +56/−0 · Refs #97 |
| e0d79aa | 13:27 | chore(specs): plan reliable e2e startup |
6 files · +310/−0 · Refs #97 |
| 2a5691a | 13:23 | chore(specs): record QA handoff |
1 file · +9/−0 · Refs #101 |
| aefe8fa | 13:19 | chore(specs): read the branch clean at cycle three |
5 files · +215/−15 · Refs #101 |
| 5aa1ffa | 13:06 | docs(components): document component folders |
4 files · +49/−5 · Refs #101 |
| 2943c9c | 13:00 | refactor(web): finish folder follow-ups |
1 file · +1/−0 · Refs #101 |
| 0a0cfb6 | 12:59 | fix(specs): record commit message repair |
1 file · +20/−3 · Refs #101 |
| 944893e | 12:58 | fix(docs): record moved decision paths |
4 files · +24/−4 · Refs #101 |
| … and 88 more commits today. The full list is in git log origin/main --since=today. | |||
Korrektur zuerst. Eine frühere Fassung dieses Befunds sagte, build lege die Nachzügleraufgaben an. Das ist falsch. .factory/shared/writing-a-task.md:3: *„Three states write task files: plan, review-change and rework."* build ist nicht dabei.
Der Fund. Über 12 Ketten mit lokalem Arbeitsdatensatz: 208 von 599 ausgeführten Zustandsläufen (34,7 %) entfallen auf zwei Zustände, die keinen Produktcode schreiben. Über 9 Ketten mit Kantenmarkern sind 78 von 241 Kanten (32 %) der Kreis selbst — …
The source prompts contain 21135 words. A rendered pass through all ten states contains 60214 words. The proposals below come from contract, convergence, and prompt-size investigations. Only the counts and past-run costs are evidence. The expected savings rema…
Fixed at the source 2026-08-25; the gate is what remains.
Null Aufrufe in 21 Issues. Keines trägt die Signatur, die cmd_split anhängt (factory.py:3433, „Geschnitten aus #%d"); alle 21 sind von Hand eröffnet.
branch_of nahm die erste passende branch aus einer paginierten Antwort und entschied damit per Reihenfolge, auf welcher branch eine chain arbeitet. Repariert: bei zwei Treffern hält es an und nennt beide.
0 holds wait for a person · 0 pull requests ready, and §8.6 leaves the merge with the owner · 2 issues without a state label. A person decides what comes next.