The README had zero mentions of the TypeScript implementation -- on the branch proposing to make it the main line, a reader (including PR #989's reviewers) would find only the Python product. A bridge section near the top now says what the rebuild is, its status (under independent review; do not put irreplaceable secrets in it yet), and where the migration guide, the vault/identity spec, and the cutover plan live. Deliberately a bridge, not a rewrite: everything below it still accurately describes the Python version, which is what install.sh installs today. Advertising the TS implementation as the product before its review lands would be docs describing an aspirational state -- the exact failure mode this branch has been stamping out. The 14 Python-era planning docs most likely to mislead (tui_v2/v3, index0/atlas, semantic) carry a one-line legacy banner so a reader can tell a historical record from a living document. The full TS-first rewrite -- README, landing page, docs triage, CI scoping, dependabot config -- is specced as a merge-day checklist under the cutover item in TODO.md, so main never advertises a stale product in either direction. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Tkj4rzKBA3uhfgk7kqjsb8
3.8 KiB
TUI v2 Cutover Decision Memo
Legacy (Python implementation). This document describes the Python version, which retires to
legacy/after the TypeScript cutover (PR #989). The TypeScript interactive mode follows the classic v1 menus; TUI v2/v3, index0/atlas, and semantic search were not ported. Kept as historical record.
Date: March 2, 2026
Branch: beta
Decision owner: SeedPass maintainers
Decision
Current branch state: seedpass default interactive routing launches TUI v2 first.
Legacy fallback remains intentionally available during hardening:
seedpass --legacy-tuiseedpass legacyseedpass tui2 --fallback-legacy
Decision Update (March 2, 2026)
Cutover readiness has improved materially since the initial memo draft:
- parity checklist now marks full legacy workflow coverage complete
- Textual interaction suites and parity matrix coverage are in place
- CI now includes both runtime smoke and stronger coverage gates for TUI v2 critical paths
- deterministic Nostr failure-mode resilience tests have been expanded
Given this state, the default routing decision on beta is now technically aligned with implemented gates. Remaining work is focused on release hardening and operational risk controls, not core TUI parity.
Gate Status Snapshot
- Parity closure: Pass
docs/tui_v2_parity_checklist.mdmarksFull legacy workflow coverage: Yes.- Evidence:
artifacts/agent_tui_test/20260302T135526Z/report.jsonartifacts/agent_tui2_test/20260302T135526Z/report.json
- Test coverage and CI gates: Pass (expanded)
- Runtime smoke:
scripts/tui2_check_smoke.sh
- Critical module gate (default in CI runner):
scripts/check_critical_coverage.py- includes
src/seedpass/core/api.py >= 85%
- Focused TUI v2 gate:
scripts/tui2_coverage_gate.sh- enforces:
src/seedpass/tui_v2/app.py >= 78%src/seedpass/core/api.py >= 85%
- Large-vault validation: Pass
src/tests/test_tui_v2_large_vault_validation.pysrc/tests/test_tui_v2_kb_scale_stress.py
- Docs/help alignment: Pass (ongoing maintenance)
- keybinding/palette help updated with landed parity commands
- cutover/fallback command paths documented in parity/checklist docs
- Release safety fallback: Pass
- legacy fallback command/flag paths retained for one-release safety window
Remaining Blockers (Cutover Hardening)
These are now the main blockers for promoting from beta hardening to broad release confidence:
- Nostr resilience soak validation (beyond deterministic unit tests)
- deterministic failure-mode suite now exists:
src/tests/test_nostr_resilience_failure_modes.py
- still recommended:
- optional real-relay soak lane and outage/retry drift capture across environments
- Supply-chain and release-integrity completion
- complete pending items in
docs/supply_chain_release_integrity.md:- release-protection enforcement
- GHSA exception disposition documentation
- maintainer verification runbook evidence
- Operational runbooks and staged rollout evidence
- incident/runbook readiness still open in
docs/security_readiness_checklist.md - staged rollout + rollback drill evidence still needs explicit record
Rollout Recommendation
For the next production-facing release:
- Keep TUI v2 default route.
- Keep legacy fallback enabled for one release.
- Publish release notes with explicit fallback instructions.
- Require passing:
scripts/run_ci_tests.shscripts/tui2_coverage_gate.sh- parity bug-bash harnesses (
ai_tui_agent_test.py,ai_tui2_agent_test.py)
Rollback Plan
If a cutover regression is detected:
- switch default interactive route back to legacy TUI in CLI callback routing
- keep TUI v2 as opt-in path while patching regressions
- publish incident note with repro, mitigation, and re-enable criteria