Repository navigation
fix(product): worker python is the product's env; advisor-cap text; skip defers (I-114 to I-118) - #71
Merged
Merged
Conversation
…kip defers (#69) I-114: a Claude Code worker turn, LocalSandbox.exec and the local app start run with the product interpreter's directory first on PATH (with_interpreter_first), so `python` is the product's environment with its approved dependencies, not SCIO's own under uv run. I-115: the advisor-cap halt names the cap that fired: the run's total or one call per step. I-116 (the owner's decision): skip defers a feature. It stays open, a skip finishes it only in its own milestone (FeatureRun.milestone), per-milestone costs count their own runs, the release refuses while a feature is not done, the PR closes only passed features' issues, and update_progress re-reads PRODUCT.md before it routes. I-117: a subagent's shell-script edit, logged; guardrail 17 extended. Guardrails 35 to 37 (20 to 34 are taken by PR #70). Built by three parallel agents with owned files; integration, the LocalSandbox and app-start sweep, docs and ledger by the orchestrator. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
An independent review of bb3ae7e found: - a skip recorded by older code (milestone None) finished its feature in every later milestone, looping plan, pass-over and escalation; closing a milestone now stamps such runs (ProductBuildState.runs_stamped) - update_progress re-read PRODUCT.md after its commit, so a release cut next tagged a main that disagreed with it; the re-read now happens inside the progress commit, which includes PRODUCT.md, and release re-checks PRODUCT.md after the human's release decision - on Windows a bare command word resolved against SCIO's PATH, not the product-first one; resolve_command takes the command's PATH Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The I-114 review fix passes `path=` to shutil.which; the one test that fakes it for resolve_command took one argument. Ledger I-118 and guardrail 38. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
NewMe505
marked this pull request as ready for review
October 30, 2026 15:57
Conflicts in the shared files, resolved by keeping both sides: the CHANGELOG's Fixed entries, the README status line (the dashboard is merged now), the ledger (I-114 to I-118, then I-120 to I-139), the guardrails (rule 17 merges I-117 and I-131; 20 to 34 are the dashboard's, 35 to 38 this branch's), and two appended build tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
NewMe505
added a commit
that referenced
this pull request
Oct 30, 2026
PR #71's three fixes (I-114 to I-116) ship in 0.9.0: they stay under [0.9.0], the README status line lists issue #69 among the released graphcalc fixes, and the release date moves to the day of the tag. Guardrails 35 to 38 follow the dashboard's 20 to 34; the ledger runs I-114 to I-118, then I-120 to I-139. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Summary
The bugs behind the graphcalc run's S5, where P4 halted twice on its environment and never on the math. Built by three parallel agents (one per fix, owned files); then an independent review of the whole diff, whose three findings are fixed here too.
Closes #69
Plan vs. done
main)pythonwas SCIO's own environment, so P4 could not import the approved sympywith_interpreter_first: the product interpreter's directory first on PATH (VIRTUAL_ENVset), for the worker'sclaude -pcalls, everyLocalSandbox.execcommand and the local app start; the Windows bare-word lookup uses that PATH (review);BACKEND_NOTEsayspythonis the product'stest_worker_turn_runs_with_the_product_interpreter_first_on_path,test_every_local_command_runs_with_the_product_interpreter_first_on_path,test_a_bare_command_word_resolves_through_the_product_first_path(Windows)advisor cap hit (2/3, step S1a)when the per-step cap firedtest_halt_reason_names_the_per_step_cap_when_the_total_has_headroomskipdropped a feature for goodskippedstays open;FeatureRun.milestone, so a skip finishes a feature only in its own milestone; per-milestone cost counts its own runs; the release refuses while a feature is not done; the PR closes only passed features' issues; PRODUCT.md is re-read inside the progress commit (review) and at the release stop (review); older skips are stamped when a milestone closes (review)test_a_skipped_feature_is_deferred_to_the_next_milestone_not_dropped(end to end),test_closing_a_milestone_stamps_runs_recorded_before_the_milestone_field,test_a_feature_added_at_the_release_stop_holds_the_release, and four more in the ledger entry\nshutil.whichfake left at one argument after the review fixpath; guardrail 38Guardrails 35 to 37 (20 to 34 are PR #70's, so neither renumbers).
Test evidence
CI on
8748b41(run 40647941438):checks413 passed, 6 skipped (the new Windows-only test skips on Linux);docker-live15 of 15.After merging
main(the dashboard, #70; shared-file conflicts kept both sides): local check onf784381500 passed, 18 skipped, pass^5 1.00; CI (run 41089330746)checks512 passed, 6 skipped,docker-live15 of 15.Docs updated
[Unreleased]Continuous improvement
Risk notes
LocalSandbox.execnow gives every product command the product's interpreter first on PATH; SCIO's own tools stay after it.python -c "import sys; print(sys.executable)"should point under.scio/sandbox.🤖 Generated with Claude Code