Commit Graph
45 Commits
Author SHA1 Message Date
thePR0M3TH3ANandClaude Fable 5 ab569fe900 TS port slice 4: portable backup, CI, and the agent-blind CLI MVP
- Portable backup (format_version 1): TS imports Python exports, re-exports
  byte-identically under pinned nonce/timestamp, verifies the canonical
  checksum, rejects tampering and unknown versions.
- .github/workflows/ts-parity.yml: typecheck + Node/jsdom parity suite on
  js/ changes, plus a fixture-drift job that regenerates fixtures from
  Python and fails if the committed ones don't match (manifest commit field
  excluded by construction).
- packages/cli — seedpass-js MVP implementing plan section 9.3:
  * reference-first output: entry list/get/search emit sp://entry/<id> refs
    and metadata; secret-bearing fields become has_* flags
  * 'entry reveal' is the only plaintext egress command
  * 'use --clipboard|--exec|--stdin-to' delivers secrets to sinks; --exec
    injects SEEDPASS_SECRET into the child env, never argv or stdout
  * vault export/import over portable backups; capabilities --format json
  * mnemonic comes from SEEDPASS_MNEMONIC env, never the command line
- CLI tests prove the blindness properties: derived password matches the v2
  fixture, TOTP at pinned time, secrets absent from all default output and
  from sink-delivery confirmations.
- 125 core parity tests (Node + jsdom) + 11 CLI tests green.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-08-13 10:40:56 -04:00
thePR0M3TH3ANandClaude Fable 5 89638b1d99 Add repo memory layer and agent governance
Co-Authored-By: Claude Fable 5 <[email protected]>
2026-08-12 20:57:56 -04:00
thePR0M3TH3ANandClaude Opus 5 7047a5dfed Add an SBOM, and fix the torch randomness nits (L4, L5)
L5: dependency-audit.yml now generates a CycloneDX SBOM from
requirements.lock and uploads it. pip-audit answers "are there known CVEs
today"; an SBOM answers "which exact versions were in this build", which is
the question that arises when something is disclosed later against a release
already in the wild.

Verified against the real tool rather than written from memory -- the first
flag spelling (--output-format / --outfile) does not exist in cyclonedx-py
and would have failed in CI. The working form is
`--of json --output-reproducible -o <file>`, which emits CycloneDX 1.6 with
96 components and records [email protected], [email protected],
[email protected], [email protected], [email protected], [email protected] and
[email protected].0 at exact versions.

L4: torch/services/memory/index.js built its temp filename from Date.now()
plus Math.random() before an atomic rename -- predictable enough to
pre-create or symlink between the write and the rename. Now randomBytes(8).

Also renames the Math.random-derived value in relay-health.mjs from `nonce`
to `probeSuffix` and draws it from randomBytes(6). It is a public probe tag
used to correlate a publish with its readback, not a cryptographic nonce,
and nothing was wrong with it -- but the name invited someone to copy the
pattern somewhere it would matter.

torch has no test/ directory in the repo, so there is no suite to run for
these two files; both were syntax-checked and confirmed to import cleanly.
The SeedPass determinism gate is green (84 tests).

Not done, and recorded as a decision in TODO.md instead: torch/_backups/
holds 5240 tracked files across six dated snapshots. Untracking them is a
large deletion and not something to do as a side effect of an entropy audit.
They currently duplicate every security-relevant grep hit, and bare
`node --test` in torch/ discovers them and fails 18 tests from stale
snapshot code.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01HtNMsKzzFTPURemX7tT19u
2026-07-31 17:34:45 -04:00
thePR0M3TH3AN 367cad6a04 tui2: complete parity phases with settings/relay tools and CI smoke 2026-03-01 20:36:04 -05:00
google-labs-jules[bot]andPR0M3TH3AN b61386b928 fix(ci): update requirements.lock and macos build script
- Regenerate requirements.lock using pip-compile to match CI expectation
- Fix brew install command on macOS to handle existing package
- (poetry.lock was already updated in previous commit)

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 23:40:52 +00:00
thePR0M3TH3AN f6d7785803 Handle pip-audit advisory alias in CI workflows 2026-02-25 21:18:41 -05:00
thePR0M3TH3AN b24247dce5 Fix CI bootstrap by switching tests workflow cache to pip 2026-02-25 21:15:55 -05:00
thePR0M3TH3AN 88c1974ac6 Harden TUI recovery paths and add release integrity gates 2026-02-25 19:18:54 -05:00
thePR0M3TH3AN d83e16baf3 update 2026-02-25 17:30:25 -05:00
thePR0M3TH3AN 03958106e1 Add agent mode, hardened TUI harness, coverage gates, and cross-platform installer smoke CI
This commit delivers four related improvements focused on reliability and automation while preserving existing human/TUI workflows.

1) Agent-first CLI mode (additive)
- Added new `seedpass agent` command group (`src/seedpass/cli/agent.py`) and wired it into CLI root.
- Implemented non-interactive profile bootstrap: `seedpass agent init` with `--seed|--seed-file|--generate-seed` and password env injection (`--password-env`).
- Added policy management commands: `agent policy-show` and `agent policy-set` with allow/deny kind controls.
- Added JSON-based secret retrieval: `seedpass -f <fingerprint> agent get <query> --ttl <sec>` with lease metadata and policy enforcement.
- Kept regular human mode fully available; no behavioral changes to interactive TUI entrypoint.

2) TUI agent harness deepening and stabilization
- Refactored harness into scenario profiles: `core`, `extended`, `stress` with `--scenario` selection.
- Added deterministic seeded stress campaigns: `--stress-cycles`, `--stress-seed`.
- Added scenario-specific required coverage keys and report metadata.
- Added post-condition assertions in extended scenario (archive/restore consistency, lock/unlock retrieval recovery).
- Hardened prompt matching for output variants and fail-fast behavior on non-zero SeedPass exit codes.
- Added harness unit tests for helper logic and control flow.

3) Critical module coverage gate tooling
- Added `scripts/check_critical_coverage.py` to enforce per-module thresholds from coverage JSON and report uncovered functions.
- Added override controls (`--threshold`, `--no-default-thresholds`) and optional JSON result output.
- Integrated coverage JSON generation into CI helper script and optional gate execution via `CRITICAL_COVERAGE_GATE=1`.
- Tuned default thresholds using full-suite baseline and increased strictness:
  - `src/main.py >= 50%`
  - `src/seedpass/core/manager.py >= 60%`
  - `src/seedpass/core/encryption.py >= 80%`
  - `src/seedpass/core/migrations.py >= 90%`
- Added tests for coverage gate parser/analysis logic and targeted manager worker path tests.

4) Installer validation framework for beta/main
- Added cross-platform installer smoke scripts:
  - `scripts/installer_smoke_unix.sh`
  - `scripts/installer_smoke_windows.ps1`
- Added GitHub Actions workflow `.github/workflows/installer-smoke.yml` with:
  - reduced PR matrix
  - full scheduled/manual matrix across OS/branch/mode
  - per-job log capture and artifact uploads for failure triage
- Added installer testing documentation and linked from README.

Additional housekeeping
- Added `.venv/` to `.gitignore`.
- Updated docs for new harness scenarios, seeded stress mode, post-condition metadata, coverage gate usage, and installer testing workflow.
2026-02-23 15:47:59 -05:00
thePR0M3TH3AN 979ba6f678 fix: use bash for pip-audit step 2025-08-06 17:36:27 -04:00
thePR0M3TH3AN 54314cc5b3 ci: treat pip-audit findings as warnings 2025-08-06 17:14:19 -04:00
thePR0M3TH3AN fd419fb943 chore: add poetry and CI tests 2025-08-06 17:06:28 -04:00
thePR0M3TH3AN 68eaa34d76 Add dependency scanning and optional dependency checks 2025-08-05 21:04:50 -04:00
thePR0M3TH3AN 2c44f51fc4 ci: add secret scanning 2025-08-03 10:27:13 -04:00
thePR0M3TH3AN 6f885bd65e Use hashed requirements lock 2025-08-03 10:08:50 -04:00
thePR0M3TH3AN 5acd1d489d chore: add dependency auditing 2025-08-03 08:32:57 -04:00
thePR0M3TH3AN 715952fba6 Ignore ecdsa advisory 2025-07-30 15:25:47 -04:00
thePR0M3TH3AN 160a8fac51 CI: run desktop GUI tests 2025-07-19 19:11:59 -04:00
thePR0M3TH3AN 615be7d325 Add Briefcase build workflow and update README 2025-07-18 18:01:05 -04:00
thePR0M3TH3AN b88a93df29 Add CI test script and update workflow 2025-07-16 15:57:33 -04:00
thePR0M3TH3AN 3bfbda03b4 Fix stress args step on Windows 2025-07-05 12:19:45 -04:00
thePR0M3TH3AN ba2b0e4ace Add security tooling and password length test 2025-07-01 16:44:18 -04:00
thePR0M3TH3AN f7e05a3bc8 Remove mutation tests from CI 2025-07-01 16:32:05 -04:00
thePR0M3TH3AN d3264d231c speed up mutmut 2025-07-01 16:09:08 -04:00
thePR0M3TH3AN bfd83c818d Fix mutmut usage in CI 2025-07-01 15:55:04 -04:00
thePR0M3TH3AN 9ec12bf19f Add mutation testing and contract test 2025-07-01 15:47:29 -04:00
thePR0M3TH3AN 1d580819e7 Enable parallel and stress testing 2025-07-01 15:37:52 -04:00
thePR0M3TH3AN a83679f00e Add real Nostr integration test 2025-07-01 14:27:57 -04:00
thePR0M3TH3AN 5cd7d264f1 Fix Windows tests and add ClientPool fallback 2025-06-29 21:43:33 -04:00
thePR0M3TH3AN b4055209fb CI: avoid python 3.11 on windows 2025-06-29 20:38:44 -04:00
thePR0M3TH3AN 7653e12ad5 Pin Windows Python version 2025-06-29 20:26:14 -04:00
thePR0M3TH3AN a388e9cc77 Add MSYS2 bin to PATH on Windows 2025-06-29 20:15:00 -04:00
thePR0M3TH3AN 47169157bb Fix Windows build setup 2025-06-29 19:52:50 -04:00
thePR0M3TH3AN 1cbcf6f546 Fix MSYS2 secp256k1 package 2025-06-29 19:44:27 -04:00
thePR0M3TH3AN 5654caed35 Fix Windows toolchain package 2025-06-29 19:32:29 -04:00
thePR0M3TH3AN eec7da1c28 Fix Windows build with msys2 secp256k1 2025-06-29 19:15:53 -04:00
thePR0M3TH3AN 37d6547ecc Fix artifact naming per OS 2025-06-29 19:00:52 -04:00
thePR0M3TH3AN df2a776a0a Fix gitattributes and install build tools for CI 2025-06-29 18:00:04 -04:00
thePR0M3TH3AN c02f8d9c10 Use portalocker for cross-platform locking 2025-06-29 17:44:32 -04:00
thePR0M3TH3AN 49c71254fa Update artifact action 2025-06-29 15:39:37 -04:00
thePR0M3TH3AN e7c6dc4732 Update CI workflow for coverage 2025-06-29 15:34:35 -04:00
thePR0M3TH3AN 786f2c2bc5 Add coverage to CI workflow 2025-06-29 15:20:05 -04:00
thePR0M3TH3AN 1a68c1782f Add config and NostrClient tests 2025-06-28 22:10:41 -04:00
thePR0M3TH3AN 15f2dc7a98 docs: clarify install and add CI 2025-06-28 20:25:35 -04:00