FACTORY DASHBOARD

As of 2026-09-06 15:25 CEST · 13:25 UTC · measured from /issues, /actions/runs, /pulls, factory:usage: markers, git log origin/main, .factory/config.yaml, .factory/proposals/not-built, .factory/observations
12
Open chains
0
Running
0
Queued
12
Holds
23
State runs
43 %
Review loop
671 k
Tokens blended
1
WIP PRs
50
Landed today
1
Shipped today
Bottleneck #70 waits on factory/status/needs-input and no other chain can run: 10 min against the 90 min missing-run threshold.
1 of 12 holds wait for a person · bar ends at 6 h line at 90 min · left is within one run · right is longer than one run can last
Holds · factory clears 11 holds the factory clears itself. Every other hold waits for a person to remove a label.
blocked · sweep-blocked clears 12 holds total
Runs · in flight 0 of 12 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

12 chains · 0 on a runner · 0 in the queue · 12 holds · 0 stalled for more than 90 min
review-change · status/needs-input in review-change since 15:03 · 22 min
2 comments from people · 30.66 USD list price
6
spec
4
r-spec
1
arch
3
plan
3
r-plan
1
build
1
doc
1
r-chg
0
qa
0
rwk
9 of 20 runs in review states · 11 runs refused · never reached: qa, rwk
20Runs
6Holds
0Escalations
622 kTokens
specify · status/blocked in specify since 22:48 · 11 d 16 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 · 11 d 16 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 · 11 d 5 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 · 11 d 5 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 · 11 d 2 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 · 11 d 1 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 · 11 d 1 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 · 11 d 1 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 · 11 d 1 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 · 11 d 1 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 · 10 d 4 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
running held or stalled escalated waiting Column height = runs per state, relative to this chain · outline = current state

Finished

1 chain shipped today · 53 runs · 3.9 M blended · since the last merge 2 h 31 min (#139)
#60feat(web): the reminder time, on brain/select11 d 14 hpull request #139 merged at 12:56 · issue closed at 12:56 by lhilpert · last state qa53 runs · 3.9 M blended · 145.24 USD · 10 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

1 wait for a person · 11 the factory clears itself

#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.

11 d 16 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.

11 d 16 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.

11 d 6 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.

11 d 5 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.

11 d 5 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.

11 d 2 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.

11 d 1 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.

11 d 1 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.

11 d 1 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.

11 d 1 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.

11 d 1 h
FACTORY

#70 has factory/status/needs-input since 15:15

feat(web): the target stepper — Held. The factory asked a question in a comment.

Answer in a comment. Then remove the label.

10 min
PERSON
Cleared today · 9 holds · 2 itself · 0 by a manual run · 7 by a person
PERSON#70 factory/status/awaiting-approval · 14:14 · a person removed the label13 min
PERSON#70 factory/status/needs-input · 13:28 · a person removed the label24 min
ITSELF#70 factory/status/conflicted · 12:58 · the factory removed the label itself2 min
ITSELF#70 factory/status/blocked · 12:56 · the factory removed the label itself11 d 4 h
PERSON#60 factory/status/escalated · 11:39 · a person removed the label92 min
PERSON#60 factory/status/escalated · 07:35 · a person removed the label108 min
PERSON#60 factory/status/escalated · 05:10 · a person removed the label101 min
PERSON#60 factory/status/awaiting-approval · 02:15 · a person removed the label19 min
PERSON#60 factory/status/paused · 01:30 · a person removed the label2 min

Tokens

9 data points · 671.864 blended
StateChainFamilyBlended — comparableRaw total — not comparableCache reads
review-plan#70
claude/codex · claude-opus-5
3 runs
278.225 1.106.581 948.179 · 85.7 %
review-change#70
claude · claude-opus-5
1 run
76.207 10.612.053 10.256.055 · 96.6 %
plan#70
claude · claude-opus-5
2 runs
71.791 3.306.667 3.065.862 · 92.7 %
specify#70
claude · claude-opus-5
3 runs
58.380 2.412.005 2.199.717 · 91.2 %
build#70
claude · claude-opus-5
1 run
55.788 5.768.704 5.512.057 · 95.6 %
plan#68
claude · claude-opus-5
1 run
49.302 3.785.858 3.633.534 · 96.0 %
review-spec#70
claude · claude-opus-5
2 runs
37.677 1.482.380 1.333.340 · 89.9 %
document#70
claude · claude-opus-5
1 run
31.559 2.093.305 1.942.455 · 92.8 %
architecture#70
claude · claude-fable-5
1 run
12.935 424.691 349.473 · 82.3 %
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 · claude 4 · codex 6

claude

claude-fable-5, claude-opus-5
review-spec · medium architecture · low review-plan · low review-change · medium

4 states, 4 with reviews: · measured: 9 data points, 671.864 blended

codex

gpt-5.6-sol
specify · medium plan · high build · medium document · low qa · low rework · high

6 states, 0 with reviews: · measured: 1 data point, 278.225 blended

review-spec · claudereadsspecify · codex12 of 23 runs · 52 %
architecture · claudereadsspecify · codex8 of 23 runs · 35 %
review-plan · claudereadsplan · codex, review-change · claude, rework · codex8 of 23 runs · 35 %
review-change · claudereadsbuild · codex, document · codex3 of 23 runs · 13 %
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

1 open · 1 WIP · 0 ready · 0 abandoned
WIP#140
WIP: feat(web): the target stepper
The title starts with WIP:. A red gate set it so CI leaves the pull request alone. It waits for work.
chain #70 · opensince 14:56 · 29 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

9 issues without a state label · 0 reports from flow

#74 has no state label

feat(web): the calendar of one habit — has factory/status/blocked, last touched 12 h 35 min ago

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

11 d 16 h
NOT PICKED UP

#118 has no state label

Der Abhaengigkeits-Lauf ist gescheitert — has no label, last touched 13 h 38 min ago

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

6 d 8 h
NOT PICKED UP

#124 has no state label

fix(product): a habit with no check-in shows a streak of one week — has factory/finding, last touched 4 d 7 h ago

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

4 d 7 h
NOT PICKED UP

#127 has no state label

docs(architecture): the binding event list names a twelfth type nothing implements — has factory/finding, last touched 3 d 7 h ago

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

3 d 7 h
NOT PICKED UP

#128 has no state label

fix(web): a profile test fails on a runner in the zone it stubs — has factory/finding, last touched 3 d 7 h ago

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

3 d 7 h
NOT PICKED UP

#129 has no state label

docs(design): two rules the built interface disproves — has factory/finding, last touched 3 d 7 h ago

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

3 d 7 h
NOT PICKED UP

#130 has no state label

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

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

2 d 7 h
NOT PICKED UP

#134 has no state label

docs(ui-components): the dumb component rule is restated, and cites a section that moved — has factory/finding, last touched 2 d 7 h ago

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

2 d 7 h
NOT PICKED UP

#135 has no state label

fix(workspace): replace the Nx Vite plugins Nx 24 removes — has factory/finding, last touched 31 h 19 min ago

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

31 h 19 min
NOT PICKED UP

Landed

origin/main · 50 changes since 00:00 · 8 code · 25 product docs · 17 machine · no rule, counted as machine: commitlint.config.mjs · fetch failed; the ref can be old
CommitTimeSubjectScope
14bf842615:07
docs(factory): floor check — #60 closed, #70 review-change
1 file · +6/−0 · no Refs line
0772c5c412:19
docs(factory): note floor check — #60 qa merge-ready
1 file · +4/−0 · no Refs line
84fe138f11:59
chore(specs): record the green ci run on the branch head
1 file · +1/−0 · Refs #60
68bbfb7011:56
fix(factory): stop posting log rows as issue comments
8 files · +156/−180 · no Refs line
eef429f311:53
chore(specs): record the ci run of the handover
1 file · +1/−1 · Refs #60
bb001cb611:47
fix(factory): cut review-change back-edge to review-plan
14 files · +241/−307 · no Refs line
c0cdb16f11:46
chore(specs): hand the time select control to a person
1 file · +1/−0 · Refs #60
101a898f10:06
chore(specs): the change review for the reminder time, cycle 3
3 files · +176/−0 · Refs #60
5ed2710709:53
docs(design): say what the keyboard does in an open list
3 files · +54/−0 · Refs #60
1bf9449b09:49
chore(specs): record the gates the build run did not reach
1 file · +1/−1 · Refs #60
aa30bf9c09:48
refactor(web): list the time select contract first
3 files · +84/−4 · Refs #60
8b6b4a4909:45
feat(web): close the time list the person left
5 files · +210/−8 · Refs #60
35691b2709:35
feat(web): show and announce the active option in an open time list
7 files · +155/−3 · Refs #60
4c9a2a8309:19
chore(specs): the plan reading after the reminder time criterion repair
2 files · +62/−0 · Refs #60
33173ee709:17
chore(specs): repair the criteria of tasks 07 and 08
5 files · +94/−81 · Refs #60
efb0e44e09:08
chore(specs): hand back the criteria of tasks 07 and 08
4 files · +144/−0 · Refs #60
28e43ae509:03
chore(specs): the change review for the reminder time keyboard path
6 files · +453/−0 · Refs #60
96120fb508:50
docs(design): name the quarter-hour step of the reminder time
3 files · +41/−15 · Refs #60
22f49e3d08:47
test(web): record the reading-tool finding for issue 60
1 file · +1/−0 · Refs #60
1a42b64508:46
test(web): bind the emitted reminder time to the real validator
3 files · +144/−6 · Refs #60
dab53c5a08:42
fix(web): spend the radius tokens and draw a focus ring on an option
3 files · +99/−4 · Refs #60
a5d58dd308:24
test(web): record the task 04 verdict
2 files · +33/−0 · Refs #60
cfcf9e8408:24
feat(web): open the time select from the keyboard and name it
7 files · +286/−28 · Refs #60
9f6243f707:47
chore(specs): accept the task 04 criterion repair
2 files · +24/−0 · Refs #60
931b0e9207:45
chore(specs): make task 04 AC2 fail on an untouched tree
4 files · +51/−35 · Refs #60
21d9e2f207:37
chore(specs): the plan review for the reminder time repairs
4 files · +115/−0 · Refs #60
c29248e307:34
fix(factory): count unique task files in the review-change budget
2 files · +46/−17 · no Refs line
e8e8a59005:46
chore(specs): the change review for the reminder time selector
6 files · +422/−0 · Refs #60
97bf9d6305:33
docs(ui-components): record the built time select row
4 files · +125/−7 · Refs #60
dc69d08105:20
test(web): measure the time select name, target and figures
7 files · +277/−11 · Refs #60
adf9315103:28
feat(web): add the reminder time select control
8 files · +554/−4 · Refs #60
36795df502:46
chore(specs): the plan review for the reminder time selector
2 files · +60/−0 · Refs #60
59ca882202:44
chore(specs): the plan for the reminder time selector
7 files · +425/−0 · Refs #60
c9b2239b02:16
chore(specs): the architecture check for the reminder time selector
1 file · +1/−0 · Refs #60
c6959d4b01:55
chore(specs): the spec review for the reminder time selector
1 file · +1/−0 · Refs #60
a8b1cfac01:51
chore(specs): the shown time after a dropped pick
3 files · +21/−26 · Refs #60
d1a1458801:47
docs(factory): note machine findings batch on 2026-09-06
1 file · +20/−0 · no Refs line
08df03e601:46
fix(factory): refuse criteria that settle through an unpinned npx tool
2 files · +60/−0 · no Refs line
ed6a2f8101:46
fix(factory): check commit messages before push and enumerate scopes
3 files · +37/−4 · no Refs line
60a45cdb01:45
chore(specs): the spec review for the reminder time selector
2 files · +25/−0 · Refs #60
… and 10 more commits today. The full list is in git log origin/main --since=today.

Proposals

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

Der Prüfkreis review-plan ↔ review-change ist ein Drittel der Factory

Last Git change 11:47 · 3 h 38 min 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 — …

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

Last Git change 21:16 · 9 d 18 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…

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

Last Git change 21:17 · 10 d 18 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 · 10 d 18 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 · 10 d 18 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.

rework hat kein Gedächtnis

Last Git change 21:17 · 10 d 18 h ago
No measurement

Gefunden beim ersten rework-Lauf in zwölf Ketten, am 2026-08-25 auf #43.

With the owner

Current board state
10 open

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

Observations

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