FACTORY DASHBOARD

As of 2026-08-29 21:27 CEST · 19:27 UTC · measured from /issues, /actions/runs, /pulls, factory:usage: markers, git log origin/main, .factory/config.yaml, .factory/proposals/not-built, .factory/observations
16
Open chains
2
Running
0
Queued
14
Holds
81
State runs
49 %
Review loop
10.5 M
Tokens blended
2
WIP PRs
23
Landed today
3
Shipped today
Bottleneck · none No hold waits for a person: 14 holds, and the factory clears each one itself.
16 open chains · 2 with a run · 0 in the queue Measured from status labels
Holds · factory clears 14 holds the factory clears itself. Every other hold waits for a person to remove a label.
blocked · sweep-blocked clears 14 holds total
Runs · in flight 2 of 16 chains have a run on a runner; 0 wait in the queue. The rest wait for a tick or a person.
A run queued for more than 45 min does not count here /actions/runs, in_progress + queued + waiting

Chains

16 chains · 2 on a runner · 0 in the queue · 14 holds · 0 stalled for more than 90 min
qa · running in qa since 21:25 · 1 min
over the limit 11 comments from people · 4 escalations
3
spec
2
r-spec
2
arch
1
plan
10
r-plan
7
build
6
doc
7
r-chg
0
qa
2
rwk
21 of 40 runs in review states · 13 runs refused · never reached: qa
40Runs
12Holds
4Escalations
5.6 MTokens
document · running in document since 21:26 · 0 min
2 comments from people
3
spec
1
r-spec
1
arch
2
plan
5
r-plan
4
build
3
doc
3
r-chg
0
qa
0
rwk
10 of 22 runs in review states · 7 runs refused · never reached: qa, rwk
22Runs
4Holds
1Escalations
3.4 MTokens
plan · status/blocked in plan since 15:38 · 5 h 48 min
3 comments from people
4
spec
4
r-spec
1
arch
1
plan
0
r-plan
0
build
0
doc
0
r-chg
0
qa
0
rwk
5 of 10 runs in review states · 8 runs refused · never reached: r-plan, build, doc, r-chg, qa, rwk
10Runs
5Holds
0Escalations
1.2 MTokens
specify · status/blocked in specify since 22:48 · 3 d 22 h
0 comments from people
0
spec
0
r-spec
0
arch
0
plan
0
r-plan
0
build
0
doc
0
r-chg
0
qa
0
rwk
no work yet · 2 runs refused · never reached: spec, r-spec, arch, plan, r-plan, build, doc, r-chg, qa, rwk
0Runs
1Holds
0Escalations
Tokens
specify · status/blocked in specify since 22:48 · 3 d 22 h
0 comments from people
0
spec
0
r-spec
0
arch
0
plan
0
r-plan
0
build
0
doc
0
r-chg
0
qa
0
rwk
no work yet · 2 runs refused · never reached: spec, r-spec, arch, plan, r-plan, build, doc, r-chg, qa, rwk
0Runs
1Holds
0Escalations
Tokens
specify · status/blocked in specify since 22:48 · 3 d 22 h
0 comments from people
0
spec
0
r-spec
0
arch
0
plan
0
r-plan
0
build
0
doc
0
r-chg
0
qa
0
rwk
no work yet · 2 runs refused · never reached: spec, r-spec, arch, plan, r-plan, build, doc, r-chg, qa, rwk
0Runs
1Holds
0Escalations
Tokens
specify · status/blocked in specify since 10:13 · 3 d 11 h
0 comments from people
0
spec
0
r-spec
0
arch
0
plan
0
r-plan
0
build
0
doc
0
r-chg
0
qa
0
rwk
no work yet · 2 runs refused · never reached: spec, r-spec, arch, plan, r-plan, build, doc, r-chg, qa, rwk
0Runs
1Holds
0Escalations
Tokens
specify · status/blocked in specify since 10:18 · 3 d 11 h
0 comments from people
0
spec
0
r-spec
0
arch
0
plan
0
r-plan
0
build
0
doc
0
r-chg
0
qa
0
rwk
no work yet · 2 runs refused · never reached: spec, r-spec, arch, plan, r-plan, build, doc, r-chg, qa, rwk
0Runs
1Holds
0Escalations
Tokens
specify · status/blocked in specify since 13:20 · 3 d 8 h
0 comments from people
0
spec
0
r-spec
0
arch
0
plan
0
r-plan
0
build
0
doc
0
r-chg
0
qa
0
rwk
no work yet · 1 runs refused · never reached: spec, r-spec, arch, plan, r-plan, build, doc, r-chg, qa, rwk
0Runs
0Holds
0Escalations
Tokens
specify · status/blocked in specify since 13:39 · 3 d 7 h
0 comments from people
0
spec
0
r-spec
0
arch
0
plan
0
r-plan
0
build
0
doc
0
r-chg
0
qa
0
rwk
no work yet · 1 runs refused · never reached: spec, r-spec, arch, plan, r-plan, build, doc, r-chg, qa, rwk
0Runs
0Holds
0Escalations
Tokens
specify · status/blocked in specify since 13:39 · 3 d 7 h
0 comments from people
0
spec
0
r-spec
0
arch
0
plan
0
r-plan
0
build
0
doc
0
r-chg
0
qa
0
rwk
no work yet · 1 runs refused · never reached: spec, r-spec, arch, plan, r-plan, build, doc, r-chg, qa, rwk
0Runs
0Holds
0Escalations
Tokens
specify · status/blocked in specify since 13:39 · 3 d 7 h
0 comments from people
0
spec
0
r-spec
0
arch
0
plan
0
r-plan
0
build
0
doc
0
r-chg
0
qa
0
rwk
no work yet · 1 runs refused · never reached: spec, r-spec, arch, plan, r-plan, build, doc, r-chg, qa, rwk
0Runs
0Holds
0Escalations
Tokens
specify · status/blocked in specify since 13:39 · 3 d 7 h
0 comments from people
0
spec
0
r-spec
0
arch
0
plan
0
r-plan
0
build
0
doc
0
r-chg
0
qa
0
rwk
no work yet · 1 runs refused · never reached: spec, r-spec, arch, plan, r-plan, build, doc, r-chg, qa, rwk
0Runs
0Holds
0Escalations
Tokens
specify · status/blocked in specify since 13:39 · 3 d 7 h
0 comments from people
0
spec
0
r-spec
0
arch
0
plan
0
r-plan
0
build
0
doc
0
r-chg
0
qa
0
rwk
no work yet · 1 runs refused · never reached: spec, r-spec, arch, plan, r-plan, build, doc, r-chg, qa, rwk
0Runs
0Holds
0Escalations
Tokens
specify · status/blocked in specify since 10:27 · 2 d 10 h
0 comments from people · 3.75 USD list price
1
spec
1
r-spec
0
arch
1
plan
0
r-plan
0
build
0
doc
0
r-chg
0
qa
0
rwk
1 of 3 runs in review states · 7 runs refused · never reached: arch, r-plan, build, doc, r-chg, qa, rwk
3Runs
2Holds
0Escalations
49 kTokens
specify · status/blocked in specify since 10:28 · 2 d 10 h
0 comments from people
2
spec
2
r-spec
0
arch
1
plan
1
r-plan
0
build
0
doc
0
r-chg
0
qa
0
rwk
3 of 6 runs in review states · 7 runs refused · never reached: arch, build, doc, r-chg, qa, rwk
6Runs
2Holds
0Escalations
231 kTokens
running held or stalled escalated waiting Column height = runs per state, relative to this chain · outline = current state

Finished

3 chains shipped today · 82 runs · 11.0 M blended · since the last merge 4 h 30 min (#115)
#58feat(web): a habit's colour, on brain/radio-group3 d 18 hpull request #115 merged at 16:59 · issue closed at 16:59 by lhilpert · last state qa27 runs · 3.5 M blended · 7 holds
#64feat(web): the week strip and its met bar3 d 16 hpull request #113 merged at 14:51 · issue closed at 14:51 by lhilpert · last state qa40 runs · 5.3 M blended · 8 holds
#67feat(web): the day count on Today3 d 1 hpull request #114 merged at 00:10 · issue closed at 00:10 by lhilpert · last state qa15 runs · 2.1 M blended · 2 holds
merged pull request — the chain reached main This counts a chain whose own pull request merged. It is the same count as Shipped today. A chain closed without a merge appears in grey and does not count. A chain is an issue that carries or carried a factory/<state> label. Removed labels remain in the timeline. Runs and tokens cover the full life of the chain. Tokens are blended from factory:usage: markers. Duration runs from issue creation to closure and includes waits for a person. This page does not judge a number. A comparison needs yesterday, and one render has no memory of another.

Holds

0 wait for a person · 14 the factory clears itself

#60 has factory/status/blocked since 22:51

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.

3 d 22 h
FACTORY

#72 has factory/status/blocked since 22:52

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.

3 d 22 h
FACTORY

#71 has factory/status/blocked since 22:52

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.

3 d 22 h
FACTORY

#68 has factory/status/blocked since 08:33

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.

3 d 12 h
FACTORY

#70 has factory/status/blocked since 08:36

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.

3 d 12 h
FACTORY

#83 has factory/status/blocked since 10:13

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.

3 d 11 h
FACTORY

#84 has factory/status/blocked since 10:21

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.

3 d 11 h
FACTORY

#87 has factory/status/blocked since 13:20

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.

3 d 8 h
FACTORY

#92 has factory/status/blocked since 13:39

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.

3 d 7 h
FACTORY

#91 has factory/status/blocked since 13:39

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.

3 d 7 h
FACTORY

#90 has factory/status/blocked since 13:39

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.

3 d 7 h
FACTORY

#89 has factory/status/blocked since 13:39

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.

3 d 7 h
FACTORY

#88 has factory/status/blocked since 13:39

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.

3 d 7 h
FACTORY

#74 has factory/status/blocked since 15:52

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.

5 h 34 min
FACTORY
Cleared today · 30 holds · 4 itself · 0 by a manual run · 26 by a person · 12 newest
PERSON#59 factory/status/escalated · 20:36 · a person removed the label1 min
PERSON#65 factory/status/escalated · 20:33 · a person removed the label1 min
PERSON#65 factory/status/escalated · 19:55 · a person removed the label1 min
PERSON#65 factory/status/failed · 19:16 · a person removed the label1 min
PERSON#65 factory/status/escalated · 19:09 · a person removed the label1 min
ITSELF#65 factory/status/conflicted · 17:38 · the factory removed the label itself1 min
PERSON#65 factory/status/failed · 17:36 · a person removed the label1 min
PERSON#65 factory/status/failed · 17:35 · a person removed the label1 min
PERSON#65 factory/status/failed · 17:33 · a person removed the label1 min
PERSON#59 factory/status/awaiting-approval · 17:23 · a person removed the label0 min
PERSON#59 factory/status/needs-input · 17:07 · a person removed the label2 min
ITSELF#59 factory/status/blocked · 16:59 · the factory removed the label itself3 d 18 h

Tokens

23 data points · 10.463.183 blended · 22 without a raw total
StateChainFamilyBlended — comparableRaw total — not comparableCache reads
review-change#65
codex
7 runs
1.633.082 codex does not report it
build#65
codex
6 runs
1.196.021 codex does not report it
build#59
codex
4 runs
1.011.795 codex does not report it
review-change#59
codex
3 runs
713.864 codex does not report it
review-plan#65
codex
7 runs
698.202 codex does not report it
document#65
codex
6 runs
557.753 codex does not report it
review-spec#74
codex
4 runs
506.780 codex does not report it
plan#65
codex
1 run
464.853 codex does not report it
review-plan#59
codex
5 runs
444.920 codex does not report it
specify#65
codex
3 runs
413.134 codex does not report it
specify#74
codex
4 runs
410.614 codex does not report it
plan#59
codex
2 runs
343.618 codex does not report it
document#59
codex
3 runs
314.763 codex does not report it
specify#59
codex
2 runs
301.173 codex does not report it
review-plan#70
codex
1 run
231.193 codex does not report it
review-spec#65
codex
2 runs
230.537 codex does not report it
rework#65
codex
2 runs
211.399 codex does not report it
architecture#65
codex
2 runs
211.134 codex does not report it
plan#74
codex
1 run
184.213 codex does not report it
review-spec#59
codex
1 run
112.811 codex does not report it
… and 3 more states. The full list is in python3 .factory/bin/factory.py flow.
Blended is uncached input plus output. For codex, source codex-rs/exec/src/event_processor_with_human_output.rs:501 at tag rust-v0.149.1 reads (input_tokens − cached_input_tokens) + output_tokens. For claude, in + out measures the same value. Raw total includes cache reads. It measures how often context was read again. It does not compare families, and codex does not report it. codex reports no raw total, cache reads, or model name. A codex marker before 2026-08-25 has a total field, but that field contains the blended value. The rows come from factory:usage: markers in issue comments. A chain with no usage marker has no row.

Models

10 states · codex 10

codex

gpt-5.6-sol
specify · medium review-spec · medium architecture · low plan · high review-plan · low build · medium document · low review-change · medium qa · low rework · high

10 states, 4 with reviews: · measured: 22 data points, 10.413.881 blended

review-spec · codexreadsspecify · codex23 of 81 runs · 28 %
architecture · codexreadsspecify · codex17 of 81 runs · 21 %
review-plan · codexreadsplan · codex, review-change · codex, rework · codex34 of 81 runs · 42 %
review-change · codexreadsbuild · codex, document · codex30 of 81 runs · 37 %
a state with reviews: reads other states A review is independent when a fresh context reads work it did not write. The model family does not define independence. The family in the token table comes from the marker. A run that used the fallback ran on the other family. The right side counts runs on each edge across open chains. This page does not choose which edge to remove.

Pull requests

2 open · 2 WIP · 0 ready · 0 abandoned
WIP#117
WIP: feat(web): add the reminder switch contract
The title starts with WIP:. A red gate set it so CI leaves the pull request alone. It waits for work.
chain #59 · opensince 18:22 · 3 h 4 minmergeable: false
WIP#116
WIP: feat(web): rebuild the habit row
The title starts with WIP:. A red gate set it so CI leaves the pull request alone. It waits for work.
chain #65 · opensince 16:45 · 4 h 42 minmergeable: false
WIP — the title starts with WIP:. A red gate set it so CI leaves the pull request alone. It waits for work. Abandoned — its chain is gone or its issue is closed. It waits for nobody and will not merge. Ready — open, no WIP:, and the issue is open. It waits for the merge that §8.6 leaves with the owner. The branch name factory/<n>-… is checked against field state at /issues/<n>. The title is not used.

Findings

1 issue without a state label · 1 report from flow

#112 has no state label

factory: die Bereitschaftsprüfung ist rot — has no label, last touched 85 min ago

A person sets a state label. The factory then picks it up. No run starts before that.

31 h 25 min
NOT PICKED UP

#65 is over the escalated limit

flow reports: 4 escalations.

flow counts the full life of the chain and does not retract a report. This page counted the report. It did not judge the cause.

REPORTED

Landed

origin/main · 23 changes since 00:00 · 4 code · 19 product docs · 0 machine · fetch failed; the ref can be old
CommitTimeSubjectScope
2d78ba0416:43
chore(specs): prepare QA handoff
1 file · +9/−0 · Refs #58
e78e2d8716:38
chore(specs): record clean colour review
2 files · +48/−0 · Refs #58
2b54c9d116:25
docs(testing): record stable runner budgets
5 files · +27/−11 · Refs #58
67e62a7f16:16
fix(web): complete suite stabilization
2 files · +19/−3 · Refs #58
2e8124d916:03
fix(web): stabilize shared test runs
4 files · +9/−0 · Refs #58
3f1a892c15:52
fix(web): record suite repair attempt
1 file · +22/−2 · Refs #58
8e72b56f15:07
fix(web): record blocked suite repair
1 file · +1/−0 · Refs #58
46e3b99115:06
test(web): bind habit colour token checks
2 files · +19/−3 · Refs #58
798d3f5c15:05
fix(web): make colour swatches clickable
4 files · +77/−4 · Refs #58
9453e7dd14:56
test(web): record swatch repair attempt
1 file · +13/−1 · Refs #58
e3f05be214:39
chore(specs): approve repair plan
1 file · +1/−0 · Refs #58
6b0752d614:36
chore(specs): review habit colour change
3 files · +68/−5 · Refs #58
6d13676b14:30
chore(specs): record week strip QA handoff
1 file · +9/−0 · Refs #64
a4ad3faf14:17
chore(specs): record clean week strip review
2 files · +56/−0 · Refs #64
8e94dfbe14:04
docs(design): record checked-day mark
4 files · +50/−9 · Refs #64
80b2949d13:58
test(web): protect week-strip geometry
3 files · +61/−1 · Refs #64
b8ce14f513:55
chore(specs): record partial colour review
4 files · +127/−0 · Refs #58
355fff9013:49
chore(specs): approve geometry repair plan
1 file · +1/−0 · Refs #64
70900ad913:39
chore(specs): record remaining week strip findings
4 files · +161/−0 · Refs #64
737aa34513:26
docs(design): distinguish week strip day states
4 files · +55/−12 · Refs #64
0370843e13:21
test(web): protect desktop week limit
3 files · +49/−5 · Refs #64
596e4a8613:13
chore(specs): approve repair plan
3 files · +14/−2 · Refs #64
2a11eaff13:11
docs(ui): record colour swatches
7 files · +97/−8 · Refs #58

Proposals

35 open in .factory/proposals/not-built · ordered by last Git change · files with no Git history use file change time · 1 issue with the owner

Prompt investigation, ranked — IN PROGRESS 2026-08-26

Last Git change 21:16 · 2 d 0 h ago
21.1 %

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…

review-change schreibt die Aufgaben, die den Prüfkreis füttern

Last Git change 16:42 · 2 d 4 h ago
15 Läufe

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 Prüfkreis review-plan ↔ review-change ist ein Drittel der Factory

Last Git change 16:42 · 2 d 4 h ago
208 von 599

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 — …

§8.7 has no gate, and the machine broke it at every state transition

Last Git change 21:17 · 3 d 0 h ago
No measurement

Fixed at the source 2026-08-25; the gate is what remains.

split ist für den Fall gebaut, der nie eintritt

Last Git change 21:17 · 3 d 0 h ago
No measurement

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.

spec_dir wählt genauso willkürlich wie branch_of

Last Git change 21:17 · 3 d 0 h ago
No measurement

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.

With the owner

Current board state
1 open

0 holds wait for a person · 0 pull requests ready, and §8.6 leaves the merge with the owner · 1 issue without a state label. A person decides what comes next.

Observations

0 dated entries
No dated entries in the newest observation file.