Skip to content

GraphPaper 0.5: reusable voice graphs and bounded JEV requests - #8

Merged
AronAxe merged 6 commits into
mainfrom
fix/jev-voice-graphs-v0.5
Oct 8, 2026
Merged

AronAxe merged 6 commits into
mainfrom
fix/jev-voice-graphs-v0.5

Conversation

@AronAxe

@AronAxe AronAxe commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Implemented

  • Named, reusable voice graphs. Save an existing learned voice without another model call; apply its compact graph in any project without copying training articles. Training lives in a separate library with file/text/URL inputs, explicit learning, graph editing, portable export/import and project snapshots.
  • Namespaced style/evidence graph composition for inspection without modifying the stored research graph or treating style as factual support.
  • Current project instructions override saved habits, including power language, profanity, ridicule and rhetorical force. No vocabulary blacklist or compulsory moderation was added.
  • JEV receives compact graph context rather than training prose. Requests are planned and split by actual serialized UTF-8 size with original question/candidate IDs. Complete envelopes are bounded, typed answers checked, calls/costs recorded. Truly indivisible oversized optional decisions remain explicitly unscored rather than aborting writing or fabricating an approval.
  • Existing projects, evidence, graphs, voice settings and manuscripts are preserved. Native voice export uses the existing narrow Save As bridge.

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.

@AronAxe
AronAxe marked this pull request as ready for review October 8, 2026 02:24
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-08T02:29:34.104406Z 4f3be45 Draft marked ready
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@AronAxe
AronAxe merged commit f7b0aeb into main Oct 8, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +56 to +57
v=SavedVoice(profile=profile,training_revision=1 if samples else 0,
learned_revision=1 if samples and profile.graph.get('nodes') else 0)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Comment thread graphpaper/voice.py
Comment on lines +90 to +93
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()

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

AronAxe commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

v0.5.0 published and independently verified

Release: 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: 925c8034780c0cfe56ef45f6286feded1a34f285.

  • 287 automated Windows tests passed, with no skips or failures on that runner.
  • The Linux tests and all six browser workflow suites passed, including voice reuse and switching away from Science's research-only view.
  • 16 actual native source checks passed, followed by 21 checks against the compiled Windows application. The latter includes real Win32 mouse input, Science, public Graphify extraction, Polemic controls, saving a named voice graph, reusing it in a second project with zero model calls and zero copied training pieces, overlay inspection, a native Save As dialog, and pending-edit persistence on close. No JavaScript or bridge recursion errors.
  • The public Graphify 0.9.80 frozen worker and official Codex runtime checks passed. Provider/JEV inference tests use synthetic responses; no live user account or private article was accessed.
  • The hosted image did not forward the environment-only debugger flag. The native harness now uses pywebview's documented setting through an explicit CI-only argument restricted to GitHub-hosted Windows and a disposable test data directory. Normal app launches do not enable a debugger or change CSP/bridge permissions.
  • The original header image was preserved. The new voice graph's habits remain editable, including power language; the current author instruction overrides stored preferences.

Windows archive: GraphPaper-v0.5.0-Windows-x64.zip, 180,146,326 bytes. SHA-256: 952e1a8312b13ed178f557395e690817adb3851fa3421c4f5a3ef185f0bb96e2. GitHub's uploaded asset digest matches the tested ZIP. The asset is publicly published, not merely queued or an Actions-only candidate.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant