Skip to content

fix(ci): adopt the Actions lockfile — every workflow was startup_failure - #56

Merged
hyperpolymath merged 1 commit into
mainfrom
fix/ci-lockfile
Aug 5, 2026
Merged

fix(ci): adopt the Actions lockfile — every workflow was startup_failure#56
hyperpolymath merged 1 commit into
mainfrom
fix/ci-lockfile

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

This repo has had no working CI. All 16 workflows return startup_failure in 0s; the last 30 runs are startup_failure without a single exception.

That has a consequence worth stating before anything else: the two open PRs here (#53, #55) have never been verified by anything. Their green-looking absence of failures is an absence of checks.

Cause

Workflow-lockfile enforcement is active on this account, and this repo had no .github/workflows/actions.lock.

The cure, in four steps

Proven on haec#50 and trope-particularity-workbench#45. It takes four steps because each one's failure is invisible until the previous is fixed — they surface strictly one at a time:

  1. gh actions-lock — generates the lockfile, normalises pins to readable tags.
  2. Hoist SPDX back to line 1. actions-lock inserts its own banner as line 1, and the workflow linter requires the SPDX header there — so the tool that cures the startup failures reddens every workflow file unless this is undone in the same commit.
  3. Hand-author an empty [] lockfile entry per reusable caller (6 here). gh actions-lock skips reusable-workflow callers, so without this they remain startup_failure while everything else goes green — which reads as a partial fix rather than a missing step.
  4. Re-pin those callers to standards bd0df9ead7fa, the commit that made the governance check lockfile-aware. Verified present via the commits API rather than copied.

Expect failures

Nothing here has been checked in a long time. The first green run is a starting point, not a result — some of what surfaces will be real and long-standing. If two callers come back startup_failure after this, the cause is permission escalation (a reusable requesting more than its caller grants is rejected before any job starts, producing no log); that was the last residual on tpw#45.

Found during the 2026-08-05 estate CI/CD census, which measured 8 repos mostly dead and 47 partly dead out of 421.

🤖 Generated with Claude Code

All 16 workflows here return startup_failure in 0s. The last 30 runs are
startup_failure without exception, so this repo has had no working CI at
all, and the two open PRs (#53, #55) have never been verified by anything.

Workflow-lockfile enforcement is active on this account and this repo had
no .github/workflows/actions.lock.

Applied the cure proven on haec #50 and trope-particularity-workbench #45,
which takes four steps because each one's failure is invisible until the
previous is fixed:

1. gh actions-lock — generates the lockfile and normalises pins to tags.
2. Hoist SPDX back to line 1. actions-lock inserts its own banner there,
   and the workflow linter requires SPDX first, so the tool that cures the
   startup failures reddens every workflow file unless this is undone.
3. Hand-author an empty [] lockfile entry for each of the 6 reusable-
   workflow callers. gh actions-lock SKIPS callers, so without this they
   stay startup_failure while everything else goes green.
4. Re-pin those callers to standards bd0df9ead7fa, the commit that made
   the governance check lockfile-aware, verified via the commits API.

Expect previously-unseen failures. Nothing here has been checked in a long
time, so the first green run is a starting point rather than a result.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
@gitar-bot

gitar-bot Bot commented Aug 5, 2026

Copy link
Copy Markdown

Note

Automatic reviews are paused because your trial's included automatic processing has been used for this period. Upgrade now, or comment "Gitar review" to run a review anytime.
Learn more

Code Review ✅ Approved

Adopts the GitHub Actions lockfile across workflows to resolve persistent startup failures, accompanied by SPDX header adjustments and manual caller pinning. No issues found.

Auto-approved and auto-merge armed: No blocking issues found.
Please see Auto-approve Docs for details on setting custom approval criteria. — merges when pipeline and required approvals pass.

Options

Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Important

Your trial ends in 5 days — upgrade now to keep code review, CI analysis, auto-apply, custom automations, and more.

Was this helpful? React with 👍 / 👎 | Gitar

@gitar-bot
gitar-bot Bot enabled auto-merge (squash) August 5, 2026 04:29

@gitar-bot gitar-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gitar has auto-approved this PR and enabled auto-merge (configure)

@gitar-bot gitar-bot Bot added the gitar-approved Added by Gitar label Aug 5, 2026
@hyperpolymath
hyperpolymath merged commit 56456c6 into main Aug 5, 2026
30 of 32 checks passed
@hyperpolymath
hyperpolymath deleted the fix/ci-lockfile branch August 5, 2026 06:04
hyperpolymath added a commit that referenced this pull request Aug 7, 2026
…#60)

Stacked on #53. Retargets to `main` automatically when that merges.

## The correction that drove this

The **three-layer claim checker** is this repository's principal subject
— and it was barely documented, while the AffineScript same-cube example
was over-represented relative to it. `faces` is one profile of six, a
lens onto a corpus that lives elsewhere: a good demonstration of the
idea in miniature, not the subject. This PR fixes that proportion.

## Human

**`ARCHITECTURE.md` was template boilerplate** describing `src/`,
`tests/`, `config/` and `README.adoc` — none of which match this repo —
duplicating the real `docs/ARCHITECTURE.md`, and saying *nothing
whatever* about the three layers. (Closed PR #58 independently spotted
this as "drop false ARCHITECTURE"; it did not land, so the problem
persisted.)

Rewritten in two parts: **Part I** the layer architecture — Layer 1
(`type`) and what the diode actually buys, with its three open problems
(epistemic vs ontic clock, partial-order time, composition-forgery as
holonomy); Layer 2 (`trope`) as actually built in
`trope-checker`/`hermeneia`, affine with a guarded contraction rule;
Layer 3 (`sortal`), the doubling attack, and the `L3 -> L2` dependency
arrow. **Part II** the shipping extractor/classifier.

**`README.md` had drifted from the tool.** It said every face's lowering
"must normalise to the same canonical text"; the verifier now compiles
each face to typed-wasm and compares `sha256`, keeping text diffs as a
diagnostic only. The README asserted something that held on both sides
of a transition while no longer meaning the same thing — **this
repository's own failure mode, turned inward.**

## Machine

`0-AI-MANIFEST.a2ml`: real structure (it omitted `docs/decisions/`,
`proofs/`, `examples/`, `src/ui/`); new `(architecture …)` block with
the three layers, dependency order, doubling attack, decided-not-built
status and the `L1`/`L2`/`L3` numbering hazard; new `(debt …)` block;
ADR-0001 in milestones. **The do-not-paraphrase `(core-idea)` block is
untouched.**

**Wiki** was a one-line stub → `Home` + `Three-Layers` (pushed
separately — wikis are their own git repo).

## Debt — new `docs/DEBT.md`

| | Dimension | Open | Worst |
|---|---|---|---|
| A | Architecture | 3 | **HIGH** |
| C | CI/CD | 3 | MEDIUM |
| L | Licence | 3 | MEDIUM |
| D | Docs | 3 | MEDIUM |
| P | Proof | 2 | MEDIUM |
| K | Code | 1 | LOW |

**The headline finding went stale mid-audit, and that is recorded rather
than hidden.** C1 was filed CRITICAL — no lockfile, every workflow
`startup_failure` on every branch, `main` never green. **PR #56 fixed it
while this was being written.** Re-measured: 10 workflows green on
`main` including Rust CI, CodeQL and Secret Scanner. C1 is now RESOLVED
with the history kept, and the residue split into C2 (Scorecard still
`startup_failure`), C3 (two workflows failing on *content*, untriaged —
invisible until the lockfile landed), C4 (no proof gate).

Other findings:

- **L1** — GitHub reported **no licence**. Cause found: `LICENSE`
deviated from canonical MPL-2.0 by a **trailing space** (line 38) and
`http` vs `https` (line 360). Replaced with the canonical text.
- **A1–A3** — Layer 1 has no substrate anywhere; Layer 3's equivalence
side does not exist; Layer 2's vocabulary does not match its
implementation (**`p-residue` exists in no repository**).
- **P1** — `SameCube.agda` is genuinely good (`--safe`, zero postulates,
zero holes) but **ungated**.

`docs/tech-debt-2026-05-26.md`'s "RESOLVED" banner was **partly wrong**
and is corrected in place: licence was not actually detected, and proof
debt was half closed.

## Repo metadata (applied via API, not in this diff)

- **Description** was `Dual-use claim-grounder (Phase A in progress)` —
vague and stale. Now states what the tool does and its governance role.
- **Topics** were `development, hyperpolymath, open-source, rust,
software, tooling` — owner name, generic words, and a language GitHub
detects itself. Replaced with eight concept-level ones:
`claim-checking`, `argumentation`, `semantic-drift`, `provenance`,
`cross-domain-equivalence`, `architecture-decision-records`,
`formal-methods`, `static-analysis`.

## Verification

- `0-AI-MANIFEST.a2ml` parens and quotes balance
- `reuse lint` missing-info count **unchanged** from baseline (1,
pre-existing) — verified by stashing and re-running
- every path cited in `ARCHITECTURE.md` exists on disk
- CI state re-measured per workflow before publishing the claim
- no code touched

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

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gitar-approved Added by Gitar

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant