Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
114d015
fix(actions-lock): accept lockfile v0.0.3, which shares the v0.0.2 gr…
claude Oct 19, 2026
e68277c
ci: repin standards callers to 75bd599, whose own lock GitHub accepts
claude Oct 19, 2026
dd11703
fix(ci): key the Idris 2 cache on the Chez Scheme version
claude Oct 19, 2026
366009f
test(fixtures): give the Bitbucket mock v8 placeholder UUIDs
claude Oct 19, 2026
abbe382
ci(gitleaks): ignore five historical false positives by exact fingerp…
claude Oct 19, 2026
b4b7bfd
Merge #928 (accept actions.lock v0.0.3) so this PR's E2E/Integration …
claude Oct 19, 2026
6162439
ci: pass reusable workflows only the secrets they declare
claude Oct 19, 2026
c19c465
build(cargo): keep standards' staged js-runtimes crate out of the wor…
claude Oct 19, 2026
a50c0e5
fix(actions-lock): name v0.0.3's GHE.com hostname field instead of a …
claude Oct 19, 2026
7fa44cb
Merge #928's hostname handling (a50c0e5) so this PR keeps the same ac…
claude Oct 19, 2026
d6aea2d
feat(rules): detect the three workflow-pin defect classes behind the …
claude Oct 19, 2026
69101cf
Merge hypatia#929 (repin standards callers to 75bd599) into this bran…
claude Oct 19, 2026
431e2a7
Merge hypatia#930 (Idris 2 cache keyed on the Chez version) into this…
claude Oct 19, 2026
6fbc7b7
Merge branch 'main' into claude/rust-ci-codeac-improvements-395dus
hyperpolymath Oct 19, 2026
863cf0b
Merge remote-tracking branch 'origin/claude/rust-ci-codeac-improvemen…
claude Oct 19, 2026
59fdd36
rules(WF026/WF027): inspect the whole step, with:-scoped, non-blockin…
claude Oct 19, 2026
73f8c38
test(WF026/WF027): cover with: above uses:, flow with:, env.toolchain…
claude Oct 19, 2026
bdadab0
test(PA001): a quoted uses: key and value still reach the denylist
claude Oct 19, 2026
eba2eb2
rules(WF026): step-key scoping, quoted uses: keys, bare-dash openers
claude Oct 19, 2026
ad8560e
rules(PI001, WF026): a quoted "uses" key reaches the denylist; only d…
claude Oct 19, 2026
1e8a817
rules(WF026): a step is a list item under steps:; a flow with: is rea…
claude Oct 19, 2026
5365212
rules(WF027, CLI, sweep): job-level calls only; keep repair metadata;…
claude Oct 19, 2026
f5a0e27
rules(WF026): a flow with: closes when its brace depth returns to zero
claude Oct 19, 2026
7a95c15
rules(WF026): KYAML and flow-style steps, anchors and aliases; sweep:…
hyperpolymath Oct 19, 2026
e681d1f
rules(WF026): a toolchain: key with no value (null, ~) is no input
hyperpolymath Oct 19, 2026
0c1610b
rules(WF026): a SHA pin ends at a value boundary
hyperpolymath Oct 19, 2026
74c7277
fix(security): harden shell paths and refresh Rust dependencies
coderabbitai[bot] Oct 19, 2026
62a4a8c
fix(rules): WF026 judges every inline step, YAML null spellings and e…
claude Oct 19, 2026
6e895b1
test(rules): WF027 reads a KYAML caller as written
claude Oct 19, 2026
2a7a351
fix(rules,sweeps): case-fold SHA refs, quote-aware flow-job detection…
claude Oct 19, 2026
caab1df
fix(sweeps,rules): judge pins per action/ref site, case-insensitively…
claude Oct 19, 2026
cf08662
fix(rules,sweeps): every uses: site per line, structural sites only, …
claude Oct 19, 2026
1b98ef2
fix(rules,sweeps): structural pin sites only, deltas on every line, c…
claude Oct 19, 2026
b96072a
Resolve merge conflicts in 10 file(s)
coderabbitai[bot] Oct 20, 2026
3788540
fix(pins): tighten diff checks, ignore heredocs and flag partial sweeps
coderabbitai[bot] Oct 20, 2026
20c8657
fix(pins): one site reader for PI001 and PA00x, 1:1 pairing, hunk cer…
claude Oct 20, 2026
7aa7d27
fix(pins): excise only a mergeable remainder, pin-only needs the same…
claude Oct 20, 2026
82b6ec5
fix(rules): WF026/WF027 advisory severity; a uses: inside a multi-lin…
claude Oct 20, 2026
ec7f2c0
fix(pins): advisory CLI channel for WF026/WF027; scalar state carried…
claude Oct 20, 2026
22cdff0
fix(pins): diff hunks read through the file's scalar reader; JSON-sty…
claude Oct 20, 2026
a239f53
fix(pins): a quote after an anchor or tag, or after a JSON-style colo…
claude Oct 20, 2026
a023459
fix(rules): WF026/WF027 carry flow depth across lines; merge sequence…
claude Oct 20, 2026
6e2e1fa
fix(pins): continued uses: and toolchain values, merge precedence, an…
claude Oct 20, 2026
7bce409
fix(pins): lock entries per action and ref, hex-case agreement, conti…
claude Oct 20, 2026
c88153a
fix(pins): uses: values with an anchor or tag are pins; the sweep see…
claude Oct 20, 2026
9660f0d
fix(pins): continued uses: values inside flow mappings; detached flow…
claude Oct 20, 2026
e613589
fix(pins): aliased uses: resolved to the anchor's site; continued pin…
claude Oct 20, 2026
d2a99d8
fix(pins): flow ancestry across quoted lines; node properties before …
claude Oct 20, 2026
d2a3e73
fix(pins): aliased sites judged by their brackets; steps sequences ne…
claude Oct 20, 2026
3b78d55
fix(pins): block uses: keys judged by their ancestry; WF026 reads val…
claude Oct 20, 2026
a6180b1
fix(pins): whole steps and jobs given as aliases; anchors after JSON …
claude Oct 20, 2026
c579fef
fix(pins): claims stay with their own action and agree with any resol…
claude Oct 20, 2026
215a820
fix(pins): root data keys hold data; uses: block scalars resolve to t…
claude Oct 20, 2026
407b186
fix(pins): read KYAML as GitHub does — double-quoted values decoded, …
claude Oct 20, 2026
f710d5b
Merge main into claude/rust-ci-codeac-improvements-395dus
claude Oct 20, 2026
00962fe
Merge branch 'main' into claude/rust-ci-codeac-improvements-395dus
hyperpolymath Oct 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Hypatia is the neurosymbolic CI/CD intelligence layer for the hyperpolymath ecos
## Architecture

```
Hypatia # 141 Elixir modules total (`shopt -s globstar; ls lib/**/*.ex | wc -l`)
Hypatia # 142 Elixir modules total (`shopt -s globstar; ls lib/**/*.ex | wc -l`)
├── Elixir pipeline # core: pattern analysis, dispatch, learning
├── Merge orchestration # 12 modules — leases, ledger, ticker (largest subsystem)
├── Kin subsystem # 6 modules — contingency, arbiter, gate, watchdog
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/hypatia-scan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,6 @@ jobs:
# Scanner pin: see governance.yml. Drop once `uses:` is re-pinned.
with:
hypatia-ref: aa34a4cc6ba39d873710ff39763fdb9cde715f9d
# Only the one secret the callee declares (standards#1108 §6b).
secrets:
HYPATIA_SCAN_PAT: ${{ secrets.HYPATIA_SCAN_PAT }}
1 change: 1 addition & 0 deletions .github/workflows/mirror.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ permissions:
jobs:
mirror:
uses: hyperpolymath/standards/.github/workflows/mirror-reusable.yml@333b06a01db1874ffedb2de1bfabb195640927c7
# Only the seven forge keys the callee declares (standards#1108 §6b).
secrets:
GITLAB_SSH_KEY: ${{ secrets.GITLAB_SSH_KEY }}
BITBUCKET_SSH_KEY: ${{ secrets.BITBUCKET_SSH_KEY }}
Expand Down
20 changes: 16 additions & 4 deletions .gitleaksignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,21 @@
# SPDX-License-Identifier: MPL-2.0
# Historical false positives, scoped to these exact commit/path/rule/line findings.
# Prometheus recording-rule identifier for API latency, not a credential.
269dac03d57835a1dfe3fb336095ffac61567ccf:deploy/terraform/modules/monitoring/main.tf:generic-api-key:421
# Kubernetes template values all decode to the literal CHANGE_ME_IN_PRODUCTION.
#
# Exact historical fingerprints only (commit:file:rule:line). The full-history
# gitleaks pass in hyperpolymath/standards secret-scanner-reusable.yml scans
# every commit; these five matches sit in two files that f2fe2df removed from
# the tree. Each entry names what the matched value is. None of them suppresses
# a rule in any new commit or location.
#
# deploy/k8s/secrets.yaml at 0d310fa is a Secret TEMPLATE. Each of the four
# values is base64 of the placeholder CHANGE_ME_IN_PRODUCTION, as the comment
# above each line says. Checked 2026-10-19 by comparing every value against
# the encoded placeholder.
0d310faa0d74da36faa8f5cfb5b6786ebe912c1b:deploy/k8s/secrets.yaml:generic-api-key:38
0d310faa0d74da36faa8f5cfb5b6786ebe912c1b:deploy/k8s/secrets.yaml:generic-api-key:40
0d310faa0d74da36faa8f5cfb5b6786ebe912c1b:deploy/k8s/secrets.yaml:generic-api-key:44
0d310faa0d74da36faa8f5cfb5b6786ebe912c1b:deploy/k8s/secrets.yaml:generic-api-key:50
#
# deploy/terraform/modules/monitoring/main.tf at 269dac0, line 421, is a
# Prometheus recording-rule name (record = "cicd_hyper_a:api:<name>"). It is
# a metric identifier, not a credential.
269dac03d57835a1dfe3fb336095ffac61567ccf:deploy/terraform/modules/monitoring/main.tf:generic-api-key:421
17 changes: 17 additions & 0 deletions .machine_readable/descriptiles/AGENTIC.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,23 @@ require-rerun-after-fix = true
release-claim-requires-hard-pass = true
completion-claim-requires-behavioural-tests = true

[workflow-pin-detection]
# Hypatia's half of the pin-propagation architecture
# hypatia (this: detection) -> gitbot-fleet (actuation) -> .git-private-farm (propagation)
# Every rule here has a fleet fix script that carries the SAME facts, so a
# detection without a repair, or a repair without a detection, is a drift:
# WF026 workflow_audit.ex SHA-pinned dtolnay/rust-toolchain with no toolchain: input -> fleet fix-rust-toolchain-input.sh
# (detected in block YAML and KYAML/flow style alike, Y-3; repaired in block style only —
# a KYAML, flow-step, anchored or aliased finding carries auto_fixable: false and routes to review)
# WF027 workflow_audit.ex caller pinned at a reusable revision MEASURED dead (table) -> fleet fix-stale-reusable-pin.sh (Window A)
# PIN-003 pr-automerge-policy.json standards revisions whose own actions.lock GitHub
# rejects at job setup (545 commits, 2026-08-19..2026-10-19; PI001/PA001 fire) -> fleet fix-stale-reusable-pin.sh (Window B)
# known_reusables (sha_bump_propagation.ex) now include hyperpolymath/cicd-suite's gates
may-extend-dead-revision-tables = true # only from a MEASURED walk (file content or lock record checked per commit), never from dates
may-name-a-replacement-revision = false # a human chooses it against standards/scripts/lock-selfcheck.sh; agents carry the choice into the table
must-mirror-fleet-tables = true # WF027's list == fleet stale-reusable-pins.tsv Window A; PIN-003 == Window B; regenerate together
must-not-promote-to-blocking = true # these rules report and route to the fleet; a gate that blocks on them is an owner decision

[automation-hooks]
on-enter = [
"Read 0-AI-MANIFEST.a2ml or AI.a2ml first",
Expand Down
Loading
Loading