Skip to content

Commit 3ffd80e

Browse files
ci: consolidate Haec gates, repair K9 envelopes and FFI validation (#27)
## What this is Previously-unpushed work that existed **only** in a local worktree whose `.git` pointer was broken (it referenced a stale duplicate clone at `hyper-repos/haec` that has since been deleted). Repaired with `git worktree repair` and pushed here so it is no longer a single local copy. 36 files, ~610 insertions / ~1265 deletions, in two commits: - **`5c25f99`** — consolidates `dogfood-gate.yml` (453 lines → net −310) and repairs the K9 contract envelopes (`coordination.k9`, `session/custom-checks.k9`, `methodology-guard.k9.ncl`, six `template-*`/example `.k9.ncl` files). - **`e5c86e8`** — consolidates gate workflows into `ci.yml`; removes `dependabot-automerge.yml`, `quality.yml`, `pages.yml`, `security-policy.yml`, `npm-bun-blocker.yml`, `hypatia-scan.yml`, `push-email-notify.yml`; trims `dependabot.yml`; and reworks the **Zig/Idris FFI validation** (`src/interface/Abi/Foreign.idr`, `ffi/build.zig`, `ffi/src/main.zig`, `ffi/test/integration_test.zig`), plus `Justfile` and test-script updates. ## ⚠️ Not mergeable as-is Conflicts with #22#24 on six files, because those PRs added SPDX headers to workflows this branch deletes: ``` CONFLICT (content) .github/workflows/governance.yml CONFLICT (modify/delete) .github/workflows/hypatia-scan.yml CONFLICT (modify/delete) .github/workflows/pages.yml CONFLICT (content) .github/workflows/release.yml CONFLICT (modify/delete) .github/workflows/rsr-antipattern.yml CONFLICT (content) .github/workflows/trope-check.yml ``` The modify/delete cases resolve trivially (keep the delete); the three content conflicts need review. ## Relationship to #26 The three `startup_failure` deletions have been **split out into #26**, which merges cleanly and fixes the red CI on its own. Rebase this branch on top of #26 once that lands; the deletions will then already be in the base. Left as **draft** pending conflict resolution and review of the FFI rewrite. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
1 parent 3b77e9e commit 3ffd80e

36 files changed

Lines changed: 804 additions & 950 deletions

.github/dependabot.yml

Lines changed: 5 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,17 @@
11
# SPDX-License-Identifier: MPL-2.0
2-
# Dependabot configuration for RSR-compliant repositories
3-
# Covers common ecosystems - remove unused ones for your project
2+
# Dependabot configuration for Haec's current dependency surface.
43

54
version: 2
65
updates:
7-
# GitHub Actions - always include
86
- package-ecosystem: "github-actions"
97
directory: "/"
108
schedule:
119
interval: "weekly"
10+
day: "wednesday"
11+
time: "13:37"
12+
timezone: "Europe/London"
13+
open-pull-requests-limit: 1
1214
groups:
1315
actions:
1416
patterns:
1517
- "*"
16-
17-
# Rust/Cargo
18-
#
19-
# `open-pull-requests-limit: 0` suppresses routine version-update PRs
20-
# (no weekly patch-bump noise) while leaving Dependabot SECURITY PRs
21-
# flowing. Under GitHub's current Dependabot behaviour (2024+), using
22-
# an `ignore:` rule with `version-update:semver-patch` would ALSO
23-
# silence security PRs that happen to be patch-level — historically
24-
# the cause of estate-wide vulns sitting un-PR'd for weeks.
25-
# `open-pull-requests-limit: 0` is the GitHub-endorsed way to say
26-
# "security only, not routine bumps". Pair with the
27-
# dependabot-automerge.yml workflow for low-touch security
28-
# maintenance.
29-
- package-ecosystem: "cargo"
30-
directory: "/"
31-
schedule:
32-
interval: "weekly"
33-
open-pull-requests-limit: 0
34-
35-
# Elixir/Mix
36-
- package-ecosystem: "mix"
37-
directory: "/"
38-
schedule:
39-
interval: "weekly"
40-
41-
# Node.js/npm
42-
- package-ecosystem: "npm"
43-
directory: "/"
44-
schedule:
45-
interval: "weekly"
46-
47-
# Python/pip
48-
- package-ecosystem: "pip"
49-
directory: "/"
50-
schedule:
51-
interval: "weekly"
52-
53-
# Nix flakes
54-
- package-ecosystem: "nix"
55-
directory: "/"
56-
schedule:
57-
interval: "weekly"

.github/workflows/ci.yml

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
name: "CI / required"
3+
4+
on:
5+
pull_request:
6+
push:
7+
branches: [main]
8+
workflow_dispatch:
9+
10+
permissions:
11+
contents: read
12+
13+
concurrency:
14+
group: ci-${{ github.event.pull_request.number || github.ref }}
15+
cancel-in-progress: true
16+
17+
jobs:
18+
required:
19+
name: "CI / required"
20+
runs-on: ubuntu-latest
21+
timeout-minutes: 20
22+
container:
23+
# Idris 2 0.7.0, pinned by immutable image digest.
24+
image: ghcr.io/stefan-hoeck/idris2-pack@sha256:de9781906050dc44704ec6de0108c86f899ef17b2642932b79e00245d613b8ad
25+
steps:
26+
- name: Checkout
27+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
28+
29+
- name: Set up Zig
30+
uses: goto-bus-stop/setup-zig@abea47f85e598557f500fa1fd2ab7464fcb39406 # v2.2.1
31+
with:
32+
version: 0.15.2
33+
34+
- name: Typecheck the Idris2 ABI
35+
shell: bash
36+
run: |
37+
set -euo pipefail
38+
idris2 --version | grep -Fx 'Idris 2, version 0.7.0'
39+
idris2 --typecheck abi.ipkg
40+
41+
- name: Compile and test the Zig FFI
42+
shell: bash
43+
run: |
44+
set -euo pipefail
45+
test "$(zig version)" = '0.15.2'
46+
zig fmt --check \
47+
src/interface/ffi/build.zig \
48+
src/interface/ffi/src/main.zig \
49+
src/interface/ffi/test/integration_test.zig
50+
(
51+
cd src/interface/ffi
52+
zig build --summary all
53+
zig build test --summary all
54+
)
55+
56+
- name: Validate repository contracts
57+
shell: bash
58+
run: |
59+
set -euo pipefail
60+
find tests scripts -type f -name '*.sh' -print0 \
61+
| xargs -0 -r bash -n
62+
bash tests/check-examples.sh
63+
bash tests/aspect_tests.sh
64+
bash scripts/check-root-shape.sh .
65+
bash tests/workflows/validate_workflows_test.sh

.github/workflows/codeql.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ on:
99
- cron: '0 6 * * 1'
1010
permissions:
1111
contents: read
12+
concurrency:
13+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
14+
cancel-in-progress: true
1215
jobs:
1316
analyze:
1417
runs-on: ubuntu-latest

0 commit comments

Comments
 (0)