Repository navigation
Description
Why
The owner pays for external reviewers (Codex, Copilot, CodeRabbit), and their credit runs out. If Hypatia and its fleet did their job, those reviewers would be nearly redundant: the fleet means gitbot-fleet, cicd-squabbler, .git-private-farm, proven-cicd and proven-tests-and-benches. They are not redundant yet. This issue takes one thread of work and records three things for each defect: what found it, when, and which part of the fleet should have found it first. The goal is to turn each gap into a rule, a harness or a gate, not a review comment.
The thread covered these PRs:
- metadatastician/standards #1352, #1354, #1359 and #1401;
- hyperpolymath/hypatia RE001: accept a deed egress declaration; stop counting secrets.GITHUB_TOKEN (standards ADR-009) #964, RE001: read workflows as YAML does (quoted keys, aliases, with: inputs) #975 and Hypatia.Kyaml: a port of kyq's KYAML reader, held to kyq in CI (#971, part 1) #1008;
- hyperpolymath/rsr-template-repo fix(ci): adopt canonical hypatia-scan.yml #259;
- hyperpolymath/choreographic-types chore(deps): bump actions/cache from 5.0.2 to 5.0.3 #37 and chore(deps): bump erlef/setup-beam from 1.17.5 to 1.20.4 #39.
Ledger
| # | Defect | Found by | When | Should have been found by | Gap class |
|---|---|---|---|---|---|
| 1 | kyq_dump.mjs imported join(".kyq", …), so bun read the path as a package name and the new kyaml-conformance job failed |
Codex P1 and CI (#1008) | after push | a local pre-push run of every new or changed workflow job | new CI job never executed before push |
| 2 | Raw C0 control characters were accepted in plain and block KYAML scalars, though refused in quoted ones. The same gap is in upstream kyq. | Codex P2 (#1008) | after push | a property/mutation harness over the parser: proven-tests-and-benches by remit | differential against a reference that shares the bug |
| 3 | String.to_atom built from tag text (bounded, but flagged) |
Hypatia's own code_safety/elixir_atom_from_user |
after push | the same rule, before push | fleet rule exists, runs only in CI |
| 4 | Line-based workflow reading misread YAML merge keys, aliases and multi-line scalars (3 post-merge threads on #975) | Codex | after merge | a rule against ad-hoc parsing of a structured format when a canonical parser exists (#971) | structure parsed with regexes |
| 5 | deed_lint.js refused #t; note, which the grammar allows |
the new apg-js grammar-vs-gate differential (standards#1401) | before merge | that differential, which is now in CI | closed by adding the harness |
| 6 | kyq refused a leading BOM, misread a comment after a block-scalar header, counted columns in UTF-16 units, and refused a trailing comma that KEP-5295 allows | porting kyq to Elixir and diffing the two | before merge | conformance differential plus mutation corpus | closed for the port; kyq still needs the patch |
| 7 | Copilot produced no review on choreographic-types#39 ("insufficient remaining quota") | n/a | n/a | n/a | paid reviewer silently absent |
| 8 | E2E — Elixir Scanner Pipeline, Integration Tests and governance / Allowlist Preflight (clusterfuzzlite GAP) are red on hypatia main, so every PR inherits them (seen on #1004 and #1008) |
CI | every PR | the fleet keeping main green (#990, #683) |
red base taxes every PR |
A defect found while writing this
The description of code_safety/elixir_atom_from_user (lib/rules/code_safety.ex:494) is backwards. It reads "String.to_existing_atom with user input exhausts atom table -- use to_existing_atom", but the pattern matches String.to_atom(. That message is what every alert shows, including code-scanning alert 1512 on #1008. It will be fixed in the next Hypatia PR from this thread.
Proposed conversions, rated
Ranked most elegant and correct first, then most dependable.
- Local CI parity: one
just ci-changedrecipe. It runs exactly the workflow jobs a diff touches (gap 1), plus the Hypatia scan on the diff (gap 3), before push. The fleet already owns the rules, so this only moves when they run. Elegance: high. Dependability: high. Cost: a recipe and job-selection logic. - Grammar-driven differentials as a standard harness shape. Bump peter-evans/repository-dispatch from 3.0.0 to 4.0.1 #5 and Bump actions/checkout from 4.1.1 to 6.0.1 #6 were found by diffing an implementation against an independent reference, and Claude/review scm security t3e cl #2 escaped because both sides shared the bug. The harness should therefore also mutate toward spec classes (YAML 1.2 §5 character productions), not only toward the reference's behaviour. This is the natural remit of proven-tests-and-benches. Elegance: highest; it generalises to every format we parse (deed, k9, KYAML, I-JSON). Dependability: high, and deterministic by seed.
- A rule against parsing a structured format with regexes or line scans where an estate parser exists (
Hypatia.Kyaml,Hypatia.Deed). This is the class behind Bump webfactory/ssh-agent from 0.9.0 to 0.9.1 #4 and the whole of design: one parsed workflow model for every workflow rule #971. Elegance: medium, since it is heuristic. Dependability: medium. - Treat a paid reviewer's quota failure as "no review", visibly. Surface it in the fork-governance verdict grid, not as an approving silence. Dependability: high. This one is outside the repo: standards fork-governance.
Beyond this repo
- metadatastician/kyq: the patch for Claude/review scm security t3e cl #2 and Bump actions/checkout from 4.1.1 to 6.0.1 #6 exists locally (5 commits on
fix/bom-and-block-scalar-comment; 328 pass). Pushing it was not possible from the session that found it. It needs to land upstream, and thenKYQ_REFinci.ymlmoves andKNOWN_DIVERGENCES.adocshrinks. - gitbot-fleet / proven-tests-and-benches / cicd-squabbler: I could not read these repositories from this session. The mapping above is by their stated remit and should be checked against what they actually run today.
Activity
coderabbitai commentedon Nov 4, 2026
🔗 Related PRs
#1002 - fix(learning): qualify trust-graph evidence and expose incomplete scans [closed]
#964 - RE001: accept a deed egress declaration; stop counting secrets.GITHUB_TOKEN (standards ADR-009) [merged]
#992 - fix(ci): pin standards governance integration to immutable tested revision [merged]
📝 Issue Planner
Check the box below or use the
@coderabbitai plancommand to generate an implementation plan and prompts that you can use with your favorite coding assistant.🧪 Issue enrichment is currently in open beta.
You can configure auto-planning by selecting labels in the issue_enrichment configuration.
To disable automatic issue enrichment, add the following to your
.coderabbit.yaml:💬 Have feedback or questions? Drop into our discord!