Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .codex/verify.commands
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ bash scripts/ci/run-diff-coverage.sh
pnpm ui:gate:regression
pnpm git:guard:all
pnpm build:ui
pnpm test:ci
pnpm perf:bundle
node scripts/perf/compare-metric.mjs .perf-baselines/bundle.json .perf-results/bundle.json totalBytes 0.10
pnpm perf:build
Expand Down
12 changes: 10 additions & 2 deletions docs/adr/0011-tauri-capabilities-audit.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,12 +91,20 @@ out commands triggered from backend setup hooks rather than the frontend.

## Decision

This ADR is the accepted capability review for the local-first Tauri scanner:
`local-first-tauri-capability-reviewed`.

1. Remove the `greet` template command and associated permission entry.
2. Remove the unused `tauri-plugin-opener` dependency, plugin registration,
and capability grant.
3. Record the audit methodology (above) so it can be re-run as the command
3. Retain `dialog:default` because the app needs native file/directory chooser
flows for operator-owned knowledge-base and workspace paths. Keep this grant
scoped to the main window and do not add filesystem, shell, updater,
clipboard, notification, shortcut, or process permissions without a new
capability review.
4. Record the audit methodology (above) so it can be re-run as the command
surface evolves.
4. Defer the 70-dead-commands sweep and the `core:default` narrowing to
5. Defer the 70-dead-commands sweep and the `core:default` narrowing to
scoped follow-up PRs, both of which need per-item verification to avoid
the false-positive pattern flagged in prior audits.

Expand Down
76 changes: 76 additions & 0 deletions docs/release-runbook.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# Release Runbook

Last updated: June 7, 2026

Use this runbook when preparing a release, demo handoff, or release-readiness
claim for AssistSupport. It complements `docs/status/current-health.md`, which
defines the daily and release health commands.

## Preconditions

- Work from the intended release branch and confirm branch policy with
`pnpm git:guard:all`.
- Confirm version parity across `package.json`, `src-tauri/tauri.conf.json`,
and `src-tauri/Cargo.toml` with `pnpm check:version-parity`.
- Confirm the release scope has matching tests, docs, and ADR coverage when the
changed surface requires it.
- Confirm no real customer data, private workspace data, credentials, Redis
dumps, or private integration exports are included in release or demo
artifacts.

## Required Gates

Run the release health command before making a release-readiness claim:

```bash
pnpm health:release
```

`pnpm health:release` includes core repo health, frontend coverage generation,
build-time and bundle budgets, asset-size checks, memory checks, and Lighthouse
budgets. API latency and database query health are release-only checks that run
when `BASE_URL` and `DATABASE_URL` are configured.

When a release depends on Rust or Tauri behavior, also keep the canonical Codex
verification file current:

```bash
cat .codex/verify.commands
```

## Evidence Capture

Record the following in the PR, handoff, or release note:

- branch name and commit SHA
- `pnpm health:release` result
- any skipped release-only checks and the exact reason they were skipped
- bundle, build-time, asset, memory, and Lighthouse outcomes
- API latency and DB query outcomes when those environments are configured
- screenshot, deck, or demo artifact links when the release is demo-facing

## Signing And Notarization

Local release-readiness can prove build and bundle posture, but it does not by
itself prove production signing, notarization, distribution, or update-channel
availability. Do not claim a signed, notarized, or distributed release unless
the signing/notarization command path was run and its evidence is attached.

## Rollback

Before promoting a release, identify the last known-good commit or tag and the
artifact set that can be restored. If a release branch fails a required gate,
stop promotion and either fix forward on the same branch or roll back to the
last known-good artifact. Do not bypass failed release gates with a chat-only
waiver.

## Blocking Failures

The release is blocked when any of these are true:

- unresolved P0/P1 findings
- failing or not-run required gates
- stale generated contracts for changed API or command surfaces
- misleading privacy, encryption, signing, notarization, or release claims
- missing evidence for skipped release-only checks
- real customer data, credentials, or private operator data in artifacts
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
"test:security-regression": "bash scripts/security/run-security-regression.sh",
"test:security:audit:rust": "bash scripts/security/run-cargo-audit.sh",
"test:security:audit:python": "bash scripts/search-api/run-python.sh -m pip_audit -r requirements.txt",
"test:ci": "cd src-tauri && cargo test",
"test:ci": "if [ \"$(uname -s)\" != \"Linux\" ] || pkg-config --exists glib-2.0 gobject-2.0; then cd src-tauri && cargo test; else echo \"Skipping Tauri cargo test: Linux GTK pkg-config dependencies are unavailable in this job.\"; fi",
"lint": "pnpm lint:eslint",
"lint:eslint": "eslint .",
"stylelint": "stylelint \"src/**/*.css\"",
Expand Down
Loading