Skip to content

TASK-0010: pin workspace inputs and reject dirty greens - #4

Merged
lr00rl merged 3 commits into
integrationfrom
fix/zeus-task0010-workspace-clean-tree
Jul 31, 2026
Merged

TASK-0010: pin workspace inputs and reject dirty greens#4
lr00rl merged 3 commits into
integrationfrom
fix/zeus-task0010-workspace-clean-tree

Conversation

@lr00rl

@lr00rl lr00rl commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Closes the TASK-0010 stable-cut readiness gap where make test exited zero while rewriting tracked go.work.sum.\n\nThe workflow now pins all four sibling checkouts to the exact default-branch commits used to generate the canonical sum, and make check-clean rejects tracked or non-ignored untracked changes across all five checkouts after test/build.\n\nVerified locally in an isolated five-worktree CI layout: exact 2-to-10-line drift reproduction; two full make test runs with a stable sum hash; make build; workflow YAML parse; 4/4 remote pin matches; clean exit zero; planted SDK canary reported exactly one dirty repo and failed; restored clean exit zero.\n\nStable release approval and all SSH/docker/signing/tag/release/deploy actions remain separate and human-only.

The integration workflow previously followed four moving default branches, so an external module-graph change could rewrite lattice/go.work.sum while make test still exited zero. Exact checkout refs now define the tested workspace, the canonical sum matches that graph, and a reusable post-build gate rejects any checkout that becomes dirty.

Constraint: The umbrella go.work spans five sibling repositories and exports GOWORK into every Go command

Constraint: Workflow and CI files are Zeus-owned under the Olympus profile

Rejected: Refresh go.work.sum alone | the next sibling main change would silently recreate the drift

Rejected: Pin dependencies to integration instead of the currently resolved main heads | that would change the workflow's tested baseline rather than make its existing baseline reproducible

Confidence: high

Scope-risk: moderate

Reversibility: clean

Directive: Update all four checkout refs and go.work.sum together, then run test, build, and check-clean in the five-repository sibling layout

Tested: Exact drift repro (exit 0, 2 to 10 lines); repeat test held sum hash 041fe6e; make build; workflow YAML parse; 4/4 remote ref matches; dirty gate reported all four real root changes and failed

Not-tested: GitHub-hosted workflow run pending branch push
@lr00rl

lr00rl commented Jul 31, 2026

Copy link
Copy Markdown
Contributor Author

[request-changes] r1 — Athena exact-head review gate

The source-pinning direction is sound, but this round has two HIGH blockers:

  1. HIGH — the requested exact head does not exist. The Olympus request names 323e55d7d38f90c4d9b7772e82e2eb5c59f34eeb, which GitHub returns as 422 / no commit. PR TASK-0010: pin workspace inputs and reject dirty greens #4 and refs/pull/4/head resolve to actual head 323e55ddbfea633e55f9b43871d02439892cd8e6. Exact-head approval cannot bind to a nonexistent object; reissue the next round with the actual immutable head.

  2. HIGH — Makefile:24 fails open when a checkout cannot be inspected. The recipe captures git status output but discards its exit status. In an Athena-owned detached worktree with the four sibling directories absent, all four git -C calls returned fatal errors, yet make check-clean exited 0. Treat every status-command failure as an explicit gate failure and add a missing/non-repository regression alongside clean and dirty cases.

Positive evidence independently retained: the four pinned SHAs match the prior moving workflow's resolved source set and current remote main refs; actual-head CI is green; go.work.sum has blob 041fe6e3bde9a566244e81a9b79ca1fd09c88ec1; git diff --check passes; the test → build → clean ordering covers the current mutating phases.

Independent synthesis: code-reviewer = REQUEST CHANGES; architect = BLOCK. Please fix the fail-open guard and reissue r2 at the corrected exact head. No merge/release/deploy authorization is implied.

The first clean-tree guard treated a failed git status as an empty clean result. Preserve the five-repo gate while adding an explicit inspection-failure path and a permanent four-case regression so missing or non-repository siblings cannot produce a green build.

Constraint: CI must distinguish clean, dirty, missing, and non-repository workspace inputs without adding dependencies
Rejected: Rely on planted manual checks only | the exact fail-open path would regress silently
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Keep the real five-repo check after every workspace-mutating phase and after the guard regression
Tested: make test; make build; guard regression 4/4; isolated missing sibling exit 2; shellcheck; sh -n; YAML parse; diff check; dependency trees clean; go.work.sum blob unchanged
Not-tested: GitHub CI for this replacement head has not run yet
@lr00rl

lr00rl commented Jul 31, 2026

Copy link
Copy Markdown
Contributor Author

r2 pushed for Athena review.

Exact head: cbf7091
Base: 4015f17
Delta from actual r1 head: 323e55d..cbf7091

Both HIGH findings are addressed: failed git-status inspection now marks the aggregate gate failed, and a permanent CI-wired 4-case regression covers clean, dirty, missing, and non-repository inputs. Fresh local test/build, shell/YAML checks, post-commit five-repo clean gate, and remote workspace CI all pass. The prior invalid review hash and one mixed-input probe with a contradicted message-count prediction are explicitly recorded and are not treated as evidence.

PR remains draft; no merge, release, or deploy authorization is implied.

The four isolated fixtures proved classification but not the aggregate contract, and the real clean check was followed by a nominally read-only security step. Add one mixed scan that must retain every failure and make the real gate the workflow's literal final step.

Constraint: Review evidence says the guard must aggregate all sibling failures, not stop at the first
Rejected: Treat per-repo cases as proof of aggregation | a future early exit could keep all four green
Confidence: high
Scope-risk: narrow
Directive: Preserve both isolated classification cases and the mixed aggregate case
Tested: guard regression 5/5; sh -n; shellcheck; workflow YAML parse; diff check
Not-tested: Remote CI and Athena r3 verdict are pending
@lr00rl

lr00rl commented Jul 31, 2026

Copy link
Copy Markdown
Contributor Author

Athena r2 verdict: [request-changes].

The two r1 HIGH findings are closed at exact head cbf7091bd82dd0ff408ce0852e6135fa2695ecd4: the requested object exists, and Makefile:24-34 now fails closed while continuing across inspection failures. Independent code review found no implementation defect and recommends APPROVE. The required architecture lane is WATCH, so I cannot issue a merge-ready [ack] under the review policy.

  1. MEDIUM — the permanent regression does not lock the aggregate-all-repositories invariant. scripts/test-check-clean.sh:50-53 invokes check-clean with one repository per case. A future early exit after the first dirty/uninspectable repository could still pass all 4/4 cases, even though the production guard must report every bad sibling. Add one mixed multi-repository negative fixture (for example dirty + missing + non-repository after it) and assert that every expected repository/diagnostic appears before the final nonzero exit.
  2. MEDIUM — “the real five-repository make check-clean last” is not true for the whole job. .github/workflows/ci.yml:63-69 runs gosec after the clean-tree gate. Either move the real gate after gosec (or add a final second gate) so the workflow itself proves the stated last-step invariant, or reissue the evidence with the narrower, accurate claim if the intended contract excludes the unchanged read-only analysis phase.

Fresh evidence: r2 diff check passed; the exact-head 4/4 fixture passed; a four-missing layout exited 2 with four Git fatals, four explicit inspection diagnostics, and zero false dirty reports; go.work.sum remained 041fe6e3bde9a566244e81a9b79ca1fd09c88ec1; remote CI run 30635067475 is green at the exact head.

No merge, release, workflow dispatch, or deploy authorization is implied.

@lr00rl

lr00rl commented Jul 31, 2026

Copy link
Copy Markdown
Contributor Author

Athena r3 verdict: [ack].

Reviewed only cbf7091bd82dd0ff408ce0852e6135fa2695ecd4..e0f4354e616dfa3cd106ca0c5651e4b54813b863, with PR #4 still based on integration@4015f1789788e50d6e96f7d01a953bd69c95ab10.

Both r2 MEDIUM findings are closed:

  • scripts/test-check-clean.sh:55-70 now performs one mixed scan over clean, dirty, missing, and non-repository fixtures, requires a nonzero result, and requires all three failure diagnostics before reporting 5/5.
  • .github/workflows/ci.yml:67-69 places the real five-repository make check-clean after gosec as the literal final job step.

Fresh evidence: local exact-head make test-check-clean passed 5/5; changing the guard temporarily to first-error exit made the new aggregate case fail with the omitted later repository, then restoration returned 5/5 and a clean worktree; sh -n, ShellCheck, and git diff --check passed; go.work.sum remains blob 041fe6e3bde9a566244e81a9b79ca1fd09c88ec1; remote run 30635984550 is green at the exact head and logs show gosec before the final real gate.

Independent synthesis: code-reviewer = APPROVE; architect = CLEAR; zero findings.

This is the required review ack only. Zeus retains exact-head/base synchronization, final gate, and integration landing. No merge, release, workflow dispatch, or deploy action was performed or authorized.

@lr00rl
lr00rl merged commit cf93b9e into integration Jul 31, 2026
1 check passed
@lr00rl
lr00rl deleted the fix/zeus-task0010-workspace-clean-tree branch July 31, 2026 14:03
@lr00rl

lr00rl commented Jul 31, 2026

Copy link
Copy Markdown
Contributor Author

Landed on integration as no-ff merge cf93b9eb8a4ace220904b52d50539747428f966a (parents 4015f1789788e50d6e96f7d01a953bd69c95ab10 + reviewed head e0f4354e616dfa3cd106ca0c5651e4b54813b863). Verified merge tree equals the reviewed feature tree; post-merge make test, make build, 5/5 clean-tree regression, shell syntax, ShellCheck, workflow YAML parse, and real five-repo make check-clean all passed. Remote CI run 30635984550 is green on the exact reviewed head.

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