Skip to content

ci: regenerate lockfile after dependabot bumps (restores CodeQL, Scorecard, Governance) - #158

Merged
hyperpolymath merged 2 commits into
mainfrom
ci/relock-after-dependabot
Aug 7, 2026
Merged

ci: regenerate lockfile after dependabot bumps (restores CodeQL, Scorecard, Governance)#158
hyperpolymath merged 2 commits into
mainfrom
ci/relock-after-dependabot

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Dependabot bumps #155 and #157 changed action SHAs without regenerating .github/workflows/actions.lock — the churn flagged when the lockfile first landed. Result on main: 7 of 15 workflows stale, CodeQL and OSSF Scorecard back to 0-second startup_failure, and the Governance job red because its own gh actions-lock --verify-local step (standards #574) correctly detected the staleness.

Full recipe applied:

  1. gh actions-lock regenerate
  2. restore the inline SHA pins (estate doctrine — sha_pinning_required stays ON)
  3. relock-sha-keys.sh to re-key the lockfile to those SHAs
  4. restore the reusable-caller entries the generator drops (the six standards wrappers), with the transitive uses: union
  5. re-pin the wrappers to standards 08586a1

Verification: --verify-localAll 15 workflows have complete lockfile coverage; --no-fix → valid, zero errors.

⚠️ This will recur on every dependabot action bump. Step 4 is not scriptable with the shipped tool alone; I'm contributing relock-caller-entries.sh to standards so the estate has the whole recipe in one place.

🤖 Generated with Claude Code

hyperpolymath and others added 2 commits August 7, 2026 12:18
Dependabot bumped action SHAs without regenerating actions.lock, so 7
of 15 workflows went stale: CodeQL and OSSF Scorecard back to
startup_failure, and the Governance linter's own 'gh actions-lock
--verify-local' step failing on the same staleness.

Regenerated with the full recipe — gh actions-lock, restore the inline
SHA pins, relock-sha-keys.sh, then restore the reusable-caller entries
the generator drops — and re-pinned the six standards wrappers to
08586a1. --verify-local: all 15 workflows covered; --no-fix: valid,
zero errors.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@gitar-bot

This comment has been minimized.

@gitar-bot
gitar-bot Bot enabled auto-merge (squash) August 7, 2026 11:21

@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 7, 2026
@hyperpolymath
hyperpolymath merged commit c915f7f into main Aug 7, 2026
21 checks passed
@hyperpolymath
hyperpolymath deleted the ci/relock-after-dependabot branch August 7, 2026 11:40
hyperpolymath added a commit that referenced this pull request Aug 7, 2026
… register (#159)

The code is in good shape; the prose describing it was not. This pass
makes the documentation true, and catalogues what it can't fix in one
place.

Everything below was **verified against the tree**, not assumed —
including re-running the test suite (**221 pass, 0 failures** — the
README's long-published number reproduces exactly).

## Licence safety (highest priority)

`PALIMPSEST.adoc` asserted *"This project is licensed under the
Palimpsest-MPL License 1.0"*, contradicting `LICENSE` (MPL-2.0). The
repo migrated off PMPL on **2026-05-26** per estate audit
`standards#196` — so this was a leftover creating genuine licensing
ambiguity. Rewritten as a clearly-marked historical note.

Six further licence inconsistencies are catalogued but **not**
unilaterally fixed, because they need your decision — notably
`dialects/solo/compiler/Cargo.toml` declaring `license = "MIT OR
Palimpsest-0.8"` (**not a valid SPDX identifier**) and two `LICENSE`
files whose SPDX tag says MPL-2.0 while their body is Palimpsest text
copyrighted to a different party.

## Structural

`CONTRIBUTING.md` was **broken**: it opened mid-code-block (so line 7
rendered as an H1 "# Clone the repository"), ended unterminated, carried
two conflicting SPDX identifiers, and described a "Perimeter 1-3" layout
that doesn't exist here. Rewritten against the real 15-crate workspace —
including the actual signing requirement (the `main` ruleset enforces
`required_signatures`; the `.adoc` twin claimed DCO sign-off) and a
section on proof-affecting changes.

## Factual corrections

| Was | Is |
|---|---|
| `ROADMAP.adoc`: *"Initial development phase"*, every box unchecked,
*"to be determined based on community feedback"* | Real rung state for a
0.2.0 tree with a working LLVM pipeline — plus an explicit **Not
planned** section |
| `README.adoc`: 137 tests, F1.0, four co-equal dialects, proof CI
"future" | Short accurate pointer to `README.md` (it contradicted it on
every load-bearing number) |
| `EXPLAINME.adoc`: *".hypatia-baseline.json is an intentionally empty
array"* | It has **7 entries expiring 2026-10-27** (#145) |
| Wiki ×3: *"preservation in progress"* / *"statement-only, gated on
#93"* | Machine-checked, axiom-free, CI-gated since F1.4; #93 resolved |

## Honesty banners, not deletions

11 wiki pages document behaviour that doesn't exist — an installer at
`mylang.org`, Homebrew/apt packages, an `ml` binary (it's `my`), a
retracted `std::` module tree, `async`/`await`, live AI queries. Rather
than delete ~13k lines unilaterally, each now carries a warning banner
naming the specific debt item. A reader can no longer be misled; you can
still decide what to keep.

## Machine-readable

- `STATE.a2ml`: head commit `8636e15`→`e68bb3d`; the "FULLY GREEN" board
claim corrected; the *"Idris `?todo_preservation` deliberately open"*
note contradicted both `proofs/STATUS.md` and the tree (zero holes
remain).
- **Notable**: `STATE.a2ml` listed S3c.3-choice as `pending` while
`proofs.yml:319` already gates it axiom-free — the proof work was ahead
of its own records.
- `ECOSYSTEM.a2ml` (two months stale): gaps G1/G2/G3/G5 all closed;
"four dialects" retracted to the nested-subset model.

## New: `DEBT.md`

**34 items** across licence · documentation · code · proof · test ·
CI/CD · metadata — 8 high, 21 medium, 5 low. Each records *the command
that produced its evidence*, so items can be re-measured rather than
re-argued. Unverified items are labelled **DIAGNOSIS (unconfirmed)**
rather than asserted.

Highlights beyond the licence issues:
- **C-1** ~7,300 LOC of orphaned duplicate source in root `src/`+`lib/`
— unbuilt, divergent, and documented by the wiki *as if it were the
compiler*
- **P-1** `proofs.yml` triggers only on `proofs/verification/**`, so
changing the *checker* never re-runs the proof gate — exactly the change
most likely to break the spec↔implementation correspondence
- **P-2** the Idris job has no hole assertion (a typed hole
type-checks), so it would pass if one were reintroduced
- **T-1** 34 property tests in `tests/property_tests.rs` are wired to no
target and never compile
- **I-1** actions-lockfile regeneration is a recurring manual step after
every dependabot bump (this bit us today — see #158)

## Wiki + repo metadata

The GitHub wiki was a **29-byte stub** while 26 pages sat unpublished.
It's now five pages (Home, Getting-Started, Architecture,
Formal-Verification, Project-Status) plus a sidebar — deliberately a
*navigational* layer linking to in-repo docs so it can't drift. Live and
rendering.

Description and topics replaced. The old topics (`development`,
`hyperpolymath`, `open-source`, `rust`, `software`, `tooling`) either
named you or duplicated GitHub's own language detection. The new nine
are concept-level and chosen for discoverability:
`quantitative-type-theory`, `affine-types`, `linear-types`,
`mechanized-metatheory`, `session-types`, `verified-compiler`,
`programming-language-design`, `proof-engineering`, `type-systems`.

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

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
hyperpolymath added a commit that referenced this pull request Aug 7, 2026
…rtup-failing (#160)

OSSF Scorecard has been dying daily with a 0-second `startup_failure`,
and it **outlasted the lockfile repair in #158** — so it is a second,
distinct cause.

## Cause

A job-level `permissions:` block **replaces** the workflow-level one; it
does not merge with it.

`scorecard.yml` grants `actions: read` at workflow level, but the job
that calls the reusable re-declared only `contents` / `security-events`
/ `id-token` — dropping `actions: read` exactly where it is needed. The
standards `scorecard-reusable.yml` requests `actions: read` at line 9,
and **a reusable asking for more than its caller grants is rejected
before any job is created**. That is why there was never a log, an
annotation, or a check run to look at.

This matches the estate-wide reusable-permission-escalation pattern.

## Verification

Canary dispatch on this branch (run 31175237558): **1 job ran** where
previously there were **0**. The startup rejection is gone.

That job then fails with `Only the default branch main is supported` —
which is the Scorecard action refusing to run on a non-default branch,
i.e. **an artefact of canarying on a branch, not a defect**. It will run
properly once this is on `main`.

🤖 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