# showcase — numbers appendix

Every number printed on https://lab.hamyrappy.com, beside the command that produces it. Derived 2026-08-18T14:36:14Z by `python3 /home/atanor/vault/projects/showcase/numbers.py`; commands run with `/home/atanor` as the working directory.

A number here is the stdout of its command and nothing else. Re-run the command and compare: a disagreement is a defect of the page, not of the reader.

## Numbers

### `events_total` — Lines in the event journal

```
$ head -n 35567 state/events.jsonl | wc -l | tr -d ' '
35567
```

### `agent_started` — agent_started events (runs launched)

```
$ head -n 35567 state/events.jsonl | grep -c '"kind": "agent_started"'
1089
```

### `agent_finished` — agent_finished events (runs collected)

```
$ head -n 35567 state/events.jsonl | grep -c '"kind": "agent_finished"'
1056
```

### `agent_killed_stale` — Runs cut by the watchdog

```
$ head -n 35567 state/events.jsonl | grep -c '"kind": "agent_killed_stale"'
25
```

### `two_strikes` — Tickets that failed twice in a row

```
$ head -n 35567 state/events.jsonl | grep -c '"kind": "two_strikes"'
38
```

### `gate_closed` — Ticks on which the budget gate refused to launch

```
$ head -n 35567 state/events.jsonl | grep -c '"kind": "gate_closed"'
31093
```

### `cost_sum` — Sum of cost_usd over every agent_finished that carries a non-zero one, USD

```
$ head -n 35567 state/events.jsonl | python3 -c "import sys,json;print('%.2f'%sum(json.loads(l).get('cost_usd') or 0 for l in sys.stdin if json.loads(l).get('kind')=='agent_finished'))"
963.70
```

### `cost_events` — agent_finished events carrying a non-zero cost_usd

```
$ head -n 35567 state/events.jsonl | python3 -c "import sys,json;print(sum(1 for l in sys.stdin if json.loads(l).get('kind')=='agent_finished' and (json.loads(l).get('cost_usd') or 0)>0))"
362
```

### `cost_pct` — Costed share of collected runs, per cent

```
$ head -n 35567 state/events.jsonl | python3 -c "import sys,json;e=[json.loads(l) for l in sys.stdin];f=[x for x in e if x.get('kind')=='agent_finished'];print('%.0f'%(100.0*sum(1 for x in f if (x.get('cost_usd') or 0)>0)/len(f)))"
34
```

### `cost_first_day` — First day carrying a costed run

```
$ head -n 35567 state/events.jsonl | python3 -c "import sys,json;e=[json.loads(l) for l in sys.stdin];print(min(x['at'][:10] for x in e if x.get('kind')=='agent_finished' and (x.get('cost_usd') or 0)>0))"
2026-08-11
```

### `cost_last_day` — Last day carrying a costed run

```
$ head -n 35567 state/events.jsonl | python3 -c "import sys,json;e=[json.loads(l) for l in sys.stdin];print(max(x['at'][:10] for x in e if x.get('kind')=='agent_finished' and (x.get('cost_usd') or 0)>0))"
2026-08-18
```

### `cost_per_run` — Mean cost of a costed run, USD

```
$ head -n 35567 state/events.jsonl | python3 -c "import sys,json;e=[json.loads(l) for l in sys.stdin];c=[x.get('cost_usd') or 0 for x in e if x.get('kind')=='agent_finished'];c=[x for x in c if x>0];print('%.2f'%(sum(c)/len(c)))"
2.66
```

### `cost_by_day` — Costed spend per day, USD

```
$ head -n 35567 state/events.jsonl | python3 -c "import sys,json,collections;d=collections.Counter();[d.__setitem__(x['at'][:10],d[x['at'][:10]]+(x.get('cost_usd') or 0)) for x in map(json.loads,sys.stdin) if x.get('kind')=='agent_finished'];print(' '.join('%s=%.2f'%(k,v) for k,v in sorted(d.items())))"
2026-08-11=6.45 2026-08-12=371.98 2026-08-13=186.28 2026-08-14=181.52 2026-08-15=119.41 2026-08-18=98.05
```

### `outside_storm_started` — Runs launched on every day other than 2026-08-12

