Skip to content

fix(ci): three CI blockers — dead rsr-antipattern ref, K9 pedigree gap - #24

Merged
hyperpolymath merged 3 commits into
mainfrom
fix/ci-blockers-sweep
Jul 27, 2026
Merged

fix(ci): three CI blockers — dead rsr-antipattern ref, K9 pedigree gap#24
hyperpolymath merged 3 commits into
mainfrom
fix/ci-blockers-sweep

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Fixes the three CI blockers keeping the estate's PR queue stuck, as
diagnosed for this repo (full per-blocker root-cause detail is in the
commit message):

  • lint-workflows (unpinned action, rsr-antipattern.yml:15): the
    referenced reusable (rsr-antipattern-reusable.yml) has never
    existed on hyperpolymath/standards — verified via
    gh api repos/hyperpolymath/standards/commits?path=... (empty) and
    absence from the current rsr-template-repo. It's dead, retired
    estate-wide per docs/audits/audit-reusables-convergence-2026-05-26.adoc,
    and superseded by governance.yml (already present here). No SHA
    exists to pin, so the file is deleted rather than pinned to an
    unresolvable reference.
  • Validate K9 contracts (8 errors / 10 files): 6 were a shared
    k9-ecosystem/validate-action scope bug, fixed at the source in
    fix(validate-action): exclude non-pedigree files from K9 checks k9-ecosystem#21 (with a local stopgap override here).
    The remaining 2 were a genuine container/deploy.k9.ncl defect
    (missing K9! line, pedigree hidden behind a let-binding) — fixed
    directly.
  • openssf-compliance: already passing on this repo; no change.

Test plan

  • bash validate-action/validate-k9.sh (k9-ecosystem, with the
    new paths-ignore) → Errors: 0 (was 8)
  • grep -rnE '^[[:space:]]+uses:' .github/workflows/ | grep -v '@[a-f0-9]{40}'
    → empty (was 1 match: rsr-antipattern.yml:15)
  • nickel typecheck container/deploy.k9.ncl — confirmed the K9!
    line breaks this (a latent, non-blocking, estate-wide property
    shared by the existing canonical templates too — see commit
    message); nothing in this repo's CI invokes it today.
  • All touched/remaining workflow YAML parses via yaml.safe_load.

🤖 Generated with Claude Code

Three independent CI-blocker fixes bundled together (verified
individually, listed by check name):

lint-workflows: rsr-antipattern.yml called
hyperpolymath/standards/.github/workflows/rsr-antipattern-reusable.yml,
which has never existed on that repo (empty result from the commits
API filtered on that path; absent from the current rsr-template-repo
too). The estate's own
docs/audits/audit-reusables-convergence-2026-05-26.adoc confirms
`antipattern-check` was retired as part of the "Old rsr-template
suite" and its required-status-check context was dropped because "no
workflow ever produced" it again. Its function (language/package
anti-pattern policy) is already covered by governance.yml ->
governance-reusable.yml's language-policy/package-policy jobs, which
this repo already runs. No SHA exists to pin against a file that was
never committed, so the fix is to delete the dead workflow rather than
write an unresolvable pin.

Validate K9 contracts: locally reproduced the reported 8 errors / 10
files. 6 of the 8 were a scope bug in the shared k9-ecosystem
validate-action (coordination.k9, session/custom-checks.k9, and
self-validating/methodology-guard.k9.ncl are not K9 pedigree contracts
at all — fixed at the source in hyperpolymath/k9-ecosystem#21, with a
local paths-ignore override here as a stopgap since the wrapper pins
the action to a commit SHA). The remaining 2 were a genuine defect in
container/deploy.k9.ncl: missing the literal `K9!` first line, and its
`pedigree` field pointed at a let-bound variable rather than an inline
`pedigree = { ... }` block, so the validator's line-based scanner
never saw name/version/leash. Fixed by adding the magic line and
re-exposing the required fields inline via a Nickel record merge.

Latent, non-blocking finding: adding `K9!` as line 1 breaks `nickel
typecheck` (the file's own "Usage" comment documents that command).
This is NOT new — the existing canonical templates
(.machine_readable/self-validating/template-*.k9.ncl) already have
this same property and already fail `nickel typecheck` today. No
workflow in this repo invokes `nickel typecheck` on `.k9.ncl` files, so
nothing is currently gated on it, but it means the whole estate's
K9.ncl convention would break instantly if that check were ever wired
up. Recorded here for whoever picks that up; out of scope to fix in
this PR.

openssf-compliance: N/A for bitfuckit — its "Check no unfilled
placeholder tokens" step was already passing (its
.machine_readable/6a2/ECOSYSTEM.a2ml describes bitfuckit itself, not
the template it was scaffolded from).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Comment thread container/deploy.k9.ncl
Comment thread container/deploy.k9.ncl

@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 (configure)

@hyperpolymath
hyperpolymath marked this pull request as ready for review July 27, 2026 20:57
@sonarqubecloud

Copy link
Copy Markdown

@hyperpolymath
hyperpolymath merged commit 8a4293b into main Jul 27, 2026
26 of 27 checks passed
@hyperpolymath
hyperpolymath deleted the fix/ci-blockers-sweep branch July 27, 2026 20:59
@gitar-bot

gitar-bot Bot commented Jul 27, 2026

Copy link
Copy Markdown
CI failed: CI check `scripts/check-root-shape.sh` failed because the new root entries `LICENSES/` and `flake.nix` are not included in the root allowlist.

Overview

1 root-shape validation failure across 2 jobs, caused by new repository root files/directories violating the allowed root shape configuration.

Failures

Root Shape Validation Failure (confidence: high)

  • Type: build
  • Affected jobs: 90105327571, 90106585795
  • Related to change: yes
  • Root cause: The repository root entries LICENSES/ and flake.nix are not listed in .machine_readable/root-allow.txt.
  • Suggested fix: Add LICENSES/ and flake.nix to .machine_readable/root-allow.txt.

Summary

  • Change-related failures: 1 (Root shape validation failed due to missing allowlist entries for new root files)
  • Infrastructure/flaky failures: 0
  • Recommended action: Update .machine_readable/root-allow.txt to include LICENSES/ and flake.nix.
Code Review ✅ Approved 2 resolved / 2 findings

Removes the dead rsr-antipattern workflow reference and fixes K9 contract validation errors. Consider addressing the invalid Nickel syntax caused by the K9! magic line and the duplicated metadata in component_pedigree.

Auto-approved: No blocking issues found.
Please see Auto-approve Docs for details on setting custom approval criteria.

✅ 2 resolved
Quality: name/version duplicated between metadata and exported pedigree

📄 container/deploy.k9.ncl:21-27 📄 container/deploy.k9.ncl:152-156
The exported pedigree = component_pedigree & { name, version, leash } hardcodes name and version that already exist in component_pedigree.metadata, creating two sources of truth that will silently diverge on the next version bump. Since the validator only scans for literal name =/version = lines, you can reference the existing fields to keep a single source of truth while still satisfying the scanner.

Bug: K9! magic line makes deploy.k9.ncl invalid Nickel

📄 container/deploy.k9.ncl:1 📄 container/deploy.k9.ncl:11-13
Adding the bare K9! token as line 1 satisfies the K9 validator's line-based scanner but is not valid Nickel syntax, so the file can no longer be parsed/evaluated. This breaks the file's own documented usage commands on lines 12-13 (nickel typecheck container/deploy.k9.ncl and k9-svc validate container/deploy.k9.ncl) if those tools evaluate Nickel. The author acknowledges this as a latent, non-CI-blocking issue; if the intent is to keep the file typecheckable, consider whether the validator accepts a Nickel-comment form (e.g. # K9!) instead of a bare token, or track the estate-wide fix so the documented commands don't silently fail.

Tip

Comment Gitar fix CI or enable auto-apply: gitar auto-apply:on

Options

Auto-apply is off → Gitar will not commit updates to this branch.
Display: compact → Showing less information.

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

Auto-apply Compact
gitar auto-apply:on         
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

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