Repository navigation
docs: Proven/Witnessed/Trusted ladder; correct believe_me and annotation claims - #344
Merged
Merged
Conversation
…aims
- README.adoc (+ regenerated README.md): new "What is proven" section with
a three-column Proven / Witnessed / Trusted ladder. It states that the
proofs are about the Idris model, which is typechecked but not linked
into the running server; that 13 of 17 bound libbozsafety symbols have
no implementation; and that the core does not typecheck today (duplicate
allTake in SafetyLemmas.idr; the CI typecheck has not completed since at
least 2026-09-21). Features/Security bullets no longer call it a
"coordination ABI", and the PROOF-NEEDS link now points at the .adoc.
- site/index.html: the "Verified" card becomes a compact ladder that links
to the README section.
- About 20 docs and the Justfile comments said "zero believe_me" or "5
axioms". The enforced budget is 4 sanctioned axioms in SafetyLemmas.idr
(scripts/check-trusted-base.sh, EXPECTED_AXIOMS=4). Rules for cartridge
authors ("your ABI must have zero believe_me") are unchanged.
- PROOF-NEEDS.adoc: count history is 5 -> 4 (2026-06-24); fixed the broken
docs/proof-debt.md links.
- mcp-bridge/lib/tools.js: boj_browser_read_page and boj_browser_screenshot
are now readOnlyHint:false, a conservative label until effect-typed
manifests (PROOF-NEEDS Obligation C) land. boj_github_graphql (accepts mutations) and
boj_cartridge_invoke (reaches any cartridge) are now destructiveHint:true.
No A2ML files touched.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ge6k9wanwVdYJWBrnwjPxf
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ge6k9wanwVdYJWBrnwjPxf
Contributor
|
Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configuration
📒 Files selected for processing (21)
✨ Finishing Touches📝 Generate docstrings
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
🏁 path-claims benchCommit NumbersHost-dependent — compare deltas across commits, not absolute values. |
🔍 Hypatia Security ScanFindings: 114 issues detected
View findings[
{
"reason": "Job `sonarqube` in build.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
"type": "missing_timeout_minutes",
"file": ".github/workflows/build.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium",
"recipe_id": "recipe-add-workflow-timeout-minutes",
"job": "sonarqube"
},
{
"reason": "Job `triage` in label-triage.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
"type": "missing_timeout_minutes",
"file": ".github/workflows/label-triage.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium",
"recipe_id": "recipe-add-workflow-timeout-minutes",
"job": "triage"
},
{
"reason": "Job `sync` in labels.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
"type": "missing_timeout_minutes",
"file": ".github/workflows/labels.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium",
"recipe_id": "recipe-add-workflow-timeout-minutes",
"job": "sync"
},
{
"reason": "Job `deploy` in pages-deploy.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
"type": "missing_timeout_minutes",
"file": ".github/workflows/pages-deploy.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium",
"recipe_id": "recipe-add-workflow-timeout-minutes",
"job": "deploy"
},
{
"reason": "Step uses `peter-evans/repository-dispatch` with `token: ${{ secrets.FARM_DISPATCH_TOKEN }}` but has no `if: secrets.FARM_DISPATCH_TOKEN != ''` gate. On repos where the secret hasn't been propagated the action fails on every push, red-maining the repo. Add the step-level gate (or env+if pattern) so the missing-secret path is a clean skip instead of a red.",
"type": "secret_action_without_presence_gate",
"file": ".github/workflows/instant-sync.yml",
"action": "peter-evans/repository-dispatch",
"rule_module": "workflow_audit",
"severity": "high",
"fix_recipe": "add_secret_presence_gate"
},
{
"reason": "codeql.yml does not list `language: actions` in its matrix, but the repo has workflow files. CodeQL's `actions` language scans workflow YAML for injection and other CI/CD-specific weaknesses — every repo with workflows benefits. Add an entry to `matrix.include` with `language: actions` + `build-mode: none`.",
"type": "codeql_missing_actions_language",
"file": ".github/workflows/codeql.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium",
"fix_recipe": "add_codeql_actions_language"
},
{
"line": 39,
"reason": "job in .github/workflows/labels.yml references `secrets.*` but does not install `step-security/harden-runner` — review outbound-egress monitoring",
"type": "RE001",
"file": ".github/workflows/labels.yml",
"action": "report",
"rule_module": "research_extensions",
"severity": "medium"
},
{
"line": 46,
"reason": "job in .github/workflows/push-email-notify.yml references `secrets.*` but does not install `step-security/harden-runner` — review outbound-egress monitoring",
"type": "RE001",
"file": ".github/workflows/push-email-notify.yml",
"action": "report",
"rule_module": "research_extensions",
"severity": "medium"
},
{
"line": 32,
"reason": "job in .github/workflows/build.yml references `secrets.*` but does not install `step-security/harden-runner` — review outbound-egress monitoring",
"type": "RE001",
"file": ".github/workflows/build.yml",
"action": "report",
"rule_module": "research_extensions",
"severity": "medium"
},
{
"line": 44,
"reason": "job in .github/workflows/container-publish.yml references `secrets.*` but does not install `step-security/harden-runner` — review outbound-egress monitoring",
"type": "RE001",
"file": ".github/workflows/container-publish.yml",
"action": "report",
"rule_module": "research_extensions",
"severity": "medium"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
8 of 14 tasks
hyperpolymath
added a commit
that referenced
this pull request
Oct 7, 2026
… run on every PR) (#350) ## Summary Restores the Idris2 proof gate. Closes #343. - The core ABI did not typecheck, because `SafetyLemmas.idr` defined `allTake` twice. - `proofs.yml` asked asdf to install Idris2 version `""`. - The `changes` path-skip let the gate report green without checking anything. ## 📌 New pins Head SHA: **ec79cd6d98194a56af1f1692db56ad45da3a6c76**. No action, lockfile or container pins are added or changed. The Idris2 version is now *read* from the existing `.mise.toml` pin (`idris2 = "0.8.0"`); that pin itself is unchanged. ## Changes - `src/abi/Boj/SafetyLemmas.idr`: delete the second `allTake` (formerly ~L235–243). The first, at :146, is kept and is equivalent. - `.github/workflows/proofs.yml`: - Read the Idris2 pin from `.mise.toml`. `.tool-versions` was converted to `.mise.toml` in 4d1fe0c. A missing or malformed pin now fails the step with an `::error` annotation instead of continuing. - Remove the `changes` job and the `needs`/`if` path-skip on `trusted-base` and `typecheck`. Proofs Gate is not a required check (the effective rules require only `scan / gitleaks`), so always running it blocks no PR. - Header comments updated to match. - `README.adoc`, `README.md`, `site/index.html`: drop the "core does not currently typecheck" caveat (added in #344) and the stale "job is path-filtered" note. `README.md` was edited by hand to mirror `README.adoc`; README Derive's freshness check verifies it. ## RSR Quality Checklist ### Required - [x] Tests pass: locally, `idris2 --typecheck boj.ipkg` in `src/abi` builds 17/17 modules with rc 0 (local Idris2 is 0.7.0; CI uses the 0.8.0 pin, and this PR's own Proofs Gate run is the evidence for that). `bash scripts/check-trusted-base.sh` reports OK: 4 sanctioned axioms. - [ ] Code is formatted: no formatter is configured for Idris2 or workflow YAML here. The YAML parses (`js-yaml`). - [ ] Linter is clean: no local linter applies. CI scanners report on this PR. - [x] No banned language patterns: no new code beyond a deletion in Idris2 and shell inside a workflow step. - [x] No `unsafe` blocks: there is no Rust or Zig in this change. - [x] No banned functions: the change only deletes a duplicate lemma. The axiom count is unchanged at 4 (trusted-base audit). - [x] SPDX headers: the modified files keep theirs. No new files. - [x] No secrets. ### As Applicable - [ ] `.machine_readable/*`: not updated, and A2ML is retired estate-wide. - [x] Documentation updated: README.adoc, README.md and site/index.html. - [ ] `TOPOLOGY.md`: architecture is unchanged. - [ ] CHANGELOG: CI and proof-hygiene fix, not user-facing. - [ ] New dependencies: none. - [x] ABI changes validated: the `src/abi/` package typechecks. `ffi/zig/` is untouched; the deleted definition was a duplicate. ## Testing - `cd src/abi && idris2 --typecheck boj.ipkg`: 17/17 modules, rc 0. - `bash scripts/check-trusted-base.sh`: "OK: no undocumented unsound constructs; 4 sanctioned class-(J) axioms". - Pin step, run on its own: on this tree it prints `idris2=0.8.0`, rc 0. On a `.mise.toml` without an idris2 line it emits `::error` with rc 1. - This PR's Proofs Gate run must show "Idris2 type-check (core + all cartridge ABIs)" **executing** under 0.8.0, not skipped. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_019j8She9eTFx54r6aL6sCHP Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a Proven / Witnessed / Trusted ladder to the README and site, and corrects safety claims that the code does not back: "zero believe_me" (the enforced budget is 4 sanctioned axioms), "formally verified coordination ABI", and four tool annotations. The ladder also says plainly that the Idris core does not typecheck today, because of a duplicate
allTakeand a CI job that never reaches Idris. That is tracked in #343, which this PR does not fix.Type of change
mcp-bridge/lib/tools.js📌 New pins
Head SHA: e747484. No action, lockfile, container or
actions.lockpins are added or changed.Changes
.adoc..claude/CLAUDE.md: "zero believe_me" and "5 axioms" become 4 sanctioned axioms inSafetyLemmas.idr. Rules for cartridge authors ("your ABI must have zero believe_me") are unchanged.docs/proof-debt.mdlinks are fixed, and a new "Model-to-code obligations" section covers restoring the proof gate, the 13 unimplementedlibbozsafetybindings, and effect-typed manifests.charEqSymis marked as discharged.boj_browser_read_pageandboj_browser_screenshotare nowreadOnlyHint:false, a conservative label until effect-typed manifests land;boj_github_graphql(accepts mutations) andboj_cartridge_invoke(reaches any cartridge) are nowdestructiveHint:true.RSR Quality Checklist
Required
bun test mcp-bridge/tests/reported 52 pass, 0 fail.unsafeblocks without// SAFETY:comments: none touched.believe_medocuments the existing 4 axioms.bash scripts/check-trusted-base.shreported "OK … 4 sanctioned class-(J) axioms"..envfiles included.As Applicable
.machine_readable/*.a2ml: deliberately not touched.0-AI-MANIFEST.a2mlandMETA.a2mlalso say "zero believe_me" and are left for the owner's decision.TOPOLOGY.md: not applicable, no architecture change..idrcomment only).Testing
bun test mcp-bridge/tests/reported 52 pass, 0 fail.README.mdonmainbyte-for-byte after normalisation. Then the regenerated file was committed.readme-vocab-gate.sh(standards@84355587) reported 98.7% at a 98% floor; the base was 98.4%.bash scripts/check-trusted-base.shreported OK with 4 axioms.cd src/abi && idris2 --typecheck boj.ipkgfails, and fails the same way onmain:allTake is already defined. The.idrchange is a comment. See Proof gate: core fails to typecheck (duplicate allTake) and CI typecheck job never runs Idris #343.Red check deferral
Idris2 type-check (core + all cartridge ABIs)is expected to be red: this PR touchessrc/abi/andverification/, which triggers the job, and the job fails onmaintoo (empty asdf version, duplicateallTake). It is not a required check. Deferred to Proof gate: core fails to typecheck (duplicate allTake) and CI typecheck job never runs Idris #343.governance / Workflow security linteris red onmaintoo (duplicatewithinabi-drift.yml); not required. Deferred to Three pre-existing red non-required checks on main: Allowlist Preflight (empty GH_TOKEN), Workflow security linter (duplicatewithin abi-drift.yml), SonarQube (403) #338.🤖 Generated with Claude Code
https://claude.ai/code/session_01Ge6k9wanwVdYJWBrnwjPxf