```
$ head -n 35567 state/events.jsonl | python3 -c "import sys,json;print(sum(1 for x in map(json.loads,sys.stdin) if x.get('kind')=='agent_started' and x['at'][:10]!='2026-08-12'))"
289
```

### `storm_started` — Runs launched on 2026-08-12, the day of the restart storm

```
$ head -n 35567 state/events.jsonl | python3 -c "import sys,json;print(sum(1 for x in map(json.loads,sys.stdin) if x.get('kind')=='agent_started' and x['at'][:10]=='2026-08-12'))"
800
```

### `storm_killed` — Runs the watchdog cut on 2026-08-12

```
$ head -n 35567 state/events.jsonl | python3 -c "import sys,json;print(sum(1 for x in map(json.loads,sys.stdin) if x.get('kind')=='agent_killed_stale' and x['at'][:10]=='2026-08-12'))"
25
```

### `storm_worst_ticket` — Launches against the single worst ticket on 2026-08-12

```
$ head -n 35567 state/events.jsonl | python3 -c "import sys,json,collections;c=collections.Counter(x['ticket'] for x in map(json.loads,sys.stdin) if x.get('kind')=='agent_started' and x['at'][:10]=='2026-08-12');print('%s %d'%c.most_common(1)[0][::-1][::-1])"
T-cb6f7b82 196
```

### `storm_strikes` — Tickets that hit two failures in a row on 2026-08-12

```
$ head -n 35567 state/events.jsonl | python3 -c "import sys,json;print(sum(1 for x in map(json.loads,sys.stdin) if x.get('kind')=='two_strikes' and x['at'][:10]=='2026-08-12'))"
26
```

### `since_storm_killed` — Runs cut by the watchdog after 2026-08-12

```
$ head -n 35567 state/events.jsonl | python3 -c "import sys,json;print(sum(1 for x in map(json.loads,sys.stdin) if x.get('kind')=='agent_killed_stale' and x['at'][:10]>'2026-08-12'))"
0
```

### `since_storm_strikes` — Two-strike tickets after 2026-08-12

```
$ head -n 35567 state/events.jsonl | python3 -c "import sys,json;print(sum(1 for x in map(json.loads,sys.stdin) if x.get('kind')=='two_strikes' and x['at'][:10]>'2026-08-12'))"
2
```

### `lost_started` — Runs launched on 2026-08-16 and 2026-08-17

```
$ head -n 35567 state/events.jsonl | python3 -c "import sys,json;print(sum(1 for x in map(json.loads,sys.stdin) if x.get('kind')=='agent_started' and '2026-08-16'<=x['at'][:10]<='2026-08-17'))"
3
```

### `lost_finished` — Runs collected on 2026-08-16 and 2026-08-17

```
$ head -n 35567 state/events.jsonl | python3 -c "import sys,json;print(sum(1 for x in map(json.loads,sys.stdin) if x.get('kind')=='agent_finished' and '2026-08-16'<=x['at'][:10]<='2026-08-17'))"
0
```

### `lost_gate` — Budget-gate refusals on 2026-08-16 and 2026-08-17, the core alive while nothing was charged

```
$ head -n 35567 state/events.jsonl | python3 -c "import sys,json;print(sum(1 for x in map(json.loads,sys.stdin) if x.get('kind')=='gate_closed' and '2026-08-16'<=x['at'][:10]<='2026-08-17'))"
5159
```

### `tickets_total` — Tickets on the board

```
$ python3 -c "import json;print(len(json.load(open('/home/atanor/vault/projects/showcase/board-snapshot.json'))))"
474
```

### `tickets_by_status` — Tickets by status

```
$ python3 -c "import json,collections;c=collections.Counter(t['status'] for t in json.load(open('/home/atanor/vault/projects/showcase/board-snapshot.json')));print(' '.join('%s=%d'%kv for kv in sorted(c.items())))"
canceled=63 done=341 in_progress=9 in_review=3 todo=58
```

### `tickets_done` — Tickets closed by an acceptance

```
$ python3 -c "import json;print(sum(1 for t in json.load(open('/home/atanor/vault/projects/showcase/board-snapshot.json')) if t['status']=='done'))"
341
```

### `tickets_open` — Tickets still to do (todo and in_progress)

```
$ python3 -c "import json;print(sum(1 for t in json.load(open('/home/atanor/vault/projects/showcase/board-snapshot.json')) if t['status'] in ('todo','in_progress')))"
67
```

### `defects_open` — Open defect tickets

```
$ python3 -c "import json;print(sum(1 for t in json.load(open('/home/atanor/vault/projects/showcase/board-snapshot.json')) if t['type']=='defect' and t['status'] in ('todo','in_progress')))"
20
```

### `defects_closed` — Closed defect tickets

```
$ python3 -c "import json;print(sum(1 for t in json.load(open('/home/atanor/vault/projects/showcase/board-snapshot.json')) if t['type']=='defect' and t['status']=='done'))"
40
```

### `audits_done` — Stage audits completed

```
$ python3 -c "import json;print(sum(1 for t in json.load(open('/home/atanor/vault/projects/showcase/board-snapshot.json')) if t['type']=='audit' and t['status']=='done'))"
17
```

### `reviews_done` — Acceptance runs completed as review tickets

```
$ python3 -c "import json;print(sum(1 for t in json.load(open('/home/atanor/vault/projects/showcase/board-snapshot.json')) if t['type']=='review' and t['status']=='done'))"
91
```

### `projects_total` — Projects on the board

```
$ cat /home/atanor/vault/projects/showcase/projects-snapshot.txt | wc -l | tr -d ' '
19
```

### `projects_active` — Active projects

```
$ cat /home/atanor/vault/projects/showcase/projects-snapshot.txt | grep -c ' active '
16
```

### `projects_paused` — Paused projects

```
$ cat /home/atanor/vault/projects/showcase/projects-snapshot.txt | grep -c ' paused '
3
```

### `paused_keys` — Which projects are paused

```
$ cat /home/atanor/vault/projects/showcase/projects-snapshot.txt | grep ' paused ' | cut -d' ' -f1 | tr '\n' ' '
auditlock blocked-return cli-surface
```

### `active_ceiling` — Ceiling on simultaneously active projects

```
$ python3 -c "import json;print(json.load(open('state/config.json'))['max_active_projects'])"
10
```

### `stale_minutes` — Minutes a run may live before the watchdog cuts it

```
$ python3 -c "import json;print(json.load(open('state/config.json'))['stale_minutes'])"
45
```

### `ticket_budget` — Dollar ceiling on one ticket

```
$ python3 -c "import json;print(json.load(open('state/config.json'))['ticket_budget_usd'])"
12
```

### `gate_normal_pct` — Share of the weekly quota ordinary work may spend, per cent

```
$ python3 -c "import json;print(json.load(open('state/config.json'))['budget_normal_pct'])"
100
```

### `gate_emergency_pct` — Share of the weekly quota emergency work may spend, per cent

```
$ python3 -c "import json;print(json.load(open('state/config.json'))['budget_emergency_pct'])"
100
```

### `registry_rows` — Rows in the template registry

```
$ grep -c '^|' vault/Registry.md
49
```

### `rule_files` — Rule files every run is given

```
$ ls vault/rules/*.md | wc -l | tr -d ' '
3
```

## State excerpts

Quoted on the page as the command printed them.

### `journal_kinds` — The event journal by kind, twelve most frequent, with the total

```
$ head -n 35567 state/events.jsonl | python3 -c "import sys,json,collections;e=[json.loads(l) for l in sys.stdin];print('%-19s %d'%('events total',len(e)));print('\n'.join('%-19s %d'%kv for kv in collections.Counter(x['kind'] for x in e).most_common(12)))"
events total        35567
gate_closed         31093
ticket_updated      1468
agent_started       1089
agent_finished      1056
ticket_created      475
review_queued       93
dep_wait            68
two_strikes         38
project_status      36
agent_killed_stale  25
project_created     19
order_taken         17
```

### `board_projects` — The project board, as `atanor project list` prints it

