Skip to content

Commit 2c2ce4f

Browse files
committed
docs: fix 4 verified documentation-drift claims (SYS-W13-03)
CHANGELOG.md claimed automatic trigger/state-switching events are unimplemented; SYS-W14-40 (Event Preview/Play) shipped exactly that. missing.md self-contradicted on coordinate_system (Summary table says fully implemented, a later clause said "not read anywhere"). RELEASE.md's docs checklist referenced a retired emoji-marker plan.md summary table format. new.md's "event bindings for Areas/triggers" recommendation had already shipped, despite the file's date. Extended validate_capability_documentation.py with 6 assertions covering all four. Caught 2 vacuous forbid() checks along the way (a missing Markdown continuation indent and a spurious literal \n) that would have passed regardless of whether the fix was applied -- fixed by verifying each needle against git show HEAD before trusting it.
1 parent bdd3d03 commit 2c2ce4f

6 files changed

Lines changed: 69 additions & 32 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,10 @@ lettered commit-message convention:
5555
meta key/value map. All fully round-tripped (XML, MCB, XSD) and editable.
5656
The editor rasterizes SVG textures, previews audio, runs sandboxed Lua on
5757
explicit request, fires trigger steps explicitly, and applies scene-state
58-
overrides interactively. Automatic collision/click/timer trigger events and
59-
automatic state switching remain unimplemented; see `MC3_FORMAT.md`'s
58+
overrides interactively. Bounded Event Preview/Play (`SYS-W14-40`)
59+
additionally dispatches timer bindings, Walk Mode Area enter/exit
60+
transitions, and viewport-picked object clicks automatically, each through
61+
one isolated, validated document transaction; see `MC3_FORMAT.md`'s
6062
per-section status notes.
6163

6264
## Earlier feature work

RELEASE.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,14 @@ process.
4949

5050
- [ ] `NEXT.md` reflects actual current state (status/blocker/next
5151
task) — not stale from a prior session.
52-
- [ ] `plan.md`'s summary table matches the actual row markers (a
53-
`python3` one-liner recomputing ``/`🟡`/`🧪`/`📋`/`🔴` counts per
54-
section from the row markers is the reliable way to check this —
55-
the table has drifted from hand-editing before).
52+
- [ ] `plan.md` is internally consistent — run
53+
`python3 test/validate_plan_consistency.py .` (add a build directory
54+
and `--run-tests` to also catch live CTest drift, not just registered
55+
counts). `plan.md` (`SYS-W13-01`) is a bounded active plan using
56+
`[DONE]`/`[IN_PROGRESS]`/`[BLOCKED]`/`[DEFERRED]`/`[PROPOSED]` text
57+
markers on each row, not an emoji-marker summary table — that older
58+
format was retired when `plan.md` was cut down from 2,743 lines;
59+
historical detail lives in `docs/history/`.
5660
- [ ] `README.md`'s "Current Features"/"Current Limitations" reflect
5761
what actually works — spot-check a few claims against the code,
5862
don't just trust the prose (this has caught real staleness

missing.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,8 @@ file-browse dialog, undo/redo coverage, and Area's properties panel (the
145145
4 findings originally in this section) were all resolved or formally
146146
closed 2026-07-18; see "Resolved since 2026-07-18" above for exactly what
147147
changed and what's still intentionally not a structural guarantee
148-
(undo/redo) or not read anywhere (`coordinate_system`, by design).
148+
(undo/redo). `coordinate_system` is fully implemented, not merely
149+
declared — see the Summary table below and `SYS-W14-14`.
149150

150151
## 4. Non-gaps (re-confirmed 2026-07-18, no regressions)
151152

new.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@
33
_Prepared 2026-07-26 from the current source tree, the format specification,
44
the test/build configuration, and the current Release build._
55

6+
**Status note (`SYS-W13-03`):** this is a point-in-time proposal snapshot,
7+
not live planning — `plan.md` is authoritative for current work. Its
8+
recommended "event bindings for Areas/triggers" feature has since shipped as
9+
bounded Event Preview/Play (`SYS-W14-40`, `[DONE]` in `plan.md`): timer
10+
bindings, Walk Mode Area enter/exit, and viewport-picked object clicks all
11+
dispatch automatically now. Treat the rest of this analysis as historical
12+
context, not a current gap list.
13+
614
## Executive summary
715

816
MeshCraft is already a substantial, safety-conscious 3D scene editor rather

plan.md

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -93,31 +93,34 @@ time; re-evaluate scope and blockers before starting each item.
9393
`capability_documentation` lint test; volatile CTest totals are no longer
9494
recorded as product truth.
9595

96-
- **SYS-W13-03** `[PROPOSED]` `P1` — Remove documentation drift the
97-
`capability_documentation` lint does not yet cover, confirmed by direct
98-
read (not the full review list — two of its claims did not hold up: the
99-
"click/timer event" gap it named is `SYS-W14-11`'s pre-existing JSON-only
100-
scope, already accurate, and `RELEASE.md`'s "95 tests" mention is already
101-
self-caveated as historical, not asserted as current):
102-
- `CHANGELOG.md:58-59` still states "Automatic collision/click/timer
103-
trigger events and automatic state switching remain unimplemented,"
104-
which `SYS-W14-40` (`[DONE]`, Event Preview/Play) has since superseded.
105-
- `missing.md` self-contradicts on `coordinate_system`: line 53 and the
106-
matrix at line 177 say it is fully implemented and honored in the editor
107-
and glTF export, while line 148 still says it is "not read anywhere
108-
(`coordinate_system`, by design)".
109-
- `RELEASE.md`'s docs-checklist references a `plan.md` "summary table"
110-
recomputed from ``/`🟡`/`🧪`/`📋`/`🔴` row markers; `plan.md` no longer
111-
uses that emoji-marker format (`SYS-W13-01` moved it to
112-
`[DONE]`/`[IN_PROGRESS]`/`[BLOCKED]`/`[DEFERRED]` text markers), so that
113-
checklist step no longer describes a real check.
114-
- `new.md` (headed "prepared 2026-07-26 from the current source tree")
115-
recommends "event bindings for Areas/triggers" as a next feature; that is
116-
what `SYS-W14-40` already shipped, so the recommendation is stale despite
117-
the file's date.
118-
Extend the documentation validator with a small number of source-backed
119-
negative assertions covering these four, rather than trying to make every
120-
prose sentence a brittle static test.
96+
- **SYS-W13-03** `[DONE]` `P1` — Removed 4 verified documentation-drift
97+
claims (not the full external-review list — two of its claims did not
98+
hold up on direct read: the "click/timer event" gap it named is
99+
`SYS-W14-11`'s pre-existing JSON-only scope, already accurate, and
100+
`RELEASE.md`'s "95 tests" mention is already self-caveated as historical,
101+
not asserted as current — left both alone):
102+
- `CHANGELOG.md` no longer claims automatic trigger/state-switching events
103+
are unimplemented; credits `SYS-W14-40` (Event Preview/Play) for
104+
automatic timer/Area/click dispatch.
105+
- `missing.md` no longer self-contradicts on `coordinate_system` — removed
106+
the stale "not read anywhere... by design" clause that contradicted its
107+
own Summary table two sections earlier.
108+
- `RELEASE.md`'s docs checklist no longer references the retired
109+
emoji-marker (``/`🟡`/`🧪`/`📋`/`🔴`) summary-table format; points at
110+
`test/validate_plan_consistency.py` instead, which is the real check.
111+
- `new.md` gained a status note crediting `SYS-W14-40` for the "event
112+
bindings for Areas/triggers" feature it recommends, so the recommendation
113+
reads as historical rather than a live gap despite the file's date.
114+
Extended `test/validate_capability_documentation.py` with 6 source-backed
115+
assertions covering all four (2 of the 4 needed both a `forbid` the stale
116+
text is gone and a `require` the replacement is present). Caught and fixed
117+
2 vacuous checks along the way — both `forbid` needles for CHANGELOG.md
118+
and `missing.md` failed to match the actual pre-fix text on the first
119+
attempt (a missing 2-space Markdown continuation indent, and a spurious
120+
literal `\n` where the source had a space), which would have made the
121+
check pass regardless of whether the fix was ever applied; verified each
122+
needle against `git show HEAD:<file>` before trusting it. All 6 new checks
123+
plus the pre-existing checks pass.
121124

122125
### W5 — MC3 governance
123126

test/validate_capability_documentation.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ def main() -> int:
5050
format_doc = read(repo, "MC3_FORMAT.md")
5151
testing = read(repo, "TESTING.md")
5252
matrix = read(repo, "docs/CAPABILITY_MATRIX.md")
53+
changelog = read(repo, "CHANGELOG.md")
54+
missing_doc = read(repo, "missing.md")
55+
release_doc = read(repo, "RELEASE.md")
56+
new_doc = read(repo, "new.md")
5357

5458
for proxy in ('obj.collision == "box"', 'obj.collision == "sphere"',
5559
'obj.collision == "capsule"'):
@@ -124,6 +128,21 @@ def main() -> int:
124128
failures += forbid(format_doc, "viewport picking does not yet generate live",
125129
"format documentation no longer claims click events are absent")
126130

131+
# SYS-W13-03: 4 documentation-drift claims found and fixed in a
132+
# second-review pass, each verified against source before fixing.
133+
failures += forbid(changelog, "trigger events and\n automatic state switching remain unimplemented",
134+
"CHANGELOG no longer claims automatic trigger events/state switching are absent")
135+
failures += require(changelog, "SYS-W14-40",
136+
"CHANGELOG credits bounded Event Preview/Play for automatic dispatch")
137+
failures += forbid(missing_doc, "not read anywhere (`coordinate_system`, by design)",
138+
"missing.md no longer self-contradicts on coordinate_system being unread")
139+
failures += forbid(release_doc, "`✅`/`🟡`/`🧪`/`📋`/`🔴`",
140+
"RELEASE.md no longer references the retired emoji-marker summary table")
141+
failures += require(release_doc, "validate_plan_consistency.py",
142+
"RELEASE.md's docs checklist points at the real plan.md consistency check")
143+
failures += require(new_doc, "SYS-W14-40",
144+
"new.md's status note credits the shipped Event Preview/Play feature")
145+
127146
if failures:
128147
print(f"{failures} capability-documentation check(s) failed.", file=sys.stderr)
129148
return 1

0 commit comments

Comments
 (0)