make-muse-content-addressing-episode00-demo.sh
bash
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