```
$ cat /home/atanor/vault/projects/showcase/projects-snapshot.txt
allowance            urgent      active   The ceiling guards autonomous work; requested work runs on a project allowance
auditlock            normal      paused   Audit measures something that no longer moves
autoproject          normal      active   Autoproject over the task board
blocked-return       urgent      paused   blocked is a transition with two ends
cli-surface          normal      paused   The launch uses the CLI it runs on
cliguard             urgent      active   atanor commands refuse instead of quietly corrupting the queue
container            urgent      active   A feature is a ticket with children
corelang             normal      active   The core speaks the lab's working language
coremerge            urgent      active   The core installs as one file
demo                 urgent      active   Core check
errand-track         urgent      active   The errand track: one address takes any request, and an answer comes back
flowguard            urgent      active   Work that arrived or was started cannot go unnoticed
killclock            urgent      active   Work the lab stopped is not counted as a failed ticket
labshape             urgent      active   Athanor as an organisation: checking is bought, dead entities are killed
plandiff             background  active   Diff of the plan against the calendar
runguard             urgent      active   An agent launch either arrives or is named as the reason
showcase             urgent      active   The lab's shop window: one page showing what was built, what it cost, and what is still broken
spectruth            urgent      active   The master spec describes the running system, and a script says when it stops
supervisor-inbox     normal      active   One inbox per supervisor: every input reaches a supervisor as an envelope at an address
```

### `board_status` — Ticket counts by status

```
$ python3 -c "import json,collections;c=collections.Counter(t['status'] for t in json.load(open('/home/atanor/vault/projects/showcase/board-snapshot.json')));print('\n'.join('%-12s %d'%kv for kv in sorted(c.items(),key=lambda x:-x[1])))"
done         341
canceled     63
todo         58
in_progress  9
in_review    3
```

### `board_open_defects` — Open defects and the projects they sit on

```
$ atanor ticket list | grep -E '^T-[0-9a-f]+  (todo|in_progress)' | head -20
T-0b2ecf83  todo         director   plandiff       bottleneck on a dump with no events: ValueError or an empty result
T-0b70b802  todo         coder      runguard       Resume-failure path unprobed, and the SPEC sentence misstates what attempts gains
T-0dcae47c  todo         coder      errand-track   atanor-inbox and atanor-alive name themselves in ATANOR_SENDER
T-1262eead  todo         coder      allowance      acceptance.py: the twelve rules of SPEC section 5, written before the patch and shown to refute
T-1421ab26  todo         coder      demo           loop.md: re-take the transition map against the installed core, in English
T-1c7579c5  todo         coder      cliguard       A wrong ticket title cannot be corrected: 'atanor ticket set' has no --title
T-1d09ee18  todo         auditor    showcase       Stage audit: the shop window measured against its spec, not against its own acceptance
T-1d77ded0  todo         coder      demo           negative-control.md and sessions-between-tickets.md: re-checked and in English
T-26a575cb  todo         coder      blocked-return CT.4 counts as safe a status write it does not classify: a != / not-in guard, a tuple target, a match body
T-28d2173e  todo         methodist  labshape       Every role file names the customer, and build_context carries CUSTOMER.md into every run
T-29d52b37  todo         methodist  auditlock      Audit template: the expected count of a live acceptance is frozen as a literal and goes stale the day it runs
T-2d7b67a4  todo         coder      autoproject    REFERENCE.md: «behaviour on dirty input is undefined» is stale — part of the input is defined and checked
T-3303b9e1  in_progress  coder      showcase       Spec rule 9 fails: the page shows two quoted state snapshots, not three
T-36d7c593  todo         coder      errand-track   The Boundaries block forbids the two vault-root writes the director's role text orders
T-3a41e222  todo         director   allowance      Two numbers and one door: the allowance caps, and whether an order file may authorize spend
T-3db1bd6e  todo         coder      allowance      The stuck-project alert never reads the gate: a shut ceiling files one priority-1 director question per active project per day
T-4630c753  todo         coder      allowance      SPEC.md line 160: the acceptance rule tests a number Vsevolod moves, so it can neither pass nor fail
T-4c876803  todo         coder      runguard       The running core has no rollback point: the 2026-08-15 install left no atanor.py.backup
T-4f6251c0  todo         auditor    allowance      Audit of the allowance chain: the twelve rules of SPEC section 5 against the merged core
T-572dd3ee  in_progress  coder      demo           drift.md: every command the product quotes, re-run against the installed core
```
