{"schema":1,"page":"https:\/\/ddsboston.com\/pages\/portfolio-ledger","generated_for_request_at":"2026-10-25T12:39:53Z","ledger_sha256":"0cd28410abe47de9ccc9e6d4597dc408e9042a87db1b6abcb905adf60137f6d6","ledger_bytes":31408,"grades":["MEASURED","CALCULATED","ASSERTED","NOT VERIFIED"],"rows":[{"id":"loc-total","value":"814,314","label":"authored lines of code","grade":"MEASURED","method":"Two measurements taken the same day and added: 548,144 lines of application source on disk across 15 project folders, plus 266,170 lines of Liquid running on the live published theme. Both filters stated below; neither counts the other","date":"2026-08-30","caveat":"Application source 548,144 + production Liquid 266,170. No double counting: .liquid is excluded from the disk walk. Supersedes 772,119 (2026-08-27, 13 folders) after two more project repositories were connected and counted under the identical method. Measured by Claude (Cowork), 2026-08-30.","prior":"772,119 over 13 folders","direction":"up"},{"id":"loc-app","value":"548,144","label":"lines of application source","grade":"MEASURED","method":"Recursive walk of 15 project roots, SHA-256 content dedup, newline count from bytes, then two subtractions each measured rather than assumed","date":"2026-08-30","caveat":"4,444 files. Extensions .ts .tsx .js .jsx .mjs .cjs .py .ps1 .rs .go .java .rb .php .cs .sh .sql only. Excludes node_modules, build output, virtualenvs, vendored and minified files, anything over 5 MB; then subtracts 7,717 lines of vendored Shopify base-theme JavaScript (37 files) and 7,752 lines across 34 files measured at 90 percent or more similar to a file kept elsewhere. Known limits: only files sharing a normalised basename were near-dup compared, and per-root subtotals attribute a shared file to the first root scanned. Measured by Claude (Cowork), 2026-08-30.","prior":"505,949 over 13 folders","direction":"up"},{"id":"loc-liquid","value":"266,170","label":"lines of Liquid running in production","grade":"MEASURED","method":"Shopify Admin API fetch of every .liquid file on the live published theme, filtered to files I authored, SHA-256 deduplicated, newline count from bytes","date":"2026-08-27","caveat":"203 files. Filter: basename begins dva-, dds-, page., page-dva, vh64-, rfx, seo- or atelier, or contains masterclass. Excludes Shopify\u0026rsquo;s 87 generated ai_gen_block files (72,609 lines) and the vendored base theme. The figure published on 2026-07-27 was 229,493 from \u0026ldquo;143 of 143 files\u0026rdquo; \u0026mdash; but the theme holds 596 Liquid files, and that receipt never stated which 143, so it could not be reproduced. This one states its filter so it can be. Measured by Claude (Cowork), 2026-08-27, across the 13 project folders on Rob\u0026rsquo;s drive.","prior":"229,493 was unreproducible","direction":"up"},{"id":"sop-loc","value":"93,924","label":"lines \u0026middot; Sovereign Orchestrator Pro","grade":"MEASURED","method":"find over src and scripts for .ts, .tsx, .js, .mjs and .mts, excluding node_modules, build, dist, every .bak-* snapshot and every test file, piped through wc -l","date":"2026-09-16","caveat":"Excludes 21,022 lines of test code, counted separately, and all .bak-* snapshots. Roughly a third of the files in src\/services are snapshots, so a naive wc -l over the tree roughly doubles this figure. With tests included the identical filter returns 114,946. Measured by Claude (Cowork), 2026-09-16.","prior":"62,807","direction":"up"},{"id":"sop-files","value":"426","label":"source files \u0026middot; Sovereign Orchestrator Pro","grade":"MEASURED","method":"the same filter as the line count above, counting files rather than lines","date":"2026-09-16","caveat":"Excludes test files and .bak-* snapshots. Measured by Claude (Cowork), 2026-09-16.","prior":"227","direction":"up"},{"id":"classes","value":"105","label":"free Academy classes","grade":"MEASURED","method":"counted when this page renders, from the academy\u0026rsquo;s own class dataset (snippets\/dva-academy-stats.liquid reads the same rows the academy hub renders), so the figure cannot fall behind the hub","date":"2026-10-14","caveat":"Numbered classes, counted the way the hub counts them. Some class pages host more than one class, so the 105 classes live on 94 class pages. The date is the newest class\u0026rsquo;s ship date. Until 2026-10-20 this entry was a count typed at each launch (92 on 2026-09-16). Wired to the dataset by Claude Code, 2026-10-20.","prior":"86","direction":"up"},{"id":"brief","value":"88","label":"consecutive weekday issues, verified","grade":"MEASURED","method":"Every article on the Vibe Code Academy blog enumerated via the Admin API and walked against the calendar","date":"2026-09-01","caveat":"88 issues, 2026-05-01 to 2026-09-01. Zero weekday gaps, zero weekend posts. This page carried 61, 62 and 86 for this figure in different places at once; body copy had hardcoded numbers instead of reading this row. Now every mention renders from here. Measured by Claude (Cowork), 2026-09-01.","prior":"86, and 61 and 62 elsewhere on the page","direction":"up"},{"id":"games","value":"4","label":"free browser games, named","grade":"MEASURED","method":"Count of live game pages, each opened and confirmed HTTP 200","date":"2026-08-30","caveat":"VOLTHAVEN 64, Dragonfly Crush 2 (shipped 2026-08-29), Ashaveth, Dragonfly Crush — plus games.ddsboston.com, a standalone hub serving all of them. The body copy names the games rather than counting them, because this number went stale twice in one week.","prior":"3","direction":"up"},{"id":"agents","value":"8","label":"registered AI agent personas","grade":"MEASURED","method":"AGI_TEAM in src\/data\/teamManifesto.ts holds sixteen two-space keys: eight role-to-name aliases (SCOUT to ARGUS, WRITER to SCRIBE, and six more) and eight persona objects","date":"2026-09-16","caveat":"This corrects a number this page published. The aliases were being counted as personas. The measured roster is ATLAS, SCRIBE, VERITAS, HERMES, ARGUS, LEGION, LUMIERE and AMITY. A third figure was also wrong and is left in place as evidence: stack-control.js line 56 still describes a 10-agent swarm. Three numbers, one roster, and the smallest of them is the true one. Measured by Claude (Cowork), 2026-09-16.","prior":"12","direction":"down"},{"id":"threads","value":"26","label":"scheduled jobs in one process","grade":"MEASURED","method":"twenty-six id values in src\/orchestrator\/controllerRegistry.ts, cross-checked against twenty-six keys in data\/thread_state.json and against the live status block above, which reads the same registry and prints the same number","date":"2026-09-16","caveat":"Includes consent_audit, added 2026-09-15, and selvedge_status, added 2026-09-13. Measured by Claude (Cowork), 2026-09-16.","prior":"23","direction":"up"},{"id":"cost","value":"$0.40","label":"mean cloud inference spend per day","grade":"MEASURED","method":"per-agent cost ledger totals across the swarm, $0.39618 per day and $11.89 per month","date":"2026-09-16","caveat":"Was CALCULATED from token rates in July; it is now read from a ledger that records every call, so the grade moves up as well as the number. A routing change measured at $0.183 per day of savings is approved but not yet shipped, so this figure is expected to fall. Measured by Claude (Cowork), 2026-09-16.","prior":"$1.19 (calculated)","direction":"down"},{"id":"hosting","value":"$0","label":"per month for hosting","grade":"MEASURED","method":"No cloud servers — local Ollama inference on owned hardware","date":"2026-07-27","caveat":"True for hosting only. Inference and API usage are separate and are not zero. Do not read this as \"$0 to operate\".","prior":"$0\/mo hosting","direction":"flat"},{"id":"products","value":"621","label":"active products","grade":"MEASURED","method":"the storefront product feed paged to exhaustion: \/products.json?limit=250 pages 1-4 returned 250, 250, 121 and 0","date":"2026-09-16","caveat":"Published products only; the endpoint does not expose drafts or unavailable items, so the admin figure may differ. The homepage hero currently reads 620 in three places, one short of the feed count. Measured by Claude (Cowork), 2026-09-16.","prior":"618","direction":"up"},{"id":"pages","value":"139","label":"store pages","grade":"MEASURED","method":"Shopify Admin API pages count","date":"2026-08-30","caveat":"Was 138 on 2026-08-27; the Dragonfly Crush 2 landing page is the addition.","prior":"138","direction":"up"},{"id":"months","value":"18","label":"months, start to here","grade":"CALCULATED","method":"First Shopify conversation February 2025 to today","date":"2026-08-26","caveat":"Elapsed time, not billable time.","prior":"18 months","direction":"up"},{"id":"skill-loc","value":"5,529","label":"lines · portable agent skill","grade":"MEASURED","method":"File count, shopify-dds-mastery","date":"2026-04-21","caveat":"9 files, 195 KB. Installed into two different agents and validated by blind build test — a cold agent passed all 10 proof-required audit items on the first attempt.","prior":"","direction":"new"},{"id":"dup","value":"2,360,839","label":"duplicated lines found on my own drive","grade":"MEASURED","method":"SHA-256 content hash across every project root","date":"2026-07-27","caveat":"3,736 byte-identical files. Paired with 3 of 23 roots under version control, this is one finding: without git, the backup strategy became copying the folder.","prior":"","direction":"new"},{"id":"schemas","value":"10","label":"JSON-LD schemas per page","grade":"MEASURED","method":"SEO Magnet System V3, counted on the live templates","date":"2026-07-27","caveat":"10 to 13 depending on page type. FAQ accordion content matches the FAQPage schema exactly, enforced at build.","prior":"7 schemas","direction":"up"},{"id":"platforms","value":"3","label":"platforms writing, unattended","grade":"MEASURED","method":"Effective flag resolution in controllerRegistry.ts checked against the live thread run history and today\u0026rsquo;s posts","date":"2026-09-01","caveat":"WordPress, Shopify and X are writing and each posted today. Reddit runs READ-ONLY: its listener and health threads are on regardless of the flag; writing requires REDDIT_ENABLED to be true and it is false, last write 2026-07-30. Pinterest is wired and gated. A DOWNWARD correction: the prior receipt said four live platforms. Three write.","prior":"4 live platforms","direction":"down"},{"id":"sweep","value":"561","label":"live URLs swept for claim compliance","grade":"MEASURED","method":"claims-compliance-sweep run log","date":"2026-07-27","caveat":"Four-class classifier with reversible repair and pre-flight abort gates.","prior":"","direction":"new"},{"id":"contrast","value":"8.56:1","label":"contrast ratio after remediation","grade":"MEASURED","method":"Playwright screenshot plus PIL pixel sampling","date":"2026-07-27","caveat":"Measured up from 3.4:1, which failed WCAG AA. Verified numerically, not by eye.","prior":"","direction":"new"},{"id":"vcs","value":"7 of 16","label":"connected project folders under version control","grade":"MEASURED","method":"checked every one of the 16 connected project folders for a .git directory, then read the commit count with git rev-list --count HEAD and the last commit date with git log","date":"2026-09-16","caveat":"The denominator changed and is not comparable to the prior figure: this counts connected project folders, the earlier one counted npm package roots. Stated plainly rather than presented as growth. What did genuinely change is the criticism this row used to carry: the flagship is now under version control, at 109 commits with its most recent commit today, so the sentence about it being outside git is retired. The gap that remains is the Academy, still at 8 commits and last committed 2026-06-12 while shipping continuously to the live theme. Repositories: brand hub 109, Gazette 190, Volthaven 170, Dragonfly Crush 2 58, Ashaveth 55, Selvedge 25, Academy 8. Measured by Claude (Cowork), 2026-09-16.","prior":"3 of 23 npm package roots","direction":"up"},{"id":"perf-mobile","value":"78","label":"Lighthouse performance, mobile, cold","grade":"MEASURED","method":"Lighthouse 13.4.1 against the live page, clean headless Chrome, default mobile throttling (4x CPU, Slow 4G), median of 3 runs.","date":"2026-09-16","caveat":"After the hero rebuild shipped. The same page measured 77 before it and 80 on 2026-08-27. All three are the same page-and-tool on different days; the rebuild is not what moved it. Measured by Claude (Cowork) after promotion, 2026-09-16.","prior":"77","direction":"up"},{"id":"perf-desktop","value":"98","label":"Lighthouse performance, desktop, cold","grade":"MEASURED","method":"Lighthouse 13.4.1 against the live page, clean headless Chrome, desktop preset, median of 3 runs.","date":"2026-09-16","caveat":"Was 99. One point, inside run-to-run variance. Measured by Claude (Cowork) after promotion, 2026-09-16.","prior":"99","direction":"down"},{"id":"lcp","value":"4.50 s","label":"Largest Contentful Paint, mobile cold","grade":"MEASURED","method":"Lighthouse 13.4.1 against the live page, clean headless Chrome, default mobile throttling (4x CPU, Slow 4G), median of 3 runs.","date":"2026-09-16","caveat":"Still a POOR LCP - past the 4.0 s boundary - and the page says so rather than rounding down. The hero rebuild did not fix this and was never going to: the largest text block waits on a webfont, which is the next thing to attack. Measured by Claude (Cowork) after promotion, 2026-09-16.","prior":"4.24 s","direction":"down"},{"id":"tbt","value":"0 ms","label":"Total Blocking Time, every run","grade":"MEASURED","method":"Lighthouse 13.4.1 against the live page, clean headless Chrome, default mobile throttling (4x CPU, Slow 4G), median of 3 runs. Also 0 ms across 5 runs of each page version in a controlled local A\/B.","date":"2026-09-16","caveat":"Held at 0 through the hero rebuild, on the live page, mobile and desktop. An earlier reading of 168-380 ms came from a shared browser running other automation; the same unchanged page reads 0 ms in a clean one. Recorded because it nearly became a published number. Measured by Claude (Cowork) after promotion, 2026-09-16.","prior":"0 ms","direction":"flat"},{"id":"cls-final","value":"0.027","label":"Cumulative Layout Shift, mobile","grade":"MEASURED","method":"Lighthouse 13.4.1 against the live page, clean headless Chrome, default mobile throttling (4x CPU, Slow 4G), median of 3 runs.","date":"2026-09-16","caveat":"This replaces a published 0.000 that is no longer true on mobile. The hero rebuild introduced a shift: a self-measurement line shipped hidden and was revealed after load, which inserts a block. Measured 0.0367, fixed by keeping the line in the flow from first paint, re-measured 0.0271. Desktop is 0.0015. Both are inside the 0.1 good threshold, and the remaining mobile shift has not been traced yet. An assertion now fails the build if anything in the first viewport ships hidden. Measured by Claude (Cowork) after promotion, 2026-09-16.","prior":"0.000","direction":"down"},{"id":"sop-streak","value":"128","label":"consecutive days running, zero missed","grade":"MEASURED","method":"every reports\/daily_*.md file enumerated and diffed against the date range 2026-05-11 to 2026-09-15: 128 files, zero gaps","date":"2026-09-16","caveat":"This is the daily anomaly report series. The orchestrator app-log series covers 108 of 110 days and is missing 2026-09-02 and 2026-09-03 - those two files were deleted by hand on 2026-09-04 because a broken-pipe loop had inflated them to 5.2 GB and 3.4 GB. That gap is a cleanup artifact, not downtime, and an automated check reading the log directory will now report an outage that never happened. Supersedes 95 days, which was measured on the shorter series. Measured by Claude (Cowork), 2026-09-16.","prior":"95","direction":"up"},{"id":"guard","value":"3,385","label":"drafts blocked before publish","grade":"MEASURED","method":"inquisitor_violation_stats.json, cumulative counter","date":"2026-09-01","caveat":"456 are logged as fabricated numbers. The category split carries a caveat the file itself records: roughly 2,100 adjective-bloat entries before 2026-07-30 were a defaulting bug, so the total is sound and the split is not. The authoring directive forbids inventing a number; this is the enforcement record.","prior":"3,020","direction":"up"},{"id":"url-verify","value":"99 \/ 100","label":"published URLs re-fetched and confirmed HTTP 200","grade":"MEASURED","method":"publish_history.json, most recent 100 publishes","date":"2026-07-29","caveat":"The hundredth returned 503. The system fetches back every URL it publishes and stores the status code rather than assuming the write succeeded.","prior":"","direction":"new"},{"id":"tests","value":"71 \/ 71","label":"test files passing, zero failures","grade":"MEASURED","method":"Executed on Linux today — Sovereign Orchestrator Pro 39\/39 under tsx, Ashaveth 32\/32 under vitest carrying 667 individual assertions","date":"2026-07-29","caveat":"Run, not quoted from a badge. SOP ships 39 test files but only 29 are wired into npm test; the remaining 10 pass and belong in CI.","prior":"","direction":"new"},{"id":"drafts","value":"1,004","label":"posts held as drafts rather than deleted","grade":"MEASURED","method":"WordPress REST API status counts","date":"2026-07-29","caveat":"A deliberate quality purge. 148 posts published inside the last 61 days were reverted to draft, one is in trash, 134 remain live. Stated because counting only live posts would understate what the system produced — and deleting them would have destroyed the evidence.","prior":"","direction":"new"},{"id":"wo","value":"39","label":"work orders on one project","grade":"MEASURED","method":"Distinct work-order numbers in the VOLTHAVEN 64 operations directory","date":"2026-08-26","caveat":"WO-01 to WO-40 with WO-25 unused. 5,103 files, 48 reports. Three other projects run their own ticket series, numbered independently — never one sequence.","prior":"39 tickets","direction":"new"},{"id":"modules","value":"9","label":"interactive modules, one engine","grade":"MEASURED","method":"Module list in the engine snippet on the published theme","date":"2026-08-26","caveat":"1,104 lines. Generalised out of hand-written code in a single class.","prior":"9 modules","direction":"new"},{"id":"instances","value":"136","label":"exercises deployed from that engine","grade":"MEASURED","method":"Census of every Liquid file on the published theme written on or after 2026-08-19","date":"2026-08-26","caveat":"72 files. Complete, not a sample: the engine did not exist before 2026-08-20, so nothing older can call it.","prior":"136 live","direction":"new"},{"id":"gates","value":"7","label":"numbered gates before anything promotes","grade":"MEASURED","method":"Gate count in the promote guard","date":"2026-08-22","caveat":"Each gate names the incident that produced it.","prior":"7 gates","direction":"new"},{"id":"vh64-cost","value":"$48.93","label":"modelled cost per million loads","grade":"CALCULATED","method":"CDN egress applied to a measured first-load payload of 424,557 bytes at 1200px wide","date":"2026-08-24","caveat":"CALCULATED, not measured. A bandwidth model on a measured payload. It is NOT a claim that a million people played the game — there is no such measurement and I do not publish audience numbers. 800px models to $40.68, 1600px to $59.30.","prior":"$48.93\/1M","direction":"new"},{"id":"a11y-score","value":"100","label":"Lighthouse accessibility, mobile","grade":"MEASURED","method":"Lighthouse 13.4.1 against the live page, clean headless Chrome, default mobile throttling (4x CPU, Slow 4G), median of 3 runs.","date":"2026-09-16","caveat":"Held at 100 through the rebuild, including the new field, which is aria-hidden with its text alternative in the content beside it. Measured by Claude (Cowork) after promotion, 2026-09-16.","prior":"100","direction":"flat"},{"id":"seo-score","value":"100","label":"Lighthouse SEO, mobile and desktop","grade":"MEASURED","method":"Lighthouse 13.4.1 against the live page, clean headless Chrome, default mobile throttling (4x CPU, Slow 4G), median of 3 runs.","date":"2026-09-16","caveat":"Held at 100. Measured by Claude (Cowork) after promotion, 2026-09-16.","prior":"100","direction":"flat"},{"id":"bp-score","value":"96","label":"Lighthouse best practices","grade":"MEASURED","method":"Lighthouse 13.4.1 against the live page, clean headless Chrome, default mobile throttling (4x CPU, Slow 4G), median of 3 runs.","date":"2026-09-16","caveat":"Unchanged through the rebuild. Measured by Claude (Cowork) after promotion, 2026-09-16.","prior":"96","direction":"flat"},{"id":"lcp-desktop","value":"0.94 s","label":"Largest Contentful Paint, desktop cold","grade":"MEASURED","method":"Lighthouse 13.4.1 against the live page, clean headless Chrome, desktop preset, median of 3 runs.","date":"2026-09-16","caveat":"Comfortably inside the 2.5 s boundary. Measured by Claude (Cowork) after promotion, 2026-09-16.","prior":"0.76 s","direction":"down"},{"id":"hot-load","value":"427 ms","label":"page fully loaded, repeat visit","grade":"MEASURED","method":"Real Chrome, warm cache, Navigation Timing loadEventEnd. Three warm runs, median","date":"2026-08-27","caveat":"Runs: 376, 556, 427 ms. This is a DIFFERENT instrument from the Lighthouse figures above and is NOT comparable to them \u0026mdash; real desktop browser on a real connection, not an emulated phone on throttled 4G. A first cold visit is what the Lighthouse numbers describe. Measured by Claude (Cowork) on the live published theme, 2026-08-27, template md5 00bf31ac7eaa315964c6fa4b1e28cc18.","prior":"","direction":"new"},{"id":"hot-ttfb","value":"26 ms","label":"time to first byte, repeat visit","grade":"MEASURED","method":"Real Chrome, warm cache, Navigation Timing responseStart minus requestStart. Three warm runs, median","date":"2026-08-27","caveat":"Runs: 29, 22, 26 ms. Shopify edge cache. Measured by Claude (Cowork) on the live published theme, 2026-08-27, template md5 00bf31ac7eaa315964c6fa4b1e28cc18.","prior":"","direction":"new"},{"id":"hot-cache","value":"9 of 11","label":"subresources served from cache on a repeat visit","grade":"MEASURED","method":"Real Chrome, Resource Timing, transferSize zero with a non-zero decoded body","date":"2026-08-27","caveat":"The document itself is 356,509 bytes decoded: 97,344 bytes on the wire when fetched, 300 bytes when revalidated from cache. Measured by Claude (Cowork) on the live published theme, 2026-08-27, template md5 00bf31ac7eaa315964c6fa4b1e28cc18.","prior":"","direction":"new"},{"id":"hot-paint","value":"not measured","label":"paint timing on a repeat visit","grade":"NOT VERIFIED","method":"Attempted in a real browser and abandoned","date":"2026-08-27","caveat":"The measuring tab reported document.visibilityState hidden, which suspends paint. First Contentful Paint read 3,556 ms, which is when a screenshot forced the paint rather than when the page actually painted. Publishing that would have been an artifact, not a measurement. Hot mobile is also NOT VERIFIED: the automation cannot resize to a phone viewport \u0026mdash; resize_window reports success and the reported width never changes.","prior":"","direction":"new"},{"id":"hub","value":"13","label":"build gates on the games hub","grade":"MEASURED","method":"Gate list in the hub's build script, all green on the shipping build","date":"2026-08-30","caveat":"games.ddsboston.com — a standalone Cloud Run site serving every DDS game from one JSON data file. Zero third-party requests; ten self-hosted font files; live build id printed in the page head and matched against the local build as the final deploy step.","prior":"new","direction":"new"},{"id":"thumbs","value":"47 of 47","label":"channel thumbnails rebuilt and verified pushed","grade":"MEASURED","method":"Push ledger that records only successful API responses, completed 2026-08-30","date":"2026-08-30","caveat":"An adjacency-constrained design system across the full YouTube back catalogue: six wardrobe plates, five accents, zero same-plate neighbours at any grid width. Hand-written copy for all 47. The final 18 pushes completed 2026-08-30 after an earlier rate-limit stop.","prior":"29 of 47","direction":"up"},{"id":"services","value":"6","label":"services running now","grade":"MEASURED","method":"the SERVICES array in stack-control.js","date":"2026-09-16","caveat":"Selvedge, the Shopify customisation engine on port 3400, was added to the control plane on 2026-09-13. Measured by Claude (Cowork), 2026-09-16.","prior":"5","direction":"up"},{"id":"articles","value":"647","label":"articles on the live storefront blog","grade":"MEASURED","method":"Shopify Admin API articlesCount on the News blog","date":"2026-09-01","caveat":"Plus 88 daily issues on the Vibe Code Academy blog, counted on their own row. Two published today, at 00:23 and 14:33 UTC, by the orchestrator, unattended.","prior":"","direction":"new"},{"id":"spend-today","value":"$0.52","label":"cloud inference spend, one measured day","grade":"MEASURED","method":"a replay of every call logged on 2026-09-15 through the new per-agent cost ledger: 116 calls, $0.516146, agreed to the cent by three independent derivations with zero agents disagreeing","date":"2026-09-15","caveat":"The three derivations share the same log lines as their input, which the report that produced it says plainly: a reconciliation across derivations that share an input can agree and still be wrong. The mean is lower - $0.39618 per day, $11.89 per month, measured across the swarm. Supersedes $0.23, which was one day in September measured before the ledger existed. Measured by Claude (Cowork), 2026-09-16.","prior":"$0.23","direction":"up"},{"id":"director-loc","value":"20,367","label":"lines \u0026middot; The Synthetic Director","grade":"MEASURED","method":"The same canonical command as every other system on this page","date":"2026-09-01","caveat":"105 files. This page previously printed TWO different numbers for this system at once: 25,746 on its card and 29,733 in the treemap. Neither used a published command; 29,733 counted config JSON and HTML as well. Under one stated rule it is 20,367, and the card and the treemap now read this row. Measured by Claude (Cowork), 2026-09-01.","prior":"25,746 and 29,733, on the same page","direction":"down"},{"id":"smartdb-loc","value":"2,178","label":"lines \u0026middot; Atelier Smart DB","grade":"MEASURED","method":"The same canonical command","date":"2026-09-01","caveat":"5 files. Express over PostgreSQL with generic REST over an allowlist of tables, a Shopify sync route, and a write-through cache: every products-table mutation also lands in a local JSON file, which is what lets agents fall back to disk when the service is down. Not to be confused with Atelier OS, a retired 2026 orchestration layer that shares the name.","prior":"","direction":"new"},{"id":"control-loc","value":"985","label":"lines \u0026middot; the control plane","grade":"MEASURED","method":"wc -l on stack-control.js (438 lines) plus SOP-STACK-DASHBOARD.html (547 lines)","date":"2026-09-16","caveat":"The previous figure of 853 carried no stated method and matches neither file nor their sum, so it is superseded rather than reconciled. Naming the two files is the point: one number for \"the control plane\" means nothing without them. Measured by Claude (Cowork), 2026-09-16.","prior":"853","direction":"up"},{"id":"guard-egress","value":"422","label":"HTTP status the Director returns when copy fails the brand guard","grade":"MEASURED","method":"server\/guard.ts and the onSend hook in server\/app.ts, read in source","date":"2026-09-01","caveat":"Two layers on purpose. First, regenerate in-job with corrective feedback, at most twice. Then a second scan on every serialized response on the way out; fail that and the content is never transmitted. Duplicated deliberately because a July audit found a single layer sat one step too shallow. The rule set it checks against is 5,136 characters.","prior":"","direction":"new"},{"id":"tests-sop","value":"122","label":"test files \u0026middot; Sovereign Orchestrator Pro","grade":"MEASURED","method":"files matching *.test.ts under src, excluding .bak snapshots","date":"2026-09-16","caveat":"3,228 assert() calls across 21,022 lines. Two files are known-red and registered as such in scripts\/test-manifest.ts. This is the size of the suite, not a passing result: the suite was not run for this measurement. Measured by Claude (Cowork), 2026-09-16.","prior":"105","direction":"up"},{"id":"selvedge-loc","value":"36,247","label":"lines \u0026middot; Selvedge","grade":"MEASURED","method":"find over src, tests and scripts for .ts, .mts and .mjs, excluding node_modules, .git, _work backups and .bak* files, piped through wc -l","date":"2026-09-16","caveat":"One hundred and sixty-four files. Non-blank, non-comment lines are 16,764. Selvedge runs on native node:http with no server framework at all. Measured by Claude (Cowork), 2026-09-16.","prior":"","direction":"new"},{"id":"selvedge-controls","value":"270","label":"deterministic controls \u0026middot; Selvedge","grade":"MEASURED","method":"control ids counted across the eleven tests\/*.control-set.ts files","date":"2026-09-16","caveat":"The claim linter alone contributes 93 of these across seven checkers. Selvedge\u0026rsquo;s own architecture document still advertises a 37-point linter; that string is stale and the live control set is larger. It is recorded here rather than quietly dropped. Measured by Claude (Cowork), 2026-09-16.","prior":"","direction":"new"},{"id":"selvedge-bind","value":"10.0.0.85","label":"the address that reached a live-theme write path","grade":"MEASURED","method":"recorded in the header of src\/orchestrator\/telemetry-server.ts: the server answered POST \/api\/promote from an off-loopback address carrying no credentials of any kind","date":"2026-09-13","caveat":"Found and closed the same day. The service now binds 127.0.0.1 by default, requires an agent token that fails closed when unset, and refuses promotion unless the request is loopback and carries a single-use, server-minted, five-minute nonce issued by a real page load. The written rule said bind 0.0.0.0 and the code obeyed it: the rule was the defect.","prior":"","direction":"new"},{"id":"gazette-shops","value":"564","label":"Massachusetts shops in the directory","grade":"MEASURED","method":"json.load over public\/stores.json, 592,202 bytes, counting records","date":"2026-09-16","caveat":"Across nine regions: North Shore 122, Greater Boston 83, Cape Cod 67, Pioneer Valley 63, Central Massachusetts 55, Metrowest 52, South Coast 49, South Shore 44, Berkshires 29. 545 carry a clean Google Place ID, 14 are flagged suspect and excluded from the verified count, 7 are confirmed against the organisation\u0026rsquo;s own dated site, and none are unconfirmed. Supersedes 565, which was read off the rendered page rather than counted in the data. Measured by Claude (Cowork), 2026-09-16.","prior":"565","direction":"down"},{"id":"gazette-loc","value":"25,390","label":"lines \u0026middot; Bay State Treasure Gazette","grade":"MEASURED","method":"os.walk over the repository excluding node_modules, .git, dist, __pycache__ and _ops, counting physical lines by extension","date":"2026-09-16","caveat":"One hundred and forty-four files. About 3,118 of those lines are a generated static-fallback block inside index.html; excluding it leaves roughly 22,272 hand-written lines, which is CALCULATED rather than measured. Measured by Claude (Cowork), 2026-09-16.","prior":"","direction":"new"},{"id":"gazette-cap","value":"250","label":"billable map lookups per month, enforced in code","grade":"MEASURED","method":"MONTHLY_CALL_CAP in lib\/placesBudget.js, with every billable call appended to a ledger so the count is measured rather than remembered","date":"2026-09-16","caveat":"Written after a measured overrun of $45.47 across 2,301 calls. The cap is expressed in calls, not dollars, because the per-call price is an assumption and the file labels it as one. A thirty-day cache makes a repeat sweep cost nothing. Measured by Claude (Cowork), 2026-09-16.","prior":"","direction":"new"},{"id":"gazette-assert","value":"111","label":"assertions before the Gazette image ships","grade":"MEASURED","method":"check( calls counted in scripts\/verify_build.mjs, 1,070 lines, which runs against the dist extracted from the built image rather than a local build","date":"2026-09-16","caveat":"Wired into the deploy path as the verify-artifact step on 2026-09-13; before that it existed in the repository and nothing on the deploy path called it. A separate suite of 6 test files and 325 assertions runs before the image is built. Measured by Claude (Cowork), 2026-09-16.","prior":"","direction":"new"},{"id":"yt-uploads","value":"200","label":"videos on the channel","grade":"MEASURED","method":"the uploads playlist scraped live on 2026-09-15 and recorded in video_engine\/WORK_ORDER_BACK_CATALOGUE.md","date":"2026-09-15","caveat":"Supersedes an estimate of about 130 carried in a working file. View and subscriber figures are deliberately not published here: the claim worth making is about the pipeline, not the audience.","prior":"~130 (estimate)","direction":"up"},{"id":"sop-assert","value":"3,228","label":"assertions in the orchestrator test suite","grade":"MEASURED","method":"assert( calls counted across the 122 test files","date":"2026-09-16","caveat":"Two files are known-red and registered. The suite was not run for this measurement. Measured by Claude (Cowork), 2026-09-16.","prior":"","direction":"new"},{"id":"daily-posts","value":"99","label":"daily blog issues built end to end","grade":"MEASURED","method":"directories counted under the daily post workspace, 2026-05-01 to 2026-09-16","date":"2026-09-16","caveat":"The issue counter in the repository reads 97; the two-count difference is unexplained and is recorded here rather than reconciled by picking the flattering number. Measured by Claude (Cowork), 2026-09-16.","prior":"","direction":"new"},{"id":"wo-burst","value":"24","label":"work orders closed in three days","grade":"MEASURED","method":"WO-090 through WO-113 counted in the exchange inbox with their paired reports in the outbox, 2026-09-14 to 2026-09-16","date":"2026-09-16","caveat":"Twenty-three have a returned report; WO-113 was issued on 2026-09-16 and has none yet. Four of the twenty-three are refusals: a quality gate that rejected a batch twice, a scan that halted rather than guess, a cleanup that was vetoed, and a pipeline that caught its own false success claim. Measured by Claude (Cowork), 2026-09-16.","prior":"","direction":"new"},{"id":"transparency-pages","value":"10","label":"rebuilt transparency pages, live","grade":"MEASURED","method":"each page fetched and parsed: HTTP status, JSON-LD blocks, FAQ pairs, OG and Twitter tags, sticky table of contents","date":"2026-09-16","caveat":"32,836 words, 103 JSON-LD blocks and 17 distinct schema types across the set. Two of the ten - the GRS and OCS guides - ship an empty meta description and no twitter:image, and the OCS page carries no visible review date; those two were the only pages with no September build directory and were missed by the rebuild pass. Measured by Claude (Cowork), 2026-09-16.","prior":"","direction":"new"},{"id":"faq-parity","value":"124 of 124","label":"FAQ answers visible on the page and present in its schema","grade":"MEASURED","method":"visible summary elements counted against FAQPage question counts on all ten transparency pages, excluding five quiz toggles and six product-note panels that are not FAQ entries","date":"2026-09-16","caveat":"Exact parity on every page. Schema that promises an answer the reader cannot see is the specific thing search engines penalise, so this is checked rather than assumed. Measured by Claude (Cowork), 2026-09-16.","prior":"","direction":"new"},{"id":"grounding-void","value":"0 of 25","label":"grounded calls from a model that requested grounding every time","grade":"MEASURED","method":"a bake-off of 25 identical prompts per model; the application log recorded GROUNDING REQUESTED BUT DID NOT RUN twenty-five times while the comparison model grounded 25 of 25","date":"2026-09-16","caveat":"The bake-off was declared void by the agent that ran it rather than reported as the 5.7x saving it appeared to be. What caught it was a grounded field added to the log nine work orders earlier for an unrelated reason. A cheaper model that silently stops doing the expensive part is not a saving. Measured by Claude (Cowork), 2026-09-16.","prior":"","direction":"new"},{"id":"main-thread","value":"947 ms","label":"of main-thread work removed by the hero rebuild","grade":"MEASURED","method":"Lighthouse 13.4.1, clean headless, mobile, median of 3, measured on the live page before the rebuild (1,851 ms) and after (904 ms). A separate controlled A\/B on a local server with both versions and identical compression gave -712 ms against a 248 ms noise floor.","date":"2026-09-16","caveat":"Two independent measurements, both showing the same direction and rough magnitude. The cause is deleting a hero canvas that ran an O(n squared) particle loop above the fold. In the same A\/B, score, FCP, LCP, TBT, CLS and bootup all moved by less than their own run-to-run noise and are reported as inconclusive rather than as wins. Measured by Claude (Cowork) after promotion, 2026-09-16.","prior":"","direction":"new"},{"id":"noncomposited","value":"0","label":"non-composited animations flagged by Lighthouse","grade":"MEASURED","method":"the non-composited-animations audit in Lighthouse 13.4.1, live page, mobile and desktop","date":"2026-09-16","caveat":"Was 6 before the rebuild, every one a line of the old opening terminal animating max-width from 0 to 60ch. An element at max-width:0 has no paint area and cannot be an LCP candidate until its delay elapses. The build now fails if any keyframe anywhere animates a layout property. Measured by Claude (Cowork) after promotion, 2026-09-16.","prior":"6","direction":"up"}]}