Skip to content

Delete dead code, unused CSS and superseded media across the site - #192

Open
sdcarlson wants to merge 10 commits into
mainfrom
chore/delete-dead-code
Open

sdcarlson wants to merge 10 commits into
mainfrom
chore/delete-dead-code

Conversation

@sdcarlson

Copy link
Copy Markdown
Contributor

What this does

Deletes code, styles, scripts and media that nothing builds, serves, runs or links, across the whole site. 10 commits, 33 files deleted (79.9 MB), 71 files trimmed, 1,654 lines removed.

Nothing a visitor or staff member sees changes. Every surviving built file is byte-identical to main, except stylesheets that lost unused rules and the cache-busting version bumps those require, and every rendered element keeps its exact computed style.

before after
built site dist/ (uploaded by every CI run, downloaded by the deploy) 182.9 MB 100.3 MB (-45%)
/syberlabs.css, loaded by every static page 50,443 B 45,679 B (-9%)
homepage CSS bundle 66,376 B 58,910 B (-11%)

How each deletion was proven dead

The bar: deleting it changes no production output and breaks no tool or check anyone runs. Evidence, not inference:

  1. Byte-exact CI replay. A script replays every run: step of this repo's own validate job, read from .github/workflows/cloudflare-pages.yml at run time, then hashes all of dist/. Two builds of main hash identically (one random temp-path comment in the Function bundle is normalized), so any difference is caused by the change. The integrated branch passes every step: account nav 9/9, probe 15/15, staff 207/207, site chrome, arena hashes, pnpm build:site with every test -s and grep assertion, the wrangler Function build and its guards, and qa.mjs (24 pages, 0 errors, 0 warnings).
  2. Exact output diff against main. 160 files are byte-identical, including dist/_worker.js/index.js (the staff Function), /syberlabs.js, /system-map.js and every hashed chunk. The only differences:
    • Removed: the 18 public files listed below.
    • Renamed: 4 hashed assets (main-*.css/.js, system-map-mount-*.css/.js), because their CSS shrank. The two JS chunks are byte-identical once the hash names are normalized.
    • Changed: the 14 trimmed stylesheets; 20 static pages and index.html, whose only change is the stylesheet ?v= query or hashed asset names (checked by normalizing both and comparing); system-map.js (chunk names only); and 3 static scripts with dead symbols removed (projects/site-data.js, projects/project-template.js, projects/experience-v7.js), which change no prerendered page.
  3. Computed styles. Every element of every page, at 1440 and 390 wide, with lazy system maps mounted and scroll reveals triggered, has the same computed style (all properties, plus ::before and ::after) as main. The snapshot is deterministic (two runs of main compare identical) and sensitive (a one-declaration change to a project stylesheet is caught on the element it touches). Staff pages are server-rendered, so the staff.css deletions were checked against the view markup (for example .portal-app-art svg cannot match: .portal-app-art is itself the <svg>).
  4. Two independent agents per area. One listed candidates with evidence; a separate skeptic tried to prove each one live and refused anything uncertain (94 candidates refused; the notable ones are below).
  5. Outside consumers of public files. Every deleted public file was searched for by name in the other SyberLabs repositories (GitHub code search), local clones, and Slack. No hits, except syber-logo.webp in SyberLabs/presence media/mateo/manifest.json, which is presence's own vendored copy (assets/brand/syber-logo.webp, same SHA-256), not a syberlabs.io URL.

What is deleted

Staff Function and tests (2cb36b0, 5a29ef9, 294d50b)

  • scripts/changes-import.mjs: the one-off import of the retired "What changed" entries. MasterMind RFC 0002 D5 retired it ("there is no import script"); its only runner was its own test, deleted with it.
  • The unused text() response helper, export keywords nothing imports, D1 shim methods (exec, raw) no server code calls, and test-helper options no test passes.

