Skip to content

chore(release): v0.41.1 — marker scan regression, reproducible export, Robot markers - #1108

Merged
avrabe merged 6 commits into
mainfrom
release/v0.41.1
Oct 21, 2026
Merged

avrabe merged 6 commits into
mainfrom
release/v0.41.1

Conversation

@avrabe

@avrabe avrabe commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

Patch release (maintainer decision 2026-10-20) for one v0.41.0 regression and two downstream reports.

Gates (1.99.0): fmt, clippy --all-targets -D warnings, nextest 2623 passed, cli_commands 247, rivet validate PASS, docs check PASS, rivet release status v0.41.1 ✓ Cuttable (3/3 verified), changelog drift clean.

Version 0.41.1 in Cargo.toml, vscode-rivet/package.json, Cargo.lock, fuzz/Cargo.lock. New dependency: ignore 0.4.33 (MIT/Unlicense).

Implementation of each fix by Sonnet subagents in isolated worktrees; reviewed, integrated and re-verified by the supervising session.

🤖 Generated with Claude Code

https://claude.ai/code/session_015HMQUV3u86jN2hmCtXNTc9

avrabe and others added 5 commits October 20, 2026 23:30
…ssion, the reproducible export and Robot markers

Three corrective requirements scoped to the v0.41.1 patch (maintainer
decision): #1097 (the v0.41.0 marker walk follows symlinks and ignores
.gitignore), #1104 (HTML export ordering and absolute paths) and #1105
(.robot files are not scanned). Each carries its acceptance; the fixes and
their tests follow on this branch.

Refs: REQ-389, REQ-029

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

Since v0.41.0 validate, coverage and MCP reload scan source for rivet
markers, and the walk used Path::is_dir, which follows symlinks, read no
ignore file and had no cycle guard; on WSL2 a project with links into the
Windows drive did not finish. The walk now uses the ignore crate with
follow_links off (so no cycles), honours .gitignore, .ignore,
.git/info/exclude and a project .rivetignore (not the user's global ignore,
so results do not depend on the machine), keeps the existing skips and sorts
by path. On this repository the marker set is unchanged apart from the six
new test markers (1204 before, 1210 after). Negative controls: following
links reddens the symlinked-directory test; disabling ignore handling
reddens the gitignore and rivetignore tests.

Fixes: REQ-405
Refs: REQ-389

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HMQUV3u86jN2hmCtXNTc9
.robot and .resource files were skipped before any pattern ran, so a
Robot suite could never be evidence for a requirement. Add both
extensions with # comments. Robot test cases are not functions, so a
marker before or inside a case is attributed to the case name; a marker
with no case around it falls back to file:line.

Implements: REQ-407
Refs: #1105, REQ-389

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HMQUV3u86jN2hmCtXNTc9
…aths relative to the project (#1104)

Two exports of the same tree differed in 190 of 1215 files. The link graph
collected backlinks while iterating the store in HashMap order, so every
artifact page listed its Incoming Links in a run-dependent order. The graph,
document-linkage and datalist views had the same root cause: node_map and
store.iter() iteration fed the layout and the tables.

LinkGraph::build now walks the store in id order and sorts each artifact's
backlinks by link type then source id, so every surface agrees. The render
module iterates the store with iter_sorted, the graph view walks the petgraph
node order instead of the HashMap node_map, and the document-linkage edge maps
are BTreeMaps. The RenderContext gains a static_export flag, set only by the
HTML export, which writes data-source-file relative to the project root; serve
and the VS Code webview still receive the real path their shim opens.

Confirmed with a new integration test that exports a project with twelve mixed
incoming links twice and requires byte-identical trees with no absolute path;
removing the sort reddens it and the unit test every run. Exporting this
repository twice now differs in 0 of 1215 files.

Fixes: REQ-406
Refs: #1104, REQ-029

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HMQUV3u86jN2hmCtXNTc9
REQ-405, REQ-406 and REQ-407 verified by their test markers; version 0.41.1 in
the workspace, the VS Code extension and both lockfiles; CHANGELOG cut
[0.41.1]. rivet release status v0.41.1 reports 3 of 3 verified and the
changelog drift check is clean.

Verifies: REQ-405, REQ-406, REQ-407

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

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

📐 Rivet artifact delta

Change Count
Added 3
Removed 0
Modified 0
Downstream impacted (depth ≤ 5) 0

Graph

graph LR
  REQ_405["REQ-405"]:::added
  REQ_406["REQ-406"]:::added
  REQ_407["REQ-407"]:::added
  classDef added fill:#d4edda,stroke:#28a745,color:#155724
  classDef removed fill:#f8d7da,stroke:#dc3545,color:#721c24
  classDef modified fill:#fff3cd,stroke:#ffc107,color:#856404
  classDef overflow fill:#e2e3e5,stroke:#6c757d,color:#495057,stroke-dasharray: 3 3
Loading
Added
  • REQ-405
  • REQ-406
  • REQ-407

📎 Full HTML dashboard attached as workflow artifact rivet-delta-pr-1108 — download from the workflow run.

Posted by rivet-delta workflow. The graph shows only changed artifacts; open the HTML dashboard (above) for full context.

@codecov

codecov Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 97.15909% with 5 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
rivet-core/src/test_scanner.rs 96.45% 5 Missing ⚠️

📢 Thoughts on this report? Let us know!

….1 cut; a dot-file test kills the walker's surviving mutant

RUSTSEC-2026-0378/0379 (wasmtime) and RUSTSEC-2026-0382 (rustls-webpki)
appeared while v0.41.1 was in CI and fail Cargo Deny. The lockfile floor test
now rejects 48.0.6 and 49.0.3. PR-diff mutation found that turning the
walker's depth-or-not-a-directory guard into an and survived: name filtering
would then apply to files and skip dot-files. The nested-walk test now
expects a dot-file below the root to be scanned; with the mutant applied it
fails, restored it passes.

Verifies: REQ-402, REQ-405

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HMQUV3u86jN2hmCtXNTc9
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