Skip to content

fix(validate-action): exclude non-pedigree files from K9 checks - #21

Merged
hyperpolymath merged 1 commit into
mainfrom
fix/ci-blockers-sweep
Jul 27, 2026
Merged

fix(validate-action): exclude non-pedigree files from K9 checks#21
hyperpolymath merged 1 commit into
mainfrom
fix/ci-blockers-sweep

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

validate-action currently treats every *.k9/*.k9.ncl file as a K9
pedigree contract and demands the K9! magic line + pedigree = {...}
block. Two file families that share the extension by estate convention
are not pedigree contracts and were never meant to satisfy that schema:

  • coordination.k9 / session/custom-checks.k9 — the estate-standard
    session-management coordination bindings (plain YAML, ~40 repos, see
    session/README.md in any repo that has them).
  • self-validating/methodology-guard.k9.ncl — a K9 validator
    definition
    (methodology-constraint rules), not a target pedigree
    file — see its own header comment.

This is currently producing 6 of the 8 "Validate K9 contracts" errors
blocking open PRs in bitfuckit, contractiles, recon-silly-ation,
and (on main) stateful-artefacts.

Change

Adds the three path fragments to validate-action's default
paths-ignore, matching the existing pattern from
hyperpolymath/hypatia#243 (a validator must distinguish its target from
a file that legitimately contains the pattern being checked, just for a
different flavour of false positive: wrong schema entirely rather than
a fixture/vendored copy).

Test plan

  • bash validate-action/validate-k9.sh against bitfuckit,
    contractiles, recon-silly-ation, stateful-artefacts locally with
    the new default: errors 8→2, 8→2, 8→2, 2→0 respectively (the
    remaining 2 in the first three are a separate, genuine
    container/deploy.k9.ncl content defect fixed directly in each
    of those repos' own PRs).
  • Confirmed coordination.k9/session/custom-checks.k9 are
    consistently named/pathed across ~40 estate repos via
    grep -rl '^session_management:' --include='*.k9'.

Wrapper repos pin this action to a commit SHA, so this alone doesn't
unblock anyone — those repos also carry a local paths-ignore
override as a stopgap; the SHA pin can be refreshed to point past this
commit once merged, at which point the local overrides become
redundant (harmless either way).

🤖 Generated with Claude Code

coordination.k9 and session/custom-checks.k9 are the estate-standard
session-management coordination bindings (plain YAML, ~40 repos) — an
unrelated file family that happens to share the .k9 extension.
self-validating/methodology-guard.k9.ncl is a K9 *validator definition*
(rules about agent methodology constraints), not a pedigree target.

None of the three were ever meant to satisfy the K9!/pedigree schema
this action checks for, so every one of them fails the K9!/pedigree
checks by design, not by defect. That was producing 6 of the 8
"Validate K9 contracts" errors currently blocking PRs in bitfuckit,
contractiles, recon-silly-ation and stateful-artefacts (and latently
affecting every other repo carrying the same estate-standard files).

Add the three path fragments to the action's default paths-ignore so
this is fixed once, here, instead of via a local override repeated in
every wrapper repo.

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

Copy link
Copy Markdown

@gitar-bot

gitar-bot Bot commented Jul 27, 2026

Copy link
Copy Markdown
CI failed: CI failures occurred due to an unresolved external action repository and a git submodule authentication failure when cloning a dependent repository.

Overview

Two distinct dependency-related failures occurred in the CI run: an inability to resolve and download a custom GitHub Action (hyperpolymath/a2ml-validate-action) and a git submodule authentication failure (fatal: could not read Username) while attempting to clone a repository.

Failures

Missing or Inaccessible GitHub Action (confidence: high)

  • Type: dependency
  • Affected jobs: 90104976531
  • Related to change: yes
  • Root cause: The workflow references an action 'hyperpolymath/a2ml-validate-action' that either does not exist, has been deleted, or resides in a private repository without proper access permissions.
  • Suggested fix: Verify the repository name and owner for 'hyperpolymath/a2ml-validate-action', ensure it is public or accessible with proper credentials, or update the workflow reference.

Git Submodule Authentication Failure (confidence: high)

  • Type: dependency
  • Affected jobs: 90104976439
  • Related to change: unclear
  • Root cause: The CI job failed to clone a git submodule because git could not authenticate or read credentials (No such device or address).
  • Suggested fix: Configure the workflow with a personal access token (PAT) or deploy key with permissions to access the private submodules, or ensure proper checkout configuration.

Summary

  • Change-related failures: 1 failure regarding missing action resolution.
  • Infrastructure/flaky failures: 0 infrastructure failures (1 authentication/submodule setup issue).
  • Recommended action: Verify repository permissions and access tokens for both the custom GitHub Action and the git submodules referenced in the workflow.
Code Review ✅ Approved 1 resolved / 1 findings

Excludes non-pedigree session and validator files from validate-action checks to prevent false schema validation errors. Consider anchoring the coordination.k9 paths-ignore fragment to avoid unintended over-matching.

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

✅ 1 resolved
Edge Case: Unanchored 'coordination.k9' fragment can over-match real contracts

📄 validate-action/action.yml:70-72
paths-ignore fragments are matched as unanchored substrings (validate-k9.sh:51, [[ "$p" == *"$frag"* ]]). The new coordination.k9 entry therefore also skips any genuine pedigree file whose path merely contains that substring — e.g. network-coordination.k9 or a coordination.k9.ncl variant — silently exempting it from K9 validation. If estate naming guarantees these are always exactly coordination.k9, this is acceptable; otherwise consider anchoring to the basename (e.g. /coordination.k9) to avoid accidental carve-outs. The session/custom-checks.k9 and self-validating/methodology-guard.k9.ncl entries are path-qualified and less prone to this.

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

Comment thread validate-action/action.yml

@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
@hyperpolymath
hyperpolymath merged commit 47cca67 into main Jul 27, 2026
3 of 5 checks passed
@hyperpolymath
hyperpolymath deleted the fix/ci-blockers-sweep branch July 27, 2026 20:57
hyperpolymath added a commit to hyperpolymath/recon-silly-ation that referenced this pull request Jul 27, 2026
…shed instantiation (#21)

## 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`. It's dead, retired estate-wide
  per `docs/audits/audit-reusables-convergence-2026-05-26.adoc`, and
  superseded by `governance.yml` (already present here). 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
  hyperpolymath/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**: failed on TWO files. `ECOSYSTEM.a2ml`'s
  `notes` field documented the `{{PLACEHOLDER}}` mechanism using the
  literal token shape (reworded). `STATE.a2ml` was still, despite
  PR #19's title, substantively the raw template — `project =
  "rsr-template-repo"`, a "STATE file for rsr-template-repo itself"
  preamble, and template-authoring milestones/notes. Properly
  instantiated for recon-silly-ation from its own README/manifest.

## Test plan

- [x] `bash validate-action/validate-k9.sh` (k9-ecosystem, with the
      new paths-ignore) → `Errors: 0` (was 8)
- [x] `grep -rnE '^[[:space:]]+uses:' .github/workflows/ | grep -v
'@[a-f0-9]{40}'`
      → empty (was 1 match)
- [x] Reproduced the openssf-compliance placeholder-check step locally
      → 0 files flagged (was 2)
- [x] `python3 -c "import tomllib; tomllib.load(...)"` on the edited
      `.a2ml` files → parses clean
- [x] All touched/remaining workflow YAML parses via `yaml.safe_load`

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

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/stateful-artefacts that referenced this pull request Jul 27, 2026
…24)

## Summary

Propagates the same two fixes landed in bitfuckit/contractiles/
recon-silly-ation to this repo, whose `main` branch shows the
identical two failing checks:

- **rsr-antipattern.yml**: called

`hyperpolymath/standards/.github/workflows/rsr-antipattern-reusable.yml`,
  which has never existed on that repo (retired estate-wide per
  `docs/audits/audit-reusables-convergence-2026-05-26.adoc`; superseded
  by `governance.yml`, already present here). Deleted rather than
  pinned to an unresolvable reference.
- **Validate K9 contracts**: 2 errors from the same
  `container/deploy.k9.ncl` defect (missing `K9!` line, pedigree
  hidden behind a let-binding). Fixed the same way, plus the same
  local `paths-ignore` stopgap pending
  hyperpolymath/k9-ecosystem#21.

`openssf-compliance` was already green here; no third fix needed.

## Test plan

- [x] `bash validate-action/validate-k9.sh` (k9-ecosystem, with the
      new paths-ignore) → `Errors: 0` (was 2)
- [x] `grep -rnE '^[[:space:]]+uses:' .github/workflows/ | grep -v
'@[a-f0-9]{40}'`
      → empty
- [x] All touched/remaining workflow YAML parses via `yaml.safe_load`

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

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/contractiles that referenced this pull request Jul 27, 2026
…older FP (#23)

## 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`. It's dead, retired estate-wide
  per `docs/audits/audit-reusables-convergence-2026-05-26.adoc`, and
  superseded by `governance.yml` (already present here). 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
  hyperpolymath/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, PLUS
  leftover un-instantiated `{{SERVICE_NAME}}`/`{{REGISTRY}}`/`{{PORT}}`
  tokens) — fixed directly.
- **openssf-compliance**: false-positived on `ECOSYSTEM.a2ml`'s `notes`
  field, which documented the `{{PLACEHOLDER}}` mechanism using the
  literal token shape. Reworded (same false-positive class as
  hypatia#243).

## Test plan

- [x] `bash validate-action/validate-k9.sh` (k9-ecosystem, with the
      new paths-ignore) → `Errors: 0` (was 8)
- [x] `grep -rnE '^[[:space:]]+uses:' .github/workflows/ | grep -v
'@[a-f0-9]{40}'`
      → empty (was 1 match)
- [x] Reproduced the openssf-compliance placeholder-check step locally
      → 0 files flagged (was 1)
- [x] `python3 -c "import tomllib; tomllib.load(...)"` on the edited
      `.a2ml` files → parses clean
- [x] All touched/remaining workflow YAML parses via `yaml.safe_load`
      (pre-existing, unrelated `e2e.yml` parse error noted separately,
      not touched by this PR)

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

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/bitfuckit that referenced this pull request Jul 27, 2026
#24)

## 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
  hyperpolymath/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

- [x] `bash validate-action/validate-k9.sh` (k9-ecosystem, with the
      new paths-ignore) → `Errors: 0` (was 8)
- [x] `grep -rnE '^[[:space:]]+uses:' .github/workflows/ | grep -v
'@[a-f0-9]{40}'`
      → empty (was 1 match: `rsr-antipattern.yml:15`)
- [x] `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.
- [x] All touched/remaining workflow YAML parses via `yaml.safe_load`.

🤖 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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant