chore(ariadne): remove obsolete extraction script

This commit is contained in:
2026-09-08 19:15:14 -04:00
parent 4f0512832b
commit 01f47b419d
5 changed files with 47 additions and 344 deletions

View File

@@ -249,43 +249,45 @@ Why discard/rework it:
- Bazel runfiles handling made the shell script messy;
- the PR should be refocused before this work continues.
## Clew artifact boundary
Clew now owns extraction, preparation, and Ren'Py AST export.
Ariadne owns analysis over Clew-produced data.
Ariadne consumes Clew's raw `clew-renpy-ast-v1` JSON directly.
It deserializes Clew's generic serializer format into typed Rust structs and enums.
It then maps the full Clew AST into Ariadne-owned internal data structures.
The first importer preserves unrecognized or unneeded Ren'Py objects.
Use an `UnknownNode` or equivalent representation instead of dropping data.
Semantic helpers can exist for known Ren'Py statement classes.
`NodeKey.namespace` comes from the Clew AST file path relative to `output/ast/`.
Clew preserves the game-root boundary in that path.
This keeps label names from different source universes separate.
The first Ariadne CLI prints a human-readable validation report by default.
The report includes counts for documents, namespaces, and nodes by kind.
It also includes counts for unknown nodes, edges, refs, and warnings.
The CLI also supports an opt-in debug dump of internal state, for example `--dump-state`.
Treat that dump as a development surface until Ariadne documents a stable format.
Route planning is out of scope for the first importer slice.
## Preparation output direction
Preparation output should evolve from:
Clew produces the preparation output for Ariadne.
The current relevant output is:
```text
output/
source/
work/
logs/
ast/ # Clew `clew-renpy-ast-v1` JSON
extracted/ # extracted game files
```
to:
```text
output/
ast/ # normalized Ren'Py AST JSON
source/ # decompiled/debug source
work/ # extracted raw/intermediate files
logs/
```
Decompiled source remains useful as a debug artifact, but may stop being the primary parser input.
## Preparation tooling direction
The shell script is becoming too broad. A better next step is to move preparation into its own Python tool before returning to Ariadne core.
That preparation tool should own:
- game-root and launcher discovery;
- archive extraction;
- `.rpyc` collection;
- AST export through the matching bundled Ren'Py runtime;
- optional decompilation for debug source;
- output layout and logs.
Ariadne core should only depend on the preparation tool's normalized artifacts.
Decompiled source is no longer Ariadne's primary input.
The old `src/ariadne/extract-and-decompile.sh` script was obsolete.
Ariadne now relies on Clew for extraction and preparation.
## Python dependencies and vendoring
@@ -306,7 +308,8 @@ The AST exporter itself needs only the Python standard library plus the target l
## Recommended next session start
1. Do not continue from the discarded PR implementation.
2. Inspect the actual `rpycdec` source and decide how to expose it under `//third_party/python` or another `//third_party` package.
3. Design a standalone preparation Python tool with no unnecessary external dependencies.
4. Keep the normalized AST JSON boundary between bundled Ren'Py runtime code and Rust Ariadne core.
5. Return to the Rust `State` shape after the preparation artifact contract is clearer.
2. Implement typed Rust deserialization for Clew's `clew-renpy-ast-v1` JSON.
3. Map every Clew AST value into Ariadne-owned internal data structures.
4. Preserve unknown Ren'Py objects as `UnknownNode` or an equivalent node.
5. Build the default validation report for imported Clew output.
6. Add an opt-in debug dump for internal state.