docs: give each decision in the dense pages its own section #485

Merged
natsukium merged 13 commits from docs/restructure-dense-pages into main 2026-09-26 12:49:27 +09:00
Owner

Eleven pages were walls of 200–600-word bold-lead bullets or paragraphs under few headings; this gives each decision its own section, leads each with what was chosen and why, splits paragraphs to one point each, and puts rejected alternatives and Revisit if triggers where a reader can find them. Content is preserved (each fixer diffed links, REQ ids and numbers against the original; nothing removed as Trap 1).

Page Headings Largest block (words)
explanation/benchmarks.md 1 → 20 618 → 89
explanation/testing.md 9 → 14 212 → 122
explanation/input.md 21 → 33 239 → 146
explanation/architecture/control-surfaces.md 9 → 76 ~430 → ~133
explanation/architecture/overview.md 24 → 33 302 → ~141
explanation/security-model.md 13 → 50 331 → 107
explanation/rendering/pipeline.md 18 → 40 286 → 137
explanation/architecture/session-lifecycle.md 26 → 48 319 → 141
explanation/architecture/ipc.md 36 → 77 287 → 157
explanation/rendering/text-shaping.md 10 → 10 344 → 157
reference/ipc.md (reference style: paragraph splits and lists only) 38 → 38 340 → 149

Existing headings keep their text, so inbound anchors resolve (fragment-aware check over docs/, README, CONTRIBUTING, AGENTS, skills: 0 broken). The last commit points links that cited a whole control-surfaces group (REQ-006a, the tags non-goal, retarget landing, pipe and switch asymmetries, extend-ipc) at the specific new section.

Two integration commits retarget links and citations at the new sections: control-surfaces links (REQ-006a, the tags non-goal, retarget landing, pipe/switch asymmetries, extend-ipc), the ResourceReport scope link, and two Rust doc comments (exit_ladder.rs now cites "The exit ladder"; serve.rs's 5 s grace cited "Destruction" but lives under "Post-exit reaping").

Conflicts textually with #477 in explanation/testing.md; whichever merges second takes the other's structure.

Eleven pages were walls of 200–600-word bold-lead bullets or paragraphs under few headings; this gives each decision its own section, leads each with what was chosen and why, splits paragraphs to one point each, and puts rejected alternatives and _Revisit if_ triggers where a reader can find them. Content is preserved (each fixer diffed links, REQ ids and numbers against the original; nothing removed as Trap 1). | Page | Headings | Largest block (words) | |---|---|---| | explanation/benchmarks.md | 1 → 20 | 618 → 89 | | explanation/testing.md | 9 → 14 | 212 → 122 | | explanation/input.md | 21 → 33 | 239 → 146 | | explanation/architecture/control-surfaces.md | 9 → 76 | ~430 → ~133 | | explanation/architecture/overview.md | 24 → 33 | 302 → ~141 | | explanation/security-model.md | 13 → 50 | 331 → 107 | | explanation/rendering/pipeline.md | 18 → 40 | 286 → 137 | | explanation/architecture/session-lifecycle.md | 26 → 48 | 319 → 141 | | explanation/architecture/ipc.md | 36 → 77 | 287 → 157 | | explanation/rendering/text-shaping.md | 10 → 10 | 344 → 157 | | reference/ipc.md (reference style: paragraph splits and lists only) | 38 → 38 | 340 → 149 | Existing headings keep their text, so inbound anchors resolve (fragment-aware check over docs/, README, CONTRIBUTING, AGENTS, skills: 0 broken). The last commit points links that cited a whole control-surfaces group (REQ-006a, the tags non-goal, retarget landing, pipe and switch asymmetries, extend-ipc) at the specific new section. Two integration commits retarget links and citations at the new sections: control-surfaces links (REQ-006a, the tags non-goal, retarget landing, pipe/switch asymmetries, extend-ipc), the ResourceReport scope link, and two Rust doc comments (`exit_ladder.rs` now cites "The exit ladder"; `serve.rs`'s 5 s grace cited "Destruction" but lives under "Post-exit reaping"). Conflicts textually with #477 in `explanation/testing.md`; whichever merges second takes the other's structure.
The page was one heading over a list of 100-600-word bullets, each packing
a decision, its mechanism, calibration numbers, rejected alternatives and
a Revisit-if trigger into one block, so a reader could neither find a
decision by heading nor see where its argument ended. Each decision now
has a heading that states it, leads with the choice, gives rejected
alternatives and the trigger their own paragraphs, and the decisions are
grouped by the question they answer. The content is unchanged.

Assisted-by: Claude Code
The support-claim section ran four decisions through one bullet list, the
longest over 200 words, and the shell-overlay rationale was a single
250-word paragraph, so neither could be scanned or linked by decision.
Each consequence now has its own heading that leads with the choice,
rejected alternatives are listed, and each Revisit-if trigger closes its
section. The content is unchanged.

Assisted-by: Claude Code
Action mapping, mouse momentum, selection and the link preview each ran
several decisions through 200-300-word paragraphs or bullets with their
rejected alternatives and Revisit-if triggers embedded mid-block, so a
reader could not find one decision or see where its argument ended. Each
action and decision now has its own heading that leads with the choice,
rejections are listed, and triggers close their sections. Existing
headings keep their text so inbound anchors and quoted section names
still resolve. The content is unchanged.

Assisted-by: Claude Code
The page ran to nearly 12,000 words under nine headings, with "Shared
conventions", "Configuration architecture" and "Deliberate asymmetries"
written as runs of 200-500-word bold-lead bullets that each packed a
decision, its mechanism, the rejected alternatives and a revisit trigger
into one block. A reader could neither find a decision by heading nor see
where its argument ended.

Each decision now has its own heading, grouped under the existing
second-level sections so their anchors keep resolving; rejected
alternatives become short lists and each revisit trigger closes its
section. The content is unchanged.

Assisted-by: Claude Code
"Shared wire knowledge across the satellite clients" held four 200-400-word
bullets, and "Where an auto-spawned daemon lands" buried two revisit
triggers mid-paragraph, so neither could be scanned for the decision it
records. Each adopt/reject decision now has its own heading, rejected
designs are listed, and revisit triggers close their sections. Existing
headings and anchors are unchanged, and no content is dropped.

Assisted-by: Claude Code
The injection, Kitty graphics, Daemon IPC, text-rendering, OSC 8 and
process-boundary sections were runs of 150-330-word bold-lead bullets,
each packing a rule, its mechanism, rejected alternatives and a revisit
trigger into one block, so a reader could neither find a rule by heading
nor see where its argument ended. Each long rule is now a heading of its
own with the decision first, rejected alternatives and revisit triggers
in separate paragraphs, and Daemon IPC groups its seventeen rules under
four subheadings. The top-level headings, which spec.md and other pages
link to, are unchanged; no fact, citation or REQ reference was dropped.

Assisted-by: Claude Code
"wgpu surface and resources" and "Demand-driven emission" ran to
thousands of words under one heading each, with paragraphs up to 290
words that mixed a decision, its measurements and its rejected
alternatives, and revisit triggers sat mid-section. Each decision now
has its own subheading that leads with the choice, measurements and
rejections get their own paragraphs, and every revisit trigger closes
its section. Existing headings, which spec.md and other pages link to,
are unchanged; no fact, number or citation was dropped.

Assisted-by: Claude Code
docs, skills: point cross-page links at the new control-surfaces sections
Some checks failed
windows / detect relevant changes (pull_request) Successful in 13s
windows / cargo nextest (Windows) (pull_request) Has been skipped
windows / frontend smoke (Windows) (pull_request) Has been skipped
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been skipped
windows / windows docs-only no-op (pull_request) Successful in 0s
darwin / detect relevant changes (pull_request) Successful in 15s
darwin / build felis (aarch64-darwin) (pull_request) Has been skipped
darwin / publish felis (aarch64-darwin) (pull_request) Has been skipped
darwin / darwin docs-only no-op (pull_request) Successful in 1s
pr / nix flake check (pull_request) Has been cancelled
pr / cargo build / clippy / test / deny (pull_request) Has been cancelled
pr / wire schema is compatible with the base (pull_request) Has been cancelled
pr / frontend smoke (x86_64-linux) (pull_request) Has been cancelled
pr / publish felis (x86_64-linux) (pull_request) Has been cancelled
windows / cargo clippy (Windows cross) (pull_request) Has been cancelled
80f1425fe5
The control-surfaces restructure turned its "Shared conventions" and
"Deliberate asymmetries" bullet runs into named sections. The links
that cited the whole group for one of its rules (REQ-006a, the tags
non-goal, the retarget-landing policy, the pipe and switch asymmetries,
extend-ipc's --format pointer) now land on that rule.

Assisted-by: Claude Code
The symbol-group rationale in "Font fallback" was a single 344-word block
that argued the ordering, the first-cover sufficiency, the all-installed
rule, and cluster-level emoji presentation in one breath, so a reader could
not see where one argument ended. Each now has its own paragraph, and the
inline Revisit triggers stand as the last paragraph of their section.

Assisted-by: Claude Code
The page was a set of long sections whose paragraphs ran to 320 words and
packed a decision, its mechanism, its rejected alternatives and its Revisit
trigger into one block, so a reader could neither find a decision by heading
nor see where its argument ended. Creation, the child environment, the
presentation chain, the exit ladder and the chord pick now split into one
headed section per decision, rejected alternatives are listed where a
section rejects several, and each Revisit trigger closes its section.

Assisted-by: Claude Code
The IPC design page carried its decisions as long runs of paragraphs
under a few headings, several over 180 words, with rejected
alternatives and Revisit triggers buried mid-paragraph, so a reader
could neither find a decision by heading nor see where its argument
ended. Each decision now has its own heading, paragraphs split at their
topic shifts, multiple rejected alternatives read as a list, and every
Revisit trigger closes its section. Existing heading text is unchanged,
so every inbound anchor still resolves.

Assisted-by: Claude Code
The IPC reference packed whole arms (Attach, Refused, Stop, Scrolled,
Key) and several limit rules into single 150-340-word blocks, so a
reader looking up one refusal reason, one malformed image sequence or
one schema bound had to parse the whole block. Split them at their
topic shifts and turn the enumerations the prose already listed
(Refused reasons, ModeFlags fields, malformed image sequences, the
felis-json published bounds and decode-only checks, the two slot-closing
kinds) into lists. No fact changes and no heading is renamed, so every
inbound anchor still resolves.

Assisted-by: Claude Code
docs, client, daemon: point citations at the sections that now carry them
Some checks failed
bench / Criterion full-suite snapshot (pull_request) Has been skipped
windows / detect relevant changes (pull_request) Successful in 13s
darwin / detect relevant changes (pull_request) Successful in 15s
windows / windows docs-only no-op (pull_request) Has been skipped
darwin / darwin docs-only no-op (pull_request) Has been skipped
darwin / build felis (aarch64-darwin) (pull_request) Successful in 55s
darwin / publish felis (aarch64-darwin) (pull_request) Has been skipped
windows / cargo nextest (Windows) (pull_request) Successful in 3m9s
windows / frontend smoke (Windows) (pull_request) Successful in 34s
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been skipped
pr / frontend smoke (x86_64-linux) (pull_request) Successful in 29s
bench / Criterion regression gate (pull_request) Successful in 2m12s
pr / nix flake check (pull_request) Successful in 38s
pr / cargo build / clippy / test / deny (pull_request) Successful in 1m58s
pr / wire schema is compatible with the base (pull_request) Successful in 13s
pr / publish felis (x86_64-linux) (pull_request) Has been cancelled
windows / cargo clippy (Windows cross) (pull_request) Has been cancelled
bb2bc8975d
The session-lifecycle restructure gave the exit ladder its own section,
so exit_ladder.rs cites "The exit ladder" instead of the section about
telling the window the shell exited. serve.rs cited "Destruction" for
the 5 s post-exit grace, which the page states under "Post-exit
reaping". control-surfaces links the ResourceReport scope rationale to
the IPC page's new section on it rather than the whole typed-unions
rule.

Assisted-by: Claude Code
natsukium changed title from docs: give each decision in the dense explanation pages its own section to docs: give each decision in the dense pages its own section 2026-09-26 11:36:38 +09:00
natsukium scheduled this pull request to auto merge when all checks succeed 2026-09-26 12:19:57 +09:00
natsukium force-pushed docs/restructure-dense-pages from bb2bc8975d
Some checks failed
bench / Criterion full-suite snapshot (pull_request) Has been skipped
windows / detect relevant changes (pull_request) Successful in 13s
darwin / detect relevant changes (pull_request) Successful in 15s
windows / windows docs-only no-op (pull_request) Has been skipped
darwin / darwin docs-only no-op (pull_request) Has been skipped
darwin / build felis (aarch64-darwin) (pull_request) Successful in 55s
darwin / publish felis (aarch64-darwin) (pull_request) Has been skipped
windows / cargo nextest (Windows) (pull_request) Successful in 3m9s
windows / frontend smoke (Windows) (pull_request) Successful in 34s
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been skipped
pr / frontend smoke (x86_64-linux) (pull_request) Successful in 29s
bench / Criterion regression gate (pull_request) Successful in 2m12s
pr / nix flake check (pull_request) Successful in 38s
pr / cargo build / clippy / test / deny (pull_request) Successful in 1m58s
pr / wire schema is compatible with the base (pull_request) Successful in 13s
pr / publish felis (x86_64-linux) (pull_request) Has been cancelled
windows / cargo clippy (Windows cross) (pull_request) Has been cancelled
to 7faad383de
All checks were successful
darwin / detect relevant changes (pull_request) Successful in 14s
darwin / darwin docs-only no-op (pull_request) Has been skipped
windows / detect relevant changes (pull_request) Successful in 23s
darwin / build felis (aarch64-darwin) (pull_request) Successful in 53s
bench / Criterion full-suite snapshot (pull_request) Has been skipped
fuzz / cargo fuzz nightly long-run (pull_request) Has been skipped
windows / windows docs-only no-op (pull_request) Has been skipped
pr / nix flake check (pull_request) Successful in 28s
windows / cargo nextest (Windows) (pull_request) Successful in 6m39s
bench / Criterion regression gate (pull_request) Successful in 1m54s
fuzz / cargo fuzz smoke (per target) (pull_request) Successful in 1m16s
pr / cargo build / clippy / test / deny (pull_request) Successful in 2m21s
pr / wire schema is compatible with the base (pull_request) Successful in 5s
pr / frontend smoke (x86_64-linux) (pull_request) Successful in 29s
windows / cargo clippy (Windows cross) (pull_request) Successful in 17s
windows / frontend smoke (Windows) (pull_request) Successful in 1m33s
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been skipped
2026-09-26 12:29:30 +09:00
Compare
natsukium deleted branch docs/restructure-dense-pages 2026-09-26 12:49:27 +09:00
Commenting is not possible because the repository is archived.
No description provided.