[{"data":1,"prerenderedAt":2652},["ShallowReactive",2],{"docs-pages-en":3,"doc-en-changelog-automator":308},[4,9,15,20,25,30,35,41,52,60,69,77,84,92,96,105,109,117,122,127,132,138,143,148,153,158,163,169,174,179,184,189,194,199,204,209,214,219,224,229,234,239,244,249,254,260,265,269,273,278,283,288,293,298,303],{"path":5,"title":6,"description":7,"order":8,"group":8,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fpermissions","Who can do what","[object Object]",null,{"path":10,"title":11,"description":12,"order":13,"group":14,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Finstallation","Installation","Install CloseYourIt on your own server with one command.",1,"start",{"path":16,"title":17,"description":18,"order":19,"group":14,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fsettings","Settings","Every setting in the .env file, what it does and which ones you must never change.",2,{"path":21,"title":22,"description":23,"order":24,"group":14,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fdatabase","Database","What the database is, what is inside, how long data stays and how much room it takes.",3,{"path":26,"title":27,"description":28,"order":29,"group":14,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fupdates-and-backups","Updates and backups","Update to a new version, back up and restore the database, check the install.",4,{"path":31,"title":32,"description":33,"order":34,"group":14,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Ftroubleshooting","Troubleshooting","What to check when the install, the certificate, email or incoming data do not work.",5,{"path":36,"title":37,"description":38,"order":39,"group":40,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fconnect-your-apps","Connect your apps","Every tool that sends data to CloseYourIt, and what each one collects.",6,"connect",{"path":42,"title":43,"description":44,"order":45,"group":8,"parent":46,"package":47,"note":48,"collects":49,"status":8},"\u002Fdocs\u002Fsdk-ruby","Ruby \u002F Rails","The closeyourit-ruby gem sends errors, logs, slow queries and job metrics from a Rails app.",7,"connect-your-apps","closeyourit-ruby","Errors, logs, slow queries and methods, background jobs.",{"errors":50,"logs":50,"performance":50,"visits":51,"servers":51},"full","none",{"path":53,"title":54,"description":55,"order":56,"group":8,"parent":46,"package":57,"note":58,"collects":59,"status":8},"\u002Fdocs\u002Fsdk-javascript","JavaScript","The @bussolabs\u002Fcloseyourit-js package works in the browser and on Node 20.16 or newer.",8,"@bussolabs\u002Fcloseyourit-js","Browser and Node, framework adapters and database queries from 0.13.0.",{"errors":50,"logs":50,"performance":50,"visits":50,"servers":51},{"path":61,"title":62,"description":63,"order":64,"group":8,"parent":46,"package":65,"note":66,"collects":67,"status":8},"\u002Fdocs\u002Fsdk-dart","Dart \u002F Flutter","The closeyourit package captures the errors of Flutter apps, even when the phone is offline.",9,"closeyourit","Public errors, logs and metrics from 0.9.3.",{"errors":50,"logs":68,"performance":68,"visits":51,"servers":51},"partial",{"path":70,"title":71,"description":72,"order":73,"group":8,"parent":46,"package":65,"note":74,"collects":75,"status":76},"\u002Fdocs\u002Fsdk-python","Python","The closeyourit package sends errors, logs and metrics from server-side Python applications.",10,"Server side. SQLAlchemy; Django query monitoring and FastAPI\u002FStarlette from 0.4.0.",{"errors":50,"logs":50,"performance":68,"visits":51,"servers":51},"pre_alpha",{"path":78,"title":79,"description":80,"order":81,"group":8,"parent":46,"package":79,"note":82,"collects":83,"status":8},"\u002Fdocs\u002Fsdk-sentry","Sentry SDK","Send errors with a compatible Sentry SDK; sessions and crashes have separate profiles.",11,"Compatible errors; sessions and crashes require a verified profile.",{"errors":50,"logs":51,"performance":51,"visits":51,"servers":51},{"path":85,"title":86,"description":87,"order":88,"group":8,"parent":46,"package":89,"note":90,"collects":91,"status":8},"\u002Fdocs\u002Fagent-server","Server agent","A small program on the server that sends the state of the machine every 60 seconds.",12,"closeyourit-agent","CPU, memory, disks, network, containers and services.",{"errors":51,"logs":68,"performance":51,"visits":51,"servers":50},{"path":93,"title":94,"description":95,"order":88,"group":40,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fnuxt","Vue and Nuxt","Connect Nuxt browser errors and Nitro server errors without exposing a server token.",{"path":97,"title":98,"description":99,"order":100,"group":8,"parent":46,"package":101,"note":102,"collects":103,"status":104},"\u002Fdocs\u002Fagent-kubernetes","Kubernetes","A read-only observer of the cluster: one copy per cluster.",13,"closeyourit-kube","Machines, apps and error events of the cluster.",{"errors":51,"logs":51,"performance":51,"visits":51,"servers":50},"coming",{"path":106,"title":107,"description":108,"order":100,"group":40,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fopentelemetry","OpenTelemetry","Send server traces, metrics and logs through the optional OTLP receiver.",{"path":110,"title":111,"description":112,"order":113,"group":8,"parent":46,"package":114,"note":115,"collects":116,"status":8},"\u002Fdocs\u002Fcli","cyi CLI","The closeyourit command, cyi for short: manage projects, errors and tickets from the terminal.",14,"@bussolabs\u002Fcloseyourit-cli","It collects no data: it drives CloseYourIt from the terminal.",{"errors":51,"logs":51,"performance":51,"visits":51,"servers":51},{"path":118,"title":119,"description":120,"order":121,"group":40,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fhttp-api","HTTP API","Send errors, logs, metrics and page views with plain HTTP requests, without an SDK.",15,{"path":123,"title":124,"description":125,"order":126,"group":40,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fgithub-app","GitHub","Connect GitHub repositories to tickets and releases with your own GitHub App.",16,{"path":128,"title":129,"description":130,"order":131,"group":40,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fingest-gateway","Ingest gateway","Keep incoming errors, logs and metrics safe when the app is slow or restarting.",17,{"path":133,"title":134,"description":135,"order":136,"group":137,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fai","AI","Turn on assistant, analysis, dictation and smart search with a CloseYourIt AI key or your own provider.",18,"automation",{"path":139,"title":140,"description":141,"order":142,"group":137,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fautomator","Automator","Let tickets be worked automatically on your own Linux machine, with Claude Code, Codex or both.",19,{"path":144,"title":145,"description":146,"order":147,"group":40,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fstack-coverage","Frameworks and stack coverage","Choose a published SDK or understand the limits of a locally tested integration.",20,{"path":149,"title":150,"description":151,"order":152,"group":40,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fmonitoring","Traces, measurements and sessions","Explore the new signals, compare releases and recover original error locations.",21,{"path":154,"title":155,"description":156,"order":157,"group":40,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fnode-database","Node databases","Monitor slow and repeated queries with pg, mysql2, Drizzle and Prisma PostgreSQL.",22,{"path":159,"title":160,"description":161,"order":162,"group":137,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fclaude-code","Claude Code","CloseYourIt inside Claude Code, in a column next to the conversation with production and your open tickets.",23,{"path":164,"title":165,"description":166,"order":167,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Ftickets","Tickets and ideas","Open and follow tickets on the board, group them into milestones, ask questions and turn voted ideas into work.",30,"use",{"path":170,"title":171,"description":172,"order":173,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Ferrors","Errors","How your apps' errors become single rows, and how to resolve, ignore, merge or turn them into tickets.",31,{"path":175,"title":176,"description":177,"order":178,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fperformance","Performance","Find slow queries and methods, read the problems detected automatically and get an alert when one appears.",32,{"path":180,"title":181,"description":182,"order":183,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Flogs","Logs","Search your apps' messages, follow a request from start to end and link a message to an error or a ticket.",33,{"path":185,"title":186,"description":187,"order":188,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fsecrets","Secrets","Passwords, keys and private files in one place, per project and environment, read by your app without a .env on disk.",34,{"path":190,"title":191,"description":192,"order":193,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fservers","Servers","The state of your machines on one page, with history and alerts when something breaks or fills up.",35,{"path":195,"title":196,"description":197,"order":198,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fuptime","Uptime","Check that your sites answer, keep count of outages and show them to customers on a status page.",36,{"path":200,"title":201,"description":202,"order":203,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fcrons","Scheduled jobs","Notice when a job that should run on its own stops running, or runs and ends badly.",37,{"path":205,"title":206,"description":207,"order":208,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Falerts","Alerts","The rules that create an alert, the notification center and where each person chooses to receive them.",38,{"path":210,"title":211,"description":212,"order":213,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fhelpdesk","Help desk","Visitors of a project's site write to the team with the \"Need help?\" button, and the request lands in the right project.",39,{"path":215,"title":216,"description":217,"order":218,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fanalytics","Site analytics","How many people visit the site, what they look at and where they come from, without cookies.",40,{"path":220,"title":221,"description":222,"order":223,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Freplays","Session replay","Record how people move through the site and watch it back like a video, even next to an error.",41,{"path":225,"title":226,"description":227,"order":228,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Freleases","Releases","The versions running in each environment, bound to GitHub tags, and the errors that come back after a fix.",42,{"path":230,"title":231,"description":232,"order":233,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fvulnerabilities","Vulnerabilities","Known security problems in your projects' libraries, and the languages that no longer get fixes.",43,{"path":235,"title":236,"description":237,"order":238,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fseo","SEO","CloseYourIt visits your sites like a search engine and tells you what keeps your pages from being found.",44,{"path":240,"title":241,"description":242,"order":243,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fknowledge","Knowledge base","Write notes, decisions and guides for your projects, find them by meaning and ask questions with sources.",45,{"path":245,"title":246,"description":247,"order":248,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fagents","AI agents","Which tickets agents take, what they hand you, where you decide and how each machine is measured.",46,{"path":250,"title":251,"description":252,"order":253,"group":14,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog","Versions","Every CloseYourIt system with its latest version, and the notes of each release.",50,{"path":255,"title":256,"description":257,"order":258,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-app","App","Every stable version of App, newest first.",51,"changelog",{"path":261,"title":262,"description":263,"order":264,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-cli","Command line (cyi)","Every stable version of Command line (cyi), newest first.",52,{"path":266,"title":140,"description":267,"order":268,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-automator","Every stable version of Automator, newest first.",53,{"path":270,"title":86,"description":271,"order":272,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-agent-server","Every stable version of Server agent, newest first.",54,{"path":274,"title":275,"description":276,"order":277,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-agent-kubernetes","Kubernetes agent","Every stable version of Kubernetes agent, newest first.",55,{"path":279,"title":280,"description":281,"order":282,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-sdk-javascript","JavaScript SDK","Every stable version of JavaScript SDK, newest first.",56,{"path":284,"title":285,"description":286,"order":287,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-sdk-ruby","Ruby SDK","Every stable version of Ruby SDK, newest first.",57,{"path":289,"title":290,"description":291,"order":292,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-sdk-python","Python SDK","Every stable version of Python SDK, newest first.",58,{"path":294,"title":295,"description":296,"order":297,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-sdk-dart","Dart SDK","Every stable version of Dart SDK, newest first.",59,{"path":299,"title":300,"description":301,"order":302,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-skills","Skills for AI assistants","Every stable version of Skills for AI assistants, newest first.",60,{"path":304,"title":305,"description":306,"order":307,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-site","Website and docs","Every stable version of Website and docs, newest first.",61,{"id":309,"title":140,"body":310,"collects":8,"description":267,"extension":2646,"group":8,"meta":2647,"navigation":2648,"note":8,"order":268,"package":8,"parent":259,"path":266,"seo":2649,"status":8,"stem":2650,"__hash__":2651},"docs_en\u002Fdocs\u002Fchangelog-automator.md",{"type":311,"value":312,"toc":2555},"minimark",[313,317,322,328,344,348,353,370,374,379,405,409,435,439,459,463,467,475,479,483,491,495,499,518,522,526,538,542,546,558,562,566,574,578,582,598,602,606,614,618,622,630,634,638,666,670,682,686,690,698,702,706,714,718,722,730,734,742,746,750,764,768,772,780,784,789,797,801,805,813,817,825,829,833,841,845,849,857,861,865,873,877,881,889,893,897,905,909,917,921,925,933,937,941,949,953,957,971,975,980,988,992,1020,1024,1028,1036,1040,1048,1052,1066,1070,1074,1092,1096,1100,1108,1112,1116,1130,1134,1142,1146,1150,1158,1162,1242,1246,1250,1258,1262,1270,1274,1278,1286,1290,1304,1308,1312,1348,1352,1357,1365,1369,1373,1381,1385,1393,1397,1405,1409,1413,1421,1425,1433,1437,1441,1449,1453,1457,1465,1469,1473,1481,1485,1489,1503,1507,1511,1519,1523,1527,1535,1539,1543,1551,1555,1559,1567,1571,1575,1589,1593,1601,1605,1619,1623,1627,1635,1639,1643,1651,1655,1659,1679,1683,1691,1695,1699,1707,1711,1731,1735,1743,1747,1751,1759,1763,1767,1781,1785,1789,1809,1813,1817,1831,1835,1839,1847,1851,1855,1869,1873,1877,1885,1889,1893,1901,1905,1909,1917,1921,1925,1933,1937,1941,1949,1953,1957,1977,1981,1985,2011,2015,2019,2027,2031,2035,2043,2047,2051,2059,2062,2066,2070,2078,2082,2086,2100,2104,2108,2120,2124,2128,2140,2144,2148,2164,2168,2172,2188,2192,2207,2211,2225,2229,2233,2245,2249,2257,2261,2265,2310,2314,2318,2330,2334,2338,2343,2347,2351,2360,2364,2368,2373,2377,2381,2386,2390,2394,2435,2439,2443,2451,2455,2463,2467,2471,2483,2487,2491,2496,2500,2504,2509,2513,2516,2520,2540,2544],[314,315,316],"p",{},"Release notes are written in Italian.",[318,319,321],"h2",{"id":320},"_0391-2026-10-07","0.39.1 · 2026-10-07",[314,323,324],{},[325,326,327],"strong",{},"Fixed",[329,330,331,338],"ul",{},[332,333,334,337],"li",{},[325,335,336],{},"Nessun token esce dalla macchina."," Un push o un commento ticket che contiene una credenziale viene bloccato prima di partire, e la shell dell'agente non legge più le cartelle con i token dell'operatore. (CYAU-242)",[332,339,340,343],{},[325,341,342],{},"La rilettura conosce le risposte e il piano."," Una scelta decisa in una risposta di chiarimento o scritta nel piano approvato non viene più respinta come scelta arbitraria. (CYAU-240)",[318,345,347],{"id":346},"_0390-2026-10-06","0.39.0 · 2026-10-06",[314,349,350],{},[325,351,352],{},"Changed",[329,354,355],{},[332,356,357,360,361,365,366,369],{},[325,358,359],{},"Indirizzo predefinito app.closeyour.it."," Senza configurazione, la macchina si collega a ",[362,363,364],"code",{},"https:\u002F\u002Fapp.closeyour.it",". Le macchine già configurate su ",[362,367,368],{},"www.closeyour.it"," continuano a funzionare. (CYRA-996)",[318,371,373],{"id":372},"_0380-2026-10-06","0.38.0 · 2026-10-06",[314,375,376],{},[325,377,378],{},"Added",[329,380,381,387,393,399],{},[332,382,383,386],{},[325,384,385],{},"Una chiave Claude per tutte le macchine."," Se l'organizzazione presta la sua chiave Claude, la macchina la scarica, la tiene nella cassaforte del sistema e la usa solo per Claude. Senza, usa il proprio accesso. (CYAU-224)",[332,388,389,392],{},[325,390,391],{},"OpenCode rilegge il lavoro."," Quando il server lo sceglie come revisore, OpenCode rilegge con il modello e la chiave OpenRouter dell'organizzazione, senza strumenti e con rete solo verso OpenRouter. (CYAU-228)",[332,394,395,398],{},[325,396,397],{},"Codex può fare il lavoro."," Le fasi girano anche con Codex, con le stesse protezioni di Claude. (CYRA-921)",[332,400,401,404],{},[325,402,403],{},"Protezioni configurabili per installazione."," Ogni macchina può dichiarare i propri indirizzi di produzione e i domini ammessi nella sandbox. (CYRA-918)",[314,406,407],{},[325,408,352],{},[329,410,411,417,423,429],{},[332,412,413,416],{},[325,414,415],{},"Il revisore lo sceglie il server."," La macchina rilegge con il motore indicato per lei, anche lo stesso che ha lavorato, in una sessione nuova. (CYAU-226)",[332,418,419,422],{},[325,420,421],{},"Riassunti delle riletture più chiari."," Il revisore chiude con due frasi semplici. (CYRA-1003)",[332,424,425,428],{},[325,426,427],{},"Schede di decisione fino a quattro punti."," (CYRA-998)",[332,430,431,434],{},[325,432,433],{},"Licenza AGPL-3.0."," (CYRA-915)",[314,436,437],{},[325,438,327],{},[329,440,441,447,453],{},[332,442,443,446],{},[325,444,445],{},"Il controllo della macchina verifica tutti e due i revisori."," Codex resta sempre richiesto. (CYAU-222)",[332,448,449,452],{},[325,450,451],{},"Il lavoro già consegnato si rilegge sulle modifiche."," (CYRA-1004)",[332,454,455,458],{},[325,456,457],{},"Codex trovato anche se installato con npm globale."," (CYRA-921)",[318,460,462],{"id":461},"_0370-2026-10-01","0.37.0 · 2026-10-01",[314,464,465],{},[325,466,378],{},[329,468,469],{},[332,470,471,474],{},[325,472,473],{},"L'automazione legge le schede di decisione."," Accetta la scheda breve di piani e consegne e le domande con due o tre risposte proposte. (CYRA-885)",[318,476,478],{"id":477},"_0366-2026-09-29","0.36.6 · 2026-09-29",[314,480,481],{},[325,482,327],{},[329,484,485],{},[332,486,487,490],{},[325,488,489],{},"Una rilettura fallita dice perché."," Sul ticket compaiono il codice d'uscita e l'ultima riga d'errore del revisore, con i segreti oscurati. (CYRA-880)",[318,492,494],{"id":493},"_0365-2026-09-29","0.36.5 · 2026-09-29",[314,496,497],{},[325,498,327],{},[329,500,501,507],{},[332,502,503,506],{},[325,504,505],{},"Un rilascio in produzione riuscito non viene più respinto."," La rilettura chiedeva il ramo, che il risultato di un rilascio non ha. (CYRA-877)",[332,508,509,512,513,517],{},[325,510,511],{},"La Definition of Done del piano arriva leggibile."," L'agente leggeva «",[514,515,516],"span",{},"object Object","» al posto dei criteri e non aveva su cosa verificarsi. (CYRA-877)",[318,519,521],{"id":520},"_0364-2026-09-29","0.36.4 · 2026-09-29",[314,523,524],{},[325,525,327],{},[329,527,528],{},[332,529,530,533,534,537],{},[325,531,532],{},"La rilettura del lavoro parte di nuovo."," Claude e Codex si installano senza permessi di scrittura per il gruppo, che la rilettura rifiutava. ",[362,535,536],{},"doctor"," segnala il problema e il motivo vero di una rilettura mancata arriva fino al ticket. (CYRA-878)",[318,539,541],{"id":540},"_0363-2026-09-29","0.36.3 · 2026-09-29",[314,543,544],{},[325,545,327],{},[329,547,548],{},[332,549,550,553,554,557],{},[325,551,552],{},"La rilettura del lavoro non si ferma più sui file di appoggio delle skill."," La cartella ",[362,555,556],{},".closeyourit\u002Fsession\u002F",", dove la skill tiene i testi della consegna, resta fuori dal controllo dei file non tracciati. (CYRA-877)",[318,559,561],{"id":560},"_0362-2026-09-29","0.36.2 · 2026-09-29",[314,563,564],{},[325,565,327],{},[329,567,568],{},[332,569,570,573],{},[325,571,572],{},"Un rilascio riuscito non viene più respinto."," Staging e produzione consegnano un tag, non una proposta di modifica: l'host non cerca più la proposta su queste due fasi e non le fa rifare. (CYRA-876)",[318,575,577],{"id":576},"_0361-2026-09-29","0.36.1 · 2026-09-29",[314,579,580],{},[325,581,327],{},[329,583,584,590],{},[332,585,586,589],{},[325,587,588],{},"Valutazione e piano leggono il codice di oggi."," Prima di queste due fasi la macchina scarica le novità e avanza la sua copia del repository, senza mai toccare modifiche locali. Prima la copia restava indietro di settimane. (CYRA-873)",[332,591,592,597],{},[325,593,594,596],{},[362,595,536],{}," non dà più un falso «login scaduto»."," Lanciato da una shell senza le credenziali di Claude che riceve il servizio, ora lo dice invece di far rifare un login che funziona. (CYRA-869)",[318,599,601],{"id":600},"_0360-2026-09-27","0.36.0 · 2026-09-27",[314,603,604],{},[325,605,378],{},[329,607,608],{},[332,609,610,613],{},[325,611,612],{},"Il costo di ogni tentativo arriva a CloseYourIt."," Alla consegna la macchina manda quanto è costata la sessione di Claude e con quale modello. Da lì nasce il resoconto settimanale dei costi per fase e per progetto. (CYRA-872)",[318,615,617],{"id":616},"_0351-2026-09-25","0.35.1 · 2026-09-25",[314,619,620],{},[325,621,327],{},[329,623,624],{},[332,625,626,629],{},[325,627,628],{},"Claude viene portato a una versione che conosce Opus 5.5."," La 2.1.274 lo rifiutava: ora la versione fissata è la 2.1.282, e il registro chiama questo errore «modello non disponibile per questa CLI». (CYAU-209)",[318,631,633],{"id":632},"_0350-2026-09-25","0.35.0 · 2026-09-25",[314,635,636],{},[325,637,378],{},[329,639,640,650,656],{},[332,641,642,645,646,649],{},[325,643,644],{},"La macchina prova davvero Claude e Codex prima di chiedere lavoro."," Una richiesta minima ogni ora: se uno dei due non risponde, la macchina non prende ticket e il motivo compare su CloseYourIt. ",[362,647,648],{},"automator doctor"," fa la stessa prova. (CYAU-206)",[332,651,652,655],{},[325,653,654],{},"Dopo una rilettura mancata la macchina si ferma subito se un runtime è rotto."," Al giro dopo riprova Claude e Codex invece di fidarsi della prova dell'ultima ora: al massimo un ticket perso, non una giornata. (CYAU-208)",[332,657,658,661,662,665],{},[325,659,660],{},"Claude e Codex si aggiornano insieme all'automator."," Le loro versioni sono fissate nella release: ",[362,663,664],{},"update"," le installa, le prova e, se qualcosa non va, torna a quelle di prima e lo segnala su CloseYourIt. (CYAU-209)",[314,667,668],{},[325,669,352],{},[329,671,672],{},[332,673,674,677,678,681],{},[325,675,676],{},"Il registro dice perché la rilettura non c'è."," Invece del solo ",[362,679,680],{},"review=unavailable"," la riga porta il motivo, per esempio «codex: autenticazione scaduta o revocata», e lo stesso motivo arriva a CloseYourIt. (CYAU-207)",[318,683,685],{"id":684},"_0340-2026-09-24","0.34.0 · 2026-09-24",[314,687,688],{},[325,689,352],{},[329,691,692],{},[332,693,694,697],{},[325,695,696],{},"Il modello non cambia più da solo."," Il lavoro usa sempre Claude Opus 5.5 e la rilettura di Codex usa sempre GPT-6 Astra. Prima valeva il modello predefinito di ciascuna CLI, che cambiava a ogni loro aggiornamento. Serve Codex 0.156.1 o successivo. (CYAU-203)",[318,699,701],{"id":700},"_0331-2026-09-23","0.33.1 · 2026-09-23",[314,703,704],{},[325,705,327],{},[329,707,708],{},[332,709,710,713],{},[325,711,712],{},"Esce davvero la 0.33.0."," Il suo pacchetto non era stato pubblicato per un errore nel rilascio: questa versione porta le stesse novità.",[318,715,717],{"id":716},"_0330-2026-09-23","0.33.0 · 2026-09-23",[314,719,720],{},[325,721,378],{},[329,723,724],{},[332,725,726,729],{},[325,727,728],{},"La macchina si aggiorna da sola."," Ogni ora controlla se c'è una versione nuova e la installa, ma solo quando non sta lavorando: un lavoro in corso non viene mai interrotto. Se l'aggiornamento non riesce, l'avviso compare su CloseYourIt. (CYAU-202)",[314,731,732],{},[325,733,327],{},[329,735,736],{},[332,737,738,741],{},[325,739,740],{},"I piani non vengono più rifatti per un dettaglio."," Il revisore respinge solo per un requisito scoperto, un rischio su dati o sicurezza, o un risultato fuori formato. Il resto diventa una nota che leggi quando approvi il piano. (CYAU-201)",[318,743,745],{"id":744},"_0323-2026-09-14","0.32.3 · 2026-09-14",[314,747,748],{},[325,749,327],{},[329,751,752,758],{},[332,753,754,757],{},[325,755,756],{},"Nessun comando che scarica codice dalla rete può più bloccare il servizio."," Un server che accettava la connessione e poi taceva fermava tutto, senza limite di tempo. Ora ogni comando ha un tetto e fallisce invece di restare appeso. (CYAU-199)",[332,759,760,763],{},[325,761,762],{},"I controlli automatici tornano a girare su ogni proposta di modifica."," Le verifiche erano ferme e le modifiche passavano senza prova. Ora ogni proposta viene controllata prima di essere unita. (CITM-8)",[318,765,767],{"id":766},"_0322-2026-09-03","0.32.2 · 2026-09-03",[314,769,770],{},[325,771,327],{},[329,773,774],{},[332,775,776,779],{},[325,777,778],{},"Il registro non dice più «esito non letto» dopo ogni consegna riuscita."," La risposta del server\nveniva cercata un livello più in basso di dov'è, quindi non si trovava mai: ogni consegna accettata\nrisultava illeggibile e il controllo «conclusa solo se lo dice il server» non ha mai potuto funzionare.",[318,781,783],{"id":782},"_0321-2026-09-03","0.32.1 · 2026-09-03",[314,785,786],{},[325,787,788],{},"Sicurezza",[329,790,791],{},[332,792,793,796],{},[325,794,795],{},"Chiusa una falla in una libreria di sviluppo."," Il componente che controlla i formati durante le\nprove si appoggiava a una versione che poteva essere ingannata su quale indirizzo stesse leggendo.\nNon arriva mai sulle macchine che lavorano i ticket, ma ora è aggiornato lo stesso.",[318,798,800],{"id":799},"_0320-2026-09-03","0.32.0 · 2026-09-03",[314,802,803],{},[325,804,352],{},[329,806,807],{},[332,808,809,812],{},[325,810,811],{},"Lo stato dei chiarimenti si legge solo dal servizio."," L'host non ricava più dal testo dei commenti se\nserve una risposta: lo chiede al servizio. Se non riesce a chiederlo, il ticket aspetta invece di ripartire\ncome se nessuno avesse chiesto niente.",[314,814,815],{},[325,816,327],{},[329,818,819],{},[332,820,821,824],{},[325,822,823],{},"I risultati di triage e rilascio nel nuovo formato non vengono più scartati."," Con il formato più\nrecente l'host li dichiarava illeggibili e la lavorazione tornava in coda a vuoto. Ora legge tutte\nle fasi, e un motivo di blocco fuori elenco viene fermato prima di consegnare.",[318,826,828],{"id":827},"_0312-2026-09-02","0.31.2 · 2026-09-02",[314,830,831],{},[325,832,327],{},[329,834,835],{},[332,836,837,840],{},[325,838,839],{},"Un risultato scritto male arriva comunque sul ticket."," Quando il modello non rispettava il formato\ndel risultato, la macchina lo scriveva solo nel proprio registro e sul ticket non arrivava niente. Ora\nconsegna un blocco con il motivo, e il ticket lo mostra.",[318,842,844],{"id":843},"_0311-2026-09-02","0.31.1 · 2026-09-02",[314,846,847],{},[325,848,327],{},[329,850,851],{},[332,852,853,856],{},[325,854,855],{},"Il commit nella sessione ha sempre un'identità."," Le sessioni non leggono la configurazione\ngit della macchina, e il commit falliva con «Author identity unknown» a meno che il modello non\nse ne inventasse una. Ora la sessione ha la stessa identità fissa dei comandi git dell'host.",[318,858,860],{"id":859},"_0310-2026-09-01","0.31.0 · 2026-09-01",[314,862,863],{},[325,864,378],{},[329,866,867],{},[332,868,869,872],{},[325,870,871],{},"Il piano può portare un riassunto per chi approva."," Il risultato della pianificazione accetta\nun campo facoltativo con poche frasi in linguaggio semplice; i planner non aggiornati consegnano\ncome prima. Riallineata anche la copia locale del contratto, che era rimasta indietro di uno stato.",[318,874,876],{"id":875},"_0301-2026-08-31","0.30.1 · 2026-08-31",[314,878,879],{},[325,880,327],{},[329,882,883],{},[332,884,885,888],{},[325,886,887],{},"Il rilascio non inciampa più sui propri test di consegna."," Le prove della consegna non\ndichiaravano l'elenco delle anomalie, che dalla 0.30.0 è obbligatorio, e il rilascio si fermava\nsui suoi stessi controlli. La 0.30.0 esiste come etichetta ma non è mai stata pubblicata.",[318,890,892],{"id":891},"_0300-2026-08-31","0.30.0 · 2026-08-31",[314,894,895],{},[325,896,327],{},[329,898,899],{},[332,900,901,904],{},[325,902,903],{},"La rilettura funziona anche quando gli strumenti sono installati tramite mise."," Prima l'automator\nseguiva il collegamento fino in fondo e lanciava mise con gli argomenti dello strumento: la rilettura\nmoriva in un decimo di secondo e ogni consegna veniva rifiutata (95 su 96 tentativi). Ora si esegue\nil collegamento col suo nome e si continua a verificare il binario reale.",[314,906,907],{},[325,908,352],{},[329,910,911],{},[332,912,913,916],{},[325,914,915],{},"Una consegna senza la dichiarazione delle anomalie di sicurezza non parte."," L'elenco vuoto resta la\nrisposta legittima («ho guardato, niente da segnalare»); il campo assente — che in trenta giorni di\nprova è stato l'unico caso, 1457 volte su 1457 — ora viene fermato prima di consegnare, quando\nl'agente può ancora rimediare.",[318,918,920],{"id":919},"_0292-2026-08-30","0.29.2 · 2026-08-30",[314,922,923],{},[325,924,327],{},[329,926,927],{},[332,928,929,932],{},[325,930,931],{},"Un lavoro che conclude «non c'è codice da scrivere» viene consegnato invece che rifiutato."," Prima gli si\nchiedeva comunque di far rileggere delle modifiche che non esistono, la rilettura falliva e il giudizio —\ncorretto — non arrivava mai. Vale anche per il lavoro già consegnato da una sessione precedente. Chi ha\nscritto codice davvero passa ancora dalla rilettura piena.",[318,934,936],{"id":935},"_0291-2026-08-30","0.29.1 · 2026-08-30",[314,938,939],{},[325,940,327],{},[329,942,943],{},[332,944,945,948],{},[325,946,947],{},"Un risultato rifiutato finisce nel registro per intero."," Prima se ne conservavano solo l'inizio e la\nfine, e il centro — dove sta il resoconto del lavoro — veniva buttato: proprio la parte che spiega\nperché è stato rifiutato. Il tetto contro gli output enormi resta.",[318,950,952],{"id":951},"_0290-2026-08-28","0.29.0 · 2026-08-28",[314,954,955],{},[325,956,378],{},[329,958,959,965],{},[332,960,961,964],{},[325,962,963],{},"Chi pianifica può dire che il lavoro era già fatto."," Il risultato della pianificazione accetta l'esito\n«già fatto», con il riassunto e almeno un file che lo prova: il server chiude il ticket senza che nessuno\ndebba approvare un piano per un lavoro che esiste già. Resta distinto da «già consegnato», che dice invece\nche una sessione precedente aveva aperto la proposta.",[332,966,967,970],{},[325,968,969],{},"La rilettura incrociata sa cosa chiedere a quell'esito."," Senza un criterio suo, chi rilegge cercherebbe\nun piano che per contratto non esiste e boccerebbe un risultato sano — e un risultato bocciato non viene\napplicato, quindi il ticket tornerebbe in coda a farsi ripianificare all'infinito. Al reviewer si chiede\ninvece di pretendere prove puntuali: è l'unico esito che chiude un ticket.",[318,972,974],{"id":973},"_0280-2026-08-25","0.28.0 · 2026-08-25",[314,976,977],{},[325,978,979],{},"Removed",[329,981,982],{},[332,983,984,987],{},[325,985,986],{},"Automator ora gira soltanto su Linux."," Rimossi LaunchAgent, Keychain, sandbox e updater specifici Apple,\ninsieme alla matrice macOS della release. Bootstrap, servizio, daemon, registrazione host e heartbeat rifiutano\nqualunque altro sistema prima di eseguire lavoro.",[314,989,990],{},[325,991,352],{},[329,993,994,1000,1006],{},[332,995,996,999],{},[325,997,998],{},"Piani, consegne ed errori arrivano come un pacchetto leggibile."," Planner e Autopilot conservano interventi, prove per criterio, rilievi della revisione e azione richiesta in caso di blocco. Il vecchio formato resta accettato durante il passaggio.",[332,1001,1002,1005],{},[325,1003,1004],{},"I prerequisiti del worker sono un contratto verificato."," Installazione, doctor e gate di pubblicazione\nrichiedono systemd ≥254 con user manager, cgroup v2, bubblewrap e Secret Service raggiungibile. Ticket e azioni\nskill richiedono sempre containment forte e non degradano più al solo process group.",[332,1007,1008,1019],{},[325,1009,1010,1011,1014,1015,1018],{},"Pacchetto e documentazione dichiarano Linux ",[362,1012,1013],{},"x64","\u002F",[362,1016,1017],{},"arm64","."," Lo smoke di release usa un unico artifact su\nrunner Linux e resta obbligatorio prima della pubblicazione.",[318,1021,1023],{"id":1022},"_0270-2026-08-24","0.27.0 · 2026-08-24",[314,1025,1026],{},[325,1027,979],{},[329,1029,1030],{},[332,1031,1032,1035],{},[325,1033,1034],{},"Via la scelta automatica fra i due motori, e i calcoli che nessuno leggeva più."," La macchina classificava il ticket, decideva se spezzarlo e sceglieva da sé quale motore usarlo: tre decisioni che ormai prende il sistema centrale, che le pubblica insieme all'incarico. Restavano lì a girare a ogni ticket senza che il risultato finisse da nessuna parte. Tolte, insieme ai tre comandi da riga di comando che le esponevano: quasi tremila righe in meno e nessuna funzione persa.",[314,1037,1038],{},[325,1039,327],{},[329,1041,1042],{},[332,1043,1044,1047],{},[325,1045,1046],{},"Due lavorazioni sullo stesso progetto non si pestano più i dati di prova."," Giravano le prove sugli stessi database: la seconda trovava le tabelle della prima e la suite cadeva per un motivo che col ticket non c'entrava niente. Adesso ogni lavorazione porta con sé uno spazio dati suo, ricavato dal codice del ticket, sia nella sessione che lavora sia nei controlli di qualità.",[314,1049,1050],{},[325,1051,352],{},[329,1053,1054,1060],{},[332,1055,1056,1059],{},[325,1057,1058],{},"Lo stato di una domanda in attesa si chiede al sistema, non alla discussione."," La macchina leggeva un marcatore nascosto in fondo ai commenti e provava a indovinare: bastava che fosse il sistema stesso a scriverci una riga qualsiasi perché venisse scambiata per una risposta, e il ticket ripartisse senza che avesse risposto nessuno. Adesso lo chiede a chi lo sa. La lettura dei commenti resta come ripiego e scatta solo se il comando non esiste; se lo stato non si riesce a leggere la macchina lascia il ticket dov'è e riprova più tardi, invece di dichiarare che si può lavorare.",[332,1061,1062,1065],{},[325,1063,1064],{},"Il numero della versione arriva con l'incarico: la macchina non se lo sceglie più."," Prima guardava l'ultimo numero uscito e decideva da sé quale cifra cambiare, e due lavorazioni partite vicine potevano scegliere lo stesso nome. Adesso il numero lo assegna il sistema quando consegna il lavoro e la macchina lo riceve insieme al piano approvato: un numero fuori forma viene scartato invece di essere usato lo stesso.",[318,1067,1069],{"id":1068},"_0260-2026-08-22","0.26.0 · 2026-08-22",[314,1071,1072],{},[325,1073,352],{},[329,1075,1076,1086],{},[332,1077,1078,1081,1082,1085],{},[325,1079,1080],{},"La macchina dichiara l'impronta del codice che ha davvero in mano."," Finendo un lavoro diceva «il lavoro è qui» e allegava un indirizzo, e nessuno controllava che dietro quell'indirizzo ci fosse proprio il codice appena scritto. Capita che la macchina scriva, salvi, e la spedizione verso GitHub non riesca fino in fondo: l'indirizzo esiste, la pagina si apre, i controlli automatici sono verdi — ma mostrano il lavoro com'era prima dell'ultimo pezzo, e chi approva non ha modo di accorgersene. Ora la consegna porta anche l'impronta esatta del codice, ",[325,1083,1084],{},"misurata"," sulla copia di lavoro del ticket con una lettura diretta e non scritta a parole dall'agente. Si misura sulla copia di lavoro del TICKET, mai sulla cartella da cui gira il servizio: quella con il lavoro non c'entra niente. Quando non si può misurare, il campo non c'è: una sigla sbagliata è peggio di una sigla assente, perché passerebbe i controlli.",[332,1087,1088,1091],{},[325,1089,1090],{},"La macchina riceve il vincolo deciso da una persona, e senza quello non parte."," Quando approvi un piano decidi due cose: dove può nascere il lavoro e qual è la prova che dirà «finito». Nessuna delle due arrivava alla macchina: riceveva il piano scritto a parole e il testo del ticket, e da lì deduceva da sé dove aprire la proposta di modifica, da quale punto partire e quando dirsi finita. Se sbagliava posto nessuno se ne accorgeva fino alla consegna — lì il lavoro veniva rifiutato, ma il giro era già stato pagato per intero: analisi, scrittura del codice, proposta aperta. Ora quelle decisioni arrivano nella parte del messaggio che la macchina è obbligata a rispettare, scritte come un limite («puoi produrre solo questo, qualunque altra cosa verrà rifiutata») e mai come un ordine su cosa fare; e la prova le è data come «osservala e riporta le coordinate», non come «dichiara l'esito», perché chi esegue non è chi giudica. Non le può cambiare chi scrive il ticket e non le può scegliere la macchina: arrivano con la forma controllata carattere per carattere, e un pezzo fuori forma fa cadere il vincolo intero invece di essere ripulito e usato lo stesso. Se il vincolo non arriva, la lavorazione non parte affatto: il ticket torna nella coda con scritto quale pezzo manca, e non dichiara di aspettare una tua decisione — non c'è niente da decidere, manca un dato. Le fasi che leggono soltanto (l'analisi iniziale e la stesura del piano) restano come prima: non toccano il codice e un vincolo non ce l'hanno.",[318,1093,1095],{"id":1094},"_0250-2026-08-21","0.25.0 · 2026-08-21",[314,1097,1098],{},[325,1099,327],{},[329,1101,1102],{},[332,1103,1104,1107],{},[325,1105,1106],{},"Chi rilegge il lavoro della macchina adesso guarda il codice, e dice quale codice ha guardato."," Prima che un lavoro arrivi davanti a chi approva, un secondo assistente lo rilegge. Ma quello che rileggeva riceveva soltanto il rapporto scritto dal primo: poche righe di testo, nessuna riga di programma — e il suo era il giudizio che arrivava al sistema e decideva se il lavoro andava avanti. Sbagliava in tutte e due le direzioni: un lavoro sbagliato poteva passare perché il rapporto era scritto bene, e un lavoro sano veniva respinto perché il rapporto era scarno. Ora, sulla fase che scrive il programma, a rileggere è chi apre davvero le modifiche, e il suo giudizio parte accompagnato dall'impronta esatta di ciò che ha letto: se qualcosa tocca il lavoro dopo quella lettura l'impronta non torna e la consegna non passa per buona. Sulle due fasi che uniscono e rilasciano resta la lettura del rapporto, ma non le si chiede più di pretendere «le prove eseguite e i file toccati»: quelle fasi non scrivono programma e non eseguono prove, e il lavoro veniva respinto per prove che non poteva portare — così il rilascio in produzione non partiva. Le si chiede invece quello che un rilascio può davvero mostrare: quale versione, quale punto del programma, quale ramo. Quanto a fondo rileggere non lo sceglie più la macchina: glielo dice il sistema quando le assegna il lavoro, e la macchina lo dichiara su ogni consegna. Una rilettura che non si è potuta fare non ferma più la lavorazione in casa: parte lo stesso dicendo che non c'era, e a decidere è il sistema.",[318,1109,1111],{"id":1110},"_0240-2026-08-21","0.24.0 · 2026-08-21",[314,1113,1114],{},[325,1115,378],{},[329,1117,1118,1124],{},[332,1119,1120,1123],{},[325,1121,1122],{},"La macchina conosce la casella delle anomalie di sicurezza, e la controlla prima di consegnare."," Chi lavora un ticket può segnalare quello che ha notato di storto passando — uno script che va a leggere le password salvate, una chiave d'accesso dentro un indirizzo — e chi approva lo vede in cima al ticket. Finora quella casella non esisteva da questa parte: qualunque cosa ci finisse dentro partiva verso il sistema centrale senza che nessuno la guardasse. Ora la forma si controlla qui, che è la prima barriera: se è sbagliata la consegna non parte, e chi ha lavorato può ancora rimediare invece di scoprirlo a lavoro consegnato. Un elenco vuoto è ammesso di proposito ed è una risposta — «ho guardato e non ho trovato niente» — diversa dal non dire niente. La gravità resta una parola libera: chiuderla in un elenco farebbe perdere l'intera consegna per un termine inventato.",[332,1125,1126,1129],{},[325,1127,1128],{},"Un rilascio che non dice su quale codice è stato fatto non parte più dalla macchina."," Il resoconto scriveva solo il numero della versione: «rilasciato v1.4.0», mai su quale fotografia di codice. Fra il momento in cui il lavoro viene approvato e quello in cui parte il rilascio possono passare ore, e nel frattempo il codice può cambiare: senza quella riga nessuno può tornare indietro a controllare che ciò che è uscito sia ciò che era stato guardato, e resta la parola della macchina. Ora la macchina se ne accorge da sé, prima di spedire il resoconto, così chi ha rilasciato lo scopre subito invece che a rilascio già fatto. Un caso resta com'era, ed è voluto: quando il rilascio si ferma, il resoconto viene accettato senza numero e senza sigla, perché lì conta il motivo.",[314,1131,1132],{},[325,1133,352],{},[329,1135,1136],{},[332,1137,1138,1141],{},[325,1139,1140],{},"Davanti a un «no» della rilettura, la macchina non rifà più il lavoro da sola."," Quando finisce un pezzo di lavoro lo consegna al sistema, che prima di accettarlo pretende che un secondo controllo automatico l'abbia riletto e approvato. Se quel controllo chiedeva modifiche, la macchina rifaceva tutto da capo, subito — e quella seconda volta era buttata per intero: il sistema chiude il giro nel momento stesso in cui dice no, quindi la riconsegna si sentiva rispondere che era già registrata. Nel frattempo il sistema aveva già rimesso il ticket in fila, ma non poteva darlo a nessun altro finché la macchina non mollava la presa: il ticket restava fermo per tutto il tempo del secondo lavoro inutile. Ogni «no» costava una sessione intera in più e il tempo di farla, per niente — e non è un caso raro: nella giornata che fece nascere quel comportamento, su 67 sessioni 20 consegne furono rifiutate proprio così. Ora la macchina scrive nel suo registro il no e il motivo, e si ferma. Chi decide se riprovare è il sistema, che è l'unico a tenere il conto vero: rimette il passaggio in fila se c'è ancora margine, e alla seconda bocciatura di fila ferma la lavorazione e chiama una persona. Prima i conti erano due, uno per parte, e non dicevano la stessa cosa. Nessuna schermata cambia: cambia quanto si spende e quanto si aspetta su ogni ticket che riceve un no. C'è un costo, e va detto: il tentativo successivo riparte senza sapere cosa gli era stato contestato — anche prima quel testo si perdeva a ogni riavvio, e farglielo arrivare è un lavoro a parte.",[318,1143,1145],{"id":1144},"_0230-2026-08-21","0.23.0 · 2026-08-21",[314,1147,1148],{},[325,1149,352],{},[329,1151,1152],{},[332,1153,1154,1157],{},[325,1155,1156],{},"Le verifiche complete si fanno una volta sola, sulla proposta esatta che verrà revisionata."," Un progetto\npuò ora dichiarare un quality gate versione 2: il worker esegue i controlli locali rapidi, mentre la suite\ncompleta resta su GitHub Actions. La proposta nasce draft; l’Automator controlla progetto, branch e commit,\naspetta per nome i check obbligatori, avvia la rilettura incrociata e la rende pronta soltanto se tutto è verde\nsullo stesso commit. Un check assente, rosso, troppo lento o illeggibile non viene scambiato per un via libera.\nLa lavorazione locale diventa conclusa solo dopo che il server ha davvero accettato la consegna.",[314,1159,1160],{},[325,1161,327],{},[329,1163,1164,1170,1185,1207,1217,1226,1232],{},[332,1165,1166,1169],{},[325,1167,1168],{},"Un valore che il sistema non conosce viene fermato sulla macchina, non a metà consegna."," Quando una macchina dichiara di non poter andare avanti, dice anche perché: «serve una persona» oppure «non sono riuscito a guardare». Sono due cose diverse e portano a due esiti diversi — la prima ferma il lavoro e chiama qualcuno, la seconda lo rimette in coda e riprova da sola. Il programma sulla macchina quel campo non lo conosceva: qualunque parola ci finisse dentro partiva verso il sistema centrale, che la scartava. Il risultato era un tentativo bruciato per una parola sbagliata, e nessuno che dicesse quale. Ora la macchina conosce le due parole ammesse e si ferma prima di spedire, dicendo cosa ha trovato al posto loro. Nella stessa occasione le tre copie del contratto — sistema centrale, macchina, documentazione — sono tornate identiche una all'altra: il segnalibro che le lega dichiarava un codice che non esisteva in nessuna storia, e nessuno se ne accorgeva perché ogni copia veniva confrontata solo con se stessa.",[332,1171,1172,1175,1176,1179,1180,1184],{},[325,1173,1174],{},"Un indirizzo di proposta che GitHub non potrebbe aver prodotto non passa più."," Quando una macchina finisce un lavoro dice al sistema dove guardare, scrivendo l'indirizzo della proposta di modifica che ha aperto. Di quell'indirizzo si controllava quasi niente: bastava che cominciasse per «https» e finisse con la parola «pull» e un numero. Sono state provate sette forme inventate — una senza il nome del proprietario e del progetto, una con dentro nome utente e password, una col numero zero, una col numero scritto 007, una con la parola «pull» nascosta in mezzo a un percorso più lungo, una con caratteri codificati al posto del nome del progetto, e un sito qualunque che si incolla dentro il proprio indirizzo un vero indirizzo GitHub — e passavano tutte e sette. Ora passa solo la forma che GitHub produce davvero, e soprattutto a giudicare è ",[325,1177,1178],{},"una"," regola. Dentro la macchina ce n'erano due, una severa e una larga, e il sistema centrale usava proprio quella larga: quando due parti giudicano in modo diverso capita che il lavoro venga fatto per intero e poi buttato al momento della consegna, perché una accetta quello che l'altra rifiuta. Non c'è niente di nuovo da vedere e nessun pulsante cambia: è una protezione, e serve a un lavoro che viene dopo — il sistema andrà ad aprire quella proposta con i propri occhi, per leggere il codice esatto e l'esito dei controlli, e se l'indirizzo non ha una forma che si può aprire quel controllo non parte nemmeno. Una cosa va detta chiara, perché è facile fraintenderla: questo non rende l'indirizzo ",[1181,1182,1183],"em",{},"vero",". Un indirizzo scritto benissimo ma di un progetto che non c'entra niente continua a passare, e a fermarlo è un altro lavoro, quello che confronta la proposta con i progetti approvati. Qui si toglie soltanto lo spazio agli indirizzi che GitHub non avrebbe mai potuto produrre. Le installazioni GitHub Enterprise restano servite: nessuna lista di siti ammessi.",[332,1186,1187,1190,1191,1194,1195,1206],{},[325,1188,1189],{},"Il programma che guida la macchina non sposta più lo stato del ticket."," A fine lavoro il ticket finiva su «Da revisionare» per mano di tre attori diversi — il manuale che la macchina segue, il programma installato sulla macchina, e il sistema centrale quando registra la consegna — e nessuno dei tre sapeva degli altri. Sta per entrare una regola che vieta di spostare lo stato dal terminale mentre una lavorazione è in corso, ed è esattamente da lì che lo spostava il programma: il giorno che entra in funzione, ogni consegna di ogni macchina si fermerebbe all'ultimo passo, con il codice già mandato e la proposta già aperta, ma il sistema centrale mai avvisato che il lavoro c'è. La lavorazione resterebbe appesa, dopo qualche ora verrebbe dichiarata abbandonata e il ticket rifatto da capo: ore di lavoro pagate e buttate, su ogni ticket e su ogni macchina. Ora il programma fa solo il suo mestiere — manda il codice, apre la proposta, scrive sul ticket l'indirizzo della proposta — e lo stato lo decide un posto solo. Sparisce con lui un secondo guaio già presente oggi: per spostare lo stato il programma doveva prima indovinare da solo quale fosse lo stato «da revisionare» dell'organizzazione, e pretendeva che ce ne fosse esattamente uno; con due si fermava con un errore, e si fermava ",[325,1192,1193],{},"prima"," di mandare il codice, buttando una sessione già pagata per intero. Chi lancia la consegna a mano deve sapere una cosa: ",[325,1196,1197,1198,1201,1202,1205],{},"il comando ",[362,1199,1200],{},"deliver"," ha perso il parametro ",[362,1203,1204],{},"--review-status-id",", che prima era obbligatorio",", e chi continua a passarlo riceve un errore. Non serve più: era il numero dello stato «da revisionare» che il programma doveva indovinare per poterlo applicare, e ora da qui non lo applica più nessuno. Alla macchina viene inoltre messo un fermo: se l'agente prova a spostare lui lo stato o ad approvare il proprio lavoro, il comando viene rifiutato prima di partire. Restano permesse le cose che deve poter fare — leggere l'elenco degli stati, leggere il ticket, scriverci un commento. Una cosa peggiora, ed è giusto saperlo: lo spostamento fatto dal terminale lasciava una riga nella cronologia, mandava un avviso a chi segue il ticket e faceva muovere la scheda sulla lavagna da sola; quello fatto dal sistema centrale cambia lo stato in silenzio. Il ticket arriva lo stesso in «Da revisionare» e compare lo stesso nella pila delle cose da approvare — quella pila si riempie in base alla consegna, non allo stato — ma l'avviso non parte e la scheda non si muove finché non si ricarica la pagina. È un passo indietro da chiudere sul sistema centrale, non qui.",[332,1208,1209,1212,1213,1216],{},[325,1210,1211],{},"Il rosso torna a voler dire rosso: una lavorazione consegnata e accettata non fa più suonare l'allarme."," Ogni lavorazione automatica che scrive codice avveniva in due tempi. Nel primo la macchina faceva il lavoro seguendo le istruzioni ufficiali, eseguiva le verifiche previste dal progetto, mandava la proposta di modifica e comunicava il risultato al sistema, che lo accettava. Nel secondo faceva un controllo tutto suo — che non partiva nemmeno: la macchina non sa quali verifiche esistano su quel progetto e, invece di dirlo, scriveva nel proprio diario una verifica «fallita» che nessuno aveva eseguito, segnava la lavorazione come bloccata e dichiarava guasto tutto il giro. Il risultato era un battito rosso su ",[325,1214,1215],{},"ogni"," lavorazione, comprese quelle andate benissimo: e quando la spia è accesa sempre, un guasto vero non si distingue più da un falso allarme. Ora quando l'esito della fase è di competenza del sistema, il ciclo locale registra il punto della sessione e chiude: niente secondo controllo, niente rilettura, niente consegna doppia. Nel diario non compare più una verifica fallita che nessuno ha eseguito, ma il fatto vero — su questo progetto quel controllo non si applica.",[332,1218,1219,1222,1223,1225],{},[325,1220,1221],{},"La protezione dei controlli era dichiarata e mai accesa."," La macchina tiene una copia di riferimento delle verifiche da eseguire sul proprio codice, per accorgersi se qualcuno le indebolisce dentro il ramo di lavoro. Quella copia era agganciata a un nome di progetto che non esiste, quindi il confronto non avveniva mai — su nessun progetto, nemmeno su quello che avrebbe dovuto proteggere. Ora è agganciata al nome vero, e il confronto si fa ",[325,1224,1193],{}," che la sessione parta: se i controlli sono stati indeboliti la lavorazione si ferma subito e lo dice, invece di accorgersene a lavoro già consegnato, quando non serve più a niente. Dichiarare i controlli nel ramo resta facoltativo: quello che non si può è indebolirli.",[332,1227,1228,1231],{},[325,1229,1230],{},"Il registro della macchina scrive quello che il sistema ha deciso, non quello che ha risposto la rete."," Quando una macchina finisce un passaggio e consegna il risultato, scriveva nel proprio registro «consegnata, conclusa» solo perché la connessione aveva risposto «ricevuto». La risposta del sistema conteneva già la sua decisione, e la macchina la buttava senza leggerla: nel registro non entrava una parola di quelle che il sistema aveva detto. Oggi le due cose coincidono, ma per fortuna, non per controllo — il sistema chiude il tentativo nello stesso istante in cui accetta la consegna, quindi nessuno se ne accorge. Smetteranno di coincidere il giorno in cui il sistema imparerà a rispondere «accettata, sto ancora guardando», che è la risposta che gli serve appena, prima di dire fatto, andrà ad aprire la proposta di modifica, leggere i controlli e aspettare di vedere il rilascio in piedi. Quel giorno la macchina avrebbe continuato a scrivere la riga verde, e chi apre il registro per capire perché una lavorazione è ferma ci avrebbe trovato scritto che è andata a posto — cercando il guasto dalla parte sbagliata. Ora il registro ha tre righe possibili: «conclusa» solo quando è il sistema a dirlo con le sue parole, «accettata, esito non ancora deciso» in tutti gli altri casi, e «consegnata, esito non letto» quando la risposta arriva ma non è leggibile — e quest'ultima dice anche, in chiaro, che non serve nessuna azione da parte di una persona. La regola è al contrario di come verrebbe naturale: si scrive «conclusa» solo davanti a una parola precisa, e qualunque altra risposta — comprese quelle che oggi non esistono ancora — finisce fra le non concluse.",[332,1233,1234,1237,1238,1241],{},[325,1235,1236],{},"Una macchina rimasta indietro non prende più lavoro, e dice quale manuale sta eseguendo."," Le macchine seguono un manuale di istruzioni, e il server dichiara quale versione è quella buona. Finora, prima di prendere in carico un ticket, si verificava soltanto che il manuale ",[1181,1239,1240],{},"ci fosse"," — non che fosse quello giusto. Una macchina con la sincronizzazione rotta in silenzio continuava a lavorare con istruzioni vecchie, consegnava risultati prodotti da quelle, e il server li accettava tutti: il risultato non dice da quale manuale viene. L'unico segnale era una riga nel registro locale della macchina, che nessuno legge. Ora prima di ogni presa in carico la macchina confronta il commit del manuale che esegue con quello pinnato dal server, e si ferma se non combaciano — con tre motivi distinti, perché sono tre guasti diversi da riparare: il manuale è disallineato, non è leggibile, oppure il server non ha risposto. E nel battito che ogni macchina manda al pannello ora c'è anche il manuale, con la sua impronta: prima si vedevano nove strumenti e il manuale non era fra loro, quindi dal pannello nessuno poteva sapere se una macchina stesse lavorando con le istruzioni giuste o con quelle di tre settimane fa.",[318,1243,1245],{"id":1244},"_0220-2026-08-17","0.22.0 · 2026-08-17",[314,1247,1248],{},[325,1249,352],{},[329,1251,1252],{},[332,1253,1254,1257],{},[325,1255,1256],{},"Una macchina lavora più ticket dello stesso progetto insieme",": il numero massimo di lavorazioni in\nparallelo era già impostabile, ma con un progetto solo restava sulla carta — la macchina ne prendeva uno per\ngiro e i posti liberi restavano vuoti, perché due richieste di lavoro vedevano lo stesso ticket in cima e una\nsola lo otteneva. Ora la macchina chiede lavoro in un colpo solo e il sistema le assegna un ticket diverso\nogni volta: i posti si riempiono davvero, anche su una coda sola. Il giro resta comunque limitato al numero di\nposti — la coda non viene svuotata tutta in una volta. Chiedere un ticket ora lo impegna già dall'inizio:\nperciò se non è lavorabile (già chiuso, troppi tentativi) viene lasciato subito invece di restare bloccato\nfino alla scadenza, la coda smette di dare lavoro fino al giro dopo, e una macchina che non è in condizione di\nlavorare non chiede niente, così non impegna ticket che non può portare avanti. Ogni lavorazione ha il proprio\nregistro, col codice del ticket nel nome. Se il collegamento al sistema non c'è, tutto funziona come prima.",[314,1259,1260],{},[325,1261,327],{},[329,1263,1264],{},[332,1265,1266,1269],{},[325,1267,1268],{},"Una cartella di lavoro in uso non viene più ripulita da sotto",": una cartella è stata rimossa mentre ci\ngirava una verifica, e la verifica è morta a metà scrivendo su un percorso sparito. La rimozione era\nlegittima — quel lavoro risultava già integrato — ma «già integrato» non vuol dire «nessuno ci sta lavorando\nadesso». Ora, per tutto il tempo delle verifiche, la cartella porta un cartellino che dice chi la sta usando e\nda quando, con il ticket in lavorazione; il cartellino viene tolto appena le verifiche finiscono, anche se\nfalliscono, sforano il tempo massimo o vengono interrotte. Chi fa pulizia lo legge e salta quelle cartelle. Se\nil programma che lo aveva messo non esiste più, il cartellino non vale: una cartella non resta bloccata per\nsempre dopo un blocco improvviso. Non si perde nulla e non cambia nulla di ciò che le verifiche fanno: il\ncartellino avvisa e basta, e se non può essere scritto le verifiche partono lo stesso.",[318,1271,1273],{"id":1272},"_0210-2026-08-16","0.21.0 · 2026-08-16",[314,1275,1276],{},[325,1277,378],{},[329,1279,1280],{},[332,1281,1282,1285],{},[325,1283,1284],{},"Le macchine dicono quando stanno lavorando su istruzioni vecchie",": quando si pubblica una nuova versione\ndelle istruzioni, il segnalibro che indica alle macchine quale versione usare può restare indietro, e finora\nnulla lo segnalava — la pubblicazione sembrava riuscita e le macchine continuavano con la versione\nprecedente. Ora ogni macchina confronta da sé il segnalibro con le versioni davvero pubblicate: se è rimasto\nindietro lo scrive nei propri registri, nella preparazione guidata e nel comando che sincronizza le\nistruzioni, dicendo quale versione sta usando e quale c'è già. Se il controllo non riesce — per esempio\nquando l'elenco delle versioni non è raggiungibile — lo dice anch'esso, invece di tacere come se fosse tutto\na posto. Il controllo non cambia il lavoro in corso, ha un tempo massimo e viene rifatto più tardi.",[314,1287,1288],{},[325,1289,327],{},[329,1291,1292,1298],{},[332,1293,1294,1297],{},[325,1295,1296],{},"I segreti di produzione non passano più all'automazione",": la regola che vieta di lavorare con i segreti di\nproduzione conosceva solo il vecchio strumento e una sola forma del nuovo. Bastava scrivere il comando in un\naltro modo — il nome lungo del programma, l'ambiente abbreviato, o la richiesta di leggere e scaricare un\nsingolo segreto — e nessuno lo fermava: i valori finivano nell'ambiente di un'automazione che gira senza\nchiedere conferma. Ora il permesso è rovesciato: si passa solo dagli ambienti di lavoro dichiarati, e\nqualunque altra scrittura dell'ambiente viene rifiutata anche quando non si capisce cosa indichi. Dei comandi\nsui segreti resta il solo elenco dei nomi, che non mostra alcun valore: gli altri venivano lasciati passare\nperché non nominano l'ambiente, pur toccando anche quello di produzione. Il controllo vale sia nelle azioni\ndella macchina sia dentro le sessioni degli agenti; la consultazione di errori e registri non cambia.",[332,1299,1300,1303],{},[325,1301,1302],{},"La credenziale del nuovo strumento sparisce dai registri",": la pulizia dei registri conosceva il nome della\nvecchia credenziale e non quello in uso oggi, che poteva quindi restare scritta in chiaro. Ora l'elenco delle\ncredenziali da nascondere è uno solo, condiviso: qualunque credenziale gestita viene oscurata, anche quando\narriva spezzata a metà.",[318,1305,1307],{"id":1306},"_0200-2026-08-15","0.20.0 · 2026-08-15",[314,1309,1310],{},[325,1311,327],{},[329,1313,1314,1324,1338],{},[332,1315,1316,1319,1320,1323],{},[325,1317,1318],{},"Una lavorazione aperta accanto a un progetto non impedisce più di collegarlo",": le cartelle di lavoro\nisolate ora stanno accanto al progetto, non più nascoste dentro. Da lì però sono visibili, e siccome\npuntano allo stesso progetto la macchina ne vedeva due copie: si fermava e chiedeva a mano quale fosse\nquella buona, ogni volta che una lavorazione era in corso. Ora ",[362,1321,1322],{},"automator link"," guarda solo il progetto\nvero e salta le cartelle di lavoro, aperte o no.",[332,1325,1326,1329,1330,1333,1334,1337],{},[325,1327,1328],{},"Un difetto nei controlli iniziali dell'aggiornamento non blocca più l'aggiornamento stesso",": i controlli\nche l'aggiornamento fa prima di partire venivano eseguiti dalla versione già installata. Se il difetto stava\nproprio lì, pubblicare una versione corretta non serviva a niente — la macchina continuava a fallire allo\nstesso modo e bisognava disinstallare e reinstallare a mano. Ora, quando un controllo blocca, il messaggio\ndice anche cosa fare; e con ",[362,1331,1332],{},"automator update --skip-service-preflight"," la versione nuova viene installata\nsenza passare da quei controlli e senza toccare il servizio. Subito dopo basta rilanciare ",[362,1335,1336],{},"automator update",":\ngira già la versione nuova, che rimette in ordine il servizio da sola.",[332,1339,1340,1343,1344,1347],{},[325,1341,1342],{},"Un ticket già risolto a mano non viene più ripreso, e nessun ticket viene ritentato all'infinito",":\nse una persona sistemava un ticket mentre era in coda, la macchina non se ne accorgeva e ricominciava\nda capo ogni volta — in un caso reale ci ha provato 31 volte, spendendo cinque dollari. Ora, prima di\niniziare, guarda se il lavoro risulta già concluso e in quel caso passa oltre. In più tiene il conto\ndei tentativi fatti su ogni ticket: dopo cinque giri consecutivi senza avanzare si ferma, lo scrive\ncome commento sul ticket e chiede che ci guardi una persona. Se invece il lavoro va avanti, il conto\nriparte. Quanto è costato ogni ticket si vede con ",[362,1345,1346],{},"automator activity",", anche dopo che il ticket è\nstato chiuso.",[318,1349,1351],{"id":1350},"_0190-2026-08-14","0.19.0 · 2026-08-14",[314,1353,1354],{},[325,1355,1356],{},"Security",[329,1358,1359],{},[332,1360,1361,1364],{},[325,1362,1363],{},"Chiuse le ultime quattro segnalazioni di sicurezza sulle librerie di appoggio",": restavano aperte\nquattro correzioni note su librerie usate indirettamente — quelle che espandono i nomi dei file,\ngenerano identificativi, preparano i fogli di stile e costruiscono il codice per le prove. Ora sono\ntutte alla versione che le chiude. Nessun cambiamento in quello che la macchina fa.",[318,1366,1368],{"id":1367},"_0180-2026-08-13","0.18.0 · 2026-08-13",[314,1370,1371],{},[325,1372,352],{},[329,1374,1375],{},[332,1376,1377,1380],{},[325,1378,1379],{},"Le domande di chiarimento le pubblica chi le raccoglie",": prima era questa macchina a scrivere il\ncommento con le domande, e il testo che ne usciva veniva rifiutato perché troppo lungo — la domanda\nnon arrivava a destinazione e la lavorazione restava ferma senza che si capisse perché. Ora le\ndomande nascono dove vengono raccolte e questa parte si limita a leggerne lo stato: se una risposta\nè arrivata riprende, altrimenti lascia il posto libero e passa al lavoro successivo.",[314,1382,1383],{},[325,1384,1356],{},[329,1386,1387],{},[332,1388,1389,1392],{},[325,1390,1391],{},"Sei librerie aggiornate per altrettante segnalazioni di sicurezza",": lo strumento con cui girano\nle prove automatiche e cinque librerie usate indirettamente contenevano difetti già noti e già\ncorretti a monte. Ora sono tutte alla versione che li chiude, senza cambiare nulla di quello che\nla macchina fa.",[314,1394,1395],{},[325,1396,327],{},[329,1398,1399],{},[332,1400,1401,1404],{},[325,1402,1403],{},"Le prove automatiche non raccolgono più le copie di lavoro",": quando sul computer restavano\naperte lavorazioni parallele, le loro copie venivano incluse nel giro di prove e il risultato\ndiventava illeggibile. Ora restano fuori. Le prove che leggono e scrivono davvero su disco hanno\nanche più tempo per finire: prima venivano interrotte a metà su una macchina occupata, e un\nfallimento del genere non diceva niente di vero sul codice.",[318,1406,1408],{"id":1407},"_0170-2026-08-10","0.17.0 · 2026-08-10",[314,1410,1411],{},[325,1412,378],{},[329,1414,1415],{},[332,1416,1417,1420],{},[325,1418,1419],{},"Il pianificatore può dire «questo qui non si può fare»",": se un lavoro non è pianificabile sul\nprogetto a cui è arrivato, prima non c'era modo di dirlo — si finiva per produrre un piano\nqualsiasi oppure per restare bloccati in silenzio. Ora quel caso si dichiara apertamente e viene\nregistrato; la revisione incrociata non pretende più un piano da chi ha già detto di non poterlo\nfare, e la coda passa al lavoro successivo invece di insistere sullo stesso.",[314,1422,1423],{},[325,1424,327],{},[329,1426,1427],{},[332,1428,1429,1432],{},[325,1430,1431],{},"Le librerie scaricate non finiscono più dentro il lavoro consegnato",": preparando la copia di\nlavoro, i file prodotti dall'installazione delle librerie venivano raccolti insieme alle modifiche\nvere. Una volta è successo con 15.608 file e 372 MB: la consegna diventava impubblicabile e il\nlavoro vero risultava illeggibile in mezzo al resto. Ora quei file sono esclusi alla radice, per\nqualunque assistente, e un salvataggio comunque troppo grosso viene fermato prima di essere\nregistrato, non dopo.",[318,1434,1436],{"id":1435},"_0167-2026-08-09","0.16.7 · 2026-08-09",[314,1438,1439],{},[325,1440,327],{},[329,1442,1443],{},[332,1444,1445,1448],{},[325,1446,1447],{},"Ogni lavorazione parte dal codice aggiornato",": la copia di lavoro per un ticket nasceva dalla fotografia del progetto che la macchina aveva in casa, e nessuno la aggiornava mai. Su un progetto che rilascia spesso quella copia scivolava indietro da sola — quando ce ne siamo accorti era ferma a quattro giorni e 165 modifiche prima. L'assistente lavorava quindi su una versione vecchia: non vedeva quello che era stato fatto nel frattempo, rischiava di rifarlo, e la sua proposta risultava illeggibile (445 file toccati per un lavoro che ne cambiava 4). Ora la copia viene aggiornata dal progetto vero prima di ogni nuovo lavoro. Se non si riesce a raggiungere il progetto si procede lo stesso con quello che c'è; se invece non si capisce da dove partire, il lavoro si ferma invece di ripartire alla cieca.",[318,1450,1452],{"id":1451},"_0166-2026-08-08","0.16.6 · 2026-08-08",[314,1454,1455],{},[325,1456,327],{},[329,1458,1459],{},[332,1460,1461,1464],{},[325,1462,1463],{},"Un motivo di blocco vuoto non passa più i controlli",": se l'automazione si fermava indicando un motivo fatto di soli spazi, il sito lo accettava ma questo programma lo scartava, e la segnalazione spariva. Ora serve un motivo vero da entrambe le parti.",[318,1466,1468],{"id":1467},"_0165-2026-08-08","0.16.5 · 2026-08-08",[314,1470,1471],{},[325,1472,327],{},[329,1474,1475],{},[332,1476,1477,1480],{},[325,1478,1479],{},"Quando la pubblicazione si ferma, il motivo non va più perso",": il programma scartava il rapporto di chi si era bloccato per un dettaglio di formato — così il motivo restava solo nei log della macchina e sul ticket non compariva nulla. Ora arriva sempre, e un rilascio non può dichiararsi riuscito senza la sua versione.",[318,1482,1484],{"id":1483},"_0164-2026-08-07","0.16.4 · 2026-08-07",[314,1486,1487],{},[325,1488,327],{},[329,1490,1491,1497],{},[332,1492,1493,1496],{},[325,1494,1495],{},"Il lavoro consegnato non viene più scartato",": l'assistente ha il divieto di approvarsi da solo, e molti progetti non hanno una batteria di controlli automatici da lanciare. Il suo resoconto onesto — «controlli non eseguibili, il giudizio lo dà qualcun altro» — veniva però considerato non valido: la consegna non partiva e il lavoro fatto, proposta di modifica compresa, andava perso. Ora quel resoconto è accettato. Un controllo eseguito e fallito continua a fermare la consegna.",[332,1498,1499,1502],{},[325,1500,1501],{},"Chi rilegge il lavoro non chiede più le prove che non possono esistere",": sapeva già di non pretenderle per il lavoro trovato già consegnato, ora lo sa anche quando i controlli non erano eseguibili e il giudizio non era ancora stato scritto.",[318,1504,1506],{"id":1505},"_0163-2026-08-07","0.16.3 · 2026-08-07",[314,1508,1509],{},[325,1510,327],{},[329,1512,1513],{},[332,1514,1515,1518],{},[325,1516,1517],{},"La pubblicazione funziona davvero",": il programma che fornisce le credenziali veniva cercato per nome e non trovato dentro la sessione, quindi la pubblicazione falliva come se le credenziali mancassero. Ora viene indicato per percorso completo. Verificato con una pubblicazione reale.",[318,1520,1522],{"id":1521},"_0162-2026-08-07","0.16.2 · 2026-08-07",[314,1524,1525],{},[325,1526,327],{},[329,1528,1529],{},[332,1530,1531,1534],{},[325,1532,1533],{},"La macchina riesce di nuovo a pubblicare il lavoro",": dopo aver scritto il codice e averlo salvato, la pubblicazione si fermava perché nella sessione mancavano le credenziali — il lavoro restava sulla macchina e il ticket tornava in coda per essere rifatto da capo. Ora il repository su cui lavora sa come autenticarsi, e i rami molto grandi non fanno più fallire l'invio a metà.",[318,1536,1538],{"id":1537},"_0161-2026-08-07","0.16.1 · 2026-08-07",[314,1540,1541],{},[325,1542,327],{},[329,1544,1545],{},[332,1546,1547,1550],{},[325,1548,1549],{},"Il controllo incrociato non boccia più il lavoro già consegnato",": la macchina che riapriva un ticket già completato lo dichiarava correttamente, ma il controllo automatico che rilegge il risultato pretendeva prove di un lavoro che quella sessione non aveva svolto — e lo respingeva. La consegna veniva rifiutata lo stesso.",[318,1552,1554],{"id":1553},"_0160-2026-08-07","0.16.0 · 2026-08-07",[314,1556,1557],{},[325,1558,327],{},[329,1560,1561],{},[332,1562,1563,1566],{},[325,1564,1565],{},"Il lavoro già consegnato non viene più buttato via",": se la macchina riapriva un ticket che aveva già completato e pubblicato in un giro precedente, il suo resoconto non rientrava in nessuna forma prevista e veniva scartato: la lavorazione risultava non consegnata e il ticket tornava in coda per essere rifatto. In una sola giornata è successo a trentadue lavorazioni su trentasei. Ora quel caso ha una risposta propria, che per essere accettata deve mostrare il lavoro già pubblicato.",[318,1568,1570],{"id":1569},"_0150-2026-08-06","0.15.0 · 2026-08-06",[314,1572,1573],{},[325,1574,327],{},[329,1576,1577,1583],{},[332,1578,1579,1582],{},[325,1580,1581],{},"Il piano approvato arriva a chi deve realizzarlo",": approvare un piano non faceva partire nulla. Il piano non è scritto dentro il ticket, e alla macchina che scrive il codice arrivava solo come materiale di contorno, insieme al testo del ticket e senza le condizioni di completamento — così si fermava dicendo che il piano approvato non c'era, su ogni ticket. Ora le arriva per intero insieme all'incarico, condizioni comprese.",[332,1584,1585,1588],{},[325,1586,1587],{},"Il lavoro finito non si perde più al momento di pubblicarlo",": quando la macchina aveva scritto il codice e provava a pubblicare il suo ramo, la pubblicazione riusciva ma veniva riportata come fallita, e la consegna veniva buttata via — con il codice già su GitHub e il ticket fermo come se niente fosse.",[314,1590,1591],{},[325,1592,378],{},[329,1594,1595],{},[332,1596,1597,1600],{},[325,1598,1599],{},"Il pannello dice perché una macchina è ferma",": il motivo dell'ultimo blocco viaggia col battito, così una macchina che non riesce a prendere un ticket non è più indistinguibile da una che non ha niente da fare.",[314,1602,1603],{},[325,1604,1356],{},[329,1606,1607,1613],{},[332,1608,1609,1612],{},[325,1610,1611],{},"I registri non conservano più segreti",": chiavi private, token dei servizi cloud e credenziali che finivano nei registri di lavorazione vengono ora oscurati, e i permessi dei file sono più stretti.",[332,1614,1615,1618],{},[325,1616,1617],{},"Il contenuto del ticket è trattato come dato, non come ordine",": quello che c'è scritto in un ticket o in un suo commento non può più presentarsi alla macchina come l'istruzione da eseguire.",[318,1620,1622],{"id":1621},"_0142-2026-08-06","0.14.2 · 2026-08-06",[314,1624,1625],{},[325,1626,327],{},[329,1628,1629],{},[332,1630,1631,1634],{},[325,1632,1633],{},"La macchina può chiedere su che ramo si trova",": il comando che risponde a questa domanda restava vietato, quindi l'assistente lavorava senza poter confermare di essere sul ramo giusto. Era l'ultimo rimasto fuori dall'elenco delle letture consentite.",[318,1636,1638],{"id":1637},"_0141-2026-08-06","0.14.1 · 2026-08-06",[314,1640,1641],{},[325,1642,327],{},[329,1644,1645],{},[332,1646,1647,1650],{},[325,1648,1649],{},"Vedere le differenze nel codice funziona di nuovo",": un'impostazione dell'ambiente impediva al comando che mostra le modifiche di dare una risposta utile durante le lavorazioni.",[318,1652,1654],{"id":1653},"_0140-2026-08-06","0.14.0 · 2026-08-06",[314,1656,1657],{},[325,1658,327],{},[329,1660,1661,1667,1673],{},[332,1662,1663,1666],{},[325,1664,1665],{},"Le lavorazioni arrivano in fondo invece di ricominciare da capo",": quando una macchina finiva di scrivere il codice ma non poteva dire com'era andata la verifica, il resoconto veniva scartato perché conteneva una risposta non prevista. Il lavoro spariva: nessuna consegna, il ticket tornava in coda come se non fosse mai stato preso e poco dopo veniva ripescato. Il giro si ripeteva per ore sugli stessi ticket. In una sola giornata: ventinove lavorazioni lasciate a metà e nessuna conclusa.",[332,1668,1669,1672],{},[325,1670,1671],{},"La macchina può guardare la storia del codice",": erano ammessi solo due comandi di lettura, quindi non poteva vedere né i cambiamenti fatti né i lavori precedenti — in una singola lavorazione sette comandi innocui sono stati rifiutati. Ora le letture sono permesse, anche più di una di seguito. Restano vietate come prima le scritture, le pubblicazioni e i comandi costruiti per nascondere quello che fanno.",[332,1674,1675,1678],{},[325,1676,1677],{},"Cercare i file per nome funziona",": qualsiasi comando che usasse un asterisco o un punto interrogativo veniva bloccato, anche una semplice ricerca. Ora è permesso nei comandi che si limitano a leggere.",[314,1680,1681],{},[325,1682,352],{},[329,1684,1685],{},[332,1686,1687,1690],{},[325,1688,1689],{},"I progetti Ruby possono installare quello che serve ai controlli",": mancava il permesso di raggiungere l'archivio dei pacchetti Ruby, quindi su quei progetti nessun controllo di qualità poteva essere eseguito e la lavorazione finiva senza aver verificato nulla.",[318,1692,1694],{"id":1693},"_0130-2026-08-06","0.13.0 · 2026-08-06",[314,1696,1697],{},[325,1698,378],{},[329,1700,1701],{},[332,1702,1703,1706],{},[325,1704,1705],{},"Più passi in parallelo, davvero",": la macchina sapeva già lavorare più passi insieme con un tetto configurabile, ma la parte che gira come servizio continuava a farne uno alla volta. Ora la lavorazione in parallelo è attiva anche lì: a parità di macchina la coda scorre più in fretta.",[314,1708,1709],{},[325,1710,327],{},[329,1712,1713,1719,1725],{},[332,1714,1715,1718],{},[325,1716,1717],{},"La macchina viene avviata con il programma giusto",": al momento di far partire l'assistente veniva lanciato il programma sbagliato, che moriva dopo due secondi. Risultato: quindici lavorazioni aperte in un giorno e nessuna arrivata in fondo, senza nemmeno un commento a spiegare perché.",[332,1720,1721,1724],{},[325,1722,1723],{},"Gli assistenti possono lavorare sull'ambiente di prova",": il permesso era già scritto nella loro configurazione sul server, ma il programma sulle macchine lo negava lo stesso, trattando l'ambiente di prova come se fosse quello vero. Ora vale quanto è configurato; la produzione resta vietata come prima.",[332,1726,1727,1730],{},[325,1728,1729],{},"Aggiornare la macchina non chiede più di disinstallare prima",": il comando di aggiornamento si rifiutava di procedere a ogni tentativo, anche subito dopo una reinstallazione pulita. Attenzione: questa correzione arriva col programma nuovo, quindi la prima volta va ancora applicata a mano — dagli aggiornamenti successivi il problema non si presenta più.",[314,1732,1733],{},[325,1734,1356],{},[329,1736,1737],{},[332,1738,1739,1742],{},[325,1740,1741],{},"I comandi vietati non passano più nascondendosi dentro un file",": i tre divieti che proteggono da pubblicazioni in produzione, cancellazioni di dati e riscritture della storia del codice guardavano solo il comando scritto in chiaro. Scrivendo il comando dentro un file e poi eseguendo quel file, il controllo non lo vedeva e il divieto veniva aggirato.",[318,1744,1746],{"id":1745},"_0121-2026-08-06","0.12.1 · 2026-08-06",[314,1748,1749],{},[325,1750,327],{},[329,1752,1753],{},[332,1754,1755,1758],{},[325,1756,1757],{},"Un lavoro bocciato viene corretto, non rifatto da capo",": quando il secondo agente rileggeva il lavoro del primo e chiedeva modifiche, quel lavoro veniva buttato e il ticket tornava in coda. Chi lo riprendeva ripartiva da zero senza sapere cosa non andava, e finiva per rifare la stessa scelta e farsi bocciare di nuovo. In una giornata sono andate perse così venti consegne su sessantasette. Ora i rilievi vengono passati a chi riprova, che corregge invece di ricominciare. Il tetto resta quello di prima: dopo un tentativo e una correzione, se ancora non si convergono, il lavoro si ferma e chiede aiuto a una persona.",[318,1760,1762],{"id":1761},"_0120-2026-08-05","0.12.0 · 2026-08-05",[314,1764,1765],{},[325,1766,378],{},[329,1768,1769,1775],{},[332,1770,1771,1774],{},[325,1772,1773],{},"Le macchine si tengono aggiornate le skill da sole",": le istruzioni con cui gli agenti lavorano i ticket vengono decise dal server, ma nessuno le andava a prendere. Bisognava ricordarsi di scaricarle a mano su ogni macchina, e nessun aggiornamento successivo le rinnovava. Due guai, entrambi silenziosi: una macchina nuova sembrava accesa e in salute e non lavorava nulla, e una macchina vecchia restava per sempre alle istruzioni del primo giorno. Ora ogni macchina controlla da sola, mentre lavora, se le istruzioni che ha sono quelle giuste, e se non lo sono le prende. Il controllo costa quanto una domanda: solo quando la risposta cambia si muove qualcosa, e chi non usa le skill non paga niente.",[332,1776,1777,1780],{},[325,1778,1779],{},"Il cambio di istruzioni non disturba il lavoro in corso",": le istruzioni nuove vengono messe da parte, accanto a quelle vecchie, e solo dopo si passa a usarle. Un agente che sta già lavorando continua con quelle che aveva in mano fino alla fine; il lavoro successivo parte con le nuove. Non c'è un momento in cui qualcuno si trova i fogli cambiati sotto gli occhi a metà.",[318,1782,1784],{"id":1783},"_0111-2026-08-05","0.11.1 · 2026-08-05",[314,1786,1787],{},[325,1788,327],{},[329,1790,1791,1797,1803],{},[332,1792,1793,1796],{},[325,1794,1795],{},"Su Linux il servizio non partiva affatto",": il file con cui il sistema operativo avvia l'automator conteneva un valore scritto in un modo che Linux rifiuta. La macchina risultava installata e configurata, ma il servizio non si avviava mai. Ora il file viene scritto in una forma che il sistema accetta, e le macchine già installate continuano a essere riconosciute come prima.",[332,1798,1799,1802],{},[325,1800,1801],{},"La macchina non riusciva a leggere le proprie credenziali",": le chiavi di accesso sono custodite nel portachiavi del sistema, che si raggiunge solo attraverso un canale che il servizio non riceveva. Il risultato era che ogni richiesta di lavoro falliva e i ticket restavano fermi, con un messaggio che faceva pensare a un problema di rete. Ora il canale viene passato al servizio.",[332,1804,1805,1808],{},[325,1806,1807],{},"Il limite ai riavvii ripetuti non era mai in vigore",": l'impostazione che ferma una macchina dopo alcuni riavvii falliti si trovava nel punto sbagliato del file e veniva ignorata in silenzio. Una macchina in crisi si sarebbe riavviata all'infinito. Ora il limite viene applicato davvero.",[318,1810,1812],{"id":1811},"_0110-2026-08-05","0.11.0 · 2026-08-05",[314,1814,1815],{},[325,1816,378],{},[329,1818,1819,1825],{},[332,1820,1821,1824],{},[325,1822,1823],{},"Le macchine Linux possono finalmente lavorare i ticket",": prima di consentire a un agente di eseguire comandi, l'automator verifica che il sistema operativo sappia davvero impedirgli di scrivere fuori dalla cartella di lavoro. Questa verifica esisteva solo per i Mac: su Linux non c'era, e in mancanza di una prova la macchina si comportava nell'unico modo prudente possibile — rifiutava ogni ticket. Si registrava, dava segni di vita, chiedeva lavoro e poi non ne faceva nessuno, senza che niente sembrasse rotto. Ora la verifica esiste anche per Linux, e una macchina che la supera lavora come un Mac.",[332,1826,1827,1830],{},[325,1828,1829],{},"Una macchina che non sa proteggersi continua a non lavorare",": la verifica non è una formalità. Se lo strumento che costruisce il recinto manca o il sistema si rifiuta di usarlo, l'esito resta negativo e i ticket restano fermi. È voluto: meglio una macchina che non lavora di una che lavora senza rete di sicurezza.",[318,1832,1834],{"id":1833},"_01011-2026-08-04","0.10.11 · 2026-08-04",[314,1836,1837],{},[325,1838,327],{},[329,1840,1841],{},[332,1842,1843,1846],{},[325,1844,1845],{},"Le macchine tornano ad aggiornarsi da sole",": prima di aggiornarsi la macchina controlla che il servizio in esecuzione sia davvero quello configurato — un controllo giusto, ma guardava anche le impostazioni che il sistema operativo aggiunge per conto suo. Una di queste, comparsa con le ultime versioni di macOS, non era prevista: bastava a far fallire ogni aggiornamento con un messaggio che diceva il contrario di quel che stava succedendo. Ora le impostazioni aggiunte dal sistema vengono riconosciute e ignorate; tutto il resto continua a fermare l'aggiornamento come prima.",[318,1848,1850],{"id":1849},"_01010-2026-08-04","0.10.10 · 2026-08-04",[314,1852,1853],{},[325,1854,327],{},[329,1856,1857,1863],{},[332,1858,1859,1862],{},[325,1860,1861],{},"La macchina dice di essere viva anche mentre sta lavorando",": ogni macchina manda un segnale periodico per farsi riconoscere attiva, ma lo mandava soltanto alla fine di un giro di lavoro. Un giro che dura sette minuti la faceva quindi risultare spenta per quattro, e in quei minuti tutti i progetti che chiedevano un ticket si sentivano rispondere di no. Il primo progetto della lista lavorava, gli altri restavano fermi — per giorni, senza che il motivo comparisse da nessuna parte. Ora il segnale parte per conto suo ogni minuto, anche mentre un lavoro e' in corso.",[332,1864,1865,1868],{},[325,1866,1867],{},"Un rifiuto motivato non viene piu' scambiato per un server irraggiungibile",": quando la richiesta di prendere in carico un ticket veniva respinta, il registro diceva \"il server non ha risposto\" anche nei casi in cui il server aveva risposto benissimo, spiegando il motivo. Ora il motivo viene riportato per intero: chi legge distingue una macchina da sistemare da una rete che non va.",[318,1870,1872],{"id":1871},"_0109-2026-08-04","0.10.9 · 2026-08-04",[314,1874,1875],{},[325,1876,327],{},[329,1878,1879],{},[332,1880,1881,1884],{},[325,1882,1883],{},"Quando un progetto non riesce a prendere in carico un ticket, il registro dice perche'",": prima ogni rifiuto usciva con la stessa identica frase, qualunque fosse la causa — il server che risponde di no, il server che non risponde affatto, o una presa in carico intestata a un'altra macchina. Sono problemi con rimedi opposti, ma dal registro erano indistinguibili: quattro progetti sono rimasti fermi cinque giorni senza che si potesse capire cosa controllare. Ora ogni caso ha il suo messaggio. La macchina resta prudente come prima: se la presa in carico non e' certa non lavora il ticket, esattamente come faceva.",[318,1886,1888],{"id":1887},"_0108-2026-08-04","0.10.8 · 2026-08-04",[314,1890,1891],{},[325,1892,327],{},[329,1894,1895],{},[332,1896,1897,1900],{},[325,1898,1899],{},"I piani di lavoro non vengono piu' bocciati a vuoto",": ogni risultato viene riletto da un secondo assistente, ma a quel secondo veniva chiesta sempre la stessa cosa — \"verifica le prove\" — anche per il passo che si limita a scrivere il piano. Un piano descrive lavoro non ancora fatto: prove non ne puo' portare, quindi veniva bocciato ogni volta e rifatto da capo all'infinito. Ora a chi non esegue niente si chiede di giudicare il documento, non prove che non possono esistere; a chi esegue davvero le prove continuano a essere richieste.",[318,1902,1904],{"id":1903},"_0107-2026-07-30","0.10.7 · 2026-07-30",[314,1906,1907],{},[325,1908,327],{},[329,1910,1911],{},[332,1912,1913,1916],{},[325,1914,1915],{},"Il lavoro degli assistenti viene finalmente consegnato",": ogni lavoro viene riletto da un secondo assistente prima di essere consegnato, ma quel secondo assistente veniva avviato nella cartella sbagliata e il sistema lo fermava prima ancora che cominciasse. Cosi' nessun lavoro superava il controllo: la consegna veniva rifiutata anche quando la prima parte era andata benissimo.",[318,1918,1920],{"id":1919},"_0106-2026-07-30","0.10.6 · 2026-07-30",[314,1922,1923],{},[325,1924,327],{},[329,1926,1927],{},[332,1928,1929,1932],{},[325,1930,1931],{},"Gli assistenti riescono di nuovo a parlare con CloseYourIt",": le sessioni girano in un ambiente protetto che lascia uscire solo verso gli indirizzi consentiti. CloseYourIt era fra quelli, ma il comando che ci parla non passava dal varco previsto: falliva come se la rete non ci fosse, e l'assistente non riusciva nemmeno a leggere il ticket su cui doveva lavorare.",[318,1934,1936],{"id":1935},"_0105-2026-07-30","0.10.5 · 2026-07-30",[314,1938,1939],{},[325,1940,1356],{},[329,1942,1943],{},[332,1944,1945,1948],{},[325,1946,1947],{},"La macchina lavora con la propria identità, non con quella di una persona",": ogni macchina ha già un'identità dedicata, che vede solo i progetti che le competono e si revoca in un clic. Ma quell'identità non le arrivava mai: l'unico modo di autenticarla passa da una pagina web, che un'identità di servizio non può usare. Così chi preparava la macchina finiva per collegarla col proprio account personale — e da quel momento la macchina poteva fare tutto quello che può fare quella persona, con il suo nome nella cronologia dei ticket. Ora la macchina usa la credenziale che ha già, quella con cui si registra: le arriva solo quando avvia un assistente, non viene scritta in nessun file di configurazione e non raggiunge i comandi che non ne hanno bisogno. Assistenti",[318,1950,1952],{"id":1951},"_0104-2026-07-30","0.10.4 · 2026-07-30",[314,1954,1955],{},[325,1956,327],{},[329,1958,1959,1965,1971],{},[332,1960,1961,1964],{},[325,1962,1963],{},"Le fasi di lettura possono eseguire i propri comandi",": la prima fase — quella che legge un ticket e lo classifica — girava in una modalità che non le permetteva di eseguire nulla. Doveva impedirle di modificare i file, ma non fa quello: impedisce di eseguire. E quella fase è fatta tutta di comandi, quindi non riusciva a fare nemmeno il primo passo. Ora esegue davvero, e non può comunque modificare niente: non riceve una cartella di lavoro, e ogni scrittura resta bloccata come prima. Il segnale che la macchina e il server si scambiano per riconoscere le fasi è cambiato di conseguenza: server e macchine vanno aggiornati insieme, altrimenti smettono di riconoscersi e nessun lavoro parte.",[332,1966,1967,1970],{},[325,1968,1969],{},"Il risultato di una sessione viene riconosciuto anche se non arriva pettinato",": la macchina sapeva leggere il risultato prodotto dall'assistente solo in una forma precisa — tutto su una riga sola, senza niente attorno. Bastava che l'assistente lo racchiudesse in un riquadro di codice, che ci scrivesse due righe di spiegazione prima, o che lo scrivesse su più righe dopo un avviso del programma, e la macchina non lo riconosceva più: risultato mai consegnato, ticket bloccato. Ora lo trova anche dentro un riquadro, anche preceduto da altro testo, e anche quando il messaggio è impaginato su più righe. Resta il rifiuto di tutto ciò che non rispetta il formato previsto: un output davvero incomprensibile non viene indovinato, viene segnalato.",[332,1972,1973,1976],{},[325,1974,1975],{},"Lo stesso vale per la revisione incrociata",": il verdetto del secondo assistente passava dallo stesso lettore e aveva lo stesso problema. Ora viene riconosciuto nelle stesse forme.",[318,1978,1980],{"id":1979},"_0103-2026-07-30","0.10.3 · 2026-07-30",[314,1982,1983],{},[325,1984,327],{},[329,1986,1987,1993,1999,2005],{},[332,1988,1989,1992],{},[325,1990,1991],{},"Quando il lavoro non viene consegnato, adesso lo dice",": la macchina prendeva un ticket, lavorava per tre minuti e poi, se non riusciva a interpretare il risultato prodotto, si fermava senza mandare niente al server e senza scrivere una riga da nessuna parte. Da fuori sembrava tutto a posto: il resoconto della sessione diceva «riuscito», perché veniva scritto prima che la macchina scoprisse di non avere niente da consegnare, e il ticket restava segnato in lavorazione per sempre. Ora ogni consegna mancata lascia nel registro il motivo, un pezzo del risultato illeggibile per capire com'era fatto, e la dimensione dell'output con l'avviso se era stato tagliato perché troppo lungo. Il resoconto della sessione non dichiara più riuscita una lavorazione che non ha consegnato.",[332,1994,1995,1998],{},[325,1996,1997],{},"Una consegna rifiutata dice come è stata rifiutata",": prima ogni intoppo — credenziale scaduta, macchina revocata, risultato non valido, server non raggiungibile, attesa scaduta — finiva nella stessa risposta muta «non è andata». Sono guasti con rimedi diversi e ora si distinguono: il registro riporta la risposta del server, e un rifiuto nel merito non viene più confuso con un tentativo di cui non si sa l'esito.",[332,2000,2001,2004],{},[325,2002,2003],{},"Il messaggio di errore non manda a cercare nel posto sbagliato",": quando mancava il canale su cui consegnare, o il ramo di riferimento del progetto non era utilizzabile, la macchina segnalava un problema della cartella di lavoro — che invece non era stata nemmeno toccata. Ogni caso ora dichiara la propria causa.",[332,2006,2007,2010],{},[325,2008,2009],{},"Il ciclo di lavoro racconta cosa ha fatto",": a ogni giro il registro elenca le azioni non riuscite col loro codice e il file da aprire, le consegne non riuscite e i passaggi della coda interrotti da un guasto — che prima svanivano senza traccia. Le consegne riuscite restano silenziose, così il registro rimane leggibile.",[318,2012,2014],{"id":2013},"_0102-2026-07-30","0.10.2 · 2026-07-30",[314,2016,2017],{},[325,2018,327],{},[329,2020,2021],{},[332,2022,2023,2026],{},[325,2024,2025],{},"L'assistente parte davvero, invece di morire in due secondi",": quando la macchina lavorava da sola, al momento di avviare l'assistente veniva lanciato il programma che sceglie le versioni degli strumenti — non l'assistente vero. Quello non capiva la richiesta e si chiudeva subito con un errore, quindi ogni ticket preso in carico restava senza risultato: quindici lavorazioni aperte, nessuna conclusa. Succedeva solo col servizio attivo, mai provando a mano dal terminale, ed è per questo che nessun controllo se n'era accorto. Ora il programma giusto viene avviato col proprio nome, e i controlli di sicurezza sul programma da lanciare restano quelli di prima.",[318,2028,2030],{"id":2029},"_0101-2026-07-29","0.10.1 · 2026-07-29",[314,2032,2033],{},[325,2034,327],{},[329,2036,2037],{},[332,2038,2039,2042],{},[325,2040,2041],{},"Un ticket che il sistema vieta non blocca più la coda e non fa suonare l'allarme",": se un ticket fosse arrivato alla macchina contrassegnato come non lavorabile — cosa che non dovrebbe accadere, ma il controllo esiste apposta — la macchina si fermava senza metterlo da parte, e al giro dopo lo ritrovava identico: tutto il progetto sarebbe rimasto fermo dietro di lui, lo stesso inceppamento risolto poche ore fa. Inoltre registrava l'accaduto come un guasto della macchina, facendo diventare rosso il segnale di salute: ma un ticket vietato non è un guasto, è una decisione. Ora il ticket viene messo da parte come tutti gli altri e il segnale resta verde.",[318,2044,2046],{"id":2045},"_0100-2026-07-29","0.10.0 · 2026-07-29",[314,2048,2049],{},[325,2050,352],{},[329,2052,2053],{},[332,2054,2055,2058],{},[325,2056,2057],{},"Decide CloseYourIt quali ticket sono lavorabili, non più la macchina",": ogni ticket porta ora un contrassegno che dice se un agente può lavorarlo, deciso dal sistema e correggibile a mano dalla pagina del ticket. La macchina però continuava a rifare la valutazione per conto suo, con un metodo molto più rozzo — cercava parole sospette nel testo — e finiva per rifiutare ticket che erano stati approvati apposta: nessun ticket è mai stato lavorato. Ora sulla coda comanda il contrassegno: la macchina prende il primo ticket contrassegnato come lavorabile e lo lavora. Continua a farsi la sua idea sul ticket, e la scrive nel registro delle lavorazioni, ma non ha più potere di veto. Se un ticket arriva contrassegnato diversamente da «lavorabile», si ferma e non lo tocca; su un server che non conosce ancora il contrassegno, tutto resta come prima.",[314,2060,2061],{},"Nessun cambiamento per chi usa la macchina col file di configurazione locale invece della coda: lì le valutazioni della macchina restano l'unica difesa e continuano a valere.",[318,2063,2065],{"id":2064},"_095-2026-07-29","0.9.5 · 2026-07-29",[314,2067,2068],{},[325,2069,327],{},[329,2071,2072],{},[332,2073,2074,2077],{},[325,2075,2076],{},"Un'interruzione del servizio centrale non mette più i ticket da parte",": quando la macchina non riusciva a farsi dire quanto lavoro le è concesso — server irraggiungibile, o il suo conteggio giornaliero locale illeggibile — trattava la cosa come un intoppo del ticket e lo metteva in attesa qualche minuto. Ma il ticket non c'entrava nulla: bastava un disservizio di qualche minuto perché decine di ticket finissero da parte, e la coda restava muta anche dopo il ripristino. Ora nessun tipo di limite mette in attesa un ticket: i limiti parlano della macchina e del momento, mai del ticket.",[318,2079,2081],{"id":2080},"_094-2026-07-29","0.9.4 · 2026-07-29",[314,2083,2084],{},[325,2085,327],{},[329,2087,2088,2094],{},[332,2089,2090,2093],{},[325,2091,2092],{},"La richiesta di attesa veniva respinta e non metteva in coda proprio niente",": la macchina chiedeva al server di mettere da parte il ticket senza dichiarare la propria identità, che il server pretende e confronta con quella di chi firma la richiesta. Ogni richiesta finiva rifiutata, quindi il ticket in cima tornava lì al giro dopo esattamente come prima: la correzione della 0.9.3 era, di fatto, spenta. Ora l'identità viaggia nella richiesta, com'è sempre stato per la presa in carico del ticket.",[332,2095,2096,2099],{},[325,2097,2098],{},"Un riavvio non mette più i ticket in attesa",": quando il servizio si sta fermando, il lavoro in partenza viene annullato a metà, e quell'annullamento veniva scambiato per un intoppo del ticket. Risultato: il ticket interrotto dal riavvio restava da parte altri cinque minuti a servizio già ripartito. Un riavvio non dice nulla sul ticket, e ora non produce alcuna attesa.",[318,2101,2103],{"id":2102},"_093-2026-07-29","0.9.3 · 2026-07-29",[314,2105,2106],{},[325,2107,327],{},[329,2109,2110],{},[332,2111,2112,2115,2116,2119],{},[325,2113,2114],{},"Un ticket che non si può lavorare non blocca più tutti gli altri",": quando la macchina prendeva in esame il ticket in cima alla coda e scopriva di non poterlo lavorare — serve un via libera umano, mancano informazioni, il rischio è alto — si fermava e basta. Al giro dopo ritrovava lo stesso ticket in cima, si fermava di nuovo, e così ogni minuto: l'intero progetto restava fermo dietro di lui, anche i ticket lavorabilissimi, e da fuori sembrava soltanto che la macchina non facesse nulla. Ora lo dice al server, che lo mette in attesa per un po' e le passa il successivo; quanto dura l'attesa lo decide il server in base al motivo — più corta per un intoppo tecnico che si risolve da sé, più lunga quando si aspetta la risposta di una persona. La macchina non chiede l'attesa quando è ",[325,2117,2118],{},"lei"," a non poter lavorare (configurazione incompleta, slot occupati, budget esaurito): quelle sono attese che sopravvivrebbero al rimedio e lascerebbero la coda muta proprio dopo averla riparata. Se la richiesta di attesa non arriva a destinazione non cambia nulla: il ticket ricompare al giro dopo, come oggi.",[318,2121,2123],{"id":2122},"_092-2026-07-28","0.9.2 · 2026-07-28",[314,2125,2126],{},[325,2127,327],{},[329,2129,2130],{},[332,2131,2132,2135,2136,2139],{},[325,2133,2134],{},"La macchina si dichiarava pronta mentre non poteva lavorare",": per prendere in carico i ticket serve il pacchetto di istruzioni con cui esegue le fasi, che si scarica a parte e non arriva né con l'installazione né all'avvio del servizio. Senza, la macchina si registra, invia il suo segnale di vita e resta idonea a tutti i controlli — ma al momento di prendere un ticket si ferma, e nessuno lo dice a chi la sta preparando. Ora il controllo di configurazione verifica anche il pacchetto quando la macchina è impostata per lavorare da sola: se manca, lo elenca fra i passi da fare col comando che lo installa, e non dichiara più la macchina pronta. Il controllo guarda come è configurato ",[325,2137,2138],{},"il servizio",", non il terminale da cui lo lanci: erano due cose diverse, e guardare il terminale avrebbe dato «tutto a posto» proprio sulle macchine impostate per lavorare da sole.",[318,2141,2143],{"id":2142},"_091-2026-07-28","0.9.1 · 2026-07-28",[314,2145,2146],{},[325,2147,327],{},[329,2149,2150],{},[332,2151,2152,2155,2156,2159,2160,2163],{},[325,2153,2154],{},"La credenziale della macchina finiva vuota nel portachiavi, e l'installazione diceva che era andata bene",": su macOS il token del service account e quello di Agent Host venivano consegnati a ",[362,2157,2158],{},"security"," sullo standard input, ma quel comando la password da lì non la legge — chiede e basta. Il risultato era una voce salvata ",[325,2161,2162],{},"vuota"," con esito positivo: la macchina risultava installata e registrata, poi non riusciva a reclamare nulla perché la credenziale con cui autenticarsi non c'era. Ora il valore viene passato direttamente al comando e il salvataggio è verificato da un test che scrive e rilegge dal portachiavi vero, non da una sua imitazione.",[318,2165,2167],{"id":2166},"_090-2026-07-28","0.9.0 · 2026-07-28",[314,2169,2170],{},[325,2171,378],{},[329,2173,2174],{},[332,2175,2176,2179,2180,2183,2184,2187],{},[325,2177,2178],{},"La macchina dimostra col kernel che le scritture restano nella cartella di lavoro",": prima di lavorare in autonomia l'host esegue una sonda reale della sandbox di sistema con ",[325,2181,2182],{},"doppia prova"," — dentro il perimetro la scrittura deve riuscire, fuori deve essere ",[325,2185,2186],{},"negata"," e non lasciare il file. Senza la prova positiva una sonda mai eseguita sarebbe indistinguibile da un recinto perfetto (comando fallito e file assente in entrambi i casi). Il profilo viaggia inline, non tocca il disco. Oggi vale su macOS; altrove la macchina non attesta e lo dichiara, invece di dare per buono un confinamento che non ha verificato.",[314,2189,2190],{},[325,2191,352],{},[329,2193,2194],{},[332,2195,2196,2202,2203,2206],{},[325,2197,2198,2201],{},[362,2199,2200],{},"install --skills-enabled"," rifiuta un host che non lo dimostra",": accendere lo skill-mode significa dare Bash alle sessioni, quindi il turn-on viene negato ",[325,2204,2205],{},"prima di installare qualunque cosa"," se il confinamento non è attestato. Lo stesso requisito vale nel preflight della coda: un host non attestato resta in prompt-mode e non reclama ticket. Meglio non installare che lasciare un daemon che si fermerebbe comunque al primo claim senza spiegare perché.",[314,2208,2209],{},[325,2210,327],{},[329,2212,2213,2219],{},[332,2214,2215,2218],{},[325,2216,2217],{},"Una prova non conclusiva non attesta più il confinamento",": un esito nullo della prova negativa — la sonda va in timeout, il comando non parte — veniva letto come «scrittura negata» e faceva passare l'attestazione. Era un fail-open sul controllo che decide se la macchina può lavorare da sola: ora attesta solo un diniego davvero osservato.",[332,2220,2221,2224],{},[325,2222,2223],{},"La raccolta dei test non risale più nei worktree annidati",": il runner includeva anche le copie di lavoro annidate ed eseguiva più suite in parallelo sullo stesso repository, producendo fallimenti che non esistevano nel codice.",[318,2226,2228],{"id":2227},"_080-2026-07-28","0.8.0 · 2026-07-28",[314,2230,2231],{},[325,2232,352],{},[329,2234,2235],{},[332,2236,2237,2240,2241,2244],{},[325,2238,2239],{},"La coda nasce dal manifest, non dal catalogo agenti",": il daemon chiede al backend il manifest dei repository autorizzati per la propria macchina e ne deriva una coda per progetto, invece di scaricare un catalogo di agenti e fare fan-out per agente. Sparisce il sidecar per-agente e il report di run verso il vecchio endpoint. Richiede un backend che esponga ",[362,2242,2243],{},"agent_host\u002Fworkspace_manifest"," (CloseYourIt 0.46.0 o successivo).",[314,2246,2247],{},[325,2248,378],{},[329,2250,2251],{},[332,2252,2253,2256],{},[325,2254,2255],{},"Guidance del progetto prima di chiarezza e claim",": il ticket-worker consuma la guidance strutturata che il backend allega al dettaglio ticket — reference, procedure e regole — e la porta nel contesto come dati, senza trattamenti speciali per chiave. Le procedure ricevute finiscono nell'audit. Se una reference obbligatoria non è consultabile, l'esecuzione si ferma pulita con un commento sul ticket e senza prendere in carico il ticket. Su un backend che non espone la guidance il comportamento resta invariato.",[318,2258,2260],{"id":2259},"_070-2026-07-24","0.7.0 · 2026-07-24",[314,2262,2263],{},[325,2264,352],{},[329,2266,2267,2277,2297],{},[332,2268,2269,2272,2273,2276],{},[325,2270,2271],{},"Modello credenziali \"un service account per macchina\"",": la macchina si registra come Agent Host presentando il token del proprio service account (",[362,2274,2275],{},"cyi_u_",") invece dell'org token condiviso; lo scope di ambienti è deciso alla creazione del service account e la macchina non può ampliarselo.",[332,2278,2279,2282,2283,2286,2287,2290,2291,1014,2294,2296],{},[325,2280,2281],{},"Auth di Claude locale",": il ",[362,2284,2285],{},"claude"," headless usa l'autenticazione locale della macchina (",[362,2288,2289],{},"claude login","\u002FKeychain o API key durevole nell'ambiente del servizio); l'automator non custodisce né inietta più il token di Claude e non lo legge dal vault. La sonda di ",[362,2292,2293],{},"enroll",[362,2295,536],{}," verifica l'auth nell'ambiente equivalente al servizio.",[332,2298,2299,2302,2303,1014,2306,2309],{},[325,2300,2301],{},"Il vault del progetto decade per il minion",": in modalità managed non si leggono più secret statici (",[362,2304,2305],{},"CLAUDE_CODE_OAUTH_TOKEN",[362,2307,2308],{},"CLOSEYOURIT_AUTOMATOR_ORG_TOKEN",") dal vault; l'unica credenziale richiesta è il token del service account nel credential store del sistema operativo.",[318,2311,2313],{"id":2312},"_062-2026-07-24","0.6.2 · 2026-07-24",[314,2315,2316],{},[325,2317,378],{},[329,2319,2320],{},[332,2321,2322,2323,2325,2326,2329],{},"Flag ",[362,2324,2200],{},": accende lo skill-mode del daemon managed iniettando ",[362,2327,2328],{},"AUTOMATOR_SKILLS_ENABLED=true"," nell'unit del servizio (assente = prompt-mode, default invariato).",[318,2331,2333],{"id":2332},"_061-2026-07-23","0.6.1 · 2026-07-23",[314,2335,2336],{},[325,2337,352],{},[329,2339,2340],{},[332,2341,2342],{},"Coda ticket host-first: una coda per progetto con dispatch a un solo claim per tick; eliminato il vecchio fan-out per-agente.",[318,2344,2346],{"id":2345},"_060-2026-07-21","0.6.0 · 2026-07-21",[314,2348,2349],{},[325,2350,378],{},[329,2352,2353],{},[332,2354,2355,2356,2359],{},"Esecuzione dei workflow tipizzati sui contratti reali delle skill + contract ",[362,2357,2358],{},"agent-result"," vendored e verificato lato client.",[318,2361,2363],{"id":2362},"_050-2026-07-17","0.5.0 · 2026-07-17",[314,2365,2366],{},[325,2367,378],{},[329,2369,2370],{},[332,2371,2372],{},"Skill-mode: esecuzione host-first delle fasi tramite bundle di skill risolto e pinnato dal server.",[318,2374,2376],{"id":2375},"_040-2026-07-17","0.4.0 · 2026-07-17",[314,2378,2379],{},[325,2380,352],{},[329,2382,2383],{},[332,2384,2385],{},"Hardening skill-mode: propagazione dei retry finding della review e requisito che il bundle di skill sia presente prima di abilitare lo skill-mode.",[318,2387,2389],{"id":2388},"_030-2026-07-16","0.3.0 · 2026-07-16",[314,2391,2392],{},[325,2393,378],{},[329,2395,2396,2409,2428],{},[332,2397,2398,2399,2402,2403,1014,2405,2408],{},"Comando ",[362,2400,2401],{},"oneclick",": provisioning resumable di una macchina worker in un solo comando (toolchain, autenticazioni, ",[362,2404,664],{},[362,2406,2407],{},"install --managed",", registrazione host e replica dei repository dal manifest del server), con checkpoint per stadio.",[332,2410,2411,2412,2415,2416,2419,2420,2423,2424,2427],{},"Consumo del workspace-manifest del server (",[362,2413,2414],{},"GET \u002Fapi\u002Fv1\u002Fagent_host\u002Fworkspace_manifest",", host-scoped): la macchina scarica la lista dei repository da gestire (path logico + ",[362,2417,2418],{},"owner\u002Frepo"," + branch) e li clona\u002Faggiorna sotto una workspace root, idempotente e mai distruttivo (clone se manca, ",[362,2421,2422],{},"fetch"," + ",[362,2425,2426],{},"pull --ff-only"," altrimenti).",[332,2429,2430,2431,1014,2433,1018],{},"Probe dell'autenticazione Codex in ",[362,2432,2293],{},[362,2434,536],{},[318,2436,2438],{"id":2437},"_020-2026-07-15","0.2.0 · 2026-07-15",[314,2440,2441],{},[325,2442,378],{},[329,2444,2445,2448],{},[332,2446,2447],{},"Esecuzione dei workflow tipizzati di triage, pianificazione e autopilot ricevuti da CloseYourIt, con prompt versionati e output strutturati.",[332,2449,2450],{},"Revisione incrociata obbligatoria tra Claude e Codex prima della consegna di ogni risultato al server.",[314,2452,2453],{},[325,2454,352],{},[329,2456,2457,2460],{},[332,2458,2459],{},"La sincronizzazione remota usa comandi organizzativi autorizzati al posto di comandi liberi definiti sull'agente.",[332,2461,2462],{},"Il daemon consegna gli esiti mentre detiene ancora il lease e interrompe il flusso se host, progetto, comando o snapshot non sono più validi.",[318,2464,2466],{"id":2465},"_013-2026-07-14","0.1.3 · 2026-07-14",[314,2468,2469],{},[325,2470,327],{},[329,2472,2473,2480],{},[332,2474,2475,2476,2479],{},"Packaging hermetico fuori dal checkout: l'artifact include davvero le dipendenze di produzione e il preflight\nnon può più risolverle accidentalmente dal ",[362,2477,2478],{},"node_modules"," del repository.",[332,2481,2482],{},"Diagnostica completa dei gate fresh install, upgrade e rollback nel release smoke.",[318,2484,2486],{"id":2485},"_012-2026-07-14","0.1.2 · 2026-07-14",[314,2488,2489],{},[325,2490,327],{},[329,2492,2493],{},[332,2494,2495],{},"GitHub CLI gestita e versionata con mise, così il job di packaging self-hosted può verificare e riusare in\nsicurezza gli artifact immutabili delle release.",[318,2497,2499],{"id":2498},"_011-2026-07-14","0.1.1 · 2026-07-14",[314,2501,2502],{},[325,2503,327],{},[329,2505,2506],{},[332,2507,2508],{},"Inizializzazione DBus idempotente nel job di release Linux: il test di strong containment usa il manager\nsystemd utente già avviato dal runner self-hosted.",[318,2510,2512],{"id":2511},"_010-2026-07-14","0.1.0 · 2026-07-14",[314,2514,2515],{},"Prima release stable installabile dell'Automator CloseYourIt.",[314,2517,2518],{},[325,2519,378],{},[329,2521,2522,2525,2528,2531,2534,2537],{},[332,2523,2524],{},"Pipeline autonoma completa per ticket: discovery, deduplica, classificazione, routing, split, review incrociata,\nquality gate, consegna e checkpoint recuperabili.",[332,2526,2527],{},"Coordinamento multi-host con registrazione Agent Host revocabile, lease distribuiti, code ticket atomiche,\nrinnovo, recovery e limiti di utilizzo server-side.",[332,2529,2530],{},"Runtime Claude e Codex con guardrail condivisi, policy fail-closed, contenimento dei processi, timeout e\nredazione centralizzata dei secret.",[332,2532,2533],{},"Installazione e aggiornamento managed con artifact verificati, canali stable\u002Fbeta, smoke Linux\u002FmacOS,\nrollback e bootstrap idempotente.",[332,2535,2536],{},"E2E multi-host reale contro CloseYourIt Rails per claim, scadenza, recupero e completamento di un ticket.",[332,2538,2539],{},"CloseYourIt Secrets come fonte dei secret statici; token service account e Agent Host nel Keychain macOS o\nSecret Service Linux, senza credenziali operative nei file locali o nelle unit di servizio.",[314,2541,2542],{},[325,2543,1356],{},[329,2545,2546,2549,2552],{},[332,2547,2548],{},"Nessun secret negli argomenti dei processi, nei log, nei report o nella configurazione managed.",[332,2550,2551],{},"Accesso al vault tramite service account confinabile per progetto ed environment e auditato da CloseYourIt.",[332,2553,2554],{},"TTL dei claim allineato al timeout reale degli agenti per evitare duplicazioni durante lavorazioni lunghe.",{"title":2556,"searchDepth":19,"depth":19,"links":2557},"",[2558,2559,2560,2561,2562,2563,2564,2565,2566,2567,2568,2569,2570,2571,2572,2573,2574,2575,2576,2577,2578,2579,2580,2581,2582,2583,2584,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2601,2602,2603,2604,2605,2606,2607,2608,2609,2610,2611,2612,2613,2614,2615,2616,2617,2618,2619,2620,2621,2622,2623,2624,2625,2626,2627,2628,2629,2630,2631,2632,2633,2634,2635,2636,2637,2638,2639,2640,2641,2642,2643,2644,2645],{"id":320,"depth":19,"text":321},{"id":346,"depth":19,"text":347},{"id":372,"depth":19,"text":373},{"id":461,"depth":19,"text":462},{"id":477,"depth":19,"text":478},{"id":493,"depth":19,"text":494},{"id":520,"depth":19,"text":521},{"id":540,"depth":19,"text":541},{"id":560,"depth":19,"text":561},{"id":576,"depth":19,"text":577},{"id":600,"depth":19,"text":601},{"id":616,"depth":19,"text":617},{"id":632,"depth":19,"text":633},{"id":684,"depth":19,"text":685},{"id":700,"depth":19,"text":701},{"id":716,"depth":19,"text":717},{"id":744,"depth":19,"text":745},{"id":766,"depth":19,"text":767},{"id":782,"depth":19,"text":783},{"id":799,"depth":19,"text":800},{"id":827,"depth":19,"text":828},{"id":843,"depth":19,"text":844},{"id":859,"depth":19,"text":860},{"id":875,"depth":19,"text":876},{"id":891,"depth":19,"text":892},{"id":919,"depth":19,"text":920},{"id":935,"depth":19,"text":936},{"id":951,"depth":19,"text":952},{"id":973,"depth":19,"text":974},{"id":1022,"depth":19,"text":1023},{"id":1068,"depth":19,"text":1069},{"id":1094,"depth":19,"text":1095},{"id":1110,"depth":19,"text":1111},{"id":1144,"depth":19,"text":1145},{"id":1244,"depth":19,"text":1245},{"id":1272,"depth":19,"text":1273},{"id":1306,"depth":19,"text":1307},{"id":1350,"depth":19,"text":1351},{"id":1367,"depth":19,"text":1368},{"id":1407,"depth":19,"text":1408},{"id":1435,"depth":19,"text":1436},{"id":1451,"depth":19,"text":1452},{"id":1467,"depth":19,"text":1468},{"id":1483,"depth":19,"text":1484},{"id":1505,"depth":19,"text":1506},{"id":1521,"depth":19,"text":1522},{"id":1537,"depth":19,"text":1538},{"id":1553,"depth":19,"text":1554},{"id":1569,"depth":19,"text":1570},{"id":1621,"depth":19,"text":1622},{"id":1637,"depth":19,"text":1638},{"id":1653,"depth":19,"text":1654},{"id":1693,"depth":19,"text":1694},{"id":1745,"depth":19,"text":1746},{"id":1761,"depth":19,"text":1762},{"id":1783,"depth":19,"text":1784},{"id":1811,"depth":19,"text":1812},{"id":1833,"depth":19,"text":1834},{"id":1849,"depth":19,"text":1850},{"id":1871,"depth":19,"text":1872},{"id":1887,"depth":19,"text":1888},{"id":1903,"depth":19,"text":1904},{"id":1919,"depth":19,"text":1920},{"id":1935,"depth":19,"text":1936},{"id":1951,"depth":19,"text":1952},{"id":1979,"depth":19,"text":1980},{"id":2013,"depth":19,"text":2014},{"id":2029,"depth":19,"text":2030},{"id":2045,"depth":19,"text":2046},{"id":2064,"depth":19,"text":2065},{"id":2080,"depth":19,"text":2081},{"id":2102,"depth":19,"text":2103},{"id":2122,"depth":19,"text":2123},{"id":2142,"depth":19,"text":2143},{"id":2166,"depth":19,"text":2167},{"id":2227,"depth":19,"text":2228},{"id":2259,"depth":19,"text":2260},{"id":2312,"depth":19,"text":2313},{"id":2332,"depth":19,"text":2333},{"id":2345,"depth":19,"text":2346},{"id":2362,"depth":19,"text":2363},{"id":2375,"depth":19,"text":2376},{"id":2388,"depth":19,"text":2389},{"id":2437,"depth":19,"text":2438},{"id":2465,"depth":19,"text":2466},{"id":2485,"depth":19,"text":2486},{"id":2498,"depth":19,"text":2499},{"id":2511,"depth":19,"text":2512},"md",{},true,{"title":140,"description":267},"docs\u002Fchangelog-automator","7uEMigAY-XD2dhtjZU8PCyOXbLp1pY1FyaWNxNIQtb0",1791469658068]