diff --git a/CHANGELOG.md b/CHANGELOG.md index a2ea989..dfbd707 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ The project uses a simple pre-release changelog during early development. ### Changed +- Gate 0 project contract review completed successfully. - `ended_at` is optional for active or interrupted sessions. - Repetition and timed exercise modes are now mutually exclusive. - Exercise display-name anti-duplication semantics are defined. diff --git a/docs/exchange_format.md b/docs/exchange_format.md index 028f8e5..ebcfe48 100644 --- a/docs/exchange_format.md +++ b/docs/exchange_format.md @@ -8,7 +8,7 @@ Current state: ```text TRAINLOG_FORMAT_V1=DRAFT -GATE_0=VALIDATION_PENDING +GATE_0=PASS ``` Incompatible changes are allowed until the format is explicitly marked `FROZEN`. diff --git a/docs/reviews/gate0_review_01.md b/docs/reviews/gate0_review_01.md index 8c916e4..f91daa8 100644 --- a/docs/reviews/gate0_review_01.md +++ b/docs/reviews/gate0_review_01.md @@ -3,8 +3,8 @@ ## Status ```text -GATE_0_REVIEW_01=IMPLEMENTED -GATE_0=VALIDATION_PENDING +GATE_0_REVIEW_01=PASS +GATE_0=PASS TRAINLOG_FORMAT_V1=DRAFT ``` @@ -116,13 +116,44 @@ Expected result: - every invalid fixture reports `PASS invalid`; - `git diff --check` prints nothing. +## Validation evidence + +Canonical local validation reported: + +```text +python tools/validate_json.py +PASS +``` + +Every positive fixture was accepted. + +Every negative fixture was rejected for the intended reason. + +`git diff --check` produced no output. + +Reviewed commit: + +```text +bc54d6b4ce10d098916823b6a79f72b39d9c7703 +Harden Trainlog v1 exchange contract +``` + +The pushed GitHub mirror was read back and the review changes were verified. + ## Gate decision -Review #1 does not itself mark Gate 0 as PASS. +```text +GATE_0_REVIEW_01=PASS +GATE_0=PASS +``` -Gate 0 becomes eligible for PASS after: +Gate 0 is closed. -1. the canonical local validation succeeds; -2. the review is committed; -3. the commit is pushed to Forgejo and GitHub; -4. the mirrored repository is reviewed. +The exchange format remains deliberately unfrozen: + +```text +TRAINLOG_FORMAT_V1=DRAFT +``` + +Gate 1 is responsible for completing the remaining format decisions and +freezing `TRAINLOG_FORMAT_V1`. diff --git a/docs/roadmap.md b/docs/roadmap.md index 7b76766..b2ae764 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -2,7 +2,14 @@ ## Gate 0 — Project contract -Status: VALIDATION PENDING — REVIEW #1 +Status: PASS + +Canonical result: + +```text +GATE_0=PASS +GATE_0_REVIEW_01=PASS +``` Deliverables: @@ -26,7 +33,14 @@ Exit criteria: - semantic invariants are documented; - repository clean after commit. -Gate 0 is not PASS until the review #1 validation commands pass in the canonical working tree and the resulting commit is pushed. +Gate 0 passed after: + +- canonical local fixture validation succeeded; +- `git diff --check` succeeded; +- review commit `bc54d6b4ce10d098916823b6a79f72b39d9c7703` was pushed; +- the GitHub mirror was independently read back and reviewed. + +Gate 1 is now the active gate. ## Gate 1 — Exchange format v1 freeze