generated from eblume/project-template
Some checks failed
Build / validate (pull_request) Failing after 2s
Slice 7 (tech-spec §1, §5, §9). - Export (heph-core): render each non-tombstoned node to `<kind>/<id>.md` with YAML frontmatter (id, kind, title, timestamps, task scalars, aliases, outgoing links) + body. One-way snapshot; `Store::export` writes the tree; tombstones excluded. Added `export` RPC method and Error::Io. - `heph` CLI (clap): thin client of hephd over the socket — `next` (concise ranked rows), `task`, `doc`, `get`, `export`. Never touches SQLite directly. Tests: 3 export render unit + 2 export round-trip integration + 3 CLI process tests driving the real `heph` binary against a real daemon (task→next, empty-store message, export writes files). 70 tests green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 KiB
2 KiB
Begin the v1 prototype (Phase 1, tech-spec §11.1), built in TDD slices:
- Cargo workspace +
heph-corecrate; migration-run SQLite schema (§4.5); clock-injectedStoretrait +LocalStorenode create/get; single local-user bootstrap. - Markdown extraction (§5):
[[wiki-links]]and GFM- [ ]checkbox context-items derived purely and idempotently from a body, skipping code blocks. - Committed tasks (§4.3, §6):
task.createauto-creates the canonical contextdoc+canonical-contextlink; attention/do-date/late-on/state/recurrence columns; set-state/set-attention. Links CRUD (outgoing/backlinks). A body update reconcileswikilinks (diff-based, resolved by alias/title, idempotent). - "What is next?" ranking (§7): pure, clock-injected, two-stage engine — candidacy filter (do-date as a boolean gate only) then a reorderable list of named dimensions (past-late-on → overdue-amount → attention band → FIFO).
late_onis the sole urgency signal; blue hidden; red always shown. Proptest-checked total order.Store::nextsurfaces it over SQLite. - Recurrence — roll-forward in place (§4.4): completing a recurring task resets its checklist to all-unchecked, logs the occurrence, and advances the do-date to the next RRULE instance after now (skipping misses) — completion never carries forward (proptest-checked). Per-task append-only logs (
log-of) withlog.append/log.tail;skipadvances without logging. hephddaemon, local mode (§3, §6): exclusive file lock (handoff-ready), line-delimited JSON-RPC over a unix socket exposing the node/task/next/links/log methods, with DB work on tokio's blocking pool. Synchronous client for surfaces/CLI. Model types are serde-serializable.hephCLI (§1) — a thin client of the daemon:next,task,doc,get,export. Export materializes the store to a<kind>/<id>.mdtree with YAML frontmatter + body (§5), one-way, tombstones excluded.- CI runs the Rust suite (fmt/clippy/test) via the project build hook.