Skip to content

Prepare v6.0.0 release#35

Merged
flyingrobots merged 83 commits intomainfrom
release/v6.0.0
May 4, 2026
Merged

Prepare v6.0.0 release#35
flyingrobots merged 83 commits intomainfrom
release/v6.0.0

Conversation

@flyingrobots
Copy link
Copy Markdown
Member

Summary

Prepare the v6.0.0 release branch for merge into main.

This release line includes the v6 encryption scheme simplification, the platform-neutral Uint8Array byte contract, release-gate documentation cleanup, and the explicit JSR deferral because the current jsr/Deno toolchain panics before package validation.

Release Posture

  • JSR publication is intentionally out of the v6.0.0 critical path until npx jsr publish --dry-run --allow-dirty is healthy again.
  • The release workflow publishes npm and creates the GitHub Release; it no longer requires the broken JSR publish job.
  • TUI modernization is queued for the v6.x line and is not a v6.0.0 tag blocker.
  • No release tag has been created or pushed.

Validation

  • npm run release:verify -- --skip-jsr passed: 8/8 executable steps, 4495 observed tests, npm pack dry-run clean.
  • npx eslint . passed.
  • npm test passed: 119 files, 1344 tests passed, 2 skipped.
  • npm run upgrade dry-run passed with no local vault to migrate.
  • Pre-push lint and unit-test gates passed before pushing release/v6.0.0.

Remaining Release Step

After this PR is green and merged, create and push the annotated v6.0.0 tag only with explicit operator approval.

1. Migration script (npm run upgrade) with fast/full modes
2. Breaking changes doc (UPGRADING.md)
3. Docs accuracy audit (all docs vs v6 API)
4. Signpost rewrite (README, BEARING, VISION, STATUS)
5. Version bump + tag (blocked by 1-4)

Key insight: v1→current migration requires re-encryption (AAD
was not present in v1), while v2→current is rename-only.
Add the migration tooling needed to upgrade vault entries from legacy
encryption scheme identifiers (v1/v2) to the simplified v6 names.

Migration script (scripts/migrate-encryption.js):
- Two modes: fast (rename-only for v2/convergent-v1) and full
  (re-encrypt for v1 whole/framed that lacked AAD)
- Dry-run by default, --execute to apply, --passphrase for v1 re-encryption
- Iterates vault entries, classifies each, and prints a detailed report
- Available as `npm run upgrade`

CasService changes:
- legacyMode constructor option skips assertCurrentScheme and maps legacy
  scheme names to current equivalents during readManifest
- readManifestRaw() returns raw decoded manifest without scheme assertion
  or Manifest construction — migration entry point
- AAD computation is conditionally skipped for v1 legacy schemes across
  all restore/verify paths via originalSchemeMap WeakMap tracking

schemes.js additions:
- mapToCurrentScheme() maps legacy identifiers to current names
- isLegacyNoAad() detects v1 schemes that used no AAD
Comprehensive breaking changes doc covering:
- Encryption scheme simplification (5→3) with migration matrix
- Default scheme changes (CDC→convergent, fixed→framed)
- CasService constructor requiring chunker + compressionAdapter
- New CryptoPort methods (hmacSha256, encryptBufferWithNonce, etc.)
- ManifestSchema.scheme now required
- New manifest fields (formatVersion, manifestHash)
- Behavioral changes (AAD always on, KDF policy enforced, caps)
- Troubleshooting section with error codes and fixes
CHANGELOG: headed 6.0.0, Breaking Changes subsection, merged dupes
STATUS: v6.0.0 versions, honest state updated, broken links removed
README: UPGRADING.md linked, legacy scheme pointer added
GUIDE: migration script description updated (no longer stub)
ADVANCED_GUIDE: migration wording fixed (rename vs re-encrypt)
SECURITY: sha256 snippet updated to reflect async CryptoPort
ARCHITECTURE: full rewrite — all modules, ports, adapters, pipelines
API.md: 13 fixes — missing params, methods, signatures, deprecations
README: verified clean — no edits needed
BEARING: verified clean — no edits needed
VISION: added convergent key derivation to defense-in-depth tenet
STATUS: verified clean — no edits needed
Critical (4):
- Migration script in npm package (scripts/ + UPGRADING.md in files)
- Schemeless encrypted manifests now classified as full migration
- Vault read errors propagate (only "no vault ref" is caught)
- Manifest hash verified BEFORE legacy scheme mapping

High (8):
- convergent-v1 classified as fast rename (not re-encryption)
- --key-file removed from docs (not implemented)
- Full migration preserves compression metadata, uses streaming
- Documented imports fixed to use root package exports
- docs/WALKTHROUGH.md updated (20+ stale v1/v2 references)
- .mcp.json added to .gitignore
- EventEmitter claim replaced with ObservabilityPort docs
- Scheme constants exported from root package

Medium (6):
- Migration detects JSON vs CBOR codec per entry
- README AAD table fixed (whole = slug-only, not slug+frame)
- API.md CasService example uses valid imports
- Migration script refactored for unit testing
- JSR includes migration script and UPGRADING.md
- JSDoc signatures fixed in migration script

Low (2):
- Migration classification tests added
- Legacy mode hash verification test added
Critical (4 — 2 real bugs, 2 tracked gates):
- CBOR migration now preserves codec (codec-keyed writer services)
- Schemeless encrypted manifests handled in legacyMode readManifest
- Fast migration rewrites manifest blob directly (preserves Merkle trees)
- Version 5.3.3 is tracked release gate (card 5), not a bug

High (4 — 2 real, 2 tracked):
- .mcp.json removed from git tracking
- readManifestRaw documented as skipping hash verification
- Full migration preserves chunking strategy via resolveChunker
- JSR Deno panic is tracked release gate

Medium (3):
- Removed dead vault error handling code
- Hash verification test made strict (no longer accepts both outcomes)
- Backlog acceptance criteria updated

Low (2):
- Markdown blank line violations fixed
- Backlog status reconciled with criteria
Separated value imports from type re-exports in index.d.ts to
avoid dual resolution paths that trigger deno_ast text change
overlaps. The JSR publish still panics on Deno 2.6.7 due to
an upstream deno_ast bug with overlapping TextChange entries —
filed as a known release gate issue. npm publish is unaffected.
Import types into scope (for use in class declarations) AND
re-export them (for consumer access). The prior refactor
only re-exported without importing, breaking tsc --noEmit.

Note: JSR publish still panics on Deno 2.6.7 due to a
pre-existing deno_ast bug (confirmed: also fails on main).
This is not a regression — tracked as upstream issue.
git-cas --version now shows "6.0.0+abc1234" (semver + short SHA).
In dev: SHA read from git at runtime. In published packages: SHA
baked into build-info.json via prepublishOnly stamp script.

- scripts/stamp-build.js writes build-info.json
- src/build-version.js resolves version string (stamped → git → plain)
- build-info.json gitignored but included in npm files
- npm run stamp for manual stamping
Upgraded bijou/bijou-tui/bijou-node from v3 to v5.0.0.

12 design cards covering full TUI modernization:
- TUI-001: createFramedApp + startApp (foundation)
- TUI-002: boxV3 → boxSurface (breaking fix)
- TUI-003: Status bar
- TUI-004: Toast notifications (replace custom impl)
- TUI-005: Badge components
- TUI-006: Layout primitives (hstack/vstack/flex/grid)
- TUI-007: Help overlay
- TUI-008: Merkle DAG viewer (dagPane)
- TUI-009: Interactive store wizard
- TUI-010: Pager scrollable content
- TUI-011: Accordion detail pane
- TUI-012: Animated view transitions
Upgraded @flyingrobots/bijou, bijou-tui, bijou-node from 3.0.0 to 5.0.0.
Added @flyingrobots/bijou-tui-app 5.0.0.

Breaking fix: boxV3 → boxSurface (6 call sites in dashboard-view.js).

12 design cards for full TUI modernization:
- TUI-001: createFramedApp + startApp (foundation)
- TUI-002: boxV3 → boxSurface (done in this commit)
- TUI-003–012: Status bar, toasts, badges, layout primitives,
  help overlay, Merkle DAG viewer, store wizard, pager,
  accordion detail pane, animated transitions
