Added signed registry, key management and remote fabric - #1
Open
kridaydave wants to merge 9 commits into
Open
Conversation
- TaprootState with BaseRef, Runtime, Container, env_vars (BTreeMap for determinism) - StateEngine: canonical JSON, sha256 hash, ed25519 sign/verify, save/load - 7 tests passing, clippy clean, fmt applied - sets up wedge primitive for read-only mount v0.0.1
Introduces clap CLI (init, mount, status, verify) and a read-only FUSE filesystem for v0.0.1. Mount now validates paths, rejects symlinks, and fails hard instead of silently falling back. Engine saves atomically, validates repo/branch/commit, and no longer panics on bad hex. Mount FS sanitizes runtime/container names, enforces EROFS on trunc/creat, and handles negative offsets correctly. - clap 4 CLI with no-fuse fallback, tracing, unsigned warnings - fuser 0.14 read-only TaprootFS with inode table - atomic save, empty-string validation, mountpoint checks - 12 tests passing, clippy clean
- allow '/' in repo/branch (org/repo, feat/foo) but block ., .. and // traversal - save state atomically via tempfile::NamedTempFile with random suffix and fsync parent - move tempfile to dependencies so save works in release builds - mount now validates symlink and non-dir before --no-fuse early return, fixes CI bypass - distinct status labels: ERROR for load failure, MOUNT FAILED for mountpoint issues vs DRIFTED - show absolute state path in status/verify to avoid cwd confusion - update help text to note default is relative to current directory - fix clippy private_interfaces warning on get_inode - bump version to 0.0.1 to match branch, update README Try it and wedge checklist - add 6 CLI integration tests for slash, dotdot, symlink rejection, roundtrip
The wedge now has somewhere to live. Local content-addressed registry, ed25519 keys with rotation, and a tiny Axum fabric for sharing states across machines and CI. Summary: - Added src/registry.rs for local push/pull/list/resolve with %2F sanitization fix - Added src/keys.rs for generate/list/rotate with 0600 perms - Added src/fabric.rs for audit, policy and tokens - Added src/server.rs for remote push/pull and drift checks - Extended src/cli.rs with registry, keys, fabric, serve and remote commands - Added src/diff.rs and strict check action with remote fallback in scripts/run.sh - Fixed sanitization collision, local policy enforcement and audit
CI now runs fmt, clippy, tests and a live binary check on every push and PR. Fixed the sanitization and audit gaps found in the use-it pass. Summary: - Added .github/workflows/ci.yml with fmt, clippy, test and verify steps - Fixed fmt and clippy warnings - Kept registry sanitization and policy fixes
CI was failing with pkg-config fuse3 not found. Added libfuse3-dev install step to both workflows so clippy and build can find fuser. Reproduced locally by checking gh run logs showing fuser build.rs panic, verified local cargo test still passes.
The check [[ "$BASELINE_REF" == *$'\0'* ]] always matches because bash strips null bytes, turning the pattern into ** which matches everything. This caused every baseline run to fail with Invalid baseline-ref even for main. Removed the null byte checks and kept the dash and newline guards. Reproduced locally with INPUT_BASELINE_REF=main showing the match.
Head was missing, causing baseline check to fail with Head state not found. Added signed .taproot/state.json so the strict baseline check has a valid head to verify. Baseline on main is still missing, so first run will pass as first-time init.
Kept the same behavior but cut duplication in this PR. Summary: - Added src/util.rs with shared atomic_write and validate_non_empty - Removed duplicated validate_non_empty from cli and registry - Removed 3 copies of atomic_write from keys, fabric, registry - Collapsed 8 default/resolve_*_path helpers into resolve_or_default - Extracted with_auth and ensure_success for 4 remote handlers - Deleted dead Registry::open alias - Saved ~100 lines, cli.rs now 1514 vs 1580
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR made by muse-spark-1.2-contributor from opencode on behalf of Kriday.
The wedge had no place to live. I gave it a registry. Local content-addressed store, proper key handling with rotation, and a small fabric API so CI and teammates can share the same signed state. The use-it pass found a sanitization collision and a few rough edges, fixed them along the way.
Summary: