Skip to content

census: count a declared negative control as a control, not an axiom - #88

Merged
hyperpolymath merged 2 commits into
mainfrom
marina/trusting-hopper-sz1eiz
Nov 13, 2026
Merged

hyperpolymath merged 2 commits into
mainfrom
marina/trusting-hopper-sz1eiz

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

The census counted every textual postulate as an axiom. That included files that a home repository keeps as negative controls, which its own gate must reject. Because of this, CompositionalDA.jl, ExactCounts.jl and ExactTests.jl each showed 1 axiom that is not in their trusted base. This came up during work on JoshuaJewell/MetaManifold-WebUI#23 (CompositionalDA.jl).

Changes

  • scripts/census/proof-holes.sh: a file whose own header has a line comment EXPECT: <pattern> is a declared negative control. Its findings are emitted as class control. They are still listed, but they are not counted as hole, axiom, unsafe or policy, and they do not affect --fail-on. The rule uses the declaration that the home repository makes in the file, not a hard-coded reject/ path.
  • tests/census/proof_holes_control_test.sh: new test. A control is classed control. A real postulate, and a file that only mentions EXPECT: in prose, still count as axioms.
  • scripts/census/summarise.sh: small doc change.
  • Rows regenerated with update-rows.sh and census-atlas.mjs build (not edited by hand):
    • CompositionalDA.jl: axioms 1 to 0. The commit moves to 93fbfaf, from the fresh clone.
    • ExactCounts.jl: axioms 1 to 0, policy 6 to 0. Same commit.
    • ExactTests.jl: axioms 1 to 0, policy 1 to 0. Same commit.
    • JuliaPackageSpitter.jl keeps axioms 1. Its tests/trusted-base-fixtures/RealPostulate.agda has no EXPECT: line. I did not inspect it further.

Evidence for CompositionalDA.jl: proofs/agda/reject/Postulate.agda:18 is its only real postulate, and line 11 declares -- EXPECT: [Pp]ostulate. proofs/tests/axiom-audit.sh:14 excludes proofs/agda/reject/ on purpose. Prelude.agda:17 and LogHom.agda:6 mention the word only in comments.

RSR Quality Checklist

Required

  • Tests pass: all tests/census/*.sh, catalogue-check (diff clean), census-atlas.mjs check, atlas tests, theory-ledger verify, cohort.mjs check, applied tests
  • Code is formatted: not run (just is not installed in the sandbox)
  • Linter is clean: not run
  • No banned language patterns
  • No unsafe blocks
  • No banned functions
  • SPDX license headers present on all new/modified source files
  • No secrets, credentials, or .env files included

Testing

Not run here, with the reason for each:

  • just check: just is not installed.
  • check-proofs: needs guix, agda, coqc and lean.
  • claims-registry check: needs MATHESIS_STANDARDS.
  • site-check: needs asciidoctor.

One test in tests/registry/ fails because MATHESIS_STANDARDS is not set. It fails the same way on a clean main. CI must confirm the gates that did not run here.


Generated by Claude Code

proof-holes.sh counted the postulate in CompositionalDA.jl
proofs/agda/reject/Postulate.agda as an axiom (and the controls' missing
--safe as policy). That file is a negative control: its header carries
'-- EXPECT: [Pp]ostulate', the home gate's statement that the checker must
reject it, and proofs/tests/axiom-audit.sh excludes proofs/agda/reject/ on
purpose. The row therefore showed axioms 1 where the package has none in its
checked cone.

Rule fix at source: a file whose own header has an 'EXPECT: <pattern>' line
comment is a declared negative control; its findings are emitted as class
'control' (still listed in holes.jsonl, not dropped) and do not count as
hole, axiom, unsafe or policy, nor affect --fail-on. A real postulate, or a
file that only mentions EXPECT: in prose, still counts (new test).

Rows regenerated with update-rows.sh and atlas build, not hand-edited:
CompositionalDA.jl axioms 1 -> 0 (re-pinned to 93fbfaf), ExactCounts.jl
axioms 1 -> 0 and policy 6 -> 0, ExactTests.jl axioms 1 -> 0 and policy
1 -> 0 (same commits as before). JuliaPackageSpitter.jl keeps axioms 1: its
postulate is tests/trusted-base-fixtures/RealPostulate.agda, which declares
no EXPECT line, so it is not reclassified here.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0136P7ZmpJaHQJA34ezbx2YX
@coderabbitai

coderabbitai Bot commented Nov 13, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

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

Next included review available in 4 minutes.

Check out review usage here.

View limit details

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

Learn how review limits work.

Review configuration:

Run configuration

Commits

Reviewing files that changed from the base of the PR and between 1aae138 and e7ba86a.

Files ignored due to path filters: 2

  • docs/atlas/generated/catalogue.adoc is excluded by !**/generated/**
  • docs/atlas/generated/index.json is excluded by !**/generated/**
Files selected for processing: 4

  • docs/atlas/census/rows.jsonl
  • scripts/census/proof-holes.sh
  • scripts/census/summarise.sh
  • tests/census/proof_holes_control_test.sh
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

SonarCloud flagged the new emit, is_control and count helpers and the
control test for reading positional parameters directly and for single
bracket tests. Bind each parameter to a named local and use [[ ]]. The
scan's output is unchanged; every tests/census script still passes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0136P7ZmpJaHQJA34ezbx2YX
@sonarqubecloud

Copy link
Copy Markdown

@hyperpolymath
hyperpolymath marked this pull request as ready for review November 13, 2026 19:59
@hyperpolymath
hyperpolymath merged commit 1e39435 into main Nov 13, 2026
43 checks passed
@chatgpt-codex-connector

Copy link
Copy Markdown
Codex Review Summary: ❌ Failed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ❌ Failed 2026-11-13T20:00:01.054771Z
We couldn’t complete this review. Comment @codex review to try again.
e7ba86a Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@hyperpolymath
hyperpolymath deleted the marina/trusting-hopper-sz1eiz branch November 13, 2026 20:00
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.

3 participants