Skip to content

fix(ci): repair must-gates and the Justfile parse collision - #66

Merged
hyperpolymath merged 2 commits into
mainfrom
fix/quality-gates
Sep 1, 2026
Merged

fix(ci): repair must-gates and the Justfile parse collision#66
hyperpolymath merged 2 commits into
mainfrom
fix/quality-gates

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Why

The quality-gates workflow is structurally unable to pass — on any PR and on any push to main. Both jobs red-team themselves:

  1. test-all never ran a test. import? "contractile.just" merges recipe namespaces, and contractile.just:60 already defines trust-verify (the license/secrets/container aggregate). The root Justfile redefined it at line 76, so every just invocation died at parse time with Recipe 'trust-verify' first defined on line 60 is redefined on line 76. CI has only ever seen the parse error, never a test.
  2. must-gates was unsatisfiable. All six components renamed SECURITY.mdSECURITY.adoc, but run-must-gates.sh still required SECURITY.md (×3) and generate-manifest.sh still hashed it. On top of that, all six trust manifests were frozen at generated_at=2026-02-28 with all 42 entries failing.

This is why #63, #64, and #65 are all red: same two gates, not their own content.

What

  • Rename the root recipe trust-verifytrust-manifest-verify (contractile's aggregate keeps the old name); repoint ci-gate and the README quick-start.
  • SECURITY.mdSECURITY.adoc in scripts/run-must-gates.sh (×3) and scripts/trust/generate-manifest.sh (×1).
  • Regenerate all six .trust/trust-manifest.sha256 with the repo's own generator (second commit, mechanical).

Verification (local, end-to-end)

  • bash scripts/run-must-gates.sh → prints all must gates passed, exit 0
  • bash scripts/trust/verify-manifest.sh → all six verified, exit 0
  • just --evaluate → exit 0; just --summary shows both trust-manifest-verify and contractile's trust-verify
  • just test-all → exit 0 (Ada + Rust + lazy-eliminator's 16 property tests, no failures hiding under the parse death)
  • Template-drift patterns checked clean across all six components (that final gate step had also never executed)

Note for future PRs

The manifests pin content hashes of each component's README/ROADMAP/SECURITY/Mustfile/Trustfile/RSR_OUTLINE/CITATIONS. Any PR touching one of those files must regenerate manifests in the same PR (just trust-generate) or must-gates reds on its merge ref. #63 needs exactly that after this lands.

🤖 Generated with Claude Code

hyperpolymath and others added 2 commits September 1, 2026 15:23
Two independent defects made the quality-gates workflow structurally
unable to pass on any PR or push:

1. Justfile parse death: 'import? "contractile.just"' merges recipe
   namespaces, and contractile.just:60 already defines trust-verify
   (license/secrets/container aggregate). The root Justfile's
   trust-verify redefinition killed every 'just' invocation at parse
   time, so 'just test-all' never ran a single test in CI. Renamed the
   root recipe to trust-manifest-verify and repointed ci-gate + README.

2. md->adoc rot: all six components renamed SECURITY.md to
   SECURITY.adoc, but run-must-gates.sh still required SECURITY.md
   (x3) and generate-manifest.sh still hashed it, so the must-gates
   job could never go green.

Verified locally end-to-end: run-must-gates.sh prints 'all must gates
passed', verify-manifest.sh exits 0, just --evaluate exits 0, and
'just test-all' passes with zero failures underneath.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Every manifest was frozen at generated_at=2026-02-28 with all 42
entries failing (SECURITY.md renamed to .adoc plus stale checksums).
Regenerated with the repo's own scripts/trust/generate-manifest.sh
after the .adoc fix in the previous commit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 1, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 28 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Team

Run ID: 93e34685-3b0a-40c8-9a68-47acbafed795

📥 Commits

Reviewing files that changed from the base of the PR and between 3923309 and 9a7d6ed.

📒 Files selected for processing (10)
  • Justfile
  • README.adoc
  • lazy-eliminator/.trust/trust-manifest.sha256
  • satellite-template/.trust/trust-manifest.sha256
  • scripts/run-must-gates.sh
  • scripts/trust/generate-manifest.sh
  • vexometer-satellites/.trust/trust-manifest.sha256
  • vexometer/.trust/trust-manifest.sha256
  • vext-email-gateway/.trust/trust-manifest.sha256
  • vext/.trust/trust-manifest.sha256

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@hyperpolymath
hyperpolymath merged commit 916ee37 into main Sep 1, 2026
21 checks passed
@hyperpolymath
hyperpolymath deleted the fix/quality-gates branch September 1, 2026 14:26
hyperpolymath added a commit that referenced this pull request Sep 1, 2026
…igned (#67)

## What

`Aggregate_Profile` computed means only. `Std_Dev_ISA`, `Median_ISA`,
`Category_Std_Devs`, `Category_Medians` and `Evaluated_At` were returned
**uninitialized**, and `vexometer-reports.adb` prints those fields into
CSV/HTML/LaTeX/text reports — so every generated report carried
undefined memory as real statistics.

## Why now

The E2E assertion `Std_Dev_ISA >= 0.0` failed nondeterministically on PR
#63 — the first CI test runs in this repo's history, enabled by the #66
gate repair. Identical sources passed on #64/#65/#66 and failed on #63:
classic uninitialized-read behaviour (GNAT warned `"Profile" may be
referenced before it has a value` at `vexometer-core.adb:100` all along;
that warning is now gone).

## How

- Standard deviations use the **two-pass form** — summed squared
deviations cannot go negative, unlike `E[x²] − E[x]²`.
- Medians sort a copy (`Ada.Containers.Generic_Array_Sort`), correct for
odd and even N.
- Numeric components of `Model_Profile` now default to zero, so the `N =
0` path returns defined values.
- `Evaluated_At` is stamped with `Ada.Calendar.Clock`.

## Verification

`just test` in `vexometer/`: **1282/1282 assertions pass**, three
consecutive runs, exit 0 each (previously flaky). No manifest-tracked
files touched.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
hyperpolymath added a commit that referenced this pull request Sep 1, 2026
## Summary

Closes out the 2026-09-01 decode-and-repair pass with the situation
report and the last mechanical documentation fixes. Everything narrative
lives in the sitrep itself: **docs/sitrep-2026-09-01.adoc**.

- **Sitrep** — repo/branch state and the lossless rebase resolution, the
quality-gate outage (#66) and the two defects the repaired gates caught
immediately (#67 uninitialized profile statistics, #64 unparseable
workflow-linter), the verified Anthropic-paper provenance and the
ISA/safety-alignment boundary, a documentation honesty audit, and a debt
register (D1–D7) with done-conditions.
- **STATE.a2ml** — `last-updated` refreshed; the 25%-vs-70% divergence
and the assertion-execution counting convention annotated (true refresh
= D3).
- **SATELLITES.adoc** — dead `.scm` links repointed to
`.machine_readable/6a2/*.a2ml`; retired-format NOTE on the ECOSYSTEM.scm
template section.
- **vexometer-satellites/README.adoc** — false claim to hold the
protocol specs removed; dead `docs/*-format.adoc` links repointed to the
real specs; trust manifest regenerated in the same commit per the
manifest contract.
- **TEST-NEEDS.adoc** — the 1282 figure annotated as assertion
executions (420 loop-amplified), ~55 static sites.

## Verification

- `bash scripts/run-must-gates.sh` → exit 0, "all must gates passed"
(with the regenerated vexometer-satellites manifest).
- All links added here resolve on this branch; no `link:*.scm` remains
in SATELLITES.adoc.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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