Files
Maximilian Roos 8e405bced9 docs: rebuild the site with Astro and Starlight (#3866)
The docs now build with Astro and Starlight instead of Zola. This
removes the Tera 2 migration blocker from #3827 while keeping the
published routes, anchors, generated references, metadata, and crawler
URLs stable. It replaces the approach closed in #3840.

## What changed

- Move the site into Starlight, with a custom Worktrunk homepage and a
shared copper, gold, paper, and ink design system.
- Keep generated docs as portable Markdown. The Rust sync pipeline no
longer needs Zola shortcodes, template escaping, ANSI-to-HTML
conversion, or reverse transforms for skill and README output.
- Preserve terminal semantics and command-only copying, add responsive
handling for short wide tables, retain stable heading IDs, and give
repeated command-reference headings useful search labels.
- Move docs CI and publishing to Node, Astro, and built-site contract
tests. The tests cover public routes, links, assets, metadata,
navigation, tables, terminal frames, and compatibility aliases.
- Record demo themes from isolated environments, add a mobile core demo,
and test the recording contract. The matching mobile assets are
published in `max-sixty/worktrunk-assets`.

Closes #3827.

## Verification

- `cargo run -- hook pre-merge --yes` (4,660 tests)
- `npm --prefix docs run check`
- `npm --prefix docs test` (9 tests)
- `npm --prefix docs run build` (16 pages)
- `npm --prefix docs run test:site` (12 tests)
- `pytest docs/demos/tests/test_recording.py` (4 tests)

> _This was written by Codex on behalf of max-sixty_
2026-08-22 00:01:58 -07:00

106 lines
3.1 KiB
JSON

{
"schemaVersion": 1,
"featureId": "feat_custom_remove",
"title": "wt remove and picker-driven removal: data-loss surface",
"summary": "Worktree removal is the highest-stakes destructive operation. Force-remove must require explicit user consent; cleanup must not silently discard uncommitted changes or untracked files. Race conditions between safety checks and the actual delete must fail closed (retain data). The picker also routes alt-r through handle_remove_output - must consult approvals read-only and skip rather than prompt mid-render. See CLAUDE.md > Data Safety, Time-of-check vs time-of-use.",
"kind": "library",
"source": "manual",
"confidence": "high",
"entrypoints": [
{
"path": "src/commands/picker/mod.rs",
"symbol": "do_removal",
"route": null,
"command": "wt remove (interactive)"
}
],
"ownedFiles": [
{
"path": "src/commands/picker/mod.rs",
"reason": "interactive removal entry"
},
{
"path": "src/git/repository/worktrees.rs",
"reason": "worktree list/remove primitives"
},
{
"path": "src/remove_dir.rs",
"reason": "filesystem removal logic"
},
{
"path": "src/commands/relocate.rs",
"reason": "relocate/move worktree (also destructive)"
}
],
"contextFiles": [
{
"path": "src/commands/command_approval.rs",
"reason": "approval system for pre-remove hooks"
},
{
"path": "src/commands/hooks.rs",
"reason": "pre/post-remove hook execution"
},
{
"path": "src/git/repository/working_tree.rs",
"reason": "dirty detection"
},
{
"path": "docs/src/content/docs/faq.md",
"reason": "documented destructive surface"
},
{
"path": "CLAUDE.md",
"reason": "data safety invariants"
}
],
"tests": [
{
"path": "tests/integration_tests/remove.rs",
"command": "cargo test --test integration remove"
}
],
"tags": [
"rust",
"data-safety",
"destructive"
],
"trustBoundaries": [
"filesystem",
"user-input"
],
"status": "needs-fix",
"lock": null,
"findingIds": [
"fnd_sig-feat-custom-remove-3fc85fbc9_2fb36531bc",
"fnd_sig-feat-custom-remove-d1e281e8e_f4081924e6",
"fnd_sig-feat-custom-remove-54cc3614f_9edd442ab5",
"fnd_sig-feat-custom-remove-1dbe5d2d1_10faa93f43",
"fnd_sig-feat-custom-remove-7e79725d5_26a2834e00",
"fnd_sig-feat-custom-remove-3f4296191_028f92e016",
"fnd_sig-feat-custom-remove-34d4e5259_2210c7a66b",
"fnd_sig-feat-custom-remove-087a0b4bb_5c82e2c2a5"
],
"patchAttemptIds": [],
"analysisHistory": [
{
"runId": "20260516T210804-353f93",
"kind": "review",
"summary": "4 finding(s)",
"provider": "codex",
"model": null,
"createdAt": "2026-05-16T21:13:20.172Z"
},
{
"runId": "20260517T050139-b247d5",
"kind": "review",
"summary": "4 finding(s)",
"provider": "codex",
"model": null,
"createdAt": "2026-05-17T05:10:23.387Z"
}
],
"createdAt": "2026-05-16T21:00:00.000Z",
"updatedAt": "2026-05-17T05:10:23.387Z"
}