name: zireael-spec-guardian description: Enforce locked docs, boundary rules, and safety guardrails for any Zireael change. metadata: short-description: Spec + boundary compliance
When to use
Use this skill first for any task in this repo, especially when:
- adding/modifying ABI, formats, or platform code
- changing ownership/memory behavior
- changing Unicode, rendering, diff output, or tests
After guardian checks, run zireael-code-style for any code edit/review.
Source of truth
README.md— GitHub-facing overviewdocs/00_INDEX.md— internal reading pathdocs/CODE_STANDARDS.md— code style and comments
Key locked docs:
docs/SAFETY_RULESET.mddocs/LIBC_POLICY.mddocs/ERROR_CODES_CATALOG.mddocs/VERSION_PINS.mddocs/GOLDEN_FIXTURE_FORMAT.md
Hard constraints (must not violate)
- Engine-only repo: no TypeScript, Node tooling, or monorepo
- Platform boundary:
src/core,src/unicode,src/utilMUST NOT include OS headers- OS code only in
src/platform/win32/andsrc/platform/posix/ #ifdef _WIN32only in platform backends
- Ownership (locked):
- engine owns all its allocations
- caller never frees engine memory
- engine doesn't return heap pointers requiring caller free
- Error model:
0 = OK, negativeZR_ERR_*codes - UB avoidance: no type-punning; safe unaligned reads; validate all bounds
- Hot paths: no per-frame heap churn; single flush per present
Pre-flight checklist
- Identify affected docs (
docs/00_INDEX.md) - Verify dependency direction: util → unicode → core → platform
- Check version pins (
docs/VERSION_PINS.md) - Decide caps/limits impacted (
zr_limits_t) - Decide test impact (unit/golden/fuzz/integration)
Review checklist
- No OS headers in core/unicode/util
- No
#ifdefleaked into core/unicode/util - No API returns pointers requiring caller free
- Error returns match
docs/ERROR_CODES_CATALOG.md - Parsers have bounds checks and fuzz consideration
- Golden outputs updated if behavior changed
- Docs updated if behavior/ABI/formats changed
- Readability gate met (named constants, rationale comments, no dense opaque expressions)