Commit Graph
208 Commits
Author SHA1 Message Date
thePR0M3TH3ANandClaude Opus 5 3192c9f306 Offer a 24-word master seed, and put the entropy draw beyond reach of any handler
L2: generate_bip85_seed and create_profile_from_generated_seed now take
words_num, accepting 12 or 24 and rejecting anything else with a clear
message. The default stays 12 -- every existing profile uses it, 128 bits is
entirely adequate, and moving the default would change nothing about
existing vaults while surprising anyone creating a new one. 24 is offered
because the master seed protects the whole vault and was the one secret
shorter than the seeds derived beneath it, which already default to 24.

L3: fixed structurally rather than by narrowing exception types.
os.urandom(32) now sits OUTSIDE the try block, so no handler can stand
between the entropy draw and the caller -- an entropy failure is unreachable
by anything that could substitute a value. Also removes a redundant
`except Exception` whose body was identical to the `Bip85Error` branch above
it.

The structural form is stronger than an exception list, and the test says so
precisely: it asserts the OSError reaching the caller is the SAME OBJECT
os.urandom threw, which holds only if nothing caught and repackaged it.
Listing exception types would still leave a handler in the path for someone
to widen later.

Adds five tests: the identity assertion above, 12- and 24-word generation,
the default staying 12, and rejection of 0/11/18/25/-12.

Determinism gate green (89 tests, up from 84). The seed/profile regression
subset is 143 passed with one failure --
test_profile_export_import_round_trip -- confirmed against the pre-change
baseline as pre-existing.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01HtNMsKzzFTPURemX7tT19u
2026-07-31 17:43:24 -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
thePR0M3TH3ANandClaude Opus 5 44935219d1 docs: entropy and RNG integration audit
Audits every security-sensitive random value in src/ against a
Coldcard-class checklist: where each bit of unpredictability originates,
whether that source is present in the production artifact, and what happens
when it fails.

No predictable-fallback defect. Master seed, AES-GCM nonces, TOTP secrets,
Argon2 salts, API tokens and agent leases all come from os.urandom or
secrets and fail closed. The random module is not imported anywhere in
non-test source.

The findings are about how much entropy survives the deterministic
derivation in core/password_generation.py, not about whether it should be
deterministic. Chief among them: _balance_distribution forces exactly L/4 of
each character class into every password, verified 300/300 at five lengths.
That costs 5.7-11.5 bits and, more materially, fingerprints the generator --
a password with exactly a quarter of each class is a strong signal it came
from SeedPass.

Records the compatibility constraint that governs all of it: passwords are
never stored, they are re-derived on demand, and entries carried no
algorithm version. Any in-place change to generate_password was therefore a
data-loss event, not an improvement.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01HtNMsKzzFTPURemX7tT19u
2026-07-31 16:27:05 -04:00
thePR0M3TH3AN 736ad1395c docs: refine TypeScript port plan 2026-06-05 14:58:40 -04:00
thePR0M3TH3AN 5869db84ba docs: add TypeScript web extension port plan 2026-06-05 14:54:17 -04:00
thePR0M3TH3AN 2ab73c50a0 update 2026-03-10 21:39:50 -04:00
thePR0M3TH3AN e79bfd7ba8 docs: update dev control center and v3 plan for 2026-03-10 shipped work
- Health gate: 1145 tests collected, focused suite 181 passed
- Bug fixes: SIGSEGV exit, non-TTY preflight guard, Binding import, profile assertion
- V3 polish: Profiles rename, restore warning guidance, maintenance status icons
- Search graph: multi_hop_neighbors, filtered_neighbors, LinkedItemsPanel enhancements
- Sort/filter: s/f/backslash shortcuts, active toolbar, Clear All button
- Mark Slice A complete; define Slice B deep graph + atlas handoff
- Update recommended next steps to reflect completed work
2026-03-10 21:15:54 -04:00
thePR0M3TH3ANandClaude Opus 4.6 ca31abf33e Fix Overstory multi-agent setup and add quick reference docs
- Update agent models from gpt-5.3-codex to claude-compatible names
  (opus for coordinator/lead, sonnet for builder/scout/reviewer/merger,
  haiku for monitor)
- Switch runtime from codex to claude (codex requires interactive TTY,
  incompatible with tmux-based agent spawning)
- Add Overstory ecosystem links to AGENTS.md and CLAUDE.md
- Add docs/overstory_quick_reference.md with startup, monitoring, and
  CLI commands
- Sync seeds issue state

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-03-06 13:12:46 -05:00
thePR0M3TH3AN 46ffff577b Improve v3 grid navigation and graph browsing 2026-03-06 07:10:36 -05:00
thePR0M3TH3AN 4011464c31 Advance v3 search, atlas, and comms planning 2026-03-05 23:26:05 -05:00
thePR0M3TH3AN e8a2b81e7b Make TUI v3 the default and add index0 foundations 2026-03-05 21:52:39 -05:00
thePR0M3TH3AN 33e727841c feat(tui_v3): full end-to-end slice implemented for managed sub-accounts including UI breadcrumbs and mock test validations 2026-03-03 10:27:08 -05:00
thePR0M3TH3AN 30b61e76ea test(tui_v3): expand interactive test suite with sub-profile, data io, and editing parity checks 2026-03-03 08:49:11 -05:00
thePR0M3TH3AN 1987d7707e style(tui_v3): full 1:1 ui mockup parity pass with retro black and white theme 2026-03-03 08:29:15 -05:00
thePR0M3TH3AN 55384c1a2f feat(tui_v3): full protocol parity via generalized edit screen and vault I/O 2026-03-03 08:08:10 -05:00
thePR0M3TH3AN 9b3680d45a feat(tui_v3): implement nostr relay management and notification usage parity 2026-03-03 07:56:12 -05:00
thePR0M3TH3AN c822eeb602 feat(tui-v3): implement core functional parity (Phase A/B)
- Implement secure data parity (Reveal/QR/Copy) for SSH, PGP, Nostr, Key-Value, and Documents.
- Update derive_pgp_key and API to support PGP Public Key retrieval and copying.
- Implement managed account loading/exiting (ml/mx) with reactive profile updates.
- Integrate semantic search (keyword/hybrid/semantic) into the entry grid.
- Create AddEntryScreen (unified wizard), SeedPlusScreen (BIP-85), and DocumentEditScreen.
- Add grid filter presets (secrets, docs, keys, 2fa) and archive view toggle.
- Update ActionBar and GridMetrics to be dynamic and context-aware.
- Add comprehensive v3 parity tests and update existing core tests for PGP tuple changes.
2026-03-03 07:40:34 -05:00
thePR0M3TH3AN d3920ccc4c Update TUI v3 plan and land parity fixes with smoke tests 2026-03-02 23:43:07 -05:00
thePR0M3TH3AN 4eeb936e6d docs(test): centralize test infrastructure and add interactive agent harness
Added docs/TEST_INVENTORY.md as a central index for all tests and runners.
Created scripts/interactive_agent_tui_test.py for password-free TUI v2
exploratory testing. Integrated standalone permission tests into main
suite and fixed TUI v2 parity regression tests broken by auto-selection
removal. Updated AGENTS.md and CLAUDE.md with strategic plan references.
2026-03-02 22:26:35 -05:00
thePR0M3TH3ANandClaude Opus 4.6 6f2b9a6d18 fix(tui-v2): handle non-existent entries and tree nav focus feedback
Opening a non-existent entry now shows "Entry not found" instead of
rendering a broken empty board. Tree navigation commands now give
clear feedback when focus is on wrong pane or sidebar is collapsed.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-03-02 21:26:30 -05:00
thePR0M3TH3ANandClaude Opus 4.6 08e71bd1b4 feat(tui-v2): cap card width, fix hint casing, verb-first compact strip
Add max_width=72 to _board_card so Content cards don't stretch across
viewport. Capitalize Nostr QR Private hint. Compact mode global strip
now uses verb-first labels matching normal and dense modes.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-03-02 21:07:20 -05:00
thePR0M3TH3ANandClaude Opus 4.6 de12289d3e feat(tui-v2): tighten action strip labels and board hint lines
Normal-mode global row now uses verb-first labels with key hints.
Seed and TOTP action hints shortened from raw palette commands to
user-facing verbs for consistent readability.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-03-02 21:02:40 -05:00
thePR0M3TH3ANandClaude Opus 4.6 5af052499b feat(tui-v2): tighten board density by removing redundant headers
Remove plain-text section labels above card frames since card titles
are self-descriptive. Remove compact-mode noise line. Cap note preview
at 100 chars. Saves 2-4 lines per board for better viewport fit.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-03-02 20:59:37 -05:00
thePR0M3TH3ANandClaude Opus 4.6 d1807ddab6 feat(tui-v2): extend card framing to all remaining inspector boards
TOTP, SSH, PGP, Nostr, and Seed/Managed Account boards now use
_board_card sections matching Password/Note treatment for consistent
visual language across all 9 board types.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-03-02 20:54:17 -05:00
thePR0M3TH3AN 0ec4b86076 feat(tui-v2): polish action strip copy and rebalance dense layout 2026-03-02 20:24:58 -05:00
thePR0M3TH3AN 64a8b9f8b5 tui2: harden pane-state flow and dense layout parity 2026-03-02 19:03:21 -05:00
thePR0M3TH3AN a7ab61fae9 docs: add integrated TUI v2 execution plan and mockup gap audit 2026-03-02 16:28:07 -05:00
thePR0M3TH3AN a4de52ae4a tui v2: close 2fa url parity and advance strict mockup closeout 2026-03-02 15:41:35 -05:00
thePR0M3TH3AN f0c120f84d feat: add semantic search modes across cli api and tuis 2026-03-02 12:28:24 -05:00
thePR0M3TH3AN 165e2db204 feat: add semantic index scaffolding, cli/api surfaces, and tui tree nav polish 2026-03-02 11:44:17 -05:00
thePR0M3TH3AN 7c9b6253b2 docs: add semantic vector index integration roadmap 2026-03-02 11:28:42 -05:00
thePR0M3TH3AN b618d95c0e docs: sync ui refresh roadmap and remaining phase5 queue 2026-03-02 11:12:09 -05:00
thePR0M3TH3AN a67ee2d9da tui2: add export-field actions and density/tree ui polish 2026-03-02 11:04:20 -05:00
thePR0M3TH3AN 93cf78b2c8 tui2: default profiles online and add phase4 inspector boards 2026-03-02 10:11:56 -05:00
thePR0M3TH3AN d4cbd04242 tui2: add phase1 shell scaffold for mockup-aligned refresh 2026-03-02 09:55:52 -05:00
thePR0M3TH3AN db034cc3a2 docs: add mockup-aligned tui v2 refresh execution plan 2026-03-02 09:52:31 -05:00
thePR0M3TH3AN 8f7075c39b tui2: add onboarding flow and session parity affordances 2026-03-02 09:44:25 -05:00
thePR0M3TH3AN 5c524b2086 tui2: add quickstart and stats parity UX flows 2026-03-02 09:31:56 -05:00
thePR0M3TH3AN 3f0d4a8d89 tui2: add full in-app palette command reference 2026-03-02 09:20:04 -05:00
thePR0M3TH3AN 949d87dd4f docs: add supply-chain verification and operational runbooks 2026-03-02 09:14:00 -05:00
thePR0M3TH3AN 57e73f6869 docs: refresh tui2 cutover memo and hardening blockers 2026-03-02 09:08:15 -05:00
thePR0M3TH3AN 45cd27ea4f tests: add deterministic nostr sync failure-mode coverage 2026-03-02 09:06:26 -05:00
thePR0M3TH3AN b77c887446 ci: enforce tui2 and core api coverage thresholds 2026-03-02 09:03:53 -05:00
thePR0M3TH3AN c1a317f9b6 docs: close tui2 full legacy workflow parity with evidence 2026-03-02 08:56:34 -05:00
thePR0M3TH3AN 99b6f77e2b tui2: add dedicated npub palette command parity 2026-03-02 08:54:45 -05:00
thePR0M3TH3AN 37242294ed tui2: add archived scope filter parity and tests 2026-03-02 08:43:46 -05:00
thePR0M3TH3AN 75286cca50 tui2: add nostr maintenance parity commands and tests 2026-03-02 08:33:58 -05:00
thePR0M3TH3AN 924f32fefc tui2: add managed account session commands and parity matrix 2026-03-02 08:30:59 -05:00
thePR0M3TH3AN 3769153033 docs: add dev control center as single planning hub 2026-03-02 08:24:59 -05:00
thePR0M3TH3AN 0bbf271154 docs: add beta hardening report and session notes 2026-03-02 08:10:59 -05:00