GDAS-reader
Read an artifact and write ledger.json. This skill does not create a Godot scene or a Bevy crate. godot-rea and bevy-rea do that from the ledger.
When to use
Load this when the input is a folder or a shipped file and the output must be a reconstruction in Godot or Bevy. Run the reader first. Hand the ledger to one emitter.
python skills/gdas-reader/scripts/read_artifact.py P:\artifact --out P:\work\ledger.json
python skills/gdas-reader/scripts/read_artifact.py --self-test
A hub-only install uses the copy under Available Scripts: read_artifact.py.
Schema: references/ledger.md.
What the reader records
| Artifact | Confirmed facts | What stays partial or unknown |
|---|---|---|
| Source tree | Declarations, including class_name, async fn, and pub(crate) fn. UI-shaped string literals. |
State-looking names (state, phase, mode) stay partial. |
| Web bundle | Document title outside script and style, headings, script URLs, image URLs, JSON key paths for every array element | Behavior inside minified scripts. A folder is also scanned for source, assets, and WASM instead of dropping them. |
| Asset folder | File path, media type, and source_path |
Bytes stay put unless --allow-assets and a real --license-note are both set |
| WASM | Export names, import module and field names, up to 10 ASCII runs | Function bodies. Non-ASCII text. A truncated section becomes unknown instead of a crash. |
| PE or ELF | Format identification and readable strings | Machine code. A .dll or .so string is partial because the import table is not walked. A short header becomes unknown. |
The reader is stdlib Python. It does not call an external decompiler. A native binary contributes a header walk, imports, and strings. Packed or encrypted sections become unknown entries.
Ledger honesty
Score the ledger before an emitter runs. Bands are additive. A ledger below 3 does not get emitted as gameplay.
| Band | Rule |
|---|---|
| 0 | Entries claim behavior the file does not show. |
| 1 | Status is missing, or every guess is marked confirmed. |
| 2 | Status values exist, but limits hides a format the reader cannot parse. |
| 3 | Each entry has id, status, evidence, and a skill suggestion. unknown is listed. |
| 4 | Caps and license gaps are in limits. No asset bytes were copied. Partial names are not described as working mechanics. |
NEVER
- NEVER mark a symbol
confirmedbecause its name looks like health, damage, or save. Those matches arepartial. - NEVER copy image, audio, or glTF bytes unless both
--allow-assetsand--license-noteare set. A note alone records the license and still leaves the bytes in place. - NEVER decompile native code, WASM bodies, or minified JavaScript to invent a mechanic.
- NEVER drop
limitswhen the scan hit the 40-entry cap or the file was packed. - NEVER point
godot-reaorbevy-reaat a relative../gdas-readerpath. Link the GitHub URL above so a single-skill install still names the prerequisite.
Available Scripts
read_artifact.py
Classifies a file or directory and writes the ledger. --self-test checks fixtures. --license-note records a license. --allow-assets copies bytes into copied-assets/ next to --out and requires that note.
Related Skills
Prerequisites
- None. This skill is the first step.
Complements
- godot-rea — Godot 4.7 project emitted from this ledger.
- bevy-rea — Bevy 0.20 crate emitted from this ledger.
Downstream / consumers
- godot-builder — Headless import after
godot-reawrites scenes. - bevy-project-foundations — Crate pin and plugin shape the Bevy emitter follows.
Master
- Mirrored inside godot-master and bevy-master. A hub-only install still has this reader.
