Expand description
Repository-based workstream clustering and workstream file contracts.
Clustering, curated/suggested file lifecycle policies, and receipt display limits live as modules under this crate so workstream phases do not become separate package contracts.
§Examples
Cluster events by repository using the default strategy:
use shiplog_workstreams::RepoClusterer;
use shiplog_ports::WorkstreamClusterer;
let clusterer = RepoClusterer;
let ws = clusterer.cluster(&[]).unwrap();
assert!(ws.workstreams.is_empty());Resolve workstream file paths:
use shiplog_workstreams::WorkstreamManager;
use std::path::Path;
let dir = Path::new("./out/run_123");
let curated = WorkstreamManager::curated_path(dir);
let suggested = WorkstreamManager::suggested_path(dir);
assert!(curated.ends_with("workstreams.yaml"));
assert!(suggested.ends_with("workstreams.suggested.yaml"));Re-exports§
pub use cluster::RepoClusterer;pub use layout::CURATED_FILENAME;pub use layout::SUGGESTED_FILENAME;pub use layout::WorkstreamManager;pub use layout::load_or_cluster;pub use layout::write_workstreams;pub use receipt_policy::WORKSTREAM_RECEIPT_LIMIT_MANUAL;pub use receipt_policy::WORKSTREAM_RECEIPT_LIMIT_REVIEW;pub use receipt_policy::WORKSTREAM_RECEIPT_LIMIT_TOTAL;pub use receipt_policy::WORKSTREAM_RECEIPT_RENDER_LIMIT;pub use receipt_policy::max_cluster_receipts_for_kind;pub use receipt_policy::should_include_cluster_receipt;pub use receipt_policy::should_render_receipt_at;pub use receipt_policy::truncate_cluster_receipts;
Modules§
- cluster
- Repo-based workstream clustering strategy.
- layout
- Workstream artifact path contracts and file precedence logic.
- receipt_
policy - Shared policy for receipt selection and display limits.