SchOS/docs/history/README.md
Nexoniarz cb3d28e3d6 docs: README, plan, guides and the site describe what is built now
README: rewritten around what runs (Linux software, Xorg, apk, Linux's drivers), the honest gaps, measured numbers.
plan/: 1.0.md is the finish line, where each clause of the acceptance test stands, and the register (one failing
clause: a root that survives a reboot); built plans (foundations, hybrid, alpine, xorg) and the decided-against one
(wayland) are gone, their content lives in architecture/; roadmap.md is only what is still open.
guides: building/layout/testing/adding-a-driver (Linux code may be used). history: four entries (ls -lR, TLB
shootdowns, MDIO 0x02460246, netlink MSG_TRUNC). Website: cards, stack, download page, docs index.
Code comments that pointed at deleted plan docs point at the architecture docs.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EVRhxi9zpdW2uDUN4FVcao
2026-10-26 08:08:05 +01:00

54 lines
2.4 KiB
Markdown

# History
**Why SchOS is the way it is.** Bugs whose cause was nowhere near their symptom,
and the few write-ups that have nowhere better to live.
| | |
|---|---|
| [kernel.md](kernel.md) | The expensive ones. Boot, SMP, signals, ABI assumptions, `/proc`, input, TLBs, a stub that returned a flag word. |
| [schfs.md](schfs.md) | How the filesystem was built, and what each phase cost. |
| [moving-to-linux.md](moving-to-linux.md) | The Windows-to-Fedora move. |
---
## What belongs in here
> **A bug whose cause is not visible from the code that fixed it.**
That is the whole test. If reading the fix explains the problem, the fix is the
documentation and nothing needs writing down. If the fix looks arbitrary — a
constant moved by eight, a field reordered, a check inverted — then the
strangeness is load-bearing and the next person to touch it deserves to know
why before they change it back.
Every entry here is a thing that looked like a different problem than it was.
## What does not belong
- **A changelog.** `git log` is the changelog.
- **A bug that was found and fixed in an hour.** Cost is the filter.
- **How something works.** That is [../architecture/](../architecture/), written
in the present tense for somebody who does not care what it used to be.
- **Anything still open.** An unfinished investigation goes in
[../plan/](../plan/) or in the code as a comment. This directory is past tense.
## How to write one
**Symptom first, then diagnosis, then the fix, then the transferable part.**
The transferable part is the reason the entry exists. `__thread` being wrong for
per-CPU data is worth more than the specific null dereference it caused;
"a layout constant that several artifacts must agree on wants a check that stops
the build, not a comment asking people to remember" is worth more than the
bootloader offset that taught it.
**Say how it was found**, when the technique was the hard part. A hardware
watchpoint through QEMU's gdb stub named an instruction on the first run after
three rounds of `cprintf` had narrowed it to nothing — that is reusable, and the
bug is not.
**Do not clean up the embarrassing part.** The near-miss where a change passed
every assertion green *without having been applied at all* is one of the most
useful entries in this directory, and it only works because it admits that a
`grep` returning three hits was read as confirmation without counting what they
were.