[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-shadow-frog-dream":3,"mdc-8tucdm-key":36,"related-repo-microsoft-shadow-frog-dream":11881,"related-org-microsoft-shadow-frog-dream":11918},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"shadow-frog-dream","run autonomous experimentation sessions","Run autonomous experimentation while the user is AFK. Uses 6 investigation categories (investigation, bug hunting, feature design, refactoring, optimization, security audit) to systematically discover non-obvious behaviors. Every task is an experiment — implement in worktrees, commit to persistent dream branches, and push to the fork. Dreams compound across sessions: future experiments branch from prior dream branches, building a tree of progressively deeper work. Invoke when the user is AFK or asks for a dream run.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Security","security","tag",{"name":17,"slug":18,"type":15},"Automation","automation",{"name":20,"slug":21,"type":15},"Agents","agents",{"name":23,"slug":24,"type":15},"Debugging","debugging",13,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FShadowFrog","2026-07-03T16:31:54.732639",null,3,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"A suite of AI coding agent skills that build and maintain a shadow knowledge base for any codebase. ","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FShadowFrog\u002Ftree\u002FHEAD\u002Fskills\u002Fshadow-frog-dream","---\nname: shadow-frog-dream\ndescription: >-\n  Run autonomous experimentation while the user is AFK. Uses 6 investigation\n  categories (investigation, bug hunting, feature design, refactoring,\n  optimization, security audit) to systematically discover non-obvious\n  behaviors. Every task is an experiment — implement in worktrees, commit\n  to persistent dream branches, and push to the fork. Dreams compound\n  across sessions: future experiments branch from prior dream branches,\n  building a tree of progressively deeper work. Invoke when the user is\n  AFK or asks for a dream run.\nscripts:\n  - dream-coverage.py\n  - dream-validate.py\n  - dream-reconcile.py\n  - dream-setup.sh\n  - dream-cleanup.sh\n  - dream-gc.sh\n---\n\n# ShadowFrog Dream\n\nAutonomous experimentation while the user is away. Every task is an\n**experiment** — implement real code in a worktree, run it, persist as a\n**named git branch** pushed to the fork. Dream's unique value is\nimplementation experience that **compounds across sessions**.\n\n## Critical Invariants\n\nThese rules are stated ONCE here and enforced by helper scripts. Violating\nany of them is a completion criteria failure.\n\n### Prerequisite: `.shadow\u002F` must be git-tracked\n\nDream moves `.shadow\u002F` content **through git** — artifacts are committed onto\nthe dream branch, pushed to the remote, then read back by the reconciler via\n`git show origin\u002F\u003Cbranch> .shadow\u002F...`. If `.shadow\u002F` is gitignored (the\n\"local only\" option in `shadow-frog-init`), `git add -A` silently skips those\nfiles, nothing reaches the remote, and the reconciler finds no manifest —\n**every discovery is lost without warning**. `dream-setup.sh` runs\n`git check-ignore .shadow` up front and refuses to start if it's ignored.\nUse `shadow-frog-update` instead for local-only shadows.\n\n### Path Isolation\n\n```\nWORKTREE_BASE = \u002Ftmp\u002Fshadowfrog-dreams\u002F\u003CDREAM_NS>\u002F\nWORKTREE_DIR  = $WORKTREE_BASE\u002Fdream-\u003CSLUG>\n```\n\n- Worktrees are ALWAYS in `\u002Ftmp\u002Fshadowfrog-dreams\u002F\u003CDREAM_NS>\u002F`, NEVER in\n  the project directory. This prevents conflicts between parallel agents\n  and keeps the main repo clean.\n- `DREAM_NS` (namespace) isolates branches per task\u002Finstance. Resolved\n  from: `DREAM_NAMESPACE` env → `TASK_INFO.json` → `.env` → repo basename.\n- Override only with `DREAM_WORKTREE_BASE` env var if `\u002Ftmp` is too small.\n- `dream-setup.sh` computes and enforces all paths. Use it.\n\n### Branch Naming\n\n```\nBRANCH_NAME = dream\u002F\u003CDREAM_NS>\u002F\u003CDREAM_ID>\nDREAM_ID    = YYYYMMDD-HHMMSSZ-\u003CSLUG>\n```\n\n### Artifact Format\n\n```\n.shadow\u002F_dreams\u002F\u003CDREAM_ID>\u002Freport.md\n.shadow\u002F_dreams\u002F\u003CDREAM_ID>\u002Fmanifest.json\n.shadow\u002F_dreams\u002F\u003CDREAM_ID>\u002Fpatch.diff\n```\n\nNEVER flat files (`_dreams\u002F\u003CDREAM_ID>.md`). Flat files break the pipeline.\n\n### RUN_PREFIX\n\nAll python\u002Fpytest commands MUST use the `RUN_PREFIX` resolved during\npreflight. When `RUN_PREFIX=\"uv run\"`, use `$RUN_PREFIX python3 ...`.\nBare `python3` or `pytest` without prefix is a violation when non-empty.\n\n### Reconciliation is Mandatory\n\nEvery dream branch must reconcile to main before the session ends. The\nmost common failure mode is agents pushing dream branches but never\nreconciling — losing all discoveries.\n\n**Two modes:**\n- **Parallel mode (default):** Launch a batch of 3-4 sub-agents → wait\n  for all to push → run `dream-reconcile.py \"$REPO_ROOT\"` ONCE at the end\n  of the batch. The reconciler auto-discovers every un-reconciled dream\n  branch in the namespace — you do NOT pass branch names. One call merges\n  every pushed branch.\n- **Sequential mode (fallback when sub-agents unavailable):**\n  Complete dream → push → reconcile → verify → next dream. Adds ~30s\n  per dream but guarantees zero data loss if the session crashes\n  mid-batch.\n\nNever queue multiple un-reconciled batches; reconcile at the end of\neach batch or each individual dream.\n\n### Script Failure Recovery\n\nAll helper scripts (`dream-setup.sh`, `dream-reconcile.py`,\n`dream-validate.py`) are **self-documenting**. If a script fails or is\nunavailable: **read the script source**, understand what it does, and adapt\nits logic manually for your situation. Never skip steps just because a\nscript errored — the steps still need to happen.\n\n```\nFork repo (user\u002Ftarget-repo)\n  main --- .shadow\u002F (accumulated ALL discoveries)\n  |\n  +-- dream\u002F\u003Cns>\u002F\u003Cid-1>  (cycle 1, agent A, from main)\n  +-- dream\u002F\u003Cns>\u002F\u003Cid-2>  (cycle 1, agent B, from main)\n  +-- dream\u002F\u003Cns>\u002F\u003Cid-3>  (cycle 2, from dream\u002F\u003Cns>\u002F\u003Cid-1>, compounding)\n```\n\n- Branches are live — `git checkout dream\u002F\u003Cid>` runs the code\n- Shadow follows lineage — ancestor chain, not sibling branches\n- Main is the accumulator — reconciliation merges ALL discoveries\n\n### Prerequisites\n\n1. Forked repo cloned locally with pushable remote\n2. ShadowFrog skills installed (`install.sh --project \u002Fpath\u002Fto\u002Ffork`)\n3. `.shadow\u002F` initialized (`\u002Fshadow-frog-init`)\n\n## Helper Scripts\n\nThis skill bundles 6 helper scripts. Find them in the skill directory:\n\n```bash\nSKILL_DIR=\"\"\nfor DIR in .github\u002Fskills\u002Fshadow-frog-dream .claude\u002Fskills\u002Fshadow-frog-dream; do\n    [ -d \"$DIR\" ] && SKILL_DIR=\"$DIR\" && break\ndone\n```\n\n| Script | Purpose | When to use |\n|--------|---------|-------------|\n| `dream-setup.sh` | Creates worktree + branch with namespace isolation | **Phase 3** — start of every experiment |\n| `dream-validate.py` | Validates artifacts before push (hard gate) | **Phase 5** — before `git push` |\n| `dream-reconcile.py` | Merges dream branches into main's `.shadow\u002F` | **Phase 6** — after all experiments done |\n| `dream-coverage.py` | Computes exploration coverage map | **Phase 2** — task planning for diversity |\n| `dream-cleanup.sh` | Safely removes ONE dream worktree (with safety gate) | **After push** — replaces the old inline cleanup snippet |\n| `dream-gc.sh` | Sweeps orphan dream worktrees from `$DREAM_WORKTREE_BASE` | **Auto** — triggered by `dream-setup.sh` (per-namespace throttle, default 1× \u002F hour) in orphan-only mode; also `--task-complete --namespace \"$DREAM_NS\" --min-age-min 0` for end-of-session sweep of registered-but-stale dirs |\n\n**Usage patterns:**\n\n```bash\n# Setup: creates worktree, prints export vars.\n# IMPORTANT: capture the output FIRST, then eval it. Writing\n# `eval \"$(dream-setup.sh ...)\" || exit 1` does NOT catch failures: if the\n# command substitution exits non-zero and prints nothing, `eval \"\"` still\n# succeeds (exit 0) and the agent silently proceeds with empty env vars.\n# Assigning to a variable makes `|| exit 1` fire on the script's real exit code.\nSETUP_OUT=\"$(\"$SKILL_DIR\u002Fdream-setup.sh\" --slug t01-my-experiment)\" || exit 1\neval \"$SETUP_OUT\"\n# → exports (keep in sync with dream-setup.sh emit_export block):\n#   REPO_ROOT, DEFAULT_BRANCH, DREAM_NS, DREAM_ID, BRANCH_NAME, PARENT_BRANCH,\n#   WORKTREE_DIR, WORKTREE_BASE, BASE_COMMIT, RUN_PREFIX, SLUG\n\n# Validate: hard gate before push\npython3 \"$SKILL_DIR\u002Fdream-validate.py\" \"$DREAM_ID\" \"$WORKTREE_DIR\"\n\n# Reconcile: merge all dream branches into main\npython3 \"$SKILL_DIR\u002Fdream-reconcile.py\" \"$REPO_ROOT\"\n# After `git push` succeeds, optionally clean up reconciled branches.\n# Cleanup REFUSES to run if `.shadow\u002F` has uncommitted changes, or unless\n# HEAD is already on origin\u002F\u003Cdefault-branch> — so the canonical flow is:\n#   reconcile → git add .shadow\u002F && git commit && git push → re-run --cleanup-branches\npython3 \"$SKILL_DIR\u002Fdream-reconcile.py\" \"$REPO_ROOT\" --cleanup-branches\n\n# Coverage: show which files still need exploration\npython3 \"$SKILL_DIR\u002Fdream-coverage.py\" \"$REPO_ROOT\"\n\n# All scripts support --help.\n```\n\nIf a script is not found or fails, read its source — they are\nself-documenting. Adapt the steps manually if needed (see each phase for\ninline fallback instructions).\n\n## Phase 1: Preflight and Assess\n\n### Preflight Validation\n\n```bash\nREPO_ROOT=$(git rev-parse --show-toplevel)\ncd \"$REPO_ROOT\"\n\n# 0. Auto-detect DREAM_NAMESPACE\nif [ -z \"${DREAM_NAMESPACE:-}\" ]; then\n    if [ -f TASK_INFO.json ]; then\n        DREAM_NAMESPACE=$(python3 -c \"import json; print(json.load(open('TASK_INFO.json')).get('dream_namespace',''))\" 2>\u002Fdev\u002Fnull)\n        export DREAM_NAMESPACE\n    elif [ -f .env ]; then\n        DREAM_NAMESPACE=$(grep '^DREAM_NAMESPACE=' .env | head -1 | cut -d'=' -f2-)\n        export DREAM_NAMESPACE\n    fi\nfi\n[ -n \"${DREAM_NAMESPACE:-}\" ] && echo \"Dream namespace: $DREAM_NAMESPACE\"\n\n# 1. Detect default branch\nDEFAULT_BRANCH=$(git symbolic-ref refs\u002Fremotes\u002Forigin\u002FHEAD 2>\u002Fdev\u002Fnull | sed 's|refs\u002Fremotes\u002Forigin\u002F||')\nif [ -z \"$DEFAULT_BRANCH\" ]; then\n    if git show-ref --verify refs\u002Fremotes\u002Forigin\u002Fmain >\u002Fdev\u002Fnull 2>&1; then\n        DEFAULT_BRANCH=\"main\"\n    elif git show-ref --verify refs\u002Fremotes\u002Forigin\u002Fmaster >\u002Fdev\u002Fnull 2>&1; then\n        DEFAULT_BRANCH=\"master\"\n    else\n        echo \"ERROR: Cannot detect default branch. Fix: git remote set-head origin \u003Cbranch>\"\n    fi\nfi\necho \"Default branch: $DEFAULT_BRANCH\"\n\n# 2-5. Validate environment\necho \"Current branch: $(git branch --show-current)\"\necho \"Remote: $(git remote get-url origin)\"\ngit ls-remote origin HEAD >\u002Fdev\u002Fnull 2>&1 || echo \"ERROR: Cannot reach remote.\"\n[ -d .shadow ] || echo \"ERROR: .shadow\u002F not found. Run \u002Fshadow-frog-init first.\"\nmkdir -p .shadow\u002F_dreams\ngit diff --quiet && git diff --cached --quiet || echo \"ERROR: Uncommitted changes.\"\n\n# 6. Fetch all remote branches (ONE fetch for all agents)\ngit fetch origin --prune\n\n# 7. List dream branches (namespace-filtered)\nDREAM_NS=\"${DREAM_NAMESPACE:-}\"\nBRANCH_PATTERN=\"${DREAM_NS:+origin\u002Fdream\u002F${DREAM_NS}\u002F}\"\nBRANCH_PATTERN=\"${BRANCH_PATTERN:-origin\u002Fdream\u002F}\"\necho \"Available dream branches:\"\ngit branch -r | grep \"$BRANCH_PATTERN\" | sed 's|origin\u002F||' || echo \"  (none)\"\n\n# 8. Detect RUN_PREFIX from lockfiles\nif [ -f uv.lock ]; then\n    uv sync --all-groups 2>&1 | tail -3\n    RUN_PREFIX=\"uv run\"\nelif [ -f package-lock.json ]; then\n    npm install --quiet 2>&1 | tail -3\n    RUN_PREFIX=\"npx\"\nelif [ -f yarn.lock ]; then\n    yarn install --silent 2>&1 | tail -3\n    RUN_PREFIX=\"npx\"\nelse\n    RUN_PREFIX=\"\"\nfi\necho \"RUN_PREFIX='$RUN_PREFIX'\"\n\n# 9. List compoundable experiments\necho \"\"\necho \"=== COMPOUNDABLE EXPERIMENTS ===\"\nif [ -f .shadow\u002F_dreams\u002F_index.md ]; then\n    awk -F'|' 'NR>2 && \u002Fuseful\u002F {\n        gsub(\u002F \u002F,\"\",$2); gsub(\u002F \u002F,\"\",$4); gsub(\u002F \u002F,\"\",$6);\n        gsub(\u002F^ +| +$\u002F,\"\",$5);\n        if ($2 != \"\" && $6 != \"\") print $6 \" | \" $3 \" | \" $5\n    }' .shadow\u002F_dreams\u002F_index.md\n    COMPOUNDABLE=$(awk -F'|' 'NR>2 && \u002Fuseful\u002F {gsub(\u002F \u002F,\"\",$2); if ($2 != \"\") c++} END {print c+0}' .shadow\u002F_dreams\u002F_index.md)\n    echo \"Total compoundable: $COMPOUNDABLE\"\nelse\n    echo \"(none — first dream session)\"\nfi\n```\n\n**If any check prints ERROR, STOP.** Do not use `exit 1` — check output\nand stop at the agent level.\n\n(`RUN_PREFIX` MUST be threaded into every subagent prompt — see Critical\nInvariants above. Bare `python3`\u002F`pytest` without prefix = completion\ncriteria violation.)\n\n### Snapshot Branch State\n\nAfter the single `git fetch`, capture dream branches and pass to all\nsub-agents — they do NOT fetch independently.\n\n```bash\nDREAM_NS=\"${DREAM_NAMESPACE:-}\"\nBRANCH_FILTER=\"${DREAM_NS:+origin\u002Fdream\u002F${DREAM_NS}\u002F}\"\nBRANCH_FILTER=\"${BRANCH_FILTER:-origin\u002Fdream\u002F}\"\ngit branch -r --format='%(refname:short) %(objectname:short)' \\\n  | grep -F \"$BRANCH_FILTER\" \\\n  | sed 's|origin\u002F||' > .shadow\u002F_dreams\u002F.branch-map.txt\ncat .shadow\u002F_dreams\u002F.branch-map.txt\n\n# Initialize session tracking (orchestrator-only; agents do NOT write here)\n: > .shadow\u002F_dreams\u002F.session-branches.txt\n```\n\n### Assess Codebase\n\nRead `_meta\u002Fstate.json`, `_index.md`, existing discoveries, and **past\ndream reports** in `_dreams\u002F`.\n\n### Build Exploration Coverage Map\n\nFile-level coverage breadth is the strongest predictor of dream success\n(r²=0.63 vs bugs found), NOT dream count (r²=0.04).\n\n```bash\n# Find and run the coverage script\nCOVERAGE_SCRIPT=\"\"\nfor DIR in .github\u002Fskills\u002Fshadow-frog-dream .claude\u002Fskills\u002Fshadow-frog-dream; do\n    [ -f \"$DIR\u002Fdream-coverage.py\" ] && COVERAGE_SCRIPT=\"$DIR\u002Fdream-coverage.py\" && break\ndone\n[ -n \"$COVERAGE_SCRIPT\" ] && python3 \"$COVERAGE_SCRIPT\" \"$REPO_ROOT\" || echo \"WARNING: dream-coverage.py not found\"\n```\n\n**Coverage definition:** A file is \"covered\" only when its shadow has\n≥1 behavioral discovery (line starting with `- `). Placeholder-only = NOT covered.\n\n**Scoped exploration (`--scope`)** — pass `--scope \u003Cpath-prefix>` (repeatable)\nto restrict the coverage map to a specific subtree. Use this when the\nbroader repo is well-explored but a particular area (e.g., a known\nfrontier of bugs, a newly-added module, a subsystem the user just\nflagged) deserves a focused dream session. All counts (totals, %,\nsaturated, fan-in, per-dir) are computed over the scoped subset only.\n\n```bash\n# Scope to one subtree\npython3 \"$COVERAGE_SCRIPT\" \"$REPO_ROOT\" --scope src\u002Fauth\u002F\n\n# Scope to multiple subtrees in one pass\npython3 \"$COVERAGE_SCRIPT\" \"$REPO_ROOT\" --scope src\u002Fauth\u002F --scope src\u002Fdb\u002F\n```\n\nWhen using `--scope`, the per-category task quotas (Phase 2) still apply\nbut are interpreted against the scoped subset. Don't use scoped\nexploration as the default — pick it only when there's a concrete reason\nto concentrate effort. Unscoped diversity remains the strongest\npredictor of useful discoveries.\n\n### Review Past Dreams (Required)\n\nWhen compoundable experiments exist (preflight step 9):\n- Read each report: `cat .shadow\u002F_dreams\u002F\u003Cdream_id>\u002Freport.md`\n- Choose which to continue (extending, fixing, integrating)\n- Note `dead_end` experiments to avoid repeating\n- Trace lineage via the `parent` column in `_dreams\u002F_index.md`\n\n**Compounding quality gate** — before choosing to compound from a parent:\n\n1. Read the parent's `report.md` AND `manifest.json`\n2. Verify the parent has a non-empty `patch.diff` (prose-only parents\n   are low-value — prefer parents with working code)\n3. Identify at least one specific file or function you plan to modify\u002Fextend\n4. Check the parent's area isn't saturated (8+ discoveries) — if it is,\n   start fresh from main unless you have a concrete new angle\n5. Log your compounding intent: \"I will extend parent's retry logic in\n   `src\u002Fhttp.py` to handle connection timeouts\" — vague \"continue\n   exploring\" is NOT compounding\n\n**First dream session:** if preflight step 9 shows `(none)`, all tasks\nbranch from main.\n\n## Phase 2: Plan\n\nGenerate a concrete plan. **Target 12 tasks (2 per category).** On small\ncodebases (\u003C30 source files), minimum 6 tasks across 4+ categories.\n\n### The 6 Investigation Categories\n\n| Category | What to look for | Priority signals |\n|----------|-----------------|-----------------|\n| **Investigation** | Under-explored files, shallow coverage, uncertain discoveries | Files with 0-2 discoveries, import chains not traced, `uncertain` entries |\n| **Bug hunting** | Defects, edge cases, race conditions | Error-handling code, concurrency, unvalidated inputs |\n| **Feature design** | New capabilities, missing functionality | TODOs, FIXMEs, user-facing gaps, integration opportunities |\n| **Refactoring** | Structural improvements, duplication | God classes, copy-paste patterns, high-coupling files |\n| **Optimization** | Algorithmic efficiency, performance | Hot paths, nested loops, repeated I\u002FO, missing caches |\n| **Security audit** | Vulnerabilities, unsafe patterns | Auth code, data handling, deserialization, user inputs |\n\n| Category | What to experiment |\n|----------|-------------------|\n| **Investigation** | Write assertion-based tests proving\u002Fdisproving behavior hypotheses |\n| **Bug hunting** | Fuzz inputs, trigger error paths, reproduce race conditions |\n| **Feature design** | Implement the feature, run it, evaluate integration |\n| **Refactoring** | Do the refactor, run existing tests, measure complexity |\n| **Optimization** | Benchmark, profile, implement optimization, measure before\u002Fafter |\n| **Security audit** | Craft adversarial inputs, test injection vectors (local only) |\n\n**Exception — user-directed focus**: If the user specifies a focus area\n(e.g., \"dream focus on security\"), allocate ALL tasks to that category.\n\n### Task Plan Format\n\nEach task specifies **base branch**, **primary target file(s)**, and **why**:\n\n```\nTasks (by category):\n  Investigation:\n    1. [title] — write tracing tests for [target]\n       Base: main\n       Target: src\u002Fauth\u002Fvalidator.py (UNCOVERED, 12 refs)\n       Why: High fan-in utility with no shadow coverage\n  Bug hunting:\n    1. [title] — fuzz [target]\n       Base: dream\u002F\u003Cns>\u002F\u003Cprior-id> (compounds prior)\n       Target: src\u002Fparsers\u002Fcsv.py (extending parent's failing tests)\n       Why: Parent found 2 crashes, need to verify fixes\n  ...\n```\n\n### Diversity Rules\n\nPrevent fixation (exploring the same files while leaving most untouched):\n\n1. **Max 2 tasks per source file** (unless prior dream left concrete follow-up)\n2. **≥30% of tasks on uncovered files** (from coverage map)\n3. **≥2 tasks on \"deep\" files** (utilities, internals, converters)\n4. **Vary directories** — no 3+ consecutive tasks in same dir\n\n**Self-check before finalizing:** unique target files ≥ 60% of task count,\nuncovered file tasks ≥ 30%, no file in > 2 tasks. Swap if failing.\n\n**Escape hatches** (document justification): prior dream's failing test,\nconcrete untested hypothesis, file is 500+ lines with unexplored sections,\ncodebase has \u003C20 source files.\n\n### Task Design\n\nEach task needs: **category**, **hypothesis**, **what to implement**,\n**base branch**, **primary target** (with coverage status), **why this\ntarget**, **scope** (hours, not days), and **success criteria**.\n\nGood examples (one per category):\n- **Investigation**: \"Write assertion harness for request lifecycle —\n  instrument each layer to log entry\u002Fexit and reveal implicit contracts\"\n- **Bug hunting**: \"Fuzz the CSV parser with malformed inputs — what\n  crashes or silently corrupts?\"\n- **Feature design**: \"Implement retry logic with exponential backoff —\n  does it handle transient failures without masking permanent ones?\"\n- **Refactoring**: \"Extract 5 duplicate auth checks into middleware —\n  run tests, measure if it simplifies without breaking special cases\"\n- **Optimization**: \"Benchmark the hot path, implement LRU cache for\n  repeated lookups — measure before\u002Fafter wall time\"\n- **Security audit**: \"Craft SQL injection payloads for user-facing\n  endpoints — does parameterized query hold under nested quotes?\"\n\nBad examples: \"Look at the code\", \"Trace the flow\", \"Review error\nhandling\", \"Improve code quality\"\n\n### Feature Design: Motivation Required\n\nFeature experiments must address a real gap identified in existing code.\nAnswer: \"Why would maintainers want this?\" with a specific code reference.\nThe feature must connect to the existing codebase (imports, modifies,\nreplaces duplication). Standalone modules with only stdlib don't qualify.\n\n### Vary Your Approach\n\nEach experiment should have unique structure driven by its hypothesis. If\nyou find yourself copying the same module layout (one source file + one\ntest file, identical importlib hack) across experiments, you're optimizing\nfor throughput over insight. Vary your approach: some experiments modify\nexisting files, some add tests for existing code, some create minimal\nscripts, some refactor existing modules.\n\n### File Selection Guidance\n\nAgents gravitate toward entry points. Evaluation shows this causes missed bugs.\n\n**High-value targets typically missed:**\n- High fan-in files (imported by many, rarely explored directly)\n- Internal\u002Fprivate modules (`_internal\u002F`, `_utils\u002F`, `_compat\u002F`)\n- Conversion\u002Fserialization code (parse, encode, format, marshal)\n- Error handling paths (exception hierarchies, fallback logic)\n\n**Avoid:** Starting from `__init__.py`, skipping \"boring\" files, same\ndirectory 3+ times, ignoring files with few public symbols.\n\n## Phase 3: Execute Tasks\n\nWork through the plan. **Launch 3-4 experiments in parallel** via\nsub-agents. Each handles the full lifecycle: create worktree → implement\n→ test → write shadow + manifest + report → commit → push → clean up.\nIf sub-agents are unavailable, fall back to sequential execution.\n\n**Each experiment runs in a separate git worktree.** The worktree IS the\ndream branch (created with `-b`). After pushing, the worktree is removed\nbut the branch persists on the remote.\n\n### Reading Before Implementing\n\nYou must understand the code before changing it. For each task:\n\n1. Read the source file(s) and their shadows (existing discoveries)\n2. Read shadows of referenced\u002Freferencing files\n3. Understand the current behavior, edge cases, and implicit contracts\n\nReading is *preparation*, not the deliverable. The deliverable is code\nwritten, code run, results recorded.\n\n### Experiment Setup\n\nUse `dream-setup.sh` to create worktrees (handles all path computation,\nnamespace resolution, worktree creation, and validation):\n\n```bash\n# Find the setup script\nSETUP_SCRIPT=\"\"\nfor DIR in .github\u002Fskills\u002Fshadow-frog-dream .claude\u002Fskills\u002Fshadow-frog-dream; do\n    [ -f \"$DIR\u002Fdream-setup.sh\" ] && SETUP_SCRIPT=\"$DIR\u002Fdream-setup.sh\" && break\ndone\n\n# Fresh experiment from main:\nSETUP_OUT=\"$(\"$SETUP_SCRIPT\" --slug t01-csv-fuzzer)\" || exit 1\neval \"$SETUP_OUT\"\n\n# Compounding from prior dream:\nSETUP_OUT=\"$(\"$SETUP_SCRIPT\" --slug t03-extend --base-branch dream\u002F\u003Cns>\u002F\u003Cprior-id>)\" || exit 1\neval \"$SETUP_OUT\"\n```\n\nCapture into `SETUP_OUT` first, then `eval` it — see Helper Scripts §\nusage patterns (above) for why bare `eval \"$(…)\" || exit 1` silently\nswallows the script's exit code.\n\nThis exports (keep in sync with `dream-setup.sh`): `REPO_ROOT`,\n`DEFAULT_BRANCH`, `DREAM_NS`, `DREAM_ID`, `BRANCH_NAME`, `PARENT_BRANCH`,\n`WORKTREE_DIR`, `WORKTREE_BASE`, `BASE_COMMIT`, `RUN_PREFIX`, `SLUG`.\n\n**If `dream-setup.sh` fails or is not found:** Apply the Script Failure\nRecovery rule (read the script source, adapt its logic). Common causes:\nmissing git remote, branch already exists, `\u002Ftmp` permissions.\n\n**Note:** Shell variables don't persist across tool calls. Either run\nmulti-step setup in a single shell, or re-derive values. From inside a\nworktree, get main repo with:\n`git -C \"$(git rev-parse --git-common-dir)\u002F..\" rev-parse --show-toplevel`\n\n**If worktree creation fails:** mark task `blocked`, replace with another.\n\n### What Meaningful Compounding Looks Like\n\nCompounding means **actively engaging with the parent's code**, not just\nsitting on its branch. Valid compounding approaches:\n- **Extend**: import or call the parent's modules and build on them\n- **Modify**: edit the parent's code to fix limitations noted in its report\n- **Refactor**: restructure the parent's implementation for better design\n- **Integrate**: wire the parent's standalone module into the real codebase\n- **Test deeper**: add edge-case tests for the parent's implementation\n\nDon't assume the parent dream's code is complete or frozen — iterative\nimprovement is the whole point. If you can't find anything meaningful to\nbuild on, start fresh from main instead.\n\nCompounding that only adds a new standalone module beside the parent's\ncode (with no imports, edits, or integration) is NOT compounding — it's\na fresh experiment on the wrong branch.\n\n### Run\n\n1. Implement the experiment — write real code, run tests\u002Fbuilds\n2. Note what worked, broke, surprised\n3. Debug if needed — the struggle produces the best discoveries\n4. Record results as you go\n\n### Write Shadow Discoveries\n\n**On the dream branch** (in the worktree), NOT on main.\n\n**Every experiment MUST write ≥1 discovery to a per-file `.shadow\u002F*.md`.**\nAuthoring order: write the human-readable shadow first, then mirror every\ndiscovery into `manifest.json`. For reconciliation the **manifest is the\nsource of truth** — the reconciler merges manifest entries into main, so a\ndiscovery that is missing from the manifest never reaches main. The per-file\nshadow is the human-readable copy (and a required validate gate), not the\npropagation path.\n\nFollow the dedup and writing rules in `\u002Fshadow-frog`. Dream discoveries\nare typically `source: exploration`. Mark `verified` when confirmed by\nrunning code; `uncertain` if not fully testable.\n\n#### How to Append\n\nFind the `##`\u002F`###` heading for the symbol, then:\n- Placeholder `_No discoveries yet._` → replace with discovery\n- Existing discoveries → append after last bullet\n- No heading → create before `## Cross-References`\n\n#### Label Triage (REQUIRED)\n\nAfter writing each discovery, evaluate whether it deserves any of the\nfive actionable labels from `\u002Fshadow-frog` (`bug`, `security`,\n`performance`, `feature-gap`, `tech-debt`). Apply labels when:\n\n| Label | Apply when the discovery describes... |\n|-------|---------------------------------------|\n| `bug` | A defect, silent failure, off-by-one, race, incorrect result, edge case that misbehaves, validate-then-use ordering hazard |\n| `security` | Injection vector, unsafe default, missing auth\u002Fauthz check, sensitive value logged, untrusted input reaching unsafe sink |\n| `performance` | Measured bottleneck, O(N²) where N is large, repeated I\u002FO that could batch, missing cache, blocking call on hot path |\n| `feature-gap` | Missing capability the codebase clearly needs, asymmetric API (e.g., reads but no writes) |\n| `tech-debt` | Duplication, dead code, leaky abstraction, vestigial parameter, inconsistent naming |\n\nRules:\n- Apply labels to BOTH the in-file discovery markdown AND the\n  `manifest.json` discovery entry (`\"labels\": [\"bug\"]`). The reconciler\n  uses the manifest as source of truth; the in-file copy is for humans\n  reading the shadow directly.\n- Multiple labels are fine when accurate: `labels: [bug, security]`.\n- Omit labels for pure behavioral observations (\"retries N times before\n  giving up\", \"default timeout is 30s\") — these are knowledge, not\n  action items.\n- Do not apply labels speculatively. The label says \"an engineer should\n  act on this.\" If you wouldn't act on it, don't label it.\n\nExamples:\n\n```\n- \u002Fapi\u002Fupload accepts paths from request body without normalization,\n  allowing `..\u002F` traversal into \u002Fetc\u002F.\n  _(verified, source: exploration, labels: [bug, security])_\n  Dream report: `_dreams\u002F20260518-161200Z-upload-traversal\u002F`\n```\n\n```\n- HttpClient.send retries 3x on transient failures.\n  _(verified, source: exploration)_\n  Dream report: `_dreams\u002F20260518-163000Z-retry-audit\u002F`\n```\n(No label — pure behavioral knowledge, no action implied.)\n\n`dream-validate.py` emits non-blocking warnings when discovery text\ncontains label-signal keywords but no label is set. Treat those\nwarnings as a prompt to re-check the triage, not as a directive.\n\n#### Anchor Rules\n\n- About existing code → anchor to that symbol\n- Spans 3+ files → `_cross\u002F\u003Cslug>.md`\n- Project-wide convention → `_prefs.md`\n- **Only create shadows for base-codebase files** — experiment-only files\n  don't get shadows (the branch IS the artifact). Anchor findings to the\n  existing code they relate to.\n\n#### Cross-Cutting Discoveries\n\nWhen you see the same behavior in 3+ files, create a `_cross\u002F\u003Cslug>.md`\nrather than repeating the discovery in each per-file shadow. Add\nback-pointers in each file's `## Cross-References` section.\n\n#### Discovery Quality\n\nDiscoveries must be **self-contained process knowledge** — understandable\nwith just the base codebase. Someone reading main's shadow should understand\nthe insight without checking out the dream branch. Capture **how to do it**,\n**what you learned**, and **what to avoid** — not what was built. The branch\npreserves the artifact; the shadow preserves the wisdom.\n\nGood (behavioral insights about existing code):\n- \"functools.lru_cache is not thread-safe for initialization — two\n  threads can trigger duplicate expensive computations on first call.\"\n- \"agent.py's retry loop catches all exceptions including OOM, masking\n  fatal errors that should crash immediately.\"\n- \"To add a new eval metric, register in METRIC_MAP at metrics.py:25\n  and implement the Metric interface — missing either causes a silent\n  no-op in the pipeline.\"\n\nBad (descriptions of new code):\n- \"The implemented PluginFramework has PluginRegistry, PluginManager,\n  and 7 lifecycle hooks.\" — describes branch-only artifact.\n- \"Provides RewardShaper with 4 methods, Welford normalizer, and\n  GAE-lambda estimation.\" — feature spec, not behavioral insight.\n- \"Complete tested module with 58 passing tests.\" — verdict, not discovery.\n\nPer-file discoveries should reference the dream report:\n\n```\n- Retrying with exponential backoff recovers from 99% of transient errors,\n  but must exclude 4xx or it retries bad requests for 30s.\n  _(verified, source: exploration)_\n  Dream report: `_dreams\u002F20250612-143012Z-retry-logic\u002F`\n```\n\n### Write Discovery Manifest\n\nAfter shadow writes, create `.shadow\u002F_dreams\u002F$DREAM_ID\u002Fmanifest.json`:\n\n```json\n{\n  \"dream_id\": \"\u003CDREAM_ID>\",\n  \"branch\": \"\u003CBRANCH_NAME>\",\n  \"parent_branch\": \"main\",\n  \"category\": \"bug hunting\",\n  \"verdict\": \"useful\",\n  \"title\": \"CSV Parser Edge Cases\",\n  \"discoveries\": [\n    {\n      \"op\": \"add\",\n      \"anchor\": \"src\u002Fparsers\u002Fcsv.py::parse_row\",\n      \"text\": \"Unescaped quotes in fields cause silent truncation.\",\n      \"status\": \"verified\",\n      \"source\": \"exploration\",\n      \"labels\": [\"bug\"],\n      \"also_involves\": [\"src\u002Fparsers\u002Futils.py::unescape\"],\n      \"dream_report\": \"_dreams\u002F\u003CDREAM_ID>\u002F\"\n    }\n  ],\n  \"cross_cutting\": []\n}\n```\n\n**Anchor format:** `file::symbol` with bare names (no backticks). The\nreconciler handles normalization.\n\nManifest `op` values: only `add` is supported by the reconciler today.\n`update` and `refute` are reserved keywords — `dream-validate.py` will\nreject any discovery whose `op` is not `add`. To revise or contradict an\nexisting discovery, run a meditate session against main's `.shadow\u002F`\ninstead of trying to do it from a dream branch.\n\n**Hard gate — discoveries must be mirrored into per-file shadows.** The\nreconciler merges `manifest.json` entries into main directly (so discoveries\nare not lost at merge time), but the branch's per-file shadows must ALSO be\nupdated so human PR reviewers can read the discoveries in context. If\n`manifest.json` declares discoveries but no `.shadow\u002F*.md` files outside\n`_dreams\u002F` are modified in the branch diff vs `base_commit`,\n`dream-validate.py` rejects the dream. Always write each discovery into BOTH\nthe corresponding per-file shadow (or `.shadow\u002F_cross\u002F`) AND the manifest\nbefore staging.\n\n### Save Dream Report\n\nSave as `.shadow\u002F_dreams\u002F$DREAM_ID\u002Freport.md`:\n\n```markdown\n---\ndream_id: \"\u003CDREAM_ID>\"\ncategory: bug hunting\nverdict: useful\nbase_commit: \"\u003CBASE_COMMIT>\"\nbranch: \"\u003CBRANCH_NAME>\"\nparent_branch: \"main\"\nremote: \"origin\"\nrelated_symbols:\n  - \"src\u002Fparsers\u002Fcsv.py::parse_row\"\nbuilds_on: []\n---\n\n# CSV Parser Edge Cases\n\n## Motivation\n\u003Ccite specific existing files\u002Fsymbols where gap was identified>\n\n## Compounding Delta\n\u003CONLY if parent_branch != main — what parent code was modified\u002Fextended>\n\n## Hypothesis\n\u003Cwhat we expected to learn>\n\n## Implementation\n\u003Ckey decisions, approach>\n\n## Commands Run\n\u003Cexact commands with exit codes>\n\n## Evaluation\n\u003Cresults, what worked\u002Fdidn't>\n\n## Takeaways\n\u003Clessons, gotchas>\n\n## Verdict Details\n\u003Cwhy useful\u002Fdead_end>\n```\n\n| Field | Required | Values |\n|-------|----------|--------|\n| `dream_id` | yes | `YYYYMMDD-HHMMSSZ-slug` |\n| `category` | yes | one of the 6 categories |\n| `verdict` | yes | `useful` or `dead_end` |\n| `base_commit` | yes | SHA branched from |\n| `branch` | yes | full branch name |\n| `parent_branch` | yes | `main` or prior branch path |\n| `related_symbols` | yes | `file::symbol` refs |\n\n**`tip_commit` is NOT in the report.** Including the final commit SHA\ncreates a chicken-and-egg problem (SHA changes when report is committed).\nThe reconciler derives it via `git rev-parse origin\u002F$BRANCH` and records\nit in `_dreams\u002F_index.md`.\n\n**Verdict** is the agent's assessment (set once, immutable):\n- `useful` — produced actionable findings, working code, or valuable lessons\n- `dead_end` — approach doesn't work; documented why so future dreams skip\n\n### Validate, Commit, Push\n\n```bash\ncd \"$WORKTREE_DIR\"\n\n# 1. Generate diff (exclude .shadow\u002F and common build artifacts)\ngit add -A -- ':!.dream_parent' ':!__pycache__\u002F' ':!.pytest_cache\u002F'\ngit commit -m \"dream: $SLUG\"\nmkdir -p .shadow\u002F_dreams\u002F\"$DREAM_ID\"\ngit diff \"$BASE_COMMIT\" HEAD -- \\\n    ':!.shadow\u002F' ':!__pycache__\u002F' ':!*.pyc' ':!.pytest_cache\u002F' \\\n    ':!node_modules\u002F' ':!*.lock' ':!dist\u002F' ':!build\u002F' \\\n    > .shadow\u002F_dreams\u002F\"$DREAM_ID\"\u002Fpatch.diff\n[ ! -s .shadow\u002F_dreams\u002F\"$DREAM_ID\"\u002Fpatch.diff ] && echo \"WARNING: Empty diff\"\n\n# 2. Validate (hard gate — must pass before push)\nVALIDATE_SCRIPT=\"\"\nfor DIR in .github\u002Fskills\u002Fshadow-frog-dream .claude\u002Fskills\u002Fshadow-frog-dream; do\n    [ -f \"$DIR\u002Fdream-validate.py\" ] && VALIDATE_SCRIPT=\"$DIR\u002Fdream-validate.py\" && break\ndone\nif [ -n \"$VALIDATE_SCRIPT\" ]; then\n    python3 \"$VALIDATE_SCRIPT\" \"$DREAM_ID\" \"$WORKTREE_DIR\" || {\n        # If validate fails: read the script to understand what checks failed,\n        # fix the issues it reports, then re-run. The script checks artifact\n        # structure, manifest schema, and report frontmatter.\n        echo \"FIX ERRORS\"; exit 1\n    }\nelse\n    # Script not found — inline fallback (minimal checks)\n    [ ! -d \".shadow\u002F_dreams\u002F$DREAM_ID\" ] && echo \"ERROR: Missing dir\" && exit 1\n    for F in report.md manifest.json patch.diff; do\n        [ ! -f \".shadow\u002F_dreams\u002F$DREAM_ID\u002F$F\" ] && echo \"ERROR: Missing $F\" && exit 1\n    done\nfi\n\n# 3. Final commit and push\ngit add -A -- ':!.dream_parent'\ngit commit -m \"dream: $SLUG — final with report and manifest\"\nif git push origin \"$BRANCH_NAME\"; then\n    echo \"Pushed: $BRANCH_NAME\"\nelse\n    echo \"ERROR: Push failed. Keep worktree for recovery.\"\n    exit 1\nfi\n```\n\n**Do NOT write to `.session-branches.txt`** — that is managed by the\norchestrator after all agents complete. Agents only push their branch;\nthe orchestrator discovers pushed branches from the remote.\n\n### Worktree Cleanup\n\n```bash\nbash \"$SKILL_DIR\u002Fdream-cleanup.sh\" \"$WORKTREE_DIR\" --repo-root \"$REPO_ROOT\"\n```\n\n`dream-cleanup.sh` does the equivalent of `git worktree remove --force`\nfollowed by `git worktree prune`, but ALSO falls back to a safety-gated\n`rm -rf` if `git worktree remove` silently fails — the failure mode that\nleaked tens of dream worktrees per AFK session under the previous inline\nsnippet (see bug-worktree-leak.md). The rm fallback ONLY fires for paths\nthat match `${DREAM_WORKTREE_BASE:-\u002Ftmp\u002Fshadowfrog-dreams}\u002F\u003Cns>\u002Fdream-\u003Cslug>`\nexactly; any other path is refused.\n\nRemove as you go. If push failed, keep the worktree.\n\n### Mid-Session Diversity Check\n\nAfter completing roughly half of your planned tasks, pause and review:\n\n1. **Count unique primary target files** explored so far. If fewer than\n   50% of completed tasks targeted distinct files, remaining tasks MUST\n   target new files.\n2. **Check for re-exploration** — are any completed tasks exploring files\n   already well-covered before this session? Swap remaining tasks for\n   uncovered ones.\n3. **Review coverage map delta** — if fewer than 2 previously uncovered\n   files explored, prioritize uncovered files for remaining tasks.\n4. **Adjust the plan** — swap, add, or reorder remaining tasks. The plan\n   is a starting point, not a contract.\n\nThis prevents the fixation failure mode where the first half discovers a\nrich area and the second half keeps digging there instead of spreading.\n\n## Phase 4: AFK-Safe Patterns\n\n1. Worktrees are outside the repo — writes don't trigger approval\n2. Temp scripts go in `\u002Ftmp\u002Fshadow-dream-\u003Cslug>.*`\n3. Never modify main directly — only during reconciliation\n4. Clean up worktrees after push\n5. Shadow writes on dream branches are safe\n\n## Phase 5: Parallel Agent Rules\n\n1. Each agent targets different files (orchestrator assigns non-overlapping sets)\n2. Each agent gets its own branch (inherently isolated)\n3. Each agent writes its own manifest in its `$DREAM_ID\u002F` directory\n4. Do NOT write to main or shared files (`_index.md`, `state.json`)\n5. Do NOT update metadata — reconciled post-dream by orchestrator\n6. Fetch once, branch from Phase 1 snapshot (no independent fetches)\n7. Manifest anchors use bare symbol names (reconciler normalizes)\n8. Thread `RUN_PREFIX` into every subagent prompt\n9. Include `WORKTREE_BASE` and `DREAM_NS` in every subagent prompt\n10. Dream artifacts MUST use subdirectory format — flat files are a\n    completion criteria violation (see Critical Invariants → Artifact Format)\n\n## Phase 6: Reconcile to Main\n\n**⚠️ CRITICAL: Reconciliation is MANDATORY at the end of every dream batch.**\nSee Critical Invariants → Reconciliation is Mandatory (above) for the\nparallel-vs-sequential mode definitions and the auto-discover rule. Do\nNOT defer reconciliation across batches.\n\nThe `_index.md` entry is your sequential-mode checkpoint — any dream\nlisted there is safe if the session crashes.\n\nUse the reconciliation script:\n\n```bash\ncd \"$REPO_ROOT\"\ngit checkout \"$DEFAULT_BRANCH\"\ngit fetch origin --prune\n\n# Find and run the reconciliation script\nRECONCILE_SCRIPT=\"\"\nfor DIR in .github\u002Fskills\u002Fshadow-frog-dream .claude\u002Fskills\u002Fshadow-frog-dream; do\n    [ -f \"$DIR\u002Fdream-reconcile.py\" ] && RECONCILE_SCRIPT=\"$DIR\u002Fdream-reconcile.py\" && break\ndone\n\nif [ -n \"$RECONCILE_SCRIPT\" ]; then\n    python3 \"$RECONCILE_SCRIPT\" \"$REPO_ROOT\"\nelse\n    echo \"WARNING: dream-reconcile.py not found. Apply Script Failure Recovery: read dream-reconcile.py source, adapt its 9 steps manually.\"\nfi\n```\n\n**If the reconciler script fails or errors:** Read `dream-reconcile.py` source\nto understand which step broke and why. The script is structured as 9\nsequential, idempotent steps (see below). You can often fix the issue and\nre-run the script (it skips dreams already in `_index.md`), or perform the\nfailing step manually and then re-run the remaining steps. Common failures:\nmissing manifest, corrupt report frontmatter, merge conflict in shadow file.\nAdapt based on the error message.\n\n### What the Reconciler Does\n\n1. **Discovers** new branches (namespace-filtered, not in `_index.md`)\n2. **Reads\u002Fvalidates** manifests from remote branches\n3. **Merges** discoveries into main's per-file shadows (semantic dedup; on an exact-text duplicate it upgrades the existing entry's metadata — unions labels, raises source trust, promotes `uncertain`→`verified` — but never alters a `refuted` status)\n4. **Mirrors** reports, manifests, patches to main's `_dreams\u002F`\n5. **Updates** `_dreams\u002F_index.md` with new entries\n6. **Updates** `_meta\u002Fstate.json`\n7. **Rebuilds** top-level `.shadow\u002F_index.md` (per-file discovery counts)\n8. **Verifies** all artifacts present (hard gate)\n9. **(Optional)** Deletes reconciled branches — only with `--cleanup-branches`, and only after the reconciliation has been committed and pushed (refuses on a dirty `.shadow\u002F` or when HEAD is not yet on `origin\u002F\u003Cdefault-branch>`)\n\n### After Reconciliation: Commit, Push, and Cleanup\n\n```bash\ncd \"$REPO_ROOT\"\ngit add .shadow\u002F\ngit commit -m \"dream: reconcile $(date -u +%Y%m%d-%H%M%SZ) — N experiments\"\ngit pull --rebase origin \"$DEFAULT_BRANCH\" || {\n    echo \"ERROR: Rebase failed. Abort and retry manually.\"\n    git rebase --abort 2>\u002Fdev\u002Fnull\n    exit 1\n}\nif git push origin \"$DEFAULT_BRANCH\"; then\n    echo \"✓ Pushed reconciliation\"\nelse\n    echo \"ERROR: Push failed. Retry: git pull --rebase && git push\"\n    echo \"⚠️ Do NOT clean up branches until push succeeds.\"\n    exit 1\nfi\n```\n\n### Post-Reconciliation Branch Cleanup\n\nAfter reconciliation is **committed AND pushed**, clean up dream branches\nto prevent repo pollution. Only delete branches whose artifacts are safely\non main.\n\n```bash\nfor BRANCH in $RECONCILED_BRANCHES; do\n    DREAM_ID=\"${BRANCH#dream\u002F${DREAM_NS}\u002F}\"\n    # Safety check: verify artifacts exist on main BEFORE deleting.\n    # Match the _index.md entry by EXACT cell (column 2), not substring —\n    # `grep -qF \"$DREAM_ID\"` would false-match when one dream_id is a prefix\n    # of another, deleting an un-reconciled branch.\n    if [ -f .shadow\u002F_dreams\u002F\"$DREAM_ID\"\u002Freport.md ] && \\\n       [ -f .shadow\u002F_dreams\u002F\"$DREAM_ID\"\u002Fmanifest.json ] && \\\n       [ -f .shadow\u002F_dreams\u002F\"$DREAM_ID\"\u002Fpatch.diff ] && \\\n       awk -F'|' -v id=\"$DREAM_ID\" \\\n         '{gsub(\u002F \u002F,\"\",$2); if ($2==id) f=1} END {exit !f}' \\\n         .shadow\u002F_dreams\u002F_index.md 2>\u002Fdev\u002Fnull; then\n        # Safe to delete — all artifacts are on main\n        git push origin --delete \"$BRANCH\" 2>\u002Fdev\u002Fnull && \\\n            echo \"  🗑 Deleted remote: $BRANCH\"\n        git branch -D \"$BRANCH\" 2>\u002Fdev\u002Fnull && \\\n            echo \"  🗑 Deleted local: $BRANCH\"\n    else\n        echo \"  ⚠️ KEEPING $BRANCH — artifacts not verified on main\"\n    fi\ndone\n```\n\n**Rules:**\n- NEVER delete branches before push to main succeeds\n- NEVER delete branches that have un-reconciled descendants\n- If `SHADOWFROG_KEEP_BRANCHES=1` is set, skip cleanup (for eval harness)\n- `dead_end` branches are cleaned up too — `patch.diff` + `tip_commit` in\n  index preserves recoverability\n- Branches with compounding descendants: delete ONLY after descendants are\n  also reconciled (check `_index.md` for entries listing this branch as parent)\n\n**Worktree cleanup** happens separately (Phase 7 — see \"Worktree Pruning\"\nbelow). Worktrees can be removed immediately after branch push regardless\nof reconciliation status. Reconciled branches also have their worktree\nGC'd automatically by `dream-reconcile.py --cleanup-branches`.\n\n### Recovery\n\nIf reconciliation is interrupted: branches are already pushed (no data\nloss). Re-run reconciliation — it's idempotent. The reconciler uses\n`_dreams\u002F_index.md` as its journal: any branch already listed there is\nskipped, any branch not listed is reprocessed. The reconciler's own\nstep 8 verifies all artifacts on main; if verification fails the script\nexits non-zero — fix the cause and re-run.\n\n## Phase 7: Summary, Review, and Pruning\n\n### End-of-Session Cleanup\n\nBefore the summary, sweep leftover worktrees from the mid-batch leak\n(dreams that pushed but weren't `dream-cleanup.sh`'d before the loop\nexited). Only run this once the agent has asserted no more dreams are\nstarting **in this namespace**:\n\n```bash\nbash \"$SKILL_DIR\u002Fdream-gc.sh\" \\\n    --task-complete --namespace \"$DREAM_NS\" \\\n    --repo-root \"$REPO_ROOT\" --min-age-min 0\n```\n\nSee \"Worktree Pruning\" below for `--namespace` rationale, `--min-age-min`\nsemantics, and the other three cleanup paths.\n\n### Summary\n\n```\nDream session complete.\n  Results (by category):\n    Investigation: N tasks, M discoveries\n    Bug hunting: ...\n  Branches pushed: K\n  Branch tree:\n    main\n    +-- dream\u002F\u003Cid-1> (useful)\n    +-- dream\u002F\u003Cid-2> (dead_end)\n  Top findings:\n    - \u003Cdiscovery> -- \u003Ccategory>\n```\n\n### Experiment Review\n\nWalk through each experiment with the user. Actions:\n- **Keep** (default) — branch and report stay\n- **Delete** — remove from `_dreams\u002F`, delete remote branch\n- **Checkout** — inspect the code live\n\nWait for user confirmation before deleting any remote branch.\n\n### Branch Pruning\n\nReconciled branches are cleaned up automatically after push. For\nbranches not auto-cleaned (push failed, or `SHADOWFROG_KEEP_BRANCHES=1`\nset), apply the rules in Phase 6 → Post-Reconciliation Branch Cleanup\n(above).\n\n### Worktree Pruning\n\nDream worktrees live OUTSIDE the repo at\n`${DREAM_WORKTREE_BASE:-\u002Ftmp\u002Fshadowfrog-dreams}\u002F\u003Cns>\u002Fdream-\u003Cslug>\u002F`. There\nare four places they get cleaned up:\n\n1. **`dream-cleanup.sh`** — called by the agent after each `git push` (see\n   \"Worktree Cleanup\" earlier in this skill). Removes ONE worktree.\n2. **`dream-reconcile.py --cleanup-branches`** — after deleting a merged\n   branch, also `rm -rf`s its worktree directory. No extra command needed.\n3. **`dream-gc.sh` (auto-triggered)** — `dream-setup.sh` invokes this\n   sweeper at the start of each new dream, throttled by a per-namespace\n   `.last-gc` tombstone to run at most once per `DREAM_GC_INTERVAL_MIN`\n   minutes (default 60). Catches orphans from crashed dreams, machine\n   reboots, OOM-killed agents — the long tail of cleanup failures that\n   accumulated GBs of leaked worktrees on long-running fleets.\n\n   Env knobs (all optional, sensible defaults):\n     - `DREAM_GC_AUTO=0` — disable the auto-trigger entirely\n     - `DREAM_GC_INTERVAL_MIN` — how often the trigger fires (default 60)\n     - `DREAM_GC_AGE_MIN` — min worktree age to sweep (default 60)\n\n4. **`dream-gc.sh --task-complete --namespace \"$DREAM_NS\"`** —\n   end-of-session sweep, run by the agent when it stops dreaming (dream\n   count reached, or genuinely blocked). Unlike the auto-trigger, this\n   mode ALSO removes `stale-registered` worktrees (valid `.git` pointer\n   but no `dream-cleanup.sh` ever ran on them — the mid-batch\n   `task_complete` leak). The agent's assertion \"I'm done dreaming\n   **in this namespace**\" is what makes this safe.\n\n   **Required:** `--namespace` (or `DREAM_NAMESPACE` env). The script\n   refuses with exit 2 if neither is given — that prevents a multi-repo\n   fleet sharing one `$DREAM_WORKTREE_BASE` from one agent's\n   `task_complete` destroying another agent's live worktrees.\n\n   `--min-age-min` is an **mtime gate, not a liveness check**. Pass `0`\n   at end-of-session to catch the freshly-pushed final batch; pass a\n   higher value (e.g. `10`) if you can't fully assert that no other\n   dream in the same namespace is in flight. Locked worktrees\n   (`git worktree lock`) are always respected — the sweeper WARNs and\n   leaves them in place.\n\n   ```bash\n   # At the end of the dream loop, before the final summary:\n   bash \"$SKILL_DIR\u002Fdream-gc.sh\" \\\n       --task-complete \\\n       --namespace \"$DREAM_NS\" \\\n       --repo-root \"$REPO_ROOT\" \\\n       --min-age-min 0\n   ```\n\nAll four paths share a single safety gate (`_worktree_safety.py`) that\nrefuses ANY path which is not strictly under `$DREAM_WORKTREE_BASE` and\ndoesn't match the exact `\u003Cbase>\u002F\u003Cns>\u002Fdream-\u003Cslug>` shape. The gate is\nunconditional — even an attacker-controlled `$DREAM_WORKTREE_BASE` cannot\ncause `rm -rf \u002F`.\n\n### Applying Dream Code\n\n```bash\n# Option 1: Merge the dream branch\ngit checkout \"$DEFAULT_BRANCH\"\ngit merge dream\u002F\u003Cid> --no-ff -m \"Adopt dream: \u003Ctitle>\"\n\n# Option 2: Cherry-pick specific commits\ngit cherry-pick \u003Ctip_commit>\n\n# Option 3: Apply the patch (if branch was pruned but commit exists)\ngit show \u003Ctip_commit> | git apply\n```\n\n## Guidance\n\n- **Always experiment.** Implementation reveals what reading cannot.\n- **Small tasks, big lessons.** 30-minute experiment > 3 hours reading.\n- **Fail forward.** \"Tried X, broke because Y\" is extremely valuable.\n- **Breadth over depth.** More files with 2-3 discoveries > one file with 20.\n- **No descriptions.** \"Catches all exceptions including OOM\" yes.\n  \"This function authenticates users\" no.\n- **Compound deliberately.** Read parent's report. Build on findings.\n- **Branches are cheap, shadow is expensive.** Push freely, write carefully.\n\n## Experiment Completion Criteria\n\nA task is complete ONLY when ALL of these hold:\n\n1. Code was written or modified (non-empty `patch.diff`)\n2. At least one command was executed with exit code recorded in `Commands Run`\n3. At least one finding tied to running code (not just reading)\n4. At least one per-file `.shadow\u002F*.md` edit made\n5. Discoveries are behavioral insights, not feature descriptions\n6. `report.md` saved with all required fields\n7. Dream branch pushed to remote\n8. Reconciliation completed and verified (`report.md`, `manifest.json`,\n   `patch.diff` exist on main, `_index.md` has entry)\n\nAdditional gates:\n- **Feature design:** `## Motivation` cites specific existing code\n- **Compounding:** `## Compounding Delta` explains what parent code was modified\n\nA task that fails these criteria is **not completed**. If setup fails or\nthe experiment produces nothing, mark it `blocked` in the summary and\nreplace it with another experiment. Blocked tasks do not count toward the\ncategory minimum.\n\n> **After reconciliation:** run `\u002Fshadow-frog-meditate` to consolidate\n> discoveries and repair the index.\n\n## Curating Dream Experiments for Upstream PRs\n\nOnce dream branches accumulate, you (or the user) may want to surface a\nfew worth submitting to the upstream project. The default AI failure mode\nis sycophancy — approving too many experiments because they look like\nwork. Resist that. Apply these heuristics:\n\n1. **The maintainer test.** For each experiment, ask: *If I submitted this\n   as a PR to an open-source repo I don't maintain, would the maintainer\n   merge it — or politely close it?* This is the only question that matters.\n2. **Devil's advocate framing.** Your job is to find reasons NOT to PR\n   each experiment. Recommend only when you cannot find a compelling\n   reason to reject.\n3. **70% rejection quota.** If you approve more than 30% of experiments\n   reviewed, your standards are too low. Re-evaluate.\n4. **The \"so what?\" test.** Would a human engineer read the report and\n   say \"so what?\" If yes, reject.\n5. **The 30-minute test.** Could a competent developer have produced\n   this in 30 minutes with a linter, TODO grep, or quick docs read? If\n   yes, it's maintenance work, not a contribution. Reject.\n6. **The novelty test.** Does the experiment reveal a non-obvious\n   behavior, hidden assumption, or unexpected interaction? If not, reject.\n7. **No credit for effort.** A 10-experiment chain that produces a minor\n   tweak is still a minor tweak. Judge the result, not the journey.\n\nWhen you do submit a PR, write the body for someone who has never seen\nthe fork. Include: one-paragraph \"what it does\" derived from the dream\nreport, the experiment's evidence (test output, before\u002Fafter metric),\nand an honest \"what we did not verify\" note.\n",{"data":37,"body":45},{"name":4,"description":6,"scripts":38},[39,40,41,42,43,44],"dream-coverage.py","dream-validate.py","dream-reconcile.py","dream-setup.sh","dream-cleanup.sh","dream-gc.sh",{"type":46,"children":47},"root",[48,57,85,92,97,113,193,199,211,295,301,310,316,325,338,344,388,394,399,407,438,443,449,489,498,524,530,569,575,580,730,951,959,1399,1404,1410,1416,3318,3336,3361,3367,3380,3647,3653,3687,3693,3698,3917,3935,3960,4080,4092,4098,4103,4154,4164,4222,4240,4246,4258,4264,4425,4536,4546,4552,4576,4585,4591,4596,4639,4649,4659,4665,4719,4724,4781,4786,4792,4797,4803,4808,4814,4819,4827,4871,4889,4895,4907,4925,4931,4936,4954,4967,4973,4985,5317,5344,5429,5453,5469,5487,5493,5505,5558,5563,5568,5574,5597,5603,5613,5644,5680,5687,5707,5739,5745,5792,5894,5899,5944,5949,5958,5967,5972,5982,5988,6028,6034,6053,6059,6090,6095,6113,6118,6136,6141,6150,6156,6168,6787,6805,6868,6928,6934,6946,7406,7597,7627,7637,7660,7666,8780,8796,8802,8862,8912,8917,8923,8928,8971,8976,8982,9016,9022,9116,9122,9132,9144,9149,9463,9487,9493,9658,9664,9987,9993,10005,10547,10554,10615,10632,10638,10650,10656,10662,10680,10775,10796,10802,10811,10817,10822,10862,10867,10873,10885,10891,10904,11267,11309,11315,11513,11519,11592,11598,11603,11696,11701,11738,11757,11779,11785,11790,11870,11875],{"type":49,"tag":50,"props":51,"children":53},"element","h1",{"id":52},"shadowfrog-dream",[54],{"type":55,"value":56},"text","ShadowFrog Dream",{"type":49,"tag":58,"props":59,"children":60},"p",{},[61,63,69,71,76,78,83],{"type":55,"value":62},"Autonomous experimentation while the user is away. Every task is an\n",{"type":49,"tag":64,"props":65,"children":66},"strong",{},[67],{"type":55,"value":68},"experiment",{"type":55,"value":70}," — implement real code in a worktree, run it, persist as a\n",{"type":49,"tag":64,"props":72,"children":73},{},[74],{"type":55,"value":75},"named git branch",{"type":55,"value":77}," pushed to the fork. Dream's unique value is\nimplementation experience that ",{"type":49,"tag":64,"props":79,"children":80},{},[81],{"type":55,"value":82},"compounds across sessions",{"type":55,"value":84},".",{"type":49,"tag":86,"props":87,"children":89},"h2",{"id":88},"critical-invariants",[90],{"type":55,"value":91},"Critical Invariants",{"type":49,"tag":58,"props":93,"children":94},{},[95],{"type":55,"value":96},"These rules are stated ONCE here and enforced by helper scripts. Violating\nany of them is a completion criteria failure.",{"type":49,"tag":98,"props":99,"children":101},"h3",{"id":100},"prerequisite-shadow-must-be-git-tracked",[102,104,111],{"type":55,"value":103},"Prerequisite: ",{"type":49,"tag":105,"props":106,"children":108},"code",{"className":107},[],[109],{"type":55,"value":110},".shadow\u002F",{"type":55,"value":112}," must be git-tracked",{"type":49,"tag":58,"props":114,"children":115},{},[116,118,123,125,130,132,138,140,145,147,153,155,161,163,168,170,175,177,183,185,191],{"type":55,"value":117},"Dream moves ",{"type":49,"tag":105,"props":119,"children":121},{"className":120},[],[122],{"type":55,"value":110},{"type":55,"value":124}," content ",{"type":49,"tag":64,"props":126,"children":127},{},[128],{"type":55,"value":129},"through git",{"type":55,"value":131}," — artifacts are committed onto\nthe dream branch, pushed to the remote, then read back by the reconciler via\n",{"type":49,"tag":105,"props":133,"children":135},{"className":134},[],[136],{"type":55,"value":137},"git show origin\u002F\u003Cbranch> .shadow\u002F...",{"type":55,"value":139},". If ",{"type":49,"tag":105,"props":141,"children":143},{"className":142},[],[144],{"type":55,"value":110},{"type":55,"value":146}," is gitignored (the\n\"local only\" option in ",{"type":49,"tag":105,"props":148,"children":150},{"className":149},[],[151],{"type":55,"value":152},"shadow-frog-init",{"type":55,"value":154},"), ",{"type":49,"tag":105,"props":156,"children":158},{"className":157},[],[159],{"type":55,"value":160},"git add -A",{"type":55,"value":162}," silently skips those\nfiles, nothing reaches the remote, and the reconciler finds no manifest —\n",{"type":49,"tag":64,"props":164,"children":165},{},[166],{"type":55,"value":167},"every discovery is lost without warning",{"type":55,"value":169},". ",{"type":49,"tag":105,"props":171,"children":173},{"className":172},[],[174],{"type":55,"value":42},{"type":55,"value":176}," runs\n",{"type":49,"tag":105,"props":178,"children":180},{"className":179},[],[181],{"type":55,"value":182},"git check-ignore .shadow",{"type":55,"value":184}," up front and refuses to start if it's ignored.\nUse ",{"type":49,"tag":105,"props":186,"children":188},{"className":187},[],[189],{"type":55,"value":190},"shadow-frog-update",{"type":55,"value":192}," instead for local-only shadows.",{"type":49,"tag":98,"props":194,"children":196},{"id":195},"path-isolation",[197],{"type":55,"value":198},"Path Isolation",{"type":49,"tag":200,"props":201,"children":205},"pre",{"className":202,"code":204,"language":55},[203],"language-text","WORKTREE_BASE = \u002Ftmp\u002Fshadowfrog-dreams\u002F\u003CDREAM_NS>\u002F\nWORKTREE_DIR  = $WORKTREE_BASE\u002Fdream-\u003CSLUG>\n",[206],{"type":49,"tag":105,"props":207,"children":209},{"__ignoreMap":208},"",[210],{"type":55,"value":204},{"type":49,"tag":212,"props":213,"children":214},"ul",{},[215,229,264,285],{"type":49,"tag":216,"props":217,"children":218},"li",{},[219,221,227],{"type":55,"value":220},"Worktrees are ALWAYS in ",{"type":49,"tag":105,"props":222,"children":224},{"className":223},[],[225],{"type":55,"value":226},"\u002Ftmp\u002Fshadowfrog-dreams\u002F\u003CDREAM_NS>\u002F",{"type":55,"value":228},", NEVER in\nthe project directory. This prevents conflicts between parallel agents\nand keeps the main repo clean.",{"type":49,"tag":216,"props":230,"children":231},{},[232,238,240,246,248,254,256,262],{"type":49,"tag":105,"props":233,"children":235},{"className":234},[],[236],{"type":55,"value":237},"DREAM_NS",{"type":55,"value":239}," (namespace) isolates branches per task\u002Finstance. Resolved\nfrom: ",{"type":49,"tag":105,"props":241,"children":243},{"className":242},[],[244],{"type":55,"value":245},"DREAM_NAMESPACE",{"type":55,"value":247}," env → ",{"type":49,"tag":105,"props":249,"children":251},{"className":250},[],[252],{"type":55,"value":253},"TASK_INFO.json",{"type":55,"value":255}," → ",{"type":49,"tag":105,"props":257,"children":259},{"className":258},[],[260],{"type":55,"value":261},".env",{"type":55,"value":263}," → repo basename.",{"type":49,"tag":216,"props":265,"children":266},{},[267,269,275,277,283],{"type":55,"value":268},"Override only with ",{"type":49,"tag":105,"props":270,"children":272},{"className":271},[],[273],{"type":55,"value":274},"DREAM_WORKTREE_BASE",{"type":55,"value":276}," env var if ",{"type":49,"tag":105,"props":278,"children":280},{"className":279},[],[281],{"type":55,"value":282},"\u002Ftmp",{"type":55,"value":284}," is too small.",{"type":49,"tag":216,"props":286,"children":287},{},[288,293],{"type":49,"tag":105,"props":289,"children":291},{"className":290},[],[292],{"type":55,"value":42},{"type":55,"value":294}," computes and enforces all paths. Use it.",{"type":49,"tag":98,"props":296,"children":298},{"id":297},"branch-naming",[299],{"type":55,"value":300},"Branch Naming",{"type":49,"tag":200,"props":302,"children":305},{"className":303,"code":304,"language":55},[203],"BRANCH_NAME = dream\u002F\u003CDREAM_NS>\u002F\u003CDREAM_ID>\nDREAM_ID    = YYYYMMDD-HHMMSSZ-\u003CSLUG>\n",[306],{"type":49,"tag":105,"props":307,"children":308},{"__ignoreMap":208},[309],{"type":55,"value":304},{"type":49,"tag":98,"props":311,"children":313},{"id":312},"artifact-format",[314],{"type":55,"value":315},"Artifact Format",{"type":49,"tag":200,"props":317,"children":320},{"className":318,"code":319,"language":55},[203],".shadow\u002F_dreams\u002F\u003CDREAM_ID>\u002Freport.md\n.shadow\u002F_dreams\u002F\u003CDREAM_ID>\u002Fmanifest.json\n.shadow\u002F_dreams\u002F\u003CDREAM_ID>\u002Fpatch.diff\n",[321],{"type":49,"tag":105,"props":322,"children":323},{"__ignoreMap":208},[324],{"type":55,"value":319},{"type":49,"tag":58,"props":326,"children":327},{},[328,330,336],{"type":55,"value":329},"NEVER flat files (",{"type":49,"tag":105,"props":331,"children":333},{"className":332},[],[334],{"type":55,"value":335},"_dreams\u002F\u003CDREAM_ID>.md",{"type":55,"value":337},"). Flat files break the pipeline.",{"type":49,"tag":98,"props":339,"children":341},{"id":340},"run_prefix",[342],{"type":55,"value":343},"RUN_PREFIX",{"type":49,"tag":58,"props":345,"children":346},{},[347,349,354,356,362,364,370,372,378,380,386],{"type":55,"value":348},"All python\u002Fpytest commands MUST use the ",{"type":49,"tag":105,"props":350,"children":352},{"className":351},[],[353],{"type":55,"value":343},{"type":55,"value":355}," resolved during\npreflight. When ",{"type":49,"tag":105,"props":357,"children":359},{"className":358},[],[360],{"type":55,"value":361},"RUN_PREFIX=\"uv run\"",{"type":55,"value":363},", use ",{"type":49,"tag":105,"props":365,"children":367},{"className":366},[],[368],{"type":55,"value":369},"$RUN_PREFIX python3 ...",{"type":55,"value":371},".\nBare ",{"type":49,"tag":105,"props":373,"children":375},{"className":374},[],[376],{"type":55,"value":377},"python3",{"type":55,"value":379}," or ",{"type":49,"tag":105,"props":381,"children":383},{"className":382},[],[384],{"type":55,"value":385},"pytest",{"type":55,"value":387}," without prefix is a violation when non-empty.",{"type":49,"tag":98,"props":389,"children":391},{"id":390},"reconciliation-is-mandatory",[392],{"type":55,"value":393},"Reconciliation is Mandatory",{"type":49,"tag":58,"props":395,"children":396},{},[397],{"type":55,"value":398},"Every dream branch must reconcile to main before the session ends. The\nmost common failure mode is agents pushing dream branches but never\nreconciling — losing all discoveries.",{"type":49,"tag":58,"props":400,"children":401},{},[402],{"type":49,"tag":64,"props":403,"children":404},{},[405],{"type":55,"value":406},"Two modes:",{"type":49,"tag":212,"props":408,"children":409},{},[410,428],{"type":49,"tag":216,"props":411,"children":412},{},[413,418,420,426],{"type":49,"tag":64,"props":414,"children":415},{},[416],{"type":55,"value":417},"Parallel mode (default):",{"type":55,"value":419}," Launch a batch of 3-4 sub-agents → wait\nfor all to push → run ",{"type":49,"tag":105,"props":421,"children":423},{"className":422},[],[424],{"type":55,"value":425},"dream-reconcile.py \"$REPO_ROOT\"",{"type":55,"value":427}," ONCE at the end\nof the batch. The reconciler auto-discovers every un-reconciled dream\nbranch in the namespace — you do NOT pass branch names. One call merges\nevery pushed branch.",{"type":49,"tag":216,"props":429,"children":430},{},[431,436],{"type":49,"tag":64,"props":432,"children":433},{},[434],{"type":55,"value":435},"Sequential mode (fallback when sub-agents unavailable):",{"type":55,"value":437},"\nComplete dream → push → reconcile → verify → next dream. Adds ~30s\nper dream but guarantees zero data loss if the session crashes\nmid-batch.",{"type":49,"tag":58,"props":439,"children":440},{},[441],{"type":55,"value":442},"Never queue multiple un-reconciled batches; reconcile at the end of\neach batch or each individual dream.",{"type":49,"tag":98,"props":444,"children":446},{"id":445},"script-failure-recovery",[447],{"type":55,"value":448},"Script Failure Recovery",{"type":49,"tag":58,"props":450,"children":451},{},[452,454,459,461,466,468,473,475,480,482,487],{"type":55,"value":453},"All helper scripts (",{"type":49,"tag":105,"props":455,"children":457},{"className":456},[],[458],{"type":55,"value":42},{"type":55,"value":460},", ",{"type":49,"tag":105,"props":462,"children":464},{"className":463},[],[465],{"type":55,"value":41},{"type":55,"value":467},",\n",{"type":49,"tag":105,"props":469,"children":471},{"className":470},[],[472],{"type":55,"value":40},{"type":55,"value":474},") are ",{"type":49,"tag":64,"props":476,"children":477},{},[478],{"type":55,"value":479},"self-documenting",{"type":55,"value":481},". If a script fails or is\nunavailable: ",{"type":49,"tag":64,"props":483,"children":484},{},[485],{"type":55,"value":486},"read the script source",{"type":55,"value":488},", understand what it does, and adapt\nits logic manually for your situation. Never skip steps just because a\nscript errored — the steps still need to happen.",{"type":49,"tag":200,"props":490,"children":493},{"className":491,"code":492,"language":55},[203],"Fork repo (user\u002Ftarget-repo)\n  main --- .shadow\u002F (accumulated ALL discoveries)\n  |\n  +-- dream\u002F\u003Cns>\u002F\u003Cid-1>  (cycle 1, agent A, from main)\n  +-- dream\u002F\u003Cns>\u002F\u003Cid-2>  (cycle 1, agent B, from main)\n  +-- dream\u002F\u003Cns>\u002F\u003Cid-3>  (cycle 2, from dream\u002F\u003Cns>\u002F\u003Cid-1>, compounding)\n",[494],{"type":49,"tag":105,"props":495,"children":496},{"__ignoreMap":208},[497],{"type":55,"value":492},{"type":49,"tag":212,"props":499,"children":500},{},[501,514,519],{"type":49,"tag":216,"props":502,"children":503},{},[504,506,512],{"type":55,"value":505},"Branches are live — ",{"type":49,"tag":105,"props":507,"children":509},{"className":508},[],[510],{"type":55,"value":511},"git checkout dream\u002F\u003Cid>",{"type":55,"value":513}," runs the code",{"type":49,"tag":216,"props":515,"children":516},{},[517],{"type":55,"value":518},"Shadow follows lineage — ancestor chain, not sibling branches",{"type":49,"tag":216,"props":520,"children":521},{},[522],{"type":55,"value":523},"Main is the accumulator — reconciliation merges ALL discoveries",{"type":49,"tag":98,"props":525,"children":527},{"id":526},"prerequisites",[528],{"type":55,"value":529},"Prerequisites",{"type":49,"tag":531,"props":532,"children":533},"ol",{},[534,539,552],{"type":49,"tag":216,"props":535,"children":536},{},[537],{"type":55,"value":538},"Forked repo cloned locally with pushable remote",{"type":49,"tag":216,"props":540,"children":541},{},[542,544,550],{"type":55,"value":543},"ShadowFrog skills installed (",{"type":49,"tag":105,"props":545,"children":547},{"className":546},[],[548],{"type":55,"value":549},"install.sh --project \u002Fpath\u002Fto\u002Ffork",{"type":55,"value":551},")",{"type":49,"tag":216,"props":553,"children":554},{},[555,560,562,568],{"type":49,"tag":105,"props":556,"children":558},{"className":557},[],[559],{"type":55,"value":110},{"type":55,"value":561}," initialized (",{"type":49,"tag":105,"props":563,"children":565},{"className":564},[],[566],{"type":55,"value":567},"\u002Fshadow-frog-init",{"type":55,"value":551},{"type":49,"tag":86,"props":570,"children":572},{"id":571},"helper-scripts",[573],{"type":55,"value":574},"Helper Scripts",{"type":49,"tag":58,"props":576,"children":577},{},[578],{"type":55,"value":579},"This skill bundles 6 helper scripts. Find them in the skill directory:",{"type":49,"tag":200,"props":581,"children":585},{"className":582,"code":583,"language":584,"meta":208,"style":208},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","SKILL_DIR=\"\"\nfor DIR in .github\u002Fskills\u002Fshadow-frog-dream .claude\u002Fskills\u002Fshadow-frog-dream; do\n    [ -d \"$DIR\" ] && SKILL_DIR=\"$DIR\" && break\ndone\n","bash",[586],{"type":49,"tag":105,"props":587,"children":588},{"__ignoreMap":208},[589,612,653,721],{"type":49,"tag":590,"props":591,"children":594},"span",{"class":592,"line":593},"line",1,[595,601,607],{"type":49,"tag":590,"props":596,"children":598},{"style":597},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[599],{"type":55,"value":600},"SKILL_DIR",{"type":49,"tag":590,"props":602,"children":604},{"style":603},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[605],{"type":55,"value":606},"=",{"type":49,"tag":590,"props":608,"children":609},{"style":603},[610],{"type":55,"value":611},"\"\"\n",{"type":49,"tag":590,"props":613,"children":615},{"class":592,"line":614},2,[616,622,627,632,638,643,648],{"type":49,"tag":590,"props":617,"children":619},{"style":618},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[620],{"type":55,"value":621},"for",{"type":49,"tag":590,"props":623,"children":624},{"style":597},[625],{"type":55,"value":626}," DIR ",{"type":49,"tag":590,"props":628,"children":629},{"style":618},[630],{"type":55,"value":631},"in",{"type":49,"tag":590,"props":633,"children":635},{"style":634},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[636],{"type":55,"value":637}," .github\u002Fskills\u002Fshadow-frog-dream",{"type":49,"tag":590,"props":639,"children":640},{"style":634},[641],{"type":55,"value":642}," .claude\u002Fskills\u002Fshadow-frog-dream",{"type":49,"tag":590,"props":644,"children":645},{"style":603},[646],{"type":55,"value":647},";",{"type":49,"tag":590,"props":649,"children":650},{"style":618},[651],{"type":55,"value":652}," do\n",{"type":49,"tag":590,"props":654,"children":655},{"class":592,"line":29},[656,661,666,671,676,681,686,691,696,700,704,708,712,716],{"type":49,"tag":590,"props":657,"children":658},{"style":603},[659],{"type":55,"value":660},"    [",{"type":49,"tag":590,"props":662,"children":663},{"style":603},[664],{"type":55,"value":665}," -d",{"type":49,"tag":590,"props":667,"children":668},{"style":603},[669],{"type":55,"value":670}," \"",{"type":49,"tag":590,"props":672,"children":673},{"style":597},[674],{"type":55,"value":675},"$DIR",{"type":49,"tag":590,"props":677,"children":678},{"style":603},[679],{"type":55,"value":680},"\"",{"type":49,"tag":590,"props":682,"children":683},{"style":603},[684],{"type":55,"value":685}," ]",{"type":49,"tag":590,"props":687,"children":688},{"style":603},[689],{"type":55,"value":690}," &&",{"type":49,"tag":590,"props":692,"children":693},{"style":597},[694],{"type":55,"value":695}," SKILL_DIR",{"type":49,"tag":590,"props":697,"children":698},{"style":603},[699],{"type":55,"value":606},{"type":49,"tag":590,"props":701,"children":702},{"style":603},[703],{"type":55,"value":680},{"type":49,"tag":590,"props":705,"children":706},{"style":597},[707],{"type":55,"value":675},{"type":49,"tag":590,"props":709,"children":710},{"style":603},[711],{"type":55,"value":680},{"type":49,"tag":590,"props":713,"children":714},{"style":603},[715],{"type":55,"value":690},{"type":49,"tag":590,"props":717,"children":718},{"style":618},[719],{"type":55,"value":720}," break\n",{"type":49,"tag":590,"props":722,"children":724},{"class":592,"line":723},4,[725],{"type":49,"tag":590,"props":726,"children":727},{"style":618},[728],{"type":55,"value":729},"done\n",{"type":49,"tag":731,"props":732,"children":733},"table",{},[734,758],{"type":49,"tag":735,"props":736,"children":737},"thead",{},[738],{"type":49,"tag":739,"props":740,"children":741},"tr",{},[742,748,753],{"type":49,"tag":743,"props":744,"children":745},"th",{},[746],{"type":55,"value":747},"Script",{"type":49,"tag":743,"props":749,"children":750},{},[751],{"type":55,"value":752},"Purpose",{"type":49,"tag":743,"props":754,"children":755},{},[756],{"type":55,"value":757},"When to use",{"type":49,"tag":759,"props":760,"children":761},"tbody",{},[762,789,821,852,878,904],{"type":49,"tag":739,"props":763,"children":764},{},[765,774,779],{"type":49,"tag":766,"props":767,"children":768},"td",{},[769],{"type":49,"tag":105,"props":770,"children":772},{"className":771},[],[773],{"type":55,"value":42},{"type":49,"tag":766,"props":775,"children":776},{},[777],{"type":55,"value":778},"Creates worktree + branch with namespace isolation",{"type":49,"tag":766,"props":780,"children":781},{},[782,787],{"type":49,"tag":64,"props":783,"children":784},{},[785],{"type":55,"value":786},"Phase 3",{"type":55,"value":788}," — start of every experiment",{"type":49,"tag":739,"props":790,"children":791},{},[792,800,805],{"type":49,"tag":766,"props":793,"children":794},{},[795],{"type":49,"tag":105,"props":796,"children":798},{"className":797},[],[799],{"type":55,"value":40},{"type":49,"tag":766,"props":801,"children":802},{},[803],{"type":55,"value":804},"Validates artifacts before push (hard gate)",{"type":49,"tag":766,"props":806,"children":807},{},[808,813,815],{"type":49,"tag":64,"props":809,"children":810},{},[811],{"type":55,"value":812},"Phase 5",{"type":55,"value":814}," — before ",{"type":49,"tag":105,"props":816,"children":818},{"className":817},[],[819],{"type":55,"value":820},"git push",{"type":49,"tag":739,"props":822,"children":823},{},[824,832,842],{"type":49,"tag":766,"props":825,"children":826},{},[827],{"type":49,"tag":105,"props":828,"children":830},{"className":829},[],[831],{"type":55,"value":41},{"type":49,"tag":766,"props":833,"children":834},{},[835,837],{"type":55,"value":836},"Merges dream branches into main's ",{"type":49,"tag":105,"props":838,"children":840},{"className":839},[],[841],{"type":55,"value":110},{"type":49,"tag":766,"props":843,"children":844},{},[845,850],{"type":49,"tag":64,"props":846,"children":847},{},[848],{"type":55,"value":849},"Phase 6",{"type":55,"value":851}," — after all experiments done",{"type":49,"tag":739,"props":853,"children":854},{},[855,863,868],{"type":49,"tag":766,"props":856,"children":857},{},[858],{"type":49,"tag":105,"props":859,"children":861},{"className":860},[],[862],{"type":55,"value":39},{"type":49,"tag":766,"props":864,"children":865},{},[866],{"type":55,"value":867},"Computes exploration coverage map",{"type":49,"tag":766,"props":869,"children":870},{},[871,876],{"type":49,"tag":64,"props":872,"children":873},{},[874],{"type":55,"value":875},"Phase 2",{"type":55,"value":877}," — task planning for diversity",{"type":49,"tag":739,"props":879,"children":880},{},[881,889,894],{"type":49,"tag":766,"props":882,"children":883},{},[884],{"type":49,"tag":105,"props":885,"children":887},{"className":886},[],[888],{"type":55,"value":43},{"type":49,"tag":766,"props":890,"children":891},{},[892],{"type":55,"value":893},"Safely removes ONE dream worktree (with safety gate)",{"type":49,"tag":766,"props":895,"children":896},{},[897,902],{"type":49,"tag":64,"props":898,"children":899},{},[900],{"type":55,"value":901},"After push",{"type":55,"value":903}," — replaces the old inline cleanup snippet",{"type":49,"tag":739,"props":905,"children":906},{},[907,915,926],{"type":49,"tag":766,"props":908,"children":909},{},[910],{"type":49,"tag":105,"props":911,"children":913},{"className":912},[],[914],{"type":55,"value":44},{"type":49,"tag":766,"props":916,"children":917},{},[918,920],{"type":55,"value":919},"Sweeps orphan dream worktrees from ",{"type":49,"tag":105,"props":921,"children":923},{"className":922},[],[924],{"type":55,"value":925},"$DREAM_WORKTREE_BASE",{"type":49,"tag":766,"props":927,"children":928},{},[929,934,936,941,943,949],{"type":49,"tag":64,"props":930,"children":931},{},[932],{"type":55,"value":933},"Auto",{"type":55,"value":935}," — triggered by ",{"type":49,"tag":105,"props":937,"children":939},{"className":938},[],[940],{"type":55,"value":42},{"type":55,"value":942}," (per-namespace throttle, default 1× \u002F hour) in orphan-only mode; also ",{"type":49,"tag":105,"props":944,"children":946},{"className":945},[],[947],{"type":55,"value":948},"--task-complete --namespace \"$DREAM_NS\" --min-age-min 0",{"type":55,"value":950}," for end-of-session sweep of registered-but-stale dirs",{"type":49,"tag":58,"props":952,"children":953},{},[954],{"type":49,"tag":64,"props":955,"children":956},{},[957],{"type":55,"value":958},"Usage patterns:",{"type":49,"tag":200,"props":960,"children":962},{"className":582,"code":961,"language":584,"meta":208,"style":208},"# Setup: creates worktree, prints export vars.\n# IMPORTANT: capture the output FIRST, then eval it. Writing\n# `eval \"$(dream-setup.sh ...)\" || exit 1` does NOT catch failures: if the\n# command substitution exits non-zero and prints nothing, `eval \"\"` still\n# succeeds (exit 0) and the agent silently proceeds with empty env vars.\n# Assigning to a variable makes `|| exit 1` fire on the script's real exit code.\nSETUP_OUT=\"$(\"$SKILL_DIR\u002Fdream-setup.sh\" --slug t01-my-experiment)\" || exit 1\neval \"$SETUP_OUT\"\n# → exports (keep in sync with dream-setup.sh emit_export block):\n#   REPO_ROOT, DEFAULT_BRANCH, DREAM_NS, DREAM_ID, BRANCH_NAME, PARENT_BRANCH,\n#   WORKTREE_DIR, WORKTREE_BASE, BASE_COMMIT, RUN_PREFIX, SLUG\n\n# Validate: hard gate before push\npython3 \"$SKILL_DIR\u002Fdream-validate.py\" \"$DREAM_ID\" \"$WORKTREE_DIR\"\n\n# Reconcile: merge all dream branches into main\npython3 \"$SKILL_DIR\u002Fdream-reconcile.py\" \"$REPO_ROOT\"\n# After `git push` succeeds, optionally clean up reconciled branches.\n# Cleanup REFUSES to run if `.shadow\u002F` has uncommitted changes, or unless\n# HEAD is already on origin\u002F\u003Cdefault-branch> — so the canonical flow is:\n#   reconcile → git add .shadow\u002F && git commit && git push → re-run --cleanup-branches\npython3 \"$SKILL_DIR\u002Fdream-reconcile.py\" \"$REPO_ROOT\" --cleanup-branches\n\n# Coverage: show which files still need exploration\npython3 \"$SKILL_DIR\u002Fdream-coverage.py\" \"$REPO_ROOT\"\n\n# All scripts support --help.\n",[963],{"type":49,"tag":105,"props":964,"children":965},{"__ignoreMap":208},[966,975,983,991,999,1008,1017,1077,1100,1109,1118,1127,1137,1145,1196,1204,1213,1251,1260,1269,1278,1287,1328,1336,1345,1382,1390],{"type":49,"tag":590,"props":967,"children":968},{"class":592,"line":593},[969],{"type":49,"tag":590,"props":970,"children":972},{"style":971},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[973],{"type":55,"value":974},"# Setup: creates worktree, prints export vars.\n",{"type":49,"tag":590,"props":976,"children":977},{"class":592,"line":614},[978],{"type":49,"tag":590,"props":979,"children":980},{"style":971},[981],{"type":55,"value":982},"# IMPORTANT: capture the output FIRST, then eval it. Writing\n",{"type":49,"tag":590,"props":984,"children":985},{"class":592,"line":29},[986],{"type":49,"tag":590,"props":987,"children":988},{"style":971},[989],{"type":55,"value":990},"# `eval \"$(dream-setup.sh ...)\" || exit 1` does NOT catch failures: if the\n",{"type":49,"tag":590,"props":992,"children":993},{"class":592,"line":723},[994],{"type":49,"tag":590,"props":995,"children":996},{"style":971},[997],{"type":55,"value":998},"# command substitution exits non-zero and prints nothing, `eval \"\"` still\n",{"type":49,"tag":590,"props":1000,"children":1002},{"class":592,"line":1001},5,[1003],{"type":49,"tag":590,"props":1004,"children":1005},{"style":971},[1006],{"type":55,"value":1007},"# succeeds (exit 0) and the agent silently proceeds with empty env vars.\n",{"type":49,"tag":590,"props":1009,"children":1011},{"class":592,"line":1010},6,[1012],{"type":49,"tag":590,"props":1013,"children":1014},{"style":971},[1015],{"type":55,"value":1016},"# Assigning to a variable makes `|| exit 1` fire on the script's real exit code.\n",{"type":49,"tag":590,"props":1018,"children":1020},{"class":592,"line":1019},7,[1021,1026,1030,1035,1040,1045,1050,1055,1060,1065,1071],{"type":49,"tag":590,"props":1022,"children":1023},{"style":597},[1024],{"type":55,"value":1025},"SETUP_OUT",{"type":49,"tag":590,"props":1027,"children":1028},{"style":603},[1029],{"type":55,"value":606},{"type":49,"tag":590,"props":1031,"children":1032},{"style":603},[1033],{"type":55,"value":1034},"\"$(",{"type":49,"tag":590,"props":1036,"children":1038},{"style":1037},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1039],{"type":55,"value":680},{"type":49,"tag":590,"props":1041,"children":1042},{"style":597},[1043],{"type":55,"value":1044},"$SKILL_DIR",{"type":49,"tag":590,"props":1046,"children":1047},{"style":1037},[1048],{"type":55,"value":1049},"\u002Fdream-setup.sh\"",{"type":49,"tag":590,"props":1051,"children":1052},{"style":634},[1053],{"type":55,"value":1054}," --slug t01-my-experiment",{"type":49,"tag":590,"props":1056,"children":1057},{"style":603},[1058],{"type":55,"value":1059},")\"",{"type":49,"tag":590,"props":1061,"children":1062},{"style":603},[1063],{"type":55,"value":1064}," ||",{"type":49,"tag":590,"props":1066,"children":1068},{"style":1067},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[1069],{"type":55,"value":1070}," exit",{"type":49,"tag":590,"props":1072,"children":1074},{"style":1073},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1075],{"type":55,"value":1076}," 1\n",{"type":49,"tag":590,"props":1078,"children":1080},{"class":592,"line":1079},8,[1081,1086,1090,1095],{"type":49,"tag":590,"props":1082,"children":1083},{"style":1067},[1084],{"type":55,"value":1085},"eval",{"type":49,"tag":590,"props":1087,"children":1088},{"style":603},[1089],{"type":55,"value":670},{"type":49,"tag":590,"props":1091,"children":1092},{"style":597},[1093],{"type":55,"value":1094},"$SETUP_OUT",{"type":49,"tag":590,"props":1096,"children":1097},{"style":603},[1098],{"type":55,"value":1099},"\"\n",{"type":49,"tag":590,"props":1101,"children":1103},{"class":592,"line":1102},9,[1104],{"type":49,"tag":590,"props":1105,"children":1106},{"style":971},[1107],{"type":55,"value":1108},"# → exports (keep in sync with dream-setup.sh emit_export block):\n",{"type":49,"tag":590,"props":1110,"children":1112},{"class":592,"line":1111},10,[1113],{"type":49,"tag":590,"props":1114,"children":1115},{"style":971},[1116],{"type":55,"value":1117},"#   REPO_ROOT, DEFAULT_BRANCH, DREAM_NS, DREAM_ID, BRANCH_NAME, PARENT_BRANCH,\n",{"type":49,"tag":590,"props":1119,"children":1121},{"class":592,"line":1120},11,[1122],{"type":49,"tag":590,"props":1123,"children":1124},{"style":971},[1125],{"type":55,"value":1126},"#   WORKTREE_DIR, WORKTREE_BASE, BASE_COMMIT, RUN_PREFIX, SLUG\n",{"type":49,"tag":590,"props":1128,"children":1130},{"class":592,"line":1129},12,[1131],{"type":49,"tag":590,"props":1132,"children":1134},{"emptyLinePlaceholder":1133},true,[1135],{"type":55,"value":1136},"\n",{"type":49,"tag":590,"props":1138,"children":1139},{"class":592,"line":25},[1140],{"type":49,"tag":590,"props":1141,"children":1142},{"style":971},[1143],{"type":55,"value":1144},"# Validate: hard gate before push\n",{"type":49,"tag":590,"props":1146,"children":1148},{"class":592,"line":1147},14,[1149,1153,1157,1161,1166,1170,1174,1179,1183,1187,1192],{"type":49,"tag":590,"props":1150,"children":1151},{"style":1037},[1152],{"type":55,"value":377},{"type":49,"tag":590,"props":1154,"children":1155},{"style":603},[1156],{"type":55,"value":670},{"type":49,"tag":590,"props":1158,"children":1159},{"style":597},[1160],{"type":55,"value":1044},{"type":49,"tag":590,"props":1162,"children":1163},{"style":634},[1164],{"type":55,"value":1165},"\u002Fdream-validate.py",{"type":49,"tag":590,"props":1167,"children":1168},{"style":603},[1169],{"type":55,"value":680},{"type":49,"tag":590,"props":1171,"children":1172},{"style":603},[1173],{"type":55,"value":670},{"type":49,"tag":590,"props":1175,"children":1176},{"style":597},[1177],{"type":55,"value":1178},"$DREAM_ID",{"type":49,"tag":590,"props":1180,"children":1181},{"style":603},[1182],{"type":55,"value":680},{"type":49,"tag":590,"props":1184,"children":1185},{"style":603},[1186],{"type":55,"value":670},{"type":49,"tag":590,"props":1188,"children":1189},{"style":597},[1190],{"type":55,"value":1191},"$WORKTREE_DIR",{"type":49,"tag":590,"props":1193,"children":1194},{"style":603},[1195],{"type":55,"value":1099},{"type":49,"tag":590,"props":1197,"children":1199},{"class":592,"line":1198},15,[1200],{"type":49,"tag":590,"props":1201,"children":1202},{"emptyLinePlaceholder":1133},[1203],{"type":55,"value":1136},{"type":49,"tag":590,"props":1205,"children":1207},{"class":592,"line":1206},16,[1208],{"type":49,"tag":590,"props":1209,"children":1210},{"style":971},[1211],{"type":55,"value":1212},"# Reconcile: merge all dream branches into main\n",{"type":49,"tag":590,"props":1214,"children":1216},{"class":592,"line":1215},17,[1217,1221,1225,1229,1234,1238,1242,1247],{"type":49,"tag":590,"props":1218,"children":1219},{"style":1037},[1220],{"type":55,"value":377},{"type":49,"tag":590,"props":1222,"children":1223},{"style":603},[1224],{"type":55,"value":670},{"type":49,"tag":590,"props":1226,"children":1227},{"style":597},[1228],{"type":55,"value":1044},{"type":49,"tag":590,"props":1230,"children":1231},{"style":634},[1232],{"type":55,"value":1233},"\u002Fdream-reconcile.py",{"type":49,"tag":590,"props":1235,"children":1236},{"style":603},[1237],{"type":55,"value":680},{"type":49,"tag":590,"props":1239,"children":1240},{"style":603},[1241],{"type":55,"value":670},{"type":49,"tag":590,"props":1243,"children":1244},{"style":597},[1245],{"type":55,"value":1246},"$REPO_ROOT",{"type":49,"tag":590,"props":1248,"children":1249},{"style":603},[1250],{"type":55,"value":1099},{"type":49,"tag":590,"props":1252,"children":1254},{"class":592,"line":1253},18,[1255],{"type":49,"tag":590,"props":1256,"children":1257},{"style":971},[1258],{"type":55,"value":1259},"# After `git push` succeeds, optionally clean up reconciled branches.\n",{"type":49,"tag":590,"props":1261,"children":1263},{"class":592,"line":1262},19,[1264],{"type":49,"tag":590,"props":1265,"children":1266},{"style":971},[1267],{"type":55,"value":1268},"# Cleanup REFUSES to run if `.shadow\u002F` has uncommitted changes, or unless\n",{"type":49,"tag":590,"props":1270,"children":1272},{"class":592,"line":1271},20,[1273],{"type":49,"tag":590,"props":1274,"children":1275},{"style":971},[1276],{"type":55,"value":1277},"# HEAD is already on origin\u002F\u003Cdefault-branch> — so the canonical flow is:\n",{"type":49,"tag":590,"props":1279,"children":1281},{"class":592,"line":1280},21,[1282],{"type":49,"tag":590,"props":1283,"children":1284},{"style":971},[1285],{"type":55,"value":1286},"#   reconcile → git add .shadow\u002F && git commit && git push → re-run --cleanup-branches\n",{"type":49,"tag":590,"props":1288,"children":1290},{"class":592,"line":1289},22,[1291,1295,1299,1303,1307,1311,1315,1319,1323],{"type":49,"tag":590,"props":1292,"children":1293},{"style":1037},[1294],{"type":55,"value":377},{"type":49,"tag":590,"props":1296,"children":1297},{"style":603},[1298],{"type":55,"value":670},{"type":49,"tag":590,"props":1300,"children":1301},{"style":597},[1302],{"type":55,"value":1044},{"type":49,"tag":590,"props":1304,"children":1305},{"style":634},[1306],{"type":55,"value":1233},{"type":49,"tag":590,"props":1308,"children":1309},{"style":603},[1310],{"type":55,"value":680},{"type":49,"tag":590,"props":1312,"children":1313},{"style":603},[1314],{"type":55,"value":670},{"type":49,"tag":590,"props":1316,"children":1317},{"style":597},[1318],{"type":55,"value":1246},{"type":49,"tag":590,"props":1320,"children":1321},{"style":603},[1322],{"type":55,"value":680},{"type":49,"tag":590,"props":1324,"children":1325},{"style":634},[1326],{"type":55,"value":1327}," --cleanup-branches\n",{"type":49,"tag":590,"props":1329,"children":1331},{"class":592,"line":1330},23,[1332],{"type":49,"tag":590,"props":1333,"children":1334},{"emptyLinePlaceholder":1133},[1335],{"type":55,"value":1136},{"type":49,"tag":590,"props":1337,"children":1339},{"class":592,"line":1338},24,[1340],{"type":49,"tag":590,"props":1341,"children":1342},{"style":971},[1343],{"type":55,"value":1344},"# Coverage: show which files still need exploration\n",{"type":49,"tag":590,"props":1346,"children":1348},{"class":592,"line":1347},25,[1349,1353,1357,1361,1366,1370,1374,1378],{"type":49,"tag":590,"props":1350,"children":1351},{"style":1037},[1352],{"type":55,"value":377},{"type":49,"tag":590,"props":1354,"children":1355},{"style":603},[1356],{"type":55,"value":670},{"type":49,"tag":590,"props":1358,"children":1359},{"style":597},[1360],{"type":55,"value":1044},{"type":49,"tag":590,"props":1362,"children":1363},{"style":634},[1364],{"type":55,"value":1365},"\u002Fdream-coverage.py",{"type":49,"tag":590,"props":1367,"children":1368},{"style":603},[1369],{"type":55,"value":680},{"type":49,"tag":590,"props":1371,"children":1372},{"style":603},[1373],{"type":55,"value":670},{"type":49,"tag":590,"props":1375,"children":1376},{"style":597},[1377],{"type":55,"value":1246},{"type":49,"tag":590,"props":1379,"children":1380},{"style":603},[1381],{"type":55,"value":1099},{"type":49,"tag":590,"props":1383,"children":1385},{"class":592,"line":1384},26,[1386],{"type":49,"tag":590,"props":1387,"children":1388},{"emptyLinePlaceholder":1133},[1389],{"type":55,"value":1136},{"type":49,"tag":590,"props":1391,"children":1393},{"class":592,"line":1392},27,[1394],{"type":49,"tag":590,"props":1395,"children":1396},{"style":971},[1397],{"type":55,"value":1398},"# All scripts support --help.\n",{"type":49,"tag":58,"props":1400,"children":1401},{},[1402],{"type":55,"value":1403},"If a script is not found or fails, read its source — they are\nself-documenting. Adapt the steps manually if needed (see each phase for\ninline fallback instructions).",{"type":49,"tag":86,"props":1405,"children":1407},{"id":1406},"phase-1-preflight-and-assess",[1408],{"type":55,"value":1409},"Phase 1: Preflight and Assess",{"type":49,"tag":98,"props":1411,"children":1413},{"id":1412},"preflight-validation",[1414],{"type":55,"value":1415},"Preflight Validation",{"type":49,"tag":200,"props":1417,"children":1419},{"className":582,"code":1418,"language":584,"meta":208,"style":208},"REPO_ROOT=$(git rev-parse --show-toplevel)\ncd \"$REPO_ROOT\"\n\n# 0. Auto-detect DREAM_NAMESPACE\nif [ -z \"${DREAM_NAMESPACE:-}\" ]; then\n    if [ -f TASK_INFO.json ]; then\n        DREAM_NAMESPACE=$(python3 -c \"import json; print(json.load(open('TASK_INFO.json')).get('dream_namespace',''))\" 2>\u002Fdev\u002Fnull)\n        export DREAM_NAMESPACE\n    elif [ -f .env ]; then\n        DREAM_NAMESPACE=$(grep '^DREAM_NAMESPACE=' .env | head -1 | cut -d'=' -f2-)\n        export DREAM_NAMESPACE\n    fi\nfi\n[ -n \"${DREAM_NAMESPACE:-}\" ] && echo \"Dream namespace: $DREAM_NAMESPACE\"\n\n# 1. Detect default branch\nDEFAULT_BRANCH=$(git symbolic-ref refs\u002Fremotes\u002Forigin\u002FHEAD 2>\u002Fdev\u002Fnull | sed 's|refs\u002Fremotes\u002Forigin\u002F||')\nif [ -z \"$DEFAULT_BRANCH\" ]; then\n    if git show-ref --verify refs\u002Fremotes\u002Forigin\u002Fmain >\u002Fdev\u002Fnull 2>&1; then\n        DEFAULT_BRANCH=\"main\"\n    elif git show-ref --verify refs\u002Fremotes\u002Forigin\u002Fmaster >\u002Fdev\u002Fnull 2>&1; then\n        DEFAULT_BRANCH=\"master\"\n    else\n        echo \"ERROR: Cannot detect default branch. Fix: git remote set-head origin \u003Cbranch>\"\n    fi\nfi\necho \"Default branch: $DEFAULT_BRANCH\"\n\n# 2-5. Validate environment\necho \"Current branch: $(git branch --show-current)\"\necho \"Remote: $(git remote get-url origin)\"\ngit ls-remote origin HEAD >\u002Fdev\u002Fnull 2>&1 || echo \"ERROR: Cannot reach remote.\"\n[ -d .shadow ] || echo \"ERROR: .shadow\u002F not found. Run \u002Fshadow-frog-init first.\"\nmkdir -p .shadow\u002F_dreams\ngit diff --quiet && git diff --cached --quiet || echo \"ERROR: Uncommitted changes.\"\n\n# 6. Fetch all remote branches (ONE fetch for all agents)\ngit fetch origin --prune\n\n# 7. List dream branches (namespace-filtered)\nDREAM_NS=\"${DREAM_NAMESPACE:-}\"\nBRANCH_PATTERN=\"${DREAM_NS:+origin\u002Fdream\u002F${DREAM_NS}\u002F}\"\nBRANCH_PATTERN=\"${BRANCH_PATTERN:-origin\u002Fdream\u002F}\"\necho \"Available dream branches:\"\ngit branch -r | grep \"$BRANCH_PATTERN\" | sed 's|origin\u002F||' || echo \"  (none)\"\n\n# 8. Detect RUN_PREFIX from lockfiles\nif [ -f uv.lock ]; then\n    uv sync --all-groups 2>&1 | tail -3\n    RUN_PREFIX=\"uv run\"\nelif [ -f package-lock.json ]; then\n    npm install --quiet 2>&1 | tail -3\n    RUN_PREFIX=\"npx\"\nelif [ -f yarn.lock ]; then\n    yarn install --silent 2>&1 | tail -3\n    RUN_PREFIX=\"npx\"\nelse\n    RUN_PREFIX=\"\"\nfi\necho \"RUN_PREFIX='$RUN_PREFIX'\"\n\n# 9. List compoundable experiments\necho \"\"\necho \"=== COMPOUNDABLE EXPERIMENTS ===\"\nif [ -f .shadow\u002F_dreams\u002F_index.md ]; then\n    awk -F'|' 'NR>2 && \u002Fuseful\u002F {\n        gsub(\u002F \u002F,\"\",$2); gsub(\u002F \u002F,\"\",$4); gsub(\u002F \u002F,\"\",$6);\n        gsub(\u002F^ +| +$\u002F,\"\",$5);\n        if ($2 != \"\" && $6 != \"\") print $6 \" | \" $3 \" | \" $5\n    }' .shadow\u002F_dreams\u002F_index.md\n    COMPOUNDABLE=$(awk -F'|' 'NR>2 && \u002Fuseful\u002F {gsub(\u002F \u002F,\"\",$2); if ($2 != \"\") c++} END {print c+0}' .shadow\u002F_dreams\u002F_index.md)\n    echo \"Total compoundable: $COMPOUNDABLE\"\nelse\n    echo \"(none — first dream session)\"\nfi\n",[1420],{"type":49,"tag":105,"props":1421,"children":1422},{"__ignoreMap":208},[1423,1456,1476,1483,1491,1533,1564,1612,1626,1655,1740,1751,1759,1767,1823,1830,1838,1898,1934,1979,2004,2044,2068,2076,2097,2104,2111,2136,2144,2153,2189,2223,2280,2323,2342,2402,2410,2419,2441,2449,2458,2484,2544,2586,2607,2689,2697,2706,2735,2772,2798,2828,2862,2887,2916,2950,2974,2983,2999,3007,3037,3045,3054,3067,3088,3117,3153,3162,3171,3180,3198,3254,3281,3289,3310],{"type":49,"tag":590,"props":1424,"children":1425},{"class":592,"line":593},[1426,1431,1436,1441,1446,1451],{"type":49,"tag":590,"props":1427,"children":1428},{"style":597},[1429],{"type":55,"value":1430},"REPO_ROOT",{"type":49,"tag":590,"props":1432,"children":1433},{"style":603},[1434],{"type":55,"value":1435},"=$(",{"type":49,"tag":590,"props":1437,"children":1438},{"style":1037},[1439],{"type":55,"value":1440},"git",{"type":49,"tag":590,"props":1442,"children":1443},{"style":634},[1444],{"type":55,"value":1445}," rev-parse",{"type":49,"tag":590,"props":1447,"children":1448},{"style":634},[1449],{"type":55,"value":1450}," --show-toplevel",{"type":49,"tag":590,"props":1452,"children":1453},{"style":603},[1454],{"type":55,"value":1455},")\n",{"type":49,"tag":590,"props":1457,"children":1458},{"class":592,"line":614},[1459,1464,1468,1472],{"type":49,"tag":590,"props":1460,"children":1461},{"style":1067},[1462],{"type":55,"value":1463},"cd",{"type":49,"tag":590,"props":1465,"children":1466},{"style":603},[1467],{"type":55,"value":670},{"type":49,"tag":590,"props":1469,"children":1470},{"style":597},[1471],{"type":55,"value":1246},{"type":49,"tag":590,"props":1473,"children":1474},{"style":603},[1475],{"type":55,"value":1099},{"type":49,"tag":590,"props":1477,"children":1478},{"class":592,"line":29},[1479],{"type":49,"tag":590,"props":1480,"children":1481},{"emptyLinePlaceholder":1133},[1482],{"type":55,"value":1136},{"type":49,"tag":590,"props":1484,"children":1485},{"class":592,"line":723},[1486],{"type":49,"tag":590,"props":1487,"children":1488},{"style":971},[1489],{"type":55,"value":1490},"# 0. Auto-detect DREAM_NAMESPACE\n",{"type":49,"tag":590,"props":1492,"children":1493},{"class":592,"line":1001},[1494,1499,1504,1509,1514,1518,1523,1528],{"type":49,"tag":590,"props":1495,"children":1496},{"style":618},[1497],{"type":55,"value":1498},"if",{"type":49,"tag":590,"props":1500,"children":1501},{"style":603},[1502],{"type":55,"value":1503}," [",{"type":49,"tag":590,"props":1505,"children":1506},{"style":603},[1507],{"type":55,"value":1508}," -z",{"type":49,"tag":590,"props":1510,"children":1511},{"style":603},[1512],{"type":55,"value":1513}," \"${",{"type":49,"tag":590,"props":1515,"children":1516},{"style":597},[1517],{"type":55,"value":245},{"type":49,"tag":590,"props":1519,"children":1520},{"style":603},[1521],{"type":55,"value":1522},":-}\"",{"type":49,"tag":590,"props":1524,"children":1525},{"style":603},[1526],{"type":55,"value":1527}," ];",{"type":49,"tag":590,"props":1529,"children":1530},{"style":618},[1531],{"type":55,"value":1532}," then\n",{"type":49,"tag":590,"props":1534,"children":1535},{"class":592,"line":1010},[1536,1541,1545,1550,1555,1560],{"type":49,"tag":590,"props":1537,"children":1538},{"style":618},[1539],{"type":55,"value":1540},"    if",{"type":49,"tag":590,"props":1542,"children":1543},{"style":603},[1544],{"type":55,"value":1503},{"type":49,"tag":590,"props":1546,"children":1547},{"style":603},[1548],{"type":55,"value":1549}," -f",{"type":49,"tag":590,"props":1551,"children":1552},{"style":597},[1553],{"type":55,"value":1554}," TASK_INFO.json ",{"type":49,"tag":590,"props":1556,"children":1557},{"style":603},[1558],{"type":55,"value":1559},"];",{"type":49,"tag":590,"props":1561,"children":1562},{"style":618},[1563],{"type":55,"value":1532},{"type":49,"tag":590,"props":1565,"children":1566},{"class":592,"line":1019},[1567,1572,1576,1580,1585,1589,1594,1598,1603,1608],{"type":49,"tag":590,"props":1568,"children":1569},{"style":597},[1570],{"type":55,"value":1571},"        DREAM_NAMESPACE",{"type":49,"tag":590,"props":1573,"children":1574},{"style":603},[1575],{"type":55,"value":1435},{"type":49,"tag":590,"props":1577,"children":1578},{"style":1037},[1579],{"type":55,"value":377},{"type":49,"tag":590,"props":1581,"children":1582},{"style":634},[1583],{"type":55,"value":1584}," -c",{"type":49,"tag":590,"props":1586,"children":1587},{"style":603},[1588],{"type":55,"value":670},{"type":49,"tag":590,"props":1590,"children":1591},{"style":634},[1592],{"type":55,"value":1593},"import json; print(json.load(open('TASK_INFO.json')).get('dream_namespace',''))",{"type":49,"tag":590,"props":1595,"children":1596},{"style":603},[1597],{"type":55,"value":680},{"type":49,"tag":590,"props":1599,"children":1600},{"style":603},[1601],{"type":55,"value":1602}," 2>",{"type":49,"tag":590,"props":1604,"children":1605},{"style":634},[1606],{"type":55,"value":1607},"\u002Fdev\u002Fnull",{"type":49,"tag":590,"props":1609,"children":1610},{"style":603},[1611],{"type":55,"value":1455},{"type":49,"tag":590,"props":1613,"children":1614},{"class":592,"line":1079},[1615,1621],{"type":49,"tag":590,"props":1616,"children":1618},{"style":1617},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[1619],{"type":55,"value":1620},"        export",{"type":49,"tag":590,"props":1622,"children":1623},{"style":597},[1624],{"type":55,"value":1625}," DREAM_NAMESPACE\n",{"type":49,"tag":590,"props":1627,"children":1628},{"class":592,"line":1102},[1629,1634,1638,1642,1647,1651],{"type":49,"tag":590,"props":1630,"children":1631},{"style":618},[1632],{"type":55,"value":1633},"    elif",{"type":49,"tag":590,"props":1635,"children":1636},{"style":603},[1637],{"type":55,"value":1503},{"type":49,"tag":590,"props":1639,"children":1640},{"style":603},[1641],{"type":55,"value":1549},{"type":49,"tag":590,"props":1643,"children":1644},{"style":597},[1645],{"type":55,"value":1646}," .env ",{"type":49,"tag":590,"props":1648,"children":1649},{"style":603},[1650],{"type":55,"value":1559},{"type":49,"tag":590,"props":1652,"children":1653},{"style":618},[1654],{"type":55,"value":1532},{"type":49,"tag":590,"props":1656,"children":1657},{"class":592,"line":1111},[1658,1662,1666,1671,1676,1681,1686,1691,1696,1701,1706,1710,1715,1719,1723,1727,1731,1736],{"type":49,"tag":590,"props":1659,"children":1660},{"style":597},[1661],{"type":55,"value":1571},{"type":49,"tag":590,"props":1663,"children":1664},{"style":603},[1665],{"type":55,"value":1435},{"type":49,"tag":590,"props":1667,"children":1668},{"style":1037},[1669],{"type":55,"value":1670},"grep",{"type":49,"tag":590,"props":1672,"children":1673},{"style":603},[1674],{"type":55,"value":1675}," '",{"type":49,"tag":590,"props":1677,"children":1678},{"style":634},[1679],{"type":55,"value":1680},"^DREAM_NAMESPACE=",{"type":49,"tag":590,"props":1682,"children":1683},{"style":603},[1684],{"type":55,"value":1685},"'",{"type":49,"tag":590,"props":1687,"children":1688},{"style":634},[1689],{"type":55,"value":1690}," .env",{"type":49,"tag":590,"props":1692,"children":1693},{"style":603},[1694],{"type":55,"value":1695}," |",{"type":49,"tag":590,"props":1697,"children":1698},{"style":1037},[1699],{"type":55,"value":1700}," head",{"type":49,"tag":590,"props":1702,"children":1703},{"style":634},[1704],{"type":55,"value":1705}," -1",{"type":49,"tag":590,"props":1707,"children":1708},{"style":603},[1709],{"type":55,"value":1695},{"type":49,"tag":590,"props":1711,"children":1712},{"style":1037},[1713],{"type":55,"value":1714}," cut",{"type":49,"tag":590,"props":1716,"children":1717},{"style":634},[1718],{"type":55,"value":665},{"type":49,"tag":590,"props":1720,"children":1721},{"style":603},[1722],{"type":55,"value":1685},{"type":49,"tag":590,"props":1724,"children":1725},{"style":634},[1726],{"type":55,"value":606},{"type":49,"tag":590,"props":1728,"children":1729},{"style":603},[1730],{"type":55,"value":1685},{"type":49,"tag":590,"props":1732,"children":1733},{"style":634},[1734],{"type":55,"value":1735}," -f2-",{"type":49,"tag":590,"props":1737,"children":1738},{"style":603},[1739],{"type":55,"value":1455},{"type":49,"tag":590,"props":1741,"children":1742},{"class":592,"line":1120},[1743,1747],{"type":49,"tag":590,"props":1744,"children":1745},{"style":1617},[1746],{"type":55,"value":1620},{"type":49,"tag":590,"props":1748,"children":1749},{"style":597},[1750],{"type":55,"value":1625},{"type":49,"tag":590,"props":1752,"children":1753},{"class":592,"line":1129},[1754],{"type":49,"tag":590,"props":1755,"children":1756},{"style":618},[1757],{"type":55,"value":1758},"    fi\n",{"type":49,"tag":590,"props":1760,"children":1761},{"class":592,"line":25},[1762],{"type":49,"tag":590,"props":1763,"children":1764},{"style":618},[1765],{"type":55,"value":1766},"fi\n",{"type":49,"tag":590,"props":1768,"children":1769},{"class":592,"line":1147},[1770,1775,1780,1784,1788,1792,1796,1800,1805,1809,1814,1819],{"type":49,"tag":590,"props":1771,"children":1772},{"style":603},[1773],{"type":55,"value":1774},"[",{"type":49,"tag":590,"props":1776,"children":1777},{"style":603},[1778],{"type":55,"value":1779}," -n",{"type":49,"tag":590,"props":1781,"children":1782},{"style":603},[1783],{"type":55,"value":1513},{"type":49,"tag":590,"props":1785,"children":1786},{"style":597},[1787],{"type":55,"value":245},{"type":49,"tag":590,"props":1789,"children":1790},{"style":603},[1791],{"type":55,"value":1522},{"type":49,"tag":590,"props":1793,"children":1794},{"style":603},[1795],{"type":55,"value":685},{"type":49,"tag":590,"props":1797,"children":1798},{"style":603},[1799],{"type":55,"value":690},{"type":49,"tag":590,"props":1801,"children":1802},{"style":1067},[1803],{"type":55,"value":1804}," echo",{"type":49,"tag":590,"props":1806,"children":1807},{"style":603},[1808],{"type":55,"value":670},{"type":49,"tag":590,"props":1810,"children":1811},{"style":634},[1812],{"type":55,"value":1813},"Dream namespace: ",{"type":49,"tag":590,"props":1815,"children":1816},{"style":597},[1817],{"type":55,"value":1818},"$DREAM_NAMESPACE",{"type":49,"tag":590,"props":1820,"children":1821},{"style":603},[1822],{"type":55,"value":1099},{"type":49,"tag":590,"props":1824,"children":1825},{"class":592,"line":1198},[1826],{"type":49,"tag":590,"props":1827,"children":1828},{"emptyLinePlaceholder":1133},[1829],{"type":55,"value":1136},{"type":49,"tag":590,"props":1831,"children":1832},{"class":592,"line":1206},[1833],{"type":49,"tag":590,"props":1834,"children":1835},{"style":971},[1836],{"type":55,"value":1837},"# 1. Detect default branch\n",{"type":49,"tag":590,"props":1839,"children":1840},{"class":592,"line":1215},[1841,1846,1850,1854,1859,1864,1868,1872,1876,1881,1885,1890,1894],{"type":49,"tag":590,"props":1842,"children":1843},{"style":597},[1844],{"type":55,"value":1845},"DEFAULT_BRANCH",{"type":49,"tag":590,"props":1847,"children":1848},{"style":603},[1849],{"type":55,"value":1435},{"type":49,"tag":590,"props":1851,"children":1852},{"style":1037},[1853],{"type":55,"value":1440},{"type":49,"tag":590,"props":1855,"children":1856},{"style":634},[1857],{"type":55,"value":1858}," symbolic-ref",{"type":49,"tag":590,"props":1860,"children":1861},{"style":634},[1862],{"type":55,"value":1863}," refs\u002Fremotes\u002Forigin\u002FHEAD",{"type":49,"tag":590,"props":1865,"children":1866},{"style":603},[1867],{"type":55,"value":1602},{"type":49,"tag":590,"props":1869,"children":1870},{"style":634},[1871],{"type":55,"value":1607},{"type":49,"tag":590,"props":1873,"children":1874},{"style":603},[1875],{"type":55,"value":1695},{"type":49,"tag":590,"props":1877,"children":1878},{"style":1037},[1879],{"type":55,"value":1880}," sed",{"type":49,"tag":590,"props":1882,"children":1883},{"style":603},[1884],{"type":55,"value":1675},{"type":49,"tag":590,"props":1886,"children":1887},{"style":634},[1888],{"type":55,"value":1889},"s|refs\u002Fremotes\u002Forigin\u002F||",{"type":49,"tag":590,"props":1891,"children":1892},{"style":603},[1893],{"type":55,"value":1685},{"type":49,"tag":590,"props":1895,"children":1896},{"style":603},[1897],{"type":55,"value":1455},{"type":49,"tag":590,"props":1899,"children":1900},{"class":592,"line":1253},[1901,1905,1909,1913,1917,1922,1926,1930],{"type":49,"tag":590,"props":1902,"children":1903},{"style":618},[1904],{"type":55,"value":1498},{"type":49,"tag":590,"props":1906,"children":1907},{"style":603},[1908],{"type":55,"value":1503},{"type":49,"tag":590,"props":1910,"children":1911},{"style":603},[1912],{"type":55,"value":1508},{"type":49,"tag":590,"props":1914,"children":1915},{"style":603},[1916],{"type":55,"value":670},{"type":49,"tag":590,"props":1918,"children":1919},{"style":597},[1920],{"type":55,"value":1921},"$DEFAULT_BRANCH",{"type":49,"tag":590,"props":1923,"children":1924},{"style":603},[1925],{"type":55,"value":680},{"type":49,"tag":590,"props":1927,"children":1928},{"style":603},[1929],{"type":55,"value":1527},{"type":49,"tag":590,"props":1931,"children":1932},{"style":618},[1933],{"type":55,"value":1532},{"type":49,"tag":590,"props":1935,"children":1936},{"class":592,"line":1262},[1937,1941,1946,1951,1956,1961,1966,1970,1975],{"type":49,"tag":590,"props":1938,"children":1939},{"style":618},[1940],{"type":55,"value":1540},{"type":49,"tag":590,"props":1942,"children":1943},{"style":1037},[1944],{"type":55,"value":1945}," git",{"type":49,"tag":590,"props":1947,"children":1948},{"style":634},[1949],{"type":55,"value":1950}," show-ref",{"type":49,"tag":590,"props":1952,"children":1953},{"style":634},[1954],{"type":55,"value":1955}," --verify",{"type":49,"tag":590,"props":1957,"children":1958},{"style":634},[1959],{"type":55,"value":1960}," refs\u002Fremotes\u002Forigin\u002Fmain",{"type":49,"tag":590,"props":1962,"children":1963},{"style":603},[1964],{"type":55,"value":1965}," >",{"type":49,"tag":590,"props":1967,"children":1968},{"style":634},[1969],{"type":55,"value":1607},{"type":49,"tag":590,"props":1971,"children":1972},{"style":603},[1973],{"type":55,"value":1974}," 2>&1;",{"type":49,"tag":590,"props":1976,"children":1977},{"style":618},[1978],{"type":55,"value":1532},{"type":49,"tag":590,"props":1980,"children":1981},{"class":592,"line":1271},[1982,1987,1991,1995,2000],{"type":49,"tag":590,"props":1983,"children":1984},{"style":597},[1985],{"type":55,"value":1986},"        DEFAULT_BRANCH",{"type":49,"tag":590,"props":1988,"children":1989},{"style":603},[1990],{"type":55,"value":606},{"type":49,"tag":590,"props":1992,"children":1993},{"style":603},[1994],{"type":55,"value":680},{"type":49,"tag":590,"props":1996,"children":1997},{"style":634},[1998],{"type":55,"value":1999},"main",{"type":49,"tag":590,"props":2001,"children":2002},{"style":603},[2003],{"type":55,"value":1099},{"type":49,"tag":590,"props":2005,"children":2006},{"class":592,"line":1280},[2007,2011,2015,2019,2023,2028,2032,2036,2040],{"type":49,"tag":590,"props":2008,"children":2009},{"style":618},[2010],{"type":55,"value":1633},{"type":49,"tag":590,"props":2012,"children":2013},{"style":1037},[2014],{"type":55,"value":1945},{"type":49,"tag":590,"props":2016,"children":2017},{"style":634},[2018],{"type":55,"value":1950},{"type":49,"tag":590,"props":2020,"children":2021},{"style":634},[2022],{"type":55,"value":1955},{"type":49,"tag":590,"props":2024,"children":2025},{"style":634},[2026],{"type":55,"value":2027}," refs\u002Fremotes\u002Forigin\u002Fmaster",{"type":49,"tag":590,"props":2029,"children":2030},{"style":603},[2031],{"type":55,"value":1965},{"type":49,"tag":590,"props":2033,"children":2034},{"style":634},[2035],{"type":55,"value":1607},{"type":49,"tag":590,"props":2037,"children":2038},{"style":603},[2039],{"type":55,"value":1974},{"type":49,"tag":590,"props":2041,"children":2042},{"style":618},[2043],{"type":55,"value":1532},{"type":49,"tag":590,"props":2045,"children":2046},{"class":592,"line":1289},[2047,2051,2055,2059,2064],{"type":49,"tag":590,"props":2048,"children":2049},{"style":597},[2050],{"type":55,"value":1986},{"type":49,"tag":590,"props":2052,"children":2053},{"style":603},[2054],{"type":55,"value":606},{"type":49,"tag":590,"props":2056,"children":2057},{"style":603},[2058],{"type":55,"value":680},{"type":49,"tag":590,"props":2060,"children":2061},{"style":634},[2062],{"type":55,"value":2063},"master",{"type":49,"tag":590,"props":2065,"children":2066},{"style":603},[2067],{"type":55,"value":1099},{"type":49,"tag":590,"props":2069,"children":2070},{"class":592,"line":1330},[2071],{"type":49,"tag":590,"props":2072,"children":2073},{"style":618},[2074],{"type":55,"value":2075},"    else\n",{"type":49,"tag":590,"props":2077,"children":2078},{"class":592,"line":1338},[2079,2084,2088,2093],{"type":49,"tag":590,"props":2080,"children":2081},{"style":1067},[2082],{"type":55,"value":2083},"        echo",{"type":49,"tag":590,"props":2085,"children":2086},{"style":603},[2087],{"type":55,"value":670},{"type":49,"tag":590,"props":2089,"children":2090},{"style":634},[2091],{"type":55,"value":2092},"ERROR: Cannot detect default branch. Fix: git remote set-head origin \u003Cbranch>",{"type":49,"tag":590,"props":2094,"children":2095},{"style":603},[2096],{"type":55,"value":1099},{"type":49,"tag":590,"props":2098,"children":2099},{"class":592,"line":1347},[2100],{"type":49,"tag":590,"props":2101,"children":2102},{"style":618},[2103],{"type":55,"value":1758},{"type":49,"tag":590,"props":2105,"children":2106},{"class":592,"line":1384},[2107],{"type":49,"tag":590,"props":2108,"children":2109},{"style":618},[2110],{"type":55,"value":1766},{"type":49,"tag":590,"props":2112,"children":2113},{"class":592,"line":1392},[2114,2119,2123,2128,2132],{"type":49,"tag":590,"props":2115,"children":2116},{"style":1067},[2117],{"type":55,"value":2118},"echo",{"type":49,"tag":590,"props":2120,"children":2121},{"style":603},[2122],{"type":55,"value":670},{"type":49,"tag":590,"props":2124,"children":2125},{"style":634},[2126],{"type":55,"value":2127},"Default branch: ",{"type":49,"tag":590,"props":2129,"children":2130},{"style":597},[2131],{"type":55,"value":1921},{"type":49,"tag":590,"props":2133,"children":2134},{"style":603},[2135],{"type":55,"value":1099},{"type":49,"tag":590,"props":2137,"children":2139},{"class":592,"line":2138},28,[2140],{"type":49,"tag":590,"props":2141,"children":2142},{"emptyLinePlaceholder":1133},[2143],{"type":55,"value":1136},{"type":49,"tag":590,"props":2145,"children":2147},{"class":592,"line":2146},29,[2148],{"type":49,"tag":590,"props":2149,"children":2150},{"style":971},[2151],{"type":55,"value":2152},"# 2-5. Validate environment\n",{"type":49,"tag":590,"props":2154,"children":2156},{"class":592,"line":2155},30,[2157,2161,2165,2170,2175,2179,2184],{"type":49,"tag":590,"props":2158,"children":2159},{"style":1067},[2160],{"type":55,"value":2118},{"type":49,"tag":590,"props":2162,"children":2163},{"style":603},[2164],{"type":55,"value":670},{"type":49,"tag":590,"props":2166,"children":2167},{"style":634},[2168],{"type":55,"value":2169},"Current branch: ",{"type":49,"tag":590,"props":2171,"children":2172},{"style":603},[2173],{"type":55,"value":2174},"$(",{"type":49,"tag":590,"props":2176,"children":2177},{"style":1037},[2178],{"type":55,"value":1440},{"type":49,"tag":590,"props":2180,"children":2181},{"style":634},[2182],{"type":55,"value":2183}," branch --show-current",{"type":49,"tag":590,"props":2185,"children":2186},{"style":603},[2187],{"type":55,"value":2188},")\"\n",{"type":49,"tag":590,"props":2190,"children":2192},{"class":592,"line":2191},31,[2193,2197,2201,2206,2210,2214,2219],{"type":49,"tag":590,"props":2194,"children":2195},{"style":1067},[2196],{"type":55,"value":2118},{"type":49,"tag":590,"props":2198,"children":2199},{"style":603},[2200],{"type":55,"value":670},{"type":49,"tag":590,"props":2202,"children":2203},{"style":634},[2204],{"type":55,"value":2205},"Remote: ",{"type":49,"tag":590,"props":2207,"children":2208},{"style":603},[2209],{"type":55,"value":2174},{"type":49,"tag":590,"props":2211,"children":2212},{"style":1037},[2213],{"type":55,"value":1440},{"type":49,"tag":590,"props":2215,"children":2216},{"style":634},[2217],{"type":55,"value":2218}," remote get-url origin",{"type":49,"tag":590,"props":2220,"children":2221},{"style":603},[2222],{"type":55,"value":2188},{"type":49,"tag":590,"props":2224,"children":2226},{"class":592,"line":2225},32,[2227,2231,2236,2241,2246,2250,2254,2259,2263,2267,2271,2276],{"type":49,"tag":590,"props":2228,"children":2229},{"style":1037},[2230],{"type":55,"value":1440},{"type":49,"tag":590,"props":2232,"children":2233},{"style":634},[2234],{"type":55,"value":2235}," ls-remote",{"type":49,"tag":590,"props":2237,"children":2238},{"style":634},[2239],{"type":55,"value":2240}," origin",{"type":49,"tag":590,"props":2242,"children":2243},{"style":634},[2244],{"type":55,"value":2245}," HEAD",{"type":49,"tag":590,"props":2247,"children":2248},{"style":603},[2249],{"type":55,"value":1965},{"type":49,"tag":590,"props":2251,"children":2252},{"style":634},[2253],{"type":55,"value":1607},{"type":49,"tag":590,"props":2255,"children":2256},{"style":603},[2257],{"type":55,"value":2258}," 2>&1",{"type":49,"tag":590,"props":2260,"children":2261},{"style":603},[2262],{"type":55,"value":1064},{"type":49,"tag":590,"props":2264,"children":2265},{"style":1067},[2266],{"type":55,"value":1804},{"type":49,"tag":590,"props":2268,"children":2269},{"style":603},[2270],{"type":55,"value":670},{"type":49,"tag":590,"props":2272,"children":2273},{"style":634},[2274],{"type":55,"value":2275},"ERROR: Cannot reach remote.",{"type":49,"tag":590,"props":2277,"children":2278},{"style":603},[2279],{"type":55,"value":1099},{"type":49,"tag":590,"props":2281,"children":2283},{"class":592,"line":2282},33,[2284,2288,2292,2297,2302,2306,2310,2314,2319],{"type":49,"tag":590,"props":2285,"children":2286},{"style":603},[2287],{"type":55,"value":1774},{"type":49,"tag":590,"props":2289,"children":2290},{"style":603},[2291],{"type":55,"value":665},{"type":49,"tag":590,"props":2293,"children":2294},{"style":597},[2295],{"type":55,"value":2296}," .shadow ",{"type":49,"tag":590,"props":2298,"children":2299},{"style":603},[2300],{"type":55,"value":2301},"]",{"type":49,"tag":590,"props":2303,"children":2304},{"style":603},[2305],{"type":55,"value":1064},{"type":49,"tag":590,"props":2307,"children":2308},{"style":1067},[2309],{"type":55,"value":1804},{"type":49,"tag":590,"props":2311,"children":2312},{"style":603},[2313],{"type":55,"value":670},{"type":49,"tag":590,"props":2315,"children":2316},{"style":634},[2317],{"type":55,"value":2318},"ERROR: .shadow\u002F not found. Run \u002Fshadow-frog-init first.",{"type":49,"tag":590,"props":2320,"children":2321},{"style":603},[2322],{"type":55,"value":1099},{"type":49,"tag":590,"props":2324,"children":2326},{"class":592,"line":2325},34,[2327,2332,2337],{"type":49,"tag":590,"props":2328,"children":2329},{"style":1037},[2330],{"type":55,"value":2331},"mkdir",{"type":49,"tag":590,"props":2333,"children":2334},{"style":634},[2335],{"type":55,"value":2336}," -p",{"type":49,"tag":590,"props":2338,"children":2339},{"style":634},[2340],{"type":55,"value":2341}," .shadow\u002F_dreams\n",{"type":49,"tag":590,"props":2343,"children":2345},{"class":592,"line":2344},35,[2346,2350,2355,2360,2364,2368,2372,2377,2381,2385,2389,2393,2398],{"type":49,"tag":590,"props":2347,"children":2348},{"style":1037},[2349],{"type":55,"value":1440},{"type":49,"tag":590,"props":2351,"children":2352},{"style":634},[2353],{"type":55,"value":2354}," diff",{"type":49,"tag":590,"props":2356,"children":2357},{"style":634},[2358],{"type":55,"value":2359}," --quiet",{"type":49,"tag":590,"props":2361,"children":2362},{"style":603},[2363],{"type":55,"value":690},{"type":49,"tag":590,"props":2365,"children":2366},{"style":1037},[2367],{"type":55,"value":1945},{"type":49,"tag":590,"props":2369,"children":2370},{"style":634},[2371],{"type":55,"value":2354},{"type":49,"tag":590,"props":2373,"children":2374},{"style":634},[2375],{"type":55,"value":2376}," --cached",{"type":49,"tag":590,"props":2378,"children":2379},{"style":634},[2380],{"type":55,"value":2359},{"type":49,"tag":590,"props":2382,"children":2383},{"style":603},[2384],{"type":55,"value":1064},{"type":49,"tag":590,"props":2386,"children":2387},{"style":1067},[2388],{"type":55,"value":1804},{"type":49,"tag":590,"props":2390,"children":2391},{"style":603},[2392],{"type":55,"value":670},{"type":49,"tag":590,"props":2394,"children":2395},{"style":634},[2396],{"type":55,"value":2397},"ERROR: Uncommitted changes.",{"type":49,"tag":590,"props":2399,"children":2400},{"style":603},[2401],{"type":55,"value":1099},{"type":49,"tag":590,"props":2403,"children":2405},{"class":592,"line":2404},36,[2406],{"type":49,"tag":590,"props":2407,"children":2408},{"emptyLinePlaceholder":1133},[2409],{"type":55,"value":1136},{"type":49,"tag":590,"props":2411,"children":2413},{"class":592,"line":2412},37,[2414],{"type":49,"tag":590,"props":2415,"children":2416},{"style":971},[2417],{"type":55,"value":2418},"# 6. Fetch all remote branches (ONE fetch for all agents)\n",{"type":49,"tag":590,"props":2420,"children":2422},{"class":592,"line":2421},38,[2423,2427,2432,2436],{"type":49,"tag":590,"props":2424,"children":2425},{"style":1037},[2426],{"type":55,"value":1440},{"type":49,"tag":590,"props":2428,"children":2429},{"style":634},[2430],{"type":55,"value":2431}," fetch",{"type":49,"tag":590,"props":2433,"children":2434},{"style":634},[2435],{"type":55,"value":2240},{"type":49,"tag":590,"props":2437,"children":2438},{"style":634},[2439],{"type":55,"value":2440}," --prune\n",{"type":49,"tag":590,"props":2442,"children":2444},{"class":592,"line":2443},39,[2445],{"type":49,"tag":590,"props":2446,"children":2447},{"emptyLinePlaceholder":1133},[2448],{"type":55,"value":1136},{"type":49,"tag":590,"props":2450,"children":2452},{"class":592,"line":2451},40,[2453],{"type":49,"tag":590,"props":2454,"children":2455},{"style":971},[2456],{"type":55,"value":2457},"# 7. List dream branches (namespace-filtered)\n",{"type":49,"tag":590,"props":2459,"children":2461},{"class":592,"line":2460},41,[2462,2466,2470,2475,2479],{"type":49,"tag":590,"props":2463,"children":2464},{"style":597},[2465],{"type":55,"value":237},{"type":49,"tag":590,"props":2467,"children":2468},{"style":603},[2469],{"type":55,"value":606},{"type":49,"tag":590,"props":2471,"children":2472},{"style":603},[2473],{"type":55,"value":2474},"\"${",{"type":49,"tag":590,"props":2476,"children":2477},{"style":597},[2478],{"type":55,"value":245},{"type":49,"tag":590,"props":2480,"children":2481},{"style":603},[2482],{"type":55,"value":2483},":-}\"\n",{"type":49,"tag":590,"props":2485,"children":2487},{"class":592,"line":2486},42,[2488,2493,2497,2501,2505,2510,2515,2520,2525,2530,2535,2539],{"type":49,"tag":590,"props":2489,"children":2490},{"style":597},[2491],{"type":55,"value":2492},"BRANCH_PATTERN",{"type":49,"tag":590,"props":2494,"children":2495},{"style":603},[2496],{"type":55,"value":606},{"type":49,"tag":590,"props":2498,"children":2499},{"style":603},[2500],{"type":55,"value":2474},{"type":49,"tag":590,"props":2502,"children":2503},{"style":597},[2504],{"type":55,"value":237},{"type":49,"tag":590,"props":2506,"children":2507},{"style":603},[2508],{"type":55,"value":2509},":",{"type":49,"tag":590,"props":2511,"children":2512},{"style":634},[2513],{"type":55,"value":2514},"+",{"type":49,"tag":590,"props":2516,"children":2517},{"style":597},[2518],{"type":55,"value":2519},"origin",{"type":49,"tag":590,"props":2521,"children":2522},{"style":603},[2523],{"type":55,"value":2524},"\u002F",{"type":49,"tag":590,"props":2526,"children":2527},{"style":597},[2528],{"type":55,"value":2529},"dream",{"type":49,"tag":590,"props":2531,"children":2532},{"style":603},[2533],{"type":55,"value":2534},"\u002F${",{"type":49,"tag":590,"props":2536,"children":2537},{"style":597},[2538],{"type":55,"value":237},{"type":49,"tag":590,"props":2540,"children":2541},{"style":603},[2542],{"type":55,"value":2543},"}\u002F}\"\n",{"type":49,"tag":590,"props":2545,"children":2547},{"class":592,"line":2546},43,[2548,2552,2556,2560,2564,2569,2573,2577,2581],{"type":49,"tag":590,"props":2549,"children":2550},{"style":597},[2551],{"type":55,"value":2492},{"type":49,"tag":590,"props":2553,"children":2554},{"style":603},[2555],{"type":55,"value":606},{"type":49,"tag":590,"props":2557,"children":2558},{"style":603},[2559],{"type":55,"value":2474},{"type":49,"tag":590,"props":2561,"children":2562},{"style":597},[2563],{"type":55,"value":2492},{"type":49,"tag":590,"props":2565,"children":2566},{"style":603},[2567],{"type":55,"value":2568},":-",{"type":49,"tag":590,"props":2570,"children":2571},{"style":597},[2572],{"type":55,"value":2519},{"type":49,"tag":590,"props":2574,"children":2575},{"style":603},[2576],{"type":55,"value":2524},{"type":49,"tag":590,"props":2578,"children":2579},{"style":597},[2580],{"type":55,"value":2529},{"type":49,"tag":590,"props":2582,"children":2583},{"style":603},[2584],{"type":55,"value":2585},"\u002F}\"\n",{"type":49,"tag":590,"props":2587,"children":2589},{"class":592,"line":2588},44,[2590,2594,2598,2603],{"type":49,"tag":590,"props":2591,"children":2592},{"style":1067},[2593],{"type":55,"value":2118},{"type":49,"tag":590,"props":2595,"children":2596},{"style":603},[2597],{"type":55,"value":670},{"type":49,"tag":590,"props":2599,"children":2600},{"style":634},[2601],{"type":55,"value":2602},"Available dream branches:",{"type":49,"tag":590,"props":2604,"children":2605},{"style":603},[2606],{"type":55,"value":1099},{"type":49,"tag":590,"props":2608,"children":2610},{"class":592,"line":2609},45,[2611,2615,2620,2625,2629,2634,2638,2643,2647,2651,2655,2659,2664,2668,2672,2676,2680,2685],{"type":49,"tag":590,"props":2612,"children":2613},{"style":1037},[2614],{"type":55,"value":1440},{"type":49,"tag":590,"props":2616,"children":2617},{"style":634},[2618],{"type":55,"value":2619}," branch",{"type":49,"tag":590,"props":2621,"children":2622},{"style":634},[2623],{"type":55,"value":2624}," -r",{"type":49,"tag":590,"props":2626,"children":2627},{"style":603},[2628],{"type":55,"value":1695},{"type":49,"tag":590,"props":2630,"children":2631},{"style":1037},[2632],{"type":55,"value":2633}," grep",{"type":49,"tag":590,"props":2635,"children":2636},{"style":603},[2637],{"type":55,"value":670},{"type":49,"tag":590,"props":2639,"children":2640},{"style":597},[2641],{"type":55,"value":2642},"$BRANCH_PATTERN",{"type":49,"tag":590,"props":2644,"children":2645},{"style":603},[2646],{"type":55,"value":680},{"type":49,"tag":590,"props":2648,"children":2649},{"style":603},[2650],{"type":55,"value":1695},{"type":49,"tag":590,"props":2652,"children":2653},{"style":1037},[2654],{"type":55,"value":1880},{"type":49,"tag":590,"props":2656,"children":2657},{"style":603},[2658],{"type":55,"value":1675},{"type":49,"tag":590,"props":2660,"children":2661},{"style":634},[2662],{"type":55,"value":2663},"s|origin\u002F||",{"type":49,"tag":590,"props":2665,"children":2666},{"style":603},[2667],{"type":55,"value":1685},{"type":49,"tag":590,"props":2669,"children":2670},{"style":603},[2671],{"type":55,"value":1064},{"type":49,"tag":590,"props":2673,"children":2674},{"style":1067},[2675],{"type":55,"value":1804},{"type":49,"tag":590,"props":2677,"children":2678},{"style":603},[2679],{"type":55,"value":670},{"type":49,"tag":590,"props":2681,"children":2682},{"style":634},[2683],{"type":55,"value":2684},"  (none)",{"type":49,"tag":590,"props":2686,"children":2687},{"style":603},[2688],{"type":55,"value":1099},{"type":49,"tag":590,"props":2690,"children":2692},{"class":592,"line":2691},46,[2693],{"type":49,"tag":590,"props":2694,"children":2695},{"emptyLinePlaceholder":1133},[2696],{"type":55,"value":1136},{"type":49,"tag":590,"props":2698,"children":2700},{"class":592,"line":2699},47,[2701],{"type":49,"tag":590,"props":2702,"children":2703},{"style":971},[2704],{"type":55,"value":2705},"# 8. Detect RUN_PREFIX from lockfiles\n",{"type":49,"tag":590,"props":2707,"children":2709},{"class":592,"line":2708},48,[2710,2714,2718,2722,2727,2731],{"type":49,"tag":590,"props":2711,"children":2712},{"style":618},[2713],{"type":55,"value":1498},{"type":49,"tag":590,"props":2715,"children":2716},{"style":603},[2717],{"type":55,"value":1503},{"type":49,"tag":590,"props":2719,"children":2720},{"style":603},[2721],{"type":55,"value":1549},{"type":49,"tag":590,"props":2723,"children":2724},{"style":597},[2725],{"type":55,"value":2726}," uv.lock ",{"type":49,"tag":590,"props":2728,"children":2729},{"style":603},[2730],{"type":55,"value":1559},{"type":49,"tag":590,"props":2732,"children":2733},{"style":618},[2734],{"type":55,"value":1532},{"type":49,"tag":590,"props":2736,"children":2738},{"class":592,"line":2737},49,[2739,2744,2749,2754,2758,2762,2767],{"type":49,"tag":590,"props":2740,"children":2741},{"style":1037},[2742],{"type":55,"value":2743},"    uv",{"type":49,"tag":590,"props":2745,"children":2746},{"style":634},[2747],{"type":55,"value":2748}," sync",{"type":49,"tag":590,"props":2750,"children":2751},{"style":634},[2752],{"type":55,"value":2753}," --all-groups",{"type":49,"tag":590,"props":2755,"children":2756},{"style":603},[2757],{"type":55,"value":2258},{"type":49,"tag":590,"props":2759,"children":2760},{"style":603},[2761],{"type":55,"value":1695},{"type":49,"tag":590,"props":2763,"children":2764},{"style":1037},[2765],{"type":55,"value":2766}," tail",{"type":49,"tag":590,"props":2768,"children":2769},{"style":634},[2770],{"type":55,"value":2771}," -3\n",{"type":49,"tag":590,"props":2773,"children":2775},{"class":592,"line":2774},50,[2776,2781,2785,2789,2794],{"type":49,"tag":590,"props":2777,"children":2778},{"style":597},[2779],{"type":55,"value":2780},"    RUN_PREFIX",{"type":49,"tag":590,"props":2782,"children":2783},{"style":603},[2784],{"type":55,"value":606},{"type":49,"tag":590,"props":2786,"children":2787},{"style":603},[2788],{"type":55,"value":680},{"type":49,"tag":590,"props":2790,"children":2791},{"style":634},[2792],{"type":55,"value":2793},"uv run",{"type":49,"tag":590,"props":2795,"children":2796},{"style":603},[2797],{"type":55,"value":1099},{"type":49,"tag":590,"props":2799,"children":2801},{"class":592,"line":2800},51,[2802,2807,2811,2815,2820,2824],{"type":49,"tag":590,"props":2803,"children":2804},{"style":618},[2805],{"type":55,"value":2806},"elif",{"type":49,"tag":590,"props":2808,"children":2809},{"style":603},[2810],{"type":55,"value":1503},{"type":49,"tag":590,"props":2812,"children":2813},{"style":603},[2814],{"type":55,"value":1549},{"type":49,"tag":590,"props":2816,"children":2817},{"style":597},[2818],{"type":55,"value":2819}," package-lock.json ",{"type":49,"tag":590,"props":2821,"children":2822},{"style":603},[2823],{"type":55,"value":1559},{"type":49,"tag":590,"props":2825,"children":2826},{"style":618},[2827],{"type":55,"value":1532},{"type":49,"tag":590,"props":2829,"children":2831},{"class":592,"line":2830},52,[2832,2837,2842,2846,2850,2854,2858],{"type":49,"tag":590,"props":2833,"children":2834},{"style":1037},[2835],{"type":55,"value":2836},"    npm",{"type":49,"tag":590,"props":2838,"children":2839},{"style":634},[2840],{"type":55,"value":2841}," install",{"type":49,"tag":590,"props":2843,"children":2844},{"style":634},[2845],{"type":55,"value":2359},{"type":49,"tag":590,"props":2847,"children":2848},{"style":603},[2849],{"type":55,"value":2258},{"type":49,"tag":590,"props":2851,"children":2852},{"style":603},[2853],{"type":55,"value":1695},{"type":49,"tag":590,"props":2855,"children":2856},{"style":1037},[2857],{"type":55,"value":2766},{"type":49,"tag":590,"props":2859,"children":2860},{"style":634},[2861],{"type":55,"value":2771},{"type":49,"tag":590,"props":2863,"children":2865},{"class":592,"line":2864},53,[2866,2870,2874,2878,2883],{"type":49,"tag":590,"props":2867,"children":2868},{"style":597},[2869],{"type":55,"value":2780},{"type":49,"tag":590,"props":2871,"children":2872},{"style":603},[2873],{"type":55,"value":606},{"type":49,"tag":590,"props":2875,"children":2876},{"style":603},[2877],{"type":55,"value":680},{"type":49,"tag":590,"props":2879,"children":2880},{"style":634},[2881],{"type":55,"value":2882},"npx",{"type":49,"tag":590,"props":2884,"children":2885},{"style":603},[2886],{"type":55,"value":1099},{"type":49,"tag":590,"props":2888,"children":2890},{"class":592,"line":2889},54,[2891,2895,2899,2903,2908,2912],{"type":49,"tag":590,"props":2892,"children":2893},{"style":618},[2894],{"type":55,"value":2806},{"type":49,"tag":590,"props":2896,"children":2897},{"style":603},[2898],{"type":55,"value":1503},{"type":49,"tag":590,"props":2900,"children":2901},{"style":603},[2902],{"type":55,"value":1549},{"type":49,"tag":590,"props":2904,"children":2905},{"style":597},[2906],{"type":55,"value":2907}," yarn.lock ",{"type":49,"tag":590,"props":2909,"children":2910},{"style":603},[2911],{"type":55,"value":1559},{"type":49,"tag":590,"props":2913,"children":2914},{"style":618},[2915],{"type":55,"value":1532},{"type":49,"tag":590,"props":2917,"children":2919},{"class":592,"line":2918},55,[2920,2925,2929,2934,2938,2942,2946],{"type":49,"tag":590,"props":2921,"children":2922},{"style":1037},[2923],{"type":55,"value":2924},"    yarn",{"type":49,"tag":590,"props":2926,"children":2927},{"style":634},[2928],{"type":55,"value":2841},{"type":49,"tag":590,"props":2930,"children":2931},{"style":634},[2932],{"type":55,"value":2933}," --silent",{"type":49,"tag":590,"props":2935,"children":2936},{"style":603},[2937],{"type":55,"value":2258},{"type":49,"tag":590,"props":2939,"children":2940},{"style":603},[2941],{"type":55,"value":1695},{"type":49,"tag":590,"props":2943,"children":2944},{"style":1037},[2945],{"type":55,"value":2766},{"type":49,"tag":590,"props":2947,"children":2948},{"style":634},[2949],{"type":55,"value":2771},{"type":49,"tag":590,"props":2951,"children":2953},{"class":592,"line":2952},56,[2954,2958,2962,2966,2970],{"type":49,"tag":590,"props":2955,"children":2956},{"style":597},[2957],{"type":55,"value":2780},{"type":49,"tag":590,"props":2959,"children":2960},{"style":603},[2961],{"type":55,"value":606},{"type":49,"tag":590,"props":2963,"children":2964},{"style":603},[2965],{"type":55,"value":680},{"type":49,"tag":590,"props":2967,"children":2968},{"style":634},[2969],{"type":55,"value":2882},{"type":49,"tag":590,"props":2971,"children":2972},{"style":603},[2973],{"type":55,"value":1099},{"type":49,"tag":590,"props":2975,"children":2977},{"class":592,"line":2976},57,[2978],{"type":49,"tag":590,"props":2979,"children":2980},{"style":618},[2981],{"type":55,"value":2982},"else\n",{"type":49,"tag":590,"props":2984,"children":2986},{"class":592,"line":2985},58,[2987,2991,2995],{"type":49,"tag":590,"props":2988,"children":2989},{"style":597},[2990],{"type":55,"value":2780},{"type":49,"tag":590,"props":2992,"children":2993},{"style":603},[2994],{"type":55,"value":606},{"type":49,"tag":590,"props":2996,"children":2997},{"style":603},[2998],{"type":55,"value":611},{"type":49,"tag":590,"props":3000,"children":3002},{"class":592,"line":3001},59,[3003],{"type":49,"tag":590,"props":3004,"children":3005},{"style":618},[3006],{"type":55,"value":1766},{"type":49,"tag":590,"props":3008,"children":3010},{"class":592,"line":3009},60,[3011,3015,3019,3024,3029,3033],{"type":49,"tag":590,"props":3012,"children":3013},{"style":1067},[3014],{"type":55,"value":2118},{"type":49,"tag":590,"props":3016,"children":3017},{"style":603},[3018],{"type":55,"value":670},{"type":49,"tag":590,"props":3020,"children":3021},{"style":634},[3022],{"type":55,"value":3023},"RUN_PREFIX='",{"type":49,"tag":590,"props":3025,"children":3026},{"style":597},[3027],{"type":55,"value":3028},"$RUN_PREFIX",{"type":49,"tag":590,"props":3030,"children":3031},{"style":634},[3032],{"type":55,"value":1685},{"type":49,"tag":590,"props":3034,"children":3035},{"style":603},[3036],{"type":55,"value":1099},{"type":49,"tag":590,"props":3038,"children":3040},{"class":592,"line":3039},61,[3041],{"type":49,"tag":590,"props":3042,"children":3043},{"emptyLinePlaceholder":1133},[3044],{"type":55,"value":1136},{"type":49,"tag":590,"props":3046,"children":3048},{"class":592,"line":3047},62,[3049],{"type":49,"tag":590,"props":3050,"children":3051},{"style":971},[3052],{"type":55,"value":3053},"# 9. List compoundable experiments\n",{"type":49,"tag":590,"props":3055,"children":3057},{"class":592,"line":3056},63,[3058,3062],{"type":49,"tag":590,"props":3059,"children":3060},{"style":1067},[3061],{"type":55,"value":2118},{"type":49,"tag":590,"props":3063,"children":3064},{"style":603},[3065],{"type":55,"value":3066}," \"\"\n",{"type":49,"tag":590,"props":3068,"children":3070},{"class":592,"line":3069},64,[3071,3075,3079,3084],{"type":49,"tag":590,"props":3072,"children":3073},{"style":1067},[3074],{"type":55,"value":2118},{"type":49,"tag":590,"props":3076,"children":3077},{"style":603},[3078],{"type":55,"value":670},{"type":49,"tag":590,"props":3080,"children":3081},{"style":634},[3082],{"type":55,"value":3083},"=== COMPOUNDABLE EXPERIMENTS ===",{"type":49,"tag":590,"props":3085,"children":3086},{"style":603},[3087],{"type":55,"value":1099},{"type":49,"tag":590,"props":3089,"children":3091},{"class":592,"line":3090},65,[3092,3096,3100,3104,3109,3113],{"type":49,"tag":590,"props":3093,"children":3094},{"style":618},[3095],{"type":55,"value":1498},{"type":49,"tag":590,"props":3097,"children":3098},{"style":603},[3099],{"type":55,"value":1503},{"type":49,"tag":590,"props":3101,"children":3102},{"style":603},[3103],{"type":55,"value":1549},{"type":49,"tag":590,"props":3105,"children":3106},{"style":597},[3107],{"type":55,"value":3108}," .shadow\u002F_dreams\u002F_index.md ",{"type":49,"tag":590,"props":3110,"children":3111},{"style":603},[3112],{"type":55,"value":1559},{"type":49,"tag":590,"props":3114,"children":3115},{"style":618},[3116],{"type":55,"value":1532},{"type":49,"tag":590,"props":3118,"children":3120},{"class":592,"line":3119},66,[3121,3126,3131,3135,3140,3144,3148],{"type":49,"tag":590,"props":3122,"children":3123},{"style":1037},[3124],{"type":55,"value":3125},"    awk",{"type":49,"tag":590,"props":3127,"children":3128},{"style":634},[3129],{"type":55,"value":3130}," -F",{"type":49,"tag":590,"props":3132,"children":3133},{"style":603},[3134],{"type":55,"value":1685},{"type":49,"tag":590,"props":3136,"children":3137},{"style":634},[3138],{"type":55,"value":3139},"|",{"type":49,"tag":590,"props":3141,"children":3142},{"style":603},[3143],{"type":55,"value":1685},{"type":49,"tag":590,"props":3145,"children":3146},{"style":603},[3147],{"type":55,"value":1675},{"type":49,"tag":590,"props":3149,"children":3150},{"style":634},[3151],{"type":55,"value":3152},"NR>2 && \u002Fuseful\u002F {\n",{"type":49,"tag":590,"props":3154,"children":3156},{"class":592,"line":3155},67,[3157],{"type":49,"tag":590,"props":3158,"children":3159},{"style":634},[3160],{"type":55,"value":3161},"        gsub(\u002F \u002F,\"\",$2); gsub(\u002F \u002F,\"\",$4); gsub(\u002F \u002F,\"\",$6);\n",{"type":49,"tag":590,"props":3163,"children":3165},{"class":592,"line":3164},68,[3166],{"type":49,"tag":590,"props":3167,"children":3168},{"style":634},[3169],{"type":55,"value":3170},"        gsub(\u002F^ +| +$\u002F,\"\",$5);\n",{"type":49,"tag":590,"props":3172,"children":3174},{"class":592,"line":3173},69,[3175],{"type":49,"tag":590,"props":3176,"children":3177},{"style":634},[3178],{"type":55,"value":3179},"        if ($2 != \"\" && $6 != \"\") print $6 \" | \" $3 \" | \" $5\n",{"type":49,"tag":590,"props":3181,"children":3183},{"class":592,"line":3182},70,[3184,3189,3193],{"type":49,"tag":590,"props":3185,"children":3186},{"style":634},[3187],{"type":55,"value":3188},"    }",{"type":49,"tag":590,"props":3190,"children":3191},{"style":603},[3192],{"type":55,"value":1685},{"type":49,"tag":590,"props":3194,"children":3195},{"style":634},[3196],{"type":55,"value":3197}," .shadow\u002F_dreams\u002F_index.md\n",{"type":49,"tag":590,"props":3199,"children":3201},{"class":592,"line":3200},71,[3202,3207,3211,3216,3220,3224,3228,3232,3236,3241,3245,3250],{"type":49,"tag":590,"props":3203,"children":3204},{"style":597},[3205],{"type":55,"value":3206},"    COMPOUNDABLE",{"type":49,"tag":590,"props":3208,"children":3209},{"style":603},[3210],{"type":55,"value":1435},{"type":49,"tag":590,"props":3212,"children":3213},{"style":1037},[3214],{"type":55,"value":3215},"awk",{"type":49,"tag":590,"props":3217,"children":3218},{"style":634},[3219],{"type":55,"value":3130},{"type":49,"tag":590,"props":3221,"children":3222},{"style":603},[3223],{"type":55,"value":1685},{"type":49,"tag":590,"props":3225,"children":3226},{"style":634},[3227],{"type":55,"value":3139},{"type":49,"tag":590,"props":3229,"children":3230},{"style":603},[3231],{"type":55,"value":1685},{"type":49,"tag":590,"props":3233,"children":3234},{"style":603},[3235],{"type":55,"value":1675},{"type":49,"tag":590,"props":3237,"children":3238},{"style":634},[3239],{"type":55,"value":3240},"NR>2 && \u002Fuseful\u002F {gsub(\u002F \u002F,\"\",$2); if ($2 != \"\") c++} END {print c+0}",{"type":49,"tag":590,"props":3242,"children":3243},{"style":603},[3244],{"type":55,"value":1685},{"type":49,"tag":590,"props":3246,"children":3247},{"style":634},[3248],{"type":55,"value":3249}," .shadow\u002F_dreams\u002F_index.md",{"type":49,"tag":590,"props":3251,"children":3252},{"style":603},[3253],{"type":55,"value":1455},{"type":49,"tag":590,"props":3255,"children":3257},{"class":592,"line":3256},72,[3258,3263,3267,3272,3277],{"type":49,"tag":590,"props":3259,"children":3260},{"style":1067},[3261],{"type":55,"value":3262},"    echo",{"type":49,"tag":590,"props":3264,"children":3265},{"style":603},[3266],{"type":55,"value":670},{"type":49,"tag":590,"props":3268,"children":3269},{"style":634},[3270],{"type":55,"value":3271},"Total compoundable: ",{"type":49,"tag":590,"props":3273,"children":3274},{"style":597},[3275],{"type":55,"value":3276},"$COMPOUNDABLE",{"type":49,"tag":590,"props":3278,"children":3279},{"style":603},[3280],{"type":55,"value":1099},{"type":49,"tag":590,"props":3282,"children":3284},{"class":592,"line":3283},73,[3285],{"type":49,"tag":590,"props":3286,"children":3287},{"style":618},[3288],{"type":55,"value":2982},{"type":49,"tag":590,"props":3290,"children":3292},{"class":592,"line":3291},74,[3293,3297,3301,3306],{"type":49,"tag":590,"props":3294,"children":3295},{"style":1067},[3296],{"type":55,"value":3262},{"type":49,"tag":590,"props":3298,"children":3299},{"style":603},[3300],{"type":55,"value":670},{"type":49,"tag":590,"props":3302,"children":3303},{"style":634},[3304],{"type":55,"value":3305},"(none — first dream session)",{"type":49,"tag":590,"props":3307,"children":3308},{"style":603},[3309],{"type":55,"value":1099},{"type":49,"tag":590,"props":3311,"children":3313},{"class":592,"line":3312},75,[3314],{"type":49,"tag":590,"props":3315,"children":3316},{"style":618},[3317],{"type":55,"value":1766},{"type":49,"tag":58,"props":3319,"children":3320},{},[3321,3326,3328,3334],{"type":49,"tag":64,"props":3322,"children":3323},{},[3324],{"type":55,"value":3325},"If any check prints ERROR, STOP.",{"type":55,"value":3327}," Do not use ",{"type":49,"tag":105,"props":3329,"children":3331},{"className":3330},[],[3332],{"type":55,"value":3333},"exit 1",{"type":55,"value":3335}," — check output\nand stop at the agent level.",{"type":49,"tag":58,"props":3337,"children":3338},{},[3339,3341,3346,3348,3353,3354,3359],{"type":55,"value":3340},"(",{"type":49,"tag":105,"props":3342,"children":3344},{"className":3343},[],[3345],{"type":55,"value":343},{"type":55,"value":3347}," MUST be threaded into every subagent prompt — see Critical\nInvariants above. Bare ",{"type":49,"tag":105,"props":3349,"children":3351},{"className":3350},[],[3352],{"type":55,"value":377},{"type":55,"value":2524},{"type":49,"tag":105,"props":3355,"children":3357},{"className":3356},[],[3358],{"type":55,"value":385},{"type":55,"value":3360}," without prefix = completion\ncriteria violation.)",{"type":49,"tag":98,"props":3362,"children":3364},{"id":3363},"snapshot-branch-state",[3365],{"type":55,"value":3366},"Snapshot Branch State",{"type":49,"tag":58,"props":3368,"children":3369},{},[3370,3372,3378],{"type":55,"value":3371},"After the single ",{"type":49,"tag":105,"props":3373,"children":3375},{"className":3374},[],[3376],{"type":55,"value":3377},"git fetch",{"type":55,"value":3379},", capture dream branches and pass to all\nsub-agents — they do NOT fetch independently.",{"type":49,"tag":200,"props":3381,"children":3383},{"className":582,"code":3382,"language":584,"meta":208,"style":208},"DREAM_NS=\"${DREAM_NAMESPACE:-}\"\nBRANCH_FILTER=\"${DREAM_NS:+origin\u002Fdream\u002F${DREAM_NS}\u002F}\"\nBRANCH_FILTER=\"${BRANCH_FILTER:-origin\u002Fdream\u002F}\"\ngit branch -r --format='%(refname:short) %(objectname:short)' \\\n  | grep -F \"$BRANCH_FILTER\" \\\n  | sed 's|origin\u002F||' > .shadow\u002F_dreams\u002F.branch-map.txt\ncat .shadow\u002F_dreams\u002F.branch-map.txt\n\n# Initialize session tracking (orchestrator-only; agents do NOT write here)\n: > .shadow\u002F_dreams\u002F.session-branches.txt\n",[3384],{"type":49,"tag":105,"props":3385,"children":3386},{"__ignoreMap":208},[3387,3410,3462,3501,3539,3572,3604,3616,3623,3631],{"type":49,"tag":590,"props":3388,"children":3389},{"class":592,"line":593},[3390,3394,3398,3402,3406],{"type":49,"tag":590,"props":3391,"children":3392},{"style":597},[3393],{"type":55,"value":237},{"type":49,"tag":590,"props":3395,"children":3396},{"style":603},[3397],{"type":55,"value":606},{"type":49,"tag":590,"props":3399,"children":3400},{"style":603},[3401],{"type":55,"value":2474},{"type":49,"tag":590,"props":3403,"children":3404},{"style":597},[3405],{"type":55,"value":245},{"type":49,"tag":590,"props":3407,"children":3408},{"style":603},[3409],{"type":55,"value":2483},{"type":49,"tag":590,"props":3411,"children":3412},{"class":592,"line":614},[3413,3418,3422,3426,3430,3434,3438,3442,3446,3450,3454,3458],{"type":49,"tag":590,"props":3414,"children":3415},{"style":597},[3416],{"type":55,"value":3417},"BRANCH_FILTER",{"type":49,"tag":590,"props":3419,"children":3420},{"style":603},[3421],{"type":55,"value":606},{"type":49,"tag":590,"props":3423,"children":3424},{"style":603},[3425],{"type":55,"value":2474},{"type":49,"tag":590,"props":3427,"children":3428},{"style":597},[3429],{"type":55,"value":237},{"type":49,"tag":590,"props":3431,"children":3432},{"style":603},[3433],{"type":55,"value":2509},{"type":49,"tag":590,"props":3435,"children":3436},{"style":634},[3437],{"type":55,"value":2514},{"type":49,"tag":590,"props":3439,"children":3440},{"style":597},[3441],{"type":55,"value":2519},{"type":49,"tag":590,"props":3443,"children":3444},{"style":603},[3445],{"type":55,"value":2524},{"type":49,"tag":590,"props":3447,"children":3448},{"style":597},[3449],{"type":55,"value":2529},{"type":49,"tag":590,"props":3451,"children":3452},{"style":603},[3453],{"type":55,"value":2534},{"type":49,"tag":590,"props":3455,"children":3456},{"style":597},[3457],{"type":55,"value":237},{"type":49,"tag":590,"props":3459,"children":3460},{"style":603},[3461],{"type":55,"value":2543},{"type":49,"tag":590,"props":3463,"children":3464},{"class":592,"line":29},[3465,3469,3473,3477,3481,3485,3489,3493,3497],{"type":49,"tag":590,"props":3466,"children":3467},{"style":597},[3468],{"type":55,"value":3417},{"type":49,"tag":590,"props":3470,"children":3471},{"style":603},[3472],{"type":55,"value":606},{"type":49,"tag":590,"props":3474,"children":3475},{"style":603},[3476],{"type":55,"value":2474},{"type":49,"tag":590,"props":3478,"children":3479},{"style":597},[3480],{"type":55,"value":3417},{"type":49,"tag":590,"props":3482,"children":3483},{"style":603},[3484],{"type":55,"value":2568},{"type":49,"tag":590,"props":3486,"children":3487},{"style":597},[3488],{"type":55,"value":2519},{"type":49,"tag":590,"props":3490,"children":3491},{"style":603},[3492],{"type":55,"value":2524},{"type":49,"tag":590,"props":3494,"children":3495},{"style":597},[3496],{"type":55,"value":2529},{"type":49,"tag":590,"props":3498,"children":3499},{"style":603},[3500],{"type":55,"value":2585},{"type":49,"tag":590,"props":3502,"children":3503},{"class":592,"line":723},[3504,3508,3512,3516,3521,3525,3530,3534],{"type":49,"tag":590,"props":3505,"children":3506},{"style":1037},[3507],{"type":55,"value":1440},{"type":49,"tag":590,"props":3509,"children":3510},{"style":634},[3511],{"type":55,"value":2619},{"type":49,"tag":590,"props":3513,"children":3514},{"style":634},[3515],{"type":55,"value":2624},{"type":49,"tag":590,"props":3517,"children":3518},{"style":634},[3519],{"type":55,"value":3520}," --format=",{"type":49,"tag":590,"props":3522,"children":3523},{"style":603},[3524],{"type":55,"value":1685},{"type":49,"tag":590,"props":3526,"children":3527},{"style":634},[3528],{"type":55,"value":3529},"%(refname:short) %(objectname:short)",{"type":49,"tag":590,"props":3531,"children":3532},{"style":603},[3533],{"type":55,"value":1685},{"type":49,"tag":590,"props":3535,"children":3536},{"style":597},[3537],{"type":55,"value":3538}," \\\n",{"type":49,"tag":590,"props":3540,"children":3541},{"class":592,"line":1001},[3542,3547,3551,3555,3559,3564,3568],{"type":49,"tag":590,"props":3543,"children":3544},{"style":603},[3545],{"type":55,"value":3546},"  |",{"type":49,"tag":590,"props":3548,"children":3549},{"style":1037},[3550],{"type":55,"value":2633},{"type":49,"tag":590,"props":3552,"children":3553},{"style":634},[3554],{"type":55,"value":3130},{"type":49,"tag":590,"props":3556,"children":3557},{"style":603},[3558],{"type":55,"value":670},{"type":49,"tag":590,"props":3560,"children":3561},{"style":597},[3562],{"type":55,"value":3563},"$BRANCH_FILTER",{"type":49,"tag":590,"props":3565,"children":3566},{"style":603},[3567],{"type":55,"value":680},{"type":49,"tag":590,"props":3569,"children":3570},{"style":597},[3571],{"type":55,"value":3538},{"type":49,"tag":590,"props":3573,"children":3574},{"class":592,"line":1010},[3575,3579,3583,3587,3591,3595,3599],{"type":49,"tag":590,"props":3576,"children":3577},{"style":603},[3578],{"type":55,"value":3546},{"type":49,"tag":590,"props":3580,"children":3581},{"style":1037},[3582],{"type":55,"value":1880},{"type":49,"tag":590,"props":3584,"children":3585},{"style":603},[3586],{"type":55,"value":1675},{"type":49,"tag":590,"props":3588,"children":3589},{"style":634},[3590],{"type":55,"value":2663},{"type":49,"tag":590,"props":3592,"children":3593},{"style":603},[3594],{"type":55,"value":1685},{"type":49,"tag":590,"props":3596,"children":3597},{"style":603},[3598],{"type":55,"value":1965},{"type":49,"tag":590,"props":3600,"children":3601},{"style":634},[3602],{"type":55,"value":3603}," .shadow\u002F_dreams\u002F.branch-map.txt\n",{"type":49,"tag":590,"props":3605,"children":3606},{"class":592,"line":1019},[3607,3612],{"type":49,"tag":590,"props":3608,"children":3609},{"style":1037},[3610],{"type":55,"value":3611},"cat",{"type":49,"tag":590,"props":3613,"children":3614},{"style":634},[3615],{"type":55,"value":3603},{"type":49,"tag":590,"props":3617,"children":3618},{"class":592,"line":1079},[3619],{"type":49,"tag":590,"props":3620,"children":3621},{"emptyLinePlaceholder":1133},[3622],{"type":55,"value":1136},{"type":49,"tag":590,"props":3624,"children":3625},{"class":592,"line":1102},[3626],{"type":49,"tag":590,"props":3627,"children":3628},{"style":971},[3629],{"type":55,"value":3630},"# Initialize session tracking (orchestrator-only; agents do NOT write here)\n",{"type":49,"tag":590,"props":3632,"children":3633},{"class":592,"line":1111},[3634,3638,3642],{"type":49,"tag":590,"props":3635,"children":3636},{"style":1067},[3637],{"type":55,"value":2509},{"type":49,"tag":590,"props":3639,"children":3640},{"style":603},[3641],{"type":55,"value":1965},{"type":49,"tag":590,"props":3643,"children":3644},{"style":634},[3645],{"type":55,"value":3646}," .shadow\u002F_dreams\u002F.session-branches.txt\n",{"type":49,"tag":98,"props":3648,"children":3650},{"id":3649},"assess-codebase",[3651],{"type":55,"value":3652},"Assess Codebase",{"type":49,"tag":58,"props":3654,"children":3655},{},[3656,3658,3664,3665,3671,3673,3678,3680,3686],{"type":55,"value":3657},"Read ",{"type":49,"tag":105,"props":3659,"children":3661},{"className":3660},[],[3662],{"type":55,"value":3663},"_meta\u002Fstate.json",{"type":55,"value":460},{"type":49,"tag":105,"props":3666,"children":3668},{"className":3667},[],[3669],{"type":55,"value":3670},"_index.md",{"type":55,"value":3672},", existing discoveries, and ",{"type":49,"tag":64,"props":3674,"children":3675},{},[3676],{"type":55,"value":3677},"past\ndream reports",{"type":55,"value":3679}," in ",{"type":49,"tag":105,"props":3681,"children":3683},{"className":3682},[],[3684],{"type":55,"value":3685},"_dreams\u002F",{"type":55,"value":84},{"type":49,"tag":98,"props":3688,"children":3690},{"id":3689},"build-exploration-coverage-map",[3691],{"type":55,"value":3692},"Build Exploration Coverage Map",{"type":49,"tag":58,"props":3694,"children":3695},{},[3696],{"type":55,"value":3697},"File-level coverage breadth is the strongest predictor of dream success\n(r²=0.63 vs bugs found), NOT dream count (r²=0.04).",{"type":49,"tag":200,"props":3699,"children":3701},{"className":582,"code":3700,"language":584,"meta":208,"style":208},"# Find and run the coverage script\nCOVERAGE_SCRIPT=\"\"\nfor DIR in .github\u002Fskills\u002Fshadow-frog-dream .claude\u002Fskills\u002Fshadow-frog-dream; do\n    [ -f \"$DIR\u002Fdream-coverage.py\" ] && COVERAGE_SCRIPT=\"$DIR\u002Fdream-coverage.py\" && break\ndone\n[ -n \"$COVERAGE_SCRIPT\" ] && python3 \"$COVERAGE_SCRIPT\" \"$REPO_ROOT\" || echo \"WARNING: dream-coverage.py not found\"\n",[3702],{"type":49,"tag":105,"props":3703,"children":3704},{"__ignoreMap":208},[3705,3713,3729,3760,3828,3835],{"type":49,"tag":590,"props":3706,"children":3707},{"class":592,"line":593},[3708],{"type":49,"tag":590,"props":3709,"children":3710},{"style":971},[3711],{"type":55,"value":3712},"# Find and run the coverage script\n",{"type":49,"tag":590,"props":3714,"children":3715},{"class":592,"line":614},[3716,3721,3725],{"type":49,"tag":590,"props":3717,"children":3718},{"style":597},[3719],{"type":55,"value":3720},"COVERAGE_SCRIPT",{"type":49,"tag":590,"props":3722,"children":3723},{"style":603},[3724],{"type":55,"value":606},{"type":49,"tag":590,"props":3726,"children":3727},{"style":603},[3728],{"type":55,"value":611},{"type":49,"tag":590,"props":3730,"children":3731},{"class":592,"line":29},[3732,3736,3740,3744,3748,3752,3756],{"type":49,"tag":590,"props":3733,"children":3734},{"style":618},[3735],{"type":55,"value":621},{"type":49,"tag":590,"props":3737,"children":3738},{"style":597},[3739],{"type":55,"value":626},{"type":49,"tag":590,"props":3741,"children":3742},{"style":618},[3743],{"type":55,"value":631},{"type":49,"tag":590,"props":3745,"children":3746},{"style":634},[3747],{"type":55,"value":637},{"type":49,"tag":590,"props":3749,"children":3750},{"style":634},[3751],{"type":55,"value":642},{"type":49,"tag":590,"props":3753,"children":3754},{"style":603},[3755],{"type":55,"value":647},{"type":49,"tag":590,"props":3757,"children":3758},{"style":618},[3759],{"type":55,"value":652},{"type":49,"tag":590,"props":3761,"children":3762},{"class":592,"line":723},[3763,3767,3771,3775,3779,3783,3787,3791,3795,3800,3804,3808,3812,3816,3820,3824],{"type":49,"tag":590,"props":3764,"children":3765},{"style":603},[3766],{"type":55,"value":660},{"type":49,"tag":590,"props":3768,"children":3769},{"style":603},[3770],{"type":55,"value":1549},{"type":49,"tag":590,"props":3772,"children":3773},{"style":603},[3774],{"type":55,"value":670},{"type":49,"tag":590,"props":3776,"children":3777},{"style":597},[3778],{"type":55,"value":675},{"type":49,"tag":590,"props":3780,"children":3781},{"style":634},[3782],{"type":55,"value":1365},{"type":49,"tag":590,"props":3784,"children":3785},{"style":603},[3786],{"type":55,"value":680},{"type":49,"tag":590,"props":3788,"children":3789},{"style":603},[3790],{"type":55,"value":685},{"type":49,"tag":590,"props":3792,"children":3793},{"style":603},[3794],{"type":55,"value":690},{"type":49,"tag":590,"props":3796,"children":3797},{"style":597},[3798],{"type":55,"value":3799}," COVERAGE_SCRIPT",{"type":49,"tag":590,"props":3801,"children":3802},{"style":603},[3803],{"type":55,"value":606},{"type":49,"tag":590,"props":3805,"children":3806},{"style":603},[3807],{"type":55,"value":680},{"type":49,"tag":590,"props":3809,"children":3810},{"style":597},[3811],{"type":55,"value":675},{"type":49,"tag":590,"props":3813,"children":3814},{"style":634},[3815],{"type":55,"value":1365},{"type":49,"tag":590,"props":3817,"children":3818},{"style":603},[3819],{"type":55,"value":680},{"type":49,"tag":590,"props":3821,"children":3822},{"style":603},[3823],{"type":55,"value":690},{"type":49,"tag":590,"props":3825,"children":3826},{"style":618},[3827],{"type":55,"value":720},{"type":49,"tag":590,"props":3829,"children":3830},{"class":592,"line":1001},[3831],{"type":49,"tag":590,"props":3832,"children":3833},{"style":618},[3834],{"type":55,"value":729},{"type":49,"tag":590,"props":3836,"children":3837},{"class":592,"line":1010},[3838,3842,3846,3850,3855,3859,3863,3867,3872,3876,3880,3884,3888,3892,3896,3900,3904,3908,3913],{"type":49,"tag":590,"props":3839,"children":3840},{"style":603},[3841],{"type":55,"value":1774},{"type":49,"tag":590,"props":3843,"children":3844},{"style":603},[3845],{"type":55,"value":1779},{"type":49,"tag":590,"props":3847,"children":3848},{"style":603},[3849],{"type":55,"value":670},{"type":49,"tag":590,"props":3851,"children":3852},{"style":597},[3853],{"type":55,"value":3854},"$COVERAGE_SCRIPT",{"type":49,"tag":590,"props":3856,"children":3857},{"style":603},[3858],{"type":55,"value":680},{"type":49,"tag":590,"props":3860,"children":3861},{"style":603},[3862],{"type":55,"value":685},{"type":49,"tag":590,"props":3864,"children":3865},{"style":603},[3866],{"type":55,"value":690},{"type":49,"tag":590,"props":3868,"children":3869},{"style":1037},[3870],{"type":55,"value":3871}," python3",{"type":49,"tag":590,"props":3873,"children":3874},{"style":603},[3875],{"type":55,"value":670},{"type":49,"tag":590,"props":3877,"children":3878},{"style":597},[3879],{"type":55,"value":3854},{"type":49,"tag":590,"props":3881,"children":3882},{"style":603},[3883],{"type":55,"value":680},{"type":49,"tag":590,"props":3885,"children":3886},{"style":603},[3887],{"type":55,"value":670},{"type":49,"tag":590,"props":3889,"children":3890},{"style":597},[3891],{"type":55,"value":1246},{"type":49,"tag":590,"props":3893,"children":3894},{"style":603},[3895],{"type":55,"value":680},{"type":49,"tag":590,"props":3897,"children":3898},{"style":603},[3899],{"type":55,"value":1064},{"type":49,"tag":590,"props":3901,"children":3902},{"style":1067},[3903],{"type":55,"value":1804},{"type":49,"tag":590,"props":3905,"children":3906},{"style":603},[3907],{"type":55,"value":670},{"type":49,"tag":590,"props":3909,"children":3910},{"style":634},[3911],{"type":55,"value":3912},"WARNING: dream-coverage.py not found",{"type":49,"tag":590,"props":3914,"children":3915},{"style":603},[3916],{"type":55,"value":1099},{"type":49,"tag":58,"props":3918,"children":3919},{},[3920,3925,3927,3933],{"type":49,"tag":64,"props":3921,"children":3922},{},[3923],{"type":55,"value":3924},"Coverage definition:",{"type":55,"value":3926}," A file is \"covered\" only when its shadow has\n≥1 behavioral discovery (line starting with ",{"type":49,"tag":105,"props":3928,"children":3930},{"className":3929},[],[3931],{"type":55,"value":3932},"- ",{"type":55,"value":3934},"). Placeholder-only = NOT covered.",{"type":49,"tag":58,"props":3936,"children":3937},{},[3938,3950,3952,3958],{"type":49,"tag":64,"props":3939,"children":3940},{},[3941,3943,3949],{"type":55,"value":3942},"Scoped exploration (",{"type":49,"tag":105,"props":3944,"children":3946},{"className":3945},[],[3947],{"type":55,"value":3948},"--scope",{"type":55,"value":551},{"type":55,"value":3951}," — pass ",{"type":49,"tag":105,"props":3953,"children":3955},{"className":3954},[],[3956],{"type":55,"value":3957},"--scope \u003Cpath-prefix>",{"type":55,"value":3959}," (repeatable)\nto restrict the coverage map to a specific subtree. Use this when the\nbroader repo is well-explored but a particular area (e.g., a known\nfrontier of bugs, a newly-added module, a subsystem the user just\nflagged) deserves a focused dream session. All counts (totals, %,\nsaturated, fan-in, per-dir) are computed over the scoped subset only.",{"type":49,"tag":200,"props":3961,"children":3963},{"className":582,"code":3962,"language":584,"meta":208,"style":208},"# Scope to one subtree\npython3 \"$COVERAGE_SCRIPT\" \"$REPO_ROOT\" --scope src\u002Fauth\u002F\n\n# Scope to multiple subtrees in one pass\npython3 \"$COVERAGE_SCRIPT\" \"$REPO_ROOT\" --scope src\u002Fauth\u002F --scope src\u002Fdb\u002F\n",[3964],{"type":49,"tag":105,"props":3965,"children":3966},{"__ignoreMap":208},[3967,3975,4016,4023,4031],{"type":49,"tag":590,"props":3968,"children":3969},{"class":592,"line":593},[3970],{"type":49,"tag":590,"props":3971,"children":3972},{"style":971},[3973],{"type":55,"value":3974},"# Scope to one subtree\n",{"type":49,"tag":590,"props":3976,"children":3977},{"class":592,"line":614},[3978,3982,3986,3990,3994,3998,4002,4006,4011],{"type":49,"tag":590,"props":3979,"children":3980},{"style":1037},[3981],{"type":55,"value":377},{"type":49,"tag":590,"props":3983,"children":3984},{"style":603},[3985],{"type":55,"value":670},{"type":49,"tag":590,"props":3987,"children":3988},{"style":597},[3989],{"type":55,"value":3854},{"type":49,"tag":590,"props":3991,"children":3992},{"style":603},[3993],{"type":55,"value":680},{"type":49,"tag":590,"props":3995,"children":3996},{"style":603},[3997],{"type":55,"value":670},{"type":49,"tag":590,"props":3999,"children":4000},{"style":597},[4001],{"type":55,"value":1246},{"type":49,"tag":590,"props":4003,"children":4004},{"style":603},[4005],{"type":55,"value":680},{"type":49,"tag":590,"props":4007,"children":4008},{"style":634},[4009],{"type":55,"value":4010}," --scope",{"type":49,"tag":590,"props":4012,"children":4013},{"style":634},[4014],{"type":55,"value":4015}," src\u002Fauth\u002F\n",{"type":49,"tag":590,"props":4017,"children":4018},{"class":592,"line":29},[4019],{"type":49,"tag":590,"props":4020,"children":4021},{"emptyLinePlaceholder":1133},[4022],{"type":55,"value":1136},{"type":49,"tag":590,"props":4024,"children":4025},{"class":592,"line":723},[4026],{"type":49,"tag":590,"props":4027,"children":4028},{"style":971},[4029],{"type":55,"value":4030},"# Scope to multiple subtrees in one pass\n",{"type":49,"tag":590,"props":4032,"children":4033},{"class":592,"line":1001},[4034,4038,4042,4046,4050,4054,4058,4062,4066,4071,4075],{"type":49,"tag":590,"props":4035,"children":4036},{"style":1037},[4037],{"type":55,"value":377},{"type":49,"tag":590,"props":4039,"children":4040},{"style":603},[4041],{"type":55,"value":670},{"type":49,"tag":590,"props":4043,"children":4044},{"style":597},[4045],{"type":55,"value":3854},{"type":49,"tag":590,"props":4047,"children":4048},{"style":603},[4049],{"type":55,"value":680},{"type":49,"tag":590,"props":4051,"children":4052},{"style":603},[4053],{"type":55,"value":670},{"type":49,"tag":590,"props":4055,"children":4056},{"style":597},[4057],{"type":55,"value":1246},{"type":49,"tag":590,"props":4059,"children":4060},{"style":603},[4061],{"type":55,"value":680},{"type":49,"tag":590,"props":4063,"children":4064},{"style":634},[4065],{"type":55,"value":4010},{"type":49,"tag":590,"props":4067,"children":4068},{"style":634},[4069],{"type":55,"value":4070}," src\u002Fauth\u002F",{"type":49,"tag":590,"props":4072,"children":4073},{"style":634},[4074],{"type":55,"value":4010},{"type":49,"tag":590,"props":4076,"children":4077},{"style":634},[4078],{"type":55,"value":4079}," src\u002Fdb\u002F\n",{"type":49,"tag":58,"props":4081,"children":4082},{},[4083,4085,4090],{"type":55,"value":4084},"When using ",{"type":49,"tag":105,"props":4086,"children":4088},{"className":4087},[],[4089],{"type":55,"value":3948},{"type":55,"value":4091},", the per-category task quotas (Phase 2) still apply\nbut are interpreted against the scoped subset. Don't use scoped\nexploration as the default — pick it only when there's a concrete reason\nto concentrate effort. Unscoped diversity remains the strongest\npredictor of useful discoveries.",{"type":49,"tag":98,"props":4093,"children":4095},{"id":4094},"review-past-dreams-required",[4096],{"type":55,"value":4097},"Review Past Dreams (Required)",{"type":49,"tag":58,"props":4099,"children":4100},{},[4101],{"type":55,"value":4102},"When compoundable experiments exist (preflight step 9):",{"type":49,"tag":212,"props":4104,"children":4105},{},[4106,4117,4122,4135],{"type":49,"tag":216,"props":4107,"children":4108},{},[4109,4111],{"type":55,"value":4110},"Read each report: ",{"type":49,"tag":105,"props":4112,"children":4114},{"className":4113},[],[4115],{"type":55,"value":4116},"cat .shadow\u002F_dreams\u002F\u003Cdream_id>\u002Freport.md",{"type":49,"tag":216,"props":4118,"children":4119},{},[4120],{"type":55,"value":4121},"Choose which to continue (extending, fixing, integrating)",{"type":49,"tag":216,"props":4123,"children":4124},{},[4125,4127,4133],{"type":55,"value":4126},"Note ",{"type":49,"tag":105,"props":4128,"children":4130},{"className":4129},[],[4131],{"type":55,"value":4132},"dead_end",{"type":55,"value":4134}," experiments to avoid repeating",{"type":49,"tag":216,"props":4136,"children":4137},{},[4138,4140,4146,4148],{"type":55,"value":4139},"Trace lineage via the ",{"type":49,"tag":105,"props":4141,"children":4143},{"className":4142},[],[4144],{"type":55,"value":4145},"parent",{"type":55,"value":4147}," column in ",{"type":49,"tag":105,"props":4149,"children":4151},{"className":4150},[],[4152],{"type":55,"value":4153},"_dreams\u002F_index.md",{"type":49,"tag":58,"props":4155,"children":4156},{},[4157,4162],{"type":49,"tag":64,"props":4158,"children":4159},{},[4160],{"type":55,"value":4161},"Compounding quality gate",{"type":55,"value":4163}," — before choosing to compound from a parent:",{"type":49,"tag":531,"props":4165,"children":4166},{},[4167,4186,4199,4204,4209],{"type":49,"tag":216,"props":4168,"children":4169},{},[4170,4172,4178,4180],{"type":55,"value":4171},"Read the parent's ",{"type":49,"tag":105,"props":4173,"children":4175},{"className":4174},[],[4176],{"type":55,"value":4177},"report.md",{"type":55,"value":4179}," AND ",{"type":49,"tag":105,"props":4181,"children":4183},{"className":4182},[],[4184],{"type":55,"value":4185},"manifest.json",{"type":49,"tag":216,"props":4187,"children":4188},{},[4189,4191,4197],{"type":55,"value":4190},"Verify the parent has a non-empty ",{"type":49,"tag":105,"props":4192,"children":4194},{"className":4193},[],[4195],{"type":55,"value":4196},"patch.diff",{"type":55,"value":4198}," (prose-only parents\nare low-value — prefer parents with working code)",{"type":49,"tag":216,"props":4200,"children":4201},{},[4202],{"type":55,"value":4203},"Identify at least one specific file or function you plan to modify\u002Fextend",{"type":49,"tag":216,"props":4205,"children":4206},{},[4207],{"type":55,"value":4208},"Check the parent's area isn't saturated (8+ discoveries) — if it is,\nstart fresh from main unless you have a concrete new angle",{"type":49,"tag":216,"props":4210,"children":4211},{},[4212,4214,4220],{"type":55,"value":4213},"Log your compounding intent: \"I will extend parent's retry logic in\n",{"type":49,"tag":105,"props":4215,"children":4217},{"className":4216},[],[4218],{"type":55,"value":4219},"src\u002Fhttp.py",{"type":55,"value":4221}," to handle connection timeouts\" — vague \"continue\nexploring\" is NOT compounding",{"type":49,"tag":58,"props":4223,"children":4224},{},[4225,4230,4232,4238],{"type":49,"tag":64,"props":4226,"children":4227},{},[4228],{"type":55,"value":4229},"First dream session:",{"type":55,"value":4231}," if preflight step 9 shows ",{"type":49,"tag":105,"props":4233,"children":4235},{"className":4234},[],[4236],{"type":55,"value":4237},"(none)",{"type":55,"value":4239},", all tasks\nbranch from main.",{"type":49,"tag":86,"props":4241,"children":4243},{"id":4242},"phase-2-plan",[4244],{"type":55,"value":4245},"Phase 2: Plan",{"type":49,"tag":58,"props":4247,"children":4248},{},[4249,4251,4256],{"type":55,"value":4250},"Generate a concrete plan. ",{"type":49,"tag":64,"props":4252,"children":4253},{},[4254],{"type":55,"value":4255},"Target 12 tasks (2 per category).",{"type":55,"value":4257}," On small\ncodebases (\u003C30 source files), minimum 6 tasks across 4+ categories.",{"type":49,"tag":98,"props":4259,"children":4261},{"id":4260},"the-6-investigation-categories",[4262],{"type":55,"value":4263},"The 6 Investigation Categories",{"type":49,"tag":731,"props":4265,"children":4266},{},[4267,4288],{"type":49,"tag":735,"props":4268,"children":4269},{},[4270],{"type":49,"tag":739,"props":4271,"children":4272},{},[4273,4278,4283],{"type":49,"tag":743,"props":4274,"children":4275},{},[4276],{"type":55,"value":4277},"Category",{"type":49,"tag":743,"props":4279,"children":4280},{},[4281],{"type":55,"value":4282},"What to look for",{"type":49,"tag":743,"props":4284,"children":4285},{},[4286],{"type":55,"value":4287},"Priority signals",{"type":49,"tag":759,"props":4289,"children":4290},{},[4291,4320,4341,4362,4383,4404],{"type":49,"tag":739,"props":4292,"children":4293},{},[4294,4302,4307],{"type":49,"tag":766,"props":4295,"children":4296},{},[4297],{"type":49,"tag":64,"props":4298,"children":4299},{},[4300],{"type":55,"value":4301},"Investigation",{"type":49,"tag":766,"props":4303,"children":4304},{},[4305],{"type":55,"value":4306},"Under-explored files, shallow coverage, uncertain discoveries",{"type":49,"tag":766,"props":4308,"children":4309},{},[4310,4312,4318],{"type":55,"value":4311},"Files with 0-2 discoveries, import chains not traced, ",{"type":49,"tag":105,"props":4313,"children":4315},{"className":4314},[],[4316],{"type":55,"value":4317},"uncertain",{"type":55,"value":4319}," entries",{"type":49,"tag":739,"props":4321,"children":4322},{},[4323,4331,4336],{"type":49,"tag":766,"props":4324,"children":4325},{},[4326],{"type":49,"tag":64,"props":4327,"children":4328},{},[4329],{"type":55,"value":4330},"Bug hunting",{"type":49,"tag":766,"props":4332,"children":4333},{},[4334],{"type":55,"value":4335},"Defects, edge cases, race conditions",{"type":49,"tag":766,"props":4337,"children":4338},{},[4339],{"type":55,"value":4340},"Error-handling code, concurrency, unvalidated inputs",{"type":49,"tag":739,"props":4342,"children":4343},{},[4344,4352,4357],{"type":49,"tag":766,"props":4345,"children":4346},{},[4347],{"type":49,"tag":64,"props":4348,"children":4349},{},[4350],{"type":55,"value":4351},"Feature design",{"type":49,"tag":766,"props":4353,"children":4354},{},[4355],{"type":55,"value":4356},"New capabilities, missing functionality",{"type":49,"tag":766,"props":4358,"children":4359},{},[4360],{"type":55,"value":4361},"TODOs, FIXMEs, user-facing gaps, integration opportunities",{"type":49,"tag":739,"props":4363,"children":4364},{},[4365,4373,4378],{"type":49,"tag":766,"props":4366,"children":4367},{},[4368],{"type":49,"tag":64,"props":4369,"children":4370},{},[4371],{"type":55,"value":4372},"Refactoring",{"type":49,"tag":766,"props":4374,"children":4375},{},[4376],{"type":55,"value":4377},"Structural improvements, duplication",{"type":49,"tag":766,"props":4379,"children":4380},{},[4381],{"type":55,"value":4382},"God classes, copy-paste patterns, high-coupling files",{"type":49,"tag":739,"props":4384,"children":4385},{},[4386,4394,4399],{"type":49,"tag":766,"props":4387,"children":4388},{},[4389],{"type":49,"tag":64,"props":4390,"children":4391},{},[4392],{"type":55,"value":4393},"Optimization",{"type":49,"tag":766,"props":4395,"children":4396},{},[4397],{"type":55,"value":4398},"Algorithmic efficiency, performance",{"type":49,"tag":766,"props":4400,"children":4401},{},[4402],{"type":55,"value":4403},"Hot paths, nested loops, repeated I\u002FO, missing caches",{"type":49,"tag":739,"props":4405,"children":4406},{},[4407,4415,4420],{"type":49,"tag":766,"props":4408,"children":4409},{},[4410],{"type":49,"tag":64,"props":4411,"children":4412},{},[4413],{"type":55,"value":4414},"Security audit",{"type":49,"tag":766,"props":4416,"children":4417},{},[4418],{"type":55,"value":4419},"Vulnerabilities, unsafe patterns",{"type":49,"tag":766,"props":4421,"children":4422},{},[4423],{"type":55,"value":4424},"Auth code, data handling, deserialization, user inputs",{"type":49,"tag":731,"props":4426,"children":4427},{},[4428,4443],{"type":49,"tag":735,"props":4429,"children":4430},{},[4431],{"type":49,"tag":739,"props":4432,"children":4433},{},[4434,4438],{"type":49,"tag":743,"props":4435,"children":4436},{},[4437],{"type":55,"value":4277},{"type":49,"tag":743,"props":4439,"children":4440},{},[4441],{"type":55,"value":4442},"What to experiment",{"type":49,"tag":759,"props":4444,"children":4445},{},[4446,4461,4476,4491,4506,4521],{"type":49,"tag":739,"props":4447,"children":4448},{},[4449,4456],{"type":49,"tag":766,"props":4450,"children":4451},{},[4452],{"type":49,"tag":64,"props":4453,"children":4454},{},[4455],{"type":55,"value":4301},{"type":49,"tag":766,"props":4457,"children":4458},{},[4459],{"type":55,"value":4460},"Write assertion-based tests proving\u002Fdisproving behavior hypotheses",{"type":49,"tag":739,"props":4462,"children":4463},{},[4464,4471],{"type":49,"tag":766,"props":4465,"children":4466},{},[4467],{"type":49,"tag":64,"props":4468,"children":4469},{},[4470],{"type":55,"value":4330},{"type":49,"tag":766,"props":4472,"children":4473},{},[4474],{"type":55,"value":4475},"Fuzz inputs, trigger error paths, reproduce race conditions",{"type":49,"tag":739,"props":4477,"children":4478},{},[4479,4486],{"type":49,"tag":766,"props":4480,"children":4481},{},[4482],{"type":49,"tag":64,"props":4483,"children":4484},{},[4485],{"type":55,"value":4351},{"type":49,"tag":766,"props":4487,"children":4488},{},[4489],{"type":55,"value":4490},"Implement the feature, run it, evaluate integration",{"type":49,"tag":739,"props":4492,"children":4493},{},[4494,4501],{"type":49,"tag":766,"props":4495,"children":4496},{},[4497],{"type":49,"tag":64,"props":4498,"children":4499},{},[4500],{"type":55,"value":4372},{"type":49,"tag":766,"props":4502,"children":4503},{},[4504],{"type":55,"value":4505},"Do the refactor, run existing tests, measure complexity",{"type":49,"tag":739,"props":4507,"children":4508},{},[4509,4516],{"type":49,"tag":766,"props":4510,"children":4511},{},[4512],{"type":49,"tag":64,"props":4513,"children":4514},{},[4515],{"type":55,"value":4393},{"type":49,"tag":766,"props":4517,"children":4518},{},[4519],{"type":55,"value":4520},"Benchmark, profile, implement optimization, measure before\u002Fafter",{"type":49,"tag":739,"props":4522,"children":4523},{},[4524,4531],{"type":49,"tag":766,"props":4525,"children":4526},{},[4527],{"type":49,"tag":64,"props":4528,"children":4529},{},[4530],{"type":55,"value":4414},{"type":49,"tag":766,"props":4532,"children":4533},{},[4534],{"type":55,"value":4535},"Craft adversarial inputs, test injection vectors (local only)",{"type":49,"tag":58,"props":4537,"children":4538},{},[4539,4544],{"type":49,"tag":64,"props":4540,"children":4541},{},[4542],{"type":55,"value":4543},"Exception — user-directed focus",{"type":55,"value":4545},": If the user specifies a focus area\n(e.g., \"dream focus on security\"), allocate ALL tasks to that category.",{"type":49,"tag":98,"props":4547,"children":4549},{"id":4548},"task-plan-format",[4550],{"type":55,"value":4551},"Task Plan Format",{"type":49,"tag":58,"props":4553,"children":4554},{},[4555,4557,4562,4563,4568,4570,4575],{"type":55,"value":4556},"Each task specifies ",{"type":49,"tag":64,"props":4558,"children":4559},{},[4560],{"type":55,"value":4561},"base branch",{"type":55,"value":460},{"type":49,"tag":64,"props":4564,"children":4565},{},[4566],{"type":55,"value":4567},"primary target file(s)",{"type":55,"value":4569},", and ",{"type":49,"tag":64,"props":4571,"children":4572},{},[4573],{"type":55,"value":4574},"why",{"type":55,"value":2509},{"type":49,"tag":200,"props":4577,"children":4580},{"className":4578,"code":4579,"language":55},[203],"Tasks (by category):\n  Investigation:\n    1. [title] — write tracing tests for [target]\n       Base: main\n       Target: src\u002Fauth\u002Fvalidator.py (UNCOVERED, 12 refs)\n       Why: High fan-in utility with no shadow coverage\n  Bug hunting:\n    1. [title] — fuzz [target]\n       Base: dream\u002F\u003Cns>\u002F\u003Cprior-id> (compounds prior)\n       Target: src\u002Fparsers\u002Fcsv.py (extending parent's failing tests)\n       Why: Parent found 2 crashes, need to verify fixes\n  ...\n",[4581],{"type":49,"tag":105,"props":4582,"children":4583},{"__ignoreMap":208},[4584],{"type":55,"value":4579},{"type":49,"tag":98,"props":4586,"children":4588},{"id":4587},"diversity-rules",[4589],{"type":55,"value":4590},"Diversity Rules",{"type":49,"tag":58,"props":4592,"children":4593},{},[4594],{"type":55,"value":4595},"Prevent fixation (exploring the same files while leaving most untouched):",{"type":49,"tag":531,"props":4597,"children":4598},{},[4599,4609,4619,4629],{"type":49,"tag":216,"props":4600,"children":4601},{},[4602,4607],{"type":49,"tag":64,"props":4603,"children":4604},{},[4605],{"type":55,"value":4606},"Max 2 tasks per source file",{"type":55,"value":4608}," (unless prior dream left concrete follow-up)",{"type":49,"tag":216,"props":4610,"children":4611},{},[4612,4617],{"type":49,"tag":64,"props":4613,"children":4614},{},[4615],{"type":55,"value":4616},"≥30% of tasks on uncovered files",{"type":55,"value":4618}," (from coverage map)",{"type":49,"tag":216,"props":4620,"children":4621},{},[4622,4627],{"type":49,"tag":64,"props":4623,"children":4624},{},[4625],{"type":55,"value":4626},"≥2 tasks on \"deep\" files",{"type":55,"value":4628}," (utilities, internals, converters)",{"type":49,"tag":216,"props":4630,"children":4631},{},[4632,4637],{"type":49,"tag":64,"props":4633,"children":4634},{},[4635],{"type":55,"value":4636},"Vary directories",{"type":55,"value":4638}," — no 3+ consecutive tasks in same dir",{"type":49,"tag":58,"props":4640,"children":4641},{},[4642,4647],{"type":49,"tag":64,"props":4643,"children":4644},{},[4645],{"type":55,"value":4646},"Self-check before finalizing:",{"type":55,"value":4648}," unique target files ≥ 60% of task count,\nuncovered file tasks ≥ 30%, no file in > 2 tasks. Swap if failing.",{"type":49,"tag":58,"props":4650,"children":4651},{},[4652,4657],{"type":49,"tag":64,"props":4653,"children":4654},{},[4655],{"type":55,"value":4656},"Escape hatches",{"type":55,"value":4658}," (document justification): prior dream's failing test,\nconcrete untested hypothesis, file is 500+ lines with unexplored sections,\ncodebase has \u003C20 source files.",{"type":49,"tag":98,"props":4660,"children":4662},{"id":4661},"task-design",[4663],{"type":55,"value":4664},"Task Design",{"type":49,"tag":58,"props":4666,"children":4667},{},[4668,4670,4675,4676,4681,4682,4687,4688,4692,4693,4698,4700,4705,4706,4711,4713,4718],{"type":55,"value":4669},"Each task needs: ",{"type":49,"tag":64,"props":4671,"children":4672},{},[4673],{"type":55,"value":4674},"category",{"type":55,"value":460},{"type":49,"tag":64,"props":4677,"children":4678},{},[4679],{"type":55,"value":4680},"hypothesis",{"type":55,"value":460},{"type":49,"tag":64,"props":4683,"children":4684},{},[4685],{"type":55,"value":4686},"what to implement",{"type":55,"value":467},{"type":49,"tag":64,"props":4689,"children":4690},{},[4691],{"type":55,"value":4561},{"type":55,"value":460},{"type":49,"tag":64,"props":4694,"children":4695},{},[4696],{"type":55,"value":4697},"primary target",{"type":55,"value":4699}," (with coverage status), ",{"type":49,"tag":64,"props":4701,"children":4702},{},[4703],{"type":55,"value":4704},"why this\ntarget",{"type":55,"value":460},{"type":49,"tag":64,"props":4707,"children":4708},{},[4709],{"type":55,"value":4710},"scope",{"type":55,"value":4712}," (hours, not days), and ",{"type":49,"tag":64,"props":4714,"children":4715},{},[4716],{"type":55,"value":4717},"success criteria",{"type":55,"value":84},{"type":49,"tag":58,"props":4720,"children":4721},{},[4722],{"type":55,"value":4723},"Good examples (one per category):",{"type":49,"tag":212,"props":4725,"children":4726},{},[4727,4736,4745,4754,4763,4772],{"type":49,"tag":216,"props":4728,"children":4729},{},[4730,4734],{"type":49,"tag":64,"props":4731,"children":4732},{},[4733],{"type":55,"value":4301},{"type":55,"value":4735},": \"Write assertion harness for request lifecycle —\ninstrument each layer to log entry\u002Fexit and reveal implicit contracts\"",{"type":49,"tag":216,"props":4737,"children":4738},{},[4739,4743],{"type":49,"tag":64,"props":4740,"children":4741},{},[4742],{"type":55,"value":4330},{"type":55,"value":4744},": \"Fuzz the CSV parser with malformed inputs — what\ncrashes or silently corrupts?\"",{"type":49,"tag":216,"props":4746,"children":4747},{},[4748,4752],{"type":49,"tag":64,"props":4749,"children":4750},{},[4751],{"type":55,"value":4351},{"type":55,"value":4753},": \"Implement retry logic with exponential backoff —\ndoes it handle transient failures without masking permanent ones?\"",{"type":49,"tag":216,"props":4755,"children":4756},{},[4757,4761],{"type":49,"tag":64,"props":4758,"children":4759},{},[4760],{"type":55,"value":4372},{"type":55,"value":4762},": \"Extract 5 duplicate auth checks into middleware —\nrun tests, measure if it simplifies without breaking special cases\"",{"type":49,"tag":216,"props":4764,"children":4765},{},[4766,4770],{"type":49,"tag":64,"props":4767,"children":4768},{},[4769],{"type":55,"value":4393},{"type":55,"value":4771},": \"Benchmark the hot path, implement LRU cache for\nrepeated lookups — measure before\u002Fafter wall time\"",{"type":49,"tag":216,"props":4773,"children":4774},{},[4775,4779],{"type":49,"tag":64,"props":4776,"children":4777},{},[4778],{"type":55,"value":4414},{"type":55,"value":4780},": \"Craft SQL injection payloads for user-facing\nendpoints — does parameterized query hold under nested quotes?\"",{"type":49,"tag":58,"props":4782,"children":4783},{},[4784],{"type":55,"value":4785},"Bad examples: \"Look at the code\", \"Trace the flow\", \"Review error\nhandling\", \"Improve code quality\"",{"type":49,"tag":98,"props":4787,"children":4789},{"id":4788},"feature-design-motivation-required",[4790],{"type":55,"value":4791},"Feature Design: Motivation Required",{"type":49,"tag":58,"props":4793,"children":4794},{},[4795],{"type":55,"value":4796},"Feature experiments must address a real gap identified in existing code.\nAnswer: \"Why would maintainers want this?\" with a specific code reference.\nThe feature must connect to the existing codebase (imports, modifies,\nreplaces duplication). Standalone modules with only stdlib don't qualify.",{"type":49,"tag":98,"props":4798,"children":4800},{"id":4799},"vary-your-approach",[4801],{"type":55,"value":4802},"Vary Your Approach",{"type":49,"tag":58,"props":4804,"children":4805},{},[4806],{"type":55,"value":4807},"Each experiment should have unique structure driven by its hypothesis. If\nyou find yourself copying the same module layout (one source file + one\ntest file, identical importlib hack) across experiments, you're optimizing\nfor throughput over insight. Vary your approach: some experiments modify\nexisting files, some add tests for existing code, some create minimal\nscripts, some refactor existing modules.",{"type":49,"tag":98,"props":4809,"children":4811},{"id":4810},"file-selection-guidance",[4812],{"type":55,"value":4813},"File Selection Guidance",{"type":49,"tag":58,"props":4815,"children":4816},{},[4817],{"type":55,"value":4818},"Agents gravitate toward entry points. Evaluation shows this causes missed bugs.",{"type":49,"tag":58,"props":4820,"children":4821},{},[4822],{"type":49,"tag":64,"props":4823,"children":4824},{},[4825],{"type":55,"value":4826},"High-value targets typically missed:",{"type":49,"tag":212,"props":4828,"children":4829},{},[4830,4835,4861,4866],{"type":49,"tag":216,"props":4831,"children":4832},{},[4833],{"type":55,"value":4834},"High fan-in files (imported by many, rarely explored directly)",{"type":49,"tag":216,"props":4836,"children":4837},{},[4838,4840,4846,4847,4853,4854,4860],{"type":55,"value":4839},"Internal\u002Fprivate modules (",{"type":49,"tag":105,"props":4841,"children":4843},{"className":4842},[],[4844],{"type":55,"value":4845},"_internal\u002F",{"type":55,"value":460},{"type":49,"tag":105,"props":4848,"children":4850},{"className":4849},[],[4851],{"type":55,"value":4852},"_utils\u002F",{"type":55,"value":460},{"type":49,"tag":105,"props":4855,"children":4857},{"className":4856},[],[4858],{"type":55,"value":4859},"_compat\u002F",{"type":55,"value":551},{"type":49,"tag":216,"props":4862,"children":4863},{},[4864],{"type":55,"value":4865},"Conversion\u002Fserialization code (parse, encode, format, marshal)",{"type":49,"tag":216,"props":4867,"children":4868},{},[4869],{"type":55,"value":4870},"Error handling paths (exception hierarchies, fallback logic)",{"type":49,"tag":58,"props":4872,"children":4873},{},[4874,4879,4881,4887],{"type":49,"tag":64,"props":4875,"children":4876},{},[4877],{"type":55,"value":4878},"Avoid:",{"type":55,"value":4880}," Starting from ",{"type":49,"tag":105,"props":4882,"children":4884},{"className":4883},[],[4885],{"type":55,"value":4886},"__init__.py",{"type":55,"value":4888},", skipping \"boring\" files, same\ndirectory 3+ times, ignoring files with few public symbols.",{"type":49,"tag":86,"props":4890,"children":4892},{"id":4891},"phase-3-execute-tasks",[4893],{"type":55,"value":4894},"Phase 3: Execute Tasks",{"type":49,"tag":58,"props":4896,"children":4897},{},[4898,4900,4905],{"type":55,"value":4899},"Work through the plan. ",{"type":49,"tag":64,"props":4901,"children":4902},{},[4903],{"type":55,"value":4904},"Launch 3-4 experiments in parallel",{"type":55,"value":4906}," via\nsub-agents. Each handles the full lifecycle: create worktree → implement\n→ test → write shadow + manifest + report → commit → push → clean up.\nIf sub-agents are unavailable, fall back to sequential execution.",{"type":49,"tag":58,"props":4908,"children":4909},{},[4910,4915,4917,4923],{"type":49,"tag":64,"props":4911,"children":4912},{},[4913],{"type":55,"value":4914},"Each experiment runs in a separate git worktree.",{"type":55,"value":4916}," The worktree IS the\ndream branch (created with ",{"type":49,"tag":105,"props":4918,"children":4920},{"className":4919},[],[4921],{"type":55,"value":4922},"-b",{"type":55,"value":4924},"). After pushing, the worktree is removed\nbut the branch persists on the remote.",{"type":49,"tag":98,"props":4926,"children":4928},{"id":4927},"reading-before-implementing",[4929],{"type":55,"value":4930},"Reading Before Implementing",{"type":49,"tag":58,"props":4932,"children":4933},{},[4934],{"type":55,"value":4935},"You must understand the code before changing it. For each task:",{"type":49,"tag":531,"props":4937,"children":4938},{},[4939,4944,4949],{"type":49,"tag":216,"props":4940,"children":4941},{},[4942],{"type":55,"value":4943},"Read the source file(s) and their shadows (existing discoveries)",{"type":49,"tag":216,"props":4945,"children":4946},{},[4947],{"type":55,"value":4948},"Read shadows of referenced\u002Freferencing files",{"type":49,"tag":216,"props":4950,"children":4951},{},[4952],{"type":55,"value":4953},"Understand the current behavior, edge cases, and implicit contracts",{"type":49,"tag":58,"props":4955,"children":4956},{},[4957,4959,4965],{"type":55,"value":4958},"Reading is ",{"type":49,"tag":4960,"props":4961,"children":4962},"em",{},[4963],{"type":55,"value":4964},"preparation",{"type":55,"value":4966},", not the deliverable. The deliverable is code\nwritten, code run, results recorded.",{"type":49,"tag":98,"props":4968,"children":4970},{"id":4969},"experiment-setup",[4971],{"type":55,"value":4972},"Experiment Setup",{"type":49,"tag":58,"props":4974,"children":4975},{},[4976,4978,4983],{"type":55,"value":4977},"Use ",{"type":49,"tag":105,"props":4979,"children":4981},{"className":4980},[],[4982],{"type":55,"value":42},{"type":55,"value":4984}," to create worktrees (handles all path computation,\nnamespace resolution, worktree creation, and validation):",{"type":49,"tag":200,"props":4986,"children":4988},{"className":582,"code":4987,"language":584,"meta":208,"style":208},"# Find the setup script\nSETUP_SCRIPT=\"\"\nfor DIR in .github\u002Fskills\u002Fshadow-frog-dream .claude\u002Fskills\u002Fshadow-frog-dream; do\n    [ -f \"$DIR\u002Fdream-setup.sh\" ] && SETUP_SCRIPT=\"$DIR\u002Fdream-setup.sh\" && break\ndone\n\n# Fresh experiment from main:\nSETUP_OUT=\"$(\"$SETUP_SCRIPT\" --slug t01-csv-fuzzer)\" || exit 1\neval \"$SETUP_OUT\"\n\n# Compounding from prior dream:\nSETUP_OUT=\"$(\"$SETUP_SCRIPT\" --slug t03-extend --base-branch dream\u002F\u003Cns>\u002F\u003Cprior-id>)\" || exit 1\neval \"$SETUP_OUT\"\n",[4989],{"type":49,"tag":105,"props":4990,"children":4991},{"__ignoreMap":208},[4992,5000,5016,5047,5116,5123,5130,5138,5187,5206,5213,5221,5298],{"type":49,"tag":590,"props":4993,"children":4994},{"class":592,"line":593},[4995],{"type":49,"tag":590,"props":4996,"children":4997},{"style":971},[4998],{"type":55,"value":4999},"# Find the setup script\n",{"type":49,"tag":590,"props":5001,"children":5002},{"class":592,"line":614},[5003,5008,5012],{"type":49,"tag":590,"props":5004,"children":5005},{"style":597},[5006],{"type":55,"value":5007},"SETUP_SCRIPT",{"type":49,"tag":590,"props":5009,"children":5010},{"style":603},[5011],{"type":55,"value":606},{"type":49,"tag":590,"props":5013,"children":5014},{"style":603},[5015],{"type":55,"value":611},{"type":49,"tag":590,"props":5017,"children":5018},{"class":592,"line":29},[5019,5023,5027,5031,5035,5039,5043],{"type":49,"tag":590,"props":5020,"children":5021},{"style":618},[5022],{"type":55,"value":621},{"type":49,"tag":590,"props":5024,"children":5025},{"style":597},[5026],{"type":55,"value":626},{"type":49,"tag":590,"props":5028,"children":5029},{"style":618},[5030],{"type":55,"value":631},{"type":49,"tag":590,"props":5032,"children":5033},{"style":634},[5034],{"type":55,"value":637},{"type":49,"tag":590,"props":5036,"children":5037},{"style":634},[5038],{"type":55,"value":642},{"type":49,"tag":590,"props":5040,"children":5041},{"style":603},[5042],{"type":55,"value":647},{"type":49,"tag":590,"props":5044,"children":5045},{"style":618},[5046],{"type":55,"value":652},{"type":49,"tag":590,"props":5048,"children":5049},{"class":592,"line":723},[5050,5054,5058,5062,5066,5071,5075,5079,5083,5088,5092,5096,5100,5104,5108,5112],{"type":49,"tag":590,"props":5051,"children":5052},{"style":603},[5053],{"type":55,"value":660},{"type":49,"tag":590,"props":5055,"children":5056},{"style":603},[5057],{"type":55,"value":1549},{"type":49,"tag":590,"props":5059,"children":5060},{"style":603},[5061],{"type":55,"value":670},{"type":49,"tag":590,"props":5063,"children":5064},{"style":597},[5065],{"type":55,"value":675},{"type":49,"tag":590,"props":5067,"children":5068},{"style":634},[5069],{"type":55,"value":5070},"\u002Fdream-setup.sh",{"type":49,"tag":590,"props":5072,"children":5073},{"style":603},[5074],{"type":55,"value":680},{"type":49,"tag":590,"props":5076,"children":5077},{"style":603},[5078],{"type":55,"value":685},{"type":49,"tag":590,"props":5080,"children":5081},{"style":603},[5082],{"type":55,"value":690},{"type":49,"tag":590,"props":5084,"children":5085},{"style":597},[5086],{"type":55,"value":5087}," SETUP_SCRIPT",{"type":49,"tag":590,"props":5089,"children":5090},{"style":603},[5091],{"type":55,"value":606},{"type":49,"tag":590,"props":5093,"children":5094},{"style":603},[5095],{"type":55,"value":680},{"type":49,"tag":590,"props":5097,"children":5098},{"style":597},[5099],{"type":55,"value":675},{"type":49,"tag":590,"props":5101,"children":5102},{"style":634},[5103],{"type":55,"value":5070},{"type":49,"tag":590,"props":5105,"children":5106},{"style":603},[5107],{"type":55,"value":680},{"type":49,"tag":590,"props":5109,"children":5110},{"style":603},[5111],{"type":55,"value":690},{"type":49,"tag":590,"props":5113,"children":5114},{"style":618},[5115],{"type":55,"value":720},{"type":49,"tag":590,"props":5117,"children":5118},{"class":592,"line":1001},[5119],{"type":49,"tag":590,"props":5120,"children":5121},{"style":618},[5122],{"type":55,"value":729},{"type":49,"tag":590,"props":5124,"children":5125},{"class":592,"line":1010},[5126],{"type":49,"tag":590,"props":5127,"children":5128},{"emptyLinePlaceholder":1133},[5129],{"type":55,"value":1136},{"type":49,"tag":590,"props":5131,"children":5132},{"class":592,"line":1019},[5133],{"type":49,"tag":590,"props":5134,"children":5135},{"style":971},[5136],{"type":55,"value":5137},"# Fresh experiment from main:\n",{"type":49,"tag":590,"props":5139,"children":5140},{"class":592,"line":1079},[5141,5145,5149,5153,5157,5162,5166,5171,5175,5179,5183],{"type":49,"tag":590,"props":5142,"children":5143},{"style":597},[5144],{"type":55,"value":1025},{"type":49,"tag":590,"props":5146,"children":5147},{"style":603},[5148],{"type":55,"value":606},{"type":49,"tag":590,"props":5150,"children":5151},{"style":603},[5152],{"type":55,"value":1034},{"type":49,"tag":590,"props":5154,"children":5155},{"style":1037},[5156],{"type":55,"value":680},{"type":49,"tag":590,"props":5158,"children":5159},{"style":597},[5160],{"type":55,"value":5161},"$SETUP_SCRIPT",{"type":49,"tag":590,"props":5163,"children":5164},{"style":1037},[5165],{"type":55,"value":680},{"type":49,"tag":590,"props":5167,"children":5168},{"style":634},[5169],{"type":55,"value":5170}," --slug t01-csv-fuzzer",{"type":49,"tag":590,"props":5172,"children":5173},{"style":603},[5174],{"type":55,"value":1059},{"type":49,"tag":590,"props":5176,"children":5177},{"style":603},[5178],{"type":55,"value":1064},{"type":49,"tag":590,"props":5180,"children":5181},{"style":1067},[5182],{"type":55,"value":1070},{"type":49,"tag":590,"props":5184,"children":5185},{"style":1073},[5186],{"type":55,"value":1076},{"type":49,"tag":590,"props":5188,"children":5189},{"class":592,"line":1102},[5190,5194,5198,5202],{"type":49,"tag":590,"props":5191,"children":5192},{"style":1067},[5193],{"type":55,"value":1085},{"type":49,"tag":590,"props":5195,"children":5196},{"style":603},[5197],{"type":55,"value":670},{"type":49,"tag":590,"props":5199,"children":5200},{"style":597},[5201],{"type":55,"value":1094},{"type":49,"tag":590,"props":5203,"children":5204},{"style":603},[5205],{"type":55,"value":1099},{"type":49,"tag":590,"props":5207,"children":5208},{"class":592,"line":1111},[5209],{"type":49,"tag":590,"props":5210,"children":5211},{"emptyLinePlaceholder":1133},[5212],{"type":55,"value":1136},{"type":49,"tag":590,"props":5214,"children":5215},{"class":592,"line":1120},[5216],{"type":49,"tag":590,"props":5217,"children":5218},{"style":971},[5219],{"type":55,"value":5220},"# Compounding from prior dream:\n",{"type":49,"tag":590,"props":5222,"children":5223},{"class":592,"line":1129},[5224,5228,5232,5236,5240,5244,5248,5253,5258,5263,5268,5272,5276,5281,5286,5290,5294],{"type":49,"tag":590,"props":5225,"children":5226},{"style":597},[5227],{"type":55,"value":1025},{"type":49,"tag":590,"props":5229,"children":5230},{"style":603},[5231],{"type":55,"value":606},{"type":49,"tag":590,"props":5233,"children":5234},{"style":603},[5235],{"type":55,"value":1034},{"type":49,"tag":590,"props":5237,"children":5238},{"style":1037},[5239],{"type":55,"value":680},{"type":49,"tag":590,"props":5241,"children":5242},{"style":597},[5243],{"type":55,"value":5161},{"type":49,"tag":590,"props":5245,"children":5246},{"style":1037},[5247],{"type":55,"value":680},{"type":49,"tag":590,"props":5249,"children":5250},{"style":634},[5251],{"type":55,"value":5252}," --slug t03-extend --base-branch dream\u002F",{"type":49,"tag":590,"props":5254,"children":5255},{"style":603},[5256],{"type":55,"value":5257},"\u003C",{"type":49,"tag":590,"props":5259,"children":5260},{"style":634},[5261],{"type":55,"value":5262},"ns",{"type":49,"tag":590,"props":5264,"children":5265},{"style":603},[5266],{"type":55,"value":5267},">",{"type":49,"tag":590,"props":5269,"children":5270},{"style":634},[5271],{"type":55,"value":2524},{"type":49,"tag":590,"props":5273,"children":5274},{"style":603},[5275],{"type":55,"value":5257},{"type":49,"tag":590,"props":5277,"children":5278},{"style":634},[5279],{"type":55,"value":5280},"prior-id",{"type":49,"tag":590,"props":5282,"children":5283},{"style":603},[5284],{"type":55,"value":5285},">)\"",{"type":49,"tag":590,"props":5287,"children":5288},{"style":603},[5289],{"type":55,"value":1064},{"type":49,"tag":590,"props":5291,"children":5292},{"style":1067},[5293],{"type":55,"value":1070},{"type":49,"tag":590,"props":5295,"children":5296},{"style":1073},[5297],{"type":55,"value":1076},{"type":49,"tag":590,"props":5299,"children":5300},{"class":592,"line":25},[5301,5305,5309,5313],{"type":49,"tag":590,"props":5302,"children":5303},{"style":1067},[5304],{"type":55,"value":1085},{"type":49,"tag":590,"props":5306,"children":5307},{"style":603},[5308],{"type":55,"value":670},{"type":49,"tag":590,"props":5310,"children":5311},{"style":597},[5312],{"type":55,"value":1094},{"type":49,"tag":590,"props":5314,"children":5315},{"style":603},[5316],{"type":55,"value":1099},{"type":49,"tag":58,"props":5318,"children":5319},{},[5320,5322,5327,5329,5334,5336,5342],{"type":55,"value":5321},"Capture into ",{"type":49,"tag":105,"props":5323,"children":5325},{"className":5324},[],[5326],{"type":55,"value":1025},{"type":55,"value":5328}," first, then ",{"type":49,"tag":105,"props":5330,"children":5332},{"className":5331},[],[5333],{"type":55,"value":1085},{"type":55,"value":5335}," it — see Helper Scripts §\nusage patterns (above) for why bare ",{"type":49,"tag":105,"props":5337,"children":5339},{"className":5338},[],[5340],{"type":55,"value":5341},"eval \"$(…)\" || exit 1",{"type":55,"value":5343}," silently\nswallows the script's exit code.",{"type":49,"tag":58,"props":5345,"children":5346},{},[5347,5349,5354,5356,5361,5362,5367,5368,5373,5374,5380,5381,5387,5388,5394,5395,5401,5402,5408,5409,5415,5416,5421,5422,5428],{"type":55,"value":5348},"This exports (keep in sync with ",{"type":49,"tag":105,"props":5350,"children":5352},{"className":5351},[],[5353],{"type":55,"value":42},{"type":55,"value":5355},"): ",{"type":49,"tag":105,"props":5357,"children":5359},{"className":5358},[],[5360],{"type":55,"value":1430},{"type":55,"value":467},{"type":49,"tag":105,"props":5363,"children":5365},{"className":5364},[],[5366],{"type":55,"value":1845},{"type":55,"value":460},{"type":49,"tag":105,"props":5369,"children":5371},{"className":5370},[],[5372],{"type":55,"value":237},{"type":55,"value":460},{"type":49,"tag":105,"props":5375,"children":5377},{"className":5376},[],[5378],{"type":55,"value":5379},"DREAM_ID",{"type":55,"value":460},{"type":49,"tag":105,"props":5382,"children":5384},{"className":5383},[],[5385],{"type":55,"value":5386},"BRANCH_NAME",{"type":55,"value":460},{"type":49,"tag":105,"props":5389,"children":5391},{"className":5390},[],[5392],{"type":55,"value":5393},"PARENT_BRANCH",{"type":55,"value":467},{"type":49,"tag":105,"props":5396,"children":5398},{"className":5397},[],[5399],{"type":55,"value":5400},"WORKTREE_DIR",{"type":55,"value":460},{"type":49,"tag":105,"props":5403,"children":5405},{"className":5404},[],[5406],{"type":55,"value":5407},"WORKTREE_BASE",{"type":55,"value":460},{"type":49,"tag":105,"props":5410,"children":5412},{"className":5411},[],[5413],{"type":55,"value":5414},"BASE_COMMIT",{"type":55,"value":460},{"type":49,"tag":105,"props":5417,"children":5419},{"className":5418},[],[5420],{"type":55,"value":343},{"type":55,"value":460},{"type":49,"tag":105,"props":5423,"children":5425},{"className":5424},[],[5426],{"type":55,"value":5427},"SLUG",{"type":55,"value":84},{"type":49,"tag":58,"props":5430,"children":5431},{},[5432,5444,5446,5451],{"type":49,"tag":64,"props":5433,"children":5434},{},[5435,5437,5442],{"type":55,"value":5436},"If ",{"type":49,"tag":105,"props":5438,"children":5440},{"className":5439},[],[5441],{"type":55,"value":42},{"type":55,"value":5443}," fails or is not found:",{"type":55,"value":5445}," Apply the Script Failure\nRecovery rule (read the script source, adapt its logic). Common causes:\nmissing git remote, branch already exists, ",{"type":49,"tag":105,"props":5447,"children":5449},{"className":5448},[],[5450],{"type":55,"value":282},{"type":55,"value":5452}," permissions.",{"type":49,"tag":58,"props":5454,"children":5455},{},[5456,5461,5463],{"type":49,"tag":64,"props":5457,"children":5458},{},[5459],{"type":55,"value":5460},"Note:",{"type":55,"value":5462}," Shell variables don't persist across tool calls. Either run\nmulti-step setup in a single shell, or re-derive values. From inside a\nworktree, get main repo with:\n",{"type":49,"tag":105,"props":5464,"children":5466},{"className":5465},[],[5467],{"type":55,"value":5468},"git -C \"$(git rev-parse --git-common-dir)\u002F..\" rev-parse --show-toplevel",{"type":49,"tag":58,"props":5470,"children":5471},{},[5472,5477,5479,5485],{"type":49,"tag":64,"props":5473,"children":5474},{},[5475],{"type":55,"value":5476},"If worktree creation fails:",{"type":55,"value":5478}," mark task ",{"type":49,"tag":105,"props":5480,"children":5482},{"className":5481},[],[5483],{"type":55,"value":5484},"blocked",{"type":55,"value":5486},", replace with another.",{"type":49,"tag":98,"props":5488,"children":5490},{"id":5489},"what-meaningful-compounding-looks-like",[5491],{"type":55,"value":5492},"What Meaningful Compounding Looks Like",{"type":49,"tag":58,"props":5494,"children":5495},{},[5496,5498,5503],{"type":55,"value":5497},"Compounding means ",{"type":49,"tag":64,"props":5499,"children":5500},{},[5501],{"type":55,"value":5502},"actively engaging with the parent's code",{"type":55,"value":5504},", not just\nsitting on its branch. Valid compounding approaches:",{"type":49,"tag":212,"props":5506,"children":5507},{},[5508,5518,5528,5538,5548],{"type":49,"tag":216,"props":5509,"children":5510},{},[5511,5516],{"type":49,"tag":64,"props":5512,"children":5513},{},[5514],{"type":55,"value":5515},"Extend",{"type":55,"value":5517},": import or call the parent's modules and build on them",{"type":49,"tag":216,"props":5519,"children":5520},{},[5521,5526],{"type":49,"tag":64,"props":5522,"children":5523},{},[5524],{"type":55,"value":5525},"Modify",{"type":55,"value":5527},": edit the parent's code to fix limitations noted in its report",{"type":49,"tag":216,"props":5529,"children":5530},{},[5531,5536],{"type":49,"tag":64,"props":5532,"children":5533},{},[5534],{"type":55,"value":5535},"Refactor",{"type":55,"value":5537},": restructure the parent's implementation for better design",{"type":49,"tag":216,"props":5539,"children":5540},{},[5541,5546],{"type":49,"tag":64,"props":5542,"children":5543},{},[5544],{"type":55,"value":5545},"Integrate",{"type":55,"value":5547},": wire the parent's standalone module into the real codebase",{"type":49,"tag":216,"props":5549,"children":5550},{},[5551,5556],{"type":49,"tag":64,"props":5552,"children":5553},{},[5554],{"type":55,"value":5555},"Test deeper",{"type":55,"value":5557},": add edge-case tests for the parent's implementation",{"type":49,"tag":58,"props":5559,"children":5560},{},[5561],{"type":55,"value":5562},"Don't assume the parent dream's code is complete or frozen — iterative\nimprovement is the whole point. If you can't find anything meaningful to\nbuild on, start fresh from main instead.",{"type":49,"tag":58,"props":5564,"children":5565},{},[5566],{"type":55,"value":5567},"Compounding that only adds a new standalone module beside the parent's\ncode (with no imports, edits, or integration) is NOT compounding — it's\na fresh experiment on the wrong branch.",{"type":49,"tag":98,"props":5569,"children":5571},{"id":5570},"run",[5572],{"type":55,"value":5573},"Run",{"type":49,"tag":531,"props":5575,"children":5576},{},[5577,5582,5587,5592],{"type":49,"tag":216,"props":5578,"children":5579},{},[5580],{"type":55,"value":5581},"Implement the experiment — write real code, run tests\u002Fbuilds",{"type":49,"tag":216,"props":5583,"children":5584},{},[5585],{"type":55,"value":5586},"Note what worked, broke, surprised",{"type":49,"tag":216,"props":5588,"children":5589},{},[5590],{"type":55,"value":5591},"Debug if needed — the struggle produces the best discoveries",{"type":49,"tag":216,"props":5593,"children":5594},{},[5595],{"type":55,"value":5596},"Record results as you go",{"type":49,"tag":98,"props":5598,"children":5600},{"id":5599},"write-shadow-discoveries",[5601],{"type":55,"value":5602},"Write Shadow Discoveries",{"type":49,"tag":58,"props":5604,"children":5605},{},[5606,5611],{"type":49,"tag":64,"props":5607,"children":5608},{},[5609],{"type":55,"value":5610},"On the dream branch",{"type":55,"value":5612}," (in the worktree), NOT on main.",{"type":49,"tag":58,"props":5614,"children":5615},{},[5616,5628,5630,5635,5637,5642],{"type":49,"tag":64,"props":5617,"children":5618},{},[5619,5621,5627],{"type":55,"value":5620},"Every experiment MUST write ≥1 discovery to a per-file ",{"type":49,"tag":105,"props":5622,"children":5624},{"className":5623},[],[5625],{"type":55,"value":5626},".shadow\u002F*.md",{"type":55,"value":84},{"type":55,"value":5629},"\nAuthoring order: write the human-readable shadow first, then mirror every\ndiscovery into ",{"type":49,"tag":105,"props":5631,"children":5633},{"className":5632},[],[5634],{"type":55,"value":4185},{"type":55,"value":5636},". For reconciliation the ",{"type":49,"tag":64,"props":5638,"children":5639},{},[5640],{"type":55,"value":5641},"manifest is the\nsource of truth",{"type":55,"value":5643}," — the reconciler merges manifest entries into main, so a\ndiscovery that is missing from the manifest never reaches main. The per-file\nshadow is the human-readable copy (and a required validate gate), not the\npropagation path.",{"type":49,"tag":58,"props":5645,"children":5646},{},[5647,5649,5655,5657,5663,5665,5671,5673,5678],{"type":55,"value":5648},"Follow the dedup and writing rules in ",{"type":49,"tag":105,"props":5650,"children":5652},{"className":5651},[],[5653],{"type":55,"value":5654},"\u002Fshadow-frog",{"type":55,"value":5656},". Dream discoveries\nare typically ",{"type":49,"tag":105,"props":5658,"children":5660},{"className":5659},[],[5661],{"type":55,"value":5662},"source: exploration",{"type":55,"value":5664},". Mark ",{"type":49,"tag":105,"props":5666,"children":5668},{"className":5667},[],[5669],{"type":55,"value":5670},"verified",{"type":55,"value":5672}," when confirmed by\nrunning code; ",{"type":49,"tag":105,"props":5674,"children":5676},{"className":5675},[],[5677],{"type":55,"value":4317},{"type":55,"value":5679}," if not fully testable.",{"type":49,"tag":5681,"props":5682,"children":5684},"h4",{"id":5683},"how-to-append",[5685],{"type":55,"value":5686},"How to Append",{"type":49,"tag":58,"props":5688,"children":5689},{},[5690,5692,5698,5699,5705],{"type":55,"value":5691},"Find the ",{"type":49,"tag":105,"props":5693,"children":5695},{"className":5694},[],[5696],{"type":55,"value":5697},"##",{"type":55,"value":2524},{"type":49,"tag":105,"props":5700,"children":5702},{"className":5701},[],[5703],{"type":55,"value":5704},"###",{"type":55,"value":5706}," heading for the symbol, then:",{"type":49,"tag":212,"props":5708,"children":5709},{},[5710,5723,5728],{"type":49,"tag":216,"props":5711,"children":5712},{},[5713,5715,5721],{"type":55,"value":5714},"Placeholder ",{"type":49,"tag":105,"props":5716,"children":5718},{"className":5717},[],[5719],{"type":55,"value":5720},"_No discoveries yet._",{"type":55,"value":5722}," → replace with discovery",{"type":49,"tag":216,"props":5724,"children":5725},{},[5726],{"type":55,"value":5727},"Existing discoveries → append after last bullet",{"type":49,"tag":216,"props":5729,"children":5730},{},[5731,5733],{"type":55,"value":5732},"No heading → create before ",{"type":49,"tag":105,"props":5734,"children":5736},{"className":5735},[],[5737],{"type":55,"value":5738},"## Cross-References",{"type":49,"tag":5681,"props":5740,"children":5742},{"id":5741},"label-triage-required",[5743],{"type":55,"value":5744},"Label Triage (REQUIRED)",{"type":49,"tag":58,"props":5746,"children":5747},{},[5748,5750,5755,5757,5763,5764,5769,5770,5776,5777,5783,5784,5790],{"type":55,"value":5749},"After writing each discovery, evaluate whether it deserves any of the\nfive actionable labels from ",{"type":49,"tag":105,"props":5751,"children":5753},{"className":5752},[],[5754],{"type":55,"value":5654},{"type":55,"value":5756}," (",{"type":49,"tag":105,"props":5758,"children":5760},{"className":5759},[],[5761],{"type":55,"value":5762},"bug",{"type":55,"value":460},{"type":49,"tag":105,"props":5765,"children":5767},{"className":5766},[],[5768],{"type":55,"value":14},{"type":55,"value":467},{"type":49,"tag":105,"props":5771,"children":5773},{"className":5772},[],[5774],{"type":55,"value":5775},"performance",{"type":55,"value":460},{"type":49,"tag":105,"props":5778,"children":5780},{"className":5779},[],[5781],{"type":55,"value":5782},"feature-gap",{"type":55,"value":460},{"type":49,"tag":105,"props":5785,"children":5787},{"className":5786},[],[5788],{"type":55,"value":5789},"tech-debt",{"type":55,"value":5791},"). Apply labels when:",{"type":49,"tag":731,"props":5793,"children":5794},{},[5795,5811],{"type":49,"tag":735,"props":5796,"children":5797},{},[5798],{"type":49,"tag":739,"props":5799,"children":5800},{},[5801,5806],{"type":49,"tag":743,"props":5802,"children":5803},{},[5804],{"type":55,"value":5805},"Label",{"type":49,"tag":743,"props":5807,"children":5808},{},[5809],{"type":55,"value":5810},"Apply when the discovery describes...",{"type":49,"tag":759,"props":5812,"children":5813},{},[5814,5830,5846,5862,5878],{"type":49,"tag":739,"props":5815,"children":5816},{},[5817,5825],{"type":49,"tag":766,"props":5818,"children":5819},{},[5820],{"type":49,"tag":105,"props":5821,"children":5823},{"className":5822},[],[5824],{"type":55,"value":5762},{"type":49,"tag":766,"props":5826,"children":5827},{},[5828],{"type":55,"value":5829},"A defect, silent failure, off-by-one, race, incorrect result, edge case that misbehaves, validate-then-use ordering hazard",{"type":49,"tag":739,"props":5831,"children":5832},{},[5833,5841],{"type":49,"tag":766,"props":5834,"children":5835},{},[5836],{"type":49,"tag":105,"props":5837,"children":5839},{"className":5838},[],[5840],{"type":55,"value":14},{"type":49,"tag":766,"props":5842,"children":5843},{},[5844],{"type":55,"value":5845},"Injection vector, unsafe default, missing auth\u002Fauthz check, sensitive value logged, untrusted input reaching unsafe sink",{"type":49,"tag":739,"props":5847,"children":5848},{},[5849,5857],{"type":49,"tag":766,"props":5850,"children":5851},{},[5852],{"type":49,"tag":105,"props":5853,"children":5855},{"className":5854},[],[5856],{"type":55,"value":5775},{"type":49,"tag":766,"props":5858,"children":5859},{},[5860],{"type":55,"value":5861},"Measured bottleneck, O(N²) where N is large, repeated I\u002FO that could batch, missing cache, blocking call on hot path",{"type":49,"tag":739,"props":5863,"children":5864},{},[5865,5873],{"type":49,"tag":766,"props":5866,"children":5867},{},[5868],{"type":49,"tag":105,"props":5869,"children":5871},{"className":5870},[],[5872],{"type":55,"value":5782},{"type":49,"tag":766,"props":5874,"children":5875},{},[5876],{"type":55,"value":5877},"Missing capability the codebase clearly needs, asymmetric API (e.g., reads but no writes)",{"type":49,"tag":739,"props":5879,"children":5880},{},[5881,5889],{"type":49,"tag":766,"props":5882,"children":5883},{},[5884],{"type":49,"tag":105,"props":5885,"children":5887},{"className":5886},[],[5888],{"type":55,"value":5789},{"type":49,"tag":766,"props":5890,"children":5891},{},[5892],{"type":55,"value":5893},"Duplication, dead code, leaky abstraction, vestigial parameter, inconsistent naming",{"type":49,"tag":58,"props":5895,"children":5896},{},[5897],{"type":55,"value":5898},"Rules:",{"type":49,"tag":212,"props":5900,"children":5901},{},[5902,5922,5934,5939],{"type":49,"tag":216,"props":5903,"children":5904},{},[5905,5907,5912,5914,5920],{"type":55,"value":5906},"Apply labels to BOTH the in-file discovery markdown AND the\n",{"type":49,"tag":105,"props":5908,"children":5910},{"className":5909},[],[5911],{"type":55,"value":4185},{"type":55,"value":5913}," discovery entry (",{"type":49,"tag":105,"props":5915,"children":5917},{"className":5916},[],[5918],{"type":55,"value":5919},"\"labels\": [\"bug\"]",{"type":55,"value":5921},"). The reconciler\nuses the manifest as source of truth; the in-file copy is for humans\nreading the shadow directly.",{"type":49,"tag":216,"props":5923,"children":5924},{},[5925,5927,5933],{"type":55,"value":5926},"Multiple labels are fine when accurate: ",{"type":49,"tag":105,"props":5928,"children":5930},{"className":5929},[],[5931],{"type":55,"value":5932},"labels: [bug, security]",{"type":55,"value":84},{"type":49,"tag":216,"props":5935,"children":5936},{},[5937],{"type":55,"value":5938},"Omit labels for pure behavioral observations (\"retries N times before\ngiving up\", \"default timeout is 30s\") — these are knowledge, not\naction items.",{"type":49,"tag":216,"props":5940,"children":5941},{},[5942],{"type":55,"value":5943},"Do not apply labels speculatively. The label says \"an engineer should\nact on this.\" If you wouldn't act on it, don't label it.",{"type":49,"tag":58,"props":5945,"children":5946},{},[5947],{"type":55,"value":5948},"Examples:",{"type":49,"tag":200,"props":5950,"children":5953},{"className":5951,"code":5952,"language":55},[203],"- \u002Fapi\u002Fupload accepts paths from request body without normalization,\n  allowing `..\u002F` traversal into \u002Fetc\u002F.\n  _(verified, source: exploration, labels: [bug, security])_\n  Dream report: `_dreams\u002F20260518-161200Z-upload-traversal\u002F`\n",[5954],{"type":49,"tag":105,"props":5955,"children":5956},{"__ignoreMap":208},[5957],{"type":55,"value":5952},{"type":49,"tag":200,"props":5959,"children":5962},{"className":5960,"code":5961,"language":55},[203],"- HttpClient.send retries 3x on transient failures.\n  _(verified, source: exploration)_\n  Dream report: `_dreams\u002F20260518-163000Z-retry-audit\u002F`\n",[5963],{"type":49,"tag":105,"props":5964,"children":5965},{"__ignoreMap":208},[5966],{"type":55,"value":5961},{"type":49,"tag":58,"props":5968,"children":5969},{},[5970],{"type":55,"value":5971},"(No label — pure behavioral knowledge, no action implied.)",{"type":49,"tag":58,"props":5973,"children":5974},{},[5975,5980],{"type":49,"tag":105,"props":5976,"children":5978},{"className":5977},[],[5979],{"type":55,"value":40},{"type":55,"value":5981}," emits non-blocking warnings when discovery text\ncontains label-signal keywords but no label is set. Treat those\nwarnings as a prompt to re-check the triage, not as a directive.",{"type":49,"tag":5681,"props":5983,"children":5985},{"id":5984},"anchor-rules",[5986],{"type":55,"value":5987},"Anchor Rules",{"type":49,"tag":212,"props":5989,"children":5990},{},[5991,5996,6007,6018],{"type":49,"tag":216,"props":5992,"children":5993},{},[5994],{"type":55,"value":5995},"About existing code → anchor to that symbol",{"type":49,"tag":216,"props":5997,"children":5998},{},[5999,6001],{"type":55,"value":6000},"Spans 3+ files → ",{"type":49,"tag":105,"props":6002,"children":6004},{"className":6003},[],[6005],{"type":55,"value":6006},"_cross\u002F\u003Cslug>.md",{"type":49,"tag":216,"props":6008,"children":6009},{},[6010,6012],{"type":55,"value":6011},"Project-wide convention → ",{"type":49,"tag":105,"props":6013,"children":6015},{"className":6014},[],[6016],{"type":55,"value":6017},"_prefs.md",{"type":49,"tag":216,"props":6019,"children":6020},{},[6021,6026],{"type":49,"tag":64,"props":6022,"children":6023},{},[6024],{"type":55,"value":6025},"Only create shadows for base-codebase files",{"type":55,"value":6027}," — experiment-only files\ndon't get shadows (the branch IS the artifact). Anchor findings to the\nexisting code they relate to.",{"type":49,"tag":5681,"props":6029,"children":6031},{"id":6030},"cross-cutting-discoveries",[6032],{"type":55,"value":6033},"Cross-Cutting Discoveries",{"type":49,"tag":58,"props":6035,"children":6036},{},[6037,6039,6044,6046,6051],{"type":55,"value":6038},"When you see the same behavior in 3+ files, create a ",{"type":49,"tag":105,"props":6040,"children":6042},{"className":6041},[],[6043],{"type":55,"value":6006},{"type":55,"value":6045},"\nrather than repeating the discovery in each per-file shadow. Add\nback-pointers in each file's ",{"type":49,"tag":105,"props":6047,"children":6049},{"className":6048},[],[6050],{"type":55,"value":5738},{"type":55,"value":6052}," section.",{"type":49,"tag":5681,"props":6054,"children":6056},{"id":6055},"discovery-quality",[6057],{"type":55,"value":6058},"Discovery Quality",{"type":49,"tag":58,"props":6060,"children":6061},{},[6062,6064,6069,6071,6076,6077,6082,6083,6088],{"type":55,"value":6063},"Discoveries must be ",{"type":49,"tag":64,"props":6065,"children":6066},{},[6067],{"type":55,"value":6068},"self-contained process knowledge",{"type":55,"value":6070}," — understandable\nwith just the base codebase. Someone reading main's shadow should understand\nthe insight without checking out the dream branch. Capture ",{"type":49,"tag":64,"props":6072,"children":6073},{},[6074],{"type":55,"value":6075},"how to do it",{"type":55,"value":467},{"type":49,"tag":64,"props":6078,"children":6079},{},[6080],{"type":55,"value":6081},"what you learned",{"type":55,"value":4569},{"type":49,"tag":64,"props":6084,"children":6085},{},[6086],{"type":55,"value":6087},"what to avoid",{"type":55,"value":6089}," — not what was built. The branch\npreserves the artifact; the shadow preserves the wisdom.",{"type":49,"tag":58,"props":6091,"children":6092},{},[6093],{"type":55,"value":6094},"Good (behavioral insights about existing code):",{"type":49,"tag":212,"props":6096,"children":6097},{},[6098,6103,6108],{"type":49,"tag":216,"props":6099,"children":6100},{},[6101],{"type":55,"value":6102},"\"functools.lru_cache is not thread-safe for initialization — two\nthreads can trigger duplicate expensive computations on first call.\"",{"type":49,"tag":216,"props":6104,"children":6105},{},[6106],{"type":55,"value":6107},"\"agent.py's retry loop catches all exceptions including OOM, masking\nfatal errors that should crash immediately.\"",{"type":49,"tag":216,"props":6109,"children":6110},{},[6111],{"type":55,"value":6112},"\"To add a new eval metric, register in METRIC_MAP at metrics.py:25\nand implement the Metric interface — missing either causes a silent\nno-op in the pipeline.\"",{"type":49,"tag":58,"props":6114,"children":6115},{},[6116],{"type":55,"value":6117},"Bad (descriptions of new code):",{"type":49,"tag":212,"props":6119,"children":6120},{},[6121,6126,6131],{"type":49,"tag":216,"props":6122,"children":6123},{},[6124],{"type":55,"value":6125},"\"The implemented PluginFramework has PluginRegistry, PluginManager,\nand 7 lifecycle hooks.\" — describes branch-only artifact.",{"type":49,"tag":216,"props":6127,"children":6128},{},[6129],{"type":55,"value":6130},"\"Provides RewardShaper with 4 methods, Welford normalizer, and\nGAE-lambda estimation.\" — feature spec, not behavioral insight.",{"type":49,"tag":216,"props":6132,"children":6133},{},[6134],{"type":55,"value":6135},"\"Complete tested module with 58 passing tests.\" — verdict, not discovery.",{"type":49,"tag":58,"props":6137,"children":6138},{},[6139],{"type":55,"value":6140},"Per-file discoveries should reference the dream report:",{"type":49,"tag":200,"props":6142,"children":6145},{"className":6143,"code":6144,"language":55},[203],"- Retrying with exponential backoff recovers from 99% of transient errors,\n  but must exclude 4xx or it retries bad requests for 30s.\n  _(verified, source: exploration)_\n  Dream report: `_dreams\u002F20250612-143012Z-retry-logic\u002F`\n",[6146],{"type":49,"tag":105,"props":6147,"children":6148},{"__ignoreMap":208},[6149],{"type":55,"value":6144},{"type":49,"tag":98,"props":6151,"children":6153},{"id":6152},"write-discovery-manifest",[6154],{"type":55,"value":6155},"Write Discovery Manifest",{"type":49,"tag":58,"props":6157,"children":6158},{},[6159,6161,6167],{"type":55,"value":6160},"After shadow writes, create ",{"type":49,"tag":105,"props":6162,"children":6164},{"className":6163},[],[6165],{"type":55,"value":6166},".shadow\u002F_dreams\u002F$DREAM_ID\u002Fmanifest.json",{"type":55,"value":2509},{"type":49,"tag":200,"props":6169,"children":6173},{"className":6170,"code":6171,"language":6172,"meta":208,"style":208},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"dream_id\": \"\u003CDREAM_ID>\",\n  \"branch\": \"\u003CBRANCH_NAME>\",\n  \"parent_branch\": \"main\",\n  \"category\": \"bug hunting\",\n  \"verdict\": \"useful\",\n  \"title\": \"CSV Parser Edge Cases\",\n  \"discoveries\": [\n    {\n      \"op\": \"add\",\n      \"anchor\": \"src\u002Fparsers\u002Fcsv.py::parse_row\",\n      \"text\": \"Unescaped quotes in fields cause silent truncation.\",\n      \"status\": \"verified\",\n      \"source\": \"exploration\",\n      \"labels\": [\"bug\"],\n      \"also_involves\": [\"src\u002Fparsers\u002Futils.py::unescape\"],\n      \"dream_report\": \"_dreams\u002F\u003CDREAM_ID>\u002F\"\n    }\n  ],\n  \"cross_cutting\": []\n}\n","json",[6174],{"type":49,"tag":105,"props":6175,"children":6176},{"__ignoreMap":208},[6177,6185,6223,6260,6296,6332,6369,6406,6431,6439,6477,6514,6550,6586,6623,6664,6705,6738,6746,6754,6779],{"type":49,"tag":590,"props":6178,"children":6179},{"class":592,"line":593},[6180],{"type":49,"tag":590,"props":6181,"children":6182},{"style":603},[6183],{"type":55,"value":6184},"{\n",{"type":49,"tag":590,"props":6186,"children":6187},{"class":592,"line":614},[6188,6193,6198,6202,6206,6210,6215,6219],{"type":49,"tag":590,"props":6189,"children":6190},{"style":603},[6191],{"type":55,"value":6192},"  \"",{"type":49,"tag":590,"props":6194,"children":6195},{"style":1617},[6196],{"type":55,"value":6197},"dream_id",{"type":49,"tag":590,"props":6199,"children":6200},{"style":603},[6201],{"type":55,"value":680},{"type":49,"tag":590,"props":6203,"children":6204},{"style":603},[6205],{"type":55,"value":2509},{"type":49,"tag":590,"props":6207,"children":6208},{"style":603},[6209],{"type":55,"value":670},{"type":49,"tag":590,"props":6211,"children":6212},{"style":634},[6213],{"type":55,"value":6214},"\u003CDREAM_ID>",{"type":49,"tag":590,"props":6216,"children":6217},{"style":603},[6218],{"type":55,"value":680},{"type":49,"tag":590,"props":6220,"children":6221},{"style":603},[6222],{"type":55,"value":467},{"type":49,"tag":590,"props":6224,"children":6225},{"class":592,"line":29},[6226,6230,6235,6239,6243,6247,6252,6256],{"type":49,"tag":590,"props":6227,"children":6228},{"style":603},[6229],{"type":55,"value":6192},{"type":49,"tag":590,"props":6231,"children":6232},{"style":1617},[6233],{"type":55,"value":6234},"branch",{"type":49,"tag":590,"props":6236,"children":6237},{"style":603},[6238],{"type":55,"value":680},{"type":49,"tag":590,"props":6240,"children":6241},{"style":603},[6242],{"type":55,"value":2509},{"type":49,"tag":590,"props":6244,"children":6245},{"style":603},[6246],{"type":55,"value":670},{"type":49,"tag":590,"props":6248,"children":6249},{"style":634},[6250],{"type":55,"value":6251},"\u003CBRANCH_NAME>",{"type":49,"tag":590,"props":6253,"children":6254},{"style":603},[6255],{"type":55,"value":680},{"type":49,"tag":590,"props":6257,"children":6258},{"style":603},[6259],{"type":55,"value":467},{"type":49,"tag":590,"props":6261,"children":6262},{"class":592,"line":723},[6263,6267,6272,6276,6280,6284,6288,6292],{"type":49,"tag":590,"props":6264,"children":6265},{"style":603},[6266],{"type":55,"value":6192},{"type":49,"tag":590,"props":6268,"children":6269},{"style":1617},[6270],{"type":55,"value":6271},"parent_branch",{"type":49,"tag":590,"props":6273,"children":6274},{"style":603},[6275],{"type":55,"value":680},{"type":49,"tag":590,"props":6277,"children":6278},{"style":603},[6279],{"type":55,"value":2509},{"type":49,"tag":590,"props":6281,"children":6282},{"style":603},[6283],{"type":55,"value":670},{"type":49,"tag":590,"props":6285,"children":6286},{"style":634},[6287],{"type":55,"value":1999},{"type":49,"tag":590,"props":6289,"children":6290},{"style":603},[6291],{"type":55,"value":680},{"type":49,"tag":590,"props":6293,"children":6294},{"style":603},[6295],{"type":55,"value":467},{"type":49,"tag":590,"props":6297,"children":6298},{"class":592,"line":1001},[6299,6303,6307,6311,6315,6319,6324,6328],{"type":49,"tag":590,"props":6300,"children":6301},{"style":603},[6302],{"type":55,"value":6192},{"type":49,"tag":590,"props":6304,"children":6305},{"style":1617},[6306],{"type":55,"value":4674},{"type":49,"tag":590,"props":6308,"children":6309},{"style":603},[6310],{"type":55,"value":680},{"type":49,"tag":590,"props":6312,"children":6313},{"style":603},[6314],{"type":55,"value":2509},{"type":49,"tag":590,"props":6316,"children":6317},{"style":603},[6318],{"type":55,"value":670},{"type":49,"tag":590,"props":6320,"children":6321},{"style":634},[6322],{"type":55,"value":6323},"bug hunting",{"type":49,"tag":590,"props":6325,"children":6326},{"style":603},[6327],{"type":55,"value":680},{"type":49,"tag":590,"props":6329,"children":6330},{"style":603},[6331],{"type":55,"value":467},{"type":49,"tag":590,"props":6333,"children":6334},{"class":592,"line":1010},[6335,6339,6344,6348,6352,6356,6361,6365],{"type":49,"tag":590,"props":6336,"children":6337},{"style":603},[6338],{"type":55,"value":6192},{"type":49,"tag":590,"props":6340,"children":6341},{"style":1617},[6342],{"type":55,"value":6343},"verdict",{"type":49,"tag":590,"props":6345,"children":6346},{"style":603},[6347],{"type":55,"value":680},{"type":49,"tag":590,"props":6349,"children":6350},{"style":603},[6351],{"type":55,"value":2509},{"type":49,"tag":590,"props":6353,"children":6354},{"style":603},[6355],{"type":55,"value":670},{"type":49,"tag":590,"props":6357,"children":6358},{"style":634},[6359],{"type":55,"value":6360},"useful",{"type":49,"tag":590,"props":6362,"children":6363},{"style":603},[6364],{"type":55,"value":680},{"type":49,"tag":590,"props":6366,"children":6367},{"style":603},[6368],{"type":55,"value":467},{"type":49,"tag":590,"props":6370,"children":6371},{"class":592,"line":1019},[6372,6376,6381,6385,6389,6393,6398,6402],{"type":49,"tag":590,"props":6373,"children":6374},{"style":603},[6375],{"type":55,"value":6192},{"type":49,"tag":590,"props":6377,"children":6378},{"style":1617},[6379],{"type":55,"value":6380},"title",{"type":49,"tag":590,"props":6382,"children":6383},{"style":603},[6384],{"type":55,"value":680},{"type":49,"tag":590,"props":6386,"children":6387},{"style":603},[6388],{"type":55,"value":2509},{"type":49,"tag":590,"props":6390,"children":6391},{"style":603},[6392],{"type":55,"value":670},{"type":49,"tag":590,"props":6394,"children":6395},{"style":634},[6396],{"type":55,"value":6397},"CSV Parser Edge Cases",{"type":49,"tag":590,"props":6399,"children":6400},{"style":603},[6401],{"type":55,"value":680},{"type":49,"tag":590,"props":6403,"children":6404},{"style":603},[6405],{"type":55,"value":467},{"type":49,"tag":590,"props":6407,"children":6408},{"class":592,"line":1079},[6409,6413,6418,6422,6426],{"type":49,"tag":590,"props":6410,"children":6411},{"style":603},[6412],{"type":55,"value":6192},{"type":49,"tag":590,"props":6414,"children":6415},{"style":1617},[6416],{"type":55,"value":6417},"discoveries",{"type":49,"tag":590,"props":6419,"children":6420},{"style":603},[6421],{"type":55,"value":680},{"type":49,"tag":590,"props":6423,"children":6424},{"style":603},[6425],{"type":55,"value":2509},{"type":49,"tag":590,"props":6427,"children":6428},{"style":603},[6429],{"type":55,"value":6430}," [\n",{"type":49,"tag":590,"props":6432,"children":6433},{"class":592,"line":1102},[6434],{"type":49,"tag":590,"props":6435,"children":6436},{"style":603},[6437],{"type":55,"value":6438},"    {\n",{"type":49,"tag":590,"props":6440,"children":6441},{"class":592,"line":1111},[6442,6447,6452,6456,6460,6464,6469,6473],{"type":49,"tag":590,"props":6443,"children":6444},{"style":603},[6445],{"type":55,"value":6446},"      \"",{"type":49,"tag":590,"props":6448,"children":6449},{"style":1037},[6450],{"type":55,"value":6451},"op",{"type":49,"tag":590,"props":6453,"children":6454},{"style":603},[6455],{"type":55,"value":680},{"type":49,"tag":590,"props":6457,"children":6458},{"style":603},[6459],{"type":55,"value":2509},{"type":49,"tag":590,"props":6461,"children":6462},{"style":603},[6463],{"type":55,"value":670},{"type":49,"tag":590,"props":6465,"children":6466},{"style":634},[6467],{"type":55,"value":6468},"add",{"type":49,"tag":590,"props":6470,"children":6471},{"style":603},[6472],{"type":55,"value":680},{"type":49,"tag":590,"props":6474,"children":6475},{"style":603},[6476],{"type":55,"value":467},{"type":49,"tag":590,"props":6478,"children":6479},{"class":592,"line":1120},[6480,6484,6489,6493,6497,6501,6506,6510],{"type":49,"tag":590,"props":6481,"children":6482},{"style":603},[6483],{"type":55,"value":6446},{"type":49,"tag":590,"props":6485,"children":6486},{"style":1037},[6487],{"type":55,"value":6488},"anchor",{"type":49,"tag":590,"props":6490,"children":6491},{"style":603},[6492],{"type":55,"value":680},{"type":49,"tag":590,"props":6494,"children":6495},{"style":603},[6496],{"type":55,"value":2509},{"type":49,"tag":590,"props":6498,"children":6499},{"style":603},[6500],{"type":55,"value":670},{"type":49,"tag":590,"props":6502,"children":6503},{"style":634},[6504],{"type":55,"value":6505},"src\u002Fparsers\u002Fcsv.py::parse_row",{"type":49,"tag":590,"props":6507,"children":6508},{"style":603},[6509],{"type":55,"value":680},{"type":49,"tag":590,"props":6511,"children":6512},{"style":603},[6513],{"type":55,"value":467},{"type":49,"tag":590,"props":6515,"children":6516},{"class":592,"line":1129},[6517,6521,6525,6529,6533,6537,6542,6546],{"type":49,"tag":590,"props":6518,"children":6519},{"style":603},[6520],{"type":55,"value":6446},{"type":49,"tag":590,"props":6522,"children":6523},{"style":1037},[6524],{"type":55,"value":55},{"type":49,"tag":590,"props":6526,"children":6527},{"style":603},[6528],{"type":55,"value":680},{"type":49,"tag":590,"props":6530,"children":6531},{"style":603},[6532],{"type":55,"value":2509},{"type":49,"tag":590,"props":6534,"children":6535},{"style":603},[6536],{"type":55,"value":670},{"type":49,"tag":590,"props":6538,"children":6539},{"style":634},[6540],{"type":55,"value":6541},"Unescaped quotes in fields cause silent truncation.",{"type":49,"tag":590,"props":6543,"children":6544},{"style":603},[6545],{"type":55,"value":680},{"type":49,"tag":590,"props":6547,"children":6548},{"style":603},[6549],{"type":55,"value":467},{"type":49,"tag":590,"props":6551,"children":6552},{"class":592,"line":25},[6553,6557,6562,6566,6570,6574,6578,6582],{"type":49,"tag":590,"props":6554,"children":6555},{"style":603},[6556],{"type":55,"value":6446},{"type":49,"tag":590,"props":6558,"children":6559},{"style":1037},[6560],{"type":55,"value":6561},"status",{"type":49,"tag":590,"props":6563,"children":6564},{"style":603},[6565],{"type":55,"value":680},{"type":49,"tag":590,"props":6567,"children":6568},{"style":603},[6569],{"type":55,"value":2509},{"type":49,"tag":590,"props":6571,"children":6572},{"style":603},[6573],{"type":55,"value":670},{"type":49,"tag":590,"props":6575,"children":6576},{"style":634},[6577],{"type":55,"value":5670},{"type":49,"tag":590,"props":6579,"children":6580},{"style":603},[6581],{"type":55,"value":680},{"type":49,"tag":590,"props":6583,"children":6584},{"style":603},[6585],{"type":55,"value":467},{"type":49,"tag":590,"props":6587,"children":6588},{"class":592,"line":1147},[6589,6593,6598,6602,6606,6610,6615,6619],{"type":49,"tag":590,"props":6590,"children":6591},{"style":603},[6592],{"type":55,"value":6446},{"type":49,"tag":590,"props":6594,"children":6595},{"style":1037},[6596],{"type":55,"value":6597},"source",{"type":49,"tag":590,"props":6599,"children":6600},{"style":603},[6601],{"type":55,"value":680},{"type":49,"tag":590,"props":6603,"children":6604},{"style":603},[6605],{"type":55,"value":2509},{"type":49,"tag":590,"props":6607,"children":6608},{"style":603},[6609],{"type":55,"value":670},{"type":49,"tag":590,"props":6611,"children":6612},{"style":634},[6613],{"type":55,"value":6614},"exploration",{"type":49,"tag":590,"props":6616,"children":6617},{"style":603},[6618],{"type":55,"value":680},{"type":49,"tag":590,"props":6620,"children":6621},{"style":603},[6622],{"type":55,"value":467},{"type":49,"tag":590,"props":6624,"children":6625},{"class":592,"line":1198},[6626,6630,6635,6639,6643,6647,6651,6655,6659],{"type":49,"tag":590,"props":6627,"children":6628},{"style":603},[6629],{"type":55,"value":6446},{"type":49,"tag":590,"props":6631,"children":6632},{"style":1037},[6633],{"type":55,"value":6634},"labels",{"type":49,"tag":590,"props":6636,"children":6637},{"style":603},[6638],{"type":55,"value":680},{"type":49,"tag":590,"props":6640,"children":6641},{"style":603},[6642],{"type":55,"value":2509},{"type":49,"tag":590,"props":6644,"children":6645},{"style":603},[6646],{"type":55,"value":1503},{"type":49,"tag":590,"props":6648,"children":6649},{"style":603},[6650],{"type":55,"value":680},{"type":49,"tag":590,"props":6652,"children":6653},{"style":634},[6654],{"type":55,"value":5762},{"type":49,"tag":590,"props":6656,"children":6657},{"style":603},[6658],{"type":55,"value":680},{"type":49,"tag":590,"props":6660,"children":6661},{"style":603},[6662],{"type":55,"value":6663},"],\n",{"type":49,"tag":590,"props":6665,"children":6666},{"class":592,"line":1206},[6667,6671,6676,6680,6684,6688,6692,6697,6701],{"type":49,"tag":590,"props":6668,"children":6669},{"style":603},[6670],{"type":55,"value":6446},{"type":49,"tag":590,"props":6672,"children":6673},{"style":1037},[6674],{"type":55,"value":6675},"also_involves",{"type":49,"tag":590,"props":6677,"children":6678},{"style":603},[6679],{"type":55,"value":680},{"type":49,"tag":590,"props":6681,"children":6682},{"style":603},[6683],{"type":55,"value":2509},{"type":49,"tag":590,"props":6685,"children":6686},{"style":603},[6687],{"type":55,"value":1503},{"type":49,"tag":590,"props":6689,"children":6690},{"style":603},[6691],{"type":55,"value":680},{"type":49,"tag":590,"props":6693,"children":6694},{"style":634},[6695],{"type":55,"value":6696},"src\u002Fparsers\u002Futils.py::unescape",{"type":49,"tag":590,"props":6698,"children":6699},{"style":603},[6700],{"type":55,"value":680},{"type":49,"tag":590,"props":6702,"children":6703},{"style":603},[6704],{"type":55,"value":6663},{"type":49,"tag":590,"props":6706,"children":6707},{"class":592,"line":1215},[6708,6712,6717,6721,6725,6729,6734],{"type":49,"tag":590,"props":6709,"children":6710},{"style":603},[6711],{"type":55,"value":6446},{"type":49,"tag":590,"props":6713,"children":6714},{"style":1037},[6715],{"type":55,"value":6716},"dream_report",{"type":49,"tag":590,"props":6718,"children":6719},{"style":603},[6720],{"type":55,"value":680},{"type":49,"tag":590,"props":6722,"children":6723},{"style":603},[6724],{"type":55,"value":2509},{"type":49,"tag":590,"props":6726,"children":6727},{"style":603},[6728],{"type":55,"value":670},{"type":49,"tag":590,"props":6730,"children":6731},{"style":634},[6732],{"type":55,"value":6733},"_dreams\u002F\u003CDREAM_ID>\u002F",{"type":49,"tag":590,"props":6735,"children":6736},{"style":603},[6737],{"type":55,"value":1099},{"type":49,"tag":590,"props":6739,"children":6740},{"class":592,"line":1253},[6741],{"type":49,"tag":590,"props":6742,"children":6743},{"style":603},[6744],{"type":55,"value":6745},"    }\n",{"type":49,"tag":590,"props":6747,"children":6748},{"class":592,"line":1262},[6749],{"type":49,"tag":590,"props":6750,"children":6751},{"style":603},[6752],{"type":55,"value":6753},"  ],\n",{"type":49,"tag":590,"props":6755,"children":6756},{"class":592,"line":1271},[6757,6761,6766,6770,6774],{"type":49,"tag":590,"props":6758,"children":6759},{"style":603},[6760],{"type":55,"value":6192},{"type":49,"tag":590,"props":6762,"children":6763},{"style":1617},[6764],{"type":55,"value":6765},"cross_cutting",{"type":49,"tag":590,"props":6767,"children":6768},{"style":603},[6769],{"type":55,"value":680},{"type":49,"tag":590,"props":6771,"children":6772},{"style":603},[6773],{"type":55,"value":2509},{"type":49,"tag":590,"props":6775,"children":6776},{"style":603},[6777],{"type":55,"value":6778}," []\n",{"type":49,"tag":590,"props":6780,"children":6781},{"class":592,"line":1280},[6782],{"type":49,"tag":590,"props":6783,"children":6784},{"style":603},[6785],{"type":55,"value":6786},"}\n",{"type":49,"tag":58,"props":6788,"children":6789},{},[6790,6795,6797,6803],{"type":49,"tag":64,"props":6791,"children":6792},{},[6793],{"type":55,"value":6794},"Anchor format:",{"type":55,"value":6796}," ",{"type":49,"tag":105,"props":6798,"children":6800},{"className":6799},[],[6801],{"type":55,"value":6802},"file::symbol",{"type":55,"value":6804}," with bare names (no backticks). The\nreconciler handles normalization.",{"type":49,"tag":58,"props":6806,"children":6807},{},[6808,6810,6815,6817,6822,6824,6830,6832,6838,6840,6845,6847,6852,6854,6859,6861,6866],{"type":55,"value":6809},"Manifest ",{"type":49,"tag":105,"props":6811,"children":6813},{"className":6812},[],[6814],{"type":55,"value":6451},{"type":55,"value":6816}," values: only ",{"type":49,"tag":105,"props":6818,"children":6820},{"className":6819},[],[6821],{"type":55,"value":6468},{"type":55,"value":6823}," is supported by the reconciler today.\n",{"type":49,"tag":105,"props":6825,"children":6827},{"className":6826},[],[6828],{"type":55,"value":6829},"update",{"type":55,"value":6831}," and ",{"type":49,"tag":105,"props":6833,"children":6835},{"className":6834},[],[6836],{"type":55,"value":6837},"refute",{"type":55,"value":6839}," are reserved keywords — ",{"type":49,"tag":105,"props":6841,"children":6843},{"className":6842},[],[6844],{"type":55,"value":40},{"type":55,"value":6846}," will\nreject any discovery whose ",{"type":49,"tag":105,"props":6848,"children":6850},{"className":6849},[],[6851],{"type":55,"value":6451},{"type":55,"value":6853}," is not ",{"type":49,"tag":105,"props":6855,"children":6857},{"className":6856},[],[6858],{"type":55,"value":6468},{"type":55,"value":6860},". To revise or contradict an\nexisting discovery, run a meditate session against main's ",{"type":49,"tag":105,"props":6862,"children":6864},{"className":6863},[],[6865],{"type":55,"value":110},{"type":55,"value":6867},"\ninstead of trying to do it from a dream branch.",{"type":49,"tag":58,"props":6869,"children":6870},{},[6871,6876,6878,6883,6885,6890,6892,6897,6899,6904,6906,6912,6913,6918,6920,6926],{"type":49,"tag":64,"props":6872,"children":6873},{},[6874],{"type":55,"value":6875},"Hard gate — discoveries must be mirrored into per-file shadows.",{"type":55,"value":6877}," The\nreconciler merges ",{"type":49,"tag":105,"props":6879,"children":6881},{"className":6880},[],[6882],{"type":55,"value":4185},{"type":55,"value":6884}," entries into main directly (so discoveries\nare not lost at merge time), but the branch's per-file shadows must ALSO be\nupdated so human PR reviewers can read the discoveries in context. If\n",{"type":49,"tag":105,"props":6886,"children":6888},{"className":6887},[],[6889],{"type":55,"value":4185},{"type":55,"value":6891}," declares discoveries but no ",{"type":49,"tag":105,"props":6893,"children":6895},{"className":6894},[],[6896],{"type":55,"value":5626},{"type":55,"value":6898}," files outside\n",{"type":49,"tag":105,"props":6900,"children":6902},{"className":6901},[],[6903],{"type":55,"value":3685},{"type":55,"value":6905}," are modified in the branch diff vs ",{"type":49,"tag":105,"props":6907,"children":6909},{"className":6908},[],[6910],{"type":55,"value":6911},"base_commit",{"type":55,"value":467},{"type":49,"tag":105,"props":6914,"children":6916},{"className":6915},[],[6917],{"type":55,"value":40},{"type":55,"value":6919}," rejects the dream. Always write each discovery into BOTH\nthe corresponding per-file shadow (or ",{"type":49,"tag":105,"props":6921,"children":6923},{"className":6922},[],[6924],{"type":55,"value":6925},".shadow\u002F_cross\u002F",{"type":55,"value":6927},") AND the manifest\nbefore staging.",{"type":49,"tag":98,"props":6929,"children":6931},{"id":6930},"save-dream-report",[6932],{"type":55,"value":6933},"Save Dream Report",{"type":49,"tag":58,"props":6935,"children":6936},{},[6937,6939,6945],{"type":55,"value":6938},"Save as ",{"type":49,"tag":105,"props":6940,"children":6942},{"className":6941},[],[6943],{"type":55,"value":6944},".shadow\u002F_dreams\u002F$DREAM_ID\u002Freport.md",{"type":55,"value":2509},{"type":49,"tag":200,"props":6947,"children":6951},{"className":6948,"code":6949,"language":6950,"meta":208,"style":208},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","---\ndream_id: \"\u003CDREAM_ID>\"\ncategory: bug hunting\nverdict: useful\nbase_commit: \"\u003CBASE_COMMIT>\"\nbranch: \"\u003CBRANCH_NAME>\"\nparent_branch: \"main\"\nremote: \"origin\"\nrelated_symbols:\n  - \"src\u002Fparsers\u002Fcsv.py::parse_row\"\nbuilds_on: []\n---\n\n# CSV Parser Edge Cases\n\n## Motivation\n\u003Ccite specific existing files\u002Fsymbols where gap was identified>\n\n## Compounding Delta\n\u003CONLY if parent_branch != main — what parent code was modified\u002Fextended>\n\n## Hypothesis\n\u003Cwhat we expected to learn>\n\n## Implementation\n\u003Ckey decisions, approach>\n\n## Commands Run\n\u003Cexact commands with exit codes>\n\n## Evaluation\n\u003Cresults, what worked\u002Fdidn't>\n\n## Takeaways\n\u003Clessons, gotchas>\n\n## Verdict Details\n\u003Cwhy useful\u002Fdead_end>\n","markdown",[6952],{"type":49,"tag":105,"props":6953,"children":6954},{"__ignoreMap":208},[6955,6963,6987,7003,7019,7043,7066,7089,7113,7126,7146,7162,7169,7176,7189,7196,7209,7217,7224,7236,7244,7251,7263,7271,7278,7290,7298,7305,7317,7325,7332,7344,7352,7359,7371,7379,7386,7398],{"type":49,"tag":590,"props":6956,"children":6957},{"class":592,"line":593},[6958],{"type":49,"tag":590,"props":6959,"children":6960},{"style":603},[6961],{"type":55,"value":6962},"---\n",{"type":49,"tag":590,"props":6964,"children":6965},{"class":592,"line":614},[6966,6971,6975,6979,6983],{"type":49,"tag":590,"props":6967,"children":6969},{"style":6968},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[6970],{"type":55,"value":6197},{"type":49,"tag":590,"props":6972,"children":6973},{"style":603},[6974],{"type":55,"value":2509},{"type":49,"tag":590,"props":6976,"children":6977},{"style":603},[6978],{"type":55,"value":670},{"type":49,"tag":590,"props":6980,"children":6981},{"style":634},[6982],{"type":55,"value":6214},{"type":49,"tag":590,"props":6984,"children":6985},{"style":603},[6986],{"type":55,"value":1099},{"type":49,"tag":590,"props":6988,"children":6989},{"class":592,"line":29},[6990,6994,6998],{"type":49,"tag":590,"props":6991,"children":6992},{"style":6968},[6993],{"type":55,"value":4674},{"type":49,"tag":590,"props":6995,"children":6996},{"style":603},[6997],{"type":55,"value":2509},{"type":49,"tag":590,"props":6999,"children":7000},{"style":634},[7001],{"type":55,"value":7002}," bug hunting\n",{"type":49,"tag":590,"props":7004,"children":7005},{"class":592,"line":723},[7006,7010,7014],{"type":49,"tag":590,"props":7007,"children":7008},{"style":6968},[7009],{"type":55,"value":6343},{"type":49,"tag":590,"props":7011,"children":7012},{"style":603},[7013],{"type":55,"value":2509},{"type":49,"tag":590,"props":7015,"children":7016},{"style":634},[7017],{"type":55,"value":7018}," useful\n",{"type":49,"tag":590,"props":7020,"children":7021},{"class":592,"line":1001},[7022,7026,7030,7034,7039],{"type":49,"tag":590,"props":7023,"children":7024},{"style":6968},[7025],{"type":55,"value":6911},{"type":49,"tag":590,"props":7027,"children":7028},{"style":603},[7029],{"type":55,"value":2509},{"type":49,"tag":590,"props":7031,"children":7032},{"style":603},[7033],{"type":55,"value":670},{"type":49,"tag":590,"props":7035,"children":7036},{"style":634},[7037],{"type":55,"value":7038},"\u003CBASE_COMMIT>",{"type":49,"tag":590,"props":7040,"children":7041},{"style":603},[7042],{"type":55,"value":1099},{"type":49,"tag":590,"props":7044,"children":7045},{"class":592,"line":1010},[7046,7050,7054,7058,7062],{"type":49,"tag":590,"props":7047,"children":7048},{"style":6968},[7049],{"type":55,"value":6234},{"type":49,"tag":590,"props":7051,"children":7052},{"style":603},[7053],{"type":55,"value":2509},{"type":49,"tag":590,"props":7055,"children":7056},{"style":603},[7057],{"type":55,"value":670},{"type":49,"tag":590,"props":7059,"children":7060},{"style":634},[7061],{"type":55,"value":6251},{"type":49,"tag":590,"props":7063,"children":7064},{"style":603},[7065],{"type":55,"value":1099},{"type":49,"tag":590,"props":7067,"children":7068},{"class":592,"line":1019},[7069,7073,7077,7081,7085],{"type":49,"tag":590,"props":7070,"children":7071},{"style":6968},[7072],{"type":55,"value":6271},{"type":49,"tag":590,"props":7074,"children":7075},{"style":603},[7076],{"type":55,"value":2509},{"type":49,"tag":590,"props":7078,"children":7079},{"style":603},[7080],{"type":55,"value":670},{"type":49,"tag":590,"props":7082,"children":7083},{"style":634},[7084],{"type":55,"value":1999},{"type":49,"tag":590,"props":7086,"children":7087},{"style":603},[7088],{"type":55,"value":1099},{"type":49,"tag":590,"props":7090,"children":7091},{"class":592,"line":1079},[7092,7097,7101,7105,7109],{"type":49,"tag":590,"props":7093,"children":7094},{"style":6968},[7095],{"type":55,"value":7096},"remote",{"type":49,"tag":590,"props":7098,"children":7099},{"style":603},[7100],{"type":55,"value":2509},{"type":49,"tag":590,"props":7102,"children":7103},{"style":603},[7104],{"type":55,"value":670},{"type":49,"tag":590,"props":7106,"children":7107},{"style":634},[7108],{"type":55,"value":2519},{"type":49,"tag":590,"props":7110,"children":7111},{"style":603},[7112],{"type":55,"value":1099},{"type":49,"tag":590,"props":7114,"children":7115},{"class":592,"line":1102},[7116,7121],{"type":49,"tag":590,"props":7117,"children":7118},{"style":6968},[7119],{"type":55,"value":7120},"related_symbols",{"type":49,"tag":590,"props":7122,"children":7123},{"style":603},[7124],{"type":55,"value":7125},":\n",{"type":49,"tag":590,"props":7127,"children":7128},{"class":592,"line":1111},[7129,7134,7138,7142],{"type":49,"tag":590,"props":7130,"children":7131},{"style":603},[7132],{"type":55,"value":7133},"  -",{"type":49,"tag":590,"props":7135,"children":7136},{"style":603},[7137],{"type":55,"value":670},{"type":49,"tag":590,"props":7139,"children":7140},{"style":634},[7141],{"type":55,"value":6505},{"type":49,"tag":590,"props":7143,"children":7144},{"style":603},[7145],{"type":55,"value":1099},{"type":49,"tag":590,"props":7147,"children":7148},{"class":592,"line":1120},[7149,7154,7158],{"type":49,"tag":590,"props":7150,"children":7151},{"style":6968},[7152],{"type":55,"value":7153},"builds_on",{"type":49,"tag":590,"props":7155,"children":7156},{"style":603},[7157],{"type":55,"value":2509},{"type":49,"tag":590,"props":7159,"children":7160},{"style":603},[7161],{"type":55,"value":6778},{"type":49,"tag":590,"props":7163,"children":7164},{"class":592,"line":1129},[7165],{"type":49,"tag":590,"props":7166,"children":7167},{"style":603},[7168],{"type":55,"value":6962},{"type":49,"tag":590,"props":7170,"children":7171},{"class":592,"line":25},[7172],{"type":49,"tag":590,"props":7173,"children":7174},{"emptyLinePlaceholder":1133},[7175],{"type":55,"value":1136},{"type":49,"tag":590,"props":7177,"children":7178},{"class":592,"line":1147},[7179,7184],{"type":49,"tag":590,"props":7180,"children":7181},{"style":603},[7182],{"type":55,"value":7183},"# ",{"type":49,"tag":590,"props":7185,"children":7186},{"style":1037},[7187],{"type":55,"value":7188},"CSV Parser Edge Cases\n",{"type":49,"tag":590,"props":7190,"children":7191},{"class":592,"line":1198},[7192],{"type":49,"tag":590,"props":7193,"children":7194},{"emptyLinePlaceholder":1133},[7195],{"type":55,"value":1136},{"type":49,"tag":590,"props":7197,"children":7198},{"class":592,"line":1206},[7199,7204],{"type":49,"tag":590,"props":7200,"children":7201},{"style":603},[7202],{"type":55,"value":7203},"## ",{"type":49,"tag":590,"props":7205,"children":7206},{"style":1037},[7207],{"type":55,"value":7208},"Motivation\n",{"type":49,"tag":590,"props":7210,"children":7211},{"class":592,"line":1215},[7212],{"type":49,"tag":590,"props":7213,"children":7214},{"style":597},[7215],{"type":55,"value":7216},"\u003Ccite specific existing files\u002Fsymbols where gap was identified>\n",{"type":49,"tag":590,"props":7218,"children":7219},{"class":592,"line":1253},[7220],{"type":49,"tag":590,"props":7221,"children":7222},{"emptyLinePlaceholder":1133},[7223],{"type":55,"value":1136},{"type":49,"tag":590,"props":7225,"children":7226},{"class":592,"line":1262},[7227,7231],{"type":49,"tag":590,"props":7228,"children":7229},{"style":603},[7230],{"type":55,"value":7203},{"type":49,"tag":590,"props":7232,"children":7233},{"style":1037},[7234],{"type":55,"value":7235},"Compounding Delta\n",{"type":49,"tag":590,"props":7237,"children":7238},{"class":592,"line":1271},[7239],{"type":49,"tag":590,"props":7240,"children":7241},{"style":597},[7242],{"type":55,"value":7243},"\u003CONLY if parent_branch != main — what parent code was modified\u002Fextended>\n",{"type":49,"tag":590,"props":7245,"children":7246},{"class":592,"line":1280},[7247],{"type":49,"tag":590,"props":7248,"children":7249},{"emptyLinePlaceholder":1133},[7250],{"type":55,"value":1136},{"type":49,"tag":590,"props":7252,"children":7253},{"class":592,"line":1289},[7254,7258],{"type":49,"tag":590,"props":7255,"children":7256},{"style":603},[7257],{"type":55,"value":7203},{"type":49,"tag":590,"props":7259,"children":7260},{"style":1037},[7261],{"type":55,"value":7262},"Hypothesis\n",{"type":49,"tag":590,"props":7264,"children":7265},{"class":592,"line":1330},[7266],{"type":49,"tag":590,"props":7267,"children":7268},{"style":597},[7269],{"type":55,"value":7270},"\u003Cwhat we expected to learn>\n",{"type":49,"tag":590,"props":7272,"children":7273},{"class":592,"line":1338},[7274],{"type":49,"tag":590,"props":7275,"children":7276},{"emptyLinePlaceholder":1133},[7277],{"type":55,"value":1136},{"type":49,"tag":590,"props":7279,"children":7280},{"class":592,"line":1347},[7281,7285],{"type":49,"tag":590,"props":7282,"children":7283},{"style":603},[7284],{"type":55,"value":7203},{"type":49,"tag":590,"props":7286,"children":7287},{"style":1037},[7288],{"type":55,"value":7289},"Implementation\n",{"type":49,"tag":590,"props":7291,"children":7292},{"class":592,"line":1384},[7293],{"type":49,"tag":590,"props":7294,"children":7295},{"style":597},[7296],{"type":55,"value":7297},"\u003Ckey decisions, approach>\n",{"type":49,"tag":590,"props":7299,"children":7300},{"class":592,"line":1392},[7301],{"type":49,"tag":590,"props":7302,"children":7303},{"emptyLinePlaceholder":1133},[7304],{"type":55,"value":1136},{"type":49,"tag":590,"props":7306,"children":7307},{"class":592,"line":2138},[7308,7312],{"type":49,"tag":590,"props":7309,"children":7310},{"style":603},[7311],{"type":55,"value":7203},{"type":49,"tag":590,"props":7313,"children":7314},{"style":1037},[7315],{"type":55,"value":7316},"Commands Run\n",{"type":49,"tag":590,"props":7318,"children":7319},{"class":592,"line":2146},[7320],{"type":49,"tag":590,"props":7321,"children":7322},{"style":597},[7323],{"type":55,"value":7324},"\u003Cexact commands with exit codes>\n",{"type":49,"tag":590,"props":7326,"children":7327},{"class":592,"line":2155},[7328],{"type":49,"tag":590,"props":7329,"children":7330},{"emptyLinePlaceholder":1133},[7331],{"type":55,"value":1136},{"type":49,"tag":590,"props":7333,"children":7334},{"class":592,"line":2191},[7335,7339],{"type":49,"tag":590,"props":7336,"children":7337},{"style":603},[7338],{"type":55,"value":7203},{"type":49,"tag":590,"props":7340,"children":7341},{"style":1037},[7342],{"type":55,"value":7343},"Evaluation\n",{"type":49,"tag":590,"props":7345,"children":7346},{"class":592,"line":2225},[7347],{"type":49,"tag":590,"props":7348,"children":7349},{"style":597},[7350],{"type":55,"value":7351},"\u003Cresults, what worked\u002Fdidn't>\n",{"type":49,"tag":590,"props":7353,"children":7354},{"class":592,"line":2282},[7355],{"type":49,"tag":590,"props":7356,"children":7357},{"emptyLinePlaceholder":1133},[7358],{"type":55,"value":1136},{"type":49,"tag":590,"props":7360,"children":7361},{"class":592,"line":2325},[7362,7366],{"type":49,"tag":590,"props":7363,"children":7364},{"style":603},[7365],{"type":55,"value":7203},{"type":49,"tag":590,"props":7367,"children":7368},{"style":1037},[7369],{"type":55,"value":7370},"Takeaways\n",{"type":49,"tag":590,"props":7372,"children":7373},{"class":592,"line":2344},[7374],{"type":49,"tag":590,"props":7375,"children":7376},{"style":597},[7377],{"type":55,"value":7378},"\u003Clessons, gotchas>\n",{"type":49,"tag":590,"props":7380,"children":7381},{"class":592,"line":2404},[7382],{"type":49,"tag":590,"props":7383,"children":7384},{"emptyLinePlaceholder":1133},[7385],{"type":55,"value":1136},{"type":49,"tag":590,"props":7387,"children":7388},{"class":592,"line":2412},[7389,7393],{"type":49,"tag":590,"props":7390,"children":7391},{"style":603},[7392],{"type":55,"value":7203},{"type":49,"tag":590,"props":7394,"children":7395},{"style":1037},[7396],{"type":55,"value":7397},"Verdict Details\n",{"type":49,"tag":590,"props":7399,"children":7400},{"class":592,"line":2421},[7401],{"type":49,"tag":590,"props":7402,"children":7403},{"style":597},[7404],{"type":55,"value":7405},"\u003Cwhy useful\u002Fdead_end>\n",{"type":49,"tag":731,"props":7407,"children":7408},{},[7409,7430],{"type":49,"tag":735,"props":7410,"children":7411},{},[7412],{"type":49,"tag":739,"props":7413,"children":7414},{},[7415,7420,7425],{"type":49,"tag":743,"props":7416,"children":7417},{},[7418],{"type":55,"value":7419},"Field",{"type":49,"tag":743,"props":7421,"children":7422},{},[7423],{"type":55,"value":7424},"Required",{"type":49,"tag":743,"props":7426,"children":7427},{},[7428],{"type":55,"value":7429},"Values",{"type":49,"tag":759,"props":7431,"children":7432},{},[7433,7458,7478,7507,7527,7547,7572],{"type":49,"tag":739,"props":7434,"children":7435},{},[7436,7444,7449],{"type":49,"tag":766,"props":7437,"children":7438},{},[7439],{"type":49,"tag":105,"props":7440,"children":7442},{"className":7441},[],[7443],{"type":55,"value":6197},{"type":49,"tag":766,"props":7445,"children":7446},{},[7447],{"type":55,"value":7448},"yes",{"type":49,"tag":766,"props":7450,"children":7451},{},[7452],{"type":49,"tag":105,"props":7453,"children":7455},{"className":7454},[],[7456],{"type":55,"value":7457},"YYYYMMDD-HHMMSSZ-slug",{"type":49,"tag":739,"props":7459,"children":7460},{},[7461,7469,7473],{"type":49,"tag":766,"props":7462,"children":7463},{},[7464],{"type":49,"tag":105,"props":7465,"children":7467},{"className":7466},[],[7468],{"type":55,"value":4674},{"type":49,"tag":766,"props":7470,"children":7471},{},[7472],{"type":55,"value":7448},{"type":49,"tag":766,"props":7474,"children":7475},{},[7476],{"type":55,"value":7477},"one of the 6 categories",{"type":49,"tag":739,"props":7479,"children":7480},{},[7481,7489,7493],{"type":49,"tag":766,"props":7482,"children":7483},{},[7484],{"type":49,"tag":105,"props":7485,"children":7487},{"className":7486},[],[7488],{"type":55,"value":6343},{"type":49,"tag":766,"props":7490,"children":7491},{},[7492],{"type":55,"value":7448},{"type":49,"tag":766,"props":7494,"children":7495},{},[7496,7501,7502],{"type":49,"tag":105,"props":7497,"children":7499},{"className":7498},[],[7500],{"type":55,"value":6360},{"type":55,"value":379},{"type":49,"tag":105,"props":7503,"children":7505},{"className":7504},[],[7506],{"type":55,"value":4132},{"type":49,"tag":739,"props":7508,"children":7509},{},[7510,7518,7522],{"type":49,"tag":766,"props":7511,"children":7512},{},[7513],{"type":49,"tag":105,"props":7514,"children":7516},{"className":7515},[],[7517],{"type":55,"value":6911},{"type":49,"tag":766,"props":7519,"children":7520},{},[7521],{"type":55,"value":7448},{"type":49,"tag":766,"props":7523,"children":7524},{},[7525],{"type":55,"value":7526},"SHA branched from",{"type":49,"tag":739,"props":7528,"children":7529},{},[7530,7538,7542],{"type":49,"tag":766,"props":7531,"children":7532},{},[7533],{"type":49,"tag":105,"props":7534,"children":7536},{"className":7535},[],[7537],{"type":55,"value":6234},{"type":49,"tag":766,"props":7539,"children":7540},{},[7541],{"type":55,"value":7448},{"type":49,"tag":766,"props":7543,"children":7544},{},[7545],{"type":55,"value":7546},"full branch name",{"type":49,"tag":739,"props":7548,"children":7549},{},[7550,7558,7562],{"type":49,"tag":766,"props":7551,"children":7552},{},[7553],{"type":49,"tag":105,"props":7554,"children":7556},{"className":7555},[],[7557],{"type":55,"value":6271},{"type":49,"tag":766,"props":7559,"children":7560},{},[7561],{"type":55,"value":7448},{"type":49,"tag":766,"props":7563,"children":7564},{},[7565,7570],{"type":49,"tag":105,"props":7566,"children":7568},{"className":7567},[],[7569],{"type":55,"value":1999},{"type":55,"value":7571}," or prior branch path",{"type":49,"tag":739,"props":7573,"children":7574},{},[7575,7583,7587],{"type":49,"tag":766,"props":7576,"children":7577},{},[7578],{"type":49,"tag":105,"props":7579,"children":7581},{"className":7580},[],[7582],{"type":55,"value":7120},{"type":49,"tag":766,"props":7584,"children":7585},{},[7586],{"type":55,"value":7448},{"type":49,"tag":766,"props":7588,"children":7589},{},[7590,7595],{"type":49,"tag":105,"props":7591,"children":7593},{"className":7592},[],[7594],{"type":55,"value":6802},{"type":55,"value":7596}," refs",{"type":49,"tag":58,"props":7598,"children":7599},{},[7600,7611,7613,7619,7621,7626],{"type":49,"tag":64,"props":7601,"children":7602},{},[7603,7609],{"type":49,"tag":105,"props":7604,"children":7606},{"className":7605},[],[7607],{"type":55,"value":7608},"tip_commit",{"type":55,"value":7610}," is NOT in the report.",{"type":55,"value":7612}," Including the final commit SHA\ncreates a chicken-and-egg problem (SHA changes when report is committed).\nThe reconciler derives it via ",{"type":49,"tag":105,"props":7614,"children":7616},{"className":7615},[],[7617],{"type":55,"value":7618},"git rev-parse origin\u002F$BRANCH",{"type":55,"value":7620}," and records\nit in ",{"type":49,"tag":105,"props":7622,"children":7624},{"className":7623},[],[7625],{"type":55,"value":4153},{"type":55,"value":84},{"type":49,"tag":58,"props":7628,"children":7629},{},[7630,7635],{"type":49,"tag":64,"props":7631,"children":7632},{},[7633],{"type":55,"value":7634},"Verdict",{"type":55,"value":7636}," is the agent's assessment (set once, immutable):",{"type":49,"tag":212,"props":7638,"children":7639},{},[7640,7650],{"type":49,"tag":216,"props":7641,"children":7642},{},[7643,7648],{"type":49,"tag":105,"props":7644,"children":7646},{"className":7645},[],[7647],{"type":55,"value":6360},{"type":55,"value":7649}," — produced actionable findings, working code, or valuable lessons",{"type":49,"tag":216,"props":7651,"children":7652},{},[7653,7658],{"type":49,"tag":105,"props":7654,"children":7656},{"className":7655},[],[7657],{"type":55,"value":4132},{"type":55,"value":7659}," — approach doesn't work; documented why so future dreams skip",{"type":49,"tag":98,"props":7661,"children":7663},{"id":7662},"validate-commit-push",[7664],{"type":55,"value":7665},"Validate, Commit, Push",{"type":49,"tag":200,"props":7667,"children":7669},{"className":582,"code":7668,"language":584,"meta":208,"style":208},"cd \"$WORKTREE_DIR\"\n\n# 1. Generate diff (exclude .shadow\u002F and common build artifacts)\ngit add -A -- ':!.dream_parent' ':!__pycache__\u002F' ':!.pytest_cache\u002F'\ngit commit -m \"dream: $SLUG\"\nmkdir -p .shadow\u002F_dreams\u002F\"$DREAM_ID\"\ngit diff \"$BASE_COMMIT\" HEAD -- \\\n    ':!.shadow\u002F' ':!__pycache__\u002F' ':!*.pyc' ':!.pytest_cache\u002F' \\\n    ':!node_modules\u002F' ':!*.lock' ':!dist\u002F' ':!build\u002F' \\\n    > .shadow\u002F_dreams\u002F\"$DREAM_ID\"\u002Fpatch.diff\n[ ! -s .shadow\u002F_dreams\u002F\"$DREAM_ID\"\u002Fpatch.diff ] && echo \"WARNING: Empty diff\"\n\n# 2. Validate (hard gate — must pass before push)\nVALIDATE_SCRIPT=\"\"\nfor DIR in .github\u002Fskills\u002Fshadow-frog-dream .claude\u002Fskills\u002Fshadow-frog-dream; do\n    [ -f \"$DIR\u002Fdream-validate.py\" ] && VALIDATE_SCRIPT=\"$DIR\u002Fdream-validate.py\" && break\ndone\nif [ -n \"$VALIDATE_SCRIPT\" ]; then\n    python3 \"$VALIDATE_SCRIPT\" \"$DREAM_ID\" \"$WORKTREE_DIR\" || {\n        # If validate fails: read the script to understand what checks failed,\n        # fix the issues it reports, then re-run. The script checks artifact\n        # structure, manifest schema, and report frontmatter.\n        echo \"FIX ERRORS\"; exit 1\n    }\nelse\n    # Script not found — inline fallback (minimal checks)\n    [ ! -d \".shadow\u002F_dreams\u002F$DREAM_ID\" ] && echo \"ERROR: Missing dir\" && exit 1\n    for F in report.md manifest.json patch.diff; do\n        [ ! -f \".shadow\u002F_dreams\u002F$DREAM_ID\u002F$F\" ] && echo \"ERROR: Missing $F\" && exit 1\n    done\nfi\n\n# 3. Final commit and push\ngit add -A -- ':!.dream_parent'\ngit commit -m \"dream: $SLUG — final with report and manifest\"\nif git push origin \"$BRANCH_NAME\"; then\n    echo \"Pushed: $BRANCH_NAME\"\nelse\n    echo \"ERROR: Push failed. Keep worktree for recovery.\"\n    exit 1\nfi\n",[7670],{"type":49,"tag":105,"props":7671,"children":7672},{"__ignoreMap":208},[7673,7692,7699,7707,7769,7804,7832,7868,7926,7985,8014,8077,8084,8092,8108,8139,8207,8214,8250,8303,8311,8319,8327,8359,8366,8373,8381,8450,8490,8572,8580,8587,8594,8602,8633,8669,8710,8734,8741,8761,8773],{"type":49,"tag":590,"props":7674,"children":7675},{"class":592,"line":593},[7676,7680,7684,7688],{"type":49,"tag":590,"props":7677,"children":7678},{"style":1067},[7679],{"type":55,"value":1463},{"type":49,"tag":590,"props":7681,"children":7682},{"style":603},[7683],{"type":55,"value":670},{"type":49,"tag":590,"props":7685,"children":7686},{"style":597},[7687],{"type":55,"value":1191},{"type":49,"tag":590,"props":7689,"children":7690},{"style":603},[7691],{"type":55,"value":1099},{"type":49,"tag":590,"props":7693,"children":7694},{"class":592,"line":614},[7695],{"type":49,"tag":590,"props":7696,"children":7697},{"emptyLinePlaceholder":1133},[7698],{"type":55,"value":1136},{"type":49,"tag":590,"props":7700,"children":7701},{"class":592,"line":29},[7702],{"type":49,"tag":590,"props":7703,"children":7704},{"style":971},[7705],{"type":55,"value":7706},"# 1. Generate diff (exclude .shadow\u002F and common build artifacts)\n",{"type":49,"tag":590,"props":7708,"children":7709},{"class":592,"line":723},[7710,7714,7719,7724,7729,7733,7738,7742,7746,7751,7755,7759,7764],{"type":49,"tag":590,"props":7711,"children":7712},{"style":1037},[7713],{"type":55,"value":1440},{"type":49,"tag":590,"props":7715,"children":7716},{"style":634},[7717],{"type":55,"value":7718}," add",{"type":49,"tag":590,"props":7720,"children":7721},{"style":634},[7722],{"type":55,"value":7723}," -A",{"type":49,"tag":590,"props":7725,"children":7726},{"style":634},[7727],{"type":55,"value":7728}," --",{"type":49,"tag":590,"props":7730,"children":7731},{"style":603},[7732],{"type":55,"value":1675},{"type":49,"tag":590,"props":7734,"children":7735},{"style":634},[7736],{"type":55,"value":7737},":!.dream_parent",{"type":49,"tag":590,"props":7739,"children":7740},{"style":603},[7741],{"type":55,"value":1685},{"type":49,"tag":590,"props":7743,"children":7744},{"style":603},[7745],{"type":55,"value":1675},{"type":49,"tag":590,"props":7747,"children":7748},{"style":634},[7749],{"type":55,"value":7750},":!__pycache__\u002F",{"type":49,"tag":590,"props":7752,"children":7753},{"style":603},[7754],{"type":55,"value":1685},{"type":49,"tag":590,"props":7756,"children":7757},{"style":603},[7758],{"type":55,"value":1675},{"type":49,"tag":590,"props":7760,"children":7761},{"style":634},[7762],{"type":55,"value":7763},":!.pytest_cache\u002F",{"type":49,"tag":590,"props":7765,"children":7766},{"style":603},[7767],{"type":55,"value":7768},"'\n",{"type":49,"tag":590,"props":7770,"children":7771},{"class":592,"line":1001},[7772,7776,7781,7786,7790,7795,7800],{"type":49,"tag":590,"props":7773,"children":7774},{"style":1037},[7775],{"type":55,"value":1440},{"type":49,"tag":590,"props":7777,"children":7778},{"style":634},[7779],{"type":55,"value":7780}," commit",{"type":49,"tag":590,"props":7782,"children":7783},{"style":634},[7784],{"type":55,"value":7785}," -m",{"type":49,"tag":590,"props":7787,"children":7788},{"style":603},[7789],{"type":55,"value":670},{"type":49,"tag":590,"props":7791,"children":7792},{"style":634},[7793],{"type":55,"value":7794},"dream: ",{"type":49,"tag":590,"props":7796,"children":7797},{"style":597},[7798],{"type":55,"value":7799},"$SLUG",{"type":49,"tag":590,"props":7801,"children":7802},{"style":603},[7803],{"type":55,"value":1099},{"type":49,"tag":590,"props":7805,"children":7806},{"class":592,"line":1010},[7807,7811,7815,7820,7824,7828],{"type":49,"tag":590,"props":7808,"children":7809},{"style":1037},[7810],{"type":55,"value":2331},{"type":49,"tag":590,"props":7812,"children":7813},{"style":634},[7814],{"type":55,"value":2336},{"type":49,"tag":590,"props":7816,"children":7817},{"style":634},[7818],{"type":55,"value":7819}," .shadow\u002F_dreams\u002F",{"type":49,"tag":590,"props":7821,"children":7822},{"style":603},[7823],{"type":55,"value":680},{"type":49,"tag":590,"props":7825,"children":7826},{"style":597},[7827],{"type":55,"value":1178},{"type":49,"tag":590,"props":7829,"children":7830},{"style":603},[7831],{"type":55,"value":1099},{"type":49,"tag":590,"props":7833,"children":7834},{"class":592,"line":1019},[7835,7839,7843,7847,7852,7856,7860,7864],{"type":49,"tag":590,"props":7836,"children":7837},{"style":1037},[7838],{"type":55,"value":1440},{"type":49,"tag":590,"props":7840,"children":7841},{"style":634},[7842],{"type":55,"value":2354},{"type":49,"tag":590,"props":7844,"children":7845},{"style":603},[7846],{"type":55,"value":670},{"type":49,"tag":590,"props":7848,"children":7849},{"style":597},[7850],{"type":55,"value":7851},"$BASE_COMMIT",{"type":49,"tag":590,"props":7853,"children":7854},{"style":603},[7855],{"type":55,"value":680},{"type":49,"tag":590,"props":7857,"children":7858},{"style":634},[7859],{"type":55,"value":2245},{"type":49,"tag":590,"props":7861,"children":7862},{"style":634},[7863],{"type":55,"value":7728},{"type":49,"tag":590,"props":7865,"children":7866},{"style":597},[7867],{"type":55,"value":3538},{"type":49,"tag":590,"props":7869,"children":7870},{"class":592,"line":1079},[7871,7876,7881,7885,7889,7893,7897,7901,7906,7910,7914,7918,7922],{"type":49,"tag":590,"props":7872,"children":7873},{"style":603},[7874],{"type":55,"value":7875},"    '",{"type":49,"tag":590,"props":7877,"children":7878},{"style":634},[7879],{"type":55,"value":7880},":!.shadow\u002F",{"type":49,"tag":590,"props":7882,"children":7883},{"style":603},[7884],{"type":55,"value":1685},{"type":49,"tag":590,"props":7886,"children":7887},{"style":603},[7888],{"type":55,"value":1675},{"type":49,"tag":590,"props":7890,"children":7891},{"style":634},[7892],{"type":55,"value":7750},{"type":49,"tag":590,"props":7894,"children":7895},{"style":603},[7896],{"type":55,"value":1685},{"type":49,"tag":590,"props":7898,"children":7899},{"style":603},[7900],{"type":55,"value":1675},{"type":49,"tag":590,"props":7902,"children":7903},{"style":634},[7904],{"type":55,"value":7905},":!*.pyc",{"type":49,"tag":590,"props":7907,"children":7908},{"style":603},[7909],{"type":55,"value":1685},{"type":49,"tag":590,"props":7911,"children":7912},{"style":603},[7913],{"type":55,"value":1675},{"type":49,"tag":590,"props":7915,"children":7916},{"style":634},[7917],{"type":55,"value":7763},{"type":49,"tag":590,"props":7919,"children":7920},{"style":603},[7921],{"type":55,"value":1685},{"type":49,"tag":590,"props":7923,"children":7924},{"style":597},[7925],{"type":55,"value":3538},{"type":49,"tag":590,"props":7927,"children":7928},{"class":592,"line":1102},[7929,7933,7938,7942,7946,7951,7955,7959,7964,7968,7972,7977,7981],{"type":49,"tag":590,"props":7930,"children":7931},{"style":603},[7932],{"type":55,"value":7875},{"type":49,"tag":590,"props":7934,"children":7935},{"style":634},[7936],{"type":55,"value":7937},":!node_modules\u002F",{"type":49,"tag":590,"props":7939,"children":7940},{"style":603},[7941],{"type":55,"value":1685},{"type":49,"tag":590,"props":7943,"children":7944},{"style":603},[7945],{"type":55,"value":1675},{"type":49,"tag":590,"props":7947,"children":7948},{"style":634},[7949],{"type":55,"value":7950},":!*.lock",{"type":49,"tag":590,"props":7952,"children":7953},{"style":603},[7954],{"type":55,"value":1685},{"type":49,"tag":590,"props":7956,"children":7957},{"style":603},[7958],{"type":55,"value":1675},{"type":49,"tag":590,"props":7960,"children":7961},{"style":634},[7962],{"type":55,"value":7963},":!dist\u002F",{"type":49,"tag":590,"props":7965,"children":7966},{"style":603},[7967],{"type":55,"value":1685},{"type":49,"tag":590,"props":7969,"children":7970},{"style":603},[7971],{"type":55,"value":1675},{"type":49,"tag":590,"props":7973,"children":7974},{"style":634},[7975],{"type":55,"value":7976},":!build\u002F",{"type":49,"tag":590,"props":7978,"children":7979},{"style":603},[7980],{"type":55,"value":1685},{"type":49,"tag":590,"props":7982,"children":7983},{"style":597},[7984],{"type":55,"value":3538},{"type":49,"tag":590,"props":7986,"children":7987},{"class":592,"line":1111},[7988,7993,7997,8001,8005,8009],{"type":49,"tag":590,"props":7989,"children":7990},{"style":603},[7991],{"type":55,"value":7992},"    >",{"type":49,"tag":590,"props":7994,"children":7995},{"style":634},[7996],{"type":55,"value":7819},{"type":49,"tag":590,"props":7998,"children":7999},{"style":603},[8000],{"type":55,"value":680},{"type":49,"tag":590,"props":8002,"children":8003},{"style":597},[8004],{"type":55,"value":1178},{"type":49,"tag":590,"props":8006,"children":8007},{"style":603},[8008],{"type":55,"value":680},{"type":49,"tag":590,"props":8010,"children":8011},{"style":634},[8012],{"type":55,"value":8013},"\u002Fpatch.diff\n",{"type":49,"tag":590,"props":8015,"children":8016},{"class":592,"line":1120},[8017,8021,8026,8031,8035,8039,8043,8047,8052,8056,8060,8064,8068,8073],{"type":49,"tag":590,"props":8018,"children":8019},{"style":603},[8020],{"type":55,"value":1774},{"type":49,"tag":590,"props":8022,"children":8023},{"style":603},[8024],{"type":55,"value":8025}," !",{"type":49,"tag":590,"props":8027,"children":8028},{"style":603},[8029],{"type":55,"value":8030}," -s",{"type":49,"tag":590,"props":8032,"children":8033},{"style":597},[8034],{"type":55,"value":7819},{"type":49,"tag":590,"props":8036,"children":8037},{"style":603},[8038],{"type":55,"value":680},{"type":49,"tag":590,"props":8040,"children":8041},{"style":597},[8042],{"type":55,"value":1178},{"type":49,"tag":590,"props":8044,"children":8045},{"style":603},[8046],{"type":55,"value":680},{"type":49,"tag":590,"props":8048,"children":8049},{"style":597},[8050],{"type":55,"value":8051},"\u002Fpatch.diff ",{"type":49,"tag":590,"props":8053,"children":8054},{"style":603},[8055],{"type":55,"value":2301},{"type":49,"tag":590,"props":8057,"children":8058},{"style":603},[8059],{"type":55,"value":690},{"type":49,"tag":590,"props":8061,"children":8062},{"style":1067},[8063],{"type":55,"value":1804},{"type":49,"tag":590,"props":8065,"children":8066},{"style":603},[8067],{"type":55,"value":670},{"type":49,"tag":590,"props":8069,"children":8070},{"style":634},[8071],{"type":55,"value":8072},"WARNING: Empty diff",{"type":49,"tag":590,"props":8074,"children":8075},{"style":603},[8076],{"type":55,"value":1099},{"type":49,"tag":590,"props":8078,"children":8079},{"class":592,"line":1129},[8080],{"type":49,"tag":590,"props":8081,"children":8082},{"emptyLinePlaceholder":1133},[8083],{"type":55,"value":1136},{"type":49,"tag":590,"props":8085,"children":8086},{"class":592,"line":25},[8087],{"type":49,"tag":590,"props":8088,"children":8089},{"style":971},[8090],{"type":55,"value":8091},"# 2. Validate (hard gate — must pass before push)\n",{"type":49,"tag":590,"props":8093,"children":8094},{"class":592,"line":1147},[8095,8100,8104],{"type":49,"tag":590,"props":8096,"children":8097},{"style":597},[8098],{"type":55,"value":8099},"VALIDATE_SCRIPT",{"type":49,"tag":590,"props":8101,"children":8102},{"style":603},[8103],{"type":55,"value":606},{"type":49,"tag":590,"props":8105,"children":8106},{"style":603},[8107],{"type":55,"value":611},{"type":49,"tag":590,"props":8109,"children":8110},{"class":592,"line":1198},[8111,8115,8119,8123,8127,8131,8135],{"type":49,"tag":590,"props":8112,"children":8113},{"style":618},[8114],{"type":55,"value":621},{"type":49,"tag":590,"props":8116,"children":8117},{"style":597},[8118],{"type":55,"value":626},{"type":49,"tag":590,"props":8120,"children":8121},{"style":618},[8122],{"type":55,"value":631},{"type":49,"tag":590,"props":8124,"children":8125},{"style":634},[8126],{"type":55,"value":637},{"type":49,"tag":590,"props":8128,"children":8129},{"style":634},[8130],{"type":55,"value":642},{"type":49,"tag":590,"props":8132,"children":8133},{"style":603},[8134],{"type":55,"value":647},{"type":49,"tag":590,"props":8136,"children":8137},{"style":618},[8138],{"type":55,"value":652},{"type":49,"tag":590,"props":8140,"children":8141},{"class":592,"line":1206},[8142,8146,8150,8154,8158,8162,8166,8170,8174,8179,8183,8187,8191,8195,8199,8203],{"type":49,"tag":590,"props":8143,"children":8144},{"style":603},[8145],{"type":55,"value":660},{"type":49,"tag":590,"props":8147,"children":8148},{"style":603},[8149],{"type":55,"value":1549},{"type":49,"tag":590,"props":8151,"children":8152},{"style":603},[8153],{"type":55,"value":670},{"type":49,"tag":590,"props":8155,"children":8156},{"style":597},[8157],{"type":55,"value":675},{"type":49,"tag":590,"props":8159,"children":8160},{"style":634},[8161],{"type":55,"value":1165},{"type":49,"tag":590,"props":8163,"children":8164},{"style":603},[8165],{"type":55,"value":680},{"type":49,"tag":590,"props":8167,"children":8168},{"style":603},[8169],{"type":55,"value":685},{"type":49,"tag":590,"props":8171,"children":8172},{"style":603},[8173],{"type":55,"value":690},{"type":49,"tag":590,"props":8175,"children":8176},{"style":597},[8177],{"type":55,"value":8178}," VALIDATE_SCRIPT",{"type":49,"tag":590,"props":8180,"children":8181},{"style":603},[8182],{"type":55,"value":606},{"type":49,"tag":590,"props":8184,"children":8185},{"style":603},[8186],{"type":55,"value":680},{"type":49,"tag":590,"props":8188,"children":8189},{"style":597},[8190],{"type":55,"value":675},{"type":49,"tag":590,"props":8192,"children":8193},{"style":634},[8194],{"type":55,"value":1165},{"type":49,"tag":590,"props":8196,"children":8197},{"style":603},[8198],{"type":55,"value":680},{"type":49,"tag":590,"props":8200,"children":8201},{"style":603},[8202],{"type":55,"value":690},{"type":49,"tag":590,"props":8204,"children":8205},{"style":618},[8206],{"type":55,"value":720},{"type":49,"tag":590,"props":8208,"children":8209},{"class":592,"line":1215},[8210],{"type":49,"tag":590,"props":8211,"children":8212},{"style":618},[8213],{"type":55,"value":729},{"type":49,"tag":590,"props":8215,"children":8216},{"class":592,"line":1253},[8217,8221,8225,8229,8233,8238,8242,8246],{"type":49,"tag":590,"props":8218,"children":8219},{"style":618},[8220],{"type":55,"value":1498},{"type":49,"tag":590,"props":8222,"children":8223},{"style":603},[8224],{"type":55,"value":1503},{"type":49,"tag":590,"props":8226,"children":8227},{"style":603},[8228],{"type":55,"value":1779},{"type":49,"tag":590,"props":8230,"children":8231},{"style":603},[8232],{"type":55,"value":670},{"type":49,"tag":590,"props":8234,"children":8235},{"style":597},[8236],{"type":55,"value":8237},"$VALIDATE_SCRIPT",{"type":49,"tag":590,"props":8239,"children":8240},{"style":603},[8241],{"type":55,"value":680},{"type":49,"tag":590,"props":8243,"children":8244},{"style":603},[8245],{"type":55,"value":1527},{"type":49,"tag":590,"props":8247,"children":8248},{"style":618},[8249],{"type":55,"value":1532},{"type":49,"tag":590,"props":8251,"children":8252},{"class":592,"line":1262},[8253,8258,8262,8266,8270,8274,8278,8282,8286,8290,8294,8298],{"type":49,"tag":590,"props":8254,"children":8255},{"style":1037},[8256],{"type":55,"value":8257},"    python3",{"type":49,"tag":590,"props":8259,"children":8260},{"style":603},[8261],{"type":55,"value":670},{"type":49,"tag":590,"props":8263,"children":8264},{"style":597},[8265],{"type":55,"value":8237},{"type":49,"tag":590,"props":8267,"children":8268},{"style":603},[8269],{"type":55,"value":680},{"type":49,"tag":590,"props":8271,"children":8272},{"style":603},[8273],{"type":55,"value":670},{"type":49,"tag":590,"props":8275,"children":8276},{"style":597},[8277],{"type":55,"value":1178},{"type":49,"tag":590,"props":8279,"children":8280},{"style":603},[8281],{"type":55,"value":680},{"type":49,"tag":590,"props":8283,"children":8284},{"style":603},[8285],{"type":55,"value":670},{"type":49,"tag":590,"props":8287,"children":8288},{"style":597},[8289],{"type":55,"value":1191},{"type":49,"tag":590,"props":8291,"children":8292},{"style":603},[8293],{"type":55,"value":680},{"type":49,"tag":590,"props":8295,"children":8296},{"style":603},[8297],{"type":55,"value":1064},{"type":49,"tag":590,"props":8299,"children":8300},{"style":603},[8301],{"type":55,"value":8302}," {\n",{"type":49,"tag":590,"props":8304,"children":8305},{"class":592,"line":1271},[8306],{"type":49,"tag":590,"props":8307,"children":8308},{"style":971},[8309],{"type":55,"value":8310},"        # If validate fails: read the script to understand what checks failed,\n",{"type":49,"tag":590,"props":8312,"children":8313},{"class":592,"line":1280},[8314],{"type":49,"tag":590,"props":8315,"children":8316},{"style":971},[8317],{"type":55,"value":8318},"        # fix the issues it reports, then re-run. The script checks artifact\n",{"type":49,"tag":590,"props":8320,"children":8321},{"class":592,"line":1289},[8322],{"type":49,"tag":590,"props":8323,"children":8324},{"style":971},[8325],{"type":55,"value":8326},"        # structure, manifest schema, and report frontmatter.\n",{"type":49,"tag":590,"props":8328,"children":8329},{"class":592,"line":1330},[8330,8334,8338,8343,8347,8351,8355],{"type":49,"tag":590,"props":8331,"children":8332},{"style":1067},[8333],{"type":55,"value":2083},{"type":49,"tag":590,"props":8335,"children":8336},{"style":603},[8337],{"type":55,"value":670},{"type":49,"tag":590,"props":8339,"children":8340},{"style":634},[8341],{"type":55,"value":8342},"FIX ERRORS",{"type":49,"tag":590,"props":8344,"children":8345},{"style":603},[8346],{"type":55,"value":680},{"type":49,"tag":590,"props":8348,"children":8349},{"style":603},[8350],{"type":55,"value":647},{"type":49,"tag":590,"props":8352,"children":8353},{"style":1067},[8354],{"type":55,"value":1070},{"type":49,"tag":590,"props":8356,"children":8357},{"style":1073},[8358],{"type":55,"value":1076},{"type":49,"tag":590,"props":8360,"children":8361},{"class":592,"line":1338},[8362],{"type":49,"tag":590,"props":8363,"children":8364},{"style":603},[8365],{"type":55,"value":6745},{"type":49,"tag":590,"props":8367,"children":8368},{"class":592,"line":1347},[8369],{"type":49,"tag":590,"props":8370,"children":8371},{"style":618},[8372],{"type":55,"value":2982},{"type":49,"tag":590,"props":8374,"children":8375},{"class":592,"line":1384},[8376],{"type":49,"tag":590,"props":8377,"children":8378},{"style":971},[8379],{"type":55,"value":8380},"    # Script not found — inline fallback (minimal checks)\n",{"type":49,"tag":590,"props":8382,"children":8383},{"class":592,"line":1392},[8384,8388,8392,8396,8400,8405,8409,8413,8417,8421,8425,8429,8434,8438,8442,8446],{"type":49,"tag":590,"props":8385,"children":8386},{"style":603},[8387],{"type":55,"value":660},{"type":49,"tag":590,"props":8389,"children":8390},{"style":603},[8391],{"type":55,"value":8025},{"type":49,"tag":590,"props":8393,"children":8394},{"style":603},[8395],{"type":55,"value":665},{"type":49,"tag":590,"props":8397,"children":8398},{"style":603},[8399],{"type":55,"value":670},{"type":49,"tag":590,"props":8401,"children":8402},{"style":634},[8403],{"type":55,"value":8404},".shadow\u002F_dreams\u002F",{"type":49,"tag":590,"props":8406,"children":8407},{"style":597},[8408],{"type":55,"value":1178},{"type":49,"tag":590,"props":8410,"children":8411},{"style":603},[8412],{"type":55,"value":680},{"type":49,"tag":590,"props":8414,"children":8415},{"style":603},[8416],{"type":55,"value":685},{"type":49,"tag":590,"props":8418,"children":8419},{"style":603},[8420],{"type":55,"value":690},{"type":49,"tag":590,"props":8422,"children":8423},{"style":1067},[8424],{"type":55,"value":1804},{"type":49,"tag":590,"props":8426,"children":8427},{"style":603},[8428],{"type":55,"value":670},{"type":49,"tag":590,"props":8430,"children":8431},{"style":634},[8432],{"type":55,"value":8433},"ERROR: Missing dir",{"type":49,"tag":590,"props":8435,"children":8436},{"style":603},[8437],{"type":55,"value":680},{"type":49,"tag":590,"props":8439,"children":8440},{"style":603},[8441],{"type":55,"value":690},{"type":49,"tag":590,"props":8443,"children":8444},{"style":1067},[8445],{"type":55,"value":1070},{"type":49,"tag":590,"props":8447,"children":8448},{"style":1073},[8449],{"type":55,"value":1076},{"type":49,"tag":590,"props":8451,"children":8452},{"class":592,"line":2138},[8453,8458,8463,8467,8472,8477,8482,8486],{"type":49,"tag":590,"props":8454,"children":8455},{"style":618},[8456],{"type":55,"value":8457},"    for",{"type":49,"tag":590,"props":8459,"children":8460},{"style":597},[8461],{"type":55,"value":8462}," F ",{"type":49,"tag":590,"props":8464,"children":8465},{"style":618},[8466],{"type":55,"value":631},{"type":49,"tag":590,"props":8468,"children":8469},{"style":634},[8470],{"type":55,"value":8471}," report.md",{"type":49,"tag":590,"props":8473,"children":8474},{"style":634},[8475],{"type":55,"value":8476}," manifest.json",{"type":49,"tag":590,"props":8478,"children":8479},{"style":634},[8480],{"type":55,"value":8481}," patch.diff",{"type":49,"tag":590,"props":8483,"children":8484},{"style":603},[8485],{"type":55,"value":647},{"type":49,"tag":590,"props":8487,"children":8488},{"style":618},[8489],{"type":55,"value":652},{"type":49,"tag":590,"props":8491,"children":8492},{"class":592,"line":2146},[8493,8498,8502,8506,8510,8514,8518,8522,8527,8531,8535,8539,8543,8547,8552,8556,8560,8564,8568],{"type":49,"tag":590,"props":8494,"children":8495},{"style":603},[8496],{"type":55,"value":8497},"        [",{"type":49,"tag":590,"props":8499,"children":8500},{"style":603},[8501],{"type":55,"value":8025},{"type":49,"tag":590,"props":8503,"children":8504},{"style":603},[8505],{"type":55,"value":1549},{"type":49,"tag":590,"props":8507,"children":8508},{"style":603},[8509],{"type":55,"value":670},{"type":49,"tag":590,"props":8511,"children":8512},{"style":634},[8513],{"type":55,"value":8404},{"type":49,"tag":590,"props":8515,"children":8516},{"style":597},[8517],{"type":55,"value":1178},{"type":49,"tag":590,"props":8519,"children":8520},{"style":634},[8521],{"type":55,"value":2524},{"type":49,"tag":590,"props":8523,"children":8524},{"style":597},[8525],{"type":55,"value":8526},"$F",{"type":49,"tag":590,"props":8528,"children":8529},{"style":603},[8530],{"type":55,"value":680},{"type":49,"tag":590,"props":8532,"children":8533},{"style":603},[8534],{"type":55,"value":685},{"type":49,"tag":590,"props":8536,"children":8537},{"style":603},[8538],{"type":55,"value":690},{"type":49,"tag":590,"props":8540,"children":8541},{"style":1067},[8542],{"type":55,"value":1804},{"type":49,"tag":590,"props":8544,"children":8545},{"style":603},[8546],{"type":55,"value":670},{"type":49,"tag":590,"props":8548,"children":8549},{"style":634},[8550],{"type":55,"value":8551},"ERROR: Missing ",{"type":49,"tag":590,"props":8553,"children":8554},{"style":597},[8555],{"type":55,"value":8526},{"type":49,"tag":590,"props":8557,"children":8558},{"style":603},[8559],{"type":55,"value":680},{"type":49,"tag":590,"props":8561,"children":8562},{"style":603},[8563],{"type":55,"value":690},{"type":49,"tag":590,"props":8565,"children":8566},{"style":1067},[8567],{"type":55,"value":1070},{"type":49,"tag":590,"props":8569,"children":8570},{"style":1073},[8571],{"type":55,"value":1076},{"type":49,"tag":590,"props":8573,"children":8574},{"class":592,"line":2155},[8575],{"type":49,"tag":590,"props":8576,"children":8577},{"style":618},[8578],{"type":55,"value":8579},"    done\n",{"type":49,"tag":590,"props":8581,"children":8582},{"class":592,"line":2191},[8583],{"type":49,"tag":590,"props":8584,"children":8585},{"style":618},[8586],{"type":55,"value":1766},{"type":49,"tag":590,"props":8588,"children":8589},{"class":592,"line":2225},[8590],{"type":49,"tag":590,"props":8591,"children":8592},{"emptyLinePlaceholder":1133},[8593],{"type":55,"value":1136},{"type":49,"tag":590,"props":8595,"children":8596},{"class":592,"line":2282},[8597],{"type":49,"tag":590,"props":8598,"children":8599},{"style":971},[8600],{"type":55,"value":8601},"# 3. Final commit and push\n",{"type":49,"tag":590,"props":8603,"children":8604},{"class":592,"line":2325},[8605,8609,8613,8617,8621,8625,8629],{"type":49,"tag":590,"props":8606,"children":8607},{"style":1037},[8608],{"type":55,"value":1440},{"type":49,"tag":590,"props":8610,"children":8611},{"style":634},[8612],{"type":55,"value":7718},{"type":49,"tag":590,"props":8614,"children":8615},{"style":634},[8616],{"type":55,"value":7723},{"type":49,"tag":590,"props":8618,"children":8619},{"style":634},[8620],{"type":55,"value":7728},{"type":49,"tag":590,"props":8622,"children":8623},{"style":603},[8624],{"type":55,"value":1675},{"type":49,"tag":590,"props":8626,"children":8627},{"style":634},[8628],{"type":55,"value":7737},{"type":49,"tag":590,"props":8630,"children":8631},{"style":603},[8632],{"type":55,"value":7768},{"type":49,"tag":590,"props":8634,"children":8635},{"class":592,"line":2344},[8636,8640,8644,8648,8652,8656,8660,8665],{"type":49,"tag":590,"props":8637,"children":8638},{"style":1037},[8639],{"type":55,"value":1440},{"type":49,"tag":590,"props":8641,"children":8642},{"style":634},[8643],{"type":55,"value":7780},{"type":49,"tag":590,"props":8645,"children":8646},{"style":634},[8647],{"type":55,"value":7785},{"type":49,"tag":590,"props":8649,"children":8650},{"style":603},[8651],{"type":55,"value":670},{"type":49,"tag":590,"props":8653,"children":8654},{"style":634},[8655],{"type":55,"value":7794},{"type":49,"tag":590,"props":8657,"children":8658},{"style":597},[8659],{"type":55,"value":7799},{"type":49,"tag":590,"props":8661,"children":8662},{"style":634},[8663],{"type":55,"value":8664}," — final with report and manifest",{"type":49,"tag":590,"props":8666,"children":8667},{"style":603},[8668],{"type":55,"value":1099},{"type":49,"tag":590,"props":8670,"children":8671},{"class":592,"line":2404},[8672,8676,8680,8685,8689,8693,8698,8702,8706],{"type":49,"tag":590,"props":8673,"children":8674},{"style":618},[8675],{"type":55,"value":1498},{"type":49,"tag":590,"props":8677,"children":8678},{"style":1037},[8679],{"type":55,"value":1945},{"type":49,"tag":590,"props":8681,"children":8682},{"style":634},[8683],{"type":55,"value":8684}," push",{"type":49,"tag":590,"props":8686,"children":8687},{"style":634},[8688],{"type":55,"value":2240},{"type":49,"tag":590,"props":8690,"children":8691},{"style":603},[8692],{"type":55,"value":670},{"type":49,"tag":590,"props":8694,"children":8695},{"style":597},[8696],{"type":55,"value":8697},"$BRANCH_NAME",{"type":49,"tag":590,"props":8699,"children":8700},{"style":603},[8701],{"type":55,"value":680},{"type":49,"tag":590,"props":8703,"children":8704},{"style":603},[8705],{"type":55,"value":647},{"type":49,"tag":590,"props":8707,"children":8708},{"style":618},[8709],{"type":55,"value":1532},{"type":49,"tag":590,"props":8711,"children":8712},{"class":592,"line":2412},[8713,8717,8721,8726,8730],{"type":49,"tag":590,"props":8714,"children":8715},{"style":1067},[8716],{"type":55,"value":3262},{"type":49,"tag":590,"props":8718,"children":8719},{"style":603},[8720],{"type":55,"value":670},{"type":49,"tag":590,"props":8722,"children":8723},{"style":634},[8724],{"type":55,"value":8725},"Pushed: ",{"type":49,"tag":590,"props":8727,"children":8728},{"style":597},[8729],{"type":55,"value":8697},{"type":49,"tag":590,"props":8731,"children":8732},{"style":603},[8733],{"type":55,"value":1099},{"type":49,"tag":590,"props":8735,"children":8736},{"class":592,"line":2421},[8737],{"type":49,"tag":590,"props":8738,"children":8739},{"style":618},[8740],{"type":55,"value":2982},{"type":49,"tag":590,"props":8742,"children":8743},{"class":592,"line":2443},[8744,8748,8752,8757],{"type":49,"tag":590,"props":8745,"children":8746},{"style":1067},[8747],{"type":55,"value":3262},{"type":49,"tag":590,"props":8749,"children":8750},{"style":603},[8751],{"type":55,"value":670},{"type":49,"tag":590,"props":8753,"children":8754},{"style":634},[8755],{"type":55,"value":8756},"ERROR: Push failed. Keep worktree for recovery.",{"type":49,"tag":590,"props":8758,"children":8759},{"style":603},[8760],{"type":55,"value":1099},{"type":49,"tag":590,"props":8762,"children":8763},{"class":592,"line":2451},[8764,8769],{"type":49,"tag":590,"props":8765,"children":8766},{"style":1067},[8767],{"type":55,"value":8768},"    exit",{"type":49,"tag":590,"props":8770,"children":8771},{"style":1073},[8772],{"type":55,"value":1076},{"type":49,"tag":590,"props":8774,"children":8775},{"class":592,"line":2460},[8776],{"type":49,"tag":590,"props":8777,"children":8778},{"style":618},[8779],{"type":55,"value":1766},{"type":49,"tag":58,"props":8781,"children":8782},{},[8783,8794],{"type":49,"tag":64,"props":8784,"children":8785},{},[8786,8788],{"type":55,"value":8787},"Do NOT write to ",{"type":49,"tag":105,"props":8789,"children":8791},{"className":8790},[],[8792],{"type":55,"value":8793},".session-branches.txt",{"type":55,"value":8795}," — that is managed by the\norchestrator after all agents complete. Agents only push their branch;\nthe orchestrator discovers pushed branches from the remote.",{"type":49,"tag":98,"props":8797,"children":8799},{"id":8798},"worktree-cleanup",[8800],{"type":55,"value":8801},"Worktree Cleanup",{"type":49,"tag":200,"props":8803,"children":8805},{"className":582,"code":8804,"language":584,"meta":208,"style":208},"bash \"$SKILL_DIR\u002Fdream-cleanup.sh\" \"$WORKTREE_DIR\" --repo-root \"$REPO_ROOT\"\n",[8806],{"type":49,"tag":105,"props":8807,"children":8808},{"__ignoreMap":208},[8809],{"type":49,"tag":590,"props":8810,"children":8811},{"class":592,"line":593},[8812,8816,8820,8824,8829,8833,8837,8841,8845,8850,8854,8858],{"type":49,"tag":590,"props":8813,"children":8814},{"style":1037},[8815],{"type":55,"value":584},{"type":49,"tag":590,"props":8817,"children":8818},{"style":603},[8819],{"type":55,"value":670},{"type":49,"tag":590,"props":8821,"children":8822},{"style":597},[8823],{"type":55,"value":1044},{"type":49,"tag":590,"props":8825,"children":8826},{"style":634},[8827],{"type":55,"value":8828},"\u002Fdream-cleanup.sh",{"type":49,"tag":590,"props":8830,"children":8831},{"style":603},[8832],{"type":55,"value":680},{"type":49,"tag":590,"props":8834,"children":8835},{"style":603},[8836],{"type":55,"value":670},{"type":49,"tag":590,"props":8838,"children":8839},{"style":597},[8840],{"type":55,"value":1191},{"type":49,"tag":590,"props":8842,"children":8843},{"style":603},[8844],{"type":55,"value":680},{"type":49,"tag":590,"props":8846,"children":8847},{"style":634},[8848],{"type":55,"value":8849}," --repo-root",{"type":49,"tag":590,"props":8851,"children":8852},{"style":603},[8853],{"type":55,"value":670},{"type":49,"tag":590,"props":8855,"children":8856},{"style":597},[8857],{"type":55,"value":1246},{"type":49,"tag":590,"props":8859,"children":8860},{"style":603},[8861],{"type":55,"value":1099},{"type":49,"tag":58,"props":8863,"children":8864},{},[8865,8870,8872,8878,8880,8886,8888,8894,8896,8902,8904,8910],{"type":49,"tag":105,"props":8866,"children":8868},{"className":8867},[],[8869],{"type":55,"value":43},{"type":55,"value":8871}," does the equivalent of ",{"type":49,"tag":105,"props":8873,"children":8875},{"className":8874},[],[8876],{"type":55,"value":8877},"git worktree remove --force",{"type":55,"value":8879},"\nfollowed by ",{"type":49,"tag":105,"props":8881,"children":8883},{"className":8882},[],[8884],{"type":55,"value":8885},"git worktree prune",{"type":55,"value":8887},", but ALSO falls back to a safety-gated\n",{"type":49,"tag":105,"props":8889,"children":8891},{"className":8890},[],[8892],{"type":55,"value":8893},"rm -rf",{"type":55,"value":8895}," if ",{"type":49,"tag":105,"props":8897,"children":8899},{"className":8898},[],[8900],{"type":55,"value":8901},"git worktree remove",{"type":55,"value":8903}," silently fails — the failure mode that\nleaked tens of dream worktrees per AFK session under the previous inline\nsnippet (see bug-worktree-leak.md). The rm fallback ONLY fires for paths\nthat match ",{"type":49,"tag":105,"props":8905,"children":8907},{"className":8906},[],[8908],{"type":55,"value":8909},"${DREAM_WORKTREE_BASE:-\u002Ftmp\u002Fshadowfrog-dreams}\u002F\u003Cns>\u002Fdream-\u003Cslug>",{"type":55,"value":8911},"\nexactly; any other path is refused.",{"type":49,"tag":58,"props":8913,"children":8914},{},[8915],{"type":55,"value":8916},"Remove as you go. If push failed, keep the worktree.",{"type":49,"tag":98,"props":8918,"children":8920},{"id":8919},"mid-session-diversity-check",[8921],{"type":55,"value":8922},"Mid-Session Diversity Check",{"type":49,"tag":58,"props":8924,"children":8925},{},[8926],{"type":55,"value":8927},"After completing roughly half of your planned tasks, pause and review:",{"type":49,"tag":531,"props":8929,"children":8930},{},[8931,8941,8951,8961],{"type":49,"tag":216,"props":8932,"children":8933},{},[8934,8939],{"type":49,"tag":64,"props":8935,"children":8936},{},[8937],{"type":55,"value":8938},"Count unique primary target files",{"type":55,"value":8940}," explored so far. If fewer than\n50% of completed tasks targeted distinct files, remaining tasks MUST\ntarget new files.",{"type":49,"tag":216,"props":8942,"children":8943},{},[8944,8949],{"type":49,"tag":64,"props":8945,"children":8946},{},[8947],{"type":55,"value":8948},"Check for re-exploration",{"type":55,"value":8950}," — are any completed tasks exploring files\nalready well-covered before this session? Swap remaining tasks for\nuncovered ones.",{"type":49,"tag":216,"props":8952,"children":8953},{},[8954,8959],{"type":49,"tag":64,"props":8955,"children":8956},{},[8957],{"type":55,"value":8958},"Review coverage map delta",{"type":55,"value":8960}," — if fewer than 2 previously uncovered\nfiles explored, prioritize uncovered files for remaining tasks.",{"type":49,"tag":216,"props":8962,"children":8963},{},[8964,8969],{"type":49,"tag":64,"props":8965,"children":8966},{},[8967],{"type":55,"value":8968},"Adjust the plan",{"type":55,"value":8970}," — swap, add, or reorder remaining tasks. The plan\nis a starting point, not a contract.",{"type":49,"tag":58,"props":8972,"children":8973},{},[8974],{"type":55,"value":8975},"This prevents the fixation failure mode where the first half discovers a\nrich area and the second half keeps digging there instead of spreading.",{"type":49,"tag":86,"props":8977,"children":8979},{"id":8978},"phase-4-afk-safe-patterns",[8980],{"type":55,"value":8981},"Phase 4: AFK-Safe Patterns",{"type":49,"tag":531,"props":8983,"children":8984},{},[8985,8990,9001,9006,9011],{"type":49,"tag":216,"props":8986,"children":8987},{},[8988],{"type":55,"value":8989},"Worktrees are outside the repo — writes don't trigger approval",{"type":49,"tag":216,"props":8991,"children":8992},{},[8993,8995],{"type":55,"value":8994},"Temp scripts go in ",{"type":49,"tag":105,"props":8996,"children":8998},{"className":8997},[],[8999],{"type":55,"value":9000},"\u002Ftmp\u002Fshadow-dream-\u003Cslug>.*",{"type":49,"tag":216,"props":9002,"children":9003},{},[9004],{"type":55,"value":9005},"Never modify main directly — only during reconciliation",{"type":49,"tag":216,"props":9007,"children":9008},{},[9009],{"type":55,"value":9010},"Clean up worktrees after push",{"type":49,"tag":216,"props":9012,"children":9013},{},[9014],{"type":55,"value":9015},"Shadow writes on dream branches are safe",{"type":49,"tag":86,"props":9017,"children":9019},{"id":9018},"phase-5-parallel-agent-rules",[9020],{"type":55,"value":9021},"Phase 5: Parallel Agent Rules",{"type":49,"tag":531,"props":9023,"children":9024},{},[9025,9030,9035,9048,9066,9071,9076,9081,9093,9111],{"type":49,"tag":216,"props":9026,"children":9027},{},[9028],{"type":55,"value":9029},"Each agent targets different files (orchestrator assigns non-overlapping sets)",{"type":49,"tag":216,"props":9031,"children":9032},{},[9033],{"type":55,"value":9034},"Each agent gets its own branch (inherently isolated)",{"type":49,"tag":216,"props":9036,"children":9037},{},[9038,9040,9046],{"type":55,"value":9039},"Each agent writes its own manifest in its ",{"type":49,"tag":105,"props":9041,"children":9043},{"className":9042},[],[9044],{"type":55,"value":9045},"$DREAM_ID\u002F",{"type":55,"value":9047}," directory",{"type":49,"tag":216,"props":9049,"children":9050},{},[9051,9053,9058,9059,9065],{"type":55,"value":9052},"Do NOT write to main or shared files (",{"type":49,"tag":105,"props":9054,"children":9056},{"className":9055},[],[9057],{"type":55,"value":3670},{"type":55,"value":460},{"type":49,"tag":105,"props":9060,"children":9062},{"className":9061},[],[9063],{"type":55,"value":9064},"state.json",{"type":55,"value":551},{"type":49,"tag":216,"props":9067,"children":9068},{},[9069],{"type":55,"value":9070},"Do NOT update metadata — reconciled post-dream by orchestrator",{"type":49,"tag":216,"props":9072,"children":9073},{},[9074],{"type":55,"value":9075},"Fetch once, branch from Phase 1 snapshot (no independent fetches)",{"type":49,"tag":216,"props":9077,"children":9078},{},[9079],{"type":55,"value":9080},"Manifest anchors use bare symbol names (reconciler normalizes)",{"type":49,"tag":216,"props":9082,"children":9083},{},[9084,9086,9091],{"type":55,"value":9085},"Thread ",{"type":49,"tag":105,"props":9087,"children":9089},{"className":9088},[],[9090],{"type":55,"value":343},{"type":55,"value":9092}," into every subagent prompt",{"type":49,"tag":216,"props":9094,"children":9095},{},[9096,9098,9103,9104,9109],{"type":55,"value":9097},"Include ",{"type":49,"tag":105,"props":9099,"children":9101},{"className":9100},[],[9102],{"type":55,"value":5407},{"type":55,"value":6831},{"type":49,"tag":105,"props":9105,"children":9107},{"className":9106},[],[9108],{"type":55,"value":237},{"type":55,"value":9110}," in every subagent prompt",{"type":49,"tag":216,"props":9112,"children":9113},{},[9114],{"type":55,"value":9115},"Dream artifacts MUST use subdirectory format — flat files are a\ncompletion criteria violation (see Critical Invariants → Artifact Format)",{"type":49,"tag":86,"props":9117,"children":9119},{"id":9118},"phase-6-reconcile-to-main",[9120],{"type":55,"value":9121},"Phase 6: Reconcile to Main",{"type":49,"tag":58,"props":9123,"children":9124},{},[9125,9130],{"type":49,"tag":64,"props":9126,"children":9127},{},[9128],{"type":55,"value":9129},"⚠️ CRITICAL: Reconciliation is MANDATORY at the end of every dream batch.",{"type":55,"value":9131},"\nSee Critical Invariants → Reconciliation is Mandatory (above) for the\nparallel-vs-sequential mode definitions and the auto-discover rule. Do\nNOT defer reconciliation across batches.",{"type":49,"tag":58,"props":9133,"children":9134},{},[9135,9137,9142],{"type":55,"value":9136},"The ",{"type":49,"tag":105,"props":9138,"children":9140},{"className":9139},[],[9141],{"type":55,"value":3670},{"type":55,"value":9143}," entry is your sequential-mode checkpoint — any dream\nlisted there is safe if the session crashes.",{"type":49,"tag":58,"props":9145,"children":9146},{},[9147],{"type":55,"value":9148},"Use the reconciliation script:",{"type":49,"tag":200,"props":9150,"children":9152},{"className":582,"code":9151,"language":584,"meta":208,"style":208},"cd \"$REPO_ROOT\"\ngit checkout \"$DEFAULT_BRANCH\"\ngit fetch origin --prune\n\n# Find and run the reconciliation script\nRECONCILE_SCRIPT=\"\"\nfor DIR in .github\u002Fskills\u002Fshadow-frog-dream .claude\u002Fskills\u002Fshadow-frog-dream; do\n    [ -f \"$DIR\u002Fdream-reconcile.py\" ] && RECONCILE_SCRIPT=\"$DIR\u002Fdream-reconcile.py\" && break\ndone\n\nif [ -n \"$RECONCILE_SCRIPT\" ]; then\n    python3 \"$RECONCILE_SCRIPT\" \"$REPO_ROOT\"\nelse\n    echo \"WARNING: dream-reconcile.py not found. Apply Script Failure Recovery: read dream-reconcile.py source, adapt its 9 steps manually.\"\nfi\n",[9153],{"type":49,"tag":105,"props":9154,"children":9155},{"__ignoreMap":208},[9156,9175,9199,9218,9225,9233,9249,9280,9348,9355,9362,9398,9429,9436,9456],{"type":49,"tag":590,"props":9157,"children":9158},{"class":592,"line":593},[9159,9163,9167,9171],{"type":49,"tag":590,"props":9160,"children":9161},{"style":1067},[9162],{"type":55,"value":1463},{"type":49,"tag":590,"props":9164,"children":9165},{"style":603},[9166],{"type":55,"value":670},{"type":49,"tag":590,"props":9168,"children":9169},{"style":597},[9170],{"type":55,"value":1246},{"type":49,"tag":590,"props":9172,"children":9173},{"style":603},[9174],{"type":55,"value":1099},{"type":49,"tag":590,"props":9176,"children":9177},{"class":592,"line":614},[9178,9182,9187,9191,9195],{"type":49,"tag":590,"props":9179,"children":9180},{"style":1037},[9181],{"type":55,"value":1440},{"type":49,"tag":590,"props":9183,"children":9184},{"style":634},[9185],{"type":55,"value":9186}," checkout",{"type":49,"tag":590,"props":9188,"children":9189},{"style":603},[9190],{"type":55,"value":670},{"type":49,"tag":590,"props":9192,"children":9193},{"style":597},[9194],{"type":55,"value":1921},{"type":49,"tag":590,"props":9196,"children":9197},{"style":603},[9198],{"type":55,"value":1099},{"type":49,"tag":590,"props":9200,"children":9201},{"class":592,"line":29},[9202,9206,9210,9214],{"type":49,"tag":590,"props":9203,"children":9204},{"style":1037},[9205],{"type":55,"value":1440},{"type":49,"tag":590,"props":9207,"children":9208},{"style":634},[9209],{"type":55,"value":2431},{"type":49,"tag":590,"props":9211,"children":9212},{"style":634},[9213],{"type":55,"value":2240},{"type":49,"tag":590,"props":9215,"children":9216},{"style":634},[9217],{"type":55,"value":2440},{"type":49,"tag":590,"props":9219,"children":9220},{"class":592,"line":723},[9221],{"type":49,"tag":590,"props":9222,"children":9223},{"emptyLinePlaceholder":1133},[9224],{"type":55,"value":1136},{"type":49,"tag":590,"props":9226,"children":9227},{"class":592,"line":1001},[9228],{"type":49,"tag":590,"props":9229,"children":9230},{"style":971},[9231],{"type":55,"value":9232},"# Find and run the reconciliation script\n",{"type":49,"tag":590,"props":9234,"children":9235},{"class":592,"line":1010},[9236,9241,9245],{"type":49,"tag":590,"props":9237,"children":9238},{"style":597},[9239],{"type":55,"value":9240},"RECONCILE_SCRIPT",{"type":49,"tag":590,"props":9242,"children":9243},{"style":603},[9244],{"type":55,"value":606},{"type":49,"tag":590,"props":9246,"children":9247},{"style":603},[9248],{"type":55,"value":611},{"type":49,"tag":590,"props":9250,"children":9251},{"class":592,"line":1019},[9252,9256,9260,9264,9268,9272,9276],{"type":49,"tag":590,"props":9253,"children":9254},{"style":618},[9255],{"type":55,"value":621},{"type":49,"tag":590,"props":9257,"children":9258},{"style":597},[9259],{"type":55,"value":626},{"type":49,"tag":590,"props":9261,"children":9262},{"style":618},[9263],{"type":55,"value":631},{"type":49,"tag":590,"props":9265,"children":9266},{"style":634},[9267],{"type":55,"value":637},{"type":49,"tag":590,"props":9269,"children":9270},{"style":634},[9271],{"type":55,"value":642},{"type":49,"tag":590,"props":9273,"children":9274},{"style":603},[9275],{"type":55,"value":647},{"type":49,"tag":590,"props":9277,"children":9278},{"style":618},[9279],{"type":55,"value":652},{"type":49,"tag":590,"props":9281,"children":9282},{"class":592,"line":1079},[9283,9287,9291,9295,9299,9303,9307,9311,9315,9320,9324,9328,9332,9336,9340,9344],{"type":49,"tag":590,"props":9284,"children":9285},{"style":603},[9286],{"type":55,"value":660},{"type":49,"tag":590,"props":9288,"children":9289},{"style":603},[9290],{"type":55,"value":1549},{"type":49,"tag":590,"props":9292,"children":9293},{"style":603},[9294],{"type":55,"value":670},{"type":49,"tag":590,"props":9296,"children":9297},{"style":597},[9298],{"type":55,"value":675},{"type":49,"tag":590,"props":9300,"children":9301},{"style":634},[9302],{"type":55,"value":1233},{"type":49,"tag":590,"props":9304,"children":9305},{"style":603},[9306],{"type":55,"value":680},{"type":49,"tag":590,"props":9308,"children":9309},{"style":603},[9310],{"type":55,"value":685},{"type":49,"tag":590,"props":9312,"children":9313},{"style":603},[9314],{"type":55,"value":690},{"type":49,"tag":590,"props":9316,"children":9317},{"style":597},[9318],{"type":55,"value":9319}," RECONCILE_SCRIPT",{"type":49,"tag":590,"props":9321,"children":9322},{"style":603},[9323],{"type":55,"value":606},{"type":49,"tag":590,"props":9325,"children":9326},{"style":603},[9327],{"type":55,"value":680},{"type":49,"tag":590,"props":9329,"children":9330},{"style":597},[9331],{"type":55,"value":675},{"type":49,"tag":590,"props":9333,"children":9334},{"style":634},[9335],{"type":55,"value":1233},{"type":49,"tag":590,"props":9337,"children":9338},{"style":603},[9339],{"type":55,"value":680},{"type":49,"tag":590,"props":9341,"children":9342},{"style":603},[9343],{"type":55,"value":690},{"type":49,"tag":590,"props":9345,"children":9346},{"style":618},[9347],{"type":55,"value":720},{"type":49,"tag":590,"props":9349,"children":9350},{"class":592,"line":1102},[9351],{"type":49,"tag":590,"props":9352,"children":9353},{"style":618},[9354],{"type":55,"value":729},{"type":49,"tag":590,"props":9356,"children":9357},{"class":592,"line":1111},[9358],{"type":49,"tag":590,"props":9359,"children":9360},{"emptyLinePlaceholder":1133},[9361],{"type":55,"value":1136},{"type":49,"tag":590,"props":9363,"children":9364},{"class":592,"line":1120},[9365,9369,9373,9377,9381,9386,9390,9394],{"type":49,"tag":590,"props":9366,"children":9367},{"style":618},[9368],{"type":55,"value":1498},{"type":49,"tag":590,"props":9370,"children":9371},{"style":603},[9372],{"type":55,"value":1503},{"type":49,"tag":590,"props":9374,"children":9375},{"style":603},[9376],{"type":55,"value":1779},{"type":49,"tag":590,"props":9378,"children":9379},{"style":603},[9380],{"type":55,"value":670},{"type":49,"tag":590,"props":9382,"children":9383},{"style":597},[9384],{"type":55,"value":9385},"$RECONCILE_SCRIPT",{"type":49,"tag":590,"props":9387,"children":9388},{"style":603},[9389],{"type":55,"value":680},{"type":49,"tag":590,"props":9391,"children":9392},{"style":603},[9393],{"type":55,"value":1527},{"type":49,"tag":590,"props":9395,"children":9396},{"style":618},[9397],{"type":55,"value":1532},{"type":49,"tag":590,"props":9399,"children":9400},{"class":592,"line":1129},[9401,9405,9409,9413,9417,9421,9425],{"type":49,"tag":590,"props":9402,"children":9403},{"style":1037},[9404],{"type":55,"value":8257},{"type":49,"tag":590,"props":9406,"children":9407},{"style":603},[9408],{"type":55,"value":670},{"type":49,"tag":590,"props":9410,"children":9411},{"style":597},[9412],{"type":55,"value":9385},{"type":49,"tag":590,"props":9414,"children":9415},{"style":603},[9416],{"type":55,"value":680},{"type":49,"tag":590,"props":9418,"children":9419},{"style":603},[9420],{"type":55,"value":670},{"type":49,"tag":590,"props":9422,"children":9423},{"style":597},[9424],{"type":55,"value":1246},{"type":49,"tag":590,"props":9426,"children":9427},{"style":603},[9428],{"type":55,"value":1099},{"type":49,"tag":590,"props":9430,"children":9431},{"class":592,"line":25},[9432],{"type":49,"tag":590,"props":9433,"children":9434},{"style":618},[9435],{"type":55,"value":2982},{"type":49,"tag":590,"props":9437,"children":9438},{"class":592,"line":1147},[9439,9443,9447,9452],{"type":49,"tag":590,"props":9440,"children":9441},{"style":1067},[9442],{"type":55,"value":3262},{"type":49,"tag":590,"props":9444,"children":9445},{"style":603},[9446],{"type":55,"value":670},{"type":49,"tag":590,"props":9448,"children":9449},{"style":634},[9450],{"type":55,"value":9451},"WARNING: dream-reconcile.py not found. Apply Script Failure Recovery: read dream-reconcile.py source, adapt its 9 steps manually.",{"type":49,"tag":590,"props":9453,"children":9454},{"style":603},[9455],{"type":55,"value":1099},{"type":49,"tag":590,"props":9457,"children":9458},{"class":592,"line":1198},[9459],{"type":49,"tag":590,"props":9460,"children":9461},{"style":618},[9462],{"type":55,"value":1766},{"type":49,"tag":58,"props":9464,"children":9465},{},[9466,9471,9473,9478,9480,9485],{"type":49,"tag":64,"props":9467,"children":9468},{},[9469],{"type":55,"value":9470},"If the reconciler script fails or errors:",{"type":55,"value":9472}," Read ",{"type":49,"tag":105,"props":9474,"children":9476},{"className":9475},[],[9477],{"type":55,"value":41},{"type":55,"value":9479}," source\nto understand which step broke and why. The script is structured as 9\nsequential, idempotent steps (see below). You can often fix the issue and\nre-run the script (it skips dreams already in ",{"type":49,"tag":105,"props":9481,"children":9483},{"className":9482},[],[9484],{"type":55,"value":3670},{"type":55,"value":9486},"), or perform the\nfailing step manually and then re-run the remaining steps. Common failures:\nmissing manifest, corrupt report frontmatter, merge conflict in shadow file.\nAdapt based on the error message.",{"type":49,"tag":98,"props":9488,"children":9490},{"id":9489},"what-the-reconciler-does",[9491],{"type":55,"value":9492},"What the Reconciler Does",{"type":49,"tag":531,"props":9494,"children":9495},{},[9496,9512,9522,9554,9569,9585,9598,9616,9626],{"type":49,"tag":216,"props":9497,"children":9498},{},[9499,9504,9506,9511],{"type":49,"tag":64,"props":9500,"children":9501},{},[9502],{"type":55,"value":9503},"Discovers",{"type":55,"value":9505}," new branches (namespace-filtered, not in ",{"type":49,"tag":105,"props":9507,"children":9509},{"className":9508},[],[9510],{"type":55,"value":3670},{"type":55,"value":551},{"type":49,"tag":216,"props":9513,"children":9514},{},[9515,9520],{"type":49,"tag":64,"props":9516,"children":9517},{},[9518],{"type":55,"value":9519},"Reads\u002Fvalidates",{"type":55,"value":9521}," manifests from remote branches",{"type":49,"tag":216,"props":9523,"children":9524},{},[9525,9530,9532,9537,9539,9544,9546,9552],{"type":49,"tag":64,"props":9526,"children":9527},{},[9528],{"type":55,"value":9529},"Merges",{"type":55,"value":9531}," discoveries into main's per-file shadows (semantic dedup; on an exact-text duplicate it upgrades the existing entry's metadata — unions labels, raises source trust, promotes ",{"type":49,"tag":105,"props":9533,"children":9535},{"className":9534},[],[9536],{"type":55,"value":4317},{"type":55,"value":9538},"→",{"type":49,"tag":105,"props":9540,"children":9542},{"className":9541},[],[9543],{"type":55,"value":5670},{"type":55,"value":9545}," — but never alters a ",{"type":49,"tag":105,"props":9547,"children":9549},{"className":9548},[],[9550],{"type":55,"value":9551},"refuted",{"type":55,"value":9553}," status)",{"type":49,"tag":216,"props":9555,"children":9556},{},[9557,9562,9564],{"type":49,"tag":64,"props":9558,"children":9559},{},[9560],{"type":55,"value":9561},"Mirrors",{"type":55,"value":9563}," reports, manifests, patches to main's ",{"type":49,"tag":105,"props":9565,"children":9567},{"className":9566},[],[9568],{"type":55,"value":3685},{"type":49,"tag":216,"props":9570,"children":9571},{},[9572,9577,9578,9583],{"type":49,"tag":64,"props":9573,"children":9574},{},[9575],{"type":55,"value":9576},"Updates",{"type":55,"value":6796},{"type":49,"tag":105,"props":9579,"children":9581},{"className":9580},[],[9582],{"type":55,"value":4153},{"type":55,"value":9584}," with new entries",{"type":49,"tag":216,"props":9586,"children":9587},{},[9588,9592,9593],{"type":49,"tag":64,"props":9589,"children":9590},{},[9591],{"type":55,"value":9576},{"type":55,"value":6796},{"type":49,"tag":105,"props":9594,"children":9596},{"className":9595},[],[9597],{"type":55,"value":3663},{"type":49,"tag":216,"props":9599,"children":9600},{},[9601,9606,9608,9614],{"type":49,"tag":64,"props":9602,"children":9603},{},[9604],{"type":55,"value":9605},"Rebuilds",{"type":55,"value":9607}," top-level ",{"type":49,"tag":105,"props":9609,"children":9611},{"className":9610},[],[9612],{"type":55,"value":9613},".shadow\u002F_index.md",{"type":55,"value":9615}," (per-file discovery counts)",{"type":49,"tag":216,"props":9617,"children":9618},{},[9619,9624],{"type":49,"tag":64,"props":9620,"children":9621},{},[9622],{"type":55,"value":9623},"Verifies",{"type":55,"value":9625}," all artifacts present (hard gate)",{"type":49,"tag":216,"props":9627,"children":9628},{},[9629,9634,9636,9642,9644,9649,9651,9657],{"type":49,"tag":64,"props":9630,"children":9631},{},[9632],{"type":55,"value":9633},"(Optional)",{"type":55,"value":9635}," Deletes reconciled branches — only with ",{"type":49,"tag":105,"props":9637,"children":9639},{"className":9638},[],[9640],{"type":55,"value":9641},"--cleanup-branches",{"type":55,"value":9643},", and only after the reconciliation has been committed and pushed (refuses on a dirty ",{"type":49,"tag":105,"props":9645,"children":9647},{"className":9646},[],[9648],{"type":55,"value":110},{"type":55,"value":9650}," or when HEAD is not yet on ",{"type":49,"tag":105,"props":9652,"children":9654},{"className":9653},[],[9655],{"type":55,"value":9656},"origin\u002F\u003Cdefault-branch>",{"type":55,"value":551},{"type":49,"tag":98,"props":9659,"children":9661},{"id":9660},"after-reconciliation-commit-push-and-cleanup",[9662],{"type":55,"value":9663},"After Reconciliation: Commit, Push, and Cleanup",{"type":49,"tag":200,"props":9665,"children":9667},{"className":582,"code":9666,"language":584,"meta":208,"style":208},"cd \"$REPO_ROOT\"\ngit add .shadow\u002F\ngit commit -m \"dream: reconcile $(date -u +%Y%m%d-%H%M%SZ) — N experiments\"\ngit pull --rebase origin \"$DEFAULT_BRANCH\" || {\n    echo \"ERROR: Rebase failed. Abort and retry manually.\"\n    git rebase --abort 2>\u002Fdev\u002Fnull\n    exit 1\n}\nif git push origin \"$DEFAULT_BRANCH\"; then\n    echo \"✓ Pushed reconciliation\"\nelse\n    echo \"ERROR: Push failed. Retry: git pull --rebase && git push\"\n    echo \"⚠️ Do NOT clean up branches until push succeeds.\"\n    exit 1\nfi\n",[9668],{"type":49,"tag":105,"props":9669,"children":9670},{"__ignoreMap":208},[9671,9690,9706,9757,9798,9818,9845,9856,9863,9902,9922,9929,9949,9969,9980],{"type":49,"tag":590,"props":9672,"children":9673},{"class":592,"line":593},[9674,9678,9682,9686],{"type":49,"tag":590,"props":9675,"children":9676},{"style":1067},[9677],{"type":55,"value":1463},{"type":49,"tag":590,"props":9679,"children":9680},{"style":603},[9681],{"type":55,"value":670},{"type":49,"tag":590,"props":9683,"children":9684},{"style":597},[9685],{"type":55,"value":1246},{"type":49,"tag":590,"props":9687,"children":9688},{"style":603},[9689],{"type":55,"value":1099},{"type":49,"tag":590,"props":9691,"children":9692},{"class":592,"line":614},[9693,9697,9701],{"type":49,"tag":590,"props":9694,"children":9695},{"style":1037},[9696],{"type":55,"value":1440},{"type":49,"tag":590,"props":9698,"children":9699},{"style":634},[9700],{"type":55,"value":7718},{"type":49,"tag":590,"props":9702,"children":9703},{"style":634},[9704],{"type":55,"value":9705}," .shadow\u002F\n",{"type":49,"tag":590,"props":9707,"children":9708},{"class":592,"line":29},[9709,9713,9717,9721,9725,9730,9734,9739,9744,9748,9753],{"type":49,"tag":590,"props":9710,"children":9711},{"style":1037},[9712],{"type":55,"value":1440},{"type":49,"tag":590,"props":9714,"children":9715},{"style":634},[9716],{"type":55,"value":7780},{"type":49,"tag":590,"props":9718,"children":9719},{"style":634},[9720],{"type":55,"value":7785},{"type":49,"tag":590,"props":9722,"children":9723},{"style":603},[9724],{"type":55,"value":670},{"type":49,"tag":590,"props":9726,"children":9727},{"style":634},[9728],{"type":55,"value":9729},"dream: reconcile ",{"type":49,"tag":590,"props":9731,"children":9732},{"style":603},[9733],{"type":55,"value":2174},{"type":49,"tag":590,"props":9735,"children":9736},{"style":1037},[9737],{"type":55,"value":9738},"date",{"type":49,"tag":590,"props":9740,"children":9741},{"style":634},[9742],{"type":55,"value":9743}," -u +%Y%m%d-%H%M%SZ",{"type":49,"tag":590,"props":9745,"children":9746},{"style":603},[9747],{"type":55,"value":551},{"type":49,"tag":590,"props":9749,"children":9750},{"style":634},[9751],{"type":55,"value":9752}," — N experiments",{"type":49,"tag":590,"props":9754,"children":9755},{"style":603},[9756],{"type":55,"value":1099},{"type":49,"tag":590,"props":9758,"children":9759},{"class":592,"line":723},[9760,9764,9769,9774,9778,9782,9786,9790,9794],{"type":49,"tag":590,"props":9761,"children":9762},{"style":1037},[9763],{"type":55,"value":1440},{"type":49,"tag":590,"props":9765,"children":9766},{"style":634},[9767],{"type":55,"value":9768}," pull",{"type":49,"tag":590,"props":9770,"children":9771},{"style":634},[9772],{"type":55,"value":9773}," --rebase",{"type":49,"tag":590,"props":9775,"children":9776},{"style":634},[9777],{"type":55,"value":2240},{"type":49,"tag":590,"props":9779,"children":9780},{"style":603},[9781],{"type":55,"value":670},{"type":49,"tag":590,"props":9783,"children":9784},{"style":597},[9785],{"type":55,"value":1921},{"type":49,"tag":590,"props":9787,"children":9788},{"style":603},[9789],{"type":55,"value":680},{"type":49,"tag":590,"props":9791,"children":9792},{"style":603},[9793],{"type":55,"value":1064},{"type":49,"tag":590,"props":9795,"children":9796},{"style":603},[9797],{"type":55,"value":8302},{"type":49,"tag":590,"props":9799,"children":9800},{"class":592,"line":1001},[9801,9805,9809,9814],{"type":49,"tag":590,"props":9802,"children":9803},{"style":1067},[9804],{"type":55,"value":3262},{"type":49,"tag":590,"props":9806,"children":9807},{"style":603},[9808],{"type":55,"value":670},{"type":49,"tag":590,"props":9810,"children":9811},{"style":634},[9812],{"type":55,"value":9813},"ERROR: Rebase failed. Abort and retry manually.",{"type":49,"tag":590,"props":9815,"children":9816},{"style":603},[9817],{"type":55,"value":1099},{"type":49,"tag":590,"props":9819,"children":9820},{"class":592,"line":1010},[9821,9826,9831,9836,9840],{"type":49,"tag":590,"props":9822,"children":9823},{"style":1037},[9824],{"type":55,"value":9825},"    git",{"type":49,"tag":590,"props":9827,"children":9828},{"style":634},[9829],{"type":55,"value":9830}," rebase",{"type":49,"tag":590,"props":9832,"children":9833},{"style":634},[9834],{"type":55,"value":9835}," --abort",{"type":49,"tag":590,"props":9837,"children":9838},{"style":603},[9839],{"type":55,"value":1602},{"type":49,"tag":590,"props":9841,"children":9842},{"style":634},[9843],{"type":55,"value":9844},"\u002Fdev\u002Fnull\n",{"type":49,"tag":590,"props":9846,"children":9847},{"class":592,"line":1019},[9848,9852],{"type":49,"tag":590,"props":9849,"children":9850},{"style":1067},[9851],{"type":55,"value":8768},{"type":49,"tag":590,"props":9853,"children":9854},{"style":1073},[9855],{"type":55,"value":1076},{"type":49,"tag":590,"props":9857,"children":9858},{"class":592,"line":1079},[9859],{"type":49,"tag":590,"props":9860,"children":9861},{"style":603},[9862],{"type":55,"value":6786},{"type":49,"tag":590,"props":9864,"children":9865},{"class":592,"line":1102},[9866,9870,9874,9878,9882,9886,9890,9894,9898],{"type":49,"tag":590,"props":9867,"children":9868},{"style":618},[9869],{"type":55,"value":1498},{"type":49,"tag":590,"props":9871,"children":9872},{"style":1037},[9873],{"type":55,"value":1945},{"type":49,"tag":590,"props":9875,"children":9876},{"style":634},[9877],{"type":55,"value":8684},{"type":49,"tag":590,"props":9879,"children":9880},{"style":634},[9881],{"type":55,"value":2240},{"type":49,"tag":590,"props":9883,"children":9884},{"style":603},[9885],{"type":55,"value":670},{"type":49,"tag":590,"props":9887,"children":9888},{"style":597},[9889],{"type":55,"value":1921},{"type":49,"tag":590,"props":9891,"children":9892},{"style":603},[9893],{"type":55,"value":680},{"type":49,"tag":590,"props":9895,"children":9896},{"style":603},[9897],{"type":55,"value":647},{"type":49,"tag":590,"props":9899,"children":9900},{"style":618},[9901],{"type":55,"value":1532},{"type":49,"tag":590,"props":9903,"children":9904},{"class":592,"line":1111},[9905,9909,9913,9918],{"type":49,"tag":590,"props":9906,"children":9907},{"style":1067},[9908],{"type":55,"value":3262},{"type":49,"tag":590,"props":9910,"children":9911},{"style":603},[9912],{"type":55,"value":670},{"type":49,"tag":590,"props":9914,"children":9915},{"style":634},[9916],{"type":55,"value":9917},"✓ Pushed reconciliation",{"type":49,"tag":590,"props":9919,"children":9920},{"style":603},[9921],{"type":55,"value":1099},{"type":49,"tag":590,"props":9923,"children":9924},{"class":592,"line":1120},[9925],{"type":49,"tag":590,"props":9926,"children":9927},{"style":618},[9928],{"type":55,"value":2982},{"type":49,"tag":590,"props":9930,"children":9931},{"class":592,"line":1129},[9932,9936,9940,9945],{"type":49,"tag":590,"props":9933,"children":9934},{"style":1067},[9935],{"type":55,"value":3262},{"type":49,"tag":590,"props":9937,"children":9938},{"style":603},[9939],{"type":55,"value":670},{"type":49,"tag":590,"props":9941,"children":9942},{"style":634},[9943],{"type":55,"value":9944},"ERROR: Push failed. Retry: git pull --rebase && git push",{"type":49,"tag":590,"props":9946,"children":9947},{"style":603},[9948],{"type":55,"value":1099},{"type":49,"tag":590,"props":9950,"children":9951},{"class":592,"line":25},[9952,9956,9960,9965],{"type":49,"tag":590,"props":9953,"children":9954},{"style":1067},[9955],{"type":55,"value":3262},{"type":49,"tag":590,"props":9957,"children":9958},{"style":603},[9959],{"type":55,"value":670},{"type":49,"tag":590,"props":9961,"children":9962},{"style":634},[9963],{"type":55,"value":9964},"⚠️ Do NOT clean up branches until push succeeds.",{"type":49,"tag":590,"props":9966,"children":9967},{"style":603},[9968],{"type":55,"value":1099},{"type":49,"tag":590,"props":9970,"children":9971},{"class":592,"line":1147},[9972,9976],{"type":49,"tag":590,"props":9973,"children":9974},{"style":1067},[9975],{"type":55,"value":8768},{"type":49,"tag":590,"props":9977,"children":9978},{"style":1073},[9979],{"type":55,"value":1076},{"type":49,"tag":590,"props":9981,"children":9982},{"class":592,"line":1198},[9983],{"type":49,"tag":590,"props":9984,"children":9985},{"style":618},[9986],{"type":55,"value":1766},{"type":49,"tag":98,"props":9988,"children":9990},{"id":9989},"post-reconciliation-branch-cleanup",[9991],{"type":55,"value":9992},"Post-Reconciliation Branch Cleanup",{"type":49,"tag":58,"props":9994,"children":9995},{},[9996,9998,10003],{"type":55,"value":9997},"After reconciliation is ",{"type":49,"tag":64,"props":9999,"children":10000},{},[10001],{"type":55,"value":10002},"committed AND pushed",{"type":55,"value":10004},", clean up dream branches\nto prevent repo pollution. Only delete branches whose artifacts are safely\non main.",{"type":49,"tag":200,"props":10006,"children":10008},{"className":582,"code":10007,"language":584,"meta":208,"style":208},"for BRANCH in $RECONCILED_BRANCHES; do\n    DREAM_ID=\"${BRANCH#dream\u002F${DREAM_NS}\u002F}\"\n    # Safety check: verify artifacts exist on main BEFORE deleting.\n    # Match the _index.md entry by EXACT cell (column 2), not substring —\n    # `grep -qF \"$DREAM_ID\"` would false-match when one dream_id is a prefix\n    # of another, deleting an un-reconciled branch.\n    if [ -f .shadow\u002F_dreams\u002F\"$DREAM_ID\"\u002Freport.md ] && \\\n       [ -f .shadow\u002F_dreams\u002F\"$DREAM_ID\"\u002Fmanifest.json ] && \\\n       [ -f .shadow\u002F_dreams\u002F\"$DREAM_ID\"\u002Fpatch.diff ] && \\\n       awk -F'|' -v id=\"$DREAM_ID\" \\\n         '{gsub(\u002F \u002F,\"\",$2); if ($2==id) f=1} END {exit !f}' \\\n         .shadow\u002F_dreams\u002F_index.md 2>\u002Fdev\u002Fnull; then\n        # Safe to delete — all artifacts are on main\n        git push origin --delete \"$BRANCH\" 2>\u002Fdev\u002Fnull && \\\n            echo \"  🗑 Deleted remote: $BRANCH\"\n        git branch -D \"$BRANCH\" 2>\u002Fdev\u002Fnull && \\\n            echo \"  🗑 Deleted local: $BRANCH\"\n    else\n        echo \"  ⚠️ KEEPING $BRANCH — artifacts not verified on main\"\n    fi\ndone\n",[10009],{"type":49,"tag":105,"props":10010,"children":10011},{"__ignoreMap":208},[10012,10041,10083,10091,10099,10107,10115,10163,10208,10251,10301,10322,10346,10354,10404,10429,10473,10497,10504,10533,10540],{"type":49,"tag":590,"props":10013,"children":10014},{"class":592,"line":593},[10015,10019,10024,10028,10033,10037],{"type":49,"tag":590,"props":10016,"children":10017},{"style":618},[10018],{"type":55,"value":621},{"type":49,"tag":590,"props":10020,"children":10021},{"style":597},[10022],{"type":55,"value":10023}," BRANCH ",{"type":49,"tag":590,"props":10025,"children":10026},{"style":618},[10027],{"type":55,"value":631},{"type":49,"tag":590,"props":10029,"children":10030},{"style":597},[10031],{"type":55,"value":10032}," $RECONCILED_BRANCHES",{"type":49,"tag":590,"props":10034,"children":10035},{"style":603},[10036],{"type":55,"value":647},{"type":49,"tag":590,"props":10038,"children":10039},{"style":618},[10040],{"type":55,"value":652},{"type":49,"tag":590,"props":10042,"children":10043},{"class":592,"line":614},[10044,10049,10053,10057,10062,10067,10071,10075,10079],{"type":49,"tag":590,"props":10045,"children":10046},{"style":597},[10047],{"type":55,"value":10048},"    DREAM_ID",{"type":49,"tag":590,"props":10050,"children":10051},{"style":603},[10052],{"type":55,"value":606},{"type":49,"tag":590,"props":10054,"children":10055},{"style":603},[10056],{"type":55,"value":2474},{"type":49,"tag":590,"props":10058,"children":10059},{"style":597},[10060],{"type":55,"value":10061},"BRANCH",{"type":49,"tag":590,"props":10063,"children":10064},{"style":603},[10065],{"type":55,"value":10066},"#",{"type":49,"tag":590,"props":10068,"children":10069},{"style":597},[10070],{"type":55,"value":2529},{"type":49,"tag":590,"props":10072,"children":10073},{"style":603},[10074],{"type":55,"value":2534},{"type":49,"tag":590,"props":10076,"children":10077},{"style":597},[10078],{"type":55,"value":237},{"type":49,"tag":590,"props":10080,"children":10081},{"style":603},[10082],{"type":55,"value":2543},{"type":49,"tag":590,"props":10084,"children":10085},{"class":592,"line":29},[10086],{"type":49,"tag":590,"props":10087,"children":10088},{"style":971},[10089],{"type":55,"value":10090},"    # Safety check: verify artifacts exist on main BEFORE deleting.\n",{"type":49,"tag":590,"props":10092,"children":10093},{"class":592,"line":723},[10094],{"type":49,"tag":590,"props":10095,"children":10096},{"style":971},[10097],{"type":55,"value":10098},"    # Match the _index.md entry by EXACT cell (column 2), not substring —\n",{"type":49,"tag":590,"props":10100,"children":10101},{"class":592,"line":1001},[10102],{"type":49,"tag":590,"props":10103,"children":10104},{"style":971},[10105],{"type":55,"value":10106},"    # `grep -qF \"$DREAM_ID\"` would false-match when one dream_id is a prefix\n",{"type":49,"tag":590,"props":10108,"children":10109},{"class":592,"line":1010},[10110],{"type":49,"tag":590,"props":10111,"children":10112},{"style":971},[10113],{"type":55,"value":10114},"    # of another, deleting an un-reconciled branch.\n",{"type":49,"tag":590,"props":10116,"children":10117},{"class":592,"line":1019},[10118,10122,10126,10130,10134,10138,10142,10146,10151,10155,10159],{"type":49,"tag":590,"props":10119,"children":10120},{"style":618},[10121],{"type":55,"value":1540},{"type":49,"tag":590,"props":10123,"children":10124},{"style":603},[10125],{"type":55,"value":1503},{"type":49,"tag":590,"props":10127,"children":10128},{"style":603},[10129],{"type":55,"value":1549},{"type":49,"tag":590,"props":10131,"children":10132},{"style":597},[10133],{"type":55,"value":7819},{"type":49,"tag":590,"props":10135,"children":10136},{"style":603},[10137],{"type":55,"value":680},{"type":49,"tag":590,"props":10139,"children":10140},{"style":597},[10141],{"type":55,"value":1178},{"type":49,"tag":590,"props":10143,"children":10144},{"style":603},[10145],{"type":55,"value":680},{"type":49,"tag":590,"props":10147,"children":10148},{"style":597},[10149],{"type":55,"value":10150},"\u002Freport.md ",{"type":49,"tag":590,"props":10152,"children":10153},{"style":603},[10154],{"type":55,"value":2301},{"type":49,"tag":590,"props":10156,"children":10157},{"style":603},[10158],{"type":55,"value":690},{"type":49,"tag":590,"props":10160,"children":10161},{"style":597},[10162],{"type":55,"value":3538},{"type":49,"tag":590,"props":10164,"children":10165},{"class":592,"line":1079},[10166,10171,10175,10179,10183,10187,10191,10196,10200,10204],{"type":49,"tag":590,"props":10167,"children":10168},{"style":603},[10169],{"type":55,"value":10170},"       [",{"type":49,"tag":590,"props":10172,"children":10173},{"style":603},[10174],{"type":55,"value":1549},{"type":49,"tag":590,"props":10176,"children":10177},{"style":597},[10178],{"type":55,"value":7819},{"type":49,"tag":590,"props":10180,"children":10181},{"style":603},[10182],{"type":55,"value":680},{"type":49,"tag":590,"props":10184,"children":10185},{"style":597},[10186],{"type":55,"value":1178},{"type":49,"tag":590,"props":10188,"children":10189},{"style":603},[10190],{"type":55,"value":680},{"type":49,"tag":590,"props":10192,"children":10193},{"style":597},[10194],{"type":55,"value":10195},"\u002Fmanifest.json ",{"type":49,"tag":590,"props":10197,"children":10198},{"style":603},[10199],{"type":55,"value":2301},{"type":49,"tag":590,"props":10201,"children":10202},{"style":603},[10203],{"type":55,"value":690},{"type":49,"tag":590,"props":10205,"children":10206},{"style":597},[10207],{"type":55,"value":3538},{"type":49,"tag":590,"props":10209,"children":10210},{"class":592,"line":1102},[10211,10215,10219,10223,10227,10231,10235,10239,10243,10247],{"type":49,"tag":590,"props":10212,"children":10213},{"style":603},[10214],{"type":55,"value":10170},{"type":49,"tag":590,"props":10216,"children":10217},{"style":603},[10218],{"type":55,"value":1549},{"type":49,"tag":590,"props":10220,"children":10221},{"style":597},[10222],{"type":55,"value":7819},{"type":49,"tag":590,"props":10224,"children":10225},{"style":603},[10226],{"type":55,"value":680},{"type":49,"tag":590,"props":10228,"children":10229},{"style":597},[10230],{"type":55,"value":1178},{"type":49,"tag":590,"props":10232,"children":10233},{"style":603},[10234],{"type":55,"value":680},{"type":49,"tag":590,"props":10236,"children":10237},{"style":597},[10238],{"type":55,"value":8051},{"type":49,"tag":590,"props":10240,"children":10241},{"style":603},[10242],{"type":55,"value":2301},{"type":49,"tag":590,"props":10244,"children":10245},{"style":603},[10246],{"type":55,"value":690},{"type":49,"tag":590,"props":10248,"children":10249},{"style":597},[10250],{"type":55,"value":3538},{"type":49,"tag":590,"props":10252,"children":10253},{"class":592,"line":1111},[10254,10259,10263,10267,10271,10275,10280,10285,10289,10293,10297],{"type":49,"tag":590,"props":10255,"children":10256},{"style":1037},[10257],{"type":55,"value":10258},"       awk",{"type":49,"tag":590,"props":10260,"children":10261},{"style":634},[10262],{"type":55,"value":3130},{"type":49,"tag":590,"props":10264,"children":10265},{"style":603},[10266],{"type":55,"value":1685},{"type":49,"tag":590,"props":10268,"children":10269},{"style":634},[10270],{"type":55,"value":3139},{"type":49,"tag":590,"props":10272,"children":10273},{"style":603},[10274],{"type":55,"value":1685},{"type":49,"tag":590,"props":10276,"children":10277},{"style":634},[10278],{"type":55,"value":10279}," -v",{"type":49,"tag":590,"props":10281,"children":10282},{"style":634},[10283],{"type":55,"value":10284}," id=",{"type":49,"tag":590,"props":10286,"children":10287},{"style":603},[10288],{"type":55,"value":680},{"type":49,"tag":590,"props":10290,"children":10291},{"style":597},[10292],{"type":55,"value":1178},{"type":49,"tag":590,"props":10294,"children":10295},{"style":603},[10296],{"type":55,"value":680},{"type":49,"tag":590,"props":10298,"children":10299},{"style":597},[10300],{"type":55,"value":3538},{"type":49,"tag":590,"props":10302,"children":10303},{"class":592,"line":1120},[10304,10309,10314,10318],{"type":49,"tag":590,"props":10305,"children":10306},{"style":603},[10307],{"type":55,"value":10308},"         '",{"type":49,"tag":590,"props":10310,"children":10311},{"style":634},[10312],{"type":55,"value":10313},"{gsub(\u002F \u002F,\"\",$2); if ($2==id) f=1} END {exit !f}",{"type":49,"tag":590,"props":10315,"children":10316},{"style":603},[10317],{"type":55,"value":1685},{"type":49,"tag":590,"props":10319,"children":10320},{"style":597},[10321],{"type":55,"value":3538},{"type":49,"tag":590,"props":10323,"children":10324},{"class":592,"line":1129},[10325,10330,10334,10338,10342],{"type":49,"tag":590,"props":10326,"children":10327},{"style":634},[10328],{"type":55,"value":10329},"         .shadow\u002F_dreams\u002F_index.md",{"type":49,"tag":590,"props":10331,"children":10332},{"style":603},[10333],{"type":55,"value":1602},{"type":49,"tag":590,"props":10335,"children":10336},{"style":634},[10337],{"type":55,"value":1607},{"type":49,"tag":590,"props":10339,"children":10340},{"style":603},[10341],{"type":55,"value":647},{"type":49,"tag":590,"props":10343,"children":10344},{"style":618},[10345],{"type":55,"value":1532},{"type":49,"tag":590,"props":10347,"children":10348},{"class":592,"line":25},[10349],{"type":49,"tag":590,"props":10350,"children":10351},{"style":971},[10352],{"type":55,"value":10353},"        # Safe to delete — all artifacts are on main\n",{"type":49,"tag":590,"props":10355,"children":10356},{"class":592,"line":1147},[10357,10362,10366,10370,10375,10379,10384,10388,10392,10396,10400],{"type":49,"tag":590,"props":10358,"children":10359},{"style":1037},[10360],{"type":55,"value":10361},"        git",{"type":49,"tag":590,"props":10363,"children":10364},{"style":634},[10365],{"type":55,"value":8684},{"type":49,"tag":590,"props":10367,"children":10368},{"style":634},[10369],{"type":55,"value":2240},{"type":49,"tag":590,"props":10371,"children":10372},{"style":634},[10373],{"type":55,"value":10374}," --delete",{"type":49,"tag":590,"props":10376,"children":10377},{"style":603},[10378],{"type":55,"value":670},{"type":49,"tag":590,"props":10380,"children":10381},{"style":597},[10382],{"type":55,"value":10383},"$BRANCH",{"type":49,"tag":590,"props":10385,"children":10386},{"style":603},[10387],{"type":55,"value":680},{"type":49,"tag":590,"props":10389,"children":10390},{"style":603},[10391],{"type":55,"value":1602},{"type":49,"tag":590,"props":10393,"children":10394},{"style":634},[10395],{"type":55,"value":1607},{"type":49,"tag":590,"props":10397,"children":10398},{"style":603},[10399],{"type":55,"value":690},{"type":49,"tag":590,"props":10401,"children":10402},{"style":597},[10403],{"type":55,"value":3538},{"type":49,"tag":590,"props":10405,"children":10406},{"class":592,"line":1198},[10407,10412,10416,10421,10425],{"type":49,"tag":590,"props":10408,"children":10409},{"style":1067},[10410],{"type":55,"value":10411},"            echo",{"type":49,"tag":590,"props":10413,"children":10414},{"style":603},[10415],{"type":55,"value":670},{"type":49,"tag":590,"props":10417,"children":10418},{"style":634},[10419],{"type":55,"value":10420},"  🗑 Deleted remote: ",{"type":49,"tag":590,"props":10422,"children":10423},{"style":597},[10424],{"type":55,"value":10383},{"type":49,"tag":590,"props":10426,"children":10427},{"style":603},[10428],{"type":55,"value":1099},{"type":49,"tag":590,"props":10430,"children":10431},{"class":592,"line":1206},[10432,10436,10440,10445,10449,10453,10457,10461,10465,10469],{"type":49,"tag":590,"props":10433,"children":10434},{"style":1037},[10435],{"type":55,"value":10361},{"type":49,"tag":590,"props":10437,"children":10438},{"style":634},[10439],{"type":55,"value":2619},{"type":49,"tag":590,"props":10441,"children":10442},{"style":634},[10443],{"type":55,"value":10444}," -D",{"type":49,"tag":590,"props":10446,"children":10447},{"style":603},[10448],{"type":55,"value":670},{"type":49,"tag":590,"props":10450,"children":10451},{"style":597},[10452],{"type":55,"value":10383},{"type":49,"tag":590,"props":10454,"children":10455},{"style":603},[10456],{"type":55,"value":680},{"type":49,"tag":590,"props":10458,"children":10459},{"style":603},[10460],{"type":55,"value":1602},{"type":49,"tag":590,"props":10462,"children":10463},{"style":634},[10464],{"type":55,"value":1607},{"type":49,"tag":590,"props":10466,"children":10467},{"style":603},[10468],{"type":55,"value":690},{"type":49,"tag":590,"props":10470,"children":10471},{"style":597},[10472],{"type":55,"value":3538},{"type":49,"tag":590,"props":10474,"children":10475},{"class":592,"line":1215},[10476,10480,10484,10489,10493],{"type":49,"tag":590,"props":10477,"children":10478},{"style":1067},[10479],{"type":55,"value":10411},{"type":49,"tag":590,"props":10481,"children":10482},{"style":603},[10483],{"type":55,"value":670},{"type":49,"tag":590,"props":10485,"children":10486},{"style":634},[10487],{"type":55,"value":10488},"  🗑 Deleted local: ",{"type":49,"tag":590,"props":10490,"children":10491},{"style":597},[10492],{"type":55,"value":10383},{"type":49,"tag":590,"props":10494,"children":10495},{"style":603},[10496],{"type":55,"value":1099},{"type":49,"tag":590,"props":10498,"children":10499},{"class":592,"line":1253},[10500],{"type":49,"tag":590,"props":10501,"children":10502},{"style":618},[10503],{"type":55,"value":2075},{"type":49,"tag":590,"props":10505,"children":10506},{"class":592,"line":1262},[10507,10511,10515,10520,10524,10529],{"type":49,"tag":590,"props":10508,"children":10509},{"style":1067},[10510],{"type":55,"value":2083},{"type":49,"tag":590,"props":10512,"children":10513},{"style":603},[10514],{"type":55,"value":670},{"type":49,"tag":590,"props":10516,"children":10517},{"style":634},[10518],{"type":55,"value":10519},"  ⚠️ KEEPING ",{"type":49,"tag":590,"props":10521,"children":10522},{"style":597},[10523],{"type":55,"value":10383},{"type":49,"tag":590,"props":10525,"children":10526},{"style":634},[10527],{"type":55,"value":10528}," — artifacts not verified on main",{"type":49,"tag":590,"props":10530,"children":10531},{"style":603},[10532],{"type":55,"value":1099},{"type":49,"tag":590,"props":10534,"children":10535},{"class":592,"line":1271},[10536],{"type":49,"tag":590,"props":10537,"children":10538},{"style":618},[10539],{"type":55,"value":1758},{"type":49,"tag":590,"props":10541,"children":10542},{"class":592,"line":1280},[10543],{"type":49,"tag":590,"props":10544,"children":10545},{"style":618},[10546],{"type":55,"value":729},{"type":49,"tag":58,"props":10548,"children":10549},{},[10550],{"type":49,"tag":64,"props":10551,"children":10552},{},[10553],{"type":55,"value":5898},{"type":49,"tag":212,"props":10555,"children":10556},{},[10557,10562,10567,10579,10603],{"type":49,"tag":216,"props":10558,"children":10559},{},[10560],{"type":55,"value":10561},"NEVER delete branches before push to main succeeds",{"type":49,"tag":216,"props":10563,"children":10564},{},[10565],{"type":55,"value":10566},"NEVER delete branches that have un-reconciled descendants",{"type":49,"tag":216,"props":10568,"children":10569},{},[10570,10571,10577],{"type":55,"value":5436},{"type":49,"tag":105,"props":10572,"children":10574},{"className":10573},[],[10575],{"type":55,"value":10576},"SHADOWFROG_KEEP_BRANCHES=1",{"type":55,"value":10578}," is set, skip cleanup (for eval harness)",{"type":49,"tag":216,"props":10580,"children":10581},{},[10582,10587,10589,10594,10596,10601],{"type":49,"tag":105,"props":10583,"children":10585},{"className":10584},[],[10586],{"type":55,"value":4132},{"type":55,"value":10588}," branches are cleaned up too — ",{"type":49,"tag":105,"props":10590,"children":10592},{"className":10591},[],[10593],{"type":55,"value":4196},{"type":55,"value":10595}," + ",{"type":49,"tag":105,"props":10597,"children":10599},{"className":10598},[],[10600],{"type":55,"value":7608},{"type":55,"value":10602}," in\nindex preserves recoverability",{"type":49,"tag":216,"props":10604,"children":10605},{},[10606,10608,10613],{"type":55,"value":10607},"Branches with compounding descendants: delete ONLY after descendants are\nalso reconciled (check ",{"type":49,"tag":105,"props":10609,"children":10611},{"className":10610},[],[10612],{"type":55,"value":3670},{"type":55,"value":10614}," for entries listing this branch as parent)",{"type":49,"tag":58,"props":10616,"children":10617},{},[10618,10623,10625,10631],{"type":49,"tag":64,"props":10619,"children":10620},{},[10621],{"type":55,"value":10622},"Worktree cleanup",{"type":55,"value":10624}," happens separately (Phase 7 — see \"Worktree Pruning\"\nbelow). Worktrees can be removed immediately after branch push regardless\nof reconciliation status. Reconciled branches also have their worktree\nGC'd automatically by ",{"type":49,"tag":105,"props":10626,"children":10628},{"className":10627},[],[10629],{"type":55,"value":10630},"dream-reconcile.py --cleanup-branches",{"type":55,"value":84},{"type":49,"tag":98,"props":10633,"children":10635},{"id":10634},"recovery",[10636],{"type":55,"value":10637},"Recovery",{"type":49,"tag":58,"props":10639,"children":10640},{},[10641,10643,10648],{"type":55,"value":10642},"If reconciliation is interrupted: branches are already pushed (no data\nloss). Re-run reconciliation — it's idempotent. The reconciler uses\n",{"type":49,"tag":105,"props":10644,"children":10646},{"className":10645},[],[10647],{"type":55,"value":4153},{"type":55,"value":10649}," as its journal: any branch already listed there is\nskipped, any branch not listed is reprocessed. The reconciler's own\nstep 8 verifies all artifacts on main; if verification fails the script\nexits non-zero — fix the cause and re-run.",{"type":49,"tag":86,"props":10651,"children":10653},{"id":10652},"phase-7-summary-review-and-pruning",[10654],{"type":55,"value":10655},"Phase 7: Summary, Review, and Pruning",{"type":49,"tag":98,"props":10657,"children":10659},{"id":10658},"end-of-session-cleanup",[10660],{"type":55,"value":10661},"End-of-Session Cleanup",{"type":49,"tag":58,"props":10663,"children":10664},{},[10665,10667,10672,10674,10679],{"type":55,"value":10666},"Before the summary, sweep leftover worktrees from the mid-batch leak\n(dreams that pushed but weren't ",{"type":49,"tag":105,"props":10668,"children":10670},{"className":10669},[],[10671],{"type":55,"value":43},{"type":55,"value":10673},"'d before the loop\nexited). Only run this once the agent has asserted no more dreams are\nstarting ",{"type":49,"tag":64,"props":10675,"children":10676},{},[10677],{"type":55,"value":10678},"in this namespace",{"type":55,"value":2509},{"type":49,"tag":200,"props":10681,"children":10683},{"className":582,"code":10682,"language":584,"meta":208,"style":208},"bash \"$SKILL_DIR\u002Fdream-gc.sh\" \\\n    --task-complete --namespace \"$DREAM_NS\" \\\n    --repo-root \"$REPO_ROOT\" --min-age-min 0\n",[10684],{"type":49,"tag":105,"props":10685,"children":10686},{"__ignoreMap":208},[10687,10715,10745],{"type":49,"tag":590,"props":10688,"children":10689},{"class":592,"line":593},[10690,10694,10698,10702,10707,10711],{"type":49,"tag":590,"props":10691,"children":10692},{"style":1037},[10693],{"type":55,"value":584},{"type":49,"tag":590,"props":10695,"children":10696},{"style":603},[10697],{"type":55,"value":670},{"type":49,"tag":590,"props":10699,"children":10700},{"style":597},[10701],{"type":55,"value":1044},{"type":49,"tag":590,"props":10703,"children":10704},{"style":634},[10705],{"type":55,"value":10706},"\u002Fdream-gc.sh",{"type":49,"tag":590,"props":10708,"children":10709},{"style":603},[10710],{"type":55,"value":680},{"type":49,"tag":590,"props":10712,"children":10713},{"style":597},[10714],{"type":55,"value":3538},{"type":49,"tag":590,"props":10716,"children":10717},{"class":592,"line":614},[10718,10723,10728,10732,10737,10741],{"type":49,"tag":590,"props":10719,"children":10720},{"style":634},[10721],{"type":55,"value":10722},"    --task-complete",{"type":49,"tag":590,"props":10724,"children":10725},{"style":634},[10726],{"type":55,"value":10727}," --namespace",{"type":49,"tag":590,"props":10729,"children":10730},{"style":603},[10731],{"type":55,"value":670},{"type":49,"tag":590,"props":10733,"children":10734},{"style":597},[10735],{"type":55,"value":10736},"$DREAM_NS",{"type":49,"tag":590,"props":10738,"children":10739},{"style":603},[10740],{"type":55,"value":680},{"type":49,"tag":590,"props":10742,"children":10743},{"style":597},[10744],{"type":55,"value":3538},{"type":49,"tag":590,"props":10746,"children":10747},{"class":592,"line":29},[10748,10753,10757,10761,10765,10770],{"type":49,"tag":590,"props":10749,"children":10750},{"style":634},[10751],{"type":55,"value":10752},"    --repo-root",{"type":49,"tag":590,"props":10754,"children":10755},{"style":603},[10756],{"type":55,"value":670},{"type":49,"tag":590,"props":10758,"children":10759},{"style":597},[10760],{"type":55,"value":1246},{"type":49,"tag":590,"props":10762,"children":10763},{"style":603},[10764],{"type":55,"value":680},{"type":49,"tag":590,"props":10766,"children":10767},{"style":634},[10768],{"type":55,"value":10769}," --min-age-min",{"type":49,"tag":590,"props":10771,"children":10772},{"style":1073},[10773],{"type":55,"value":10774}," 0\n",{"type":49,"tag":58,"props":10776,"children":10777},{},[10778,10780,10786,10788,10794],{"type":55,"value":10779},"See \"Worktree Pruning\" below for ",{"type":49,"tag":105,"props":10781,"children":10783},{"className":10782},[],[10784],{"type":55,"value":10785},"--namespace",{"type":55,"value":10787}," rationale, ",{"type":49,"tag":105,"props":10789,"children":10791},{"className":10790},[],[10792],{"type":55,"value":10793},"--min-age-min",{"type":55,"value":10795},"\nsemantics, and the other three cleanup paths.",{"type":49,"tag":98,"props":10797,"children":10799},{"id":10798},"summary",[10800],{"type":55,"value":10801},"Summary",{"type":49,"tag":200,"props":10803,"children":10806},{"className":10804,"code":10805,"language":55},[203],"Dream session complete.\n  Results (by category):\n    Investigation: N tasks, M discoveries\n    Bug hunting: ...\n  Branches pushed: K\n  Branch tree:\n    main\n    +-- dream\u002F\u003Cid-1> (useful)\n    +-- dream\u002F\u003Cid-2> (dead_end)\n  Top findings:\n    - \u003Cdiscovery> -- \u003Ccategory>\n",[10807],{"type":49,"tag":105,"props":10808,"children":10809},{"__ignoreMap":208},[10810],{"type":55,"value":10805},{"type":49,"tag":98,"props":10812,"children":10814},{"id":10813},"experiment-review",[10815],{"type":55,"value":10816},"Experiment Review",{"type":49,"tag":58,"props":10818,"children":10819},{},[10820],{"type":55,"value":10821},"Walk through each experiment with the user. Actions:",{"type":49,"tag":212,"props":10823,"children":10824},{},[10825,10835,10852],{"type":49,"tag":216,"props":10826,"children":10827},{},[10828,10833],{"type":49,"tag":64,"props":10829,"children":10830},{},[10831],{"type":55,"value":10832},"Keep",{"type":55,"value":10834}," (default) — branch and report stay",{"type":49,"tag":216,"props":10836,"children":10837},{},[10838,10843,10845,10850],{"type":49,"tag":64,"props":10839,"children":10840},{},[10841],{"type":55,"value":10842},"Delete",{"type":55,"value":10844}," — remove from ",{"type":49,"tag":105,"props":10846,"children":10848},{"className":10847},[],[10849],{"type":55,"value":3685},{"type":55,"value":10851},", delete remote branch",{"type":49,"tag":216,"props":10853,"children":10854},{},[10855,10860],{"type":49,"tag":64,"props":10856,"children":10857},{},[10858],{"type":55,"value":10859},"Checkout",{"type":55,"value":10861}," — inspect the code live",{"type":49,"tag":58,"props":10863,"children":10864},{},[10865],{"type":55,"value":10866},"Wait for user confirmation before deleting any remote branch.",{"type":49,"tag":98,"props":10868,"children":10870},{"id":10869},"branch-pruning",[10871],{"type":55,"value":10872},"Branch Pruning",{"type":49,"tag":58,"props":10874,"children":10875},{},[10876,10878,10883],{"type":55,"value":10877},"Reconciled branches are cleaned up automatically after push. For\nbranches not auto-cleaned (push failed, or ",{"type":49,"tag":105,"props":10879,"children":10881},{"className":10880},[],[10882],{"type":55,"value":10576},{"type":55,"value":10884},"\nset), apply the rules in Phase 6 → Post-Reconciliation Branch Cleanup\n(above).",{"type":49,"tag":98,"props":10886,"children":10888},{"id":10887},"worktree-pruning",[10889],{"type":55,"value":10890},"Worktree Pruning",{"type":49,"tag":58,"props":10892,"children":10893},{},[10894,10896,10902],{"type":55,"value":10895},"Dream worktrees live OUTSIDE the repo at\n",{"type":49,"tag":105,"props":10897,"children":10899},{"className":10898},[],[10900],{"type":55,"value":10901},"${DREAM_WORKTREE_BASE:-\u002Ftmp\u002Fshadowfrog-dreams}\u002F\u003Cns>\u002Fdream-\u003Cslug>\u002F",{"type":55,"value":10903},". There\nare four places they get cleaned up:",{"type":49,"tag":531,"props":10905,"children":10906},{},[10907,10927,10947,11026],{"type":49,"tag":216,"props":10908,"children":10909},{},[10910,10918,10920,10925],{"type":49,"tag":64,"props":10911,"children":10912},{},[10913],{"type":49,"tag":105,"props":10914,"children":10916},{"className":10915},[],[10917],{"type":55,"value":43},{"type":55,"value":10919}," — called by the agent after each ",{"type":49,"tag":105,"props":10921,"children":10923},{"className":10922},[],[10924],{"type":55,"value":820},{"type":55,"value":10926}," (see\n\"Worktree Cleanup\" earlier in this skill). Removes ONE worktree.",{"type":49,"tag":216,"props":10928,"children":10929},{},[10930,10938,10940,10945],{"type":49,"tag":64,"props":10931,"children":10932},{},[10933],{"type":49,"tag":105,"props":10934,"children":10936},{"className":10935},[],[10937],{"type":55,"value":10630},{"type":55,"value":10939}," — after deleting a merged\nbranch, also ",{"type":49,"tag":105,"props":10941,"children":10943},{"className":10942},[],[10944],{"type":55,"value":8893},{"type":55,"value":10946},"s its worktree directory. No extra command needed.",{"type":49,"tag":216,"props":10948,"children":10949},{},[10950,10960,10962,10967,10969,10975,10977,10983,10985,10989,10991],{"type":49,"tag":64,"props":10951,"children":10952},{},[10953,10958],{"type":49,"tag":105,"props":10954,"children":10956},{"className":10955},[],[10957],{"type":55,"value":44},{"type":55,"value":10959}," (auto-triggered)",{"type":55,"value":10961}," — ",{"type":49,"tag":105,"props":10963,"children":10965},{"className":10964},[],[10966],{"type":55,"value":42},{"type":55,"value":10968}," invokes this\nsweeper at the start of each new dream, throttled by a per-namespace\n",{"type":49,"tag":105,"props":10970,"children":10972},{"className":10971},[],[10973],{"type":55,"value":10974},".last-gc",{"type":55,"value":10976}," tombstone to run at most once per ",{"type":49,"tag":105,"props":10978,"children":10980},{"className":10979},[],[10981],{"type":55,"value":10982},"DREAM_GC_INTERVAL_MIN",{"type":55,"value":10984},"\nminutes (default 60). Catches orphans from crashed dreams, machine\nreboots, OOM-killed agents — the long tail of cleanup failures that\naccumulated GBs of leaked worktrees on long-running fleets.",{"type":49,"tag":10986,"props":10987,"children":10988},"br",{},[],{"type":55,"value":10990},"Env knobs (all optional, sensible defaults):",{"type":49,"tag":212,"props":10992,"children":10993},{},[10994,11005,11015],{"type":49,"tag":216,"props":10995,"children":10996},{},[10997,11003],{"type":49,"tag":105,"props":10998,"children":11000},{"className":10999},[],[11001],{"type":55,"value":11002},"DREAM_GC_AUTO=0",{"type":55,"value":11004}," — disable the auto-trigger entirely",{"type":49,"tag":216,"props":11006,"children":11007},{},[11008,11013],{"type":49,"tag":105,"props":11009,"children":11011},{"className":11010},[],[11012],{"type":55,"value":10982},{"type":55,"value":11014}," — how often the trigger fires (default 60)",{"type":49,"tag":216,"props":11016,"children":11017},{},[11018,11024],{"type":49,"tag":105,"props":11019,"children":11021},{"className":11020},[],[11022],{"type":55,"value":11023},"DREAM_GC_AGE_MIN",{"type":55,"value":11025}," — min worktree age to sweep (default 60)",{"type":49,"tag":216,"props":11027,"children":11028},{},[11029,11038,11040,11046,11048,11054,11056,11061,11063,11069,11071,11075,11077,11080,11085,11086,11091,11093,11098,11100,11105,11107,11112,11114,11117,11122,11124,11129,11131,11137,11139,11145,11147,11153,11155],{"type":49,"tag":64,"props":11030,"children":11031},{},[11032],{"type":49,"tag":105,"props":11033,"children":11035},{"className":11034},[],[11036],{"type":55,"value":11037},"dream-gc.sh --task-complete --namespace \"$DREAM_NS\"",{"type":55,"value":11039}," —\nend-of-session sweep, run by the agent when it stops dreaming (dream\ncount reached, or genuinely blocked). Unlike the auto-trigger, this\nmode ALSO removes ",{"type":49,"tag":105,"props":11041,"children":11043},{"className":11042},[],[11044],{"type":55,"value":11045},"stale-registered",{"type":55,"value":11047}," worktrees (valid ",{"type":49,"tag":105,"props":11049,"children":11051},{"className":11050},[],[11052],{"type":55,"value":11053},".git",{"type":55,"value":11055}," pointer\nbut no ",{"type":49,"tag":105,"props":11057,"children":11059},{"className":11058},[],[11060],{"type":55,"value":43},{"type":55,"value":11062}," ever ran on them — the mid-batch\n",{"type":49,"tag":105,"props":11064,"children":11066},{"className":11065},[],[11067],{"type":55,"value":11068},"task_complete",{"type":55,"value":11070}," leak). The agent's assertion \"I'm done dreaming\n",{"type":49,"tag":64,"props":11072,"children":11073},{},[11074],{"type":55,"value":10678},{"type":55,"value":11076},"\" is what makes this safe.",{"type":49,"tag":10986,"props":11078,"children":11079},{},[],{"type":49,"tag":64,"props":11081,"children":11082},{},[11083],{"type":55,"value":11084},"Required:",{"type":55,"value":6796},{"type":49,"tag":105,"props":11087,"children":11089},{"className":11088},[],[11090],{"type":55,"value":10785},{"type":55,"value":11092}," (or ",{"type":49,"tag":105,"props":11094,"children":11096},{"className":11095},[],[11097],{"type":55,"value":245},{"type":55,"value":11099}," env). The script\nrefuses with exit 2 if neither is given — that prevents a multi-repo\nfleet sharing one ",{"type":49,"tag":105,"props":11101,"children":11103},{"className":11102},[],[11104],{"type":55,"value":925},{"type":55,"value":11106}," from one agent's\n",{"type":49,"tag":105,"props":11108,"children":11110},{"className":11109},[],[11111],{"type":55,"value":11068},{"type":55,"value":11113}," destroying another agent's live worktrees.",{"type":49,"tag":10986,"props":11115,"children":11116},{},[],{"type":49,"tag":105,"props":11118,"children":11120},{"className":11119},[],[11121],{"type":55,"value":10793},{"type":55,"value":11123}," is an ",{"type":49,"tag":64,"props":11125,"children":11126},{},[11127],{"type":55,"value":11128},"mtime gate, not a liveness check",{"type":55,"value":11130},". Pass ",{"type":49,"tag":105,"props":11132,"children":11134},{"className":11133},[],[11135],{"type":55,"value":11136},"0",{"type":55,"value":11138},"\nat end-of-session to catch the freshly-pushed final batch; pass a\nhigher value (e.g. ",{"type":49,"tag":105,"props":11140,"children":11142},{"className":11141},[],[11143],{"type":55,"value":11144},"10",{"type":55,"value":11146},") if you can't fully assert that no other\ndream in the same namespace is in flight. Locked worktrees\n(",{"type":49,"tag":105,"props":11148,"children":11150},{"className":11149},[],[11151],{"type":55,"value":11152},"git worktree lock",{"type":55,"value":11154},") are always respected — the sweeper WARNs and\nleaves them in place.",{"type":49,"tag":200,"props":11156,"children":11158},{"className":582,"code":11157,"language":584,"meta":208,"style":208},"# At the end of the dream loop, before the final summary:\nbash \"$SKILL_DIR\u002Fdream-gc.sh\" \\\n    --task-complete \\\n    --namespace \"$DREAM_NS\" \\\n    --repo-root \"$REPO_ROOT\" \\\n    --min-age-min 0\n",[11159],{"type":49,"tag":105,"props":11160,"children":11161},{"__ignoreMap":208},[11162,11170,11197,11208,11232,11255],{"type":49,"tag":590,"props":11163,"children":11164},{"class":592,"line":593},[11165],{"type":49,"tag":590,"props":11166,"children":11167},{"style":971},[11168],{"type":55,"value":11169},"# At the end of the dream loop, before the final summary:\n",{"type":49,"tag":590,"props":11171,"children":11172},{"class":592,"line":614},[11173,11177,11181,11185,11189,11193],{"type":49,"tag":590,"props":11174,"children":11175},{"style":1037},[11176],{"type":55,"value":584},{"type":49,"tag":590,"props":11178,"children":11179},{"style":603},[11180],{"type":55,"value":670},{"type":49,"tag":590,"props":11182,"children":11183},{"style":597},[11184],{"type":55,"value":1044},{"type":49,"tag":590,"props":11186,"children":11187},{"style":634},[11188],{"type":55,"value":10706},{"type":49,"tag":590,"props":11190,"children":11191},{"style":603},[11192],{"type":55,"value":680},{"type":49,"tag":590,"props":11194,"children":11195},{"style":597},[11196],{"type":55,"value":3538},{"type":49,"tag":590,"props":11198,"children":11199},{"class":592,"line":29},[11200,11204],{"type":49,"tag":590,"props":11201,"children":11202},{"style":634},[11203],{"type":55,"value":10722},{"type":49,"tag":590,"props":11205,"children":11206},{"style":597},[11207],{"type":55,"value":3538},{"type":49,"tag":590,"props":11209,"children":11210},{"class":592,"line":723},[11211,11216,11220,11224,11228],{"type":49,"tag":590,"props":11212,"children":11213},{"style":634},[11214],{"type":55,"value":11215},"    --namespace",{"type":49,"tag":590,"props":11217,"children":11218},{"style":603},[11219],{"type":55,"value":670},{"type":49,"tag":590,"props":11221,"children":11222},{"style":597},[11223],{"type":55,"value":10736},{"type":49,"tag":590,"props":11225,"children":11226},{"style":603},[11227],{"type":55,"value":680},{"type":49,"tag":590,"props":11229,"children":11230},{"style":597},[11231],{"type":55,"value":3538},{"type":49,"tag":590,"props":11233,"children":11234},{"class":592,"line":1001},[11235,11239,11243,11247,11251],{"type":49,"tag":590,"props":11236,"children":11237},{"style":634},[11238],{"type":55,"value":10752},{"type":49,"tag":590,"props":11240,"children":11241},{"style":603},[11242],{"type":55,"value":670},{"type":49,"tag":590,"props":11244,"children":11245},{"style":597},[11246],{"type":55,"value":1246},{"type":49,"tag":590,"props":11248,"children":11249},{"style":603},[11250],{"type":55,"value":680},{"type":49,"tag":590,"props":11252,"children":11253},{"style":597},[11254],{"type":55,"value":3538},{"type":49,"tag":590,"props":11256,"children":11257},{"class":592,"line":1010},[11258,11263],{"type":49,"tag":590,"props":11259,"children":11260},{"style":634},[11261],{"type":55,"value":11262},"    --min-age-min",{"type":49,"tag":590,"props":11264,"children":11265},{"style":1073},[11266],{"type":55,"value":10774},{"type":49,"tag":58,"props":11268,"children":11269},{},[11270,11272,11278,11280,11285,11287,11293,11295,11300,11302,11308],{"type":55,"value":11271},"All four paths share a single safety gate (",{"type":49,"tag":105,"props":11273,"children":11275},{"className":11274},[],[11276],{"type":55,"value":11277},"_worktree_safety.py",{"type":55,"value":11279},") that\nrefuses ANY path which is not strictly under ",{"type":49,"tag":105,"props":11281,"children":11283},{"className":11282},[],[11284],{"type":55,"value":925},{"type":55,"value":11286}," and\ndoesn't match the exact ",{"type":49,"tag":105,"props":11288,"children":11290},{"className":11289},[],[11291],{"type":55,"value":11292},"\u003Cbase>\u002F\u003Cns>\u002Fdream-\u003Cslug>",{"type":55,"value":11294}," shape. The gate is\nunconditional — even an attacker-controlled ",{"type":49,"tag":105,"props":11296,"children":11298},{"className":11297},[],[11299],{"type":55,"value":925},{"type":55,"value":11301}," cannot\ncause ",{"type":49,"tag":105,"props":11303,"children":11305},{"className":11304},[],[11306],{"type":55,"value":11307},"rm -rf \u002F",{"type":55,"value":84},{"type":49,"tag":98,"props":11310,"children":11312},{"id":11311},"applying-dream-code",[11313],{"type":55,"value":11314},"Applying Dream Code",{"type":49,"tag":200,"props":11316,"children":11318},{"className":582,"code":11317,"language":584,"meta":208,"style":208},"# Option 1: Merge the dream branch\ngit checkout \"$DEFAULT_BRANCH\"\ngit merge dream\u002F\u003Cid> --no-ff -m \"Adopt dream: \u003Ctitle>\"\n\n# Option 2: Cherry-pick specific commits\ngit cherry-pick \u003Ctip_commit>\n\n# Option 3: Apply the patch (if branch was pruned but commit exists)\ngit show \u003Ctip_commit> | git apply\n",[11319],{"type":49,"tag":105,"props":11320,"children":11321},{"__ignoreMap":208},[11322,11330,11353,11410,11417,11425,11457,11464,11472],{"type":49,"tag":590,"props":11323,"children":11324},{"class":592,"line":593},[11325],{"type":49,"tag":590,"props":11326,"children":11327},{"style":971},[11328],{"type":55,"value":11329},"# Option 1: Merge the dream branch\n",{"type":49,"tag":590,"props":11331,"children":11332},{"class":592,"line":614},[11333,11337,11341,11345,11349],{"type":49,"tag":590,"props":11334,"children":11335},{"style":1037},[11336],{"type":55,"value":1440},{"type":49,"tag":590,"props":11338,"children":11339},{"style":634},[11340],{"type":55,"value":9186},{"type":49,"tag":590,"props":11342,"children":11343},{"style":603},[11344],{"type":55,"value":670},{"type":49,"tag":590,"props":11346,"children":11347},{"style":597},[11348],{"type":55,"value":1921},{"type":49,"tag":590,"props":11350,"children":11351},{"style":603},[11352],{"type":55,"value":1099},{"type":49,"tag":590,"props":11354,"children":11355},{"class":592,"line":29},[11356,11360,11365,11370,11374,11379,11384,11388,11393,11397,11401,11406],{"type":49,"tag":590,"props":11357,"children":11358},{"style":1037},[11359],{"type":55,"value":1440},{"type":49,"tag":590,"props":11361,"children":11362},{"style":634},[11363],{"type":55,"value":11364}," merge",{"type":49,"tag":590,"props":11366,"children":11367},{"style":634},[11368],{"type":55,"value":11369}," dream\u002F",{"type":49,"tag":590,"props":11371,"children":11372},{"style":603},[11373],{"type":55,"value":5257},{"type":49,"tag":590,"props":11375,"children":11376},{"style":634},[11377],{"type":55,"value":11378},"i",{"type":49,"tag":590,"props":11380,"children":11381},{"style":597},[11382],{"type":55,"value":11383},"d",{"type":49,"tag":590,"props":11385,"children":11386},{"style":603},[11387],{"type":55,"value":5267},{"type":49,"tag":590,"props":11389,"children":11390},{"style":634},[11391],{"type":55,"value":11392}," --no-ff",{"type":49,"tag":590,"props":11394,"children":11395},{"style":634},[11396],{"type":55,"value":7785},{"type":49,"tag":590,"props":11398,"children":11399},{"style":603},[11400],{"type":55,"value":670},{"type":49,"tag":590,"props":11402,"children":11403},{"style":634},[11404],{"type":55,"value":11405},"Adopt dream: \u003Ctitle>",{"type":49,"tag":590,"props":11407,"children":11408},{"style":603},[11409],{"type":55,"value":1099},{"type":49,"tag":590,"props":11411,"children":11412},{"class":592,"line":723},[11413],{"type":49,"tag":590,"props":11414,"children":11415},{"emptyLinePlaceholder":1133},[11416],{"type":55,"value":1136},{"type":49,"tag":590,"props":11418,"children":11419},{"class":592,"line":1001},[11420],{"type":49,"tag":590,"props":11421,"children":11422},{"style":971},[11423],{"type":55,"value":11424},"# Option 2: Cherry-pick specific commits\n",{"type":49,"tag":590,"props":11426,"children":11427},{"class":592,"line":1010},[11428,11432,11437,11442,11447,11452],{"type":49,"tag":590,"props":11429,"children":11430},{"style":1037},[11431],{"type":55,"value":1440},{"type":49,"tag":590,"props":11433,"children":11434},{"style":634},[11435],{"type":55,"value":11436}," cherry-pick",{"type":49,"tag":590,"props":11438,"children":11439},{"style":603},[11440],{"type":55,"value":11441}," \u003C",{"type":49,"tag":590,"props":11443,"children":11444},{"style":634},[11445],{"type":55,"value":11446},"tip_commi",{"type":49,"tag":590,"props":11448,"children":11449},{"style":597},[11450],{"type":55,"value":11451},"t",{"type":49,"tag":590,"props":11453,"children":11454},{"style":603},[11455],{"type":55,"value":11456},">\n",{"type":49,"tag":590,"props":11458,"children":11459},{"class":592,"line":1019},[11460],{"type":49,"tag":590,"props":11461,"children":11462},{"emptyLinePlaceholder":1133},[11463],{"type":55,"value":1136},{"type":49,"tag":590,"props":11465,"children":11466},{"class":592,"line":1079},[11467],{"type":49,"tag":590,"props":11468,"children":11469},{"style":971},[11470],{"type":55,"value":11471},"# Option 3: Apply the patch (if branch was pruned but commit exists)\n",{"type":49,"tag":590,"props":11473,"children":11474},{"class":592,"line":1102},[11475,11479,11484,11488,11492,11496,11500,11504,11508],{"type":49,"tag":590,"props":11476,"children":11477},{"style":1037},[11478],{"type":55,"value":1440},{"type":49,"tag":590,"props":11480,"children":11481},{"style":634},[11482],{"type":55,"value":11483}," show",{"type":49,"tag":590,"props":11485,"children":11486},{"style":603},[11487],{"type":55,"value":11441},{"type":49,"tag":590,"props":11489,"children":11490},{"style":634},[11491],{"type":55,"value":11446},{"type":49,"tag":590,"props":11493,"children":11494},{"style":597},[11495],{"type":55,"value":11451},{"type":49,"tag":590,"props":11497,"children":11498},{"style":603},[11499],{"type":55,"value":5267},{"type":49,"tag":590,"props":11501,"children":11502},{"style":603},[11503],{"type":55,"value":1695},{"type":49,"tag":590,"props":11505,"children":11506},{"style":1037},[11507],{"type":55,"value":1945},{"type":49,"tag":590,"props":11509,"children":11510},{"style":634},[11511],{"type":55,"value":11512}," apply\n",{"type":49,"tag":86,"props":11514,"children":11516},{"id":11515},"guidance",[11517],{"type":55,"value":11518},"Guidance",{"type":49,"tag":212,"props":11520,"children":11521},{},[11522,11532,11542,11552,11562,11572,11582],{"type":49,"tag":216,"props":11523,"children":11524},{},[11525,11530],{"type":49,"tag":64,"props":11526,"children":11527},{},[11528],{"type":55,"value":11529},"Always experiment.",{"type":55,"value":11531}," Implementation reveals what reading cannot.",{"type":49,"tag":216,"props":11533,"children":11534},{},[11535,11540],{"type":49,"tag":64,"props":11536,"children":11537},{},[11538],{"type":55,"value":11539},"Small tasks, big lessons.",{"type":55,"value":11541}," 30-minute experiment > 3 hours reading.",{"type":49,"tag":216,"props":11543,"children":11544},{},[11545,11550],{"type":49,"tag":64,"props":11546,"children":11547},{},[11548],{"type":55,"value":11549},"Fail forward.",{"type":55,"value":11551}," \"Tried X, broke because Y\" is extremely valuable.",{"type":49,"tag":216,"props":11553,"children":11554},{},[11555,11560],{"type":49,"tag":64,"props":11556,"children":11557},{},[11558],{"type":55,"value":11559},"Breadth over depth.",{"type":55,"value":11561}," More files with 2-3 discoveries > one file with 20.",{"type":49,"tag":216,"props":11563,"children":11564},{},[11565,11570],{"type":49,"tag":64,"props":11566,"children":11567},{},[11568],{"type":55,"value":11569},"No descriptions.",{"type":55,"value":11571}," \"Catches all exceptions including OOM\" yes.\n\"This function authenticates users\" no.",{"type":49,"tag":216,"props":11573,"children":11574},{},[11575,11580],{"type":49,"tag":64,"props":11576,"children":11577},{},[11578],{"type":55,"value":11579},"Compound deliberately.",{"type":55,"value":11581}," Read parent's report. Build on findings.",{"type":49,"tag":216,"props":11583,"children":11584},{},[11585,11590],{"type":49,"tag":64,"props":11586,"children":11587},{},[11588],{"type":55,"value":11589},"Branches are cheap, shadow is expensive.",{"type":55,"value":11591}," Push freely, write carefully.",{"type":49,"tag":86,"props":11593,"children":11595},{"id":11594},"experiment-completion-criteria",[11596],{"type":55,"value":11597},"Experiment Completion Criteria",{"type":49,"tag":58,"props":11599,"children":11600},{},[11601],{"type":55,"value":11602},"A task is complete ONLY when ALL of these hold:",{"type":49,"tag":531,"props":11604,"children":11605},{},[11606,11617,11628,11633,11645,11650,11660,11665],{"type":49,"tag":216,"props":11607,"children":11608},{},[11609,11611,11616],{"type":55,"value":11610},"Code was written or modified (non-empty ",{"type":49,"tag":105,"props":11612,"children":11614},{"className":11613},[],[11615],{"type":55,"value":4196},{"type":55,"value":551},{"type":49,"tag":216,"props":11618,"children":11619},{},[11620,11622],{"type":55,"value":11621},"At least one command was executed with exit code recorded in ",{"type":49,"tag":105,"props":11623,"children":11625},{"className":11624},[],[11626],{"type":55,"value":11627},"Commands Run",{"type":49,"tag":216,"props":11629,"children":11630},{},[11631],{"type":55,"value":11632},"At least one finding tied to running code (not just reading)",{"type":49,"tag":216,"props":11634,"children":11635},{},[11636,11638,11643],{"type":55,"value":11637},"At least one per-file ",{"type":49,"tag":105,"props":11639,"children":11641},{"className":11640},[],[11642],{"type":55,"value":5626},{"type":55,"value":11644}," edit made",{"type":49,"tag":216,"props":11646,"children":11647},{},[11648],{"type":55,"value":11649},"Discoveries are behavioral insights, not feature descriptions",{"type":49,"tag":216,"props":11651,"children":11652},{},[11653,11658],{"type":49,"tag":105,"props":11654,"children":11656},{"className":11655},[],[11657],{"type":55,"value":4177},{"type":55,"value":11659}," saved with all required fields",{"type":49,"tag":216,"props":11661,"children":11662},{},[11663],{"type":55,"value":11664},"Dream branch pushed to remote",{"type":49,"tag":216,"props":11666,"children":11667},{},[11668,11670,11675,11676,11681,11682,11687,11689,11694],{"type":55,"value":11669},"Reconciliation completed and verified (",{"type":49,"tag":105,"props":11671,"children":11673},{"className":11672},[],[11674],{"type":55,"value":4177},{"type":55,"value":460},{"type":49,"tag":105,"props":11677,"children":11679},{"className":11678},[],[11680],{"type":55,"value":4185},{"type":55,"value":467},{"type":49,"tag":105,"props":11683,"children":11685},{"className":11684},[],[11686],{"type":55,"value":4196},{"type":55,"value":11688}," exist on main, ",{"type":49,"tag":105,"props":11690,"children":11692},{"className":11691},[],[11693],{"type":55,"value":3670},{"type":55,"value":11695}," has entry)",{"type":49,"tag":58,"props":11697,"children":11698},{},[11699],{"type":55,"value":11700},"Additional gates:",{"type":49,"tag":212,"props":11702,"children":11703},{},[11704,11721],{"type":49,"tag":216,"props":11705,"children":11706},{},[11707,11712,11713,11719],{"type":49,"tag":64,"props":11708,"children":11709},{},[11710],{"type":55,"value":11711},"Feature design:",{"type":55,"value":6796},{"type":49,"tag":105,"props":11714,"children":11716},{"className":11715},[],[11717],{"type":55,"value":11718},"## Motivation",{"type":55,"value":11720}," cites specific existing code",{"type":49,"tag":216,"props":11722,"children":11723},{},[11724,11729,11730,11736],{"type":49,"tag":64,"props":11725,"children":11726},{},[11727],{"type":55,"value":11728},"Compounding:",{"type":55,"value":6796},{"type":49,"tag":105,"props":11731,"children":11733},{"className":11732},[],[11734],{"type":55,"value":11735},"## Compounding Delta",{"type":55,"value":11737}," explains what parent code was modified",{"type":49,"tag":58,"props":11739,"children":11740},{},[11741,11743,11748,11750,11755],{"type":55,"value":11742},"A task that fails these criteria is ",{"type":49,"tag":64,"props":11744,"children":11745},{},[11746],{"type":55,"value":11747},"not completed",{"type":55,"value":11749},". If setup fails or\nthe experiment produces nothing, mark it ",{"type":49,"tag":105,"props":11751,"children":11753},{"className":11752},[],[11754],{"type":55,"value":5484},{"type":55,"value":11756}," in the summary and\nreplace it with another experiment. Blocked tasks do not count toward the\ncategory minimum.",{"type":49,"tag":11758,"props":11759,"children":11760},"blockquote",{},[11761],{"type":49,"tag":58,"props":11762,"children":11763},{},[11764,11769,11771,11777],{"type":49,"tag":64,"props":11765,"children":11766},{},[11767],{"type":55,"value":11768},"After reconciliation:",{"type":55,"value":11770}," run ",{"type":49,"tag":105,"props":11772,"children":11774},{"className":11773},[],[11775],{"type":55,"value":11776},"\u002Fshadow-frog-meditate",{"type":55,"value":11778}," to consolidate\ndiscoveries and repair the index.",{"type":49,"tag":86,"props":11780,"children":11782},{"id":11781},"curating-dream-experiments-for-upstream-prs",[11783],{"type":55,"value":11784},"Curating Dream Experiments for Upstream PRs",{"type":49,"tag":58,"props":11786,"children":11787},{},[11788],{"type":55,"value":11789},"Once dream branches accumulate, you (or the user) may want to surface a\nfew worth submitting to the upstream project. The default AI failure mode\nis sycophancy — approving too many experiments because they look like\nwork. Resist that. Apply these heuristics:",{"type":49,"tag":531,"props":11791,"children":11792},{},[11793,11810,11820,11830,11840,11850,11860],{"type":49,"tag":216,"props":11794,"children":11795},{},[11796,11801,11803,11808],{"type":49,"tag":64,"props":11797,"children":11798},{},[11799],{"type":55,"value":11800},"The maintainer test.",{"type":55,"value":11802}," For each experiment, ask: ",{"type":49,"tag":4960,"props":11804,"children":11805},{},[11806],{"type":55,"value":11807},"If I submitted this\nas a PR to an open-source repo I don't maintain, would the maintainer\nmerge it — or politely close it?",{"type":55,"value":11809}," This is the only question that matters.",{"type":49,"tag":216,"props":11811,"children":11812},{},[11813,11818],{"type":49,"tag":64,"props":11814,"children":11815},{},[11816],{"type":55,"value":11817},"Devil's advocate framing.",{"type":55,"value":11819}," Your job is to find reasons NOT to PR\neach experiment. Recommend only when you cannot find a compelling\nreason to reject.",{"type":49,"tag":216,"props":11821,"children":11822},{},[11823,11828],{"type":49,"tag":64,"props":11824,"children":11825},{},[11826],{"type":55,"value":11827},"70% rejection quota.",{"type":55,"value":11829}," If you approve more than 30% of experiments\nreviewed, your standards are too low. Re-evaluate.",{"type":49,"tag":216,"props":11831,"children":11832},{},[11833,11838],{"type":49,"tag":64,"props":11834,"children":11835},{},[11836],{"type":55,"value":11837},"The \"so what?\" test.",{"type":55,"value":11839}," Would a human engineer read the report and\nsay \"so what?\" If yes, reject.",{"type":49,"tag":216,"props":11841,"children":11842},{},[11843,11848],{"type":49,"tag":64,"props":11844,"children":11845},{},[11846],{"type":55,"value":11847},"The 30-minute test.",{"type":55,"value":11849}," Could a competent developer have produced\nthis in 30 minutes with a linter, TODO grep, or quick docs read? If\nyes, it's maintenance work, not a contribution. Reject.",{"type":49,"tag":216,"props":11851,"children":11852},{},[11853,11858],{"type":49,"tag":64,"props":11854,"children":11855},{},[11856],{"type":55,"value":11857},"The novelty test.",{"type":55,"value":11859}," Does the experiment reveal a non-obvious\nbehavior, hidden assumption, or unexpected interaction? If not, reject.",{"type":49,"tag":216,"props":11861,"children":11862},{},[11863,11868],{"type":49,"tag":64,"props":11864,"children":11865},{},[11866],{"type":55,"value":11867},"No credit for effort.",{"type":55,"value":11869}," A 10-experiment chain that produces a minor\ntweak is still a minor tweak. Judge the result, not the journey.",{"type":49,"tag":58,"props":11871,"children":11872},{},[11873],{"type":55,"value":11874},"When you do submit a PR, write the body for someone who has never seen\nthe fork. Include: one-paragraph \"what it does\" derived from the dream\nreport, the experiment's evidence (test output, before\u002Fafter metric),\nand an honest \"what we did not verify\" note.",{"type":49,"tag":11876,"props":11877,"children":11878},"style",{},[11879],{"type":55,"value":11880},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":11882,"total":29},[11883,11899,11906],{"slug":11884,"name":11884,"fn":11885,"description":11886,"org":11887,"tags":11888,"stars":25,"repoUrl":26,"updatedAt":11898},"shadow-frog","analyze codebases with shadow knowledge bases","Use a shadow knowledge base to understand any codebase. The .shadow\u002F directory mirrors the source tree with markdown files containing behavioral insights — known bugs, edge cases, implicit contracts, and user preferences. Always check the shadow before editing, debugging, or investigating code. When the user shares important context, write it to the shadow immediately. Invoke shadow-frog-init to create it, shadow-frog-update to refresh it, shadow-frog-dream for autonomous exploration, shadow-frog-meditate for shadow hygiene, or shadow-frog-viewer to browse it.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11889,11892,11895],{"name":11890,"slug":11891,"type":15},"Code Analysis","code-analysis",{"name":11893,"slug":11894,"type":15},"Engineering","engineering",{"name":11896,"slug":11897,"type":15},"Knowledge Management","knowledge-management","2026-07-07T06:53:24.688167",{"slug":4,"name":4,"fn":5,"description":6,"org":11900,"tags":11901,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11902,11903,11904,11905],{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},{"name":13,"slug":14,"type":15},{"slug":11907,"name":11907,"fn":11908,"description":11909,"org":11910,"tags":11911,"stars":25,"repoUrl":26,"updatedAt":11917},"shadow-frog-meditate","clean and consolidate shadow knowledge base","Clean and consolidate the shadow knowledge base. Scans all shadow files for duplicate discoveries (same claim, different wording), near-duplicates (one extends another), and conflicting entries (contradicting claims). Merges duplicates, resolves conflicts by investigating the code, and asks the user only when resolution is unclear. Invoke periodically to keep the shadow focused and free of noise.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11912,11915,11916],{"name":11913,"slug":11914,"type":15},"Data Cleaning","data-cleaning",{"name":11896,"slug":11897,"type":15},{"name":9,"slug":8,"type":15},"2026-07-03T16:31:56.106085",{"items":11919,"total":12108},[11920,11940,11959,11980,11993,12010,12021,12034,12049,12064,12083,12096],{"slug":11921,"name":11921,"fn":11922,"description":11923,"org":11924,"tags":11925,"stars":11937,"repoUrl":11938,"updatedAt":11939},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11926,11927,11930,11931,11934],{"name":11893,"slug":11894,"type":15},{"name":11928,"slug":11929,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":11932,"slug":11933,"type":15},"Project Management","project-management",{"name":11935,"slug":11936,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":11941,"name":11941,"fn":11942,"description":11943,"org":11944,"tags":11945,"stars":11956,"repoUrl":11957,"updatedAt":11958},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11946,11949,11950,11953],{"name":11947,"slug":11948,"type":15},".NET","net",{"name":20,"slug":21,"type":15},{"name":11951,"slug":11952,"type":15},"Azure","azure",{"name":11954,"slug":11955,"type":15},"LLM","llm",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-03T16:32:10.297433",{"slug":11960,"name":11960,"fn":11961,"description":11962,"org":11963,"tags":11964,"stars":11956,"repoUrl":11957,"updatedAt":11979},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11965,11968,11969,11972,11975,11976],{"name":11966,"slug":11967,"type":15},"Analytics","analytics",{"name":11951,"slug":11952,"type":15},{"name":11970,"slug":11971,"type":15},"Data Analysis","data-analysis",{"name":11973,"slug":11974,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":11977,"slug":11978,"type":15},"Monitoring","monitoring","2026-05-13T06:14:16.261754",{"slug":11981,"name":11981,"fn":11982,"description":11983,"org":11984,"tags":11985,"stars":11956,"repoUrl":11957,"updatedAt":11992},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11986,11989,11990,11991],{"name":11987,"slug":11988,"type":15},"AI Infrastructure","ai-infrastructure",{"name":11951,"slug":11952,"type":15},{"name":11973,"slug":11974,"type":15},{"name":13,"slug":14,"type":15},"2026-07-07T06:53:31.293235",{"slug":11994,"name":11994,"fn":11995,"description":11996,"org":11997,"tags":11998,"stars":11956,"repoUrl":11957,"updatedAt":12009},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11999,12000,12003,12004,12005,12008],{"name":11951,"slug":11952,"type":15},{"name":12001,"slug":12002,"type":15},"Compliance","compliance",{"name":11954,"slug":11955,"type":15},{"name":9,"slug":8,"type":15},{"name":12006,"slug":12007,"type":15},"Python","python",{"name":13,"slug":14,"type":15},"2026-07-18T05:14:23.017504",{"slug":12011,"name":12011,"fn":12012,"description":12013,"org":12014,"tags":12015,"stars":11956,"repoUrl":11957,"updatedAt":12020},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[12016,12017,12018,12019],{"name":11966,"slug":11967,"type":15},{"name":11951,"slug":11952,"type":15},{"name":11954,"slug":11955,"type":15},{"name":12006,"slug":12007,"type":15},"2026-07-31T05:54:29.068751",{"slug":12022,"name":12022,"fn":12023,"description":12024,"org":12025,"tags":12026,"stars":11956,"repoUrl":11957,"updatedAt":12033},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[12027,12030,12031,12032],{"name":12028,"slug":12029,"type":15},"API Development","api-development",{"name":11951,"slug":11952,"type":15},{"name":9,"slug":8,"type":15},{"name":12006,"slug":12007,"type":15},"2026-07-18T05:14:16.988376",{"slug":12035,"name":12035,"fn":12036,"description":12037,"org":12038,"tags":12039,"stars":11956,"repoUrl":11957,"updatedAt":12048},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[12040,12041,12044,12047],{"name":11951,"slug":11952,"type":15},{"name":12042,"slug":12043,"type":15},"Computer Vision","computer-vision",{"name":12045,"slug":12046,"type":15},"Images","images",{"name":12006,"slug":12007,"type":15},"2026-07-18T05:14:18.007737",{"slug":12050,"name":12050,"fn":12051,"description":12052,"org":12053,"tags":12054,"stars":11956,"repoUrl":11957,"updatedAt":12063},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[12055,12056,12059,12062],{"name":11951,"slug":11952,"type":15},{"name":12057,"slug":12058,"type":15},"Configuration","configuration",{"name":12060,"slug":12061,"type":15},"Feature Flags","feature-flags",{"name":11973,"slug":11974,"type":15},"2026-07-03T16:32:01.278468",{"slug":12065,"name":12065,"fn":12066,"description":12067,"org":12068,"tags":12069,"stars":11956,"repoUrl":11957,"updatedAt":12082},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[12070,12073,12076,12079],{"name":12071,"slug":12072,"type":15},"Cosmos DB","cosmos-db",{"name":12074,"slug":12075,"type":15},"Database","database",{"name":12077,"slug":12078,"type":15},"NoSQL","nosql",{"name":12080,"slug":12081,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":12084,"name":12084,"fn":12066,"description":12085,"org":12086,"tags":12087,"stars":11956,"repoUrl":11957,"updatedAt":12095},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[12088,12089,12090,12091,12092],{"name":12071,"slug":12072,"type":15},{"name":12074,"slug":12075,"type":15},{"name":9,"slug":8,"type":15},{"name":12077,"slug":12078,"type":15},{"name":12093,"slug":12094,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":12097,"name":12097,"fn":12098,"description":12099,"org":12100,"tags":12101,"stars":11956,"repoUrl":11957,"updatedAt":12107},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[12102,12103,12104,12105,12106],{"name":11951,"slug":11952,"type":15},{"name":12071,"slug":12072,"type":15},{"name":12074,"slug":12075,"type":15},{"name":11973,"slug":11974,"type":15},{"name":12077,"slug":12078,"type":15},"2026-05-13T06:14:17.582229",267]