feat(progression): json stores on a real filesystem (slice 8)
new progression.adapters project, no engine reference. Stores take a directory path; Godot resolves user:// with GlobalizePath and passes it in, which is what makes them testable at all - originally I'd written this slice off as untestable. version lives in a file envelope, not the snapshot, so the domain only knows the current shape. A newer-build save reports Corrupt with a reason instead of masquerading as "no save" and getting overwritten. atomic write via temp + rename. One file per aggregate: saving a run leaves the profile file byte-identical, asserted. guard rail fixed - it was matching prose in doc comments, now anchored to using-directives plus a project.assets.json check. 63 tests.
This commit is contained in:
@@ -40,11 +40,15 @@ No tests. Pure setup.
|
||||
**Guard rail for the whole phase:**
|
||||
|
||||
```sh
|
||||
grep -rn "using Godot" progression progression.tests --include=*.cs # must print nothing
|
||||
# must print nothing — anchored to real using-directives
|
||||
grep -rnE "^\s*(global\s+)?using\s+Godot" progression progression.adapters progression.tests --include=*.cs
|
||||
# stronger, and cannot be fooled by wording: no project may resolve the engine assembly at all
|
||||
grep -c GodotSharp progression/obj/project.assets.json progression.adapters/obj/project.assets.json
|
||||
```
|
||||
|
||||
That single check is what ADR-0004 buys you. Scope it to `--include=*.cs` — an unscoped `grep -r` also matches
|
||||
prose in the `.csproj` comments and reports a false violation.
|
||||
That check is what ADR-0004 buys you. Match using-directives **anchored to the start of a line**: a bare
|
||||
`grep -r "using Godot"` also hits `.csproj` comments and doc comments that legitimately mention the engine in prose,
|
||||
and reports a false violation. The `project.assets.json` check is the one that cannot be fooled by wording.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user