fix(release): isolate Git authority - #71
Merged
Merged
Conversation
Signed-off-by: Thomas Albrecht <241560317+thequantumfalcon@users.noreply.github.com>
Signed-off-by: Thomas Albrecht <241560317+thequantumfalcon@users.noreply.github.com>
thequantumfalcon
marked this pull request as ready for review
August 23, 2026 20:58
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.
What this changes
The release tag helper and its checker previously invoked Git through the
inherited environment:
gitwas resolved fromPATH, child processes receivedthe caller's full environment including
GH_TOKEN, and any Git configurationreachable from the repository or the user's home could name an external helper.
This change gives release Git operations an explicit, isolated profile.
command; no credential helper, no URL rewrite, and no askpass path is
inherited.
environment rather than the caller's, so ambient variables cannot reach them.
and only an explicit, reviewed set of local settings is admitted, so a planted
core.fsmonitor, credential helper, signing program, or URL rewrite cannot beinvoked.
path;
PATHresolution is not used for release operations.than unbounded inheritance.
call that needs it and is never present in the environment of any Git child.
This is v0.1.5 trust-closure item R04. There is no linked public issue.
Baseline
Verified against baseline commit
0e654a152a17196609f971feeb36162d3bf15746.Reproduction
Pre-fix, on the baseline tree with only the new regression file overlaid:
The synthetic canary was captured through the planted executable path: a
configured URL rewrite ran and wrote the sentinel, proving the token was
reachable by an externally named helper.
Post-fix, the same command on this branch:
Local gate results
Run on the exact signed head of this branch:
just testjust lintjust depscausal_continuity_engine/is stdlib-onlyjust benchjust corpusjust capsdocs/CAPABILITIES.mddriftjust buildFocused regression:
tests/test_release_controls.pyandtests/test_regressions_round8_portability.py, 299 passed.Checklist
feat,fix,docs,test,refactor, orchore. Given the trust core's change bar,featusually needs an accepted proposal issue first. Everything is merged by squash, so this title becomes the permanent commit subject onmain. See CONTRIBUTING.md.just testpasses.just lintpasses.just depspasses —causal_continuity_engine/still imports nothing outside the standard library.just benchpasses — all eleven ContinuityBench scenarios, every metric at target.just corpuspasses — the reference still agrees with the committed vectors invectors/.just capspasses — every capability claim still resolves to real symbols, files, and tests. If the claims changed,docs/CAPABILITIES.mdwas regenerated withpython -m causal_continuity_engine.capabilities --writerather than hand-edited.just buildpasses if packaging, generated assets, or release machinery changed — both builds match and the clean-installed wheel audits successfully.Signed-off-bytrailer (git commit -s). Enforced: theDCOcheck is a required status onmain, so a pull request with any commit missing the trailer cannot merge.If this is a bug fix