Skip to main content

verbs/
oss_plan.rs

1// SPDX-License-Identifier: Apache-2.0
2//! Git-overlay guide content (machine path).
3//!
4//! Single typed value — not micro-functions. Human ANSI formatting stays CLI.
5
6use serde::Serialize;
7
8/// Machine-facing git-overlay guide (JSON / structured output).
9#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
10pub struct GitOverlayGuide {
11    pub topic: &'static str,
12    pub summary: &'static str,
13    pub steps: &'static [&'static str],
14}
15
16/// Canonical git-overlay guide payload.
17pub const GIT_OVERLAY_GUIDE: GitOverlayGuide = GitOverlayGuide {
18    topic: "git-overlay",
19    summary: "Use Heddle as the daily loop with explicit Git projection compatibility: status, diff, commit, start --path, ready, land, push, undo, verify.",
20    steps: &[
21        "heddle status",
22        "heddle init",
23        "heddle diff",
24        "heddle capture -m <message>",
25        "heddle start <name> --path ../<name>",
26        "heddle ready",
27        "heddle land --thread <name>",
28        "heddle push",
29        "heddle undo",
30        "heddle verify",
31    ],
32};
33
34#[cfg(test)]
35mod tests {
36    use super::*;
37
38    #[test]
39    fn guide_shape() {
40        assert_eq!(GIT_OVERLAY_GUIDE.topic, "git-overlay");
41        assert_eq!(GIT_OVERLAY_GUIDE.steps.len(), 10);
42        let v = serde_json::to_value(&GIT_OVERLAY_GUIDE).unwrap();
43        assert_eq!(v["steps"].as_array().unwrap().len(), 10);
44    }
45}