Repository navigation
Add durable opt-in chart review sessions and an agent adapter - #22
Merged
Merged
Conversation
13 tasks
shim9610
marked this pull request as ready for review
October 22, 2026 08:15
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements #18's opt-in review workflow: a person edits several charts and enters separate review comments, then an agent receives one durable batch, updates runnable source and publishes a validated complete next round.
figgyplot.review.Session, native/Jupyter review controls, explicit dispositions and an all-Figure barrier. Publish checkpoints before closing approved views; failed submission preserves editable input.API, architecture and integration requirements · Measured validation
Validation: CI #60 passed all 785 tests on
5c96e6a. The four shards passed 197/196/196/196 cases; their pytest runtimes were 868.22/817.64/458.05/413.72 seconds. The requiredPR / Linux integrationcheck audited actual passing JUnit node IDs against every full collection plan: zero omissions, duplicates or nonpassing cases. A separate log audit also matched all four execution orders and retained all 642 original IDs. Local checks passed 209 focused cases, nine displayed WebGPU visual cases, 14 execution-contract cases with repository-local temporary files, and 131 preflight cases. Runtime files, correctness assertions, per-test deadlines and the 45-minute per-GPU-job limit are unchanged.Execution evidence: CI #58 passed 470 of 771 cases before the 45-minute job deadline cancelled it; no assertion failure was reported and this is not a full-suite result. The same existing radial-detail WebGPU test's first GPU submission increased from 11.622 seconds in CI #56 to 42.342 seconds, while pipeline preparation increased from 0.501 to 0.660 seconds. The nine new browser visual checks occupied approximately 125 seconds of the logged interval. Four independent runners now execute disjoint quarters of the identical full ordered collection. Assertions and per-test deadlines are preserved. Measurements.
Execution-audit regression: CI #59 caught a sample pytest subprocess inheriting the parent collection root when its temporary directory was inside the checkout. The same layout reproduced the failure locally; an explicit temporary root now isolates the sample run. All 14 execution-contract cases pass with repository-local temporary files, and preflight passes all 131 cases. The complete execution audit was retained.
Regression evidence: the original nine feature cases accepted a single black pixel on white, and ten original restoration cases accepted zero arrays. They now exercise independent authored visual expectations and complete cache/upload/device-data verification. 112 deliberately wrong results must be rejected: 45 visual faults, nine substitutions through the actual replay test, 42 zero/reversed/wrong-dtype restore payloads, 14 incorrect device/transfer contents and two cache-writer input mutations. Device/transfer controls keep settings, cache and observed upload arguments correct. The original baseline test accepted all ten original resident-data faults. A later source-capture check also accepted both writer mutations when the expectation was recorded after the write; original snapshots now precede the cache writer and renderer. The strengthened checks reject these faults. Contract, before/after evidence and local results.
Test scope: original API/combination replay fixtures are retained. Nine independent scenes verify authored locations, colors, shapes and empty regions on native and displayed WebGPU output. Recovery compares complete column identities, dtype, shape, values and payload bits at cache/upload/transfer boundaries, plus actual native GPU sample readback; coverage includes matrix edges, mapped sizes/colors, point/grid vectors, shared-X fills and panel/overlay data. Four precision cases cover float32/float64, signed zero, a custom NaN payload and infinities. Native finite readback uses the packed pair-of-f32 representation's 2e-14 relative bound; native selection JSON reports nonfinite values as null, so exact nonfinite bits are checked at the lossless boundaries rather than claimed for that JSON observation. These finite scenes do not establish every feature combination, exact font rasterization or general usability.
This remains a draft for API and workflow review. The adapter runs on the rendering host through the agent's existing execution tools; it does not invoke a model vendor automatically. Builders must provide reproducible source inputs. One interactive view per Figure is supported in review mode. No release or version bump is included.