Thank you for improving Sol. Read docs/SDLC.md, docs/SPEC.md, and
docs/REQUIREMENTS.md before changing behavior. The product is research and learning
software, not an operational warning or mission-safety system.
- Describe the user or system problem and non-goals.
- Link affected
SOL-*IDs fromdocs/requirements.json. - For material design, contract, privacy, UX-workflow, or release-policy changes, write an
RFC from
docs/rfcs/0000-template.md. - Add an ADR when the accepted decision changes a durable architecture boundary.
- Define observable acceptance criteria before implementation.
Small fixes may use an existing specification and requirement. They still need a regression test that fails without the fix.
Required for the full local suite:
- Python 3.12 or compatible Python 3;
- Node 22 and
npm ci --ignore-scripts; - Rust 1.96 with
wasm32-unknown-unknown; - a Chromium-compatible browser for full browser validation.
Run the app and build the WASM engines using docs/INSTRUCTIONS.md.
Run the fast repository contract:
python tools/validate_sdlc.py
python tools/validate_docs.py
python tools/validate_ux_contract.py
PYTHONPATH=tools python -m unittest discover -s tests/python -p 'test_*.py' -v
npm test
python tools/typecheck_web.py
python tools/validate_web_static.py
python tools/build_web.py
git diff --checkWhen Rust and Chromium are available, also run:
cargo fmt --all --check
cargo clippy --workspace --all-targets --locked -- -D warnings
cargo test --workspace --locked
python tools/build_wasm.py
python tools/browser_smoke.py
node tools/browser_validation.mjsRun change-specific generators and validators listed in docs/VALIDATION_PLAN.md. If a
local toolchain is unavailable, say exactly which checks remain for CI.
Complete every applicable section of .github/PULL_REQUEST_TEMPLATE.md. Keep the change
focused and include:
- requirement, RFC, ADR, and specification links;
- before/after behavior and failure modes;
- test and coverage evidence;
- UX/accessibility, scientific-accuracy, privacy, security, and data-provenance impact;
- migration, release risk, monitoring, and rollback;
- documentation updated in the same change.
Do not merge with unresolved review findings or failing required checks. Do not use a commit message skip marker to bypass validation.
- Keep browser production code dependency-free native ES modules unless an ADR changes it.
- Use DOM APIs and
textContent; never inject untrusted data withinnerHTML. - Preserve versioned snapshot boundaries and fail closed on incompatible contracts.
- Keep normalized and calibrated units distinct.
- Retain source, time, freshness, and quality for observed data.
- Make generated artifacts deterministic and commit source attribution.
- Pin CI actions by commit SHA and use lockfiles for package managers.
- Run
python tools/build_web.pyafter editing stamped web files.
Use GitHub private vulnerability reporting when the repository has enabled it. If that interface is unavailable, ask a maintainer for a private reporting route without disclosing the vulnerability in a public issue. Do not include secrets, personal data, or more exploit detail than maintainers need to reproduce the problem. Supported-version and response-time commitments require maintainer approval and are not inferred by this document.