Imported from Vzlentin/calibre (
AGENTS.md). Install upstream withnpx skills add Vzlentin/calibre. Copyright stays with the author.
Build this repository directly on the calibr3 core copied from its current working tree. Evolve that core in place toward the target architecture. Do not restore the replaced newcalibre/newcalibr3 engine or add a wrapper or second engine.
- Read docs/architecture.md first. It is canonical for scope, boundaries, and acceptance. Use docs/semantics.md for approved behavior and docs/implementation-plan.md for sequencing and verification.
- The vault is stale. Its architecture, plans, glossary, and retrospective are historical context, not authority. Do not restore old specifications, annex rules, frozen-oracle requirements, or the removed repository layout.
- Substantial slashing is expected. Keep useful algorithms and required behavior, not inherited structure. Replace obsolete paths, migrate their callers, and delete them. Do not create another engine beside this one.
- No compatibility shims, deprecated aliases, or seasonal-only fast engine beside a general slow engine. Existing interfaces and tests are not a compatibility contract; cover required behavior before removing its tests.
- Slashing code must not cut the architecture's scope. Do not leave required models or policies in dataset scripts.
- Library code under
src/calibre/contains no dataset-specific (M5, VN2) or benchmark code. Generic ingestion lives in the library; dataset scripts underscripts/parse raw files and call it. Tests do not cover scripts. - Name and test semantic changes separately from structural refactoring. Old-engine parity and historical scores are not acceptance authority. Surface conflicts in the canonical documents rather than silently choosing behavior.
- Do not let validation become the architecture again: no per-cell objects, hashes, serialization, or repeated canonicalization in the numerical loop. Put external validation and provenance at input/output boundaries.
- Measure scale before fixing new interfaces and state contracts. For runtime/state changes, use fresh local baselines and the architecture's performance gates; seasonal-only success does not prove capability or scale. Serialize heavyweight measurement campaigns with the shared benchmark lock. Score-buffer bounds alone do not prove bounded memory.
- Numerical acceptance tests must use real implementations and independent calculations, not mocks, stubs, or monkeypatches. External failure doubles must not replace real numerical integration tests.
- Use fast tests and a small slow performance probe. Do not rebuild the historical five-tier oracle system.
- Keep files below 1000 lines. Use concise public docstrings; comments explain why.
- Keep plans short and the canonical documents current. Do not create parallel specifications or process frameworks.
- Run Python tooling through
uv runin this repository. Use the implementation plan's verification protocol; do not resurrect removed commands or treat historical campaign results as verification of this checkout.