MEMORY
memory/project-C--Dev--RobCo--RobCo-Archive/museum-identity-pass.md
sha256 d3399275da3e7d90 · 3335 bytes ·
original held in the private archive
---
name: museum-identity-pass
description: "Owner PICKED Direction B (Records Office) 2026-07-21; dark twin ('after hours') built for all 4 views in museum/design/2026-07-identity-pass/ and recommended as the single identity — light-vs-dark awaiting owner"
metadata:
node_type: memory
type: project
originSessionId: f5f4466d-749c-41e5-bee0-888ea2941635
modified: 2026-07-21T18:04:57.907Z
---
2026-07-21: owner picked **Direction B — Records Office** ("okay go with B");
A and C are closed. Same day, the withheld dark twin was built for all four
views (`*-records-dark.html` in `museum/design/2026-07-identity-pass/`), plus
a deliberately-weak lamplit study (`01-…-lamplit.html`, kept as evidence that
the dim-paper middle option fails). Verified at 360/412 px via Playwright
(playwright lives in the APP repo's node_modules, not the archive's); every
text pair in both new palettes computed ≥4.5:1.
**Why:** owner reads almost exclusively at night on a phone. Key design fact,
measured: light B's lightbox effect comes from ADJACENCY, not the global
field — dark window vs dark card is 1.4:1 (a hole), cream mount vs card is
8.6:1 (an object). So the dark twin is a two-layer transposition, not an
inversion: room goes dark slate (#262823/#2f312a, cream ink), while paper
that IS an exhibit object stays lamplit buff (mats #d9d0b6, chart tape
#ddd4ba with its original deep ink). Stamps do NOT survive unchanged
(#a03123 is 1.97:1 on dark → #e87f63). Phosphor would pass as text on the
dark ground (11.3:1) but stays confined to instrument windows — container
text in phosphor would put the terminal costume back on.
**How to apply:** recommendation on record in the folder README — dark twin
as the SINGLE identity (no toggle/prefers-color-scheme: a second skin kept
correct forever fails the mechanism-must-earn-existence discipline; the
light twin stays in the folder as a finished fallback decision). Owner has
not yet chosen light vs dark. Whichever wins, implement in generate.mjs as
static output; the folder README carries all carried-forward flags.
Related: [[museum-no-bezel-own-identity]], [[museum-visual-design-pass]],
[[museum-path-based-naming-and-redirects]].
**IMPLEMENTED 2026-07-21 (commit efe9827, local only).** Dark twin shipped in
`museum/generate.mjs` as the single live identity — self-contained CSS (no
app-CSS reuse, no `--robco-*` tokens), `shell()` rewritten to drop
`.machine/.bezel/.navkey/.glass-frame/.crt-overlay` entirely. Existing content
class names (`.changelog-*`, `.bay-*`, `.mz-*`) kept as structural hooks and
fully reskinned rather than renamed, so rooms/standing/graveyard/search/docs
inherited the identity without a body-HTML rewrite. Same session then rebuilt
the lobby as the vault ledger, the growth page as the strip-chart tape (real
new daily-commits series, `collectDailyCommits()`), added Intent vs Reality
(flip + plaque only, curated pairs in `museum/accounts/intent-pairs.json`),
and wired the Bug Museum (see [[bug-museum-data-layer]]). Verified via the app
repo's Playwright at 360/412px, contrast recomputed per new color pair (all
≥4.5:1), double-fresh-clone regeneration byte-identical. See
[[museum-generator-2026-07-21-implementation]] for the full session account
and what it deliberately left undone (release-pinned reality captures).
STAMP · generated for RELEASE v2.8.5 commit 06e5180 (06e51801b38a) · archive input-tree hash c07fbfbdd2e1ddeb · 754 files · no wall-clock timestamp (regenerates identically when nothing changed).