{"schema":1,"page":"https:\/\/ddsboston.com\/pages\/portfolio-ledger","generated_for_request_at":"2026-09-01T18:53:24Z","ledger_sha256":"437560dc3c727ac580bea68a6f8a372f5639308cccf0cf34bf19c6d9a73909ec","ledger_bytes":23155,"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":"62,807","label":"lines \u0026middot; Sovereign Orchestrator Pro","grade":"MEASURED","method":"One canonical command, the same for every system on this page: find ROOT -type f ( -name *.ts -o *.tsx -o *.js -o *.mjs -o *.cjs -o *.mts ) excluding node_modules, .git, dist, build, coverage, any *.bak* or *_backup* path, and *.test.* files, then wc -l","date":"2026-09-01","caveat":"227 files under src\/. Tests are excluded and counted on their own row. The 2026-07-27 receipt said 54,886 lines and 258 files but recorded no command, and no scope I tried reproduces it \u0026mdash; so it is withdrawn rather than carried forward. This one prints its command so anyone can run it. Measured by Claude (Cowork), 2026-09-01.","prior":"54,886, unreproducible","direction":"up"},{"id":"sop-files","value":"227","label":"source files \u0026middot; Sovereign Orchestrator Pro","grade":"MEASURED","method":"Same canonical command as the line count","date":"2026-09-01","caveat":"A DOWNWARD correction: the prior receipt said 258 under a scope it never stated. 125 service modules, 20 agent modules, 22 thread definitions, 105 test files on top.","prior":"258, scope never stated","direction":"down"},{"id":"classes","value":"86","label":"free Academy classes","grade":"MEASURED","method":"Parsed from the live dataset snippet on the published theme","date":"2026-08-26","caveat":"86 records across 76 unique URLs. Ten pages carry two class rows. Read integrity confirmed: the API returned 1,104 fewer bytes than the file, exactly its line count, which is stripped CR from CRLF and not truncation.","prior":"86 classes","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":"12","label":"registered AI agent personas","grade":"MEASURED","method":"Persona registry in data\/agent_models.json, cross-checked against the agent modules on disk","date":"2026-09-01","caveat":"20 agent module files exist on disk including infrastructure \u0026mdash; that is a file count, not a persona count. One persona, the reply drafter, lives under services rather than agents.","prior":"12 agents","direction":"flat"},{"id":"threads","value":"23","label":"scheduled jobs in one process","grade":"MEASURED","method":"THREAD_REGISTRY entries in source, confirmed against the live status API the same day","date":"2026-09-01","caveat":"These are interval-timed async jobs in a SINGLE Node.js process \u0026mdash; not OS threads and not worker threads. The only concurrency primitive is a 15-minute execution timeout. Was 22 until 2026-09-01 21:33 UTC, when the 23rd registered: the status writer that produces the live block at the top of this page. It counts itself, which is why this row and that block agree. Counted twice by two read paths: the registry array and the control plane\u0026rsquo;s live thread list. Both say 23. A stale comment in the file still says 17.","prior":"22","direction":"up"},{"id":"cost","value":"$1.19","label":"measured API spend per day","grade":"CALCULATED","method":"Token counts multiplied by hard-coded rates in costService.ts","date":"2026-07-27","caveat":"Never reconciled against a Google bill. costService.ts has four documented under-count vectors, so this figure is biased downward. The enforced ceiling is $5–10\/day of Gemini spend. The previously published $8–13\/day was that ceiling, not spend, and $3 of it was never charged at all.","prior":"$8–13 per day","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":"618","label":"active products","grade":"MEASURED","method":"Shopify Admin API productsCount with status:active","date":"2026-08-27","caveat":"Was 619 on 2026-07-27. One product has been deactivated since.","prior":"619","direction":"down"},{"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":"3 of 23","label":"npm package roots under version control","grade":"MEASURED","method":"Checked for a .git directory in every npm package root across the 13 project folders, then read commit count and last commit date from each","date":"2026-08-26","caveat":"Up from two of twenty-three on 2026-07-27 — VOLTHAVEN 64 is the third, at 169 commits. Having a repository is not the same as using one: of the three, the Academy has 8 commits and last committed 2026-06-12, while shipping 186 files to the live theme since then. The 54,886-line flagship is still not one of the three.","prior":"3 of 23","direction":"up"},{"id":"perf-mobile","value":"80","label":"Lighthouse performance, mobile, cold","grade":"MEASURED","method":"PageSpeed Insights, Lighthouse 13.4.1, emulated Moto G Power on slow 4G. THREE runs, median reported, spread disclosed","date":"2026-08-27","caveat":"Runs: 80, 85, 80 \u0026mdash; median 80, spread 80 to 85. An earlier single run this morning returned 86; three runs show that was the lucky end of the distribution, not the truth. The page published 87 dated 2026-08-03 and the pre-revision page measured 81 on the same instrument the same morning. Measured by Claude (Cowork) on the live published theme, 2026-08-27, template md5 00bf31ac7eaa315964c6fa4b1e28cc18.","prior":"87 was overstated","direction":"down"},{"id":"perf-desktop","value":"99","label":"Lighthouse performance, desktop, cold","grade":"MEASURED","method":"PageSpeed Insights, Lighthouse 13.4.1, desktop configuration. THREE runs, median reported","date":"2026-08-27","caveat":"Runs: 99, 99, 99 \u0026mdash; median 99, zero spread. First Contentful Paint 0.7 s, Largest Contentful Paint 0.8 s, Total Blocking Time 0 ms, Cumulative Layout Shift 0. The page previously published 100. Measured by Claude (Cowork) on the live published theme, 2026-08-27, template md5 00bf31ac7eaa315964c6fa4b1e28cc18.","prior":"100 was optimistic","direction":"down"},{"id":"lcp","value":"4.0 s","label":"Largest Contentful Paint, mobile cold","grade":"MEASURED","method":"PageSpeed Insights, Lighthouse 13.4.1, emulated Moto G Power on slow 4G. THREE runs, median reported","date":"2026-08-27","caveat":"Runs: 4.0, 3.7, 4.0 s \u0026mdash; median 4.0 s, spread 3.7 to 4.0. Still above Google\u0026rsquo;s 2.5 second threshold and still the weakest number on this page. The largest remaining costs are Shopify\u0026rsquo;s own payload: 261 KiB of unused JavaScript, third-party scripts and forced reflow, none of which this template controls. Measured by Claude (Cowork) on the live published theme, 2026-08-27, template md5 00bf31ac7eaa315964c6fa4b1e28cc18.","prior":"3,500 ms","direction":"down"},{"id":"tbt","value":"0 ms","label":"Total Blocking Time, every run","grade":"MEASURED","method":"PageSpeed Insights, Lighthouse 13.4.1, 3 runs mobile and 3 desktop, all six returned 0 ms","date":"2026-08-03","caveat":"Held at zero after this page gained a live WebGL section, because Three.js is imported inside an IntersectionObserver callback and Lighthouse does not scroll - a cold load at the top of the page makes 12 requests and never fetches it. Not an optimisation trick. This template uses the layout none directive, so Shopify's theme.liquid never loads and the theme JS bundle never ships - verified: zero references to global.js, theme.js, constants.js, pubsub.js or cart.js in the rendered HTML. Store pages that DO run through theme.liquid still have a platform TBT floor.","prior":"","direction":"new"},{"id":"cls-final","value":"0.000","label":"Cumulative Layout Shift, mobile","grade":"MEASURED","method":"PageSpeed Insights, Lighthouse 13.4.1, median of 3 runs, spread 0 to 0.019","date":"2026-08-03","caveat":"Was 0.1604 before metric-matched font fallbacks. One of the three runs on 2026-08-03 registered 0.019 and the other two registered 0, so the median is 0 and the spread is disclosed rather than rounded away. Desktop median is also 0. Every interactive panel overlays rather than reflows.","prior":"0.1604","direction":"down"},{"id":"sop-streak","value":"95","label":"consecutive days running, zero missed","grade":"MEASURED","method":"One non-rotating log file per calendar day, app-2026-05-30.log through app-2026-09-01.log, every filename enumerated against the calendar","date":"2026-09-01","caveat":"95 files, 95 calendar days spanned, zero missing, zero under 1 KB. The 2026-07-29 receipt said 61 and claimed log retention was 61 days; the logs do not rotate and the full series survives. The content ledger DOES rotate at 1,000 entries and showed a false gap from 2026-06-16 to 06-29 \u0026mdash; the daily logs close it with WordPress post IDs 67002 to 67070 inside that window. The gap was my instrument, not the system. 95 is what is proven; earliest source-file dates suggest March, but file dates are mutable, so that is not claimed. Measured by Claude (Cowork), 2026-09-01.","prior":"61","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":"PageSpeed Insights, Lighthouse 13.4.1","date":"2026-08-27","caveat":"Was 99 earlier the same morning. One audit was failing — heading elements were not in sequentially-descending order, because a set of step cards used h4 directly under an h2. Fixed by promoting them to h3.","prior":"99","direction":"up"},{"id":"seo-score","value":"100","label":"Lighthouse SEO, mobile and desktop","grade":"MEASURED","method":"PageSpeed Insights, Lighthouse 13.4.1","date":"2026-08-27","caveat":"Unchanged through the rebuild.","prior":"100","direction":"flat"},{"id":"bp-score","value":"96","label":"Lighthouse best practices","grade":"MEASURED","method":"PageSpeed Insights, Lighthouse 13.4.1","date":"2026-08-27","caveat":"Was 92. Fixed: 14 meta tags were being emitted before the doctype, which invalidated it and triggered quirks mode. The remaining 4 points are one audit — browser errors logged to the console — caused by the Shopify Forms app embed requesting \/api\/v2\/form_instances with an empty shopify_domain parameter and receiving a 404. That is a third-party app, not this template, and it is not fixable from here.","prior":"92","direction":"up"},{"id":"lcp-desktop","value":"0.8 s","label":"Largest Contentful Paint, desktop cold","grade":"MEASURED","method":"PageSpeed Insights, Lighthouse 13.4.1, desktop. Three runs, median","date":"2026-08-27","caveat":"First Contentful Paint 0.7 s. Well inside the 2.5 second threshold. Measured by Claude (Cowork) on the live published theme, 2026-08-27, template md5 00bf31ac7eaa315964c6fa4b1e28cc18.","prior":"","direction":"new"},{"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":"5","label":"services running now","grade":"MEASURED","method":"Authenticated status pull from the local control plane, GET \/api\/status, 2026-09-01 at 18:18 UTC","date":"2026-09-01","caveat":"The orchestrator on port 3200; the Synthetic Director on 9100, loopback only; Atelier Smart DB on 9000, PostgreSQL behind Express; Ollama on 11434; an optional Vite UI on 3001. Every one answered its health check with its PID and start time. The X-DDS-Control header the pull carried is a preflight trigger, not authentication \u0026mdash; the real boundary is the host and origin allowlist, which runs on every request. Measured by Claude (Cowork), 2026-09-01.","prior":"","direction":"new"},{"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.23","label":"cloud inference spend today, against a $5 cap","grade":"MEASURED","method":"daily_costs.json as read by the control plane at 18:18 UTC","date":"2026-09-01","caveat":"Twenty-three cents of Gemini. The Synthetic Director carries its own $25 cap with $0.42 used, enforced BEFORE a call runs by a guard that throws, not reconciled afterward. Hosting is $0 because bulk inference runs on an RTX 3060 in the office; this is the cloud remainder. This page previously said $1.19 per day \u0026mdash; a different window and method. Both were honest measurements; this is today\u0026rsquo;s.","prior":"$1.19 per day","direction":"down"},{"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":"853","label":"lines \u0026middot; the control plane","grade":"MEASURED","method":"wc -l on stack-control.js and SOP-STACK-DASHBOARD.html","date":"2026-09-01","caveat":"375 lines of helper, 478 of dashboard. Thirteen allowlisted actions through a fixed map and a shell-free spawn, so request input never reaches a shell. Three stacked checks on every request: host allowlist, origin allowlist, mandatory custom header. Small on purpose.","prior":"","direction":"new"},{"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":"105","label":"test files \u0026middot; Sovereign Orchestrator Pro","grade":"MEASURED","method":"Count of *.test.ts under src\/ and scripts\/","date":"2026-09-01","caveat":"17,728 lines of tests, excluded from the source count above. Not run for this receipt; the 2026-07-29 row below records the last executed run.","prior":"","direction":"new"}]}