diff --git a/docs/re/METHOD.md b/docs/re/METHOD.md index 5ef1518c..2b10a61f 100644 --- a/docs/re/METHOD.md +++ b/docs/re/METHOD.md @@ -494,6 +494,21 @@ agent's loop prompt, i.e. nowhere durable. See [`README.md`](README.md) for the **author** a value that is decoded. **When sweeping for stale text, rank instructions above descriptions**: a wrong description misleads a reader, a wrong instruction produces a wrong *result* that looks like evidence. + 📌 **Sweep the surface in BOTH directions.** Documented → does it exist, and + **parsed → is it documented**. `sylpheed-port` ran the second and found three + live undocumented flags, one of which (`--no-hold`) plays a screen past its rest + — *"a capability that exists only in an 11 000-line record is, to anyone reading + the interface, a capability that does not exist."* The mirror here: **41 env vars + read by `crates/`, 22 undocumented** — 7 example-only scratch, **15 live in + `src/`**, all in the mesh and texture lanes, none in the UI path + ([`data/env-var-surface.txt`](data/env-var-surface.txt)). Both directions + enumerate, so both **complete rather than sample** — which is rare enough in this + file to be worth choosing sweeps of that shape when one is available. + ⚠️ **And neither direction establishes that the thing WORKS.** They documented + `--no-hold` and it was inert under an interaction with `--time` — caught only by + running the example. I verified none of my 15 end to end and have said so rather + than implying coverage. + 📌 **And rank SILENT instructions above LOUD ones** (`sylpheed-port`'s refinement, from finding all of theirs were the loud kind): a wrong path errors out and announces itself; **an inert environment variable returns a clean, wrong diff --git a/docs/re/data/env-var-surface.txt b/docs/re/data/env-var-surface.txt new file mode 100644 index 00000000..426a51d7 --- /dev/null +++ b/docs/re/data/env-var-surface.txt @@ -0,0 +1,37 @@ +# The environment-variable surface, both directions. 2026-08-30. +# +# sylpheed-port swept documented -> parsed and found three live-but-undocumented +# flags, noting that a capability documented only in an 11 000-line record is, to +# anyone reading the interface, a capability that does not exist. This is the +# mirror on my side: every env var the CODE reads, checked against the docs. +# Like theirs it ENUMERATES, so it completes rather than samples. +# +# 41 environment variables read by crates/ +# 19 documented +# 22 NOT documented, splitting cleanly: +# +# 7 read only in examples/ -- per-example output filters and dump paths. +# KF_SHOW, MAX_PAD, OUT_DIR_X, SUPPRESS_SUBSTR, SYLPH_RAW, +# VOICE_CHUNK_DUMP, DUMP_XPR_DIR +# Scratch. Reachable only by editing an example's command line. +# +# 15 read in src/ -- LIVE capabilities of the library and CLI: +# mesh / 3D XCOLORSUB XDUMPHDR XDUMPVERT XMESHDBG XMIRROR XNODEDUMP +# XNODEXFORM XONLYSUB XSPANHIDE XSPANONLY +# texture XPR_FORCE_ENDIAN XPR_NO_BC_DWORD_SWAP XPR_NO_DETILE +# XPR_NO_ENDIAN XPR_RES_INDEX +# +# ✅ FOR THE PORT: none of the 15 is in the UI path. Every env var ui_layout.rs +# and the screen commands read is documented -- SYLPHEED_REST_RULE and +# SYLPHEED_KF_TIME_LEGACY. The menu lane is clean in this direction. +# +# ⚠️ The five XPR_* are TEXTURE DECODE toggles and the port consumes textures. If +# a sprite comparison ever disagrees, these are the knobs, and they are invisible +# from the interface. +# +# 🔴 LIMIT, stated rather than glossed: I verified NONE of the 15 end to end. +# `texture export` takes a loose file and the disc keeps its textures inside paks, +# so the check cost more than the answer was worth in this iteration. That matters +# because sylpheed-port found `--no-hold` PARSED, DOCUMENTED and INERT under an +# interaction with `--time`: "parsed and reachable" is not "works". So the honest +# claim is that 15 undocumented env vars are READ, not that 15 capabilities exist.