···18181919## Fast Path
20202121+- Start here for most changes: `maid preflight`
2122- Build from an existing configured tree: `meson compile -C build`
2223- Fresh local setup: `maid setup`
2324- Run a focused test file: `./build/ant tests/test_<name>.cjs`
2425- Run the spec suite: `./build/ant examples/spec/run.js`
2525-- Validate repo knowledge docs: `maid knowledge`
2626-- Validate changed-file boundaries: `maid structure`
2727-- Route the current diff to the right checks: `maid validate_changes`
2626+- Run the individual harness steps when needed:
2727+ `maid validate_changes`, `maid structure`, `maid knowledge`
28282929## Codebase Map
3030···4848## Change Rules
49495050- Prefer changes in `src/`, `include/`, `meson/`, `tests/`, `tools/`, and `.github/agents/`.
5151-- Treat `vendor/`, `build/ as generated or third-party surfaces.
5252- Only edit them when the task explicitly requires it.
5151+- Treat `vendor/` and `build/` as generated or third-party surfaces. Only edit
5252+ them when the task explicitly requires it.
5353- Keep durable design notes and execution history in versioned markdown under
5454 `docs/`. Treat `todo/` as scratch space, not the source of truth.
5555- Add or update tests when behavior changes.
5656- When touching build or runtime invariants, document the reasoning in
5757 [docs/exec-plans/index.md](docs/exec-plans/index.md) or a linked plan if the
5858 work spans multiple steps.
5959+- Before finalizing most code changes, run `maid preflight` and then execute any
6060+ additional build or spec commands it recommends, or explain why they were not
6161+ run.
59626063## Which Doc To Open Next
6164
+12
examples/demo/highlight.js
···11const hl = Ant.highlight;
22const render = hl.render;
3344+function assertEq(actual, expected, label) {
55+ if (actual !== expected) throw new Error(`${label}: expected ${JSON.stringify(expected)} got ${JSON.stringify(actual)}`);
66+}
77+48console.log(render('<red>Red text</red> and back to normal'));
59console.log(render('<green>Green</green>, <blue>Blue</blue>, <yellow>Yellow</yellow>'));
610···3438}`;
35393640console.log(hl(code));
4141+4242+const lineComment = hl.tags('//hello\nworld');
4343+assertEq(lineComment, '<#758CA3>//hello</>\nworld', 'line comment stops at newline');
4444+4545+const blockComment = hl.tags('/*hello\nworld');
4646+assertEq(blockComment, '<#758CA3>/*hello\nworld</>', 'block comment continues across newline');
4747+4848+console.log('highlight comment specs ok');