Homepage app (1596b1c, 3b4d146)

  • Six modules nothing imports: src/site/chamber.js, factory-stats.js, slot.js, strike.js, sketch-plate.js, sketch-gallery.js, plus src/sketch-gallery/ (data and 1.2 MB of media for the removed homepage gallery).
  • Unused symbols in live modules: headerScroll(), an unused helper in orb.js, the retired Living Lab exports in src/living-lab/scene.js (with the 4 tests that only exercised them; cleanText, which the Orb uses, stays tested), and unimported export keywords. Rollup had already dropped all of it from the bundles.

Media and static scripts (01e3876, f17c566, 97fc1f7)

  • 13 superseded RISE demo files: earlier cuts, the two Tokyo Drift walkthrough versions, the visual-sequence clips, their posters and an unwired rooms poster. /rise-demo/ and /projects/rise/ play rise-marketing-20260929-v3.mp4, which stays.
  • syber-logo.webp and footer-orb.webp (and their names in assemble-dist.sh), two retired Gyre stills, and plus/plus.js, which no page has loaded since Clarify RISE customer access and showcase Mateo’s engineering work #123.
  • Dead symbols in projects/site-data.js, projects/project-template.js and projects/experience-v7.js, and a hidden layer in scripts/og-cards.mjs (all 18 cards render byte-identical).

Tooling (4283502)

  • scripts/brand-recolor.py, the one-time palette migration from the September rebrand; an unused import and a SITEMAP_EXEMPT set in qa.mjs that could never change a result; a stale entry and comment in llms.mjs.

Stylesheets (6e44d5e)

  • About 22 KB of rules for markup that no longer exists, across 16 stylesheets (src/syberlabs.css, src/home.css, the system maps, staff.css, plus/plus.css, the research reports, rise-demo, services, stack, jev, approach, mateo). Selectors were checked against markup, script-built class names, server views and the kit's runtime scripts. kit/v2/syber-atlas.css is untouched.
  • As this repository's CLAUDE.md requires for unhashed stylesheets, the 20 static pages that link a changed one move from ?v=20261030 to ?v=20261031. After release, check a production tab opened before the deploy.

Public URLs that stop resolving

Each was unreferenced by any page, script, stylesheet, data file or other SyberLabs repository, and never named in Slack. Git history keeps every file.

Kept on purpose (decisions for an owner, not dead code)

  • Mateo's superseded intro films (unversioned and V7 to V12 with posters and captions, 15 files, 50 MB). docs/MATEO_VIDEO_HANDOFF.md (lines 46, 52, 58) and src/mateo-video.js line 2 promise these URLs stay available for rollback. Retiring them is Mateo's call. Worth weighing: V12 still serves the Attest passage that V13 cut as overbroad, and git history already keeps every version.
  • The Barn and SyberRuntime system maps. No page mounts them, but they compile into /system-map.js, and a 2026-10-30 Slack message about Restore readable system-map outcome labels and actions #185 shows all six maps still being checked. Removing them changes a shipped bundle.
  • The gyre-sophia and gyre-motion clips, still described by the served /mateo/demos/README.md and kit/v2/README.md.
  • mateo/proof/githits-tests.json, the evidence record behind the public "44 passing tests" claim.
  • Dead code that still ships in /syberlabs.js and the homepage bundle (for example fastGL() and counters() in the field and site scripts, and the retired hero-frame branch). Removing it changes unhashed /syberlabs.js and needs cache-busting across every page, so it belongs in its own change.
  • Unread custom properties and the Midnight theme's kit-component overrides (added one day ago), and the documented staff.css button alias.

Merging deploys production

Merging to main runs the Pages workflow, which builds and publishes syberlabs.io. There is no separate release step. After the deploy, open a production page in a tab that was already open before it and confirm the stylesheet version is ?v=20261031.

Keys and sign-offs

