You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
CI: seven checks red on main independent of PR content (tests.ipkg, assert_total, SPDX, 4 governance/scan) #230
Seven checks are red on every PR because of the state of main, not because of the PR's diff. They were measured on #228 (head abe7a34) and #229 (head bb82eeb). Four of them fail identically on main @ 8542e84.
Check
Cause observed
build (0.8.0)
proven.ipkg builds 305/305, then idris2 --build tests.ipkg fails: tests/properties/SafeMathProps.idr references undefined names (safeNegate, safeAbs, detectOverflow, getValue, …) and has unelaboratable types (prop_addCommutative, prop_addIdentity, …)
Aspect — Safety Invariants
its grep finds the existing assert_total uses in src/ (about 20)
Enforce Trustfile Policies
"5 files have an SPDX header that is neither MPL-2.0 (code) nor CC-BY-SA-4.0 (docs)"
tests.ipkg builds: fix SafeMathProps against the current Proven.SafeMath API, or remove the properties that test functions that no longer exist.
Each assert_total in src/ is replaced with structural or sizeAccessible recursion, or the Aspect check whitelists it with a written justification.
The 5 SPDX headers are corrected. Relicensing is an owner decision.
gitleaks, Workflow security linter, Trusted-base reduction policy and Hypatia Baseline are each triaged, then fixed or explicitly baselined.
A PR that does not touch these areas is green on all seven.
Note: CodeRabbit's coding agent pushed commit 4f8d7fa ("replace assert_total with total recursion…, correct SPDX headers…") to the deleted-then-recreated branch fix/remove-false-runtime-assumptions. It is unreviewed, but may be a starting point.
Triage (read-only, 2026-10-06; CI on #229 head bb82eeb, cross-checked against main @ ced0ca5)
Bottom line: 7 red checks, but only 3 underlying problems in this repo, plus 1 dead action pin and 1 bug in a shared standards script. No secret has leaked.
#
Check
Root cause
Real problem?
Fix
Effort
1
scan / gitleaks
3 hits, all test fixtures: src/Proven/SafeAPIKey/Proofs.idr:41,46 (sk_live_abc123de… / sk_test_abc123de…, placeholder Stripe keys used in detectFormat … = StripeKey proofs), and tests/unit/SafeJWTUnit.idr:37 (the public jwt.io example token, sub 1234567890)
No: false positives
Add the 3 fingerprints to .gitleaksignore
~5 min
2
governance / Workflow security linter
One dead pin: ocaml/setup-ocaml@4462cc269f8d… in .github/workflows/ocaml-ci.yml:99,154. The API returns "No commit found for SHA"; reproduced locally with standards/scripts/check-action-pins-resolve.sh (1 of 37). An unresolvable uses: means that job never runs.
Yes: OCaml CI is silently dead
Repin to v3 → 93303b622b2522e4411e295f9e77411a24912ac7 (resolved today), and update actions.lock if present
~10 min
3
Aspect — Safety Invariants
22 non-comment assert_total / assert_smaller / believe_me lines in 9 src/ files (SafeYAML/Parser ×6, SafeXML/Parser, SafeRegex/Matcher, SafeArgs/Parser, SafeTree, SafeTOML, and the SafeCORS, SafeJWT and SafeMath Proofs)
Yes: each one is an unchecked totality claim
Rewrite to structural or fuel/sizeAccessible recursion; 4f8d7fa (CodeRabbit agent, unreviewed) attempts this
1–2 days
4
governance / Trusted-base reduction policy
Same root as #3: 17 of 30 escape hatches are undocumented (SafeXML/Parser ×8, SafeYAML/Parser ×6, SafeRegex/Matcher ×3). The other 13 are covered by .trusted-base-ignore, or enumerated in docs/proof-debt.adoc
Yes (same)
Fixing #3 fixes this. The stopgap is a TRUSTED: comment plus a docs/proof-debt.adoc entry each, but the stopgap documents the debt rather than paying it
5 files carry SPDX-License-Identifier: Palimpsest-MPL-1.0 (SafeYAML/Parser, SafeSQL/Builder, SafeRegex/Parser, SafeRegex/Matcher, SafeXML/Parser); the rest of src/ moved to MPL-2.0 in 0eb9709 (2026-05-22)
Licence hygiene
Change the 5 headers to MPL-2.0
~5 min, but needs the owner's OK (relicensing)
6
build (0.8.0)
proven.ipkg builds 305/305. tests.ipkg then fails with 13 errors in tests/properties/SafeMathProps.idr: it calls safeAdd, safeSub, safeNegate, safeAbs, detectOverflow and getValue, which Proven.SafeMath no longer exports. bdb1863 (2026-05-11, "align Safe* surface with idaptik #8") renamed them to addChecked, subChecked, absSafe, … and the tests were not updated
Yes: no property test has run since May
Port SafeMathProps to the new names, then fix whatever the next module reveals
0.5–1 day (see horizon)
7
governance / Validate Hypatia Baseline
The tool crashes before it can judge: apply-baseline.sh: line 262: /usr/bin/jq: Argument list too long, exit 126. hyperpolymath/standardsscripts/apply-baseline.sh:187 passes the whole findings file via --argjson findings "$FINDINGS_JSON", which overflows the per-argument limit (MAX_ARG_STRLEN, 128 KiB) once there are 298 findings
Tool bug in standards, not here; the gate itself is untested
Upstream: --slurpfile / stdin instead of --argjson. Then this repo must face 298 findings (critical=133, high=34, medium=107) against a 30-entry .hypatia-baseline.json
upstream ~30 min; repo-side unknown until the crash is fixed
I did not see what the 133 "critical" Hypatia findings are. The scan's output never reached a readable report, because the baseline step crashed. That count is Hypatia's own label, unverified.
The assert_total count comes from git grep on main excluding --/||| comment lines, and matches the Aspect check's list. The Trusted-base count (30, of which 17 are undocumented) is the CI script's own figure.
Activity
hyperpolymath commentedon Oct 6, 2026
Triage (read-only, 2026-10-06; CI on #229 head bb82eeb, cross-checked against
main@ ced0ca5)Bottom line: 7 red checks, but only 3 underlying problems in this repo, plus 1 dead action pin and 1 bug in a shared standards script. No secret has leaked.
scan / gitleakssrc/Proven/SafeAPIKey/Proofs.idr:41,46(sk_live_abc123de…/sk_test_abc123de…, placeholder Stripe keys used indetectFormat … = StripeKeyproofs), andtests/unit/SafeJWTUnit.idr:37(the public jwt.io example token,sub 1234567890).gitleaksignoregovernance / Workflow security linterocaml/setup-ocaml@4462cc269f8d…in.github/workflows/ocaml-ci.yml:99,154. The API returns "No commit found for SHA"; reproduced locally withstandards/scripts/check-action-pins-resolve.sh(1 of 37). An unresolvableuses:means that job never runs.v3→93303b622b2522e4411e295f9e77411a24912ac7(resolved today), and updateactions.lockif presentAspect — Safety Invariantsassert_total/assert_smaller/believe_melines in 9src/files (SafeYAML/Parser ×6, SafeXML/Parser, SafeRegex/Matcher, SafeArgs/Parser, SafeTree, SafeTOML, and the SafeCORS, SafeJWT and SafeMathProofs)sizeAccessiblerecursion; 4f8d7fa (CodeRabbit agent, unreviewed) attempts thisgovernance / Trusted-base reduction policy.trusted-base-ignore, or enumerated indocs/proof-debt.adocTRUSTED:comment plus adocs/proof-debt.adocentry each, but the stopgap documents the debt rather than paying itEnforce Trustfile PoliciesSPDX-License-Identifier: Palimpsest-MPL-1.0(SafeYAML/Parser, SafeSQL/Builder, SafeRegex/Parser, SafeRegex/Matcher, SafeXML/Parser); the rest ofsrc/moved to MPL-2.0 in 0eb9709 (2026-05-22)MPL-2.0build (0.8.0)proven.ipkgbuilds 305/305.tests.ipkgthen fails with 13 errors intests/properties/SafeMathProps.idr: it callssafeAdd,safeSub,safeNegate,safeAbs,detectOverflowandgetValue, whichProven.SafeMathno longer exports. bdb1863 (2026-05-11, "align Safe* surface with idaptik #8") renamed them toaddChecked,subChecked,absSafe, … and the tests were not updatedgovernance / Validate Hypatia Baselineapply-baseline.sh: line 262: /usr/bin/jq: Argument list too long, exit 126.hyperpolymath/standardsscripts/apply-baseline.sh:187passes the whole findings file via--argjson findings "$FINDINGS_JSON", which overflows the per-argument limit (MAX_ARG_STRLEN, 128 KiB) once there are 298 findings--slurpfile/ stdin instead of--argjson. Then this repo must face 298 findings (critical=133, high=34, medium=107) against a 30-entry.hypatia-baseline.jsonSuggested order
proven.Horizon of this triage
tests.ipkgstops at its first failing module. The other 31 of its 32 modules are unobserved, so more breakage after SafeMathProps is likely; ci(antipattern): TS check reads .claude/CLAUDE.md exemption table #6's estimate assumes it.assert_totalcount comes fromgit greponmainexcluding--/|||comment lines, and matches the Aspect check's list. The Trusted-base count (30, of which 17 are undocumented) is the CI script's own figure.fix(SafeFiniteField): reject irreducibles not of degree n before redu…
chore(secrets): ignore three gitleaks test-fixture false positives (#231
docs: add AFFIRMATION.adoc anchored at 5360032 (#232)
docs: mark AFFIRMATION as agent-authored DRAFT, not owner-affirmed (#233