# Build log

Append-only: date · change · measured effect · decision.

- 2026-10-18 · Phase 0 `index.html` built from the signed-off home copy, with robots.txt, sitemap.xml and llms.txt · not yet measured (site not live; Pages project to be created) · Resume button, email, OG image and analytics beacon left out until their inputs exist; not live until the GitHub profile lists no uncleared repos.
- 2026-10-18 · Case study "The harness" published as `harness.html`, linked from the home entry, sitemap and llms.txt · not yet measured (site not live) · Source column of §6 points to "the build's evidence record" instead of a private file name; the five TBDs became plain "not measured" statements; skeleton and code downloads left unpublished; Mermaid loaded from a pinned CDN version.
- 2026-10-18 · Case study "This site" published as `this-site.html` from the signed-off v2, linked from the home entry, sitemap and llms.txt · not yet measured (site not live) · Published as the pre-registered plan with a lead line saying so; it still describes a public repo and CI that the build did not use (private repo, sweep instead of CI), and the dated note comparing plan to build waits on Nitish; private file names and TBDs replaced by plain statements.
- 2026-10-18 · `resume.pdf` added from `Resume_Public_v4.md` (two pages, selectable text); Resume button, contact email (mailto) and llms.txt lines added · not yet measured (site not live) · Employers are named in the PDF only, by Nitish's decision; no phone number; employer-internal figures left out; the email on the page is a published address, so expect spam.
- 2026-10-18 · Site live at nitishgupta.pages.dev; Pages redirects `/x.html` to `/x` (308), so canonical, og:url, sitemap, llms.txt and internal links now use the extensionless paths · live check: home, resume.pdf, sitemap, llms.txt, robots.txt 200; six external links 200, LinkedIn 999 (bots, expected) · Decision: extensionless URLs are canonical.
- 2026-10-18 · Home page container widened from 46rem to 72rem (prose capped at 62rem) · not measured · Decision: wider layout for desktop; tables and entries use the full width.
- 2026-10-18 · Home page made full width with a sticky left column for the links (Book a call, Resume, LinkedIn, GitHub, Substack, Email) and an on-page index; stacks above the content under 860 px · not measured · Decision: links live in the side column; the button row was removed from the header.
- 2026-10-18 · Home page rebuilt on branch `redesign` with Astro 7 + React 19 islands + Tailwind 4 (`web/`, built into `site/` additively): stat cards for the three headline figures, scroll-spy index, light/dark toggle (not stored), filter chips with expand/collapse, skip link, print view; copy unchanged, moved into `web/src/data/home.ts` · local Lighthouse mobile (Python static server, no compression): Performance 95, Accessibility 100, Best Practices 96 before the favicon fix, SEO 100; LCP 2.7 s, TBT 0 ms, CLS 0 · Decision: commit the built `site/` so Pages needs no build-setting change; the theme toggle is not persisted, to keep the privacy line true.
- 2026-10-18 · Home page (branch `redesign`): profile photo in the side column (WebP at 80/160 px, EXIF stripped by the build), compact two-column link buttons so the column fits shorter windows, decorative activity-grid background behind the hero (inline SVG drawn at build, faded under the text), and image slots on case-study cards (`web/src/assets/case-studies/<id>.*`, none supplied yet) · local Lighthouse mobile: Performance 95, Accessibility 100, Best Practices 100, SEO 100; LCP 2.6 s, CLS 0 · Decision: grid drawn in code rather than a bitmap (sharp at any width, follows light/dark); card images decorative (empty alt) unless `imageAlt` is set.
- 2026-10-18 · Home page (branch `redesign`): 90rem width cap removed, layout runs edge to edge; case-study cards go to three columns from 106rem (about 1700 px) · not measured · Decision: full width, as asked; prose lines stay capped at 60rem for readability. Note: Tailwind 4 sorts a px arbitrary breakpoint before its rem ones, so `min-[1700px]` lost to `lg:`; breakpoints here are written in rem.
- 2026-10-18 · Home page (branch `redesign`): case studies re-laid as gallery tiles after a designer's portfolio gallery (16:9 panel, title with first tag opposite, action bar: View image / Repository / Read the case study), image lightbox (native dialog, 1600 px WebP, plain link without JS), figure panels for tiles without an image (each figure lifted from the card's own result line); FrameProof and AI PM quiz images published, six more held in `drafts/visuals/case-study-images/` pending fixes · local Lighthouse mobile: Performance 93, Accessibility 100, Best Practices 100, SEO 100; LCP 2.9 s, CLS 0 · Decision: an image is published only after a check against the site rules (no source or corpus for OSINT, no employer detail beyond the cleared summary, no unmeasured claims or invented figures).
- 2026-10-18 · /harness and /this-site (branch `redesign`): moved onto the home page shell (side column, theme toggle, on-this-page index); mermaid diagrams pre-rendered to inline SVG at light and dark (`web/scripts/render-diagrams.mjs`, run by hand), so the pages load no CDN script; the harness loop diagram is now top-down so its text stays legible · page body text unchanged, not measured · Decision: article bodies kept verbatim as HTML fragments in `web/src/content/`.
- 2026-10-18 · Home page (branch `redesign`): wordless diagram images for the four remaining full case-study tiles (Agents on a budget, MyWarren, the harness, this site), drawn in the same style as the approved summary images; a tile's first tag capped at 40 % of the title row so long tags no longer squeeze the title · checked at 1830 px and in a true 390 px frame: no horizontal overflow · Decision: this site's image shows results part-filled below the floor line, because its page says no results are in yet; D2C and ticketing stay image-less pending consent.
- 2026-10-18 · Home page (branch `redesign`): wordless diagram images for the last two image-less tiles (AI operations for a D2C brand, ticketing and travel platform), drawn only from each tile's published summary; alt text added · build clean, forbidden-name sweep zero hits · Decision: a wordless image adds nothing beyond the summary already on the page, so it does not wait on consent P0-7, which still governs the summary text and any full case study.
- 2026-10-18 · /how-i-build/harness (branch `redesign`): How I build sub-page 1 published from `HowIBuild_1_The_Harness_v2.md` (signed off), on the Article shell with four diagrams pre-rendered to SVG · build clean, forbidden-name sweep zero hits, no [TBD] in site/, hook decision tests 20/20 · Decision: the page is built but linked from nowhere until case study 8 is signed off, as the outline ties the category to it; the 133×/364× figure is stated as 41 agent sessions per the evidence file, not the 53-transcript run v1 had cited.
- 2026-10-18 · /how-i-build/artefact-set (branch `redesign`): How I build sub-page 2 published from `HowIBuild_2_The_Artefact_Set_v3.md` (v2 signed off; v3 is sweep wording only), three diagrams pre-rendered to SVG; five skeletons (headings and field lists only) published as .md under /resources/skeletons/ · build clean, forbidden-name sweep zero hits after renaming one swept term (the build-vs-buy artefact is now called a *record*), no [TBD] on the page (the two in the skeletons are template instructions, kept) · Decision: unlinked until case study 8 is signed off, as sub-page 1; backlog stated as 111 entries in 19 group files per the evidence file, not v1's 22-group folder count; artefact rows whose contents were never read claim no AI-specific field.
- 2026-10-18 · /how-i-build/delivery-method (branch `redesign`): How I build sub-page 3 published from `HowIBuild_3_The_Delivery_Method_v2.md` (signed off), three diagrams pre-rendered to SVG; a sixth skeleton, the phase spec (headings and field lists only), published as .md under /resources/skeletons/ · build clean, forbidden-name sweep zero hits, no [TBD] in site/, hook decision tests 20/20, checked at 1400 px and in a true 390 px frame · Decision: unlinked until case study 8 is signed off, as sub-pages 1 and 2; code-review and RCA counts not quoted until reconciled; the retrieval P95 is stated as not production-scale because its corpus size is not recorded.
- 2026-10-18 · correction to 2026-10-18 · the privacy note was cut to its first sentence (no cookies, no forms) because no analytics run yet; not recorded in that entry · the second sentence returns in the same commit as the beacon.
- 2026-10-18 · late entry for 2026-10-18 · launch condition in the first entry met: the uncleared repositories were made private before the site went live · not measured · recorded late; the go-live entry did not say so.
- 2026-10-18 · late entry for 2026-10-18 · Home page: quiet grid motif behind the figure panels on tiles without an image · not measured · recorded late; the change went in with no line.
- 2026-10-18 · late entry for 2026-10-18 · Home page: wordless diagram images for three summary tiles (the sovereign OSINT platform, the enterprise AI platform, the customer-facing LLM assistant) and for the ebook library tile · not measured · recorded late; the two changes went in with no line.
- 2026-10-18 · edit to the 2026-10-18 entry on gallery tiles · a third-party portfolio's domain, which is a person's name, replaced by "a designer's portfolio gallery" · the no-names rule outranks append-only; this is the log's only edited line.
- 2026-10-18 · /how-i-build/build-log: How I build page "This site's build log" published, two diagrams pre-rendered to SVG; the five lines above appended with it · build clean, forbidden-name sweep zero hits, no open placeholder in the published pages, hook decision tests 20/20 · Decision: unlinked until case study 8 is signed off, as the other How I build pages; two counts from the private history quoted, no commit or message published; from this line on, the Change field names no draft file or working branch.
- 2026-10-18 · /how-i-build/operating-model: How I build page "The operating model" published, five diagrams pre-rendered to SVG, its catalogue table stacked into one card per row on phones; /how-i-build/delivery-method gains one link to it · build clean, forbidden-name sweep zero hits, internal links and anchors resolve, hook decision tests 20/20, checked at 1400 px and 390 px · Decision: unlinked until case study 8 is signed off, as the other How I build pages; three phrases carrying figures with no pinned source (how far behind a status report was, how long a stale server ran, how many files a lookup took) published without the figure; no document from the build reproduced.
- 2026-10-18 · /agents-on-a-budget: case study "Agents on a budget" published, three diagrams pre-rendered; the home tile links it · build clean, forbidden-name sweep zero hits, every internal link and anchor resolves, hook decision tests 20/20, checked at 1400 px and 390 px; 22 of 23 figures checked word for word against the incident records, the 23rd against the evidence block · Decision: three figures corrected before publishing (an economics file's size, a day count, and corrections per day measured on two days, not every day); the scripts, hooks and incident records not published; the client repository stays unnamed.
- 2026-10-18 · Home page gains a How I build section and menu entry listing The harness, The artefact set, The delivery method, The operating model and This site's build log; /harness links them in place of its "not published yet" line; sitemap.xml and llms.txt list all six new pages · same checks as the line above · Decision: Plan versus as built stays unpublished until the case study it cites is published.
- 2026-10-18 · Production now serves the redesign: the rebuilt home page with its case-study tiles and How I build section, The harness and This site on the new layout, Agents on a budget, and the five How I build pages · every page returned 200 on the branch preview before the merge; production checked after the push · Decision: the build settings are unchanged, since the built pages are committed; dates on the lines above stay the dates the changes were made, and this line records the day they were first served.
- 2026-10-19 · Every page moves to a three-column shell: a site menu in the left column listing every page with the current one marked, the reading column uncapped so tables and diagrams run its full width, the on-this-page index in a right column from 1280 px (a fold-out above the page below that), a breadcrumb and previous/next links on every sub-page, and a fold-out menu on phones · not measured yet: the change answers the owner's review of the live site on 2026-10-18 (an empty right third on wide screens, no way back to the menu from a sub-page, no links between sibling pages); checked at 1880, 1024 and 390 px in both themes' CSS, every internal link and anchor resolves, forbidden-name sweep zero hits, hook decision tests 20/20 · Decision: prose keeps a measure of 58 rem rather than filling the column, since a wider line reads worse; the artefact table's rows stay unlinked until the specimen pages exist.
- 2026-10-19 · Skeleton downloads open as pages: each of the six Markdown skeletons is rendered in the site shell at /resources/skeletons/<name> with a "Download the Markdown" button under its heading, the SOP phase-gate skeleton shows its Mermaid as the pre-rendered diagram with the source folded beneath, an index at /resources/skeletons lists all six, the menu's Skeleton downloads entry becomes a section with the six pages, and the six links on The artefact set and The delivery method now open the pages; sitemap.xml and llms.txt list the seven new URLs · answers the owner's preview review of 2026-10-19 (a click on a download opened raw Markdown); 16 pages built, every internal link and anchor resolves, sitemap complete, forbidden-name sweep zero hits, hook decision tests 20/20, checked at 1400 and 1024 px · Decision: the Markdown files stay the download and are served unchanged beside the pages; the build fails if the diagram source in the Markdown drifts from the rendered SVG, so the picture cannot disagree with the file.
- 2026-10-19 · /artefacts: nine specimens (PRD, eval-gate report, LLM-risk mapping, build-vs-buy record, phase spec, sign-off log, RCA, process map, ways of working) with real structure and dummy content, each its own page on the shell; seven also download as Markdown; linked from the artefact set, the operating model, the menu and the home page; sitemap.xml and llms.txt list them · build clean (26 pages), forbidden-name sweep zero hits, every internal link and anchor resolves, hook decision tests 20/20, checked at 1400 px and 390 px; OWASP edition named as 2025 (archived), remap to 2026 left to Nitish
