This page reports reproducible measurements for the live site and its component development system. Every number comes from generated build output, test results, or metadata — not fabricated values or historical reports.

Measurement date
July 22, 2026 at 01:24 PM UTC
Source commit
0794b9c
Environment
Node v24.18.0, astro static
Type
Static analysis of build output, HTML inspection, and test-result parsing. Not real-user monitoring.

Quality overview

Routes

22generated HTML pages

Storybook stories

3027 component + 3 foundation

A11y tests

5555 passed · 0 failed · 0 skipped

Route a11y tests

77 passing

Storybook a11y tests

2727 passing

Production JS (static)

8.0 MB2.0 MB gzip · 53 files

Per-route JS (from HTML)

0 Breferenced by each normal page (single shared bundle)

Production CSS

177.2 KB12 stylesheets

Storybook isolated

Yes0 Storybook references in production JS/CSS

Performance

No Lighthouse report is currently available. Run pnpm lighthouse:all to generate one, then pnpm quality:generate to include it here.


Production bundle

Bundle figures are from the Astro-only production build in dist/. Storybook assets under /design-system/lab/ are measured separately and are never loaded by ordinary site pages.

JavaScript files present in the deployment

These are all JavaScript files present in dist/ (source maps excluded). Not every file is loaded by every route. See the route-measurement tables below for per-page behavior.

CategoryTotal bytesFiles
Astro page scripts7.5 MB43
Pagefind search index and UI430.9 KB6
Partytown analytics offloading94.1 KB4
Total8.0 MB53

All JavaScript files present in the Astro-only dist/ directory (source maps excluded). Not all files are loaded by every route. See routeMeasurements below for per-page loading behavior.

Route-level JavaScript references

Each row shows which JavaScript assets a route’s generated HTML references, their total size, and estimated inline script bytes.

RouteReferenced JSTotal bytesInline script bytesFeatures
/<code>js?id=G-70E1BWCFJ3</code>0 B5.8 KBcore
/blog/<code>js?id=G-70E1BWCFJ3</code>0 B5.9 KBcore
/portfolio/<code>js?id=G-70E1BWCFJ3</code>0 B6.0 KBcore
/portfolio/design-system/<code>js?id=G-70E1BWCFJ3</code>0 B6.2 KBcore
/portfolio/site-quality/<code>js?id=G-70E1BWCFJ3</code>0 B6.2 KBcore
/blog/good-agent-context-is-carved-not-copied/none0 B0 Bcore
/search/<code>js?id=G-70E1BWCFJ3</code>0 B6.0 KBcore
/contact/<code>js?id=G-70E1BWCFJ3</code>0 B8.3 KBcore
Full asset details by route

/

AssetBytesCategory
https://www.googletagmanager.com/gtag/js?id=G-70E1BWCFJ30 Bcore

Inline script bytes: 5.8 KB

/blog/

AssetBytesCategory
https://www.googletagmanager.com/gtag/js?id=G-70E1BWCFJ30 Bcore

Inline script bytes: 5.9 KB

/portfolio/

AssetBytesCategory
https://www.googletagmanager.com/gtag/js?id=G-70E1BWCFJ30 Bcore

Inline script bytes: 6.0 KB

/portfolio/design-system/

AssetBytesCategory
https://www.googletagmanager.com/gtag/js?id=G-70E1BWCFJ30 Bcore

Inline script bytes: 6.2 KB

/portfolio/site-quality/

AssetBytesCategory
https://www.googletagmanager.com/gtag/js?id=G-70E1BWCFJ30 Bcore

Inline script bytes: 6.2 KB

/blog/good-agent-context-is-carved-not-copied/

No external JavaScript referenced.

Inline script bytes: 0 B

/search/

AssetBytesCategory
https://www.googletagmanager.com/gtag/js?id=G-70E1BWCFJ30 Bcore

Inline script bytes: 6.0 KB

/contact/

AssetBytesCategory
https://www.googletagmanager.com/gtag/js?id=G-70E1BWCFJ30 Bcore

Inline script bytes: 8.3 KB

Feature-specific assets

FeatureDeployment bytesRoutes requestingLoading behavior
Pagefind (search)430.9 KBnoneLoaded only on /search/. Not requested by other routes.
Partytown (analytics)94.1 KBnoneScript loader present in HTML head on most pages. Worker scripts load lazily on user interaction.
Turnstile (contact form)ExternalnoneLoaded only on /contact/. Cloudflare external asset.
Storybook lab7.5 MBnoneNot requested by any normal page. Only available at /design-system/lab/.

Component lab (Storybook)

The Storybook application at /design-system/lab/ is a separate application. Its JavaScript is not loaded by ordinary blog pages. The isolation verification below confirms this.

MetricValue
Total JavaScript7.5 MB
Total JavaScript (gzip)1.9 MB
Files44
Largest Storybook chunks
ChunkSizeCategory
/sb-manager/globals-runtime.js3.1 MBmanager UI
/sb-manager/runtime.js1.2 MBmanager UI
/_astro/iframe-DeYqb7sa.js806.8 KBiframe bundle
/_astro/components-CrZM8Ux2.js603.9 KBother
/_astro/axe-D4o7XrdK.js565.9 KBa11y addon (axe-core)

Storybook isolation

Storybook is built as a separate static application and copied intodist/design-system/lab/ during deployment. It is not part of the Astro build graph and is not imported by any production component.

CheckResult
Storybook assets isolated to /design-system/lab/
Static scan: Storybook references in production JS/CSS0 found (clean)
Network test: ordinary pages loading Storybook assets0 (verified via Playwright)

static scan of JS/CSS files excluding dist/design-system/lab/ and confirmed by Playwright network-interception tests in tests/storybook-isolation.spec.ts.

The Storybook bundle is approximately 7.5 MB(uncompressed). This is the weight of a design-system development tool, not the blog. It is served only to users who explicitly visit/design-system/lab/.


Accessibility verification

Automated accessibility checks run against every Storybook component story and every primary site route. The tests use axe-core through Playwright. Results come from the last pnpm test:e2e run.

ScopeTestsPassedFailedSkipped
All a11y tests555500
Storybook component stories27270
Site routes770

What remains manual

Automated checks only. Keyboard flow, screen-reader behavior, content clarity, zoom/reflow, motion behavior, and visual focus remain manual review.


Component system (Storybook)

The component lab at /design-system/lab/documents every reusable Astro component in the design system. Stories cover default states, edge cases (long labels, narrow viewports), and fixture-backed composite layouts.

MetricValue
Total stories30
Component stories27
Foundation stories3
Storybook accessibility tests27

See Design System Companion for component documentation, design tokens, and usage guidelines.


Build and validation

The following commands protect the site. Most run in CI on every push to main.

CommandPurpose
pnpm typecheckAstro and TypeScript type checking
pnpm lintBiome linting and formatting
pnpm buildProduction Astro build
pnpm test:e2ePlaywright route, accessibility, and Storybook tests (produces test-results/test-results.json)
pnpm build:storybookStorybook static build
pnpm verify:storybook-isolationVerify Storybook assets do not leak into production site
pnpm quality:generateGenerate site-quality.json from current build output and test results

GitHub Actions on push to main. See .github/workflows/astro.yml.


Measurement limitations

  • Lighthouse is a lab measurement. Results vary by environment, device, and network conditions.
  • Automated accessibility tools detect only a subset of WCAG criteria. They do not replace manual review.
  • Storybook accessibility tests check isolated components, not complete user journeys or page layouts.
  • A passing build pipeline does not measure usability, content quality, or design consistency.
  • Production Core Web Vitals require real-user monitoring (RUM) data, which this site does not currently collect.
  • Static file sizes are raw bytes from the build output. Actual transfer size depends on hosting compression, cache state, and HTTP version.
  • Browser-measured transfer sizes require running Playwright network-capture tests against a local preview.
  • Storybook bundle weight is measured separately and is not loaded by ordinary blog pages.
  • Route-level JavaScript is determined by inspecting generated HTML for <script> references. Dynamic or lazy-loaded scripts are not captured.
  • Pagefind assets are present in the deployment but only requested by /search/.
  • Partytown worker scripts are present in the deployment but loaded lazily by the Partytown library.
  • Inline script bytes are estimated from HTML content. They exclude server-rendered JSON-LD and inline styles.

Methodology

Measurement groupTypeSource
staticDeploymentstatic analysisdist/ directory (Astro-only build)
routeMeasurementsstatic analysisGenerated HTML files in dist/
componentLabstatic analysisstorybook-static/ directory
storiesstatic analysis/home/runner/work/astro.ericcarlisle.com/astro.ericcarlisle.com/storybook-static/index.json
accessibilitytest results/home/runner/work/astro.ericcarlisle.com/astro.ericcarlisle.com/test-results/test-results.json
lighthouselab measurementlh-reports/ directory
isolationstatic analysisdist/ directory