feat(durable): zeph durable CLI, config wiring, init wizard, migrate-config, TUI view#4972
Merged
Merged
Conversation
…config, TUI view Wire the durable execution layer (spec-064) into all mandatory integration points (C6 of epic #4707). No execution semantics change; this makes the layer reachable and operable. - config: move pure-data DurableConfig/RetentionPolicy/DurableBackend to zeph-config (single source of truth, re-exported by zeph-durable so existing paths resolve); add the durable field to the root Config; encryption_gate is now a free function in zeph-durable. Keeps the zeph-db/sqlx tree off the 12 leaf crates that depend on zeph-config without it. - CLI: zeph durable list/show/inspect/prune/resume, connecting directly to durable.db with INV-5 redaction; --reveal decrypts via the vault-resolved ZEPH_DURABLE_KEY. Add LocalBackend read APIs list_executions, read_execution_redacted, count_prunable, and ExecutionId::parse_str. - migrate-config: idempotent, additive [durable] step (default-off), plus the section in config/default.toml. - --init: durable wizard step that generates and stores ZEPH_DURABLE_KEY in the age vault, never inline in the TOML. - TUI: DurableView panel (D key, durable palette entry, Tab cycle) with the spec-011 status spinners, fed by a read-only background poll task. Docs (cli, configuration, durable-encryption with base64 + rotation), the testing playbook, coverage-status rows, and the spec module layout updated. Closes #4949
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.
Implements C6 of the durable execution epic (#4707, spec-064): the mandatory user-facing integration points. No execution semantics change — this makes the durable layer reachable and operable.
Closes #4949
What
DurableConfig/RetentionPolicy/DurableBackendmoved tozeph-config(single source of truth, re-exported byzeph-durable);Config.durablefield added;encryption_gateis now a free function. Avoids pullingzeph-db/sqlxinto the 12 leaf crates that depend onzeph-configwithout it.zeph durable list/show/inspect/prune/resume— connects directly todurable.db, no agent process (FR-DE-08). Redacted by default (INV-5);--revealdecrypts via the vaultZEPH_DURABLE_KEY(FR-DE-07). NewLocalBackendread APIs:list_executions,read_execution_redacted,count_prunable;ExecutionId::parse_str.[durable]step (default-off) + section inconfig/default.toml.ZEPH_DURABLE_KEYin the age vault, never inline in TOML.DurableViewpanel (Dkey,durablepalette entry, Tab cycle) with the spec-011 status spinners, fed by a read-only background poll task.Config placement decision
The pure-data config types moved to
zeph-config(likeOrchestrationConfig) rather than adding azeph-config -> zeph-durabledependency (which would forcezeph-db/sqlxonto 12 leaf crates) or duplicating the struct.zeph-durabledepends onzeph-configand re-exports them, sozeph_durable::DurableConfigstill resolves and the engine APIs consume the same type the rootConfigholds — no duplication, no conversion. The AEAD policy (EncryptionGate+encryption_gate) stays inzeph-durablenext to the cipher and error type. The spec module layout (spec-064) was updated to record this.Docs & test artifacts
book/src/reference/cli.md,configuration.md,security/durable-encryption.md(base64 key encoding + rotation policy).durable.mdC6 section (6 scenarios) and 6coverage-status.mdrows (in.local/testing, project-shared).CHANGELOG.md[Unreleased].Checks (CI feature set
desktop,ide,server,chat,pdf,scheduler)cargo +nightly fmt --checkcargo clippy --workspace --all-targets -- -D warningscargo nextest --workspace --lib --bins-> 10920 passed, 22 skippedcargo doc --no-deps(denybroken_intra_doc_links)cargo test --doc-> 10 passedRUSTFLAGS="-D warnings" cargo check --workspace --all-targets --lockedNotes
[durable].agent_turnshas no effect until it lands.