TUI-001 Phase 1: replaced run() from bijou-tui with startApp()
from bijou-node. Added GIT_CAS_THEME via extendTheme(CYAN_MAGENTA)
with palette colors mapped to v5 status tokens. Test mocks updated
to mock bijou-node instead of bijou-tui for the runner.
TUI-005: Replaced custom chipSurface/chipText with Bijou v5 badge()
component. Deleted CHIP_TONES, chipSurface, chipText from theme.js.
14 badge call sites in dashboard-view, manifest-view, encryption-card.

TUI-004: Replaced ~260 lines of custom toast system with Bijou v5
built-in notification system (createNotificationState, pushNotification,
tickNotifications, renderNotificationStack). Deleted: addToast,
dismissToast, animateToast, updateToast, startToastExit,
renderToastSurface, renderToastShadow, toastSlideOffset,
renderToastStack, and all custom toast rendering.
The pager was set to null on move/page but never recreated
from the manifest cache. Now rebuilds from cached manifest
when navigating, so scrollbar persists across entry changes.
TUI-003: Persistent status bar showing vault encryption status,
entry count, selected slug, view mode, and git branch. Footer
condensed from 4 lines to 3. Git branch loaded asynchronously.

TUI-007: Help overlay triggered by ? key. Shows all keybindings
organized by group (General, Navigation, Layout, Views, Treemap,
Detail). Dismisses on ? or Escape. 6 new tests.

TUI-011: Collapsible accordion sections in manifest detail pane.
Metadata expanded by default, other sections (Encryption,
Compression, Chunking, Chunks, Sub-Manifests) collapsed.
j/k navigates sections, space/enter toggles. 14 new tests.
TUI-013: Entry list now uses full terminal width — no more truncated
columns. Enter/l opens full-screen manifest inspector with accordion.
Escape/h returns to list. Removed splitPaneLayout, Tab pane switching,
H/L resize. Treemap/refs views unchanged (already full-screen).

Keybindings simplified: j/k moves cursor in list, navigates sections
in detail. Space/Enter toggles accordion sections. Navigation is now
drill-in/drill-out like ranger/lf.
The list pane box was capped to the table's content width and content
height, creating a small floating island with empty voids to the right
and below. The table columns should stay proportional, but the box
itself should fill the available viewport space.

Remove dead totalWidth/usedWidth from tableSchema now that the box
no longer uses it for width capping.
Entries in the dashboard list are now sorted by manifest size (largest
at top). Entries whose manifests haven't loaded yet sort to the bottom
by slug name. The sort re-applies whenever a new manifest arrives, so
the list progressively settles into size order as data loads.
Press 'm' to open an interactive DAG visualization of the selected
manifest's Merkle tree structure. Shows root -> sub-manifests -> chunks
topology with node labels displaying OID prefixes, chunk counts, and
sizes.

Navigation: arrow keys select nodes (parent/child/sibling), j/k/h/l
scroll, d/u page, escape/q closes.

New files:
- bin/ui/merkle-dag.js — builds dagPane source nodes from manifest data

Also extracts handleKeyMsg and renderNotifications/renderDagOverlay to
satisfy lint complexity and line-count limits.
…TUI-006)

- renderHeaderSurface: manual blitInline + y-offset arithmetic replaced
  with hstackSurface (horizontal badge/label rows) and vstackSurface
  (vertical row stacking)
- renderFooterSurface: manual blit at y=0,1,2 replaced with vstackSurface
- blitInline(): deleted — fully superseded by hstackSurface
- Import hstackSurface and vstackSurface from bijou-tui
Press 'n' to open a 6-step guided store flow inside the dashboard:
  1. File path (text input)
  2. Slug name (auto-derived from filename, editable)
  3. Encryption mode (none / passphrase / convergent)
  4. Compression toggle (gzip on/off)
  5. Chunking strategy (whole / fixed / CDC)
  6. Confirm summary

On confirm, executes cas.store() asynchronously and refreshes the
entry list. Success/error feedback via toast notifications.

New files:
- bin/ui/store-wizard.js — wizard state machine, key handlers, rendering
View switches now animate with wipe (treemap) or fade (all others)
effects that progressively reveal the new view over 150ms. The
transition is timestamp-based — progress is computed at render time
from Date.now() without extra tick commands, keeping the update
pipeline zero-cost.

