Repository navigation
Session Handoff [default]: configure.sh Refuses Unknown Arguments, Released as 2.0.805 #2289
Description
Next steps, in priority order
Re-read each issue and pull request rather than trusting these summaries.
-
Resync the seven repos left out of Session Handoff [default]: Table Carry, Quota Safety and install-tools Shipped to Develop, Defined-Moments Review Gate #2278 Ready #2281's ruleset run, then apply configure.sh there. The repos are KiCadLibrary, EspDinIoT, DevKitCIoT, HomeAssistant-Config, PhotoCleaner, AudioCleaner, and HolidayLights. Each is its own session and its own deliverable in that repo, the way the aiopurpleair resync was. KiCadLibrary's untracked
requirements-dev.txtfrom Audit Cross-Checks No Python Dependabot Ecosystem, and KiCadLibrary's requirements-dev.txt Is Untracked #2286 can ride with its resync. Done means each passesconfigure.sh checkwith no failures. configure.sh on main now refuses a missing command and malformed arguments (see "What the last round did"), so pass the command, the repo, and the model every time. -
The rest of Every CLI Script Answers --help and Refuses Unknown Arguments Before Writing #2285: the rule and the gate. Require configure.sh's Command and Refuse Unknown Arguments Before Any Read #2287 fixed only configure.sh. Still open:
- The CODESTYLE.md (General and Shell) and
shell-codestylerule: every CLI script answers--helpor refuses an unknown argument before any read or write, and a write mode is never the default. - A test that runs every tracked CLI entry point with
--helpand with an unknown flag.
The gate needs a design decision first: which entry points it covers, and how to sandbox
host-setup/bootstrap.shandinstall-tools.sh, which install software. The rule is carried prose, so expect several review rounds. - The CODESTYLE.md (General and Shell) and
-
Audit Cross-Checks No Python Dependabot Ecosystem, and KiCadLibrary's requirements-dev.txt Is Untracked #2286's audit check.
spec/audit.pydoes not cross-check a Python Dependabot ecosystem. -
Run the Whole Test Suite Before a Push, Not the Modules a Change Touches #2280. A governance proposal: run the whole test suite before a push.
-
Fix STANDUP.md's Prerequisite Item That Says Mechanisms Declare Environments #2270, then the items Session Handoff [default]: Table Carry, Quota Safety and install-tools Shipped to Develop, Defined-Moments Review Gate #2278 Ready #2281 carried from Session Handoff [default]: Fork Handoff Chains Released as 2.0.799, #2268 Fix on Develop #2273, in its order.
External blockers
- A native Windows host is still needed for the
bootstrap.ps1check carried from Session Handoff [default]: WORKFLOW.md Corrections and the pyproject.toml Decision Released as 2.0.672 #1804. - Copilot quota. Rounds ran at lite. Under the rulesets applied in Session Handoff [default]: Table Carry, Quota Safety and install-tools Shipped to Develop, Defined-Moments Review Gate #2278 Ready #2281, Copilot reviews a PR once when it opens. Later rounds come from
pr_review.py waitat the defined moments, and a fix push into develop is covered bypr_review.py attest.
Internal dependencies
- Step 1 runs configure.sh against seven repos, and each resync comes before that repo's configure.sh apply. Applying first would assert rulesets that name check names their workflows do not emit yet.
- Step 2's gate comes after its rule text is settled, so the test asserts the rule as written.
- From Session Handoff [default]: Table Carry, Quota Safety and install-tools Shipped to Develop, Defined-Moments Review Gate #2278 Ready #2281: Deny the Remaining core.hooksPath and no-verify Bypass Routes in the Guard #2177 follows, or absorbs, the
auto-2112heredoc work, and Decide How the Unattended Picker Recognizes an Adopted Lesson #2183 comes before Close the Unattended Loop's Parking-Comment and Interrupted-Park Gaps #2184.
State
- Hub: main is at
bc9dc654, released as 2.0.805 (publish-release run 37050361747, success). develop is atcce212f7, level with main apart from the promotion merge commit. - Open PRs: only Deny a Signal-0 timeout as a Wait Bound in the Guard #2117, on the unattended
auto-1634lane, untouched. - Worktrees: every worktree and branch this session made is removed, local and remote. The primary checkout is clean on develop at
cce212f7. Re-derive withgit worktree list. - Skills: this machine's Codex and opencode snapshot is refreshed to
bc9dc654. The Claude Code registration loads the primary checkout in place. - Unattended lanes untouched:
auto-2176,auto-2167,auto-2157,auto-2080,auto-1634, andpython-contract. Re-derive withhandoff.py tracks. - Other repositories: none written.
The parked decision queue
Zero issues carry the decision label. This round's questions were answered as they came up: which next step to take, how to scope #2285, and whether to merge and release the promotion.
What the last round did
-
#2287 merged into develop, the configure.sh half of Every CLI Script Answers --help and Refuses Unknown Arguments Before Writing #2285.
repo-config/configure.shnow requiresapplyorcheck. It refuses each of the following with exit 1 before any read:- a missing or unknown command
- an unknown option
- an extra argument
- a repo not shaped
owner/name, or whose name is only dots - an unknown model
- a model given before the repo, which used to silently drop the repo and target the current checkout's
--helpprints the usage.tests/test_configure_usage.pyruns the whole script beside a recordingghstub. -
#2288 promoted it to main, released as 2.0.805. It references Every CLI Script Answers --help and Refuses Unknown Arguments Before Writing #2285 rather than closing it.
What not to repeat
- Accepting a strict-review suggestion that widens a grammar the tree already states. The local pass proposed an underscore in the owner pattern, for managed-user handles. Copilot then pointed at
spec/validate.py's owner grammar, which allows letters, digits, and hyphens only, and that cost a round. Check the tree's existing grammar before widening one. gh ... --jqwith--arg. gh's--jqtakes no--arg, so the release-run correlation loop spun on parse errors. Pipe tojqinstead.- Expecting
pr_review.py replyto answer an outdated thread. Copilot resolved its own thread once the line changed, soreplyreturnedNO_MATCH(exit 60). The thread needed nothing further.
New learnings
- None beyond the three above. Each is a specific misstep rather than a rule.
Activity
ptr727 commentedon Oct 2, 2026
Continued in #2291, round 44 on track
default.