49 KiB
v5 Release Evidence Packets
Historical v5 evidence. Current release evidence is in v6 Release Candidate Evidence Packet.
v5.2.5 Release Evidence Packet
This section records the desktop existing-data upgrade fix, migration runbook, release validation, signed artifacts, and Homebrew publication for v5.2.5.
Release scope
Upgrade contract
- A populated desktop database is never treated as a fresh board. Setup offers Use Existing Data, displays representative counts, and secures the database without replacing board rows or imported owner metadata.
- Startup, setup, password, recovery, loading, and login surfaces remain draggable while interactive controls remain clickable.
- Operators whose records already exist in the desktop SQLite workspace do not rerun file migration and do not choose backup recovery.
- Legacy file-backed data migrates into a fresh staging database with the desktop app stopped. The authoritative desktop database is installed only after every writer closes.
- Governed export-bundle import is an explicit Maintenance operation with destructive replacement confirmation. The onboarding Restore Backup card remains picker/preflight only in v5.2.5.
Pre-publication gates
| Gate | Result | Evidence |
|---|---|---|
pnpm check:pnpm-settings |
PASS | Node 26.5.0, pnpm 11.1.1, and the repository package-manager contract agree |
pnpm audit --prod --audit-level=high |
PASS | Zero high or critical advisories; one low and one moderate advisory remain documented below |
pnpm lint and pnpm lint:budget |
PASS | Zero errors; 595 warnings remain within the 600-warning budget |
pnpm qa:mantine |
PASS | Mantine migration and bundle-size budgets passed |
pnpm typecheck and pnpm build |
PASS | Shared, server, web, CLI, MCP, and desktop workspaces passed |
pnpm test:unit |
PASS | All workspace suites passed |
| Focused existing-data and auth regression suites | PASS | Web 12/12; server 42/42; desktop 61/61 |
pnpm desktop:check:electron-artifacts |
PASS | Main and preload output preserved Electron runtime imports and rejected installer-shim patterns |
pnpm smoke:cli-mcp |
PARTIAL | Build and version checks passed; live read/write smoke skipped because no test API key was set |
pnpm test:e2e |
PASS | 36/36 across Chromium, mobile Chromium, and mobile WebKit using an isolated temporary data store |
pnpm desktop:smoke:mac:local |
PASS | ARM64 unpacked app and isolated production staging passed |
pnpm desktop:package:mac:unsigned |
PASS | v5.2.5 ARM64 DMG, ZIP, blockmaps, update metadata, and app bundle produced |
pnpm validate:release -- --version 5.2.5 |
PASS | Versions, scripts, docs, and local build artifacts passed |
| Isolated populated SQLite packaged upgrade | PASS | Unsigned app selected Use Existing Data, showed 2/3/1/1/1 counts, and preserved every count plus migrated owner and task-owner metadata through password setup |
| Packaged drag-region and control contract | PASS | Electron reported drag for the setup surface and no-drag for controls; Agent Ready remained clickable and selected |
| Independent standards and specification review | PASS | Two separate reviewers found the publication-proof and MCP-version gaps; both were corrected before commit |
| Repository Copilot review | PASS | Reviewed all 19 changed files on PR #922; its two documentation consistency findings were corrected before merge |
The residual production advisories are body-parser low-severity
GHSA-v422-hmwv-36x6 and @hono/node-server moderate-severity
GHSA-frvp-7c67-39w9. The latter applies to Windows static-file serving in a
transitive MCP dependency; the Veritas MCP package uses stdio and the supported
desktop target is macOS. Neither advisory crosses the release gate's
high/critical threshold. Both remain visible rather than being hidden behind an
unsafe major-version override.
Direct Claude CLI review was unavailable because Claude Code had no authenticated session and GitHub Copilot CLI returned no quota. The repository Copilot reviewer supplied the available external review gate on PR #922.
Publication evidence
The annotated tag peels to release commit
55e621d14756799ee9b2d1ab4467013186776ae9. Desktop Release run
#30019865167
completed successfully in 10m38s and published all seven expected assets.
Independent downloads matched both the release-attached checksum files and the
GitHub asset digests:
| Artifact | Bytes | SHA-256 |
|---|---|---|
Veritas-Kanban-5.2.5-mac-arm64.dmg |
268,133,388 | 056d448ad20adf03fe0a32ac0dc12bf3e4b384c1b7a6c8419edffc803322f688 |
Veritas-Kanban-5.2.5-mac-arm64.dmg.blockmap |
279,312 | 88ee282ac0980231c92097d00ac69c19423df889bf1a865bbb11803d401d75bf |
Veritas-Kanban-5.2.5-mac-arm64.dmg.sha256 |
101 | 59892a48108017cf8d3c7217f908e0f4638e00e86ce457e0f876ef82f488dbe2 |
Veritas-Kanban-5.2.5-mac-arm64.zip |
271,243,007 | 3f1816de7ae46d5e0541209f8acd65ffa32a47bd5caeedd9546358557e66fced |
Veritas-Kanban-5.2.5-mac-arm64.zip.blockmap |
279,514 | ecf30e86035a9b2e531f8632401bf28033019c82215b17cb32ee321dd44f456f |
Veritas-Kanban-5.2.5-mac-arm64.zip.sha256 |
101 | 7399226b582c5e776d8ab5096dd94a20453309b053f8395bb2d9288ff1bbfb93 |
latest-mac.yml |
530 | 1a88552cc0887e03acd25db3d6af30bb764b05892a4a0d8fc2ba94acec73b94e |
latest-mac.yml reports version 5.2.5, names the published ZIP and DMG, and
matches their byte sizes and SHA-512 values. The extracted ZIP app and DMG both
pass strict code-signing verification, Gatekeeper acceptance as Notarized
Developer ID, and stapled-ticket validation. The app is signed by Developer ID
Application: Digital Meld, Inc. (RLBHD62MPW) with hardened runtime.
The downloaded signed app launched under an isolated profile and returned
version 5.2.5 from /api/health. The setup path rendered, Agent Ready
remained clickable, and dragging the non-control setup header physically moved
the window. It then quit cleanly through the native app menu.
Homebrew issue
#32 and PR
#33 publish the ZIP checksum
above. The registered tap passed brew style --cask,
brew audit --cask --strict --online, brew install --cask --dry-run, and
brew livecheck. A stopped-app laptop upgrade from 5.2.4 to 5.2.5 preserved a
host-specific empty board with PRAGMA quick_check returning ok and matching
0/0/0/0/0 task, Squad Chat, telemetry, workflow-definition, and workflow-run
counts. The pre-upgrade snapshot is retained under the desktop workspace's
backups/pre-upgrade-20260723-103736 directory. After launch, port 3001 was
owned by the packaged application and bundled Resources/server/dist/index.js,
and /api/health returned 5.2.5.
Source merge, GitHub release publication, signed runtime verification, Homebrew availability, and a host-specific data check are separate gates; none substitutes for another.
v5.2.2 Release Evidence Packet
This section records the July 2026 UI-audit remediation and v5.2.2 release state. It supplements the retained v5.0.0 evidence below. Evidence is limited to public issue, pull request, workflow, and sanitized command results.
Executive Summary
v5.2.2 fixes the Electron packaging defect that made the signed v5.2.1 macOS application recursively launch the npm installer shim instead of opening a window. It also completes the six web findings from the Apple-design audit: keyboard board movement, compact Settings and navigation, reachable mobile Board Chat, responsive Scoring Profiles, preference-aware overlays, and compositor-safe dashboard motion.
The source release is published from 4b84eccd1bf827c842e93a82afd0240e6855b3df.
After the team accepted the updated Apple agreement, Desktop Release attempt 4
signed, notarized, stapled, and published the macOS artifacts. Independent
downloads matched GitHub digests and attached sidecars. The signed ZIP app
launched with an isolated profile, reported version 5.2.2, completed a current
version update check, reopened cleanly, and quit without remaining processes.
The Homebrew cask update passed its registered-tap gates and merged in #23.
| Field | Value |
|---|---|
| Release version | 5.2.2 |
| Git tag | Annotated v5.2.2; object 81ce4928e457c91a16a20827ddac1a94fb8f4170 |
| Release commit | 4b84eccd1bf827c842e93a82afd0240e6855b3df |
| GitHub release | https://github.com/BradGroux/veritas-kanban/releases/tag/v5.2.2 |
| Desktop Release run | https://github.com/BradGroux/veritas-kanban/actions/runs/29213420721 |
| Release state | Published, signed/notarized, independently verified, and available through Homebrew |
| Evidence date | 2026-07-12 |
| Toolchain | macOS 26.5.1; Node 26.5.0; pnpm 11.1.1; Playwright Chromium and WebKit; Docker legacy build |
Issue And Pull Request Traceability
| Issue | Priority | Outcome | Pull request | State |
|---|---|---|---|---|
| #809 | Critical | Externalize Electron runtime APIs, reject emitted installer shims, and restore a single native window | #817 | Acceptance complete |
| #810 | High | Make compact Settings navigation visible and stack dense controls | #820 | Closed |
| #811 | High | Prevent mobile navigation collisions and restore Board Chat | #821 | Closed |
| #812 | High | Restore keyboard movement, ordering, announcements, rollback, and focus | #818 | Closed |
| #813 | Medium | Add a deliberate compact Scoring Profiles master-detail flow | #826 | Closed |
| #814 | Medium | Remove layout-driven dashboard animation and honor reduced motion | #822 | Closed |
| #815 | Medium | Honor transparency/contrast preferences and dismiss stale tooltips | #819 | Closed |
| #816 | Tracker | Apple-design audit coverage and final native follow-up | #817-#822, #826 | Acceptance complete |
| #828 | Release QA | Repair stale release E2E selectors without changing product behavior | #829 | Closed |
| #830 | Release docs | Preserve this evidence and the v5.2.2 freshness sweep | this PR | Acceptance complete |
PR #824 additionally stabilized storage mutation ordering and asynchronous startup/teardown behavior discovered while exercising the release candidate. PR #827 aligned all workspace versions at 5.2.2 and published the release source. Tracker #796 remains open for a non-sensitive external follow-up; its private advisory context is intentionally not reproduced here.
Electron Root Cause And Remediation
The desktop Vite/Rolldown build bundled the npm electron package shim into
desktop/out/main/index.js. At runtime, code expecting Electron APIs received
the shim's executable-path export and recursively spawned install.js, so the
development build and signed v5.2.1 application never rendered a window.
PR #817 keeps electron and electron/* imports external in main and preload
output, adds artifact assertions for forbidden shim markers and required API
bindings, and adds packaged-launch coverage. Development, unsigned, and
downloaded signed v5.2.2 builds each launched one native application window
with no installer recursion. Signed runtime acceptance covered setup,
server/renderer readiness, Keychain status, keyboard focus, native menus,
window chrome, current-version update check, clean quit, reopen, and a second
clean quit with no remaining process or listening port.
Interface Outcomes
- Keyboard users can move tasks within and across columns, including empty columns, with accurate instructions/announcements and predictable focus.
- Settings, mobile navigation, Board Chat, and Scoring Profiles remain usable at 320-430 px without hidden actions or page-level horizontal overflow.
- Overlay materials become solid and more strongly bounded for reduced transparency or increased contrast; opening Task Detail dismisses its trigger tooltip.
- Dashboard transitions name explicit properties and avoid animated layout dimensions. Reduced-motion state changes are immediate.
- Focus states, accessible names, touch-sized primary actions, light/dark themes, and responsive layouts were covered by focused tests and runtime QA.
Verification Matrix
| Gate | Result | Environment and evidence |
|---|---|---|
pnpm install --frozen-lockfile |
PASS | Local clean dependency verification with pnpm 11.1.1 |
pnpm test:unit |
PASS | Desktop 57; server 2107 passed and 2 skipped; web 405 |
pnpm lint |
PASS | 0 errors and 597 warnings, within the 600-warning budget |
pnpm lint:budget |
PASS | Warning budget enforced |
pnpm typecheck |
PASS | All workspaces after shared build |
pnpm build |
PASS | Shared, server, web, CLI, MCP, and desktop outputs |
pnpm qa:mantine |
PASS | Mantine adoption and bundle budgets |
pnpm test:e2e |
PASS | 34/34 across Chromium, mobile Chromium, and mobile WebKit after #829 |
pnpm audit |
PASS | No known production vulnerabilities |
pnpm smoke:cli-mcp |
PARTIAL | CLI/MCP build and metadata passed; live write skipped because no test API key was supplied |
pnpm desktop:package:mac:unsigned |
PASS | ARM64 DMG and ZIP mounted/expanded as 5.2.2; main bundle imports Electron and has no installer-shim marker |
pnpm validate:release -- --version 5.2.2 |
PASS | Version, package, build output, script, and required-doc validation |
pnpm validate:release -- --version 5.2.2 --docker-build |
PASS | Production image veritas-kanban:validate-5.2.2 built with the Docker legacy builder |
pnpm validate:release -- --version 5.2.2 --github |
PASS | Local/origin tag and the published GitHub release verified |
| Pull request CI | PASS | Required build, unit, lint/typecheck, and security checks passed for all merged changes |
| Cross-model review | NOT RUN | Explicitly waived by the release operator for this workstream |
Compatibility, Security, And Rollback
- v5.2.2 requires no schema migration from v5.2.1. Workspace package versions remain aligned, and existing v5 data contracts are unchanged.
- macOS 14+ on Apple Silicon remains the signed desktop target. Linux and Windows packages remain unsigned preview artifacts.
- File-backed writes retain serialized mutation, rollback, recovery, stable activity ordering, and retention behavior covered by the server suite.
pnpm auditand GitHub security checks found no known production dependency vulnerabilities. Evidence contains no credentials or private advisory text.- Because the v5.2.1 desktop bundle cannot launch reliably, users must replace it directly with the signed v5.2.2 app once published. Rollback remains app reinstall plus restoration of a pre-change backup when schema compatibility requires it.
macOS Artifact And Distribution Inventory
| Asset | Size | SHA-256 | Verification |
|---|---|---|---|
Veritas-Kanban-5.2.2-mac-arm64.dmg |
266,283,327 bytes | 358acaa501827fca7e59d67a98b261b07fa9d5e01e3acae9755e8f7c010b86eb |
GitHub digest, sidecar, stapler, Gatekeeper, mounted bundle 5.2.2 |
Veritas-Kanban-5.2.2-mac-arm64.zip |
269,456,458 bytes | 3f85d864a78251c8e1bb94f9914dcab0ce9795cf5a45f64fffdf33337cfb3d4a |
GitHub digest, sidecar, extracted signature, stapler, Gatekeeper, signed launch |
Veritas-Kanban-5.2.2-mac-arm64.dmg.blockmap |
276,119 bytes | c145880aef635f2d6f5153a484db9aa901040abb552545d5890abf391be19085 |
GitHub digest and independent hash |
Veritas-Kanban-5.2.2-mac-arm64.zip.blockmap |
284,294 bytes | f33dd971199454962d32d3b7bf737b5b19bb828302433e1d41e77847aef8443f |
GitHub digest and independent hash |
latest-mac.yml |
530 bytes | d2dc95378935835d2ceaa2ff4d298edf41adf2bb73a58b1b4a83eac72c7ab641 |
Points to the 5.2.2 ZIP and DMG with matching sizes and SHA-512 values |
The app signature identifies Developer ID Application: Digital Meld, Inc.
(RLBHD62MPW), includes hardened runtime and a timestamp, and satisfies its
designated requirement. Stapler and Gatekeeper accept both the DMG and the
extracted ZIP app as Notarized Developer ID.
The signed app launched directly from the downloaded ZIP using an isolated
profile and ports. /api/health returned 5.2.2; setup showed server, renderer,
Keychain, and SQLite readiness; keyboard focus and native menus were operable;
the updater reported 5.2.2 as current; quit, reopen, and quit completed cleanly.
With VoiceOver active, keyboard navigation moved through the AX hierarchy to
the correctly named Copy Diagnostics control; VoiceOver was then disabled and
the isolated app quit with no remaining process or port.
Homebrew tap PR https://github.com/BradGroux/homebrew-tap/pull/23 merged at
292f340a894ea86079abba9b54cf71f1034ae06c. Registered token
bradgroux/tap/veritas-kanban passed style, strict online audit, dry-run
install, and livecheck (5.2.2 ==> 5.2.2).
Documentation Freshness And Known Limits
The v5.2.2 sweep inspected README.md, CHANGELOG.md, AGENTS.md,
docs/FEATURES.md, release notes, compatibility/rollback policy, install/admin
guide, GA checklist, desktop release guide, visual tour, this evidence packet,
and documentation-freshness SOP. User-visible release behavior was already
updated by the implementation and release PRs. The freshness SOP still matches
the workflow and required no behavioral edit.
Open follow-ups:
- #796: retain the non-sensitive external follow-up without exposing private advisory content.
Release Decision
v5.2.2 passes the required source, web, server, CLI, MCP, desktop, signing,
notarization, artifact, signed-runtime, update, and Homebrew gates. The macOS
distribution is approved for installation. The annotated tag peels to release
commit 4b84eccd1bf827c842e93a82afd0240e6855b3df; converting the tag object did
not change source contents or published assets.
v5.0.0 Retained Release Evidence
Retained evidence for the published v5.0.0 release and the v5 follow-up issues:
- #644 completed release evidence packet
- #646 full-load and mobile/PWA evidence
- #649 signed update and rollback evidence
Do not paste secrets, tokens, private keys, raw chat/task content, or unredacted local private paths into this packet.
Candidate Identity
| Field | Value |
|---|---|
| Candidate label | v5.0.0 stable |
| Release version | 5.0.0 |
| Git tag | v5.0.0 |
| Commit SHA | 3380acff8a196833aa06a4ff499a74e789d9cbba |
| GitHub release URL | https://github.com/BradGroux/veritas-kanban/releases/tag/v5.0.0 |
| Desktop Release run | https://github.com/BradGroux/veritas-kanban/actions/runs/27084849504 |
| Desktop Artifacts run | Not used for final signed assets; Desktop Release run produced and uploaded the signed/notarized artifacts. |
| CI run | https://github.com/BradGroux/veritas-kanban/actions/runs/27205274105 |
| Evidence owner | Brad Groux |
| Review date | 2026-06-09 |
Version checks:
package.jsonversion: 5.0.0shared/package.jsonversion: 5.0.0server/package.jsonversion: 5.0.0web/package.jsonversion: 5.0.0cli/package.jsonversion: 5.0.0mcp/package.jsonversion: 5.0.0desktop/package.jsonversion: 5.0.0GET /api/health.version: 5.0.0 from an isolated local server health checkvk --version: 5.0.0- MCP package/version output: package version 5.0.0; stdio server starts from
mcp/dist/index.js
Release Validation
| Gate | Result | Evidence |
|---|---|---|
pnpm install --frozen-lockfile |
PASS | GitHub runs 27084849504 and 27205274105 |
pnpm typecheck |
PASS | Local command on 2026-06-09 |
pnpm lint:budget |
PASS | Local command on 2026-06-09, 0 errors, 598 warnings, budget 600 |
pnpm test:unit |
PASS | Local command on 2026-06-09, desktop 57 tests, server 1885 tests, web 326 tests |
pnpm build |
PASS | Desktop Release run 27084849504 and local release validation build outputs |
pnpm validate:release |
PASS | Local command on 2026-06-09 |
pnpm validate:release -- --github |
PASS | pnpm validate:release -- --github --repo BradGroux/veritas-kanban on 2026-06-09 |
pnpm smoke:cli-mcp |
Covered | CLI version and MCP stdio startup checked; full smoke remains part of reusable candidate checklist |
pnpm desktop:package:mac:unsigned |
Covered | Signed Desktop Release run 27084849504 supersedes unsigned packaging for GA |
pnpm test:load |
PASS | Scheduled QA full-profile run 27205274105 |
Local verification commands retained for this packet:
pnpm exec playwright test e2e/health.spec.ts e2e/prompt-registry.spec.ts e2e/mantine-qa-gate.spec.ts --project=chromium
pnpm exec playwright test e2e/mobile-responsive.spec.ts e2e/pwa-offline.spec.ts --project=mobile-chromium --project=mobile-webkit
pnpm typecheck
pnpm lint:budget
pnpm test:unit
pnpm validate:release -- --github --repo BradGroux/veritas-kanban
macOS Artifact Inventory
Stable v5.0.0 macOS artifacts were produced by Desktop Release run 27084849504 and published under the v5.0.0 release.
| Asset | URL | SHA-256 | Notes |
|---|---|---|---|
| signed DMG | https://github.com/BradGroux/veritas-kanban/releases/download/v5.0.0/Veritas-Kanban-5.0.0-mac-arm64.dmg | f3d0c3a70b66c27c27db527b2cdeb8ac86f174630c951a429eeb59b4080bf0ae |
Downloaded and checksum-matched locally on 2026-06-09. |
| signed ZIP | https://github.com/BradGroux/veritas-kanban/releases/download/v5.0.0/Veritas-Kanban-5.0.0-mac-arm64.zip | bfd1e57fc99b4468f9fd97418c2aa57b51a1e3087966539c60a75c848c595cb1 |
Downloaded and checksum-matched locally on 2026-06-09. |
| DMG blockmap | https://github.com/BradGroux/veritas-kanban/releases/download/v5.0.0/Veritas-Kanban-5.0.0-mac-arm64.dmg.blockmap | 0d10746c0703e1ac1409b9a370ed2bd8195dc25fc8f9e1384f909140f5e00a0e |
Release asset digest. |
| ZIP blockmap | https://github.com/BradGroux/veritas-kanban/releases/download/v5.0.0/Veritas-Kanban-5.0.0-mac-arm64.zip.blockmap | 2eb8b8a93cca84f1579736ce06bf5107edd688c9d941ce83ba3876982ec52d09 |
Release asset digest. |
| stable update metadata | https://github.com/BradGroux/veritas-kanban/releases/download/v5.0.0/latest-mac.yml | 535cd6da5e95dff8dcf869fa2b236a2b1ddcc4dff118f325b41265cb96f14db1 |
Points to Veritas-Kanban-5.0.0-mac-arm64.zip as update path. |
| source archive | https://github.com/BradGroux/veritas-kanban/archive/refs/tags/v5.0.0.zip | GitHub generated | Tag source archive. |
| changelog entry | CHANGELOG.md -> ## [5.0.0] |
n/a | Verified by pnpm validate:release. |
Notarization and Gatekeeper:
codesign --verify --deep --strict --verbose=2passed for the unpacked release ZIP app.codesign -dv --verbose=4showed Developer ID Application: Digital Meld, Inc. (RLBHD62MPW), TeamIdentifierRLBHD62MPW, hardened runtime flag, timestamp 2026-06-07 01:27:02.xcrun stapler validatepassed for the unpacked app.spctl --assess --type execute --verbose=4accepted the unpacked app with sourceNotarized Developer ID.xcrun stapler validatepassed for the DMG.spctl --assess --type open --context context:primary-signature --verbose=4accepted the DMG with sourceNotarized Developer ID.- Clean Mac install screenshot or recording: not captured in this packet.
- First-run profile/workspace data path verified by desktop path unit tests and package metadata; manual signed GUI launch was attempted with an isolated temp profile but did not expose
/api/healthbefore timeout in this environment.
Signed Update And Rollback Drill
This section satisfies the retained evidence target for #649 while recording the limitation that no prior signed v4 baseline asset exists for a true native updater from v4.3.2 to v5.0.0.
| Step | Result | Evidence |
|---|---|---|
| Install signed baseline build | PARTIAL | v5.0.0 signed ZIP and DMG downloaded, checksum-matched, notarization/Gatekeeper passed. A true v4 signed baseline install is blocked because v4.3.2 has no attached release assets. |
| Launch and verify local server health | PARTIAL | Built server health returned version 5.0.0 from isolated data dir. Signed GUI launch through LaunchServices was attempted with isolated HOME, profile, workspace, and ports; the app process started but did not expose health before timeout and wrote no stdout/stderr. |
| Publish or expose higher RC update | NOT RUN | No higher signed candidate exists after v5.0.0. |
| Check for update from native menu | NOT RUN | Requires a lower signed baseline plus higher signed candidate. |
| Download update | NOT RUN | Requires a lower signed baseline plus higher signed candidate. |
| Install update | NOT RUN | Requires a lower signed baseline plus higher signed candidate. |
| Verify updated app/server/web versions | COVERED | All workspace package versions 5.0.0; release validator confirms aligned release docs/assets; /api/health.version returned 5.0.0 from isolated server. |
| Reinstall previous signed DMG | BLOCKED | No previous signed DMG asset is attached to the v4.3.2 release. |
| Verify rollback behavior | DOCUMENTED | docs/V5-COMPATIBILITY-AND-RELEASE-POLICY.md and docs/V5-UPGRADE-INSTALL-ADMIN-GUIDE.md document reinstall plus backup restore as the supported rollback path. |
| Restore backup if schema is incompatible | COVERED | Server unit suite includes backup/recovery coverage; API reference and admin guide document migration recovery and restore-backup endpoints. |
| Record admin recovery notes | COMPLETE | See rollback notes below and the admin guide. |
Rollback notes:
For v5.0.0 GA, updater metadata points to v5.0.0 arm64 ZIP/DMG artifacts.
If a signed macOS build must be rolled back, reinstall the previous signed app
artifact when one exists, then restore the pre-migration backup if the older app
cannot open a newer SQLite schema. The v4.3.2 release does not have attached
signed assets, so a native v4-to-v5 updater drill cannot be completed from
published release assets. Future v5 patch candidates should run the native
update drill from v5.0.0 to the patch candidate before publication.
Migration, Backup, And Restore
| Gate | Result | Evidence |
|---|---|---|
| v4 file-backed backup preserved | COVERED | docs/V5-UPGRADE-INSTALL-ADMIN-GUIDE.md requires dry-run and backup preservation before accepting migration. |
| SQLite migration dry-run | COVERED | API reference documents /api/v1/sqlite/migration/dry-run; release validator confirms migration docs are present. |
| SQLite migration run | COVERED | API reference documents /api/v1/sqlite/migration/run; release validator confirms migration docs are present. |
| Migration journal/report preserved | COVERED | API reference and compatibility policy require migration journal/report retention. |
| Board/task/search/workflow/chat verified | PASS | Local Playwright mobile/desktop smoke and workspace unit tests passed on 2026-06-09. |
| Backup/export created | COVERED | Server unit suite covers integrity backup behavior; API reference documents SQLite backup export. |
| Restore/import verified | COVERED | Server unit suite covers recovery behavior; API reference documents restore-backup and import verification endpoints. |
| Older app refuses newer SQLite schema | DOCUMENTED | Compatibility policy defines SQLITE_UNSUPPORTED_SCHEMA behavior and directs admins to compatible app or pre-migration backup restore. |
Accepted migration risks:
v5.0.0 does not promise destructive down migrations after SQLite migration.
Rollback is app reinstall plus backup restore when schema compatibility blocks
the older app. Preserve the pre-migration file-backed backup and migration
journal before accepting the migration.
Load, Remote, Mobile, And PWA Evidence
This section satisfies the evidence target for #646 with Scheduled QA run 27205274105 and retained k6 artifact 7507319688.
Full load profile:
| Field | Value |
|---|---|
| Target origin | http://127.0.0.1:3001 in GitHub Actions Scheduled QA |
| Seed profile | V5_SEED_TASKS=120, V5_SEED_CHATS=12, V5_HTTP_VUS=20, V5_WS_VUS=30, V5_DURATION=45s, V5_WS_HOLD_MS=40000 |
| k6 command | Scheduled QA load_profile=full, scripts smoke read-load write-load mixed-load ws-stress v5-remote-mix |
| k6 output artifact | https://github.com/BradGroux/veritas-kanban/actions/runs/27205274105/artifacts/7507319688 |
| HTTP p95 | Max p95 across HTTP scripts: 23.454 ms (v5-remote-mix) |
| HTTP error rate | Max HTTP failure/custom error rate: 0.247% (mixed-load, below 1% threshold) |
| WebSocket error rate | 0% (ws-stress; v5-remote-mix WebSocket connect checks also passed 30/30) |
| Known scale ceiling | v5.0.0 supports heavy solo/local or small-team trusted-host use. Larger hosted or SaaS-style deployments need higher seed counts and longer soak windows. |
Remote/mobile smoke:
| Client | Device/OS | Browser version | Result | Evidence |
|---|---|---|---|---|
| Safari-class browser | Playwright iPhone 13 |
WebKit from local Playwright install | PASS | pnpm exec playwright test e2e/mobile-responsive.spec.ts e2e/pwa-offline.spec.ts --project=mobile-webkit |
| Chrome-class browser | Playwright Pixel 5 |
Chromium from local Playwright install | PASS | pnpm exec playwright test e2e/mobile-responsive.spec.ts e2e/pwa-offline.spec.ts --project=mobile-chromium |
| Installed PWA | Browser PWA install metadata and service worker | Chromium and WebKit | PASS | e2e/pwa-offline.spec.ts verifies manifest, static service worker, and offline shell warning. |
PWA stale-client checks:
- Static shell can load from cache: service worker static-shell test.
- API data is not cached for offline replay: service worker excludes
api/. - Offline writes are not queued: offline shell warns that task data and changes require the trusted server.
- Stale client refresh blocks or refreshes before write: compatibility policy documents stale-client refresh behavior; mobile/PWA smoke exercises remote-safe shell behavior.
- Same-origin
/api,/ws, manifest, service worker, and static assets verified: PWA spec verifies manifest/service worker; k6 full profile run 27205274105 covers/apiand/ws.
Known limits to include in release notes:
Mobile/PWA v5.0.0 is responsive web plus installable static shell. It is not a
native offline app and does not queue writes offline. Remote access remains a
trusted-host scenario. Larger hosted deployments need additional load evidence
with higher seed counts and longer soak windows.
Security And Diagnostics
| Gate | Result | Evidence |
|---|---|---|
| Security audit reviewed | COVERED | docs/security.md and v5 release docs retained by release validator. |
| Debug bundle redaction negative fixtures | COVERED | Workspace unit suite passed on 2026-06-09. |
| Scoped API token smoke | COVERED | Workspace unit suite passed on 2026-06-09. |
| Password-session boundary smoke | COVERED | Playwright mobile/login smoke passed locally on 2026-06-09. |
| WebSocket auth/reconnect smoke | PASS | Scheduled QA full k6 run 27205274105. |
| Support bundle contains no private data | COVERED | Workspace unit suite passed on 2026-06-09. |
Security release notes:
No secrets or private app data are retained in this packet. Release evidence
uses GitHub run URLs, release asset digests, sanitized local command summaries,
and temp-profile checks only.
Visual Documentation And Media
The checked-in dummy-data docs media lives in v5 Visual Tour.
| Surface | Docs asset | Candidate proof |
|---|---|---|
| Desktop board | docs/assets/v5/v5-board-overview.png |
Visual tour retained; local desktop QA route smoke passed. |
| Board/workflow/audit GIF | docs/assets/v5/v5-board-to-workflow.gif |
Visual tour retained. |
| Task work view | docs/assets/v5/v5-task-work-view.png |
Visual tour retained; local mobile task-detail smoke passed. |
| Maintenance Center | docs/assets/v5/v5-maintenance-center.png |
Visual tour retained. |
| Mobile/PWA board | docs/assets/v5/v5-mobile-pwa-board.png |
Visual tour retained; mobile Chromium/WebKit smoke passed. |
| Mobile/PWA navigation GIF | docs/assets/v5/v5-mobile-pwa-flow.gif |
Visual tour retained; mobile navigation smoke passed. |
Visual docs notes:
The retained docs media is dummy-data documentation media. Local Playwright
smoke, not screenshots, is the release evidence for current mobile/desktop
rendering in this packet.
Final Decision
| Question | Answer |
|---|---|
| Are all critical/high v5 release blockers closed? | Yes; #649 update-drill limits are documented because no prior signed baseline asset exists. |
| Are all deferred items linked as post-GA issues? | Yes; update drill limitations are recorded in #649 evidence. |
| Are user-visible limits documented in release notes? | Yes; release notes and upgrade guide document PWA/offline and rollback limits. |
| Is this candidate approved for publication? | Already published as v5.0.0; retained evidence is being backfilled for release hygiene. |
Decision notes:
v5.0.0 is already published. This packet backfills durable release evidence and
records two important limits: native updater drill cannot be completed without a
prior signed baseline asset, and larger hosted deployments need additional load
evidence beyond the v5.0.0 full Scheduled QA profile.