Wipe effect reveals columns left-to-right. Fade effect reveals rows
top-to-bottom. Both clear unrevealed cells to blank during the
transition window.

Set REDUCE_MOTION=1 to disable all animations. When motion is
reduced, startTransition() returns null and no visual effects apply.

Transitions fire on: drawer open/close, detail view enter/exit,
treemap launch.
surface.set() expects a cell object, not a string — passing a plain
string crashed with 'Cannot read properties of undefined'. Use
fill({ char: ' ', empty: true }, ...) to clear regions during wipe
and fade transitions, which is the documented API for cell clearing.
New lane: docs/method/backlog/v6.0.0-polish/

Cards distilled from four audit documents (detailed screen breakdown,
scorecard, full audit, V6 system design). Focuses on actionable fixes
within git-cas — upstream bijou proposals excluded.

POL-001: String sludge in manifest-view.js (toJSON in view, join)
POL-002: String sludge + boundary violation in vault-report.js
POL-003: String sludge in encryption-card.js (surfaceToString)
POL-004: Git commit parsing in UI layer (history-timeline.js)
POL-005: Raw ANSI escape codes in progress.js
POL-006: Magic numbers and rhythm violations
POL-007: View-state leakage (viewport logic in render functions)
POL-008: Manual clipping instead of bijou clipToWidth
POL-009: Pseudo-shader transitions instead of bijou shaders
POL-010: Manual grid math in heatmap.js
POL-011: String-based geometry in store-wizard.js

Also adds .obsidian/ and docs/ to eslint ignores, and macOS junk
files to .gitignore.
App-specific component blocks extracted from the Bijou BigBro audit.
These are application-level compositions of bijou primitives, not
upstream library features.

POL-012: AssetCard block (unified asset metadata card)
POL-013: MerkleExplorer block (table/tree/DAG toggle)
POL-014: HealthDashboard block (structured doctor report)
POL-015: WizardBlock (reusable step-based wizard infrastructure)
POL-016: OperationFeed block (persistent operation log + progress)
POL-017: HeatmapBlock (proper grid component)
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 4, 2026

Important

Review skipped

Too many files!

This PR contains 199 files, which is 49 over the limit of 150.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 8027b157-77d2-414e-a175-e58cd57420f2

📥 Commits

