Skip to content

fix(ci): asciidoctor install + re-pin a2ml-validate-action (unblocks #264)#266

Merged
hyperpolymath merged 2 commits into
mainfrom
fix/ci-asciidoctor-a2ml-pin
May 16, 2026
Merged

fix(ci): asciidoctor install + re-pin a2ml-validate-action (unblocks #264)#266
hyperpolymath merged 2 commits into
mainfrom
fix/ci-asciidoctor-a2ml-pin

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

Two pre-existing CI reds on main (not introduced by #264) — root-caused per the resolve-at-source rule:

  1. Build AsciiDoc: gem install asciidoctor --version ${{ env.ASCIIDOCTOR_VERSION }}ASCIIDOCTOR_VERSION is defined nowhere, so the flag had no value → Gem::OptionParser::MissingArgument. Dropped the dangling flag.
  2. Validate A2ML manifests: external a2ml-validate-action had a broken multi-line comment → bash ran ame/project …exit 127, failing every commit estate-wide. Fixed at source (a2ml-validate-action#11, merged) and re-pinned here to f8517bb.

Shipped as a CI-fix PR separate from the #264 content per workflow convention. Once merged, #264 is rebased and goes green.

Refs #260

🤖 Generated with Claude Code

Two pre-existing reds blocking #264 (unrelated to its content):

- docs-quality.yml: `gem install asciidoctor --version
  ${{ env.ASCIIDOCTOR_VERSION }}` — ASCIIDOCTOR_VERSION is never
  defined, so the flag had no argument → Gem::OptionParser::
  MissingArgument. Dropped the dangling flag (matches the repo's
  other asciidoctor install step).
- dogfood-gate.yml: re-pinned a2ml-validate-action from the
  exit-127 commit to f8517bb (broken-comment fix merged upstream
  as a2ml-validate-action#11). Greens 'Validate A2ML manifests'.

Refs #260

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 11 issues detected

Severity Count
🔴 Critical 2
🟠 High 2
🟡 Medium 7

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Issue in quality.yml",
    "type": "missing_workflow",
    "file": "quality.yml",
    "action": "create",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "Issue in mirror.yml",
    "type": "missing_workflow",
    "file": "mirror.yml",
    "action": "create",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "believe_me undermines formal verification (2 occurrences, CWE-704)",
    "type": "believe_me",
    "file": "/home/runner/work/hypatia/hypatia/src/abi/RuleEngine.idr",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "critical"
  },
  {
    "reason": "Nickel file missing SPDX-License-Identifier header (1 occurrences, CWE-1104)",
    "type": "ncl_missing_spdx",
    "file": "/home/runner/work/hypatia/hypatia/configs/config.ncl",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "unsafe block -- requires SAFETY comment (22 occurrences, CWE-676)",
    "type": "unsafe_block",
    "file": "/home/runner/work/hypatia/hypatia/clients/rust/hypatia-client/src/ffi.rs",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "as_ptr exposes raw pointer that may dangle or alias unsafely (10 occurrences, CWE-676)",
    "type": "as_ptr",
    "file": "/home/runner/work/hypatia/hypatia/clients/rust/hypatia-client/src/ffi.rs",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "expect() in hot path (1 occurrences, CWE-754)",
    "type": "expect_in_hot_path",
    "file": "/home/runner/work/hypatia/hypatia/adapters/src/codeberg.rs",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "expect() in hot path (1 occurrences, CWE-754)",
    "type": "expect_in_hot_path",
    "file": "/home/runner/work/hypatia/hypatia/adapters/src/radicle.rs",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "line": 35,
    "reason": "Secret found: Password",
    "type": "secret_detected",
    "file": "/home/runner/work/hypatia/hypatia/.hypatia-exemptions.md",
    "action": "revoke_rotate_and_purge",
    "rule_module": "security_errors",
    "severity": "critical"
  },
  {
    "reason": "1 workflow(s) with tag-pinned (not SHA-pinned) actions in hypatia",
    "type": "DependencyPinning",
    "file": "/home/runner/work/hypatia/hypatia",
    "action": "auto_fix",
    "rule_module": "scorecard",
    "severity": "medium",
    "remediation": "Pin GitHub Actions and Docker base images by SHA hash.",
    "scorecard_check": "Pinned-Dependencies"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

The 'Generate Haskell API documentation' step (working-directory:
registry, ghc/cabal/haddock for cicd-hyper-a) was template drift
from a Haskell repo. hypatia is Elixir/Rust with no registry/ dir,
so the step exited 'No such file or directory' on every run —
the second pre-existing 'Build AsciiDoc' red. Removed (cut the
irrelevant, per #260).

Refs #260

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 11 issues detected

Severity Count
🔴 Critical 2
🟠 High 2
🟡 Medium 7

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Issue in quality.yml",
    "type": "missing_workflow",
    "file": "quality.yml",
    "action": "create",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "Issue in mirror.yml",
    "type": "missing_workflow",
    "file": "mirror.yml",
    "action": "create",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "believe_me undermines formal verification (2 occurrences, CWE-704)",
    "type": "believe_me",
    "file": "/home/runner/work/hypatia/hypatia/src/abi/RuleEngine.idr",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "critical"
  },
  {
    "reason": "Nickel file missing SPDX-License-Identifier header (1 occurrences, CWE-1104)",
    "type": "ncl_missing_spdx",
    "file": "/home/runner/work/hypatia/hypatia/configs/config.ncl",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "unsafe block -- requires SAFETY comment (22 occurrences, CWE-676)",
    "type": "unsafe_block",
    "file": "/home/runner/work/hypatia/hypatia/clients/rust/hypatia-client/src/ffi.rs",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "as_ptr exposes raw pointer that may dangle or alias unsafely (10 occurrences, CWE-676)",
    "type": "as_ptr",
    "file": "/home/runner/work/hypatia/hypatia/clients/rust/hypatia-client/src/ffi.rs",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "expect() in hot path (1 occurrences, CWE-754)",
    "type": "expect_in_hot_path",
    "file": "/home/runner/work/hypatia/hypatia/adapters/src/codeberg.rs",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "expect() in hot path (1 occurrences, CWE-754)",
    "type": "expect_in_hot_path",
    "file": "/home/runner/work/hypatia/hypatia/adapters/src/radicle.rs",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "line": 35,
    "reason": "Secret found: Password",
    "type": "secret_detected",
    "file": "/home/runner/work/hypatia/hypatia/.hypatia-exemptions.md",
    "action": "revoke_rotate_and_purge",
    "rule_module": "security_errors",
    "severity": "critical"
  },
  {
    "reason": "1 workflow(s) with tag-pinned (not SHA-pinned) actions in hypatia",
    "type": "DependencyPinning",
    "file": "/home/runner/work/hypatia/hypatia",
    "action": "auto_fix",
    "rule_module": "scorecard",
    "severity": "medium",
    "remediation": "Pin GitHub Actions and Docker base images by SHA hash.",
    "scorecard_check": "Pinned-Dependencies"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

@hyperpolymath hyperpolymath merged commit 5a6c8ef into main May 16, 2026
35 checks passed
@hyperpolymath hyperpolymath deleted the fix/ci-asciidoctor-a2ml-pin branch May 16, 2026 21:54
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