Re-copied from the Template canonical (its d04fa82). This project's copy was
byte-identical to the canonical's 2026-09-02 state and carried none of four
fixes made since. It gates every guard here, so a wrong verdict from it is a
wrong verdict about everything it was ever pointed at.
**The one that matters most: it never checked the baseline.** It mutated, ran
the command once, and called any red a catch — so a suite already failing for
an UNRELATED reason printed "prove-guard: good — the guard caught it, and only
it" and exit 0 for an assertion nobody had written. GUARDS.md §1's own recipe
carries the missing step and the script had dropped it: restore, run again,
expect green again. Now exit 2, because an unusable baseline is "did not run".
Also: a `__pycache__` purge, because CPython invalidates a `.pyc` on mtime in
whole seconds and size, so a same-length mutation survived the restore and the
run reported the guard green. And two runner summary formats it could not read,
each falling through to an approximate line count that is not conservative —
one of them made a correct guard reddening exactly one test always exit 3,
telling its author to narrow a guard that was already narrow.
The header now also states that it edits the working tree, which matters on any
host where something renders or deploys from the checkout on a schedule.
Previous copy kept beside it as prove-guard.sh.bak-20260910.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Period was a bare directory holding one 2,527-line specification, with no git
repository, no tracker and no documentation convention. This is the adoption
from Projects/Template/START-HERE-New-Project.md, plus a project that compiles
so the hooks and future guards have something real to run against.
Documents. scaffold.sh created 19 paths, 0 skipped. The specification moved to
docs/planning/PRODUCT_PLAN.md unchanged in substance, with a status header; the
capitalised Docs/ is gone. Every scaffolded document was filled in for Period.
docs/OPERATIONS.md deleted — an offline app is not a deployed service.
DOC_TRUST_MAP.md written last, describing what is actually here, including what
this project deliberately does not have.
Code. Four Gradle modules. domain/cycle and domain/prediction are kotlin("jvm")
and cannot see the Android SDK, so the engine is testable without an emulator —
17 tests pass, 12 of them the acceptance cases from PRODUCT_PLAN.md §51.
BaselinePredictionEngine is a robust-median prototype and explicitly not the
product; it exists so Batch 02's replacement can be shown to be better rather
than merely different.
Versions verified against their official sources today rather than inherited
from the specification's own numbers, which that document asks for: Kotlin
2.4.10, AGP 9.3.1, Gradle 9.7.0, Compose BOM 2026.08.00, Room 2.8.4, Hilt
2.60.1. AGP 9 ships Kotlin built in, so org.jetbrains.kotlin.android is no
longer applied. compileSdk is 37 because current AndroidX requires it; targetSdk
stays 36, Play's floor from 2026-08-31, and the difference is deliberate.
Six scripts taken into scripts/; the rest declined and named in docs/TOOLS.md.
Three hooks in .githooks/, with pre-commit adapted to Gradle.
closes#1closes#2