The method

How Street University is made

One person, a roster of AI agents and a Jira board. This page shows how the game has been built since the first commit: who does what, how the work is checked, what it costs and what went wrong. Every number below is produced by a script at each release; none is typed by hand.

25weeks
1,821commits
1,140Jira tickets
19sprints
50tagged releases
5platforms
8languages
93,700lines of game code
144,410lines of probe and test code

How to read itNine counts of the same project, all taken at the same moment. Weeks run from the first commit; releases are the version tags in git. The two code counts leave out comments and blank lines: the first is the game, the second the probes that test it.

Sourcegit, Jira, the export presets and the translation files of the game · snapshot of 5 November 2026

The timeline

Three eras on one axis

The way of working changed twice, and both times the change is visible in the data: first plans kept in markdown files, then tickets and a roster of agents, then a second AI plan working next to the first.

MarkdownPlans live in .md files, each brief is written to be pasted into a new chat, tags are the checkpoints, and testing means the author playing the game.
Jira + rosterEvery piece of work is a ticket. An orchestrator splits it into lots for a roster of agents, each with one role, and every post-mortem turns into a binding rule.
Two plansA second AI subscription joins as a second roster, a regression suite enters the gate of every lot, and Firebase enters the backend.
  • commits per week
  • tickets created per month
  • rejections per month (a ticket sent back from review)
  • release tag
MarkdownJira + rosterTwo plans26014 MayJunJulAugSepOctNov21411647818937714061410512345678910
MarkdownJira + rosterTwo plans514 May2720 May1525 May01 Jun08 Jun1015 Jun022 Jun72 Jul16 Jul2516 Jul17620 Jul8627 Jul1205 Aug21610 Aug19317 Aug14625 Aug2604 Sep2247 Sep14914 Sep2721 Sep2130 Sep748 Oct1712 Oct819 Oct026 Oct142 Nov12345678910Jul 214116Aug 478189Sep 377140Oct 614Nov 105
  1. First commit: a prototype under the working title “Homeless City”, renamed nine days later.
  2. The roguelike direction is chosen: the first entry of the changelog.
  3. Multiplayer in one day: on the local network in the morning, over the internet with Epic Online Services in the evening. The brief gives the reason in one line: si usa EOS perché è gratuito (EOS is used because it is free).
  4. Jira, CLAUDE.md, ORCHESTRAZIONE.md and the roster of agents are all born on the same day.
  5. First build on TestFlight; from now on Android goes through the Play Store.
  6. Epic approves the Brand Review in six hours. This website exists because that review asked for one.
  7. v0.40, the largest release so far, and a jump in the version numbering.
  8. Codex joins as the second plan.
  9. An inventory of every probe is taken, and a regression suite enters the gate of every lot.
  10. Codex is paused by the author's decision.

How to read itTime runs from left to right, one bar per week. Above the axis, the commits of that week. Below it, the tickets created each month and, inside them, the rejections. The coloured bands are the three eras, the notches are the release tags, and the numbered dots are the ten milestones listed underneath.

How to read itTime runs from top to bottom, one row per week, grouped by era. The bar on each row is the commits of that week, with the number beside it. On the right, one bar per month is the tickets created that month, and its darker part the rejections. The dashes on the vertical line are the release tags; the numbered circles are the ten milestones listed underneath.

Sourcegit log of the development branch, the history of every Jira ticket, the changelog of the repository · snapshot of 5 November 2026

The turning point

16 July, minute by minute

The second era starts on a single afternoon. This is the sequence as Jira and git recorded it.

  1. 13:49

    The epics are created, all in the same minute.

    8 epics

  2. 13:50

    The next ticket is not a task. It is titled “LEGGIMI” (read me) and it explains to the agents how the board is meant to be used.

  3. 13:50–13:53

    The backlog is poured in: dozens of tickets in a handful of minutes.

    29 tickets

  4. 16:15

    The author writes his first tickets by hand. They have a title and nothing else.

  5. evening

    By the evening the first sprint is under way: the count beside is the tickets taken in hand before midnight. The first one is closed the next morning.

    23 tickets taken in hand that day

Born that day

  • Jira — the board where every piece of work becomes a ticket.
  • CLAUDE.md — the standing instructions every session reads first.
  • ORCHESTRAZIONE.md — how work is split into lots and delegated.
  • The roster — four agents, one role each.
  • Sprint 1 — opened and worked the same day.

No document says why the switch happened that day; the reason is not written down anywhere, and this page does not invent one. What the record shows is the sequence. On the two days before, playtests produced dozens of reports at once. And the markdown briefs had stopped talking to each other: three days later one of them still notes, about two others, R1/R2 non risultano implementati (R1/R2 do not appear to be implemented).

How to read itRead the column from top to bottom: each row is a moment of 16 July 2026, with the time on the left and what was created in Jira at that time on the right. The list beside it is what else came into existence the same day.

Sourcecreation time of each Jira ticket, git log of that day, the briefs kept in the repository · snapshot of 5 November 2026

The organisation

The chain of command

One person decides; everything else is a relay. A ticket goes down as a brief, comes back up as a diff, and reaches the author as a comment of at most 900 characters. His answer is two letters.

  • one ticket
  • gate verdict
The authordecides, plays,answers ok orkoFirst bridgethe Claudesession thatorchestrates:splits, briefs,checks, closesClaude rosterarchitect · Opusdeveloper · Sonnetodd jobs · HaikutesterCodex rostersol · builderluna · inquiries andchecklistsastra · hard problems, everyspriteticketcomment ≤900charactersok / kobriefdiffbriefdiffgateverdictone ticket
The authordecides, plays, answers ok or koFirst bridgethe Claude session thatorchestrates: splits, briefs,checks, closesClaude rosterCodex rosterarchitect · Opusdeveloper · Sonnetodd jobs · Haikutestersol · builderluna · inquiries andchecklistsastra · hard problems,every spriteticketcomment ≤900 charactersok / kobriefdiffbriefdiffgateverdictone ticket

The trip of one ticket

  1. The author writes a ticket in Jira, or approves one written for him, and puts it in the sprint.
  2. The first bridge reads the sprint once, groups the tickets by the files they touch, and writes one closed brief per lot: the full text of the ticket, the files, what must not be touched.
  3. A builder, a Claude agent or a Codex one, works inside that brief only. It never reads Jira and never commits. It returns a diff and a short report.
  4. The gate: a second model, one that did not write the code, checks the real diff against the ticket line by line and hands a verdict to the first bridge. A report is not a proof.
  5. The first bridge commits the lot and writes the Jira comment: at most 900 characters, opening with what was not tested.
  6. The author tries it on a real device and answers ok or ko. A ko sends the ticket back to the queue, and his comment becomes the new requirement.

How to read itRead it from left to right and back. Each arrow carries the name of what travels on it; the moving dot is one ticket making the whole trip. The numbered list underneath is the same trip in words.

Sourcethe orchestration rules and the workflow files of the repository · snapshot of 5 November 2026

The pace

The sprints

A sprint here is a batch of tickets the author moves onto the board. A ticket that comes back from review is counted as a rejection, and the rejections are published with everything else.

  • tickets that went through the sprint
  • of which sent back from review while the sprint was open
471153821476316214116507162330710318711994511810241211381122810913262471448461511331605117063181100199sprint numbersent back from review
471153821476316214116507162330710318711994511810241211381122810913262471448461511331605117063181100199sprint numbersent back from review

A new sprint every 4.6 days on average

From 18 September the darker part almost disappears: the three sprints that follow count 0, 0 and 1 tickets sent back. The author's own explanation: those sprints were multiplayer work only, and the work moved on to the next thing rather than stopping to mark tickets as done. Read those three bars with that in mind.

How to read itOne bar per sprint, in order. The height is the number of tickets that went through that sprint; the darker part is how many of them were sent back from review at least once while that sprint was open. A ticket that crosses two sprints is counted in both.

Sourcethe sprints of the Jira board and the status history of every ticket · snapshot of 5 November 2026

The authors

Who made what

No single tool made this game. Each kind of output has its own author, and where a count exists it is shown next to it.

Output Made by In numbers
Code Claude models, each signing its own commits; since September Codex sol on tightly scoped lots 1,664 commits signed by a model and 157 by hand. On the Codex side: 281 lots, 188 gates, 138 reviews, 60 consultations, 31 inquiries.
Sprites and images Codex image generation: first sol, from 8 September Astra for every sprite. PixelLab for two weeks in July, then retired. Nano Banana on test benches only 421 PNG in the game, 664 raw files kept beside them. Since 22 July every generation is two tickets joined by a Blocks link, and only the author closes the second: 197 tickets carry that link.
Music Suno 12 tracks, levelled at −16 dB RMS. Where a loop is cut, the point is chosen by measuring the jump at the seam: 0.44 dB for the chosen cut, against 3.76 dB for the longest one.
Sound effects ElevenLabs, through its MCP server 35 effects, brought to −20 dB RMS and measured by a script rather than judged by ear.
Translations Claude 8 languages, 2,708 lines in the translation files.
Tester notices WhatsApp through an MCP server, plus Telegram At every release the closed-beta testers are told one by one, from the same spreadsheet that holds the list.
Tickets Jira: the Atlassian MCP server for a single write, scripts for everything else Reading one ticket through the server cost 9,400 characters, and one with 16 comments 53,111 bytes. A script that filters first lets only the text in.

Commits by signature

Claude Opus 51,134Claude Fable 5.1207Claude Fable 5142Claude Opus 5.5135Claude Opus 4.846by hand157

On licences: the commercial licence of a generated asset follows the plan that was active on the day it was generated, not the plan active today. The provenance inventory writes not determined wherever the proof is missing: 105 of the 421 PNG have a source named file by file.

How to read itOne row per kind of output. The middle column says who made it; the right one gives the counts, or the measure that decided a choice. The bars show how the signed commits split among the models.

Sourcethe commit trailers in git, the register of the Codex runs, the provenance inventory of the assets and the changelog · snapshot of 5 November 2026

Testing

How it gets tested

Nothing reaches the author on trust. Every lot goes through the same seven steps, in the same order, and the comment that closes it opens with what was not tested.

349 probes, counted one by one

349probes
  • 158 alive: they run by themselves and pass
  • 155 not automatic: they need a person looking
  • 34 broken: they no longer run
  • 2 obsolete: what they tested is gone

The seven steps before a ticket comes back

  1. The real diff. What actually changed in the files, not what the agent's report says changed.
  2. Compile check. The scripts that were touched must load. It sees neither warnings nor shaders, and the steps below exist because of that.
  3. Regression suite. 23 probes plus the compile check and two smoke runs: 538 seconds on 8 October 2026. One failure and the lot does not go on.
  4. A test shot someone looked at. Taken from the game's own viewport and opened as an image: a file that exists is not a file that was seen.
  5. A comment of 900 characters at most. Its first line says what was not tested.
  6. The author, on a real device. The only step no agent can do.
  7. ok or ko. Two letters. A ko sends the ticket back to the queue, and the comment that comes with it becomes the new requirement.

Five false greens

Five times a check said yes with the defect still there. Each one became a written rule.

The shader that would not compile

The check saidThe test shot showed natural colours.

What was thereThe shader was broken and the engine had quietly fallen back to its default material: the colour swap was not being applied at all.

1 August 2026

The test shot that had died

The check saidThe compile check passed, the runner printed exit 0, the images were in the folder.

What was thereA renamed function had killed the script that takes the shots. The images were the ones left by the run before.

12 August 2026 · ticket SU-382

The exit code that meant nothing

The check saidThe watcher exited with 0, the code agreed for «approved».

What was thereA network error. The last line of its own log still said the review was in progress.

26 August 2026

The GET that proved nothing about the POST

The check saidA GET to the address answered ok, and a commit declared the queue working.

What was thereThe queue had never delivered a single file: on a POST the server answered with a redirect, and the game followed it with the wrong method.

17 August 2026

The warning the compile check could not see

The check saidThe compile check exited 0 and the ticket went to review.

What was thereA warning that the editor treats as an error: the scene would not open.

13 August 2026

How to read itThe list is the path of every lot, top to bottom. The ring counts every probe script in the repository by what it is today, not by what it was written for. The five cards are cases, each with its date.

Sourcethe inventory of the probes, the regression suite and the memory files of the project · snapshot of 5 November 2026

The costs

The economy of tokens

The work runs on two flat-rate plans, so the limit is not money: it is a usage window that fills up. These are the measurements the rules came from.

What an average lot costs, by role

architect · Opus11 $ eq.tester3 $ eq.developer ·Sonnet2.5 $ eq.explorer,read-only0.6 $ eq.helper · Haiku0.17 $ eq.

These are estimates, not bills. Dollar equivalents at list prices, measured on 242 launches between 15 and 29 August 2026; the work itself runs on a subscription. In raw tokens an architect lot is 14.5 million and a developer lot about 11 million. Starting any agent costs 40–46 thousand tokens before it has done anything.

98% is context read again

  • 98% context read again
  • 2% new work

Of the 6.13 billion tokens of two measured weeks, 98% was not work: it was the conversation being read again at every request. This is why files are not read whole and reports have a ceiling.

76% is spent by the session that orchestrates

  • 76% orchestrating session
  • 24% agents

Between 4 and 7 September 2026, 942 million tokens out of 1,235 went to the orchestrating session, not to the agents it launched. Hence a threshold: at 250 thousand tokens of context the session closes what is open and hands over to a new one.

The window, and the 90% rule

Each plan has a usage window. Before spending, a script reads how full it is. At 90% no new agent is launched: the ones in flight finish, their tickets get closed, and the session writes down where it stopped.

freeze 90%22 September 2026 · 2% → 63% · 25 min8 October 2026 · 0% → 62% · 13 min0%50%100%
freeze 90%22 September 2026 · 2% → 63% · 25 min8 October 2026 · 0% → 62% · 13 min0%50%100%

Two incidents, the same mistake

22 September 2026. 16 search agents launched together: the window went from 2% to 63% in 25 minutes.

8 October 2026. 8 readers in parallel, to collect the material for this very page: from 0% to 62% in 13 minutes. The rule already existed.

Two plans side by side

Claude

The first bridge: it splits the work, decides, verifies, closes, and writes to the tracker. Its roster builds.

Codex

A second roster from 4 September 2026: builders, the gate on every lot, the images. Stopped by the author on 8 October 2026; only the generation of sprites remains.

How to read itThe bars compare the roles with each other, in estimated dollars per average lot. The two strips split one total into its two parts. On the gauge the dashed line is the threshold and the two marked stretches are how far each incident went, and how fast.

Sourcethe orchestration rules of the repository, with the date of each measurement, and the memory file on the two incidents · snapshot of 5 November 2026

The lessons

Rules born from failures

Every mistake made once becomes a file: one fact, why it matters, how to apply it. The agents get the index of those files at the start of every session. There are 258 of them.

Memories written, by month

17July116August111Sep13October1November

Twelve of them, word for word

The rules are written in Italian, in the first person, by the model that made the mistake. Here they are translated; the Italian version of this page quotes them to the letter.

  • In Jira comments Ivan writes only ok/ko and what is wrong; the long comments are mine, the connector posts them under his account

    ivan-scrive-solo-ok-ko.md · 21 August 2026

  • a test shot that cannot reproduce the defect is not a proof, it is a tautology

    provino-deve-riprodurre-il-difetto.md · 16 August 2026

  • A rejection about something I cannot perceive (a sound, a gait) is closed by translating Ivan's word into ONE measurement that answers his question, not mine

    ko-percettivo-si-traduce-in-una-misura-che-risponda.md · 6 September 2026

  • An endpoint that answers ok to a GET may deliver nothing on a POST

    una-get-non-prova-una-post.md · 17 August 2026

  • A watcher job that exits 0 does not mean «condition reached»: check the fact, not the exit code

    sentinella-exit-zero-non-e-successo.md · 26 August 2026

  • A test shot that dies halfway leaves the images of the previous run in the folder — they look like a successful check; always look at the timestamp and the log

    provino-morto-lascia-gli-scatti-vecchi.md · 12 August 2026

  • A shader that does not compile cannot be seen — Godot falls back to the default material and the test shot looks correct

    shader-rotto-sembra-giusto.md · 1 August 2026

  • A single permission prompt freezes ALL the parallel agents, not only the one that asked: in an unattended sprint it is worth hours of standstill

    prompt-permesso-blocca-tutti-gli-agenti.md · 17 August 2026

  • A workflow with 10+ Fable agents in parallel on huge files takes the five-hour window from 2% to 63% in 25 minutes

    fan-out-di-agenti-fable-brucia-la-5h.md · 22 September 2026

  • an eyeball estimate of length, in Italian with numbers and paths, is systematically 5-25% short

    commento-jira-900-caratteri-taglio-automatico.md · 17 September 2026

  • The Atlassian connector ignores the field filter and always sends the whole description plus every comment; reads go through tools/jira_leggi.sh

    mcp-jira-fields-non-restringe.md · 21 August 2026

  • a line that would already be true BEFORE running the command is an announcement, and gets deleted.

    CLAUDE.md · 21 August 2026

How to read itEach bar is a month and counts the files born in it. Each quote carries the file it comes from and the day the rule was written.

Sourcethe memory folder of the project and the instructions file of the repository · snapshot of 5 November 2026

The game

The architecture of the game

One diagram for what all of this builds: a multiplayer game with no server of its own, where one player's device is the authority.

Godot 4.7 · GDScript46 global modulesthe city grows from ashared seedHostthe authority: clock, weather,characters, eventsClientssend input, receive the stateEpic relaypackets of 1,170bytes at mosthost handover4 modulesServicesEpic Online Serviceslogin, lobbies, relayFirebasepush, invites, nicknamesApps Scripttelemetry; on its wayout5 platforms · 8 languages
Godot 4.7 · GDScript46 global modulesthe city grows from a shared seedHostthe authority: clock, weather, characters, eventsEpic relaypackets of 1,170 bytes at mostClientssend input, receive the statehost handover4 modulesServicesEpic Online Serviceslogin, lobbies, relayFirebasepush, invites, nicknamesApps Scripttelemetry; on its way out5 platforms · 8 languages

How to read itOn the left, what runs on every device. In the middle, who decides: one device is the host and the others follow it through a relay. On the right, the outside services the game calls.

Sourcethe project file of the game, its multiplayer design document and the export presets · snapshot of 5 November 2026

The tools

The MCP fabric

Claude Code sits in the middle; each server is a spoke that reaches something outside the repository. A spoke is not always the best road: where a plain script did better, the spoke says so.

  • the script won here
  • retired
AtlassianElevenLabsCodexWhatsAppChromeNano BananaPixelLabClaudeCode
AtlassianElevenLabsCodexWhatsAppChromeNano BananaPixelLabClaudeCode
  • Atlassiansingle comments and status changes on JiraReading moved to a script: the server cannot narrow the fields, so asking for a title brought back the whole description and every comment.
  • ElevenLabssound effects from a written promptOne file named .mp3 was raw stereo audio with no header: every result is measured before it is used.
  • Codexa second opinion inside the conversationLots, gates and reviews start from a script as a separate process, so their output stays out of Claude's context and only a short result is read.
  • WhatsAppthe release notices to the testersHere the server won: it replaced driving the web client inside a browser.
  • Chromethe store consoles and the checks on the web buildThe screenshots of this very page come from a script instead: animations have to run in real time to be photographed.
  • Nano Bananaimage generation, on test benches onlyIt never became the production road for the sprites.
  • PixelLabpixel-art generation, two weeks in JulyRetired: since the end of July sprites are generated in one place only.

How to read itEach spoke is one server. The first line says what travels through it. The second, where there is one, says what was learned: a spoke marked as beaten by a script is still in use, but for less than it was installed for.

Sourcethe MCP configuration of the project and the orchestration rules of the repository · snapshot of 5 November 2026

To take away

What to replicate tomorrow morning

A minimum kit, in six items. None of them needs this project.

  • An instructions file the agents read at every session, kept short enough to be read whole.
  • One file per phase of the cycle — tickets, sprint, testing, release — opened only when that phase begins.
  • A written procedure for each critical point: before closing a ticket, when one comes back rejected, before a release.
  • The tracker read through scripts that return only the text that is needed, not through a general connector.
  • A meter of the usage window, read before spending, with a threshold at which work stops.
  • One memory file per trap already paid for: the fact, why it matters, how to apply it.

Still open

What does not add up yet

Four things that are true today.

  • Part of the backend is still on Apps Script. The function meant to replace it has been written and deployed since 18 September 2026; the switch has not been made.
  • 79 tickets out of 1,140 are not closed.
  • The test log stops on 3 November 2026. Since then the results go into the ticket comments, where the author reads them, and the log has not been kept.
  • The regression suite has no room left. It takes 538 seconds against a ceiling of 600: the next probe that enters pushes an old one out.

Il metodo

Come è fatto Street University

Una persona, un roster di agenti IA e una board Jira. Questa pagina mostra come il gioco è stato costruito dal primo commit: chi fa cosa, come si controlla il lavoro, quanto costa e che cosa è andato storto. Ogni numero qui sotto lo produce uno script a ogni release; nessuno è scritto a mano.

25settimane
1.821commit
1.140ticket Jira
19sprint
50release con tag
5piattaforme
8lingue
93.700righe di codice del gioco
144.410righe di codice di sonde e collaudi

Come si leggeNove conteggi dello stesso progetto, presi tutti nello stesso momento. Le settimane partono dal primo commit; le release sono i tag di versione in git. I due conteggi del codice lasciano fuori commenti e righe vuote: il primo è il gioco, il secondo le sonde che lo collaudano.

Fontegit, Jira, i preset di esportazione e i file di traduzione del gioco · scatto del 5 novembre 2026

La timeline

Tre ere su un asse solo

Il modo di lavorare è cambiato due volte, e tutte e due le volte il cambio si vede nei dati: prima i piani tenuti in file markdown, poi i ticket e un roster di agenti, poi un secondo piano IA che lavora accanto al primo.

MarkdownI piani stanno in file .md, ogni brief è scritto per essere incollato in una chat nuova, i tag sono i punti di ripristino, e collaudare vuol dire l'autore che gioca.
Jira + rosterOgni lavoro è un ticket. Un orchestratore lo divide in lotti per un roster di agenti, ognuno con un ruolo solo, e ogni post-mortem diventa una regola vincolante.
Due pianiUn secondo abbonamento IA entra come secondo roster, una suite di regressione entra nel gate di ogni lotto, e Firebase entra nel backend.
  • commit per settimana
  • ticket creati per mese
  • bocciature per mese (un ticket rimandato indietro dalla revisione)
  • tag di release
MarkdownJira + rosterDue piani26014 maggiulugagosetottnov21411647818937714061410512345678910
MarkdownJira + rosterDue piani514 mag2720 mag1525 mag01 giu08 giu1015 giu022 giu72 lug16 lug2516 lug17620 lug8627 lug1205 ago21610 ago19317 ago14625 ago2604 set2247 set14914 set2721 set2130 set748 ott1712 ott819 ott026 ott142 nov12345678910lug 214116ago 478189set 377140ott 614nov 105
  1. Primo commit: un prototipo col nome di lavoro «Homeless City», rinominato nove giorni dopo.
  2. Si sceglie la direzione roguelike: la prima voce del changelog.
  3. Multiplayer in un giorno: in rete locale la mattina, via internet con Epic Online Services la sera. Il brief dà il motivo in una riga: si usa EOS perché è gratuito.
  4. Jira, CLAUDE.md, ORCHESTRAZIONE.md e il roster di agenti nascono tutti lo stesso giorno.
  5. Prima build su TestFlight; da qui Android passa dal Play Store.
  6. Epic approva la Brand Review in sei ore. Questo sito esiste perché quella revisione ne chiedeva uno.
  7. v0.40, la release più grossa finora, e un salto nella numerazione delle versioni.
  8. Codex entra come secondo piano.
  9. Si fa l'inventario di tutte le sonde, e una suite di regressione entra nel gate di ogni lotto.
  10. Codex viene fermato per decisione dell'autore.

Come si leggeIl tempo scorre da sinistra a destra, una barra per settimana. Sopra l'asse, i commit di quella settimana. Sotto, i ticket creati ogni mese e, dentro, le bocciature. Le fasce colorate sono le tre ere, le tacche sono i tag di release, e i punti numerati sono le dieci pietre miliari elencate qui sotto.

Come si leggeIl tempo scorre dall'alto in basso, una riga per settimana, raggruppate per era. La barra di ogni riga sono i commit di quella settimana, col numero accanto. A destra, una barra per mese sono i ticket creati quel mese, e la parte più scura le bocciature. I trattini sul filo verticale sono i tag di release; i cerchi numerati sono le dieci pietre miliari elencate qui sotto.

Fontegit log del ramo di sviluppo, lo storico di ogni ticket Jira, il changelog del repository · scatto del 5 novembre 2026

La svolta

Il 16 luglio, minuto per minuto

La seconda era comincia in un solo pomeriggio. Questa è la sequenza come l'hanno registrata Jira e git.

  1. 13:49

    Nascono le epic, tutte nello stesso minuto.

    8 epic

  2. 13:50

    Il ticket successivo non è un lavoro. Si intitola «LEGGIMI» e spiega agli agenti come si usa la board.

  3. 13:50–13:53

    Il backlog viene versato dentro: decine di ticket in una manciata di minuti.

    29 ticket

  4. 16:15

    L'autore scrive a mano i suoi primi ticket. Hanno il titolo e nient'altro.

  5. sera

    In serata il primo sprint è in corso: il numero accanto sono i ticket presi in carico prima di mezzanotte. Il primo viene chiuso la mattina dopo.

    23 ticket presi in carico quel giorno

Nati quel giorno

  • Jira — la board dove ogni lavoro diventa un ticket.
  • CLAUDE.md — le istruzioni permanenti che ogni sessione legge per prime.
  • ORCHESTRAZIONE.md — come il lavoro si divide in lotti e si delega.
  • Il roster — quattro agenti, un ruolo ciascuno.
  • Sprint 1 — aperto e lavorato il giorno stesso.

Nessun documento dice perché il passaggio sia avvenuto quel giorno: il motivo non sta scritto da nessuna parte, e questa pagina non lo inventa. Quello che i registri mostrano è la sequenza. Nei due giorni prima i playtest avevano prodotto decine di segnalazioni in una volta. E i brief in markdown avevano smesso di parlarsi: tre giorni dopo uno di loro annota ancora, a proposito di altri due, R1/R2 non risultano implementati.

Come si leggeLa colonna si legge dall'alto in basso: ogni riga è un momento del 16 luglio 2026, con l'ora a sinistra e a destra ciò che a quell'ora è stato creato su Jira. L'elenco accanto è ciò che altro è nato lo stesso giorno.

Fonteora di creazione di ogni ticket Jira, git log di quel giorno, i brief conservati nel repository · scatto del 5 novembre 2026

L'organizzazione

La catena di comando

Una persona decide; tutto il resto è una staffetta. Un ticket scende come brief, risale come diff, e arriva all'autore come un commento di 900 caratteri al massimo. La sua risposta è di due lettere.

  • un ticket
  • verdetto del gate
L'autoredecide, gioca,risponde ok okoPrimo pontela sessioneClaude cheorchestra:scompone, scrivei brief,verifica, chiudeRoster Claudearchitetto · Opussviluppatore · Sonnettuttofare · HaikucollaudatoreRoster Codexsol · builderluna · istruttorie e spunteastra · compiti difficili,ogni spriteticketcommento ≤900caratteriok / kobriefdiffbriefdiffverdettodel gateun ticket
L'autoredecide, gioca, risponde ok o koPrimo pontela sessione Claude cheorchestra: scompone, scrive ibrief, verifica, chiudeRoster ClaudeRoster Codexarchitetto · Opussviluppatore · Sonnettuttofare · Haikucollaudatoresol · builderluna · istruttorie espunteastra · compitidifficili, ogni spriteticketcommento ≤900 caratteriok / kobriefdiffbriefdiffverdettodel gateun ticket

Il viaggio di un ticket

  1. L'autore scrive un ticket su Jira, o ne approva uno scritto per lui, e lo mette nello sprint.
  2. Il primo ponte legge lo sprint una volta sola, raggruppa i ticket per i file che toccano, e scrive un brief chiuso per lotto: il testo integrale del ticket, i file, che cosa non si tocca.
  3. Un builder, un agente Claude o uno Codex, lavora solo dentro quel brief. Non legge mai Jira e non fa mai commit. Restituisce un diff e un report breve.
  4. Il gate: un secondo modello, che non ha scritto il codice, confronta il diff vero col ticket riga per riga e consegna un verdetto al primo ponte. Un report non è una prova.
  5. Il primo ponte fa il commit del lotto e scrive il commento su Jira: 900 caratteri al massimo, che si aprono con ciò che non è stato provato.
  6. L'autore lo prova su un dispositivo vero e risponde ok o ko. Un ko rimanda il ticket in coda, e il suo commento diventa il requisito nuovo.

Come si leggeSi legge da sinistra a destra e ritorno. Ogni freccia porta il nome di ciò che ci viaggia sopra; il punto che si muove è un ticket che fa il viaggio intero. L'elenco numerato qui sotto è lo stesso viaggio a parole.

Fontele regole di orchestrazione e i file del ciclo di lavoro nel repository · scatto del 5 novembre 2026

Il ritmo

Gli sprint

Uno sprint qui è un gruppo di ticket che l'autore mette sulla board. Un ticket che torna indietro dalla revisione si conta come bocciatura, e le bocciature si pubblicano insieme a tutto il resto.

  • ticket passati per lo sprint
  • di cui rimandati indietro dalla revisione a sprint aperto
