docs(obsidian): process inbox notes

This commit is contained in:
2026-09-15 09:44:36 -04:00
parent a73b59aa0a
commit 4b3ca27637
4 changed files with 53 additions and 140 deletions

View File

@@ -6,6 +6,34 @@ These notes capture the design state from the Ariadne pipeline and Ren'Py AST di
Do not assume the implementation described here still exists in the Ariadne worktree. The pull request work was considered exploratory and should be dropped or redone cleanly.
## Product goals
Ariadne analyzes a local Ren'Py game install.
It builds a source graph and plans routes through target nodes.
Goal order:
1. Unlock all Steam achievements.
2. Maximize Season 3 dialogue coverage.
3. Extend dialogue coverage to Seasons 1 and 2.
Achievement unlocks appear in source as reachable calls.
The first planning target is each achievement grant node.
Season 3 exposes an in-game percentage for seen dialogue.
That percentage gives a validation signal for Ariadne's coverage model.
The first phase ignores player state.
It computes routes from source alone.
A later phase reads save files or persistent data.
It removes completed targets and plans remaining coverage.
## Privacy constraint
Do not write the target game's title in committed material.
Use `target game` or `Ren'Py game` in notes, code, commits, and pull requests.
Keep title-specific paths and names in ignored local data only.
## Core state model
Ariadne's core state should be graph-first. The current agreed shape is:
@@ -274,6 +302,30 @@ Treat that dump as a development surface until Ariadne documents a stable format
Route planning is out of scope for the first importer slice.
## Pipeline stage boundary
A library stage is a pure state transformation.
It receives committed `State` and stage-specific inputs.
It returns a new `State` with pending operations.
A CLI stage is a user-facing execution target.
It owns filesystem discovery, file reads, and stage orchestration.
It can deserialize Clew JSON by calling Ariadne library helpers.
`run_parse` receives already-deserialized Clew documents.
It does not discover files, read files, or deserialize JSON.
The runner applies pending operations after each library stage.
The next stage receives committed state with no pending operations.
`apply_pending` returns a new `State`.
It applies the pending batch atomically.
Invalid pending operations do not produce partial committed state.
The first implementation does not resume from serialized stage artifacts.
It also avoids a stage trait, shared context object, and stage invocation enum.
Give each stage function only the inputs it needs.
## Preparation output direction
Clew produces the preparation output for Ariadne.