PooLang is currently a Rust 2024 interpreter. Core code lives in src/: the lexer tokenizes source, the parser builds the AST, and the interpreter executes it. lib.rs exposes library entrypoints and main.rs provides the CLI. Executable language specifications are in tests/language_specs.rs; sample .poo programs belong in examples/.
Edit documentation sources under docs/src/ and navigation in docs/src/SUMMARY.md; treat docs/book/ as generated output. Release and site configuration lives in dist-workspace.toml, oranda.json, wix/, and .github/workflows/.
cargo check --all-targetsperforms the required baseline compile check.cargo run -- examples/app.pooruns a sample program.cargo testruns unit, integration, and documentation tests.cargo fmt --all -- --checkchecks formatting;cargo fmt --allapplies it.cargo clippy --all-targets --all-features -- -D warningsruns strict linting.mdbook build docsis the canonical documentation build;mdbook test docstests its Rust examples.dist generate --checkverifies that the generated release workflow matches its configuration.cargo deny checkenforcesDEPENDENCY_POLICY.mdfor every dependency change.
All established formatting, compilation, test, and lint checks must pass before review.
Use rustfmt defaults and idiomatic Rust names: snake_case for functions and modules, PascalCase for types and traits, and SCREAMING_SNAKE_CASE for constants. Keep subsystem boundaries clear and return actionable typed errors instead of adding panic-driven paths.
Follow TDD for features and fixes. Add focused cases to tests/language_specs.rs, named spec_<component>_<behavior>, and cover success plus relevant failure paths.
Treat dist-workspace.toml as the source of truth for releases. Never edit .github/workflows/v-release.yml directly; run dist generate --mode=ci after a configuration change and commit the result. Follow RELEASING.md for release checks, tag format, credential handling, and artifact verification. Do not create a release tag as part of an unrelated change.
Every change starts with an existing GitHub issue. Create a branch from main and keep the PR limited to one issue and one reviewable concern. The PR body must contain exactly one closing reference such as Closes #123, describe verification, and note documentation or screenshot impact.
Use imperative Conventional Commits such as feat: add route groups, fix(parser): report missing delimiter, or docs: clarify variables. Do not merge directly, create merge commits, or rebase-merge PRs. Repository changes land through squash merge only. Agents must respect the same issue-first and small-PR workflow.