471153821476316214116507162330710318711994511810241211381122810913262471448461511331605117063181100199numero dello sprintrimandati indietro
471153821476316214116507162330710318711994511810241211381122810913262471448461511331605117063181100199numero dello sprintrimandati indietro

Uno sprint nuovo ogni 4,6 giorni in media

Dal 18 settembre la parte scura quasi sparisce: i tre sprint che seguono contano 0, 0 e 1 ticket rimandati indietro. La spiegazione è dell'autore: in quegli sprint si è fatto solo multiplayer, e si è andati oltre invece di fermarsi a segnare i ticket come fatti. Quelle tre barre si leggono sapendolo.

Come si leggeUna barra per sprint, in ordine. L'altezza è il numero di ticket passati per quello sprint; la parte più scura è quanti di loro sono stati rimandati indietro dalla revisione almeno una volta mentre quello sprint era aperto. Un ticket che attraversa due sprint si conta in entrambi.

Fontegli sprint della board Jira e lo storico degli stati di ogni ticket · scatto del 5 novembre 2026

Gli autori

Chi ha fatto cosa

Nessuno strumento da solo ha fatto questo gioco. Ogni tipo di prodotto ha il suo autore, e dove esiste un conteggio sta scritto accanto.

Prodotto Fatto da In numeri
Codice I modelli Claude, ognuno con la firma sui propri commit; da settembre Codex sol sui lotti ben delimitati 1.664 commit firmati da un modello e 157 a mano. Dal lato Codex: 281 lotti, 188 gate, 138 review, 60 consulti, 31 istruttorie.
Sprite e immagini La generazione di immagini di Codex: prima sol, dall'8 settembre Astra per ogni sprite. PixelLab per due settimane a luglio, poi ritirato. Nano Banana solo su banchi di prova 421 PNG nel gioco, 664 file grezzi conservati accanto. Dal 22 luglio ogni generazione è due ticket uniti da un link Blocks, e il secondo lo chiude solo l'autore: 197 ticket portano quel link.
Musiche Suno 12 tracce, portate a −16 dB RMS. Dove un loop si taglia, il punto si sceglie misurando il salto alla giunzione: 0,44 dB per il taglio scelto, contro 3,76 dB del più lungo.
Effetti sonori ElevenLabs, attraverso il suo server MCP 35 effetti, portati a −20 dB RMS e misurati da uno script invece che giudicati a orecchio.
Traduzioni Claude 8 lingue, 2.708 righe nei file di traduzione.
Avvisi ai tester WhatsApp attraverso un server MCP, più Telegram A ogni release i tester della beta chiusa vengono avvisati uno per uno, dallo stesso foglio che tiene l'elenco.
Ticket Jira: il server MCP di Atlassian per la scrittura singola, script per tutto il resto Leggere un ticket attraverso il server costava 9.400 caratteri, e uno con 16 commenti 53.111 byte. Uno script che filtra prima fa entrare solo il testo.

Commit per firma

Claude Opus 51.134Claude Fable 5.1207Claude Fable 5142Claude Opus 5.5135Claude Opus 4.846a mano157

Sulle licenze: la licenza commerciale di un asset generato segue il piano attivo il giorno in cui è stato generato, non quello attivo oggi. L'inventario di provenienza scrive non determinato dove la prova manca: 105 dei 421 PNG hanno la fonte nominata file per file.

Come si leggeUna riga per tipo di prodotto. La colonna centrale dice chi l'ha fatto; quella di destra dà i conteggi, o la misura che ha deciso una scelta. Le barre mostrano come i commit firmati si dividono fra i modelli.

Fontei trailer dei commit in git, il registro dei lanci Codex, l'inventario di provenienza degli asset e il changelog · scatto del 5 novembre 2026

Il collaudo

Come si prova

All'autore non arriva niente sulla fiducia. Ogni lotto passa per gli stessi sette passi, nello stesso ordine, e il commento che lo chiude si apre con ciò che non è stato provato.

349 sonde, contate una per una

349sonde
  • 158 vive: girano da sole e passano
  • 155 non automatiche: vogliono una persona che guarda
  • 34 rotte: non girano più
  • 2 obsolete: ciò che provavano non c'è più

I sette passi prima che un ticket torni indietro

  1. Il diff vero. Che cosa è cambiato davvero nei file, non che cosa dice il report dell'agente.
  2. Compile-check. Gli script toccati devono caricarsi. Non vede né i warning né gli shader, e i passi qui sotto esistono per questo.
  3. Suite di regressione. 23 sonde più il compile-check e due giri di fumo: 538 secondi l'8 ottobre 2026. Un solo fallimento e il lotto non va avanti.
  4. Il provino guardato. Preso dal viewport del gioco e aperto come immagine: un file che esiste non è un file che qualcuno ha visto.
  5. Un commento di 900 caratteri al massimo. La prima riga dice che cosa non è stato provato.
  6. L'autore, su un dispositivo vero. L'unico passo che nessun agente può fare.
  7. ok oppure ko. Due lettere. Un ko rimanda il ticket in coda, e il commento che lo accompagna diventa il requisito nuovo.

Cinque falsi verdi

Cinque volte un controllo ha detto sì col difetto ancora lì. Ognuna è diventata una regola scritta.

Lo shader che non compilava

Il controllo dicevaIl provino mostrava colori naturali.

Che cosa c'eraLo shader era rotto e il motore era ripiegato in silenzio sul materiale di default: lo scambio dei colori non veniva applicato affatto.

1 agosto 2026

Il provino che era morto

Il controllo dicevaIl compile-check passava, il lanciatore stampava exit 0, le immagini erano nella cartella.

Che cosa c'eraUna funzione rinominata aveva ucciso lo script che fa gli scatti. Le immagini erano quelle lasciate dal giro prima.

12 agosto 2026 · ticket SU-382

Il codice d'uscita che non voleva dire niente

Il controllo dicevaLa sentinella è uscita con 0, il codice concordato per «approvato».

Che cosa c'eraUn errore di rete. L'ultima riga del suo stesso log diceva ancora che la revisione era in corso.

26 agosto 2026

