Skip to content

Claude/new session th4e9w audit - #225

Closed
hyperpolymath wants to merge 50 commits into
mainfrom
claude/new-session-th4e9w-audit
Closed

hyperpolymath wants to merge 50 commits into
mainfrom
claude/new-session-th4e9w-audit

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Closes #

Type of change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✨ New feature (non-breaking change that adds functionality)
  • 💥 Breaking change (would change existing behaviour)
  • 🕳️ Soundness fix (fixes a checker/proof false-negative)
  • 📖 Documentation
  • 🧹 Refactor / tech debt (behaviour-preserving)
  • ⚡ Performance
  • 🔧 Build / CI / tooling

How has this been verified?

Checklist

  • My commits are signed (git commit -S).
  • I ran the project's own checks/tests locally and they pass.
  • New files carry the correct SPDX-License-Identifier (code/config MPL-2.0,
    prose CC-BY-SA-4.0); I did not relicense existing files.
  • Docs are updated, and no public claim now overstates what the code does.
  • I have not introduced a soundness hole (or I have flagged where I might have).

Notes for reviewers

claude and others added 20 commits October 19, 2026 16:54
…commit

02cb101e was v1 when it was pinned; v1 now points at 683b588c and no tag
names 02cb101e any more. Callers of this reusable (echidna security-scan)
must lock it, and the estate repair chain (close-lock) records a leaf SHA
only through a tag, so the old pin left them unlockable and failing at
startup. The lock is regenerated in the next commit by the repair chain.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
…s pins

Generated in CI with a real token by the estate repair chain
(relock-sha-keys, complete-job-refs, close-lock, prune-stale; standards
333b06a0), never by hand: this session cannot reach the action repos
through the API. check-lock-sync passed and the governance gate at
333b06a0 returned 0. Applied from the run's diff; the result matches
its LOCK-SHA256 8bacccdbeedc6b8e4b799ecbfe6246e7ab09472a608cd729ed5bdcc383186c22.

Beyond the scan-and-report rust-toolchain pin, the lock had drifted from
the workflow YAML (checkout v7.0.1, cache v6.1.0 and others already in
the workflows but locked at older versions) and had no
hyperpolymath/standards records, which is why boj-build, casket-pages,
chapel-ci and dogfood-gate died at startup on main.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
… full regen

The callers were on 84355587 and fad242d3. 84355587's rust-ci reusable
pins dtolnay/rust-toolchain@6c977a6c ('stable' branch, no tag), which the
repair chain cannot lock. 333b06a0 is current standards main. The
scorecard job's own permissions block now grants actions: read, which the
333b06a0 reusable requests. actions.lock goes back to main's version so
the next commit regenerates it from a clean base (the previous attempt
left two spellings of Swatinem/rust-cache that gh actions-lock rejects).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
…nd release

Each 'Install Rust toolchain' step had a stray 'with: toolchain: v1'
before its real 'with:' block. GitHub rejects a workflow with duplicate
keys before creating any job, so all three workflows were dead; the
governance duplicate-key check fails on them. 'v1' is not a toolchain;
the second block (stable, plus llvm-tools-preview for coverage) is the
intended one and is kept.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
Whitespace-only; rust-ci's fmt step never ran on main because the
workflow failed at startup on the lockfile.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
…repair chain

Built in CI by gh actions-lock v0.2.0 followed by the standards repair
chain at 333b06a0 (relock-sha-keys, complete-job-refs, close-lock,
prune-stale), starting from no lock: main's lock pins dtolnay/rust-toolchain@v1
at a commit the tag no longer names, which gh actions-lock rejects as a
conflicting target. check-lock-sync and check-actions-lock-gate.sh pass;
sha256 83a024a8b1293502f931da414fdd755710816dc8b8ea76df07dcb120b41e7115.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
'v1' is the action's tag, not a rustup toolchain; rustup rejects it
('invalid toolchain name: v1'). Same fix the cargo-audit, coverage and
release workflows already carry. Surfaced now that these workflows start.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
The @v1 tag has no default toolchain; without the input the action runs
'rustup toolchain install' with an empty name and fails (readiness,
bench, e2e-pipeline, chapel-rust-diff). Surfaced now that these
workflows start.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
main.rs re-declared every module with `mod x;`, so the binary compiled
its own private copy of the whole tree. Items used only through the
library API (proven_tests, jit_context, comment_marker, ffi_kind) were
then dead code inside the binary, which clippy -D warnings rejects.
The binary now imports those modules from panic_attack; only the
bin-only modules (diagnostics, groove, kin) stay as `mod`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
- drop redundant borrows in format! args (storage)
- split on a char array instead of a closure (safe_path)
- rfind / find / and_then instead of filter+last, filter+next, map+flatten
- egui Panel/CentralPanel::show_inside -> show (a pure rename in 0.36)
- is_safe_char / all_chars_safe are proptest-only helpers: #[cfg(test)]
- ProvenTestsReport::from_str becomes a real FromStr impl
- qualify anyhow! inside the sarif-gated parser so the import is not
  unused without the feature

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
docs/ambush-timeline.md and docs/panll-export.md were converted to .adoc
(estate docs policy) but the self-diagnostics check still demanded the
.md files, so `panic-attack diagnostics` exited non-zero and both
diagnostics readiness tests failed. Point the check, README.adoc and the
bridge module docs at the .adoc files that exist.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
…istener, wayland-scanner

Lockfile-only, semver-compatible updates clearing RUSTSEC-2026-0204
(crossbeam-epoch), -0346/0347/0348/0349 (rustls 0.23.46), -0257
(webbrowser), the event-listener and memmap2 unsound notices, and moving
wayland-scanner onto quick-xml 0.41. quick-xml 0.38 remains only via
zbus_xml 5 under accesskit (eframe's GUI feature); no released accesskit
or atspi-common moves off it yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
mirror-reusable declares seven optional mirror keys; secret-scanner-reusable
declares none and its header says callers pass no secrets: line. Replace
secrets: inherit with the explicit mapping (mirror) and nothing (scanner)
so unrelated repo/org secrets are not forwarded. Flagged by zizmor
secrets-inherit via CodeRabbit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

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

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-10-19T20:49:43.739673Z 9ae1af3 PR opened
ℹ️ 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.

@coderabbitai

coderabbitai Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

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 7 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
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 52d579ff-c456-4e90-8add-7652b46f57b0
📥 Commits

Reviewing files that changed from the base of the PR and between 8c2f198 and 8b65739.

⛔ Files ignored due to path filters: 4
  • .github/workflows/actions.lock is excluded by !**/*.lock
  • Cargo.lock is excluded by !**/*.lock
  • generated/k9iser/cargo-manifest.k9 is excluded by !**/generated/**
  • generated/k9iser/container-build.k9 is excluded by !**/generated/**
📒 Files selected for processing: 39
  • .github/workflows/cargo-audit.yml
  • .github/workflows/chapel-ci.yml
  • .github/workflows/coverage.yml
  • .github/workflows/e2e.yml
  • .github/workflows/governance.yml
  • .github/workflows/hypatia-scan.yml
  • .github/workflows/mirror.yml
  • .github/workflows/release.yml
  • .github/workflows/rust-ci.yml
  • .github/workflows/scorecard.yml
  • .github/workflows/secret-scanner.yml
  • README.adoc
  • src/aggregate/mod.rs
  • src/aggregate/proven_tests.rs
  • src/assail/analyzer.rs
  • src/assail/mod.rs
  • src/assay/mod.rs
  • src/bridge/mod.rs
  • src/bridge/registry.rs
  • src/comment_marker.rs
  • src/diagnostics.rs
  • src/ffi_kind.rs
  • src/jit_context.rs
  • src/kanren/core.rs
  • src/lib.rs
  • src/main.rs
  • src/panll/mod.rs
  • src/report/gui.rs
  • src/safe_path.rs
  • src/scan/cargodeny.rs
  • src/storage/mod.rs
  • src/test_context.rs
  • tests/analyzer_tests.rs
  • tests/panll_tests.rs
  • tests/property_tests.rs
  • tests/readiness.rs
  • tests/report_tests.rs
  • tests/sarif_tests.rs
  • tests/seam_contract_tests.rs
  • 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

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

@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.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@hyperpolymath
hyperpolymath enabled auto-merge (squash) October 19, 2026 20:57
@coderabbitai

coderabbitai Bot commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

Add Carrot credits or activate Agent usage billing to use Autofix

coderabbitai Bot and others added 5 commits October 19, 2026 21:07
Resolved conflicts in:
- .github/workflows/actions.lock (unmerged)
- .github/workflows/scan-and-report.yml (unmerged)

Co-authored-by: CodeRabbit <noreply@coderabbit.ai>
CodeRabbit-Task-Id: c274f14c-882e-43dc-87d1-6f3d9992f31b
…, and update K9 contracts and dependencies"

This reverts commit afd3da7, pushed by
CodeRabbit's CI-fix agent. This PR is the lock repair at the base of a
stack; the clippy fixes, the readiness doc paths and the K9 retirement
are the next three PRs (#220, #221, #223), and a second copy here would
conflict with them. The commit also rewrote generated/k9iser/*.k9 to
make them conform, which the owner has ruled the other way: k9iser is
retired and #223 deletes those files.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
… merge

The base merge (88d2e49) brought in dependabot's bumps (#216, #217) and a
hand-resolved lock. The estate repair chain was re-run in CI on this
exact head (09a5857) with a real token: relock-sha-keys,
complete-job-refs, close-lock, prune-stale, check-lock-sync, all RC=0,
and the governance gate at standards 333b06a0 returned "Immutable direct
and transitive lockfile coverage verified". The chain changed one line:
the slsa-github-generator record's ref label, f7dd8c54 -> v2.1.0. This
file matches the run's LOCK-SHA256
7555257dddf72015654fdf619089d0e270b45e9ba2fc32f1fdb5046f43111f66.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
Resolves actions.lock: keeps the repaired lock's structure and takes the
two facts #230 changed on main: scan-and-report.yml's rust-toolchain pin
(683b588c, as main now pins it) and github/codeql-action v4.39.0. The
e2a55d2f record no workflow references any more is left for prune-stale;
check-lock-sync is in sync.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
claude and others added 25 commits October 19, 2026 21:51
…ick-xml 0.38

zbus_xml 5.2.1 builds on quick-xml 0.41, so the last copy of quick-xml 0.38.4
(RUSTSEC-2026-0194, RUSTSEC-2026-0195) leaves the lockfile. Lockfile only;
semver-compatible: zbus_names 4.3.5, zbus_xml 5.2.1, zvariant 5.15.1,
zvariant_derive 5.15.1, plus their new transitive deps winnow 1.0.4,
zcheapstr 1.1.0, zvariant_utils 4.2.0.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
…'s lockfile (its bumps include CodeRabbit's quick-xml 0.41 move)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
…ranch, keeping this branch's fixes where both changed the same lines

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
…re-added unused import after the 0f68c62 merge

The text merge of 0f68c62 combined CodeRabbit's leading negation with this
branch's .find(..).is_none(), inverting the readiness control; it is now
the single !any(..) form. main.rs had its removed comment_marker/ffi_kind
import re-added by the same merge.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
…erge left two unused

CodeRabbit's hunk added an all_chars_safe helper beside this branch's
is_safe_char, and the merge kept both with neither caller, which
cargo clippy --all-targets -- -D warnings rejects as dead code in the
lib test target. The file is the version CI passed at 5db5d90.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
…erge left two unused

CodeRabbit's hunk added an all_chars_safe helper beside this branch's
is_safe_char, and the merge kept both with neither caller, which
cargo clippy --all-targets -- -D warnings rejects as dead code in the
lib test target. The file is the version CI passed at 5db5d90.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
docs/ambush-timeline.md and docs/panll-export.md were converted to .adoc
(estate docs policy) but the self-diagnostics check still demanded the
.md files, so `panic-attack diagnostics` exited non-zero and both
diagnostics readiness tests failed. Point the check, README.adoc and the
bridge module docs at the .adoc files that exist.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
…ries (#231)

Stacked on #222 (← #221 ← #220 ← #218).

## What

Lockfile-only bump of `zbus_xml` 5.1.0 → 5.2.1. This removes the last
`quick-xml 0.38.4` from `Cargo.lock` and clears:

- RUSTSEC-2026-0194: quadratic attribute checking in quick-xml
- RUSTSEC-2026-0195: unbounded namespace allocation in quick-xml

## Why no upstream PR or `[patch]` is needed

The handoff plan assumed every `zbus_xml` 5.x release still used
`quick-xml ^0.38`. crates.io shows otherwise:

| zbus_xml | XML parser |
|---|---|
| 5.1.0 (was locked) | quick-xml ^0.38 |
| 5.1.1 | quick-xml ^0.39 |
| 5.2.0, 5.2.1 | winnow ^1.0 (no quick-xml) |

`zbus-lockstep 0.5.2` (via `atspi-common 0.13`) requires `zbus_xml
^5.0.2`, so 5.2.1 is a semver-compatible resolution. The fix is already
published upstream; the lockfile simply had not picked it up.

## Side effects in the lockfile

All behind the opt-in `gui` feature. Default builds are unchanged.

- `zvariant` / `zvariant_derive` 5.10.0 → 5.15.1
- `zbus_names` 4.3.1 → 4.3.5
- adds `winnow 1.0.4`, `zvariant_utils 4.2.0`, `zcheapstr 1.1.0`, `syn
3.0.3` (proc-macro only)

Every new crate declares `rust-version` ≤ 1.87, the floor the previously
locked `zvariant 5.10.0` already set. The `gui` MSRV does not move.

## Verification (local, Rust 1.99.0)

- `cargo audit`: before, 2 vulnerabilities, exit 1. After, 0
vulnerabilities, exit 0, with zero ignores and no `audit.toml`.
- The same five `unmaintained` warnings appear before and after:
ttf-parser, unsafe-libyaml, zbus_names, zvariant, zvariant_derive.
- `cargo check --all-features --all-targets`: pass
- `cargo clippy --all-features --all-targets -- -D warnings`: pass
- `cargo test --all-features`: all suites pass

## Follow-up (not in this PR)

`zvariant`, `zvariant_derive` and `zbus_names` gained `unmaintained`
notices on 2026-10-16 because they were folded into zbus 6. These are
warnings, not failures. They clear only when accesskit/atspi move to
zbus 6.

---
_Generated by [Claude
Code](https://claude.ai/code/session_01Jma5ixtpeZyJRmfoSsC98u)_

Co-authored-by: Claude <noreply@anthropic.com>

Copy link
Copy Markdown
Owner Author

Closing this duplicate direct-to-main copy. The audit/dependency changes are retained in the intended stacked PR #222, based on #221; please follow the stack rather than this conflicting duplicate.

auto-merge was automatically disabled October 20, 2026 00:53

Pull request was closed

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.

2 participants