Skip to content

chore(ci): bump k9/a2ml validate-action pins to current main#253

Merged
hyperpolymath merged 1 commit into
mainfrom
chore/bump-validate-actions
May 16, 2026
Merged

chore(ci): bump k9/a2ml validate-action pins to current main#253
hyperpolymath merged 1 commit into
mainfrom
chore/bump-validate-actions

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

Stale SHA-pins carried two fixed validator false-positives (k9 pedigree brace bug #7; a2ml identity check on typed/*file manifests #8/#9). Bumps both to current main and adds github-actions to dependabot to prevent recurrence. Mechanical estate-wide sweep.

🤖 Generated with Claude Code

The pinned SHAs carried two fixed false-positives:
- k9-validate-action: pedigree brace-counting bug ('missing name'
  on files with a security block before metadata) - fixed in #7.
- a2ml-validate-action: identity-field check on canonical typed /
  *file.a2ml manifests - fixed in #8/#9.

Also adds github-actions to dependabot so action pins stay current.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@hyperpolymath hyperpolymath merged commit 60b0d1d into main May 16, 2026
@hyperpolymath hyperpolymath deleted the chore/bump-validate-actions branch May 16, 2026 09:55
@github-actions
Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 10 issues detected

Severity Count
🔴 Critical 2
🟠 High 0
🟡 Medium 8

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "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": "Docker reference in Nickel config -- RSR requires Podman/Containerfile (1 occurrences, CWE-1104)",
    "type": "ncl_docker_not_podman",
    "file": "/home/runner/work/hypatia/hypatia/.machine_readable/svc/k9/hypatia-metadata.k9.ncl",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "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"
  },
  {
    "reason": "Repository has 1 non-main remote branch(es). Policy: single main branch only.",
    "type": "GS007",
    "file": ".",
    "action": "delete_remote_branches",
    "rule_module": "git_state",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

hyperpolymath added a commit that referenced this pull request May 30, 2026
…ch — standards#260/#261/#263) (#391)

## Summary

Single batched Layer-1 PR for **three** estate-campaign STEP 1
sub-issues:

- `hyperpolymath/standards#260` — ReScript→AffineScript Layer-1
(umbrella #252)
- `hyperpolymath/standards#261` — npm→Deno Layer-1 (umbrella #253)
- `hyperpolymath/standards#263` — Unnecessarily-JS→AffineScript Layer-1
(umbrella #254)

Batched because the changes are non-conflicting and the carve-out
classes share structural overlap (vscode, bootstrap shims, upstream
forks, archived, vendored deps). Mirrors the TS Layer-1 batch shape from
#375 + #378.

## Rule changes

| Rule | Status | Carve-out classes |
|---|---|---|
| `:rescript_detected` | extended | 8 — bsconfig, upstream forks,
archived, vendored, vscode, compiled output (lib/js, lib/es6, lib/bs),
bootstrap shims, Telegraf |
| `:rescript_interface_detected` | extended | same 8 |
| `:nodejs_detected` (package-lock.json) | extended | 6 — vscode,
bootstrap shims, upstream forks, archived, vendored, example/test
fixtures |
| `:javascript_detected` (*.js) | **NEW** | 8 — host-required
(mcp-bridge/, /plugins/), tooling configs (.config.{js,cjs,mjs}),
bootstrap shims, upstream forks, archived, vendored, compiled output
(/out/, /lib/js/, /.deno/), vscode |
| `:javascript_jsx_detected` (*.jsx) | **NEW** | same 8 |

JS ship-mode design question (umbrella#254 STEP 1) decided in favour of
HARD-BLOCK with extensive carve-outs; per-PR exemption via inline `//
hypatia: allow cicd_rules/javascript_detected -- <reason>` pragma.

## Tests

`test/rules/cicd_rules_rescript_npm_js_test.exs` — 15 representative
cases across all 4 rules (flag + per-carve-out exemption) mirroring
`cicd_rules_typescript_test.exs`.

Verified locally via standalone `elixirc` compile + sanity-check script
(15/15 pass). Local `mix test` blocked by Elixir 1.14 vs Phoenix dep
mismatch unrelated to this PR; CI runs on a compatible toolchain.

## Seam-finding origin

Identified as Layer-1 batch candidate during the umbrella filings
session 2026-05-30 (see [[feedback_fanout_and_seam_analyst_meander]] in
operator memory). The three STEP 1 sub-issues all cross-reference each
other and this batch.

## Test plan

- [ ] CI green (Elixir-compatible toolchain runs the new test file)
- [ ] No regression in `cicd_rules_typescript_test.exs` (orthogonal
rules)
- [ ] Manual scan of an estate repo confirms new rules don't fire on
legitimate paths

## Cross-references

- Refs hyperpolymath/standards#260 (RS STEP 1)
- Refs hyperpolymath/standards#261 (npm STEP 1)
- Refs hyperpolymath/standards#263 (JS STEP 1)
- Refs hyperpolymath/standards#252 (RS umbrella)
- Refs hyperpolymath/standards#253 (npm umbrella)
- Refs hyperpolymath/standards#254 (JS umbrella)
- Pattern: hypatia#375 + #378 (TS Layer-1)

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

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit that referenced this pull request May 30, 2026
…fice, bindings carve-outs (standards#253) (#405)

## Summary

STEP 3 of campaign #253 (npm → Deno estate migration). Carve-out gap-fix
surfaced during the smallest-first batch.

Expands `:nodejs_detected` `path_allow_prefixes` to cover ~10
false-positive manifest classes:

- `vscode-` substring — VSCode-* extension repos / subdirs not under
`/vscode/` segment
- `tree-sitter-` substring — tree-sitter grammar npm-publish targets
with `node-gyp` native binding (Class C)
- `/.lake/` — Lean4 vendored packages
- `/office-addin/` — Office.js add-in host-required toolchain
- `/bindings/javascript/`, `/bindings/typescript/` — consumer-facing
estate exports

These are all legitimate non-migrate-able npm manifest cases. Adding
them as carve-outs prevents incorrect migration PRs against e.g.
`vscode-k9`, `tree-sitter-a2ml`, `proven/bindings/typescript/`.

## Test plan

- [ ] Hypatia rule-engine unit tests pass.
- [ ] Re-scan against the estate produces zero flags for the named
carve-out classes.
- [ ] Truly migrate-able manifests (e.g. `coq-jr/package.json`,
`civic-connect/indieweb2-bastion/package.json`) still flag — verified by
current STEP-3 batch (~13 PRs filed against repos NOT in the new
carve-out classes).

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

Co-authored-by: Claude Opus 4.7 (1M context) <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.

2 participants