Repository navigation
refactor(planning): make apply ops the one write path for interview page text - #10610
melodic-automation-lanes[bot] merged 11 commits into
Conversation
Lane-Activity: work-resolve-issue/resolve-issue
|
claude-security-review reviewed No security issues found. critical-findings: 0 I read the full diff, the PR context, and the non-test source changes. The tests were skimmed only. What the change is. It is a local-CLI refactor of the planning plugin's Checked and clear:
Spend: none; no billing, budget or model change. |
|
claude-review reviewed Code review: #10610 (round.sh page text only from files)I found one advisory documentation problem. No blocking correctness issue turned up in the code I read, and the closing issue's criteria are met. The only checks I ran myself were greps over the checked-out head. I did not run the test suites; the 797-test and Stale references to removed CLI flags. The PR's own test and the issue's second criterion ("no instruction to pass user text on a
Neither line is in the diff, so I could not anchor an inline comment. Closing issue #9797.
Code observations, no finding.
Manifest items. Spend. The change adds no billed resources and no extra lane runs. |
Lane-Activity: pr-unblock/fix-ci
|
Unattended merge: native auto-merge leaves this pull request unarmed at head |
Run every APPLY_ONLY name with old-style text flags and assert the refusal points at `apply --file` and leaves questions.json byte-identical. Cover `add` without --file and `add --file` with a non-object JSON. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The pr-merge lane escalated this pull request, and its head has moved ( |
|
Unattended merge: native auto-merge leaves this pull request unarmed at head |
|
pr-unblock / address-feedback finished round 1 of max 4 on 6399320. |
|
The pr-unblock lane stopped
When a retry on this head can change the outcome, the lane runs one on its own, up to its per-head cap, and edits this comment if it stops again; a run that does not stop clears the status. When no retry can (a review thread the lane does not take or settle, or a failing check after the retries are spent), a person resolves the threads or gets the checks green, then dispatches the workflow below: that run finds the cause gone and clears the status. On a pull request the lanes App opened, the dispatchers start that run once per stop; on any other, a person does. A new commit to the branch starts clean. To run it again on this head now, dispatch the gh workflow run pr-unblock.yml -R melodic-software/claude-code-plugins -f pr-number=10610 -f activity=address-feedback |
Lane-Activity: pr-unblock/address-feedback
|
pr-unblock / address-feedback finished round 2 of max 4 on 0dbf055. |
Lane-Activity: pr-unblock/address-feedback Lane-Thread: PRRT_kwDOTCGFQM6xYacL
|
pr-unblock / address-feedback finished round 3 of max 4 on 60fb0f6. |
Lane-Activity: pr-unblock/address-feedback Lane-Thread: PRRT_kwDOTCGFQM6xZ2Gp
|
pr-unblock / address-feedback finished round 4 of max 4 on 204a0e2. |
… flags reply, revise, archive and add's commits check are reached only through apply ops or a question file now, so their refusals name `seq`, `force: true`, `"commits": []`, `resolution` and `why` instead of --seq, --force, --commit none, --resolution and --why. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The unattended merge path armed native auto-merge at head |
Post-merge mutation testingKilled 0, survived 0, timeout 0, no coverage 0, invalid 0, not run 7.
The run's summary has the full report. |
Closes #9797
Summary
round.shnow takes interview page text only from files: every subcommand that took user text on its command line is removed in favor of itsapplyop (anops.jsonfile), or reads that text from a file (add --filetakes a question JSON file;supersede --proposes-fileandresolve --note-filetake plain UTF-8 text files). This followsplugins/planning/skills/interview/context/surface.md:20: "User and dictated text never goes on a command line: it goes into anops.jsonop written with the Write tool and run throughapply."Opened by the work-resolve-issue lane from
work-resolve-issue/issue-9797-40615014969-1.Fix
Each
round.shsubcommand that took user text, and what happened to it (plugins/planning/surface/round.py):group--title,--summarygroupop throughapply.reply--text,--rec,--why,--affects,--kindreplyop throughapply.revise--affects,--groupreviseop throughapply.note-reply--textnote-replyop throughapply.record-terminal--decision,--alt,--textrecord-terminalop throughapply.archive--whyarchiveop throughapply.reconfirm--whyreconfirmop throughapply.add--short,--title,--facts,--rec,--basis,--waits-on,--commit,--alt--fileis now required and is the only source of the question's text. It keeps the non-text flags--id,--group,--stage,--round,--depends,--follow-up-of,--supersedes,--repoint,--waiting, and refuses a file that is not one question object.supersede--proposes TEXT--proposes-file P. Abbreviation is off, so an old--proposes TEXTis refused instead of read as a file name.resolve ... reconfirm--note TEXT--note-file N, with abbreviation off as forsupersede.The seven removed names (
APPLY_ONLY) stay registered and exit 1 with a pointer toround.sh --dir DATA_DIR apply --file OPS, writing nothing. Refusals reached through an op name the op's fields (affects,alternatives,keepAlternatives,seq,force,resolution,why), not the removed flags.Files changed:
plugins/planning/surface/round.pyplugins/planning/surface/exporters.pyplugins/planning/surface/surface-checks.shplugins/planning/surface/README.md: op rows give op fields;supersedeandresolverows give--proposes-fileand--note-fileplugins/planning/skills/plan/SKILL.md: the supersede and resolve commands use--proposes-fileand--note-fileplugins/planning/skills/interview/context/surface.md:reply --rec,revise --rec,revise --commitandreply --resolutionread as op fieldsplugins/planning/surface/test_round.py: moves the removed commands' cases toapply; adds tests for the seven refusals,addwithout--file, andaddwith a non-object fileplugins/planning/surface/test_server.pyplugins/planning/surface/test_exporters.pyplugins/planning/surface/watch.test.sh.changes/planning/refactor-9797-round-text-through-files-0fb95536.mdVerification
Run locally on 99b5bfc (origin/main merged in):
python3 -m unittest test_round test_server test_exportersinplugins/planning/surface/: 797 tests, OK (1 skipped).bash plugins/planning/surface/watch.test.sh: PASS=32 FAIL=0.bash plugins/planning/tests/interview-defenses.test.sh: PASS=172 FAIL=0;standards-binding.test.sh: PASS=9 FAIL=0;interview-surface-decision-mirror.test.sh: ok.git grepoverplugins/planning/skills/andplugins/planning/surface/README.mdforround.shwith a removed command and a flag, orsupersede/resolvewith--proposes/--notetaking text: no match.Run earlier on 744e8d9:
bash plugins/planning/surface/surface-checks.shPASS=283 FAIL=0 SKIP=1;bash scripts/check-changelog-fragments.sh --checkall fragments valid; with theAPPLY_ONLYrefusal disabled,test_each_apply_only_command_refuses_and_points_at_applyfails for all seven names.Related
#9797
🤖 Generated with Claude Code