Repository navigation
fix: disable Git terminal prompts so HTTPS remotes cannot block on credential input - #36
Merged
Merged
Conversation
- Set GIT_TERMINAL_PROMPT=0 on every git subprocess so a remote without a credential helper fails fast instead of blocking on a prompt - Replace em dashes with hyphens in --help output and README per style rules - Document -h/--help in the README flag table and add --spacing to llms.txt - Align the nfpm package description with the canonical channel description - Point Windows shells at winget in install.sh's unsupported-OS error - Refresh stale channel states in PUBLISHING-SETUP.md (npm OIDC provenance shipped at 0.3.0, winget PRs merged, Chocolatey versions moderated) - Delete PRE-RELEASE-REVIEW.md: its v0.1.0 gate is verified complete via classic branch protection and three releases have shipped
- Scope the non-interactive claim: GIT_TERMINAL_PROMPT=0 covers HTTPS credential prompts only; document that SSH/askpass prompts and hooks are unaffected in AGENTS.md, README, and llms.txt - Replace the env-var assertion with a behavioral test: git ls-remote against a local 401 server must fail with "terminal prompts disabled" - install.sh: cover all MSYS2 environments (UCRT64, CLANG64/32/ARM64) - README: drop the stale "first-time Winget moderation" clause
- Skip when git is not on PATH, matching the package convention - Neutralize global/system/env git config, proxies, and askpass so the only remaining credential path is the terminal prompt under test
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
First-principles quality pass over every released surface (ticket:
quality-pass-first-principles). One defect fix plus prose/metadata alignment; the re-audit follow-up added a project-local verification skill and a move-only refactor. No toolchain or release-machinery changes.gitsubprocesses now run withGIT_TERMINAL_PROMPT=0at both spawn sites, so an HTTPS remote without a credential helper fails fast ("terminal prompts disabled") instead of hanging on a prompt. SSH passphrases, host-key confirmations, and askpass helpers are unaffected and are now documented as such; hooks inherit the same environment.--helpoutput and README;-h, --helpadded to the flag table;--spacingadded tollms.txt.install.shpoints Windows POSIX shells (MINGW/MSYS/CYGWIN/UCRT64/CLANG) atwinget installinstead of a bare "unsupported operating system" error.PUBLISHING-SETUP.mdexternal-state column refreshed against live registries.PRE-RELEASE-REVIEW.mddeleted: itsv0.1.0gate is verified complete (branch protection onmainrequirestest (ubuntu/macos/windows-latest)+release-checks), and three releases have shipped.internal/cli/push.goextracted fromrun.go: push retry, transient-error classification, spacing, and ETA helpers moved verbatim;parseSpacingmoved tocli.gobeside its sole caller.AGENTS.mdanddevelop-git-chunksownership maps updated..agents/skills/verify-git-chunks/added viacreate-verification-skill: Launch/Doctor/Drive/Evidence/Cleanup contract plus a four-feature map, proven end to end against scratch repos; the proof run caught and fixed a real helper defect..agents/quality-pass-decisions.tsvrecords the re-audit and architecture decisions.Evidence
gitsubprocesses inherited the prompt-capable environment, so an HTTPS remote demanding credentials could block on a terminal prompt; push retry, spacing, and ETA logic was embedded inrun.go; no project-local verification skill existed; this body lacked thepr-contract sections.After:
internal/cli/run.godiff is 98 deletions, 0 additions, and the extracted block is byte-identical inpush.go. The skill's own E2E run leftdoctor.txt,chunk-run.*, andindex-guard.*underevidence/after cleanup removedscratch/. Full gate output is in the Test plan.Merge Danger
Door: two-way - a verbatim code relocation plus docs/metadata edits; revertible per commit, no data or schema change.
Blast Radius: CLI
Squash-merge caveat: the
fix:title means release notes name only the credential-prompt fix; the refactor rides hidden via therefactor:trailer at the body bottom (release-please skips that type).Test plan
gofmt -l cmd internal- cleango vet ./...- cleango test -count=1 -race ./...- ok (74s)node --test scripts/*.test.mjs- 10/10 passbash -n scripts/install.sh scripts/uninstall.sh- cleangit diff --check- cleango run github.com/goreleaser/goreleaser/v2@v2.17.0 check- 1 configuration file validateddocs/testing.md: built binary chunked 2 files into 2 commits and pushed to a bare local remote with--spacing; remote history verifiedTestGitSubprocessNeverPromptsForCredentials: local httptest server returns 401,git ls-remotefails with "terminal prompts disabled" (fresh-racerun, 0.14s)--helpoutput manually inspectedgit-chunks@0.3.0on npm carries a provenance attestation; Chocolatey feed lists 0.1.0/0.2.0/0.3.0; winget-pkgs PRs #404270/#408446/#409137 merged; AURgit-chunks-binat0.3.0-1; Homebrew cask and Scoop manifest at0.3.0;mainbranch protection requires the four documented checksverify-git-chunksproven end to end: build + doctor (3/3),chunked-commitsdrive (two chunk commits, clean tree, empty index),index-guardexit 1 with staged file preserved; evidence survived cleanuprun.goshows 98 deletions, 0 additions; extracted block byte-identical inpush.gogit ls-files --eol- all filesi/lf; six-column TSV schema verified field-by-fieldReview convergence
Reviewed by the
reviewersubagent profile pinned toswe-2-max(the free-family reviewer mandated while the account has no paid quota; lead also ranswe-2-max, so the different-family rule is moot this pass). Original pass: 4 rounds, 6 -> 2 -> 1 -> 0 findings. Follow-up diff (verify skill, decision trail,push.goextraction): 4 rounds covering CRLF line endings, a deviating TSV schema, TZ-mislabeled timestamps, an impossible drive expectation, and stale line cites - driven to a lone doc-precision nit, since corrected.Dispositions
Every live inventory item received exactly one disposition. Skills: 52 applied, 67 not-applicable (114 skills under
~/.agents/skills, thedeclarative-repo-setupandupload-secretsbuiltins, and 3 repo-local skills under.agents/skills; the inventory grew by one whenverify-git-chunkswas created and applied). A re-audit corrected 34 premature not-applicable calls; corrected entries are marked below.Rules and inventory
~/.agents/AGENTS.mdrules (no em dash, sentence-per-line Markdown, no co-author, Conventional Commit PR, no inspiration or incident mentions)type/shortbranch, PR body contract,revieweron swe-2-max, pnpm-only, no pushes tomain)global_rules.mdfactory/POLICY.mdfactory/knowledge/quality-pass-scope.md+ knowledge grep forgit-chunksAGENTS.mdpush.go; project-skills index gainedverify-git-chunksdevelop-git-chunks,release-git-chunks,verify-git-chunks.agents/skills/verify-git-chunks/.agents/quality-pass-decisions.tsvshow-me-your-work; timestamps verified against commit timesCONTEXT.md,PRODUCT.md,DESIGN.md,docs/adr/,docs/agents/README.md--helprow, prompt behavior and residual limits, channel statusllms.txt--spacing, prompt behaviorPUBLISHING-SETUP.mdPRE-RELEASE-REVIEW.mdv0.1.0gate verified completeCHANGELOG.mddocs/testing.mdinternal/cli/cli.go)parseSpacingrelocated beside the--spacingcallbackinternal/cli/git.go)GIT_TERMINAL_PROMPT=0defect fix + hermetic behavioral testinternal/cli/run.go+internal/cli/push.go.goreleaser.yamlscripts/install.sh,scripts/uninstall.shwinget install;bash -ncleanscripts/publish-*,verify-artifacts.mjs,release-payloads.mjs,package-chocolatey.ps1.github/workflows/{ci,publish,release-please}.ymlscripts/*.test.mjsProtect release tagsrulesetmainrequires the four documented checks0.3.0, prose syncedstatus: built, dated factory-log entry with this PRSkills: applied (52)
build(ticket router),plan(inventory shaping),implement(thepush.goextraction),review(convergence loop above),verify(live-registry and repo-state checks),writing+unslop(prose standard, em-dash pass),test-audit(gated the credential-prompt test),engineering-principles(index); repo-localdevelop-git-chunks(gates, real-temp-repo rule),release-git-chunks(release-surface invariants),verify-git-chunks(created this pass, proven end to end).Principle leaves exercised:
principle-boundary-discipline(surfaces-only scope held),principle-fix-root-causes(theGIT_TERMINAL_PROMPTdefect),principle-subtract-before-you-add(PRE-RELEASE-REVIEW.mddeleted),principle-prove-it-works(behavioral test + live verification),principle-test-behavior-not-implementation(replaced the env-presence assertion),principle-minimize-reader-load,principle-never-block-on-the-human,principle-outcome-oriented-execution,principle-redesign-from-first-principles(the ticket itself),principle-foundational-thinking(surface-wide audit),principle-experience-first(fail-fast over silent hang),principle-encode-lessons-in-structure(verify skill + decision trail),principle-exhaust-the-design-space(three architecture candidates ranked),principle-model-the-domain(push-delivery domain named),principle-attack-the-premise(re-audit + auto-grill),principle-sequence-verifiable-units,principle-guard-the-context-window,principle-type-system-discipline(move verified by the compiler),principle-laziness-protocol(bare-remote verification over network remotes),principle-build-the-lever(durable verify skill),principle-make-operations-idempotent(re-runnable drives; resume semantics proven).Re-audit corrections (34):
create-verification-skill(generated + proved.agents/skills/verify-git-chunks/; "existing tests cover it" was wrong - the deliverable is a durable driving contract, not test coverage),verify-git-chunks(the artifact itself, executed end to end),write-skill+writing-for-agents(authored the skill to the agent-writing contract),improve-codebase-architecture(section-5 unattended factory mode; HTML report;push.gopicked on deepening value vs blast radius),auto-grill(the sanctioned substitute for interactive grilling; decided D1-D5 on the refactor),codebase-design+domain-modeling(the deepening analysis and the named push-delivery domain - not "tech-stack non-goals"),investigate-implementation(candidate scan acrossinternal/cli),implement("surfaces only" went stale once the follow-up landed code),show-me(Summary visual vocabulary),show-me-your-work(.agents/quality-pass-decisions.tsv),pr(body contract: visual, Evidence, Merge Danger),blast-radius(Merge Danger classification),verify-claims(every claim re-checked by reviewer rounds and E2E proofs),compliance-sync(external-state resync),github-repo-setup(settings audited live),technical-writing(README/llms.txt/skill docs rewritten),deslop(stale release-gate doc and help-surface slop removed - distinct fromunslop's prose style),debug+diagnosing-bugs(mkrepohelper defect root-caused during the skill's own E2E proof), and the 13 principle leaves listed after the original eight.Skills: not applicable (67)
custom-computer-use,design-inspiration,design-ui,impeccable,iterate-ui,make-interfaces-feel-better,markup-from-image,product-footers,prototype,react-doctor,sync-design-artifacts,tailwind-canonicalize,ui-preflight,visual-bug-report.browse-x,import-x-history.auto-grill(counted in applied):grilling,grill-me,grill-with-docs,clean-room-deliberation,interrogate.AGENTS.md:explain,how,why,teach,wayfinder;voice(nothing published under the user's identity).factory,factory-run,factory-retro,manage-skills,intake,reflect,session-review,handoff,to-spec,to-tickets,triage,write-issue,ideate,research,repo-explorer.code-review+custom-code-review(Devin routes convergence to thereviewerprofile),opencode-history,debug-opencode-sessions,orbit(opencode/GitLab tooling),clean-room-redesign(a verbatim relocation, not a from-scratch rebuild).architecture,program-design- no new seams, schemas, or signatures were introduced; the deepening scan ran throughimprove-codebase-architecture's unattended mode.fix-ci-run(no failing run),resolving-merge-conflicts,tdd(fix landed with its test, not red-first),no-comments(Go code carries no comments to strip),maintain-verification-skill(created this pass, not maintained),install-anti-slop+setup-matt-pocock-skills(no skill installs),typescript-best-practices(Go repo),arena+swarm(single canonical path),humanizer(unslopcovered the prose volume),production-readiness(release already live, no hosting change),release-engineering(toolchain a non-goal).principle-migrate-callers-then-delete-legacy-apis,principle-separate-before-serializing-shared-state.declarative-repo-setup(no Devin environment),upload-secrets(no secrets to upload).docs: align CLI help, README, llms.txt, and packaging metadata with the shipped surface
refactor: extract push-delivery mechanics from run.go into push.go