As of 2026-08-28 03:11 CEST · 01:11 UTC · measured from /issues, /actions/runs, /pulls, factory:usage: markers, git log origin/main, .factory/config.yaml, .factory/proposals/not-built, .factory/observations
24
Open chains
3
Running
0
Queued
21
Holds
111
State runs
49 %
Review loop
12.7 M
Tokens blended
3
WIP PRs
3
Landed today
0
Shipped today
Bottleneck · partial#80 waits on factory/status/escalated for 28 min and blocks 2 of 24 chains. 3 run past it.
2 of 21 holds wait for a person · bar ends at 6 hline at 90 min · left is within one run · right is longer than one run can last
Holds · factory clears19 holds the factory clears itself. Every other hold waits for a person to remove a label.
blocked · sweep-blocked clears21 holds total
Runs · in flight3 of 24 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
24 chains · 3 on a runner · 0 in the queue · 21 holds · 0 stalled for more than 90 min
specify · status/blockedin specify since 10:28 · 16 h 43 min
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 waitingColumn height = runs per state, relative to this chain · outline = current state
Finished
0 chains shipped today · since the last merge 4 h 28 min (#104)
No chain finished today. No chain closed since midnight, with or without a merge. The chain lane above shows what is moving now.
merged pull request — the chain reached mainThis 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
2 wait for a person · 19 the factory clears itself
#65 has factory/status/blocked since 22:50
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.
2 d 4 h
FACTORY
#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.
2 d 4 h
FACTORY
#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.
2 d 4 h
FACTORY
#59 has factory/status/blocked since 22:51
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.
2 d 4 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.
2 d 4 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.
2 d 4 h
FACTORY
#74 has factory/status/blocked since 22:57
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.
2 d 4 h
FACTORY
#64 has factory/status/blocked since 08:29
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.
42 h 41 min
FACTORY
#58 has factory/status/blocked since 08:29
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.
42 h 41 min
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.
42 h 37 min
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.
42 h 34 min
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.
40 h 57 min
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.
40 h 50 min
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.
37 h 50 min
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.
37 h 31 min
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.
37 h 31 min
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.
37 h 31 min
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.
37 h 31 min
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.
37 h 31 min
FACTORY
#80 has factory/status/escalated since 02:42
feat(events): the streak counts weeks against a target — Held. The factory cannot continue by itself.
State the next step in a comment. Then remove the label.
28 min
PERSON
#66 has factory/status/escalated since 03:02
feat(web): the day grid and its legend — Held. The factory cannot continue by itself.
State the next step in a comment. Then remove the label.
9 min
PERSON
Cleared today · 10 holds · 0 itself · 0 by a manual run · 10 by a person
PERSON#80 factory/status/escalated · 02:41 · a person removed the label17 min
PERSON#73 factory/status/escalated · 02:15 · a person removed the label5 min
PERSON#100 factory/status/failed · 02:11 · a person removed the label33 min
PERSON#66 factory/status/needs-input · 02:10 · a person removed the label27 min
PERSON#73 factory/status/escalated · 02:08 · a person removed the label22 min
PERSON#100 factory/status/needs-input · 01:12 · a person removed the label17 min
PERSON#73 factory/status/escalated · 01:06 · a person removed the label9 min
PERSON#66 factory/status/needs-input · 00:39 · a person removed the label40 min
PERSON#80 factory/status/escalated · 00:34 · a person removed the label8 min
PERSON#69 factory/status/failed · 00:34 · a person removed the label17 min
Tokens
40 data points · 12.688.390 blended · 36 without a raw total
State
Chain
Family
Blended — comparable
Raw total — not comparable
Cache reads
build
#66
codex
2 runs
815.303
codex does not report it
—
build
#80
claude/codex · claude-opus-5
4 runs
782.982
7.670.992
7.348.690 · 95.8 %
build
#73
claude/codex · claude-opus-5
4 runs
744.993
2.014.457
1.884.419 · 93.5 %
build
#100
codex
2 runs
609.586
codex does not report it
—
review-change
#80
codex
3 runs
562.651
codex does not report it
—
review-change
#100
codex
3 runs
553.940
codex does not report it
—
build
#69
codex
2 runs
497.782
codex does not report it
—
review-plan
#100
codex
5 runs
474.005
codex does not report it
—
review-change
#69
codex
2 runs
432.770
codex does not report it
—
review-plan
#80
codex
4 runs
388.879
codex does not report it
—
plan
#100
codex
2 runs
381.053
codex does not report it
—
plan
#80
codex
2 runs
371.031
codex does not report it
—
plan
#66
codex
2 runs
370.442
codex does not report it
—
document
#100
codex
3 runs
356.255
codex does not report it
—
review-change
#73
codex
2 runs
349.273
codex does not report it
—
specify
#80
codex
3 runs
314.172
codex does not report it
—
document
#80
codex
3 runs
312.966
codex does not report it
—
review-plan
#73
codex
3 runs
303.766
codex does not report it
—
architecture
#66
codex
2 runs
277.267
codex does not report it
—
review-spec
#69
codex
3 runs
270.591
codex does not report it
—
… and 20 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.
a state with reviews: reads other statesA 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
4 open · 3 WIP · 1 ready · 0 abandoned
WIP#109
WIP: feat(web): add the theme control
The title starts with WIP:. A red gate set it so CI leaves the pull request alone. It waits for work.
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
3 issues without a state label · 2 reports from flow
#77 has no state label
docs: three claims the tree has moved past — has factory/finding, last touched 43 h 0 min ago
A person sets a state label. The factory then picks it up. No run starts before that.
43 h 0 min
NOT PICKED UP
#79 has no state label
fix(web): the installed app is unchecked on a real device — has factory/finding, last touched 37 h 3 min ago
A person sets a state label. The factory then picks it up. No run starts before that.
43 h 0 min
NOT PICKED UP
#107 has no state label
factory: die Bereitschaftsprüfung ist rot — has no label, last touched 70 min ago
A person sets a state label. The factory then picks it up. No run starts before that.
70 min
NOT PICKED UP
#80 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
#73 is over the escalated limit
flow reports: 3 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 · 3 changes since 00:00 · no code · 0 product docs · 3 machine · fetch failed; the ref can be old
Commit
Time
Subject
Scope
089ba33
01:06
docs(factory): name the header check in the publish table
1 file · +1/−0 · no Refs line
a71072b
00:05
fix(factory): report marker placement faults
5 files · +158/−22 · Refs #80
5555175
00:05
fix(factory): count criterion markers once
2 files · +53/−8 · Refs #80
Proposals
35 open in .factory/proposals/not-built · ordered by last Git change · files with no Git history use file change time · 3 issues with the owner
Prompt investigation, ranked — IN PROGRESS 2026-08-26
Last Git change 21:16 · 5 h 54 min 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 · 10 h 28 min 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 · 10 h 28 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 — …
§8.7 has no gate, and the machine broke it at every state transition
Last Git change 21:17 · 29 h 53 min 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 · 29 h 53 min 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 · 29 h 53 min 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
6 open
2 holds wait for a person · 1 pull request ready, and §8.6 leaves the merge with the owner · 3 issues without a state label. A person decides what comes next.
Observations
last 5 dated entry headings in the newest day file · 2026-08-27
prompt rewrite follow-up
the factory reference is split by topic without losing a line
the factory architecture reflection ranks the structural costs