Follow-ups

  • Mateo: decide on the intro rollback media above.
  • Stale docs this sweep did not rewrite: kit/v2/README.md lines 61 and 62 and mateo/demos/README.md line 19 still say the hero plays gyre-sophia (it has played gyre-full since Hero: a still headline, SyberLabs / High-Fidelity Systems, on the Gyre alone #183); docs/SYSTEM_MAPS.md line 3 says the RISE map is unmounted and names src/system-map-embed.jsx.
  • The shipped dead code above, as one packet with the /syberlabs.js version bump.

Generated by Claude Code

claude added 10 commits October 31, 2026 21:33
Deleted:
- scripts/changes-import.mjs (3038 bytes, no public URL: scripts/ is
  not copied into dist/).
- Its test in server/test/views.test.js ("changes-import.mjs: SQL with
  quotes round-trips; one bad entry refuses the run"), the section
  comment above it, the imports and the ROOT constant only that test
  used, and the header's mention of it.
- The two server/CONTRACT.md passages that described the script, and
  "or import" in the validateEntry comment in server/views/changes.js.

Evidence that it was dead:
- Its own header calls it a one-off import of the old projects/latest.js
  entries into D1. That job is done: CONTRACT.md records that production
  holds the 11 entries.
- MasterMind RFC-0002, which wins over CONTRACT.md, retired it: D5 says
  "there is no import script", runbook 8.4.9 has the entries typed into
  /admin/changes by hand, and review row R2-4 says the script and its
  test clause are deleted.
- No package.json script, workflow, assemble-dist.sh, README or docs page
  runs it. Its only runner was its own test. No other SyberLabs repo
  uses it (GitHub code search finds only this repo and the RFC row that
  deletes it), and Slack has no mention.
- validateEntry stays exported: changes.js and views.test.js use it.
- The Function bundle rebuilds byte-identical to the baseline; server
  tests pass 207 of 207 (208 before; the one removed test was the
  script's own).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHrJ4hmTtR1RFNpc215EK7
Deleted:
- server/http.js: text(body, init), a plain-text response builder that
  nothing calls, and its entry in the server/CONTRACT.md http.js list.
- server/oauth.js: the PROVIDERS and enabledProviders re-exports. The
  googleEnabled re-export stays (views/account.js imports it).
- The export keyword only, on declarations each used only inside its own
  module: providers.js PROVIDERS, account-api.js ACCOUNT_BASE, http.js
  cspFor, views/account.js ADD_GOOGLE_COPY and GOOGLE_ADDED,
  views/audit.js ACTION_SENTENCES, views/changes.js STATES, LABELS and
  MESSAGES, views/error.js STAFF_UNAVAILABLE_HTML, views/people.js
  renderPeople, views/roles.js NAME_COPY and renderRoles, and
  views/signin.js UNAVAILABLE_HTML, githubForm, googleForm and
  signinTitle.

Evidence that it was dead:
- No module, test or script imports any of these names (static imports,
  re-exports and the destructured await import() calls in the tests),
  and no other SyberLabs repo or Slack message names them; GitHub code
  search finds each only in its own file here.
- Only github.js and google.js are namespace-imported, so no export list
  reaches the bundle. text() was already tree-shaken out of it.
- CONTRACT.md lists none of the de-exported names. Exports it documents
  as module API are untouched.
- The Function bundle rebuilds byte-identical to the baseline, every
  server module still loads on its own, and server tests pass 207 of 207.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHrJ4hmTtR1RFNpc215EK7
Deleted, all under server/test/ (test code only, never bundled):
- d1-shim.js: D1Shim#exec(sql), Statement#raw(), and the raw and exec
  members of brokenDb(); the header now lists the surface that is left,
  which is CONTRACT.md's D1 surface (prepare/bind/first/all/run/batch).
- migration.test.js: the one shim self-test assertion on raw().
- helpers.js: the OAUTH_COOKIE constant.
- Unused imports: newId in oauth.test.js, sha256Hex in people.test.js.
- Helper options and parameters that no call passes: request()'s now in
  account-api.test.js; render()'s now and adminEnv()'s default in
  board.test.js; ctx()'s now, add()'s u and opts, and finish()'s changes
  and handler in google.test.js; start()'s provider in oauth.test.js;
  ctx()'s extra in people.test.js; req()'s path default and ctxFor()'s
  now in session.test.js; ctxFor()'s path and method in views.test.js.
  Each now uses the value its default always supplied.

Evidence that it was dead:
- Server code calls only prepare, bind, first, all, run and batch on D1.
  Nothing calls exec() on a D1 binding (the only exec calls go to the raw
  node:sqlite handle), and raw()'s only caller was its own assertion.
- No test imports OAUTH_COOKIE from helpers.js (they take it from
  ../oauth.js), and newId and sha256Hex were never used in those files.
- Every call site of each helper was checked: none passes the removed
  option, and add() never read u.
- Same 207 test names pass before and after this commit; the Function
  bundle rebuilds byte-identical to the baseline.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHrJ4hmTtR1RFNpc215EK7
Delete client modules that nothing imports. Their last importers left
src/App.jsx in earlier homepage rebuilds (#118, #120, #142), so Vite never
loads them and dist/ does not contain them.

Deleted (none had a public URL: assemble-dist.sh does not copy src/ and
Vite emits only what the module graph reaches):
- src/site/chamber.js (3956 B): hero reading animation, mountChamber
- src/site/factory-stats.js (2264 B): live GitHub tile numbers, factoryStats
- src/site/slot.js (8200 B): slot-reel headline, mountSlot
- src/site/strike.js (17087 B): Composer card lightning, mountStrike
- src/site/sketch-plate.js (12957 B): Plate IX kaleidoscope, mountSketchPlate
- src/site/sketch-gallery.js (820 B): gallery play-on-scroll,
  mountSketchGallery
- src/sketch-gallery/ (1222124 B): index.js and six timelapse media files
  (sketch-1..3 .mp4 and .webp), reachable only through index.js, which
  nothing imports
- the dangling "(factory-stats.js)" mention in a src/site/site.js comment

Evidence:
- git grep for each path, basename, stem, mount function, data attribute
  and CSS class finds no reference outside the deleted files, and no
  dynamic or glob import could build these paths.
- No other SyberLabs repository uses them: read-only clones of RISE,
  Flyspace, MasterMind, SyberWork and OSAHR_Cell, and GitHub code search
  for the file names (only dated audit citations of factory-stats.js and
  strike.js in MasterMind RFC-0002, which are not links). Slack has no
  mention of any of the file names.
- The CI validate replay passes and dist/ is byte-identical to the
  baseline (221 files: 0 removed, 0 added, 0 changed).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHrJ4hmTtR1RFNpc215EK7
Delete symbols in modules that still ship but that nothing calls or
imports. Each was already tree-shaken out of the bundles.

Deleted:
- src/site/motion.js: headerScroll(), never imported since it was added
  in #54. The module comment's header() line stays: it describes the
  .is-scrolled toggle that progress() still performs.
- src/site/orb.js: the unused ss smoothstep helper.
- src/living-lab/scene.js: SAMPLES, supportsGraphemes (and its comment),
  characters, longText, makeScene and phraseDuration. They served the
  retired Living Lab hero and only scripts/living-lab.test.mjs imported
  them. cleanText, limitText and MAX_CHARACTERS stay: the Orb typing bar
  uses cleanText.
- scripts/living-lab.test.mjs: the four tests that only exercised the
  deleted exports. The kept tests now assert on cleanText(x), which is
  the text makeScene(x) returned, measure ASCII output with .length
  instead of characters(), and drop the supportsGraphemes assertion.
- src/site/site.js: export { reducedMotion } and the export keyword on
  counters, mountFieldLazy and mountSigils3d. Only boot is imported.
- src/system-maps/Stage.jsx: the export keyword on place and geometry.
  Only the default export is imported.

Evidence:
- git grep finds no importer or caller of any removed symbol. GitHub
  code search finds them only in this repository (RISE-Sketch's
  makeScene is its own, unrelated function).
- The CI validate replay passes and dist/ is byte-identical to the
  baseline (221 files: 0 removed, 0 added, 0 changed), including
  /syberlabs.js, /system-map.js, the hashed chunks and the Function.
- Tests: account-nav 9/9, probe 15/15, server 208/208 before and after;
  living-lab 8/8 before, 4/4 after.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHrJ4hmTtR1RFNpc215EK7
/rise-demo/ and /projects/rise/ play rise-marketing-20260929-v3.mp4
(the CI workflow asserts it). These earlier cuts, posters and one
never-wired poster are published by the rise-demo/ copy in
scripts/assemble-dist.sh but nothing links them.

Deleted (bytes, public URL https://syberlabs.io/<path>):
- rise-demo/rise-demo-20260926.mp4 (17621227)
- rise-demo/poster-20260926.jpg (76776)
- rise-demo/rise-demo-20260927.mp4 (10296397)
- rise-demo/rise-demo-20260927-v2.mp4 (10032576)
- rise-demo/rise-visual-sequence-20260927.mp4 (1539662)
- rise-demo/visual-sequence-poster-20260927.jpg (216902)
- rise-demo/rise-visual-sequence-20260927-v2.mp4 (3982941)
- rise-demo/visual-sequence-poster-20260927-v2.jpg (298735)
- rise-demo/rise-tokyo-drift-jev-20260929-v1.mp4 (18672268)
- rise-demo/rise-tokyo-drift-jev-20260929-v1-poster.jpg (202896)
- rise-demo/rise-tokyo-drift-jev-20260929-v2.mp4 (18985418)
- rise-demo/rise-tokyo-drift-jev-20260929-v2-poster.jpg (204339)
- rise-demo/rooms/rise-rooms-begin-20261005-poster.jpg (105180)

Evidence:
- git grep over every tracked file (kit/v2, server, src, CI included)
  finds no full path, basename, stem or date fragment of any of them,
  and the baseline dist/ text names none. No script builds rise-demo
  media names; the gallery link to the rooms MP4 carries no poster.
- History: last references removed in 5bd05e5 and 07687de
  (2026-09-27), a01dacb, 37b26f0 and ec262e1 (2026-09-29). The rooms
  poster was never referenced (git log -S over full history).
- Read-only clones of rise, flyspace, mastermind, mastermind-rfc and
  syberlabs/{RISE,Flyspace,SyberWork,OSAHR_Cell}: no hits. GitHub code
  search in org:SyberLabs for each filename: 0. Slack search for each
  filename: 0.
- SyberLabs/presence lists clips "Tokyo Drift with Jev v2" and
  "Visual sequence v2" under the page URL
  https://syberlabs.io/rise-demo/, not the files; the page has not
  shown them since 2026-09-29 and 2026-09-27 and is unchanged here.
- CI replay PASS; the dist manifest loses exactly these 13 paths.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHrJ4hmTtR1RFNpc215EK7
These files are published (scripts/assemble-dist.sh copies them) but
no page, script, stylesheet or bundle loads them any more.

Deleted (bytes, public URL https://syberlabs.io/<path>):
- syber-logo.webp (117684): the WebP twin of syber-logo.png. Its last
  page use, the homepage picture/srcset, left in ff0ba96 (2026-10-09).
- footer-orb.webp (68276): footer art, removed from every page in
  19aecb4 (2026-10-26).
- mateo/demos/gyre-hero.jpg (59095): hero still added in 6f50ef9 and
  replaced by the motion clip in eb1f179 (2026-10-26).
- mateo/engines-gyre.webp (39834): its figure on /mateo/ and the
  homepage image went in 6f50ef9 (2026-10-26); the sibling
  engines-ostensoria.webp stays.
- plus/plus.js (7359): the "Hear the clock" script. plus/index.html
  stopped loading it and dropped its [data-hear] markup in 39d440e
  (2026-10-11); the page now loads only /syberlabs.js.
- scripts/assemble-dist.sh: the two root names leave the cp list,
  which fails on a missing source.

Evidence:
- git grep over every tracked file finds no path, basename or stem of
  these files except the cp list (now edited) and one comment in
  plus/plus.css ("(plus.js)") above .hear-* rules that no markup uses;
  plus.css belongs to the stylesheet sweep. kit/v2 names none of them.
  The baseline dist/ text names none outside that comment.
- Read-only clones (rise, flyspace, mastermind, mastermind-rfc,
  syberlabs/{RISE,Flyspace,SyberWork,OSAHR_Cell}): no hits ("plus.js"
  matches only RISE's own unrelated modules). GitHub code search in
  org:SyberLabs: 0 for each, except syber-logo.webp in
  SyberLabs/presence media/mateo/manifest.json, which lists presence's
  own copy assets/brand/syber-logo.webp (same SHA-256), not a
  syberlabs.io URL. Slack search for each filename: 0.
- CI replay PASS; the dist manifest loses exactly these 5 paths.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHrJ4hmTtR1RFNpc215EK7
Code that still ships in live files but never runs or is never read.

Deleted:
- projects/site-data.js: the exports LINKEDIN, GITHUB, RISE_TRY (and
  its comment), SKETCH_APP, workWithUs and skills. Every importer
  names its imports and none names these (App.jsx, project-template,
  site-chrome, llms, og-cards, githits-snapshot, src/githits.js,
  account-nav.test and the staff views); git grep -w finds only the
  declarations ("skills" elsewhere is prose).
- projects/experience-v7.js: the fixture parameter of the private
  vulnerabilityCell(). Its one call passed the literal false, so
  !fixture was always true and the id list renders exactly as before.
- projects/project-template.js: projectRow()'s intro option, the
  Technology lookup and the intro and stack spans it guarded. The only
  call, others(), passed { intro: false }, so the branch never ran;
  no other module, clone or SyberLabs repository calls projectRow.
- scripts/og-cards.mjs: the .stars { display: none } rule and its
  empty div, hidden since the Midnight theme; display: none paints
  nothing and no selector depends on the element.

Evidence:
- Isolated builds: the homepage bundle, /syberlabs.js, /system-map.js
  and the Function bundle are byte-identical with each edit.
- CI replay PASS (account-nav 9/9, probe 15/15, server 208/208, qa
  24 pages 0 errors 0 warnings). Only the three edited scripts change
  in dist/. The four prerendered project pages, which render
  projectRow for every other project, are byte-identical.
- Computed styles of every page at 1440 and 390 wide match the
  baseline (one field canvas on the arena page varied once and
  matched on re-check; that page's files are unchanged).
- og-cards.mjs before and after, run in a scratch copy, renders all 18
  cards byte-identical.
- GitHub code search in org:SyberLabs: RISE_TRY, SKETCH_APP,
  workWithUs, projectRow and vulnerabilityCell occur only in this
  repository; no repository imports the scripts by URL.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHrJ4hmTtR1RFNpc215EK7
Delete what no build, check or tool reaches. The site does not change:
a replay of every CI validate step passes, and all 221 dist files,
including the Function bundle, hash identical to the 5ce736f baseline.

- scripts/brand-recolor.py (2214 bytes, no public URL; scripts/ is not
  copied into dist): the one-time palette migration from the 2026-09-27
  rebrand (b539f53, its only commit). Nothing runs or names it: no hit
  in this tree, CI, package.json, the other SyberLabs repositories,
  GitHub code search, PR text or Slack. The docs/BRAND.md it cites never
  existed, and none of its 39 source colors remain in any tracked file,
  so it has nothing left to convert. History keeps it at b539f53.
- scripts/qa.mjs: the unused `stat` import (only statSync is called)
  and SITEMAP_EXEMPT. Both entries, 404.html and kit/v2/demo.html, fail
  the `rel.endsWith('index.html')` test on the same line, so the Set
  never changes which pages are checked. The original and edited
  scripts print identical output and exit status on the built site
  (24 pages, 0 errors, 0 warnings) and on a damaged copy with unlisted
  index and non-index pages and a dead sitemap URL (29 pages, 3 errors,
  10 warnings).
- scripts/llms.mjs: '/#about' in SKIP, left over from the site map's
  About link, which #142 removed. SKIP filters only siteMap items, and
  none links to /#about. Also drop the stale note that /stack/ is
  listed once its page exists: the page exists, and the existence guard
  in tail() keeps its own comment. llms --check passes and write mode
  writes nothing, so llms.txt and llms-full.txt are unchanged.

Not deleted: qa.mjs's directory argument (PRs #138 to #140 run
`node scripts/qa.mjs dist`) and shoot.mjs's --full flag (a working
option of a live tool, not unreachable code).

Checks: account-nav 9/9, probe 15/15, server 208/208, site-chrome
16 pages, export-arena match, llms up to date, qa 24 pages, 0 errors.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHrJ4hmTtR1RFNpc215EK7
Remove rules that no element on any production page can match, and
declarations that a later or more specific rule always overrides. No
page renders differently: the CI replay passes, dist/ changes only in
the edited stylesheets, the renamed hashed CSS chunks (and the files
that name them) and the version queries below, and the style snapshot
of every page at 1440 and 390 px is identical.

Rules whose markup no longer exists:
- src/syberlabs.css: the header account widget (.sy-account and its
  parts; header() stopped emitting it and scripts/account-nav.test.mjs
  asserts the public header has no /admin link), .sy-glass, .sy-card,
  .sy-glow, .sy-visually-hidden, .sy-split.is-pending (nothing adds
  is-pending) and an orphan comment.
- src/home.css: .pitch-hero__availability, __by, __signature with
  @Keyframes signature-write, __name, .home-sec and .home-me; App.jsx
  renders none of them.
- src/system-maps/system-maps.css: .edge-hit:focus-visible+* (the hit
  path is always the last child of its edge group) and
  .readout-grid p.is-miss (no system renders is-miss).
- projects/experience-v7.css: .pj-sigil (its sigilPlate() call was
  removed), .pj-how__item .sy-icon and .pj-others__all.
- plus/plus.css: the Hear the clock block (the page has no [data-hear]
  host and loads no plus.js), the evidence list, .compare td.no and
  td.plus-yes, .allowance b and code, and .prose li.
- rise-demo, services, stack, jev, approach, research and the three
  report stylesheets: rules for elements their own pages do not have
  (feature list, .links, .video-cta p, section[id], .intro-note, the
  inquiry list, .sy-btn on /stack/, .jev-hero__lede, article and .prose
  on /approach/ and /kev/; aside notes, metrics, tables and pre on the
  research index; cards, legend, states, h3, provenance, sequence,
  details, var and pre on the reports that have none).
- staff.css: .staff-filter, and portal selectors the admin home markup
  cannot match (every h2 sits inside .portal-section-head, which holds
  only the h2, and .portal-app-art is the svg itself).

Declarations that never apply:
- The same selector set again later with no media condition: the old
  pitch hero geometry, colours and spacing in src/home.css; the 480 and
  360 px lockup sizes and the 640 px Atlas title size in
  src/syberlabs.css, which the Midnight block sets for every width; a
  background-image the same rule's background shorthand already resets.
- Always beaten by a more specific rule: .pj-page .pj-* on the template
  project pages, .plus-intro .plus-* on /plus/, .service-paths .actions,
  .orb-experiment .home-hero, .pitch-hero .pitch-hero__* and the
  html.research-reading layer on every research page.

The static pages' links to syberlabs.css and to each edited page
stylesheet move from ?v=20261030 to ?v=20261031. The staff pages' links
(server/views/layout.js) are outside this change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHrJ4hmTtR1RFNpc215EK7
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-31T23:51:17.136686Z 6e44d5e PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants