mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2026-10-27 07:52:03 +00:00
8.4 KiB
8.4 KiB
Memory Update (2026-02-25)
Docs Cleanup
- Replaced
docs/README.mdcontent that referenced Archivox with a SeedPass-focused docs index. - Updated docs-site default title in
docs/src/config/loadConfig.jsfromArchivoxtoSeedPass Docs.
Outcome
- Removed stale Archivox branding from the docs README and default docs title so the correct SeedPass README/content is displayed.
Supply Chain and Release Integrity (Checklist #8)
- Added a dedicated release integrity workflow at
.github/workflows/release-integrity.yml. - Workflow now enforces lockfile drift checks, runs
pip-audit, builds release artifacts, generatesSHA256SUMS, signs checksum manifest with keylesscosign, and publishes signatures/certs with release assets. - Added
scripts/release_integrity.pyCLI withcheck-lockfile,generate, andverifysubcommands. - Added reusable checksum logic in
src/seedpass/release_integrity.pyand regression tests insrc/tests/test_release_integrity_utils.py. - Updated
docs/security_readiness_checklist.mditem #8 fromNot StartedtoIn Progresswith evidence links. - Added process documentation in
docs/supply_chain_release_integrity.mdand linked it fromdocs/README.mdandREADME.md.
Determinism Regression Guardrail
- Added
src/tests/test_deterministic_artifact_regression.pyto lock deterministic vectors at index352for password, SSH, seed phrase, TOTP, PGP (fingerprint + armored hash), and Nostr keys. - Added repeatability assertions for same-seed/same-index derivation in the same run.
- Logged explicit remaining tasks to finish checklist item #8 in both
docs/supply_chain_release_integrity.mdandTODO.md.
CI Determinism Enforcement
- Expanded deterministic regression vectors to cover indices
0,1,352, and1024across password, SSH, seed phrase, TOTP, and Nostr outputs. - Added pinned PGP vectors for both
ed25519andrsaat index352(fingerprints + armored key hashes). - Added explicit deterministic regression steps to push CI workflows:
.github/workflows/python-ci.yml.github/workflows/tests.yml
Profile Unlock Failure Recovery
- Hardened startup profile selection to avoid fatal crash loops when unlock/decryption fails or is cancelled.
select_fingerprint(...)now returnsFalseon unlock/setup failure instead of always raising; selection menu now keeps the user in-flow.- Added profile recovery flow
recover_profile_with_blank_index()reachable from seed-profile selection menu. - Recovery flow verifies that user-provided seed matches selected fingerprint, then re-encrypts seed and resets local entry index/checksum files to a blank state.
- Fixed "switch to existing profile" path during add-new-seed so it does not call
initialize_managers()without an initializedEncryptionManager. - Added regression tests in
src/tests/test_profile_recovery_flow.pyfor these paths.
TUI Crash Hardening
- Hardened
display_menu()to catch per-actionPasswordPromptError,SeedPassError, and generic exceptions so failures no longer terminate the whole TUI session. - Added graceful timeout-lock recovery messaging when unlock is cancelled/failed after inactivity timeout.
- Fixed incorrect call signature in Add Entry submenu header rendering (
clear_header_with_notification(...)now receivespassword_manager). - Added crash-regression coverage in
src/tests/test_cli_invalid_input.pyfor action failures and timeout-unlock cancellation handling.
Settings/Relay Submenu Hardening
- Added local exception guards in
handle_settings,handle_profiles_menu, andhandle_nostr_menuso submenu actions report failures and return control instead of crashing the TUI. - Added explicit graceful handling for Settings -> Lock Vault unlock cancellations/failures.
- Corrected
clear_header_with_notification(...)call signatures in settings-related submenus to passpassword_manageras first argument. - Added regression tests in
src/tests/test_settings_menu.pyfor:- missing settings handler method
- lock/unlock cancellation
- profiles submenu action failure
Import/Export + Nostr Workflow Guardrails
- Hardened settings menu options for export/import/TOTP export with explicit error messaging (
Export failed,Import failed,2FA export failed) instead of generic crashes. - Added graceful no-path handling for Settings -> Import (
No path entered.). - Hardened CLI subcommand entrypoints in
main.py:- require
--fileforexport/import - catch and report failures for
export,import,search,get, andtotpcommands.
- require
- Added regression tests for these cases in:
src/tests/test_settings_menu.pysrc/tests/test_cli_export_import.py
Installer Dependency Resolution Fix (2026-02-26)
- Root cause of installer failures was a stale
requirements.lockpin (cffi==1.17.1) conflicting withpynacl==1.6.2(requirescffi>=2.0.0on Python >=3.9). - A second hidden source issue blocked clean lock regeneration:
starlette>=0.49.1was incompatible withfastapi>=0.110resolution path (current fastapi metadata requiresstarlette<0.48). - Updated dependency sources to consistent constraints:
src/requirements.txt:starlette>=0.40,<0.48src/runtime_requirements.txt:starlette>=0.40,<0.48pyproject.toml:starlette = ">=0.40,<0.48"
- Regenerated
requirements.lockwith hashes; key resolved pins now include:cffi==2.0.0pynacl==1.6.2fastapi==0.116.1starlette==0.47.3
- Verified the installer-critical step succeeds in a fresh virtualenv:
python -m pip install --require-hashes -r requirements.lock
TORCH Windows Checkout Fix (2026-02-26)
- Root cause: tracked TORCH artifact filenames used
:in timestamps (e.g.CONTEXT_2026-02-15T01:03:31Z.md), which Windows cannot checkout. - Confirmed scheduler/runtime already emits Windows-safe scheduler/memory filenames (
HH-mm-ss), and backup folder names were already sanitized. - Removed all tracked colon-variant duplicates under
torch/src/*andtorch/_backups/*where matching dash-variant files already existed. - Validation:
git ls-files | rg ':'now returns no results.
TORCH Update + Windows Filename Validation (2026-02-26)
- Updated TORCH package to
1e3f88evia tarball install, then rantorch-lock update --forceandnpm install --prefix torch. - Quick validation passed:
npm run --prefix torch lock:check:daily -- --json --quietreturnedlockCount: 0with a full available roster. - Windows compatibility check passed:
git ls-files | rg ':'returned no tracked paths.
GitHub Actions Poetry Cache Bootstrap Fix (2026-02-26)
actions/setup-pythonwithcache: poetryrequirespoetryto already exist on PATH in that same step.- In
.github/workflows/tests.yml, Poetry was installed after setup-python viapipx, causing CI bootstrap failure. - Switched cache mode to
cache: pipto avoid requiring Poetry during Python setup.
pip-audit Advisory Alias Handling (2026-02-26)
- CI failures appeared in
python-cion macOS becausepip-auditsurfaced Starlette issue asCVE-2025-62727while workflows ignored onlyGHSA-wj6h-64fc-37mp. - Updated strict audit workflows to ignore both IDs so the existing temporary exception is robust to advisory ID alias/reporting differences.
- Updated files:
.github/workflows/python-ci.yml,.github/workflows/dependency-audit.yml,.github/workflows/release-integrity.yml.
Poetry Lock Sync for Tests Workflow (2026-02-26)
tests.ymluses Poetry (poetry install), and the job failed becausepyproject.tomlhad drifted frompoetry.lock.- Regenerated
poetry.lockwith Poetry 2.3.2 so lock metadata/dependency graph matches the current project file. - Result: CI should no longer fail with "pyproject.toml changed significantly since poetry.lock was last generated".
CI Black Check Failure Fix (2026-02-26)
tests.ymlfailed atpoetry run black --check .on 9 files (SeedPass tests/core file plus TORCH script/backups).- Applied Black formatting to all reported files and verified
poetry run black --check .passes locally.
Python 3.10 datetime.UTC Compatibility Fix (2026-02-26)
- CI
test (ubuntu-latest, 3.10)failed during test collection becausedatetime.UTCis unavailable on Python 3.10. - Replaced
datetime.UTCusage withtimezone.utcinsrc/seedpass/cli/agent.pyandscripts/ai_tui_agent_test.py. - Verified with targeted tests:
src/tests/test_cli_agent_mode.pyandsrc/tests/test_ai_tui_agent_harness.py.