{"ok":true,"elapsedMinutes":480,"elapsedHours":8,"commitVelocity":{"perHour":2,"featureUpdates":16,"productionDeployments":7,"updatesPerDeployment":2.3},"nextGoal":{"name":"ISO/IEC 42001 + ISO/IEC 27001 certification","status":"in-progress"},"availability":{"portal":{"windowStart":"2026-08-18T16:15:00.000Z","windowMs":897014805,"windowLabel":"10d 9h","windowHours":249.17,"downtimeMs":0,"scheduledDowntimeMs":0,"unscheduledDowntimeMs":0,"uptimeMs":897014805,"availabilityPercent":100,"scheduledDowntimePercent":0,"unscheduledDowntimePercent":0,"calculatedAt":"2026-08-29T01:25:14.805Z"},"tank":{"windowStart":"2026-08-18T16:15:00.000Z","windowMs":897014805,"windowLabel":"10d 9h","windowHours":249.17,"downtimeMs":0,"scheduledDowntimeMs":11401509,"unscheduledDowntimeMs":0,"uptimeMs":897014805,"availabilityPercent":100,"scheduledDowntimePercent":1.2711,"unscheduledDowntimePercent":0,"calculatedAt":"2026-08-29T01:25:14.805Z"},"gateEnabled":false},"license":"MIT","entries":[{"id":"WG-001","at":"00:00","label":"feature","deployment":"D01","title":"Serve the game and its operations pages from one Worker","summary":"Host the game and public operations as one controlled deployment.","evidence":["Worker routing","Durable Object tanks","public operations routes"]},{"id":"WG-002","at":"00:25","label":"feature","deployment":"D01","title":"Run the game simulation on the server","summary":"Run movement, growth, collisions, bots, and state on the server.","evidence":["WebSocket simulation","ocean-named tanks","durable room state"]},{"id":"WG-003","at":"00:55","label":"enhancement","deployment":"D01","title":"Add size-based combat, a dash and rockets","summary":"Large sharks eat smaller sharks; rockets beat every shark.","evidence":["size-based combat","dash ability","rocket dot explosions"]},{"id":"WG-004","at":"01:20","label":"fix","deployment":"D02","title":"Fix frame tearing and input lag","summary":"Tighten rendering and steering for mouse, keyboard, and touch.","evidence":["snapshot interpolation","local prediction","large hit targets"]},{"id":"WG-005","at":"01:50","label":"enhancement","deployment":"D02","title":"Adapt the game UI to any screen and input","summary":"Support desktop, keyboard-only, mouse-only, and mobile play.","evidence":["ability controls","gear menu","responsive HUD"]},{"id":"WG-006","at":"02:15","label":"feature","deployment":"D03","title":"Publish service and tank logs with downloads","summary":"Publish service and tank evidence without internal player identifiers.","evidence":["/logs/","sortable captures","TXT CSV-style downloads"]},{"id":"WG-007","at":"02:40","label":"enhancement","deployment":"D03","title":"Match the debug drawer to the public log format","summary":"Align the selected debug language with public tank logs.","evidence":["desktop debug drawer","language toggle","matching log schema"]},{"id":"WG-008","at":"03:05","label":"feature","deployment":"D03","title":"Map every product action to the usage it bills","summary":"Map product actions to Workers, Durable Objects, D1, and R2 usage.","evidence":["/spend/","binding-aware coverage","free-tier anchors"]},{"id":"WG-009","at":"03:30","label":"enhancement","deployment":"D04","title":"Stop gameplay when spend reaches the limit","summary":"Reset current-spend tracking and stop gameplay at the measured limit.","evidence":["billing reset","$5 threshold","service-level gate"]},{"id":"WG-010","at":"04:00","label":"feature","deployment":"D04","title":"Put maintenance, billing and alerts behind one panel","summary":"Keep maintenance, billing, alerts, and security controls together.","evidence":["/admin/","maintenance toggle","four-character test alerts"]},{"id":"WG-011","at":"04:25","label":"fix","deployment":"D04","title":"Restore gameplay without closing the investigation","summary":"Restoring gameplay ends impact without closing the investigation.","evidence":["immediate lockdown","separate maintenance event","open investigation state"]},{"id":"WG-012","at":"04:50","label":"enhancement","deployment":"D05","title":"Chain every control decision into a signed receipt","summary":"Link control decisions in an append-only SHA-256 receipt chain.","evidence":["linked receipts","incident references","digestible history"]},{"id":"WG-013","at":"05:15","label":"fix","deployment":"D05","title":"Stop tables clipping timestamps and identifiers","summary":"Contain timestamps, subjects, schemas, and identifiers at every viewport.","evidence":["one-line identity cells","controlled detail wrap","contained horizontal scroll"]},{"id":"WG-014","at":"05:35","label":"enhancement","deployment":"D05","title":"Keep the site up while the tank is closed","summary":"Keep the portal online while billing or operators close the Shark Tank.","evidence":["independent delivery path","controlled game access","game-independent status surface"]},{"id":"WG-015","at":"06:30","label":"enhancement","deployment":"D06","title":"Organise the evidence for ISO 27001 and 42001","summary":"Organize evidence toward ISO/IEC 27001 and ISO/IEC 42001.","evidence":["risk and control evidence","incident accountability","independent assessment required"]},{"id":"WG-016","at":"08:00","label":"fix","deployment":"D07","title":"Unify the wording across every page","summary":"Unify Shark Tank language, reason-coded evidence, and the final sales narrative.","evidence":["mission-led roadmap","reason-coded logs","cross-route copy pass"]}],"postDelivery":{"note":"Excluded from every metric above.","hotfixMinutes":688,"entries":[{"id":"WG-017","at":"09:00","label":"bonus","deployment":"D08","title":"Rewrite the outage jokes","summary":"Spent the bonus hour rewriting the outage jokes. Shipped zero business value, on time and under budget.","evidence":["setup-and-punchline downtime copy","tick-driven rotation, no repeats","no measurable business value"]},{"id":"WG-018","at":"09:07","label":"hotfix","deployment":"D09","title":"Require TLS and a token on the operations gate","summary":"Closed in 7 minutes. Operations auth had an unauthenticated fallback when no token was set. It now accepts only the minted token, over TLS, and denies when there is none.","evidence":["TLS required on every route","no unauthenticated fallback path","HSTS on every response","constant-time token comparison"],"reference":{"label":"Security report and control receipts","href":"/status/#incidents"}},{"id":"WG-019","at":"09:17","label":"hotfix","deployment":"D10","title":"Draw the arena boundary that kills on contact","summary":"Closed in 10 minutes. The arena radius killed on contact but was never drawn. It now renders, with a warning band inside it.","evidence":["arena boundary drawn every frame","red proximity band inside the last 14 units","rockets restricted to players"],"reference":{"label":"Reproduced on production before the fix","href":"/logs/"}},{"id":"WG-020","at":"09:55","label":"hotfix","deployment":"D11","title":"Add a thumbstick and ability pads for touch","summary":"Closed in 38 minutes. Tapping to steer spent the dash on every tap. Touch play now steers from a thumbstick, with the abilities on their own pads.","evidence":["floating thumbstick, pads under the other thumb","32 sharks per tank","centre-weighted dot spawns","non-modal respawn card","Feeding Frenzy event"],"reference":{"label":"Controls and layout verified on a phone viewport","href":"/status/#delivery"}},{"id":"WG-021","at":"10:16","label":"hotfix","deployment":"D12","title":"Measure availability from project start, not 24 hours","summary":"Closed in 21 minutes. A rolling 24-hour availability window forgot every incident older than a day. Availability now runs from project start, and the logs page carries the full record.","evidence":["availability measured since project start","labelled lanes, counted legend","every marker links to its record","full 90-day and 24-hour log windows"],"reference":{"label":"Availability bar and legend","href":"/status/#incidents"}},{"id":"WG-022","at":"10:29","label":"hotfix","deployment":"D13","title":"Merge three billing tables into one meter","summary":"Closed in 13 minutes. Three billing tables in three column shapes compared against nothing. One meter now reads every service on a shared axis, and spend is sampled hourly and charted.","evidence":["one four-column meter for every service","monthly limits normalised per day","headroom bar on every row","hourly spend samples charted"],"reference":{"label":"Usage against the free tier","href":"/spend/"}},{"id":"WG-023","at":"10:42","label":"hotfix","deployment":"D14","title":"Chart incidents by cause, start and duration","summary":"Closed in 13 minutes. The incident page redrew the status page's availability bar and said nothing about the incidents themselves. It now charts each incident by cause, start and duration.","evidence":["one lane per incident cause","duration bars, diamonds for point events","inception-to-now axis","every mark links to its record","shared with the roadmap"],"reference":{"label":"Incident chart","href":"/status/#incidents"}},{"id":"WG-024","at":"10:54","label":"hotfix","deployment":"D15","title":"Put taking the game offline behind authentication","summary":"Closed in 12 minutes. The route that disabled the game was gated by two forgeable headers, one of them published in the public API document. Reporting and taking the game down are now separate operations, and only the takedown is authenticated.","evidence":["public intake records, never disables","downtime moved behind operations auth","one open lockdown at a time","accepted reports throttled to one a minute"],"reference":{"label":"Control receipts","href":"/status/#incidents"}},{"id":"WG-025","at":"11:00","label":"hotfix","deployment":"D15","title":"Stop the status page reloading itself","summary":"Closed in 6 minutes. A three-second full-page reload wiped screen-reader position and keyboard focus, with no way to stop it. Figures now update in place, and the refresh can be paused.","evidence":["no full-page reload","values patched into a polite live region","visible pause control","20 origin hits a minute down to 4"],"reference":{"label":"Availability status","href":"/status/"}},{"id":"WG-026","at":"11:04","label":"hotfix","deployment":"D15","title":"Stop dialogs stealing keyboard focus","summary":"Closed in 4 minutes. The in-game dialogs re-armed their focus trap on every re-render, throwing keyboard users back to the Close button twice a minute. The trap now arms once per dialog.","evidence":["focus trap arms once, not per render","Escape and Tab cycling unchanged","fix applies to every dialog"],"reference":{"label":"Play the game","href":"/play/"}},{"id":"WG-027","at":"11:09","label":"hotfix","deployment":"D15","title":"Fix unreadable overlay text in light mode","summary":"Closed in 5 minutes. The light theme turned overlay text near-black but left the panels behind it dark, hiding the score at 1.05:1. On-canvas overlays now keep one palette in both themes.","evidence":["1.05:1 to 18:1 in light mode","dark mode unchanged","covers heads-up display, leaderboard, banner, tools rail","contrast preferences still honoured"],"reference":{"label":"Play the game","href":"/play/"}},{"id":"WG-028","at":"11:23","label":"hotfix","deployment":"D16","title":"Key log throttling to the connection, not a cookie","summary":"Closed in 14 minutes. Public log writes were throttled against the visitor's own cookie, so dropping it bought a fresh allowance every request. Throttling is now keyed to the connection, under a ceiling shared by every visitor at once.","evidence":["rate key taken from the edge, never from the client","global ceiling across every public writer","public rows held to their own retention floor","one storage call per write instead of two"],"reference":{"label":"Public service log","href":"/logs/"}},{"id":"WG-029","at":"11:27","label":"hotfix","deployment":"D16","title":"Check tank capacity when a seat is taken","summary":"Closed in 4 minutes. Seats were counted when a connection opened rather than when it sat down, so one client could open enough connections to claim every seat. Capacity is now checked at the moment a seat is taken.","evidence":["capacity enforced where the seat is claimed","12 connections, 8 seated, 4 refused","human seats unchanged at 8 per tank"],"reference":{"label":"Tank occupancy","href":"/status/"}},{"id":"WG-030","at":"11:36","label":"hotfix","deployment":"D16","title":"Bound the incident record so it cannot block recovery","summary":"Closed in 9 minutes. Incidents were stored as one ever-growing record, written by the same operation that restores service, so a long enough history would have blocked recovery. The record is now bounded, and only resolved incidents are archived.","evidence":["record kept well under the storage limit","active incidents never archived","oldest resolved incidents archived first","every archival recorded with a reason code"],"reference":{"label":"Incident record","href":"/status/#incidents"}},{"id":"WG-031","at":"11:47","label":"hotfix","deployment":"D17","title":"Announce search and paging results once","summary":"Closed in 11 minutes. Searching or paging the evidence tables rewrote the record count in silence, and a paging button that switched itself off dropped the keyboard to the top of the page. The count now speaks the whole result once per settled search, and the buttons keep their place.","evidence":["one announcement per settled query, not per keystroke","match count and page position in a single sentence","paging buttons never take focus away","same fix on the authenticated control panes"],"reference":{"label":"Public evidence","href":"/logs/"}},{"id":"WG-032","at":"11:50","label":"hotfix","deployment":"D17","title":"Stop chart marks swallowing the keyboard","summary":"Closed in 3 minutes. Each mark on the incident and availability charts was a keyboard stop that announced nothing and showed no focus ring. The marks are pointer shortcuts again, and the same records are ordinary links beside each chart.","evidence":["no unnamed stops left in either chart","mouse and touch behaviour unchanged","every mark still reachable from the list below","page copy states the keyboard route"],"reference":{"label":"Incidents","href":"/status/#incidents"}},{"id":"WG-033","at":"11:58","label":"hotfix","deployment":"D17","title":"Give every API endpoint its own heading","summary":"Closed in 8 minutes. The API reference had one heading and thirty-one identically named sections beneath it, so assistive software could not reach a particular endpoint. Every operation is now its own heading, with an index of all thirty-one at the top.","evidence":["one heading per operation, no skipped levels","thirty-one uniquely named sections","operation index links every endpoint","index doubles as the page's skip target"],"reference":{"label":"API reference","href":"/docs/"}},{"id":"WG-034","at":"12:07","label":"hotfix","deployment":"D17","title":"Stop the tank list reading itself aloud","summary":"Closed in 9 minutes. The tank list read every tank's counts aloud every three seconds, because a moving top score rewrote the whole sentence. It now speaks only what changed, and the same pass fixed the light theme's status colours.","evidence":["score movement no longer announces anything","full and open transitions still spoken","light-theme status colours clear 4.5:1 on every surface","Feeding Frenzy small print from 2.2:1 to 5.9:1"],"reference":{"label":"Play the game","href":"/play/"}},{"id":"WG-035","at":"12:31","label":"hotfix","deployment":"D18","title":"Replace the content policy that allowed any script","summary":"Closed in 24 minutes. The pages carried a content security policy that allowed any inline script, which is the one thing such a policy exists to refuse. Each response now mints a single-use token and runs only the scripts carrying it.","evidence":["fresh token per response, never reused","unmarked scripts are inert","the game shell is covered for the first time","forms and embedded objects restricted"],"reference":{"label":"Public evidence","href":"/logs/"}},{"id":"WG-036","at":"12:43","label":"hotfix","deployment":"D18","title":"Strip internal detail from errors and exports","summary":"Closed in 12 minutes. Internal failure messages, build identifiers and exported player names all reached public output, the last of them as text a spreadsheet would run as a formula. All three now say only what a reader needs.","evidence":["failures return a generic message; detail goes to the operator log","build and storage identifiers removed from public output","operator view keeps the full record","exported names cannot become formulas"],"reference":{"label":"Cost and capacity meters","href":"/spend/"}},{"id":"WG-037","at":"13:04","label":"hotfix","deployment":"D18","title":"Verify the receipt chain on every read","summary":"Closed in 21 minutes. This page called the control history tamper-evident, but nothing re-checked it and its head was only ever compared against itself. Every receipt is now re-derived on read, and the verdict is stated on the page.","evidence":["every receipt re-derived from its own contents","an edited receipt is named by number","removing entries is detected by the separate record","verdict shown on the page, not just in the data"],"reference":{"label":"Control receipts","href":"/status/#control-history"}},{"id":"WG-038","at":"13:18","label":"hotfix","deployment":"D18","title":"Strip invisible characters from display names","summary":"Closed in 14 minutes. A display name could carry invisible characters that reversed the leaderboard around it or impersonated another player, and saved players had no ceiling. Those characters are stripped, and new saved entries are bounded without evicting a real player.","evidence":["text-reversing and invisible characters removed","look-alike names collapse to the same text","names in every other script still work","existing players never evicted, at any load"],"reference":{"label":"Play the game","href":"/play/"}},{"id":"WG-039","at":"13:36","label":"hotfix","deployment":"D19","title":"Report today's spend on a readable scale","summary":"Closed in 18 minutes. Every included allowance resets daily, but the cost page reported lifetime totals on a linear bar where 0.008% of an allowance and 8% were the same invisible sliver. It now measures the day and plots every meter on a logarithmic axis.","evidence":["day boundary captured once a day, per meter","today compared against a whole day's allowance","average spend per day and spend today, in dollars","meters on a logarithmic axis with decade ticks","spend trend on round axis values, current value labelled"],"reference":{"label":"Usage against the free tier","href":"/spend/"}},{"id":"WG-040","at":"14:02","label":"hotfix","deployment":"D20","title":"Every page can be navigated without a mouse or a screen","summary":"Closed in 26 minutes. None of these pages let you jump past the navigation, so reaching the content meant tabbing through the same links every visit. Sorted columns showed which way they were sorted with an arrow and nothing else. Tables carried no name, and nothing tied a column heading to the figures beneath it. Following a link to a particular receipt scrolled to it but left the keyboard behind.","evidence":["a skip link on every page","sort direction stated, not only drawn","every table named, every column tied to its figures","a link to a receipt takes the keyboard with it"],"reference":{"label":"Public evidence","href":"/logs/"}},{"id":"WG-041","at":"14:13","label":"hotfix","deployment":"D20","title":"The outage page says there is an outage","summary":"Closed in 11 minutes. When the game was taken down, the page announced itself with a randomised joke in the browser tab and in its only heading — funny, but it never said the game was down. The availability chart had the same fault in another form: the picture carried the downtime, the text beside it did not. Two faint colours were also too close to their background to read comfortably.","evidence":["the outage page states the outage; the joke keeps its place","the chart's description carries the downtime it draws","faint text and links meet the contrast floor","confetti is not built at all when motion is reduced"],"reference":{"label":"Status","href":"/status/"}},{"id":"WG-042","at":"14:32","label":"hotfix","deployment":"D20","title":"The game stops going quiet at the moments that matter","summary":"Closed in 19 minutes. Anything said twice in a row was only said once: a second death at the same score, or a second disconnect, passed in silence. Losing the connection was drawn on screen but never spoken. Turning off the on-screen radar also removed the spoken description of where you are, so a visual setting silenced a non-visual aid. The help shortcut fired from one keypress with no way to switch it off, including while typing.","evidence":["a repeated message is spoken again","losing the connection is announced, not only drawn","spoken position survives turning the radar off","the single-key shortcut can be switched off and ignores typing"],"reference":{"label":"Play the game","href":"/play/"}},{"id":"WG-043","at":"14:41","label":"hotfix","deployment":"D21","title":"Players can use their own name","summary":"Closed in 9 minutes. A name written entirely in Chinese, Cyrillic, Greek, Hebrew, Korean or emoji was refused and the player was renamed to Player, while a name mixing one of those with Latin letters was fine. The name check compared against Latin letters only, so a name containing none of them looked empty rather than unscreenable. Names are now accepted on what they actually contain.","evidence":["names in any script are kept as typed","the existing word list still blocks what it blocked before","names built only from invisible characters are still refused","spoofing defences and the length limit are unchanged"],"reference":{"label":"Play the game","href":"/play/"}},{"id":"WG-044","at":"15:15","label":"feature","deployment":"D22","title":"Publish the policies the standards ask for","summary":"Built in 34 minutes. The conformance register recorded what this service does against two standards, but the written record behind it did not exist — and the largest block of missing rows was not engineering, it was four documents nobody had written. They are now published at /policies/ as pages rather than filed as documents nobody can check: what the service is and where its boundary sits, what it protects and refuses to do, who is accountable for what, and what the computer-controlled sharks actually are. Twenty-seven gaps closed; readiness moved from 45 to 61 per cent.","evidence":["four documents, each naming the clauses it is the record for","the register links to them and they link back","limits stated plainly where one person cannot separate a duty","the AI document is exact that the sharks are rules, not a learned model"],"reference":{"label":"Policies","href":"/policies/"}},{"id":"WG-045","at":"16:13","label":"feature","deployment":"D23","title":"Write down how risk is decided, and what the sharks actually are","summary":"Built in 58 minutes. The register said what this service does but not how it decides what to do about anything. There is now a stated method for scoring a risk, an assessment that names the twelve this service actually carries — the spend ceiling, one durable object holding the receipt chain with no backup, display-name abuse, a provider outage, unscanned dependencies — and objectives measured from live routes rather than asserted. Five more documents cover how the computer-controlled sharks are built and checked, how code is written and released, who may reach what, and which laws and licences apply. Writing them turned up four things the service was describing inaccurately, and those were corrected rather than left flattering. Sixteen gaps closed; readiness moved from 61 to 77 per cent.","evidence":["a risk method with worded scales and an acceptance threshold, not a colour chart","twelve assessed risks with scores, decisions and what is left over","the backup gap, the unscanned dependencies and the missing erasure route recorded as open","four inaccurate descriptions found and corrected while checking them"],"reference":{"label":"Policies","href":"/policies/"}},{"id":"WG-046","at":"17:24","label":"feature","deployment":"D24","title":"Do the things the register said were only written down","summary":"Built in 71 minutes. Forty-two rows were marked partial, and sorting them showed most were not missing writing at all — they were activities defined and never performed, or one piece of engineering nobody had built. The engineering came first: everything the tank holds — the receipt chain, the ninety-day log, player profiles, spend history — is now copied daily to object storage under a digest, and the copy is proven by restoring it into a scratch instance and checking the two digests match. The first drill failed for a real reason and that failure is on the public chain in front of the passes. Then four activities were run for the first time and recorded — an access review, a supplier check, a compliance review and the AI policy review — and seven documents written for what remained. Ten rows are still open and named: no dependency scanning, no erasure route, no audit independence, and supplier certificates nobody has obtained. Readiness moved from 77 to 93 per cent.","evidence":["state copied daily and proven by a restore that compares digests, not by assertion","the first restore drill failed, and the failure is published before the passes","four recurring activities performed for the first time, each stating what was examined","six controls excluded on the boundary the scope statement already drew, not on convenience","internal audit stays partial because one person cannot be objective, and says so"],"reference":{"label":"Policies","href":"/policies/"}},{"id":"WG-047","at":"19:00","label":"feature","deployment":"D25","title":"Split the site in two, because it was serving two audiences from one menu","summary":"Built in 96 minutes. The site is a game and a public conformance record, for two sets of people who want nothing from each other, and every page carried the same ten-item menu listing both. Thirteen of the site's sixty thousand words were for players. The game keeps one link out; the record gets its own front door at /trust/ with six figures on it, each one a link to the page that owns it and none of them stored twice. The roadmap and incident pages folded into operations, so the receipt chain renders once instead of on two pages and the uptime and spend numbers appear only where they are measured. Cost moved to /spend/, because \"inquiry\" was being used for the billing page and for the whole record at the same time. The policy set became one route per document with an anchor on every section — it was 201 KB with no identifier on any of its 144 headings, so nothing in it could be cited. Old addresses redirect and the published JSON did not move. Also fixed on the way through: money could be spent on routes the spend limit exempted, saving a profile had nothing bounding it, a body-size check a chunked request walked straight past, a header set on one branch of the router, chart links no keyboard could reach, thirteen tables with no header row, a button that told a screen reader the opposite of what was happening, and a register that needed three screens of sideways scrolling on a phone.","evidence":["one menu became two, and the game's competing seven-link menu became one link","every figure on the trust page is computed from the source the owning page uses","the receipt chain and the uptime, spend and incident counts each render in exactly one place","the spend limit now closes the routes that generate the billable writes","moved routes redirect and every evidence link in the register still resolves","the agent count is published beside human occupancy, which the AI policy already said it was"],"reference":{"label":"Trust and operations","href":"/trust/"}},{"id":"WG-048","at":"20:28","label":"feature","deployment":"D26","title":"Deploy the split, then close the four things it left behind","summary":"Built in 88 minutes. The previous version was written and never deployed, so for its whole life the register pointed at routes the live service did not serve; that went out first. Then four things that were written down but not true. The restore drill said it restored the most recent copy and did not: it exported the live object and restored that, which proves the object can copy itself and proves nothing about object storage. It now reads the copy back out of the bucket, and with no bucket or no copy it fails and says so instead of quietly testing something else. Three policy records stated the evidence walk's result as a present-tense measurement and all three had the previous version's numbers; they are read off the register when the page is built, so they cannot go stale again. The link checker accepted any 200 as proof a route exists, but every unrouted path here answers 200 with the game — it now requires each response to carry something only the real page emits. And the split had left the spend and API pages reachable from two of the seven trust pages, so every page carries the whole estate in its footer. Two other things: the stylesheet was 38.6 KB re-sent on every page view and is now fetched once and cached, and every link on the delivery chart is a 24-pixel target instead of nine.","evidence":["the split namespace is live, and the register's routes are routes the service serves","the restore drill reads backups/state/latest.json and fails loudly when there is nothing to read","the evidence-walk figures are derived from the register at render time, not transcribed","a route deleted from the service now fails the link checker instead of passing on the game shell's 200","/spend/ and /docs/ are reachable from all 27 server-rendered pages, including each of the 20 policy documents","a trust page dropped from 45 KB to 7 KB, and all 22 delivery-chart links clear 24 by 24 with no overlap"],"reference":{"label":"Operations","href":"/status/#delivery"}}]}}