diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..14fac91 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index bf57ae2..b282698 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,9 @@ This repository contains only authored engine, tooling, native-boundary, test, a It does not contain the original game. Supply a legally obtained AGE installation separately; never copy original game data into this repository. +The repository's authored work is available under the [MIT License](LICENSE). That grant does not cover +Eushully game files or override the separate terms recorded for third-party material. + ## Start here Prerequisites for the current Windows development workflow are Python 3.11, the .NET 8 SDK, Godot 4.7 diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index 0c0ded1..7933cba 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -2,7 +2,8 @@ This file records incorporated third-party code and prior public research that materially informed this project. It does not license Eushully game assets or code, and no original game files are distributed with -this repository. +this repository. The repository's MIT license covers authored project work only; material identified below +remains subject to its own terms or is acknowledged as prior research rather than relicensed here. ## Eushully-Decompiler research diff --git a/docs/PROJECT-STRUCTURE.md b/docs/PROJECT-STRUCTURE.md index afb1b6d..eb1165a 100644 --- a/docs/PROJECT-STRUCTURE.md +++ b/docs/PROJECT-STRUCTURE.md @@ -29,6 +29,7 @@ S:\Game Hacking\Eushully\Himegari\ ← workspace root (three siblings) └── age-reimpl/ ← OUR WORK (everything we made lives here) │ ├── README.md navigation-only repository front door; canonical facts stay in docs/ + ├── LICENSE holder-neutral MIT grant for authored project work ├── THIRD_PARTY_NOTICES.md incorporated-code licenses + prior-research acknowledgment ├── global.json pins the validated .NET 8 SDK feature band ├── .editorconfig / .gitattributes UTF-8, indentation, text/EOL, and binary-file policy; diff --git a/docs/platform-portability.md b/docs/platform-portability.md index f6ed1d5..8b726b6 100644 --- a/docs/platform-portability.md +++ b/docs/platform-portability.md @@ -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`. Development/test `Paths.cs` finds the repository by tracked `global.json`, solution, and opcode-map markers rather than a checkout-directory name | 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; a source-only core proof also passes from an arbitrary repository directory name. Exported automatic page maps use `user://diagnostics/page-maps`; editor/development runs preserve `build/page-map-.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 can launch a machine-local `bin/BinExtractALF.exe`; the binary and matching DLL are ignored and have unverified redistribution terms | Windows-only installed-data helper, not a shipped runtime dependency | Keep it in an explicit private workspace gate; runtime ALF/AAI readers do not depend on it | | Native RE tools | Frida/Ghidra helpers target the original `AGE.EXE`; PE-sieve was tried and replaced by the Frida import-map workflow | Development/research only; no native RE executable is tracked | Keep separate from export requirements; document platform prerequisites per tool | -| 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 590 engine cases are explicitly split into 502 source-only core cases and 88 `Workspace` installed-data/native-oracle cases; both selections pass with zero skips. The opcode-bootstrap unit injects synthetic observations while production bootstrap retains real-corpus scanning. `.gitea/workflows/core-validation.yml` uses the target server's demonstrated `ubuntu-latest`, checkout/setup-dotnet v4, setup-python v6, and Gitea artifact action baseline. A standalone arbitrary-name, corpus-free repository passes the complete core driver. The sanitized history is published on the private remote's default `develop` branch; the first hosted Linux core run succeeded on 2026-08-03 before sanitation, at the tree now represented by `524ea74` | Retain Windows-native GDI parity and private installed-game/runtime checks as separate trusted gates; keep the hosted core gate required for future integration policy | +| 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 590 engine cases are explicitly split into 502 source-only core cases and 88 `Workspace` installed-data/native-oracle cases; both selections pass with zero skips. The opcode-bootstrap unit injects synthetic observations while production bootstrap retains real-corpus scanning. `.gitea/workflows/core-validation.yml` uses the target server's demonstrated `ubuntu-latest`, checkout/setup-dotnet v4, setup-python v6, and Gitea artifact action baseline. A standalone arbitrary-name, corpus-free repository passes the complete core driver. The sanitized history is published on the private remote's default `develop` branch; the first hosted Linux core run succeeded on 2026-08-03 before sanitation at the tree now represented by `524ea74`, and the hosted gate succeeded again on the sanitized lineage at `d673652` | Retain Windows-native GDI parity and private installed-game/runtime checks as separate trusted gates; keep the hosted core gate required for future integration policy | 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 diff --git a/docs/remake-architecture-and-roadmap.md b/docs/remake-architecture-and-roadmap.md index dcffd6d..07fd055 100644 --- a/docs/remake-architecture-and-roadmap.md +++ b/docs/remake-architecture-and-roadmap.md @@ -944,8 +944,8 @@ do not mix mechanical moves with semantic changes. is `../age-reimpl-pre-binary-purge-20260803.bundle` (8,824,649 bytes; SHA-256 `E157D7D2404DD2FC6E19FB4B65D08FB9784F415DAB1A2CFF6850121A5F305E5E`) and was verified again after the rewrite. `bin/` now tracks policy only and ignores optional machine-local extractor files; PE-sieve remains documented - solely as a failed historical experiment. This resolves the committed-binary portion of item 3, but - Kelebek-derived source/data and the user-owned project license choice remain unresolved for wider distribution. + solely as a failed historical experiment. This resolved the committed-binary portion of item 3; the later + source-history sanitation and project-license status below supersede the remaining concerns recorded here. **Hermetic Gitea core workflow (2026-08-03):** the correction is complete. The 590 engine cases are now explicitly partitioned into 502 source-only cases and 88 `Workspace` installed-data/native-oracle cases; @@ -961,7 +961,8 @@ do not mix mechanical moves with semantic changes. data. The rewritten repository is now published to the selected private Gitea remote on its default `develop` branch; the workflow's push and pull-request filters target `develop`. The first actual hosted Linux core run succeeded on 2026-08-03 before the later source-history sanitation; its tree-equivalent rewritten commit is - `524ea74`, closing the CI execution gate. + `524ea74`, closing the original CI execution gate. The hosted gate also succeeded on the sanitized lineage at + `d673652` on 2026-08-03. **Kelebek source-redistribution boundary (2026-08-03):** the user selected a deliberately narrow policy: retain useful factual opcode ABI data, established labels, and explicit per-entry provenance, while no longer @@ -979,7 +980,12 @@ do not mix mechanical moves with semantic changes. objects were pruned, and `git fsck --full --strict` plus explicit path/content-history searches pass. The private `develop` branch was force-replaced with this sanitized lineage. Existing outside clones or backups may retain the superseded private history and must not be used as a source for future public publication. - The project-license choice remains user-owned and unresolved. + + **Project license (2026-08-03):** the user selected MIT for authored project work, with no named individual or + organization in the copyright notice. `LICENSE` carries the grant; `README.md` states its scope; and + `THIRD_PARTY_NOTICES.md` makes clear that it neither licenses Eushully game material nor overrides separately + licensed third-party material. This closes the remaining repository-policy decision without attempting to + relicense factual opcode provenance or prior research. **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 @@ -1327,9 +1333,9 @@ layer's rendering diverges from ADV; save layout. --- ## 8. Immediate next step -Continue step 5 of the **codebase consolidation** maintenance slice by confirming the hosted Linux core gate on -the sanitized lineage, then obtain the user-owned project-license choice. The private remote, rewritten-history -backup, source/history redistribution boundary, and source-only CI flow are established. Do not infer a license -choice or change remote policy without the user's explicit direction. -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. +The **codebase consolidation** maintenance slice is complete: ownership/layout cleanup, source-only Linux CI, +private-remote backup, binary and Kelebek-source history sanitation, attribution, and the MIT project license are +all established. Resume the planned **AGE-exact retained glyph-mask text renderer** polish slice, starting with +the platform-neutral glyph request/result contract and shared coverage/compositing core. Concrete playthrough +blockers may still preempt that work; do not change remote policy without the user's explicit direction. +The completed consolidation effort does not replace Phase B gameplay validation or the open cross-platform gates. diff --git a/docs/tools-reference.md b/docs/tools-reference.md index 2efecba..170779c 100644 --- a/docs/tools-reference.md +++ b/docs/tools-reference.md @@ -44,7 +44,8 @@ be named `age-reimpl`. The workflow has no secrets, private corpus, Godot runtim access; failure logs are retained for seven days. The private remote's default and tracked development branch is `develop`; pushes and pull requests targeting it select the gate. The rewritten repository is published there, and the first actual Linux/Gitea core run succeeded on 2026-08-03 before the later source-history sanitation; -its tree-equivalent rewritten commit is `524ea74`. +its tree-equivalent rewritten commit is `524ea74`. The hosted gate also succeeded on the sanitized lineage at +`d673652` on 2026-08-03. ## Optional local binary tools