Skip to content

fix(ci): panel-clades-abi pins Idris2 by commit, drops the checkout token, shows the log tail - #146

Merged
hyperpolymath merged 6 commits into
mainfrom
claude/new-session-ywdrth
Oct 14, 2026
Merged

hyperpolymath merged 6 commits into
mainfrom
claude/new-session-ywdrth

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

This carries CodeRabbit's three review findings on #145. #145 was merged at a188675, a minute before the fix commit (42dbbbe) was pushed, so the fixes never reached main. The three review threads on #145 say "fixed in 42dbbbe"; this PR is where that commit lands.

Changes

  • build-validation.yml / panel-clades-abi:
    • Idris2 is fetched by commit, not by tag (CWE-494). The job now fetches 15a3e4e70843f7a34100f6470c04b791330788df (the commit v0.8.0 names) and checks HEAD against it. Then it tags that commit v0.8.0 locally: without a tag, Idris2's Makefile reports the version as 0.8.0-<sha>.
    • The checkout sets persist-credentials: false. Nothing in the job needs the token after checkout, because the sibling fetch is anonymous https.
  • panel-clades/scripts/check-abi.sh: both build branches (kernel and grades) print the log tail when idris2 fails without an Error line, for example on an INTERNAL ERROR. Before, they printed nothing.

The branch merges main (#145's squash) instead of being force-pushed, so the diff against main is only these two files.

Testing

  • Fetch, verify and tag were run locally against GitHub. The pinned SHA checks out, and the Makefile's GIT_SHA1 is 15a3e4e70 before the local tag and empty after it.
  • shellcheck is clean on check-abi.sh.
  • bash panel-clades/scripts/check-abi.sh → OK: panel-clades grades ABI — builds against the kernel, 2 rejection(s).
  • Control: an idris2 shim that fails with only an INTERNAL ERROR line now has that line printed before FAIL: panel-clades-grades.ipkg (exit 1).

The other red checks are the same pre-existing ones listed on #145, all red on main too: validate (no deno.json), Rust CI (gossamer-rs path dependency), the Governance lockfile and workflow linter, K9 contracts, and the estate-audit hygiene gate. CodeRabbit's docstring-coverage warning counts the four one-line bash helpers (pass, err, die, fetch); I've left it as is.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Y6FD63UrriRBHqmhhEca9t


Generated by Claude Code

…rnel

PanelClades.ABI.Grades grades a clade's resource contract in typed-wasm's
Idris2 grade kernel (TypedWasm.ABI.ResourceAlgebra, transcribed from
hyperpolymath/resource-algebra), imported at a pin, not re-declared:

  - panel state by OCCUPANCY (HWM): StateWithin, and phasesWithin, the
    reclamation law at the panel (a second phase fits in what the first
    left);
  - the Panel-N -> Panel-W crossing by LOSS: LossWithin (total collapse is
    never within tolerance), crossTwice (losses add, lossSeq), betterOfTwo
    (the less lossy translation, lossAlt);
  - CladeResourceContract, its {grade, algebra} pairs (TaggedGrade), and the
    neurosym-bridge contract: state peak 48 / drift 16 within 64, crossing
    loss 2 within 3.  DESIGNED: declared values for the owner to confirm,
    not measurements;
  - the computed separation at the panel: two phases occupy 64 but cost 96.

panel-clades/scripts/fetch-siblings.sh pins typed-wasm at main 9403258
(the kernel's landing, typed-wasm#271).  panel-clades/scripts/check-abi.sh
builds the kernel there, builds panel-clades-grades.ipkg against it (exit 0
and no Error line), and requires tests/reject/{OverBudget,
CollapseWithinTolerance}.idr to be refused at their invalid declarations
for the intended reason.  It runs as job panel-clades-abi in
build-validation.yml (Idris2 0.8.0 built from its tag; no binaries exist).

schema/typell-grade.schema.json is the {grade, algebra} wire payload for
TypeLL (DESIGNED: the Panel-L JSON-RPC wiring is not built).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y6FD63UrriRBHqmhhEca9t
The ABI README said "Verified by: Idris2 0.8.0 type checker" with every
proof CLOSED.  Checked today: Types.idr / Layout.idr / Foreign.idr do not
typecheck.  Their module names (PanelClades.ABI.*) do not match their
paths, so Idris2 refuses them outright, and laid out at matching paths
Types.idr still has 11 errors (ElabReflection not enabled, DecEq without
Decidable.Equality, unprovable So auto-proofs, Bits used as a type,
pattern matching on types, an auto-bound cladeKindCount).  The README now
says which module does typecheck (Grades.idr, via scripts/check-abi.sh) and
lists those errors; fixing them is left to the owner, as some need
redesign.  Also: SPDX header on that README, a pointer from the TypeLL
clade README to the grade schema, and a CHANGELOG entry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y6FD63UrriRBHqmhhEca9t
…xLub

typed-wasm #273 and #274 have merged, so the pin moves from 9403258 (the
kernel's landing, #271) to main 117bbf8.  #273 added maxLub to the
kernel's Nat lemmas, so Grades.idr's local copy (maxLeast) goes and
phasesWithin uses the kernel's.  check-abi.sh passes at the new pin
(1 module, 0 errors, 2 rejections).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y6FD63UrriRBHqmhhEca9t
…ild directly

shellcheck SC2164 and SC2181, the likely source of CodeFactor's one
finding on #145.  The script runs without `set -e` (it collects
failures), so a failed cd would have carried on in the wrong directory.
The kernel-build test now checks the subshell's status directly.  Both
failure branches still fail the gate (checked with an idris2 shim that
refuses the build, and one that prints Error: but exits 0).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y6FD63UrriRBHqmhhEca9t
…tail

CodeRabbit on #145:
- build-validation.yml fetched Idris2 by its v0.8.0 tag, which can move
  (CWE-494).  It now fetches 15a3e4e70843f7a34100f6470c04b791330788df,
  the commit that tag names, checks HEAD against it, and tags it v0.8.0
  locally so the Makefile still reports 0.8.0 (without a tag it appends
  the short SHA).
- The panel-clades-abi checkout sets persist-credentials: false; the job
  needs no token after checkout (the sibling fetch is anonymous https).
- check-abi.sh printed nothing when idris2 failed without an `Error`
  line (an INTERNAL ERROR, say).  Both build branches now fall back to the
  log tail; checked with an idris2 shim that fails with no Error line.

shellcheck clean; check-abi.sh passes (1 module, 0 errors, 2 rejections).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y6FD63UrriRBHqmhhEca9t
# Conflicts:
#	.github/workflows/build-validation.yml
#	panel-clades/scripts/check-abi.sh
@coderabbitai

coderabbitai Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

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

Next included review available in 46 minutes.

Check out review usage here.

View limit details

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

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: cd6f0e84-1ecb-4429-8e63-00676afe82b5
📥 Commits

Reviewing files that changed from the base of the PR and between 7e066da and 9c1a250.

📒 Files selected for processing: 2
  • .github/workflows/build-validation.yml
  • panel-clades/scripts/check-abi.sh
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@sonarqubecloud

Copy link
Copy Markdown

@hyperpolymath
hyperpolymath marked this pull request as ready for review October 14, 2026 02:01

Copy link
Copy Markdown
Owner Author

These red checks are not this PR's. Each one is red on main (787ac2e, and on 7e066da after #145) for the same reason, in files this PR doesn't touch. No fix for any of them exists yet, so there is nothing to port in.

Check Cause (from this head's log)
Dogfood Gate / Validate K9 contracts Files scanned: 117 · Errors: 117: the config.k9.ncl files lack the K9! first line
Central Estate CI/CD Audit / estate-audit Code Hygiene Gate: unlinked TODO markers in src/update/*.affine. The proof-circumvention scan reports none.
Build Validation / validate deno task couldn't find deno.json(c) or package.json (ReScript build gate)
Rust CI / Cargo check no matching package named gossamer-rs, a path dependency on a sibling checkout CI doesn't make
Governance / Actions lockfile verify no .github/workflows/actions.lock; the grace window closed on 2026-10-01
Governance / Workflow security linter main-estate-audit.yml lacks an SPDX header and a top-level permissions:

This PR's own check is Build Validation / panel-clades-abi, which builds Idris2 from the pinned commit. It is still running.


Generated by Claude Code

@hyperpolymath
hyperpolymath merged commit 2e366ab into main Oct 14, 2026
35 of 41 checks passed
@hyperpolymath
hyperpolymath deleted the claude/new-session-ywdrth branch October 14, 2026 02:11
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.

2 participants