docs(audits): orphan-SHA pin + BP wrapper-prefix mismatch — 2026-05-27 sidecar to #215#220
Merged
Merged
Conversation
Sidecar to docs/audits/audit-admin-merge-wrapper-sweep-2026-05-26.{adoc,a2ml}
(the parent reusables-campaign closure).
The 278-wrapper sweep filed in the parent campaign pinned each wrapper's
`hypatia-scan-reusable.yml@SHA` to the PR-branch HEAD of standards#193
(97df762...). After standards#193 was squash-merged on 2026-05-26T19:37,
that SHA was orphaned (status: diverged, ahead_by=1, behind_by=24
against standards/main); the merge-commit SHA on main is 915139d...
with byte-identical content.
GitHub Actions cannot resolve reusable-workflow references to orphaned
commits, so every hypatia-scan run on any estate repo with the orphan
pin fails at parse-stage (banner "This run likely failed because of a
workflow file issue"; jobs: [] in the run JSON).
Estate scope: 100 repos affected per
`gh search code "@97df762" --owner hyperpolymath path:.github/workflows/hypatia-scan.yml`.
Sweep filed 2026-05-27 (this session): 99 PRs, Contents API + auto-merge
SQUASH armed, paced at 5-per-12s. typed-wasm received the fix via
PR #75 directly + cherry-picks onto #72/#74.
Sidecar finding documented: the wrapper-prefix BP-mismatch class.
Reusable resolves but the published check is
`hypatia / Hypatia Neurosymbolic Analysis` (caller-job `/` reusable
display name) — whereas every estate repo's branch protection still
requires the bare pre-wrapper name `Hypatia Neurosymbolic Analysis`.
Fix is per-repo `gh api -X PATCH .../protection/required_status_checks`;
applied on typed-wasm (single repo, sign-off explicit), out of scope
for this audit on the 99 others.
Three lessons + three not-discharged items listed for the next reusable
rollout. Future-prevention is a standards-repo PR-review checklist item:
"Reusable-workflow sweep PRs MUST pin to merge-commit SHAs."
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
🔍 Hypatia Security ScanFindings: 123 issues detected
View findings[
{
"reason": "Action hyperpolymath/standards/.github/workflows/changelog-reusable.yml@main needs attention",
"type": "unpinned_action",
"file": "changelog-reusable.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Action hyperpolymath/standards/.github/workflows/deno-ci-reusable.yml@main needs attention",
"type": "unpinned_action",
"file": "deno-ci-reusable.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Action hyperpolymath/standards/.github/workflows/elixir-ci-reusable.yml@main needs attention",
"type": "unpinned_action",
"file": "elixir-ci-reusable.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Action hyperpolymath/standards/.github/workflows/elixir-ci-reusable.yml@main needs attention",
"type": "unpinned_action",
"file": "elixir-ci-reusable.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Action hyperpolymath/standards/.github/workflows/governance-reusable.yml@main needs attention",
"type": "unpinned_action",
"file": "governance-reusable.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Action hyperpolymath/standards/.github/workflows/governance-reusable.yml@main needs attention",
"type": "unpinned_action",
"file": "governance.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Action hyperpolymath/standards/.github/workflows/rust-ci-reusable.yml@main needs attention",
"type": "unpinned_action",
"file": "rust-ci-reusable.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Action hyperpolymath/standards/.github/workflows/rust-ci-reusable.yml@main needs attention",
"type": "unpinned_action",
"file": "rust-ci-reusable.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Python file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/standards/standards/a2ml-templates/state-scm-to-v2.py",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/standards/standards/a2ml/bindings/deno/mod.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Sidecar audit to
audit-admin-merge-wrapper-sweep-2026-05-26.{adoc,a2ml}(PR #215 closure track) documenting a regression class introduced by the parent reusables-campaign sweep:97df762..., the PR-branch HEAD of feat(governance): add hypatia-scan-reusable.yml — biggest LOC leverage of the reusable trilogy #193 — NOT the merge-commit. After feat(governance): add hypatia-scan-reusable.yml — biggest LOC leverage of the reusable trilogy #193 squash-merged on 2026-05-26T19:37, the SHA was orphaned (ahead_by=1, behind_by=24against main); merge-commit is915139d7...with byte-identical content.jobs: []).Sidebar finding
The audit also documents a sibling failure class — wrapper-prefix BP mismatch. The wrapper-emitted check name
hypatia / Hypatia Neurosymbolic Analysis(<caller-job> / <reusable-display-name>) does not match branch protection's required bareHypatia Neurosymbolic Analysis(the pre-wrapper monolithic name). Required check never satisfied even when the workflow succeeds. Fixed on typed-wasm with explicit sign-off; out of scope for this audit on the 99 others.Test plan
🤖 Generated with Claude Code