Normalize tracked text for Linux CI

This commit is contained in:
gamer147
2026-08-03 12:07:13 -04:00
parent cfe6b01472
commit 378d892b01
12 changed files with 7647 additions and 7639 deletions

13
.gitattributes vendored
View File

@@ -64,10 +64,9 @@
*.woff2 binary
*.zip binary
# These generated files currently have CRLF committed by generator contract.
# Preserve their bytes while retaining textual diffs until the generators and
# their committed output are deliberately migrated together.
docs/opcode-reference.md -text -eol diff whitespace=trailing-space,space-before-tab,cr-at-eol
docs/global-reference.md -text -eol diff whitespace=trailing-space,space-before-tab,cr-at-eol
docs/engine-ctx-reference.md -text -eol diff whitespace=trailing-space,space-before-tab,cr-at-eol
tools/age_opcodes_himegari.py -text -eol diff whitespace=trailing-space,space-before-tab,cr-at-eol
# Generated references are ordinary canonical-LF text. Their whitespace
# exceptions preserve generator-owned formatting without disabling EOL policy.
docs/opcode-reference.md whitespace=trailing-space,space-before-tab,cr-at-eol
docs/global-reference.md whitespace=trailing-space,space-before-tab,cr-at-eol
docs/engine-ctx-reference.md whitespace=trailing-space,space-before-tab,cr-at-eol
tools/age_opcodes_himegari.py whitespace=trailing-space,space-before-tab,cr-at-eol

View File

@@ -31,7 +31,7 @@ S:\Game Hacking\Eushully\Himegari\ ← workspace root (three siblings)
├── README.md navigation-only repository front door; canonical facts stay in docs/
├── global.json pins the validated .NET 8 SDK feature band
├── .editorconfig / .gitattributes UTF-8, indentation, text/EOL, and binary-file policy;
generator-owned CRLF references retain their committed bytes
tracked source and generated references use canonical LF
├── run-godot.ps1 / run-godot.cmd tracked development launcher + Windows wrapper;
│ resolves Godot/game-root from parameters, environment,
│ PATH, and the conventional sibling install

View File

@@ -55,7 +55,7 @@ claiming portable exports.
| Game-install, runtime metadata, and repository discovery | `GameRootSelection` accepts `--game-root`, then probes the executable directory and current working directory for `SYS4INI.BIN`; on Unix the frontend prefers inherited shell `PWD` because Godot may change the process directory during project startup. Godot injects the selected root into its catalog and loose-first ALF store. `Himegari.csproj` embeds generated `build/opcodes.json`, and the frontend loads that assembly resource rather than `Paths.OpcodesJson`. `Paths.cs` remains a development/test locator; its page-map use is compiled only for `TOOLS` builds | Installed game data and packaged VM metadata no longer depend on the workspace sibling layout. The Linux export passed an explicit absolute game root outside the repository and read the installed archives. Exported automatic page maps use `user://diagnostics/page-maps`; editor/development runs preserve `build/page-map-<SCENE>.jsonl` | Let the future profile launcher pass `--game-root`, and run executable-directory/CWD plus case/permission smoke gates on Linux and macOS |
| Archive parity oracle | One integration test launches `bin/BinExtractALF.exe` | Windows-only test helper, not a shipped runtime dependency | Skip/replace on non-Windows CI; runtime ALF/AAI readers do not depend on it |
| Native RE tools | Frida/Ghidra helpers target the original `AGE.EXE`; supporting utilities include Windows executables and Windows command conventions | Development/research only | Keep separate from export requirements; document platform prerequisites per tool |
| Python workflow | Operating guide uses Windows `py -3.11` invocation | Developer workflow only | Add equivalent `python3` instructions if non-Windows development becomes active |
| Python workflow and core CI | The operating guide uses Windows `py -3.11`; `validate.py` launches child tools through `sys.executable` and has POSIX process-group cleanup plus `ps`-based leak auditing | The asset-independent core gate is platform-neutral. Tracked generated references and the engine solution/project files now have canonical LF blobs, so Linux regeneration and a fresh checkout do not acquire EOL-only drift | Run the first hosted gate on Linux with an explicitly provisioned Python 3.11 interpreter and `python -X utf8 tools/validate.py --level core`; keep private corpus and Godot runtime phases outside public CI |
No authored runtime code currently calls native DirectSound, Direct3D, Vulkan, Metal, or OpenGL. Mentions of
those APIs in `docs/engine-re.md` describe the original AGE implementation. Both the software-oracle display

View File

@@ -912,6 +912,14 @@ do not mix mechanical moves with semantic changes.
gate remain green under the tracked policy. Item 2, a CI workflow calling that same core gate, is the next
safe slice.
**Linux CI preparation (2026-08-03):** the eight legacy text blobs that prevented a clean Linux checkout or
generated-reference comparison are now deliberately normalized to canonical LF: the engine solution, three
engine project files, three generated Markdown references, and the generated Himegari opcode module. The
generated files are once again ordinary text under the repository EOL policy; their existing whitespace
exceptions do not disable normalization. Regeneration through all three owning tools is clean, Windows core
validation remains green, and a Linux Git comparison reports no unstaged EOL drift. The first hosted CI job
can therefore target Linux rather than carrying forward a Windows-runner dependency.
**Not cleanup targets:** generated `build/` output, the two intentional solution files, historical
`docs/superpowers/` plans/specifications, and fidelity-specific complexity that is directly covered by the
native ABI. Reorganization is successful when ownership and reproduction become clearer, not when the raw
@@ -1259,8 +1267,9 @@ layer's rendering diverges from ADV; save layout.
## 8. Immediate next step
Continue step 5 of the **codebase consolidation** maintenance slice with an asset-independent CI workflow that
invokes `py -3.11 -X utf8 tools/validate.py --level core` on Windows using the tracked .NET SDK policy. Keep the
private game corpus and Godot runtime out of the hermetic CI job, preserve the validation driver's failure and
child-process semantics, and avoid introducing a second build/test command path.
provisions Python 3.11 and the `global.json` .NET SDK on Linux, then invokes
`python -X utf8 tools/validate.py --level core`. Keep the private game corpus and Godot runtime out of the
hermetic CI job, preserve the validation driver's failure and POSIX child-process semantics, and avoid
introducing a second build/test command path.
Concrete playthrough blockers may still preempt this bounded maintenance work; the consolidation effort does
not replace Phase B gameplay validation or the open cross-platform gates.