Skip to content

Integrate backlog step 1: dependency bumps (#206, #207, #189, #188) - #208

Merged
flyingrobots merged 15 commits into
mainfrom
integrate/open-prs
Nov 3, 2026
Merged

flyingrobots merged 15 commits into
mainfrom
integrate/open-prs

Conversation

@flyingrobots

@flyingrobots flyingrobots commented Nov 3, 2026 •

Copy link
Copy Markdown
Owner

Step 1 of landing the open PR backlog: the four dependency PRs, each with a real merge commit so GitHub marks it merged, plus the fixes they needed. Later steps land as separate PRs from this branch.

Merges #206, #207, #189 and #188.

This deliberately lands three unrelated dependency families together: the maintainer chose one integration branch for the backlog. Bisecting across this merge lands on one first-parent commit, and the merged PRs' own commits narrow it further.

Problem

Three of these Dependabot PRs were red and none carried the admission work this repo requires. #207 and #189 did not update fuzz/Cargo.lock. #188 did not move the toolchain contract's version pins or lock digest. The Rustix and cap-fs-ext admission page says it reopens on any direct version change.

Invariant affected

Exact dependency admission: every pin, lock digest and admission record matches what is locked. No identity, format or durability code changes. Only a test is added under src/.

Approach

Merge each PR, refresh the fuzz lock, move every markdownlint pin and the BLAKE3 lock digest, review the published upstream source differences, and renew both admission records. #206 has no admission page; its review compared v2.87.28...v2.88.0 (99 commits, manifests and tool lists, no cargo-deny or cargo-audit manifest change) and confirmed the pinned SHA matches its tag.

Alternatives rejected

Failure modes

  • rustix 1.1.6 redefines StatVfsMountFlags constants. Keep's production code tests only RDONLY, whose value is unchanged, and a new law now pins it.
  • re2js 2.8.6 carries high-severity GHSA-gg6h-894w-4m9c. It needs the opt-in LOOKBEHINDS flag, which markdownlint never sets, and without it a lookbehind pattern is refused at compile time. If that reasoning is wrong, the CI job's limits bound a CI run to a stalled job. A contributor running the linter directly on hostile Markdown has no such limit.

Tests

  • New law: the_read_only_mount_flag_constant_is_st_rdonly. It catches only an edit to the constant.
  • The xtask toolchain laws, moved to the new versions. Each law's seeded bad input still triggers the refusal it tests.
  • CI run 41665161676 at de515f3 passed all four jobs with this graph on Linux x86_64, debug and release. main has no required status checks, so waiting for the final head's run is a manual step.
  • cargo check --workspace --all-features --locked on Apple Silicon: compile only, and it excludes the Linux admission code.
  • All 169 Markdown files pass markdownlint 0.24.0. Module-load traces on both linter versions back the reachability statements.

The merge of this PR is the dependable bisection boundary. Some earlier commits on this branch fail CI, including the merges of #207, #189 and #188 before their fixes.

Benchmark impact

None measured, including for the Rustix and cap-fs-ext updates under production filesystem paths.

Format/API compatibility

No format or public API change.

Recovery implications

No recovery code changes. The dependency change sits under the writer lock and ext4 admission; the existing recovery laws pass with it on Linux. That's process-level evidence, not a power-loss experiment.

Security implications

rustix 1.1.6 fixes high-severity GHSA-jh2m-fhpj-3vr7 (undefined behavior from safe Rust in xattr buffers). main is on the affected version, though no Keep exposure was found. The linter bump clears the markdown-it and smol-toml audit reports, adds a high-severity re2js report, and records why it appears unreachable in docs/dependencies/documentation-toolchain.md. It's a currency update, not a security gain. The maintainer's agent closes #176 by hand after this merge, because its advisory was withdrawn. #209 tracks re2js. #210 tracks the quality and dependency-policy tool installs the workflow contract doesn't cover, including the third-party b3sum source.

Review

An AI agent ran Baker Street, three independent reviewers for claims, clarity and falsification, at the maintainer's direction. Rounds at 9878aab and 00a36e0, and a clarity and falsification round at de515f3, found no behaviour defect in Keep. Their findings were mostly about the written record, plus one test gap, and are fixed through this PR's head. The last commit's repairs weren't re-reviewed by a further round. The final grades at de515f3 were clarity B+ and resilience B+, with fidelity A at 00a36e0.

dependabot Bot and others added 10 commits October 25, 2026 04:22
Bumps [markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2) from 0.23.3 to 0.24.0.
- [Changelog](https://github.com/DavidAnson/markdownlint-cli2/blob/main/CHANGELOG.md)
- [Commits](DavidAnson/markdownlint-cli2@v0.23.3...v0.24.0)

---
updated-dependencies:
- dependency-name: markdownlint-cli2
  dependency-version: 0.24.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [cap-fs-ext](https://github.com/bytecodealliance/cap-std) from 4.0.2 to 4.0.3.
- [Commits](sunfishcode/cap-std@cap-fs-ext-v4.0.2...cap-fs-ext-v4.0.3)

---
updated-dependencies:
- dependency-name: cap-fs-ext
  dependency-version: 4.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.87.28 to 2.88.0.
- [Release notes](https://github.com/taiki-e/install-action/releases)
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md)
- [Commits](taiki-e/install-action@1168f68...86f7a0f)

---
updated-dependencies:
- dependency-name: taiki-e/install-action
  dependency-version: 2.88.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 1.1.5 to 1.1.6.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Changelog](https://github.com/bytecodealliance/rustix/blob/main/CHANGES.md)
- [Commits](bytecodealliance/rustix@v1.1.5...v1.1.6)

---
updated-dependencies:
- dependency-name: rustix
  dependency-version: 1.1.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
, #189)

Dependabot updated the workspace manifests and root lockfile but not
fuzz/Cargo.lock, whose --locked check refused both PRs in Rust quality gates.
…ipts/documentation-tools/markdownlint-cli2-0.24.0
…ntract (#188)

The toolchain contract pins the tool, its reported version and its transitive
js-yaml and markdown-it versions, so the Dependabot lockfile bump alone was
refused by Documentation and workflow integrity and by the xtask laws.

Move every pin and record the advisory change: markdown-it and smol-toml reports
are removed, and re2js 2.8.6 (GHSA-gg6h-894w-4m9c) enters through an exact
markdownlint requirement that repository policy does not override.

Also renew the Rustix 1.1.6 and cap-fs-ext 4.0.3 dependency admission (#207,
#189), which requires reopening on any direct version change.
@coderabbitai

coderabbitai Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 72cf4719-f272-4af3-9cc0-f181e97cb3aa
Commits

Reviewing files that changed from the base of the PR and between 3887f2a and 45428b1.

Files ignored due to path filters: 3
  • Cargo.lock is excluded by !**/*.lock
  • fuzz/Cargo.lock is excluded by !**/*.lock
  • scripts/documentation-tools/package-lock.json is excluded by !**/package-lock.json
Files selected for processing: 16
  • .github/workflows/ci.yml
  • CHANGELOG.md
  • CONTRIBUTING.md
  • Cargo.toml
  • docs/Documentation Standards.md
  • docs/dependencies/cap-std-4.0.3-and-cap-fs-ext-4.0.3.md
  • docs/dependencies/documentation-toolchain.md
  • repository-process-spawn/Cargo.toml
  • scripts/documentation-tools/package.json
  • src/adapters/filesystem_platform_profile_tests.rs
  • xtask/Cargo.toml
  • xtask/src/documentation_integrity/execution/tests.rs
  • xtask/src/documentation_integrity/node_toolchain.rs
  • xtask/src/documentation_integrity/node_toolchain/tests.rs
  • xtask/src/documentation_integrity/tool.rs
  • xtask/tests/cli_contract/documentation_tools.rs

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Recent review details
Additional context used
LanguageTool
docs/dependencies/cap-std-4.0.3-and-cap-fs-ext-4.0.3.md

[style] ~14-~14: This phrase is redundant. Consider writing “same”.
Context: ...iter and reader locks; xtask uses the same exact version behind repository-tasks. `ca...

(SAME_EXACT)

[style] ~69-~69: This phrase is redundant. Consider writing “same”.
Context: ...ated process-spawn manifests select the same exact Rustix version. The independently locke...

(SAME_EXACT)

[style] ~87-~87: This phrase is redundant. Consider writing “same”.
Context: ...ated process-spawn manifests select the same exact Rustix 1.1.6, and the root and reposito...

(SAME_EXACT)

Additional comments: 6
.github/workflows/ci.yml: 1

35-35: LGTM!

Also applies to: 180-180

Cargo.toml: 1

21-23: LGTM!

repository-process-spawn/Cargo.toml: 1

10-10: LGTM!

xtask/Cargo.toml: 1

32-40: LGTM!

src/adapters/filesystem_platform_profile_tests.rs: 1

12-19: LGTM!

docs/dependencies/cap-std-4.0.3-and-cap-fs-ext-4.0.3.md: 1

1-18: LGTM!

Also applies to: 48-55, 69-75, 84-101

Summary by CodeRabbit

  • Chores
    • Updated documentation-checking and workflow tools, along with supporting Rust filesystem libraries.
    • Updated dependency records and compatibility information to reflect the current versions.
  • Documentation
    • Updated the documented tool versions and dependency advisories.
  • Tests
    • Added a check for a read-only filesystem flag and updated checks to match the current documentation-tool version.

Walkthrough

The pull request updates the Markdown validation toolchain, Rust dependency pins, and CI installation action. It revises version admission checks, fixtures, tests, dependency records, and contributor documentation. The CI jobs continue to install the same configured tools.

Changes

Toolchain and dependency updates

Layer / File(s) Summary
Markdown toolchain update
scripts/documentation-tools/package.json, xtask/src/documentation_integrity/*, xtask/tests/cli_contract/documentation_tools.rs, CONTRIBUTING.md, docs/Documentation Standards.md, docs/dependencies/documentation-toolchain.md, CHANGELOG.md
Markdownlint changes to 0.24.0, with updated dependency versions, lockfile admission checks, fixtures, and expected version output. The documentation records the advisory snapshot and validation boundaries. The changelog records this update alongside the Rust dependency and CI action updates.
Rust dependency refresh
Cargo.toml, repository-process-spawn/Cargo.toml, xtask/Cargo.toml, src/adapters/filesystem_platform_profile_tests.rs, docs/dependencies/cap-std-4.0.3-and-cap-fs-ext-4.0.3.md
Rustix changes to 1.1.6 and cap-fs-ext to 4.0.3 in the listed manifests. A test checks that StatVfsMountFlags::RDONLY.bits() equals 0x0001. The dependency admission record is revised.
CI action pin update
.github/workflows/ci.yml
Both installation steps update taiki-e/install-action to v2.88.0. The configured tools and their versions remain unchanged.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Other

Possibly related issues

  • Issue 210 concerns the CI action pins. This pull request updates the pins to v2.88.0 but does not add the workflow contract check described by the issue.
  • Issue 209 concerns the re2js advisory. This pull request documents its status and acceptance rationale but does not remove the advisory.
Merge Risk: Minimal · up to 45428

The dependency and toolchain refresh preserves the documented validation and build contracts without an established merge-blocking risk.

Pre-merge checks: Passed 3 · Failed 2

Failed Failed checks: 2 warnings

Check name Status Explanation Resolution
Description check Warning The description is detailed and follows most template headings: Problem, Invariant affected, Approach, Alternatives rejected, Failure modes, Tests, Benchmark impact, Format/API compatibility, Recovery… Add a '## Change kind' section. Declare each part of the mixed change: dependency bumps, admission-record updates, and the new test. Add a '## Testing evidence' section, or move and expand the existing test content there. For each changed c…
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 3 passed
Check name Status Explanation
Title check Passed The title names the change as an integration of backlog step 1 with dependency bumps for four PRs (#206, #207, #189, #188). The changeset does bump dependencies: taiki-e/install-action to v2.88.0, rus…
Linked Issues check Passed Issue #176 is closed and supplies historical context only. No active directly linked issue remains. Therefore, no linked-issue coding requirements apply to this pull request.
Out of Scope Changes check Passed The reviewed changes match the current pull request intent: four dependency integrations, lock and admission updates, toolchain contract updates, supporting documentation, and the Rustix mount-flag te…
Full details: Title check

Explanation

The title names the change as an integration of backlog step 1 with dependency bumps for four PRs (#206, #207, #189, #188). The changeset does bump dependencies: taiki-e/install-action to v2.88.0, rustix to 1.1.6, cap-fs-ext to 4.0.3, and markdownlint-cli2 to 0.24.0, with the admission and test fixes. The title is related to the main change, but it uses PR numbers and the term 'Integrate backlog step 1' rather than naming the dependencies, so it is broad about what changed.

Full details: Out of Scope Changes check

Explanation

The reviewed changes match the current pull request intent: four dependency integrations, lock and admission updates, toolchain contract updates, supporting documentation, and the Rustix mount-flag test. The combined dependency families are explicitly declared as intentional. No unrelated change is demonstrated.

Full details: Description check

Explanation

The description is detailed and follows most template headings: Problem, Invariant affected, Approach, Alternatives rejected, Failure modes, Tests, Benchmark impact, Format/API compatibility, Recovery implications, Security implications, and Review. It is missing the 'Change kind' section, which the template requires and which must declare each part of this mixed change. The 'Testing evidence' section is also missing; the content appears under 'Tests' instead, and it does not name the owner, independent oracle, or RED/GREEN receipts that the template asks for. The checklist is also absent. The description also lacks a clear statement of which fields are not applicable.

Resolution

Add a '## Change kind' section. Declare each part of the mixed change: dependency bumps, admission-record updates, and the new test. Add a '## Testing evidence' section, or move and expand the existing test content there. For each changed claim, name the evidence subject, independent oracle, and contract boundary. Link the recorded calibration or RED/GREEN receipts, or mark them not applicable with a reason. State the enforcing mechanisms and blind spots. Add the checklist from the template, or confirm that each item was completed.

Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 6 functions across 6 files. (10 skipped: 10 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Tip

🎯 Customize your risk assessments

Guide how CodeRabbit assesses merge risk and security architecture risk. Highlight sensitive changes and explain your security boundaries using Merge Risk Instructions and Security Risk Instructions in your review settings. Security architecture risk assessments require the Advanced plan or above.

✅ Automatic approvals, with your rules

Let CodeRabbit approve pull requests once required threads are resolved, pre-merge checks pass, and your risk limits are met. Enable Automatic approvals in review settings, with overrides for teams or file paths.

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

The pins move forward, neat and small,
New versions answer roll call.
A flag is checked, its bits made clear,
The lockfile’s expected shape draws near.
Each record notes what changed—and stops right here.

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.

The toolchain contract also pins the exact BLAKE3 digest of the Node lock
artifact, which the version-pin update did not move.
Baker Street found the pins and digests exact but the written reasoning wrong:
statx is an operation Keep invokes, the runtime libc requirement did not move,
and the Rustix license and Rust floor were stale. The re2js acceptance leaned on
"repository-authored" Markdown, which CI's pull_request trigger contradicts.

Rest that acceptance on the opt-in LOOKBEHINDS flag markdownlint never sets,
state the advisory's high severity, and record the braces advisory's withdrawal.
No code, pin or digest changes.
@flyingrobots flyingrobots changed the title Integrate the open PR backlog Integrate backlog step 1: dependency bumps (#206, #207, #189, #188) Nov 3, 2026
Resolve the review's deferred findings: add statx to the admission's API list,
link the new re2js and CI-install issues, record that #176's advisory was
withdrawn, and state the macOS compile check and what it does not cover.
…207, #188)

Rustix 1.1.6 replaces the derivation of StatVfsMountFlags::RDONLY with a literal,
and Keep's refusal laws use the same symbol as the predicate, so no law would
notice a change to the value admission depends on.

Also disclose the high-severity Rustix advisory this update fixes, record what
was reviewed and run and on which targets, mark corrections to earlier text, and
give the re2js acceptance its own section with the removed advisories' ratings.
A module-load trace shows markdown-it was never on Keep's lint path, while re2js
now is, so the bump is a currency update. Say so, correct the katex and MD011
statements, narrow the RDONLY law's name and comment to what it can catch, name
who reviewed, and cite the run that includes the new law.
@flyingrobots
flyingrobots marked this pull request as ready for review November 3, 2026 16:01
@flyingrobots
flyingrobots merged commit e316d71 into main Nov 3, 2026
5 checks passed
@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, add credits to your account and enable them for code reviews in your settings.

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.

Resolve remaining braces advisory in documentation tooling

1 participant