AHMAD:// Available for work — open to remote roles and contracts

Colophon — how this site is built

This portfolio is dogfooding: it holds itself to the same policy gate its subject builds for agent runtimes. Below is the entire trick, so you can rebuild it — or audit us for skipping it.

01The evidence loop

  1. Claims are data, not prose. Every metric on the site must resolve to an entry in evidence.json (claim → status → URL). A page that cites a claim without a ledger entry fails npm run build.
  2. Stats are fetched, not typed. A build-time script pulls repo counts, release version, CI conclusion and the commit feed from GitHub/npm and checks the snapshot into the repo. No stale numbers; no cherry-picked ones — the xr CI row says "failure" when it's failure.
  3. Nightly verifier. A scheduled action re-requests every evidence link and demo URL on the site. A dead link doesn't disappear; it shows up as a row in the footer stamp and in the verify command output. Link rot becomes a visible state, not an accusation waiting to happen.
  4. Statuses are derived. Shipped/Live/On-hold chips compute from push dates and repo state — they cannot be manually inflated, because they aren't typed anywhere.
  5. Copy gate. A banned-phrase lint (motivational adjectives, rocket emoji, "welcome to my…"-style openers — full list in `check-data.mjs`) runs pre-build.
  6. The ask assistant has no model in the loop. A build-time script chunks every page into quotable passages; the browser scores them with TF-IDF and answers with quotes linked to their source. It cannot invent a fact about me that isn't on this site — /ask explains the pipeline.
  7. Taste, enforced.

02Construction

  • Astro 5, static output — content ships as HTML; the page is complete with JavaScript off.
  • The command palette + shell are hand-rolled vanilla JS — measured at build: 13.9 KB raw / 6.0 KB gzipped total on the home page (shell, boot sequence, and the ask engine included), no framework, no cmdk — with combobox/listbox semantics, focus return, history, and a deep-link ?cmd= verb. The ask assistant additionally fetches a static 62 KB (≈20 KB gzipped) chunk index — only when you first open it.
  • Type: Martian Mono Variable (display), Geist Mono (console chrome/data), Inter (prose). Self-hosted, variable, latin-subset — three files, no font CDN.
  • Dark-first tokens with a real light inversion; prefers-reduced-motion, prefers-contrast and Windows forced-colors are implemented, not aspirational.
  • Deploy: GitHub Pages straight from this repo — a push runs the same checks this page describes, builds, and ships; the nightly link verifier lives in the same Actions. The whole site costs what a cron job costs.

03State of the machine

  • data snapshot: 2026-09-01 (repos, CI, npm)
  • last evidence check: 2026-09-01 → 46/49 pass · 3 warn · 0 fail
  • budgets: zero-JS content path; console island 4.5 KB gz (the only JS on the page); fonts ≤ 3 files; images are screenshots or diagrams, never generated decoration.

Known limits of this page: the palette fuzzy-matches verbs, not pages; the light theme is tested, not art-directed; OG images are static SVG/PNG templates. All three are on purpose — a site that ships receipts shouldn't ship promises it gates on itself.

ahmad@xr:~% ask — grounded in this site · no LLM, no invented answers

try: