Repository navigation
GraphPaper 0.5: reusable voice graphs and bounded JEV requests - #8
Conversation
…verrides [prepare]
…orkflow edits [prepare]
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4f3be45713
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| v=SavedVoice(profile=profile,training_revision=1 if samples else 0, | ||
| learned_revision=1 if samples and profile.graph.get('nodes') else 0) |
There was a problem hiding this comment.
Preserve staleness when copying changed training samples
When a project profile was learned and its voice samples were subsequently added, removed, or changed, the existing graph remains populated while sample_hash no longer matches the current samples. Saving that project as a reusable voice therefore sets both revisions to 1 and reports needs_relearning: false; applying it then uses the old graph and ignores the newly copied training pieces. Derive learned_revision from whether the profile was learned from the copied sample set, rather than merely whether any graph nodes exist.
Useful? React with 👍 / 👎.
| if isinstance(graph,dict) and graph.get('nodes'): | ||
| project.voice_profile.graph=StyleGraph.model_validate(graph).model_dump() | ||
| else: | ||
| project.voice_profile.graph=for_profile(project.voice_profile).model_dump() |
There was a problem hiding this comment.
Fall back when generated voice graphs fail validation
If the model returns usable instructions plus a nonempty but imperfect graph—for example duplicate node IDs, a dangling edge, an extra property, or 33 nodes—this direct validation raises and fails the entire paid learning job. json_mode=True only guarantees a JSON object, not conformance to StyleGraph, and the fallback is currently used only when the graph is absent. Catch graph-validation failures and build the deterministic graph from the already validated instructions instead.
Useful? React with 👍 / 👎.
v0.5.0 published and independently verifiedRelease: https://github.com/AronAxe/GraphPaper/releases/tag/v0.5.0 Successful, entirely GitHub-hosted release run: https://github.com/AronAxe/GraphPaper/actions/runs/37720497972 The release targets the same source revision tested and built by both runner jobs:
Windows archive: No use of the user's computer or installed project database occurred during this update. All source work, diagnostics, regression tests and packaging were performed through GitHub and disposable GitHub-hosted runners. |
Implemented
Verified entirely on GitHub-hosted runners
Successful quality run: https://github.com/AronAxe/GraphPaper/actions/runs/37717419611
All four Linux/Windows Python 3.12/3.13 test jobs passed. All six real-HTTP browser suites passed, including the new save-once/apply-to-second-project workflow and existing Science, Polemic, Graphify and prose tools. The documentation check passed. The only commit after the tested source refreshes
publish-manifest.json; application/test source is unchanged, verified by commit comparison.The preparation scripts and preparation workflow have been removed. Source files are ordinary reviewable Python/JavaScript. The source-only publishing manifest was regenerated on a hosted runner.
Delivery
Merge triggers the dedicated GraphPaper 0.5 hosted release workflow. It repeats regression/browser checks, builds the Windows application with the public Graphify and official Codex runtimes, exercises the actual native window including voice reuse, verifies the archive, and publishes the release only after success. Compiled-native results are not claimed until that job passes.
No access to the user's computer, installed project database, private manuscripts, API keys or Codex session was used. Inference tests are synthetic HTTP fixtures, not a claim of live JEV or model-quality validation.