KeiSeiKit-1.0/_primitives/_rust/kei-pipe/src
Parfii-bot 4a9dd98fde feat(p-pipe-cache): wire kei-cache into kei-pipe DAG executor
Optional per-step and DAG-level cache config in dag.toml:
  [[steps]]
  cache = { enabled = true, ttl_sec = 3600 }
OR
  [pipe]
  cache = { enabled = true, ttl_sec = 3600 }

Cache gated by AtomKind — only query/transform cacheable; command/stream
always re-invoke even with cache.enabled=true.

StepReport.source: Some('cache'|'fresh') | None shows cache outcome.

Constructor Pattern: extracted src/config.rs (CacheConfig + StepKind
+ TOML raw types + split_pipe_cache parser) + src/topo.rs (topo-sort)
to keep dag.rs under 200 LOC.

Tests: 8/8 (was 5, +3: cache-hit reuse, cache-disabled always invokes,
command-kind not cached even if enabled).

kei-cache 22/22 preserved.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 14:26:11 +08:00
..
config.rs feat(p-pipe-cache): wire kei-cache into kei-pipe DAG executor 2026-04-23 14:26:11 +08:00
dag.rs feat(p-pipe-cache): wire kei-cache into kei-pipe DAG executor 2026-04-23 14:26:11 +08:00
exec.rs feat(p-pipe-cache): wire kei-cache into kei-pipe DAG executor 2026-04-23 14:26:11 +08:00
lib.rs feat(p-pipe-cache): wire kei-cache into kei-pipe DAG executor 2026-04-23 14:26:11 +08:00
main.rs feat(r1): new kei-pipe crate — atom DAG runtime 2026-04-23 05:55:13 +08:00
report.rs feat(p-pipe-cache): wire kei-cache into kei-pipe DAG executor 2026-04-23 14:26:11 +08:00
resolve.rs feat(r1): new kei-pipe crate — atom DAG runtime 2026-04-23 05:55:13 +08:00
topo.rs feat(p-pipe-cache): wire kei-cache into kei-pipe DAG executor 2026-04-23 14:26:11 +08:00