make-muse-content-addressing-episode00-demo.sh bash
69 lines 1.6 KB
Raw
sha256:5472be4fece32b606c308fad9d57295ce327955fb2b87b8beec6ea1626050473 Add published YouTube URL to Episode 00 Sonnet 5 20 hours ago
1 #!/usr/bin/env bash
2 set -euo pipefail
3
4 DEMO_DIR="${1:-muse-content-addressing-episode00}"
5
6 command -v muse >/dev/null 2>&1 || { echo "error: muse not found on PATH" >&2; exit 1; }
7 command -v python3 >/dev/null 2>&1 || { echo "error: python3 not found on PATH" >&2; exit 1; }
8
9 rm -rf "$DEMO_DIR"
10 mkdir -p "$DEMO_DIR"
11 cd "$DEMO_DIR"
12
13 muse init --domain code
14
15 cat > engine.py <<'PY'
16 def render_state(state):
17 return {"status": "ready", "items": list(state)}
18 PY
19
20 cat > README.md <<'MD'
21 # Episode 00 — Content Addressing Demo
22 Tiny repo for objects, snapshots, commits, branches, DAGs, and domain semantics.
23 MD
24
25 muse commit -m "Baseline: render structured state"
26
27 cat >> engine.py <<'PY'
28
29 def validate_state(state):
30 return all(item is not None for item in state)
31 PY
32 muse commit -m "Add state validation"
33
34 muse checkout -b feature/render
35
36 cat > formatter.py <<'PY'
37 def format_item(item):
38 return f"[{item}]"
39 PY
40
41 cat >> engine.py <<'PY'
42
43 def render_item(item):
44 from formatter import format_item
45 return format_item(item)
46 PY
47 muse commit -m "Feature: semantic item formatting"
48
49 muse checkout main
50 muse checkout -b feature/metrics
51
52 cat > metrics.py <<'PY'
53 def count_items(state):
54 return len(state)
55 PY
56 muse commit -m "Feature: state metrics"
57
58 muse checkout main
59 muse merge feature/render
60 muse merge feature/metrics
61
62 mkdir -p demo-bytes
63 printf 'Muse content-addressed object\n' > demo-bytes/object-a.txt
64 cp demo-bytes/object-a.txt demo-bytes/object-b-identical.txt
65 printf 'Muse content-addressed object!\n' > demo-bytes/object-c-changed.txt
66
67 echo
68 echo "Ready in: $(pwd)"
69 echo "Run the screenshot commands from inside this directory."
File History 1 commit
sha256:5472be4fece32b606c308fad9d57295ce327955fb2b87b8beec6ea1626050473 Add published YouTube URL to Episode 00 Sonnet 5 20 hours ago