Next/v0.5.1 - #23
Conversation
…an review folded in Dispositions: implement dryRun (executed discriminant, single write-manifest source of truth), weave --version --json (pre-cliffy fast path, CLI binary stamping only), document locking pattern (.weave/lock), conservative plan-conflict repair, behavioral-changelog rule, README version-line note; correct the reviewer's missing-tag claim (v0.4.0 tag exists at 37f4b8f and contains 23f50af); defer programmatic validateMesh to its own slice. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…iscriminant - one ordered combined-write manifest now feeds preflight, the writer, and the dry-run forecast, so forecast and effect cannot drift - dryRun: true runs identical admit/load/plan behavior (all refusals included), stops after preflight, and returns executed: false with would-be outcomes and path lists; real runs report executed: true - integration tests: forecast/actual equivalence, no-mutation byte checks, per-stage refusal parity (admit/load/preflight), overwrite forecasts, no-op forecasts, dryRun admission - the off-tree npm smoke gains a dry-run leg proving the packaged Node build forecasts identically to the source import - wd.programmatic-version-api amended with the dry-run contract Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- exact --version --json (either order, -V accepted) is handled before cliffy parses, since cliffy 1 rejects combining its version option; everything else falls through unchanged and the plain 'weave <version>' line is now covered by a byte-stability test - src/generated/build_info.ts ships checked-in nulls; release builds stamp commit/built via build:binaries --commit/--built with the original bytes restored in finally, so the tree never stays dirty - the release workflow passes github.sha and its binary smoke asserts the reported commit equals the workflow SHA; ordinary CI compiles a Linux binary, verifies the stamp, and checks the tree stays clean Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- bump root version; release notes for the consumer-feedback slice, including the retroactive v0.4.0 disclosure (raw-source inline limit 1 MiB -> 4 MiB in 23f50af) - wu.api-reference: dry-run usage, recommended .weave/lock advisory locking pattern, conservative write-failure repair procedure, release verification guidance - wu.cli-reference: --version forms; runbook: behavioral-changelog rule; bump-version stub nudges naming behavioral changes - both npm READMEs state the weave/weave-lib shared version line - wd.todo: programmatic validateMesh recorded as the v0.6.0 candidate Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Only weave-lib@0.5.0 ever reached the registry (the one-time manual first publish); the wrapper/platform packages, tag, and GitHub Release for 0.5.0 were never cut. Folding means one Release Manual run publishes everything at 0.5.1 through trusted publishing with no expected-failure jobs. release-notes.v0.5.1 now carries the combined library-packaging + consumer-feedback content; release-notes.v0.5.0 is deleted; docs and task notes updated; weave-lib@0.5.0 gets deprecated after the release. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 37 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (6)
📝 WalkthroughWalkthroughThis release updates ChangesVersion 0.5.1 release slice
Estimated code review effort: 4 (Complex) | ~45 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
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. Comment |
|
Context for this PR (from
Release path after merge: Release Manual rehearsal ( 🤖 Generated with Claude Code |
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (3)
documentation/notes/wd.release-runbook.md (1)
94-102: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAvoid hard-wrapping the new Markdown paragraph.
Keep the historical prose as an unwrapped paragraph; only the shell command should remain formatted as a code block. As per coding guidelines,
**/*.md: Avoid hard-wrapping markdown files to keep them easier to edit.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@documentation/notes/wd.release-runbook.md` around lines 94 - 102, In the “First weave-lib publish (historical record)” section, keep the historical prose as one unwrapped Markdown paragraph and remove any hard line wrapping within it. Preserve the npm deprecate command as the existing fenced code block and leave the surrounding content unchanged.Source: Coding guidelines
src/api/version_payloads.ts (2)
610-659: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueMinor: redundant throw/catch in the created-entries existence check.
Lines 633-640 throw
weave target already existsinside the verytrythat guardsDeno.stat, so it's immediately caught by the adjacentcatchand rethrown (since it isn'tDeno.errors.NotFound). Functionally correct, but the control flow reads like the error is meant to escape the catch — worth a quick rewrite (e.g. check existence with a boolean instead of throwing inside the try) for clarity.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/api/version_payloads.ts` around lines 610 - 659, Rewrite the created-entry existence check in preflightCombinedPlan so the Deno.stat result is evaluated without throwing the “weave target already exists” error inside the try block. Continue on Deno.errors.NotFound, propagate other stat errors, and throw the existing conflict error only after a successful stat.
371-394: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winForecast/effect categorization is duplicated, not shared.
The dry-run branch derives
createdPaths/updatedPathsviamanifest.filter((entry) => entry.created)here, while the real write path (Lines 686-691 inwriteCombinedPlan) re-derives the same split independently during the write loop. The header comment on the manifest type (Lines 561-562) states the whole point is that "forecast and effect cannot drift" — but that guarantee currently rests on two hand-written filters staying in sync, not on shared code. A future edit to one classification without the other would silently break dry-run/real parity without a type error.Consider extracting a single helper, e.g.
partitionManifest(manifest) => { createdPaths, updatedPaths }, and having both the dry-run branch andwriteCombinedPlan's bookkeeping build off it.♻️ Suggested extraction
+function manifestPathsByCreated( + manifest: readonly CombinedWriteManifestEntry[], +): { createdPaths: string[]; updatedPaths: string[] } { + return { + createdPaths: manifest.filter((e) => e.created).map((e) => e.path), + updatedPaths: manifest.filter((e) => !e.created).map((e) => e.path), + }; +} + if (admitted.dryRun) { - return { - meshBase: prepared.meshState.meshBase, - executed: false, - outcomes, - createdPaths: manifest.filter((entry) => entry.created) - .map((entry) => entry.path), - updatedPaths: manifest.filter((entry) => !entry.created) - .map((entry) => entry.path), - }; + const { createdPaths, updatedPaths } = manifestPathsByCreated(manifest); + return { + meshBase: prepared.meshState.meshBase, + executed: false, + outcomes, + createdPaths, + updatedPaths, + }; }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/api/version_payloads.ts` around lines 371 - 394, Extract the manifest classification used by the dry-run branch and writeCombinedPlan into one shared partitionManifest helper returning createdPaths and updatedPaths. Replace the dry-run filters and writeCombinedPlan’s independent bookkeeping with this helper so both forecast and effect always use the same classification.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@documentation/notes/release-notes.v0.5.1.md`:
- Around line 39-41: Reconcile the v0.5.0/v0.5.1 release-status documentation:
in documentation/notes/release-notes.v0.5.1.md lines 39-41, use future tense for
weave-lib deprecation unless it has been verified; update the remaining v0.5.0
release-plan references in documentation/notes/wd.library-packaging.md lines
24-26; and align the completed library entry, unchecked distribution task, and
open post-release deprecation task in documentation/notes/wd.todo.md lines
51-52.
In `@documentation/notes/wd.consumer-feedback-0.5.1.md`:
- Line 11: Update the v0.5.1 review note to remove the host-specific
~/Downloads/weave0.5.1consumerreview.md reference; store the source review in
the repository or replace it with a durable repository reference that other
maintainers and CI can access.
- Around line 83-90: Update the v0.5.1 implementation checklist so shipped work
is no longer shown as pending: mark the completed dry-run, build stamping, JSON
version, and documentation items as done, or relabel the section explicitly as
historical. Keep any genuinely outstanding tasks unchecked and preserve the
existing release-notes completion entry.
In `@scripts/release/npm.ts`:
- Around line 209-212: Update the generated README text in the release logic to
reference the scoped package identifier `@semantic-flow/weave-lib`@${version}
instead of weave-lib@${version}, preserving the existing version interpolation
and surrounding explanation.
---
Nitpick comments:
In `@documentation/notes/wd.release-runbook.md`:
- Around line 94-102: In the “First weave-lib publish (historical record)”
section, keep the historical prose as one unwrapped Markdown paragraph and
remove any hard line wrapping within it. Preserve the npm deprecate command as
the existing fenced code block and leave the surrounding content unchanged.
In `@src/api/version_payloads.ts`:
- Around line 610-659: Rewrite the created-entry existence check in
preflightCombinedPlan so the Deno.stat result is evaluated without throwing the
“weave target already exists” error inside the try block. Continue on
Deno.errors.NotFound, propagate other stat errors, and throw the existing
conflict error only after a successful stat.
- Around line 371-394: Extract the manifest classification used by the dry-run
branch and writeCombinedPlan into one shared partitionManifest helper returning
createdPaths and updatedPaths. Replace the dry-run filters and
writeCombinedPlan’s independent bookkeeping with this helper so both forecast
and effect always use the same classification.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 559a83c4-8562-442d-b82b-f55666a99d91
⛔ Files ignored due to path filters (1)
src/generated/build_info.tsis excluded by!**/generated/**
📒 Files selected for processing (23)
.github/workflows/ci.yml.github/workflows/release-manual.ymldeno.jsondocumentation/notes/release-notes.v0.5.0.mddocumentation/notes/release-notes.v0.5.1.mddocumentation/notes/wd.consumer-feedback-0.5.1.mddocumentation/notes/wd.library-packaging.mddocumentation/notes/wd.programmatic-version-api.mddocumentation/notes/wd.release-runbook.mddocumentation/notes/wd.todo.mddocumentation/notes/wu.api-reference.mddocumentation/notes/wu.cli-reference.mdscripts/build-binaries.tsscripts/build-npm-lib.tsscripts/bump-version.tsscripts/release/npm.tsscripts/smoke-npm-lib.tssrc/api/version_payloads.tssrc/cli/run.tstests/e2e/weave_cli_test.tstests/integration/version_payloads_test.tstests/scripts/build_binaries_test.tstests/scripts/release_metadata_test.ts
💤 Files with no reviewable changes (1)
- documentation/notes/release-notes.v0.5.0.md
- archive the Stagecraft review verbatim in-repo (wd.consumer-feedback-0.5.1.source) and drop the host-local Downloads reference - reconcile release-status tense across release-notes.v0.5.1, wd.library-packaging, and wd.todo: weave-lib@0.5.0 deprecation is the final release step, not already done; also close the stale unchecked library-distribution backlog entry that duplicated the shipped work - mark the completed v0.5.1 implementation checklist items done (the Stagecraft reply remains the one open item) - wrapper README: use the full scoped @semantic-flow/weave-lib name Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Summary by CodeRabbit
New Features
versionPayloads, including planned outcomes and affected paths without writing changes.weave --version --json.Documentation
Release