Reviewing files that changed from the base of the PR and between 34da76c and eeae94a.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (199)
  • .github/workflows/release.yml
  • .gitignore
  • ADVANCED_GUIDE.md
  • ARCHITECTURE.md
  • BEARING.md
  • CHANGELOG.md
  • CLAUDE.md
  • Dockerfile
  • GUIDE.md
  • README.md
  • ROADMAP.md
  • SECURITY.md
  • STATUS.md
  • UPGRADING.md
  • VISION.md
  • bin/build-version.js
  • bin/git-cas.js
  • bin/ui/blocks/asset-card.js
  • bin/ui/blocks/health-dashboard.js
  • bin/ui/blocks/heatmap-block.js
  • bin/ui/blocks/merkle-explorer.js
  • bin/ui/blocks/operation-feed.js
  • bin/ui/blocks/wizard-block.js
  • bin/ui/components/short-sha.js
  • bin/ui/context.js
  • bin/ui/dashboard-cmds.js
  • bin/ui/dashboard-view.js
  • bin/ui/dashboard.js
  • bin/ui/encryption-card.js
  • bin/ui/heatmap.js
  • bin/ui/history-timeline.js
  • bin/ui/manifest-view.js
  • bin/ui/merkle-dag.js
  • bin/ui/progress.js
  • bin/ui/repo-treemap.js
  • bin/ui/shaders/bak-sneppen.js
  • bin/ui/shaders/fractal-zoom.js
  • bin/ui/shaders/merkle-tree.js
  • bin/ui/shaders/organic-flow.js
  • bin/ui/shaders/phase-portrait.js
  • bin/ui/store-wizard.js
  • bin/ui/theme.js
  • bin/ui/vault-report.js
  • docs/API.md
  • docs/MARKDOWN_SURFACE.md
  • docs/WALKTHROUGH.md
  • docs/archive/BACKLOG/TR-013-guide-accuracy-audit.md
  • docs/audit/2026-04-26_bijou-bigbro-audit.md
  • docs/audit/DETAILED-SCREEN-BREAKDOWN.md
  • docs/audit/SCORECARD-AND-HOMEWORK.md
  • docs/design/0020-method-adoption/witness/verification.md
  • docs/design/TR-013-guide-accuracy-audit.md
  • docs/design/V6-TUI-SYSTEM-DESIGN.md
  • docs/method/backlog/README.md
  • docs/method/backlog/bad-code/SEC_vault-passphrase-verifier-gap.md
  • docs/method/backlog/bad-code/TR_platform-dependency-leaks.md
  • docs/method/backlog/bad-code/TUI_store-wizard-execution-gap.md
  • docs/method/backlog/cool-ideas/TR_manifest-signing.md
  • docs/method/backlog/cool-ideas/TR_streaming-decryption.md
  • docs/method/backlog/cool-ideas/TR_vault-privacy-mode.md
  • docs/method/backlog/cool-ideas/TUI_cli-adaptive-table.md
  • docs/method/backlog/cool-ideas/TUI_operation-feed-drawer.md
  • docs/method/backlog/cool-ideas/TUI_os-keychain-auto-discovery.md
  • docs/method/backlog/cool-ideas/TUI_segmented-manifest-view.md
  • docs/method/backlog/cool-ideas/TUI_title-screen-stats.md
  • docs/method/backlog/v6.0.0-polish/POL-001_string-sludge-manifest-view.md
  • docs/method/backlog/v6.0.0-polish/POL-002_string-sludge-vault-report.md
  • docs/method/backlog/v6.0.0-polish/POL-003_string-sludge-encryption-card.md
  • docs/method/backlog/v6.0.0-polish/POL-004_boundary-violation-history-timeline.md
  • docs/method/backlog/v6.0.0-polish/POL-005_raw-ansi-progress.md
  • docs/method/backlog/v6.0.0-polish/POL-006_magic-numbers-rhythm.md
  • docs/method/backlog/v6.0.0-polish/POL-007_view-state-leakage.md
  • docs/method/backlog/v6.0.0-polish/POL-008_manual-clipping.md
  • docs/method/backlog/v6.0.0-polish/POL-009_transition-shaders.md
  • docs/method/backlog/v6.0.0-polish/POL-010_heatmap-grid-math.md
  • docs/method/backlog/v6.0.0-polish/POL-011_wizard-string-geometry.md
  • docs/method/backlog/v6.0.0-polish/POL-012_asset-card-block.md
  • docs/method/backlog/v6.0.0-polish/POL-013_merkle-explorer-block.md
  • docs/method/backlog/v6.0.0-polish/POL-014_health-dashboard-block.md
  • docs/method/backlog/v6.0.0-polish/POL-015_wizard-block.md
  • docs/method/backlog/v6.0.0-polish/POL-016_operation-feed-block.md
  • docs/method/backlog/v6.0.0-polish/POL-017_heatmap-block.md
  • docs/method/backlog/v6.0.0/REL_breaking-changes-doc.md
  • docs/method/backlog/v6.0.0/REL_docs-accuracy-audit.md
  • docs/method/backlog/v6.0.0/REL_migration-script.md
  • docs/method/backlog/v6.0.0/REL_signpost-rewrite.md
  • docs/method/backlog/v6.0.0/REL_version-bump.md
  • docs/method/backlog/v6.x-tui/TUI_accordion-detail-pane.md
  • docs/method/backlog/v6.x-tui/TUI_animated-transitions.md
  • docs/method/backlog/v6.x-tui/TUI_badge-components.md
  • docs/method/backlog/v6.x-tui/TUI_box-surface-migration.md
  • docs/method/backlog/v6.x-tui/TUI_framed-app-shell.md
  • docs/method/backlog/v6.x-tui/TUI_fullscreen-detail-view.md
  • docs/method/backlog/v6.x-tui/TUI_help-overlay.md
  • docs/method/backlog/v6.x-tui/TUI_layout-primitives.md
  • docs/method/backlog/v6.x-tui/TUI_merkle-dag-viewer.md
  • docs/method/backlog/v6.x-tui/TUI_pager-scrollable-content.md
  • docs/method/backlog/v6.x-tui/TUI_status-bar.md
  • docs/method/backlog/v6.x-tui/TUI_store-wizard.md
  • docs/method/backlog/v6.x-tui/TUI_toast-notifications.md
  • docs/method/release.md
  • docs/method/retro/0021-store-write-backpressure/enforce-store-backpressure.md
  • docs/method/retro/0022-git-persistence-read-blob-stream/add-read-blob-stream.md
  • docs/method/retro/0023-casservice-read-blob-stream-integration/use-read-blob-stream-in-restore.md
  • eslint.config.js
  • examples/v6-blocks/dashboard-v6.js
  • examples/v6-blocks/health-v6.js
  • examples/v6-blocks/merkle-v6.js
  • index.d.ts
  • index.js
  • jsr.json
  • package.json
  • scripts/migrate-encryption.js
  • scripts/release/verify.js
  • scripts/stamp-build.js
  • src/domain/bytes/ByteLayout.js
  • src/domain/encoding/base64.js
  • src/domain/encoding/hex.js
  • src/domain/encoding/utf8.js
  • src/domain/encryption/schemes.js
  • src/domain/helpers/buildKdfMetadata.js
  • src/domain/schemas/ManifestSchema.js
  • src/domain/services/CasService.d.ts
  • src/domain/services/CasService.js
  • src/domain/services/ConvergentEncryption.js
  • src/domain/services/KeyResolver.js
  • src/domain/services/PrefetchWindow.js
  • src/domain/services/VaultService.js
  • src/domain/services/rotateVaultPassphrase.js
  • src/helpers/aesGcmMeta.js
  • src/helpers/canonicalBase64.js
  • src/helpers/kdfPolicy.js
  • src/infrastructure/adapters/FileIOHelper.js
  • src/infrastructure/adapters/NodeCompressionAdapter.js
  • src/infrastructure/adapters/NodeCryptoAdapter.js
  • src/infrastructure/adapters/WebCryptoAdapter.js
  • src/infrastructure/chunkers/CdcChunker.js
  • src/infrastructure/chunkers/FixedChunker.js
  • src/infrastructure/codecs/CborCodec.js
  • src/infrastructure/codecs/JsonCodec.js
  • src/package-version.js
  • src/ports/ChunkingPort.js
  • src/ports/CodecPort.js
  • src/ports/CompressionPort.js
  • src/ports/CryptoPort.js
  • src/ports/GitPersistencePort.js
  • test/integration/agent-cli.test.js
  • test/integration/round-trip.test.js
  • test/integration/vault.test.js
  • test/unit/cli/build-version.test.js
  • test/unit/cli/dashboard.launch.default.test.js
  • test/unit/cli/dashboard.launch.test.js
  • test/unit/cli/dashboard.test.js
  • test/unit/cli/encryption-card.test.js
  • test/unit/cli/manifest-view.test.js
  • test/unit/cli/repo-treemap.test.js
  • test/unit/cli/version.test.js
  • test/unit/docs/guide-examples.test.js
  • test/unit/docs/markdown-links.test.js
  • test/unit/docs/platform-boundary.test.js
  • test/unit/domain/bytes/ByteLayout.test.js
  • test/unit/domain/encoding/base64.test.js
  • test/unit/domain/encoding/utf8.test.js
  • test/unit/domain/encryption/migration.test.js
  • test/unit/domain/encryption/schemes.test.js
  • test/unit/domain/services/CasService.aad.test.js
  • test/unit/domain/services/CasService.addRecipient.test.js
  • test/unit/domain/services/CasService.chunking.test.js
  • test/unit/domain/services/CasService.codec.test.js
  • test/unit/domain/services/CasService.compression.test.js
  • test/unit/domain/services/CasService.convergent.test.js
  • test/unit/domain/services/CasService.crypto.test.js
  • test/unit/domain/services/CasService.empty-file.test.js
  • test/unit/domain/services/CasService.envelope.property.test.js
  • test/unit/domain/services/CasService.envelope.test.js
  • test/unit/domain/services/CasService.kdf.test.js
  • test/unit/domain/services/CasService.key-validation.test.js
  • test/unit/domain/services/CasService.legacyMode.test.js
  • test/unit/domain/services/CasService.listRecipients.test.js
  • test/unit/domain/services/CasService.merkle.test.js
  • test/unit/domain/services/CasService.parallel.test.js
  • test/unit/domain/services/CasService.readBlobStream.test.js
  • test/unit/domain/services/CasService.removeRecipient.test.js
  • test/unit/domain/services/CasService.restore.test.js
  • test/unit/domain/services/CasService.restoreStream.test.js
  • test/unit/domain/services/CasService.rotateKey.test.js
  • test/unit/domain/services/CasService.sourceValidation.test.js
  • test/unit/domain/services/CasService.whole-auth.test.js
  • test/unit/domain/services/rotateVaultPassphrase.test.js
  • test/unit/infrastructure/FixedChunker.test.js
  • test/unit/infrastructure/adapters/CryptoAdapter.conformance.test.js
  • test/unit/infrastructure/adapters/FileIOHelper.test.js
  • test/unit/infrastructure/chunkers/CdcChunker.test.js
  • test/unit/infrastructure/chunkers/FixedChunker.test.js
  • test/unit/ports/CryptoPort.aad.test.js
  • test/unit/ports/CryptoPort.test.js
  • test/unit/scripts/release-verify.cli.test.js
  • test/unit/scripts/release-verify.test.js
  • test/unit/vault/VaultService.privacy.test.js

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release/v6.0.0

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 and usage tips.

@flyingrobots flyingrobots marked this pull request as ready for review May 4, 2026 04:12
…oundary

- fix(domain): buffer entire ciphertext for 'whole' scheme before decryption to maintain auth boundary
- fix(infrastructure): ensure NodeCryptoAdapter.decryptBuffer uses wrapDecryptError for consistency
- fix(infrastructure): return Uint8Array from NodeCompressionAdapter.decompressStream
- feat(port): add supports() capability detection to CryptoPort
- docs(changelog): explicitly mention JSR support removal as a breaking change
- test(unit): refactor recipients test into smaller logical files
- test(unit): add regression test for 'whole' scheme authentication boundary
- chore: cleanup .gitignore and improve release verify error messages
@flyingrobots
Copy link
Copy Markdown
Member Author

PR feedback processing summary for eeae94a.

No unresolved inline review threads or actionable top-level review comments were found. I did find and resolve validation/CI issues while processing the branch.

Issue Outcome SHA
Unresolved PR review feedback None found via flat PR comments, review submissions, and thread-aware reviewThreads; no individual unresolved comment reply was needed. n/a
Local unit suite failed after the existing release-verifier message cleanup Updated test/unit/scripts/release-verify.test.js to expect the current missing build-info.json guidance text. 40cf0a8
Deno CI failed the new whole-scheme auth-boundary tests because WebCrypto reports Decryption failed while Node includes Integrity check error in the message Changed the tests to assert the stable INTEGRITY_ERROR code and still assert that decompression is not called before authentication succeeds. 5c965a8
Bun Docker CI failed twice during image setup because Ubuntu mirrors were mid-sync/timing out during apt-get update Added apt install retry/partial-list cleanup in the shared Docker base stage. Latest CI run is green across lint, unit, Docker Node, Docker Bun, Docker Deno, and CodeRabbit. eeae94a

Validation evidence:

Check Result
git diff --check Pass
npx eslint . Pass
npm test Pass: 123 files, 1356 passed, 2 skipped
Local docker compose build test-bun Not run: local Docker daemon unavailable at /Users/james/.docker/run/docker.sock
GitHub Actions on eeae94a Pass: lint, test-unit, test-docker node, test-docker bun, test-docker deno
CodeRabbit Pass: review completed; no unresolved threads surfaced

@flyingrobots flyingrobots merged commit 1d2ca5c into main May 4, 2026
6 checks passed
@flyingrobots flyingrobots deleted the release/v6.0.0 branch May 4, 2026 15:29
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