Skip to content

test: keep behavior gates independent of host Git policy and the public network - #170

Merged
HengYangDS merged 8 commits into
devfrom
proposal/20261015-accepted-root
Oct 14, 2026
Merged

HengYangDS merged 8 commits into
devfrom
proposal/20261015-accepted-root

Conversation

@HengYangDS

@HengYangDS HengYangDS commented Oct 14, 2026 •

Copy link
Copy Markdown
Owner

Accepted local work since 03e210c5, landed through ETHOS in three lanes.

  • Behavior gate hermeticity (63804f5f, f6a506c2, 3358f611; Change behavior-gate-hermeticity):
    • Repository-tool tests run through the new tools/gitfixture, which gives each test process an owned global Git configuration: it includes the host's top-level global files, as Git lists them, and then names an empty hook directory and template. Fixture-local hook directories, such as Forge peers', keep their precedence.
    • On 2026-10-14 a host template hook broken by a Homebrew upgrade failed 60 release fixture tests under ETHOS's tool-only PATH, and a hostile global hook directory failed 80 tests in five packages. Both now pass, and a regression builds the signed release fixture under a hostile host template.
    • TestNativeDependencyEvidenceRetainsFindings contacts api.osv.dev and api.deps.dev, so it moves behind the dependency_acceptance tag into the network-declared dependency-acceptance quality gate. The offline behavior gates no longer depend on the public network; controlled-runner tests keep covering the same evidence handling.
    • The first run of this PR passed every Windows test, including tools/gitfixture, but Windows aggregate coverage fell to 94.97%. 3358f611 adds offline tests for ScanDependencies' refusals before the scanner starts and for gitfixture's failed-cleanup report.
  • GitLab peer reconciliation (aae86ecf): removes the root .cbmignore, which the repository-paradigm root catalog rejects, and records the GitLab catch-up state in its Change.
  • Terminal product convergence (74a8835e, a3bb214e, d0d88761, merge 8c0109ff): records the 0.4.1 release and installed cutover, closes task 4.5.2 with the reviewer's Attestations, adds task 4.5.3 for Claude Desktop sessions, and splits long multi-topic paragraphs without changing their wording.

Local evidence: mise run check and a full ETHOS proof passed for each lane head (Attestations e9cdf510…, 3fbf360b…, b666871f… and, for 3358f611, 41ca6b53…). The default suite also passes with public HTTP(S) refused and under a hostile host Git template and hook directory.

Generated with Claude Code

Bind the released v0.4.1 source to its PR, push and tag CI, its GitHub
assets and the operator's managed Homebrew upgrade, rollback and
re-upgrade, with the measured link gaps, same-Token checks, evidence
custody and the limits that remain open under task 4.5.

Generated with Claude Code
Check task 4.5.2 against the reviewer's Attestations for each installed
0.3.5 and 0.4.1 stage, split Claude Desktop into its own open task 4.5.3,
and record the reviewer lifecycle holds and their custody.

Generated with Claude Code
ETHOS's repository paradigm admits only catalogued root entries, and an
aigw-cli runtime rebind needs that before GitLab can receive the
maintenance tags. Record GitLab's branch and tag catch-up, the upstream
tool supply choice and the runtime dependency of the maintenance tags.

Generated with Claude Code
Separate distinct semantic paragraphs with one blank line, as
docs/governance/text-layout.md requires. Line breaks and blank lines
change; the wording does not.

Generated with Claude Code
Fixture repositories inherited the host's init.templateDir. When a Homebrew
upgrade broke that template's pre-commit hook, 60 release fixture tests failed
under ETHOS's tool-only PATH and blocked three proofs. Every test package that
creates repositories now selects an empty template in TestMain, and a
regression builds the signed release fixture under a hostile host template.
The Forge peer fixture creates the hook directory it names instead of relying
on Git's default template.

TestNativeDependencyEvidenceRetainsFindings queried api.osv.dev and
api.deps.dev from the offline-declared behavior gates and failed whenever the
host's route stalled. It now runs behind the dependency_acceptance tag as the
network-declared dependency-acceptance quality gate.

Change: behavior-gate-hermeticity, tasks 1.1, 1.2 and 2.1.

Generated with Claude Code
A global core.hooksPath runs during the ref update of git init and on every
fixture command that does not name its own hook directory. Under a host hook
directory whose reference-transaction hook rejects updates, 80 tests in five
packages failed through that hook alone.

tools/gitfixture gives each test process an owned global configuration. It
includes the host's top-level global files, as Git itself lists them, and then
names an empty hook directory; GIT_TEMPLATE_DIR names an empty template.
Fixture-local configuration keeps its precedence, so Forge peers keep their own
hooks, and without a Git executable tests still run under the owned policy.
Every package that creates repositories now runs through gitfixture.Run,
replacing the per-package empty-template setting, and the architecture policy
declares the new package with no product imports.

Change: behavior-gate-hermeticity, tasks 1.3 and 1.4.

Generated with Claude Code
GitHub run 38612255679 passed every Windows test, including tools/gitfixture,
but Windows aggregate coverage fell to 94.97% (15319/16131), below the 95%
floor that it had cleared by about one statement. Moving the live OSV test
removed the only caller of ScanDependencies from the offline suite, and
gitfixture added untested error paths.

An offline test now covers ScanDependencies refusing a missing policy and an
unusable evidence directory before the scanner starts. gitfixture reports both
environment updates through one errors.Join and uses one empty directory as
hook directory and template, and a test proves that a failed cleanup fails the
run.

Change: behavior-gate-hermeticity, for task 4.1.

Generated with Claude Code
@HengYangDS
HengYangDS merged commit 3358f61 into dev Oct 14, 2026
7 checks passed
@HengYangDS
HengYangDS deleted the proposal/20261015-accepted-root branch October 14, 2026 19:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant