Commit Graph
9 Commits
Author SHA1 Message Date
hermes 868883ba1e docs: record OS operational-snapshot binding (real OS data on cube, survives power cycle) 2026-08-13 09:53:51 -04:00
hermes 0343ea6bcb docs: mark boot-substrate bind DONE (systemd units, survives power cycle); update open items 2026-08-13 09:43:44 -04:00
hermes b7467754f5 docs: mark RESUME NEXT STEPS #1/#2 done; VM durable stack verified 2026-08-13 09:32:54 -04:00
hermes f264527365 cubefs/phase3: expose 'open'/'seal' as first-class CLI commands; document startup verification points
- cubesys/src/bin/cube.rs: route known command words (prog/write/run/ls/stat/
  seal/open/query/begin/commit/rollback/stats/audit) straight to Session::exec
  from argv, making the coordinate-addressed 'open <path> <K.Z.Y.X> <tf>' surface
  (Phase 3 'open by CZYX + flags') a real CLI command, not REPL/script-only.
  Verified: ./check green; cube open/cube bogus both behave; dispatch reaches
  crypto/run layer over in-process and durable daemon (cubec) paths.
- STARTUP-README.md: add verification points per standing directive; mark
  Phase 2 FS + durability VERIFIED, Phase 3 surface DONE, boot-substrate IN PROGRESS.
- Guest binaries synced to host HEAD f40b448 + this change; OS state now persists
  on the cube store in the VM (/cubefs/c200/...), durable across daemon restart.
2026-08-13 09:32:45 -04:00
hermes 78cd5c0046 chore(cubesys): clear clippy -D warnings so full ./check gate is green
cargo clippy --fix applied style nits (redundant return, ?-operator,
map_or simplify) plus doc-comment list indentation. The full ./check gate
(fmt+test+clippy -D warnings) now passes; R5 read-gate + grant tests
remain green (39 cubesys lib tests).
2026-08-11 15:25:14 -04:00
hermes 8e31c15f69 docs: mark R5 done, reframe R1 in plan (owner/grant-native read gate) 2026-08-11 15:12:30 -04:00
hermes 0e579a02dd feat(cubesys): R5 — read-gating in daemon path (owner/grant-native)
Closes the read-privacy gap flagged in plan R1/R5. Rather than fork the
FUSE uid/gid Acl model (whose identity is POSIX uid, incompatible with the
daemon's name-based HELLO identity), read-gating is done owner/grant-native:

- commands.rs: new admit_read(coord) mirroring admit_mutate (owner ->
  read-grant -> deny; unowned records world-readable). Wired into
  (read+execute) and  (metadata read), gated by enforce_owner exactly
  like writes.
- Tests: read_gate_blocks_non_owner_and_allows_read_grant (bob denied,
  allowed after alice grants read), read_gate_requires_identity_under_enforce
  (anonymous stat rejected under --require-identity).
- Full ./check quick green: 39 cubesys lib tests, clippy -D warnings clean.

Note in plan: Acl lift (R1) is NOT a literal fork; the daemon reuses the
owner/grant enforcement concept, not the POSIX Acl struct.
2026-08-11 15:11:51 -04:00
hermes e77c650e9c feat(cubesys): Task 6b — permission grants (PDF flags 5-19)
Add a delegated-grant auth layer:
- cubesys/src/grants.rs: Grant/Owner/Perm model, GRANT_BUCKET at
  Czyx::new(0,1,0,1), grant/revoke/grant_allows, std-only JSON codec.
- Stored via put_record with a doc_type='grant-table' header so it
  survives checkpoint/restore (raw put_raw was dropped on dump_store).
- commands.rs: GRANT/REVOKE opcodes + admit_mutate() enforcement hook
  (owner -> grant -> deny). GRANT/REVOKE require HELLO identity under
  --require-identity.
- Enforce owner-match contract preserved (legacy/tests stay green).
- 11 new grant tests; full ./check quick = 115 pass, clippy -D clean.
2026-08-11 15:01:35 -04:00
hermes bbaa36a32c check: add ./check stress stage; fix unreachable bench/mount dispatch
- ./check stress spins a fresh cube-server+cubec built from this tree on a
  throwaway socket/store and drives ~150s of real prog/run traffic while
  sampling the per-command latency + per-C telemetry.
- tools/stress.sh: never touches the production daemon; STRESS_SECONDS override.
- Fixed latent control-flow bug: the old '|| exit 0' guards made 'bench' and
  'mount' subcommands unreachable after the gate (they exited early). Now uses
  explicit run_* flags and only exits at the true end.
2026-08-11 01:46:49 -04:00