Imported from jeffreyfriedman/windjammer (
AGENTS.md). Install upstream withnpx skills add jeffreyfriedman/windjammer. Copyright stays with the author.
Agent Instructions
Read the windjammer-engineering skill before starting work.
This project uses bd (beads) for issue tracking. Run bd onboard to get started.
Architecture
The compiler now includes a Safety-Typed IR layer (src/ir/) providing:
- Unified constraint solver (ownership, types, effects, taint)
- Effect system with manifest enforcement (WJ-SEC-01)
- Taint tracking with flow propagation (WJ-SEC-02)
- Caller-controlled execution modes (WJ-CONC-01)
- Multi-target safety encodings (Rust, Go, JS, TS, WASM)
The IR is additive infrastructure — the existing compilation pipeline (parser → analyzer → codegen) remains unchanged. Individual passes will be incrementally migrated to use the IR's constraint solver.
Architecture reference: docs/IR_SOLVER_CODEGEN_ARCHITECTURE.md — solver-driven codegen migration plan, cutover flags, TDD protocol, and backend consumption model.
Quick Reference
bd ready # Find available work
bd show <id> # View issue details
bd update <id> --status in_progress # Claim work
bd close <id> # Complete work
bd sync # Sync with git
Landing the Plane (Session Completion)
When ending a work session, you MUST complete ALL steps below. Work is NOT complete until git push succeeds.
MANDATORY WORKFLOW:
- File issues for remaining work - Create issues for anything that needs follow-up
- Run quality gates (if code changed) - Tests, linters, builds
- Update issue status - Close finished work, update in-progress items
- PUSH TO REMOTE - This is MANDATORY:
git pull --rebase bd sync git push git status # MUST show "up to date with origin" - Clean up - Clear stashes, prune remote branches
- Verify - All changes committed AND pushed
- Hand off - Provide context for next session
CRITICAL RULES:
- Work is NOT complete until
git pushsucceeds - NEVER stop before pushing - that leaves work stranded locally
- NEVER say "ready to push when you are" - YOU must push
- If push fails, resolve and retry until it succeeds
Use 'bd' for task tracking
Compiler tests
Add tests/your_feature_test.rs — build.rs picks it up automatically. No edits to all.rs or tests/lib.rs.
Canonical full suite:
cargo test --release --test all
See tests/README.md for suite features and filtering.
Compiler-only changes: tests + cargo test --release --test all in windjammer/ are sufficient.
When fixes enable or change player-visible behavior in Breach Protocol or the engine render path, agents must validate through the game — not only unit tests:
- Build the game:
wj game build --releasein../breach-protocol/ - Headless playthrough with screenshots (see
../breach-protocol/AGENTS.md) - Dual-persona jury per
../.cursor/rules/dual-persona-jury-evaluation.mdc
Do not claim rendering or gameplay fixes are done without screenshot evidence and three-tier verdict.