Skip to content

v0.11 item 5: coverage, and where the answer actually comes from - #35

Merged
arpanghoshal merged 2 commits into
mainfrom
v0.11/5-enforcement-coverage
Sep 14, 2026
Merged

arpanghoshal merged 2 commits into
mainfrom
v0.11/5-enforcement-coverage

Conversation

@arpanghoshal

Copy link
Copy Markdown
Member

Pairs with CTRLRun/ctrlrun#204, on a branch of the same name. v0.11 item 5: enforcement coverage.

Stacks on item 3's docs branch (#34).

A correction the build earned

ROADMAP.md's v0.11 line said enforcement coverage comes "from events already written". It does not, and the difference decides the design. ACTION_PROPOSED carries an action_hash and nothing that maps it back to a name, so the answer comes from receipts, which every action that reached a decision leaves.

The line now says so, and says the consequence: a receipt is written for a denial too, which is why an action that is always denied counts as exercised rather than as a gap. Reporting it as never exercised would tell an operator to delete the deny rule that is working.

CLAIMS.md

The ctrlrun scan row claimed "has no score, no percentage and no badge". --coverage opens a store, which the same row also claims scan never does, so both halves of that sentence needed saying properly: the static half still opens nothing, and the runtime half opens a store and still computes no number. The row names the two tests that pin it, T560 and T563.

OWASP-SOLUTIONS-LANDSCAPE.md

Two rows gain the runtime half. The SAST/DAST row is the one worth reading, because it is the one a reader could mistake for a coverage percentage: it now says plainly that neither half produces a number, and that a policy entry nothing exercised may be correctly unused.

Generated

docs/reference/cli.mdx picks up --coverage from the command's own help text. Every generator re-run against the item 5 kernel branch in an environment built the way docs CI builds one; repoint-claims.py re-pointed 0. Readiness: 6,201 tests. The kernel worktree came back clean.

Checks

./scripts/check.sh: 1727 passed.

🤖 Generated with Claude Code

postgres.md has said since v0.6 that this library has no retention policy, in the
same breath as the reason one is hard. That is the claim item 3 pays.

The retention page states two things the ROADMAP line did not: the ledger rule is
settlement and then a window rather than 'un-released', and the window is supplied
on the command line rather than derived, because a store that resolved a grant's
budgets would be reading the policy.

Signed-off-by: arpan <contact@arpanghoshal.com>
ROADMAP's v0.11 line said 'from events already written', and the action name is
NOT on the event: ACTION_PROPOSED carries an action_hash and nothing that maps it
back. The answer comes from receipts, which every decided action leaves, a denial
included, which is why an action that is always denied counts as exercised.

CLAIMS.md's scan row said 'no score, no percentage and no badge'. --coverage opens
a store and still computes none, and the row now says so with the tests that pin
it.

Signed-off-by: arpan <contact@arpanghoshal.com>
@mintlify

mintlify Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
ctrlrun 🟢 Ready View Preview Sep 14, 2026, 5:07 PM

💡 Tip: Enable Automations to automatically generate PRs for you.

@coderabbitai

coderabbitai Bot commented Sep 14, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 54 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 048319c8-deee-4190-ad07-0bdf03299ce7

📥 Commits

Reviewing files that changed from the base of the PR and between d47100f and d4fe658.

⛔ Files ignored due to path filters (4)
  • generated/readiness.full.mdx is excluded by !**/generated/**
  • generated/readiness.json is excluded by !**/generated/**
  • generated/readiness.mdx is excluded by !**/generated/**
  • generated/readiness.readme.md is excluded by !**/generated/**
📒 Files selected for processing (23)
  • SEO.md
  • docs.json
  • docs.mdx
  • docs/CLAIMS.md
  • docs/OWASP-AGENTIC-TOP10.md
  • docs/OWASP-SOLUTIONS-LANDSCAPE.md
  • docs/ROADMAP.md
  • docs/cookbook/verify-in-github-actions.mdx
  • docs/guides/verify-in-ci.mdx
  • docs/postgres.md
  • docs/production/index.mdx
  • docs/production/retention.mdx
  • docs/reference/api/DelegationRecord.mdx
  • docs/reference/api/InMemoryStateStore.mdx
  • docs/reference/api/SQLiteStateStore.mdx
  • docs/reference/api/StateStore.mdx
  • docs/reference/api/postgres-PostgresStateStore.mdx
  • docs/reference/api/state-Charge.mdx
  • docs/reference/api/state-Consumption.mdx
  • docs/reference/api/state-check_charges.mdx
  • docs/reference/cli.mdx
  • docs/verify.md
  • tests/test_docs_production.py

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@arpanghoshal
arpanghoshal merged commit 9b9d460 into main Sep 14, 2026
3 checks passed
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.

1 participant