La GET che non provava niente della POST

Il controllo dicevaUna GET all'indirizzo rispondeva ok, e un commit dichiarava la coda funzionante.

Che cosa c'eraLa coda non aveva mai consegnato un solo file: alla POST il server rispondeva con un reindirizzamento, e il gioco lo seguiva col metodo sbagliato.

17 agosto 2026

Il warning che il compile-check non vedeva

Il controllo dicevaIl compile-check usciva con 0 e il ticket andava in revisione.

Che cosa c'eraUn warning che l'editor tratta come errore: la scena non si apriva.

13 agosto 2026

Come si leggeL'elenco è il percorso di ogni lotto, dall'alto in basso. La ciambella conta ogni sonda del repository per ciò che è oggi, non per ciò per cui era stata scritta. Le cinque schede sono casi, ognuno con la sua data.

Fontel'inventario delle sonde, la suite di regressione e i file di memoria del progetto · scatto del 5 novembre 2026

I costi

L'economia dei token

Il lavoro gira su due abbonamenti a prezzo fisso, quindi il limite non sono i soldi: è una finestra d'uso che si riempie. Queste sono le misure da cui sono nate le regole.

Quanto costa un lotto medio, per ruolo

architetto ·Opus11 $ eq.collaudatore3 $ eq.sviluppatore ·Sonnet2,5 $ eq.esploratore,sola lettura0,6 $ eq.tuttofare ·Haiku0,17 $ eq.

Sono stime, non conti pagati. Equivalenti in dollari a prezzi di listino, misurati su 242 lanci fra il 15 e il 29 agosto 2026; il lavoro vero gira su un abbonamento. In token grezzi un lotto dell'architetto sono 14,5 milioni e uno dello sviluppatore circa 11 milioni. Avviare un agente qualsiasi costa 40–46 mila token prima che abbia fatto qualcosa.

Il 98% è contesto riletto

  • 98% contesto riletto
  • 2% lavoro nuovo

Dei 6,13 miliardi di token di due settimane misurate, il 98% non era lavoro: era la conversazione riletta a ogni richiesta. È per questo che i file non si leggono interi e i report hanno un tetto.

Il 76% lo spende la sessione che orchestra

  • 76% sessione che orchestra
  • 24% agenti

Fra il 4 e il 7 settembre 2026, 942 milioni di token su 1.235 sono andati alla sessione che orchestra, non agli agenti che lancia. Da qui una soglia: a 250 mila token di contesto la sessione chiude ciò che è aperto e passa la mano a una nuova.

La finestra, e la regola del 90%

Ogni piano ha una finestra d'uso. Prima di spendere, uno script legge quanto è piena. Al 90% non parte nessun agente nuovo: quelli in volo finiscono, i loro ticket si chiudono, e la sessione scrive dove si è fermata.

si congela 90%22 settembre 2026 · 2% → 63% · 25 min8 ottobre 2026 · 0% → 62% · 13 min0%50%100%
si congela 90%22 settembre 2026 · 2% → 63% · 25 min8 ottobre 2026 · 0% → 62% · 13 min0%50%100%

Due incidenti, lo stesso errore

22 settembre 2026. 16 agenti di ricerca lanciati insieme: la finestra è passata dal 2% al 63% in 25 minuti.

8 ottobre 2026. 8 lettori in parallelo, per raccogliere il materiale di questa stessa pagina: dallo 0% al 62% in 13 minuti. La regola esisteva già.

Due piani fianco a fianco

Claude

Il primo ponte: scompone il lavoro, decide, verifica, chiude, e scrive sul tracker. Il suo roster costruisce.

Codex

Un secondo roster dal 4 settembre 2026: costruttori, il gate su ogni lotto, le immagini. Fermato dall'autore l'8 ottobre 2026; resta solo la generazione degli sprite.

Come si leggeLe barre confrontano i ruoli fra loro, in dollari stimati per lotto medio. Le due strisce dividono un totale nelle sue due parti. Sul misuratore la linea tratteggiata è la soglia e i due tratti segnati sono fin dove è arrivato ogni incidente, e in quanto tempo.

Fontele regole di orchestrazione del repository, con la data di ogni misura, e il file di memoria sui due incidenti · scatto del 5 novembre 2026

Le lezioni

Regole nate dai fallimenti

Ogni errore fatto una volta diventa un file: un fatto, perché conta, come si applica. Gli agenti ricevono l'indice di quei file all'inizio di ogni sessione. Sono 258.

Memorie scritte, per mese

17luglio116agosto111set13ottobre1novembre

Dodici, parola per parola

Sono scritte in prima persona dal modello che ha fatto l'errore. Qui sono citate alla lettera, col nome del file da cui vengono.

  • Nei commenti Jira Ivan scrive solo ok/ko e cosa non va; i commenti lunghi sono miei, l'MCP li posta col suo account

    ivan-scrive-solo-ok-ko.md · 21 agosto 2026

  • un provino che non sa riprodurre il difetto non è una prova, è una tautologia

    provino-deve-riprodurre-il-difetto.md · 16 agosto 2026

  • Un KO su qualcosa che non posso percepire (un suono, un'andatura) si chiude traducendo la parola di Ivan in UNA misura che risponda alla sua domanda, non alla mia

    ko-percettivo-si-traduce-in-una-misura-che-risponda.md · 6 settembre 2026

  • Un endpoint che risponde ok a una GET può non consegnare nulla in POST

    una-get-non-prova-una-post.md · 17 agosto 2026

  • Un job di sorveglianza che esce 0 non vuol dire «condizione raggiunta»: verificare il fatto, non l'exit code

    sentinella-exit-zero-non-e-successo.md · 26 agosto 2026

  • Un provino che muore a metà lascia in cartella i PNG del giro precedente — sembrano una verifica riuscita; controllare sempre il timestamp e il log

    provino-morto-lascia-gli-scatti-vecchi.md · 12 agosto 2026

  • Uno shader che non compila non si vede — Godot ripiega sul materiale di default e il provino sembra corretto

    shader-rotto-sembra-giusto.md · 1 agosto 2026

  • Un solo prompt di permesso congela TUTTI gli agenti paralleli, non solo quello che l'ha chiesto: in uno sprint non presidiato vale ore di stallo

    prompt-permesso-blocca-tutti-gli-agenti.md · 17 agosto 2026

  • Un Workflow con 10+ agenti Fable in parallelo su file enormi porta la 5h dal 2% al 63% in 25 minuti

    fan-out-di-agenti-fable-brucia-la-5h.md · 22 settembre 2026

  • la stima a occhio della lunghezza in italiano con numeri e path è sistematicamente corta del 5-25%

    commento-jira-900-caratteri-taglio-automatico.md · 17 settembre 2026

  • L'MCP Atlassian ignora fields e manda sempre descrizione intera + tutti i commenti; le letture vanno fatte con tools/jira_leggi.sh

    mcp-jira-fields-non-restringe.md · 21 agosto 2026

  • una riga che sarebbe già vera PRIMA di lanciare il comando è un annuncio, e si cancella.

    CLAUDE.md · 21 agosto 2026

Come si leggeOgni barra è un mese e conta i file nati in quel mese. Ogni citazione porta il file da cui viene e il giorno in cui la regola è stata scritta.

Fontela cartella delle memorie del progetto e il file di istruzioni del repository · scatto del 5 novembre 2026

Il gioco

L'architettura del gioco

Uno schema solo per ciò che tutto questo costruisce: un gioco multiplayer senza un server suo, dove il dispositivo di un giocatore fa da autorità.

Godot 4.7 · GDScript46 moduli globalila città nasce da unseme condivisoHostl'autorità: orologio, meteo,personaggi, eventiClientmandano l'input, ricevono lo statorelay di Epicpacchetti da 1.170byte al massimocambio di host4 moduliServiziEpic Online Servicesaccesso, lobby, relayFirebasepush, inviti, nicknameApps Scripttelemetria; in uscita5 piattaforme · 8 lingue
Godot 4.7 · GDScript46 moduli globalila città nasce da un seme condivisoHostl'autorità: orologio, meteo, personaggi, eventirelay di Epicpacchetti da 1.170 byte al massimoClientmandano l'input, ricevono lo statocambio di host4 moduliServiziEpic Online Servicesaccesso, lobby, relayFirebasepush, inviti, nicknameApps Scripttelemetria; in uscita5 piattaforme · 8 lingue

Come si leggeA sinistra ciò che gira su ogni dispositivo. Al centro chi decide: un dispositivo fa da host e gli altri lo seguono attraverso un relay. A destra i servizi esterni che il gioco chiama.

Fonteil file di progetto del gioco, il suo documento di design del multiplayer e i preset di esportazione · scatto del 5 novembre 2026

Gli strumenti

Il tessuto MCP

Claude Code sta al centro; ogni server è un raggio che arriva a qualcosa fuori dal repository. Un raggio non è sempre la strada migliore: dove un semplice script ha fatto meglio, il raggio lo dice.

  • qui ha vinto lo script
  • ritirato
AtlassianElevenLabsCodexWhatsAppChromeNano BananaPixelLabClaudeCode
AtlassianElevenLabsCodexWhatsAppChromeNano BananaPixelLabClaudeCode
  • Atlassiansingoli commenti e cambi di stato su JiraLa lettura è passata a uno script: il server non sa restringere i campi, e chiedendo un titolo tornavano la descrizione intera e tutti i commenti.
  • ElevenLabseffetti sonori da un prompt scrittoUn file chiamato .mp3 era audio stereo grezzo senza intestazione: ogni risultato si misura prima di usarlo.
  • Codexun secondo parere dentro la conversazioneLotti, gate e review partono da uno script come processo separato: il loro output resta fuori dal contesto di Claude e si legge solo un esito breve.
  • WhatsAppgli avvisi di release ai testerQui ha vinto il server: ha sostituito la guida del client web dentro un browser.
  • Chromele console degli store e i controlli sulla build webGli scatti di questa stessa pagina vengono invece da uno script: le animazioni devono girare in tempo reale per essere fotografate.
  • Nano Bananagenerazione di immagini, solo su banchi di provaNon è mai diventato la strada di produzione degli sprite.
  • PixelLabgenerazione di pixel art, due settimane a luglioRitirato: dalla fine di luglio gli sprite si generano in un posto solo.

Come si leggeOgni raggio è un server. La prima riga dice che cosa ci passa. La seconda, dove c'è, dice che cosa si è imparato: un raggio segnato come battuto da uno script è ancora in uso, ma per meno di quello per cui era stato installato.

Fontela configurazione MCP del progetto e le regole di orchestrazione nel repository · scatto del 5 novembre 2026

Da portare via

Cosa replicare domani mattina

Un kit minimo, in sei voci. Nessuna ha bisogno di questo progetto.

  • Un file di istruzioni che gli agenti leggono a ogni sessione, tenuto abbastanza corto da essere letto intero.
  • Un file per fase del ciclo — ticket, sprint, collaudo, release — aperto solo quando quella fase comincia.
  • Una procedura scritta per ogni punto critico: prima di chiudere un ticket, quando uno torna bocciato, prima di una release.
  • Il tracker letto con gli script, che rendono solo il testo che serve, non con un connettore generico.
  • Un metro della finestra d'uso, letto prima di spendere, con una soglia a cui il lavoro si ferma.
  • Un file di memoria per ogni trappola già pagata: il fatto, perché conta, come si applica.

Ancora aperto

Cosa non torna ancora

Quattro cose vere oggi.

  • Una parte del backend è ancora su Apps Script. La funzione che deve sostituirlo è scritta e pubblicata dal 18 settembre 2026; il passaggio non è stato fatto.
  • 79 ticket su 1.140 non sono chiusi.
  • Il registro dei collaudi si ferma al 3 novembre 2026. Da allora gli esiti vanno nei commenti dei ticket, dove l'autore li legge, e il registro non è stato tenuto.
  • La suite di regressione non ha più spazio. Dura 538 secondi su un tetto di 600: la prossima sonda che entra ne fa uscire una vecchia.