docs(evidence): commit evidence/ artifacts referenced by README - #41

Merged
Protocol-zero-0 merged 1 commit into
mainfrom
chore/post-v112-evidence-and-docs
May 26, 2026
Merged

docs(evidence): commit evidence/ artifacts referenced by README#41
Protocol-zero-0 merged 1 commit into
mainfrom
chore/post-v112-evidence-and-docs

Conversation

@Protocol-zero-0

Copy link
Copy Markdown
Owner

Why

The README has pointed to `evidence/` since v1.0 as "checked-in artifacts of runs anyone can reproduce", but the directory never landed. Dead link in v1.0 / v1.1.0 / v1.1.1 / v1.1.2 readers. Pre-publicize cleanup.

What lands

  • `evidence/README.md` — top-level orientation; new reproducibility note pointing out the demo run used `claude_cli` (currently on main, shipping in v1.2.0); everything else reproducible against v1.1.2 today.
  • `evidence/demo-target-run-2026-05-14/` — full ledger of a real, self-halted kernel run against `examples/demo_target`. 47 ledger files + per-run README + config + raw `run.log`. Demonstrates planner reading history, evaluator rejecting useless patches, hard-stop firing ($0.11 / 3 runs / 276 tokens).
  • `evidence/repo-snapshot-2026-05-13/` — architecture, test transcript, and 5-minute terminal walkthrough captured at v0.3.0.

Stats: 54 files, 1132 insertions.

What's NOT in this PR

  • No code changes
  • No version bump
  • Paths inside the historical `evolution-cli.yml` are absolute and pre-bundled (capture from 2026-05-14) — kept as-is because this is a historical artifact, not a runnable example. The reproducibility note explains the situation.

Test plan

  • CI green on this PR
  • After merge, `evidence/` link in README points at real files

The README has pointed to `evidence/` since v1.0 ("checked-in artifacts
of runs anyone can reproduce"), but the directory itself never landed —
the link was dead in v1.0 / v1.1.0 / v1.1.1 / v1.1.2 readers.
This commit ships the two anchor pieces:
- `demo-target-run-2026-05-14/` — full ledger of a real, self-halted
kernel run against examples/demo_target. 47 ledger files + README +
config + raw run.log. Demonstrates planner reading history, evaluator
rejecting useless patches, hard-stop firing — $0.11 / 3 runs / 276
tokens.
- `repo-snapshot-2026-05-13/` — architecture, test transcript, and
5-minute terminal walkthrough captured at v0.3.0.
Adds a reproducibility note pointing out that the demo run used
`claude_cli` (currently on main, shipping in v1.2.0); everything else
in evidence/ is reproducible against v1.1.2.
No code change. No version bump.
CopilotAI review requested due to automatic review settings May 26, 2026 10:14
@Protocol-zero-0
Protocol-zero-0 merged commit b3a5d66 into mainMay 26, 2026
4 checks passed
@Protocol-zero-0
Protocol-zero-0 deleted the chore/post-v112-evidence-and-docs branch May 26, 2026 10:15

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds the missing evidence/ directory that the main README has referenced since v1.0, checking in a curated set of reproducibility artifacts (repo snapshot + a real demo-target run ledger) intended to make the project’s claims auditable via concrete files.

Changes:

  • Add evidence/README.md as a top-level index/orientation for checked-in evidence.
  • Add evidence/repo-snapshot-2026-05-13/ snapshot docs (architecture summary, walkthrough, test transcript).
  • Add evidence/demo-target-run-2026-05-14/ case study + full per-run ledger artifacts and config used for the demo run.

Reviewed changes

Copilot reviewed 53 out of 54 changed files in this pull request and generated 11 comments.

Show a summary per file
FileDescription
evidence/README.mdIndex for evidence artifacts and reproducibility notes
evidence/repo-snapshot-2026-05-13/architecture.mdRepo architecture snapshot write-up (as of 2026-05-13)
evidence/repo-snapshot-2026-05-13/test-output.txtCaptured test transcript artifact
evidence/repo-snapshot-2026-05-13/walkthrough.mdCopy/paste walkthrough for inspecting repo anatomy
evidence/demo-target-run-2026-05-14/README.mdNarrative case study + reproduction steps for demo-target run
evidence/demo-target-run-2026-05-14/evolution-cli.ymlConfig used for the recorded demo-target run
evidence/demo-target-run-2026-05-14/ledger/.evolution_state.jsonPersisted run state summary for the demo run
evidence/demo-target-run-2026-05-14/ledger/accepted/current_commit.txtAccepted-branch pointer recorded in the ledger
evidence/demo-target-run-2026-05-14/ledger/failed/0001-summary.jsonFailure summary for run 0001
evidence/demo-target-run-2026-05-14/ledger/failed/0002-summary.jsonFailure summary for run 0002
evidence/demo-target-run-2026-05-14/ledger/failed/0003-summary.jsonFailure summary for run 0003
evidence/demo-target-run-2026-05-14/ledger/halted/20260514T041157Z.jsonHalt reason + totals recorded at stop time
evidence/demo-target-run-2026-05-14/ledger/runs/0001/candidate_commit.txtCandidate commit SHA record for run 0001
evidence/demo-target-run-2026-05-14/ledger/runs/0001/config.jsonPer-run config snapshot (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/decision.jsonGovernor decision artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/evaluation.jsonEvaluator output artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/evaluator_input.jsonEvaluator input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_input.jsonExecutor input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_output.jsonExecutor output summary (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_output.stdout.txtRaw executor tool stdout capture (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/goal.jsonGoal snapshot (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/observation.jsonEvidence observation artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/patch.diffPatch diff artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/plan.jsonPlanner output plan artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/planner_input.jsonPlanner input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/reflection.jsonReflection/history entry artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/candidate_commit.txtCandidate commit SHA record for run 0002
evidence/demo-target-run-2026-05-14/ledger/runs/0002/config.jsonPer-run config snapshot (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/decision.jsonGovernor decision artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/evaluation.jsonEvaluator output artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/evaluator_input.jsonEvaluator input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_input.jsonExecutor input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_output.jsonExecutor output summary (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_output.stdout.txtRaw executor tool stdout capture (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/goal.jsonGoal snapshot (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/observation.jsonEvidence observation artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/patch.diffPatch diff artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/plan.jsonPlanner output plan artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/planner_input.jsonPlanner input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/reflection.jsonReflection/history entry artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/candidate_commit.txtCandidate commit SHA record for run 0003
evidence/demo-target-run-2026-05-14/ledger/runs/0003/config.jsonPer-run config snapshot (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/decision.jsonGovernor decision artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/evaluation.jsonEvaluator output artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/evaluator_input.jsonEvaluator input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_input.jsonExecutor input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_output.jsonExecutor output summary (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_output.stdout.txtRaw executor tool stdout capture (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/goal.jsonGoal snapshot (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/observation.jsonEvidence observation artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/patch.diffPatch diff artifact (run 0003; empty)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/plan.jsonPlanner output plan artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/planner_input.jsonPlanner input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/reflection.jsonReflection/history entry artifact (run 0003)
Comments suppressed due to low confidence (4)

evidence/repo-snapshot-2026-05-13/walkthrough.md:35

  • The “Expected last line” shows “83 passed in ~25s”, but the checked-in transcript ends with “83 passed in 41.30s”. Consider updating the expected timing (or removing it) to avoid confusing readers who compare output.
    evidence/repo-snapshot-2026-05-13/walkthrough.md:62
  • ls roles/ and cat roles/planner.py will fail in the current repo layout because the role scripts live under evolution_kernel/roles/ (or can be referenced via bundled: in config). Either update the paths or add a note to check out the v0.3.0 snapshot commit before running these commands.
    evidence/repo-snapshot-2026-05-13/walkthrough.md:53
  • The expected wc -l evolution_kernel/governor.py output is hard-coded to 673 lines, but the current file is 674 lines. If this walkthrough is meant to be copy-pasteable on current main, consider making this an approximate check (or pinning to a specific tag/commit).
    evidence/repo-snapshot-2026-05-13/architecture.md:38
  • This snapshot lists role scripts under a top-level roles/ directory and says role I/O lives at roles/*.{input,output}.json, but the current repo layout uses evolution_kernel/roles/* for the bundled scripts and the governor writes per-run artifacts like planner_input.json / plan.json directly under each run dir. Either pin the document to a specific commit/tag where roles/ existed, or update the paths so the file references remain navigable today.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadevidence/README.md

It exists alongside the README's "See it in action" section, which describes an *illustrative* GSM8K scenario (a design target, not a checked-in run). The artifacts here are different: they describe **what's actually inside this repo today**, anchored to specific files, tests, commits, and a real end-to-end run anyone can verify in under ten minutes.

> **Reproducibility note.** The 2026-05-14 demo run used the `claude_cli` LLM provider, which is merged on `main` and will ship in **v1.2.0**. Until then, reproduce from a `git clone` of this repo. Everything else in this directory (architecture snapshot, walkthrough, ledger structure) is reproducible against v1.1.2 today.
Comment threadevidence/README.md
|---|---|
| [`README.md`](demo-target-run-2026-05-14/README.md) | Narrated case study: setup, run-by-run timeline, why a self-halted run is stronger evidence than a successful one, exact reproduction commands. |
| [`evolution-cli.yml`](demo-target-run-2026-05-14/evolution-cli.yml) | The exact config used (the new `claude_cli` provider; $10 budget; src/ scope). |
| [`run.log`](demo-target-run-2026-05-14/run.log) | Raw kernel stdout/stderr from the run. |
Comment threadevidence/README.md
| File | What it shows |
|---|---|
| [`architecture.md`](repo-snapshot-2026-05-13/architecture.md) | The 8-module, ~1,800-LOC runtime; the 5 role scripts; the 4-stage PR history that built it. With exact file paths and line counts. |
| [`test-output.txt`](repo-snapshot-2026-05-13/test-output.txt) | Raw transcript of `python3 -m pytest tests/ -v`. **83 tests pass in ~25s, no network calls.** (Counted before PR7a/PR7b landed; latest count is 99 — re-run the suite to verify.) |
| Coding agent | `claude-code` (also `claude -p`, with `--permission-mode bypassPermissions` inside the kernel-managed worktree) |
| Hard stops | `max_iterations: 10`, `max_consecutive_failures: 3`, `max_total_usd: 10.00`, `max_total_tokens: 1,000,000` |

Full config: [`evolution-cli.yml`](evolution-cli.yml). Raw kernel stdout/stderr: [`run.log`](run.log).
Comment on lines +100 to +116
## How to reproduce

```bash
git clone https://github.com/Protocol-zero-0/evolution-kernel.git
cd evolution-kernel
pip install -e . # (or set PYTHONPATH=$PWD if PEP 668 blocks)

# Prepare a fresh demo target outside the repo
cp -r examples/demo_target /tmp/demo-target
bash /tmp/demo-target/setup.sh

# Re-run with the same config used here
PYTHONPATH=$PWD evolution-kernel \
--config evidence/demo-target-run-2026-05-14/evolution-cli.yml \
--repo /tmp/demo-target \
--ledger /tmp/ek-rerun \
--loop
Comment on lines +133 to +137
| [`roles/planner.py`](../../roles/planner.py) | new `_call_claude_cli(prompt, model)` + `provider == "claude_cli"` branch |
| [`roles/evaluator.py`](../../roles/evaluator.py) | inline `claude_cli` branch in `_call_llm` |
| [`roles/goal_evaluator.py`](../../roles/goal_evaluator.py) | new helper + branch |
| [`roles/strategist.py`](../../roles/strategist.py) | new helper + branch |
| [`roles/executor.sh`](../../roles/executor.sh) | `claude -p` now invoked with `--permission-mode bypassPermissions` (governor's worktree is the trust boundary) |

All four `_call_claude_cli` helpers shell out via `claude -p --model <m> --output-format json`, parse the JSON envelope, and return real `total_cost_usd` and `input_tokens + output_tokens`. The kernel's existing `max_total_usd` and `max_total_tokens` cost guards continue to work without modification — they just see a different LLM client underneath.

All 99 existing tests still pass with these additions (see [`repo-snapshot-2026-05-13/test-output.txt`](../repo-snapshot-2026-05-13/test-output.txt) — that snapshot was taken before this PR's edits, but the suite was re-run after each edit during this session; final result: `99 passed in 25.93s`).
Comment on lines +36 to +38
planner: ["python3", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/planner.py"]
executor: ["bash", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/executor.sh"]
evaluator: ["python3", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/evaluator.py"]
Comment on lines +21 to +25
### 1. Verify the kernel works — run the test suite (~25s)

```bash
python3 -m pytest tests/ -v
```
Comment on lines +7 to +20
## Runtime — 8 Python modules, ~1,800 LOC total

```
evolution_kernel/__init__.py 4 LOC
evolution_kernel/cli.py 327 LOC — argument parsing, --loop dispatch
evolution_kernel/config.py 368 LOC — evolution.yml schema + validation
evolution_kernel/governor.py 673 LOC — closed-loop orchestrator (zero LLM calls)
evolution_kernel/hard_stops.py 132 LOC — max_iterations / max_total_usd / max_total_tokens
evolution_kernel/observer.py 100 LOC — runs evidence_sources, normalizes output
evolution_kernel/sandbox.py 100 LOC — process sandbox (PR7a, work-in-progress)
evolution_kernel/scope.py 70 LOC — allowed_paths enforcement
─────────
1,774 LOC
```
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Protocol-zero-0
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

docs(evidence): commit evidence/ artifacts referenced by README - #41

Merged
Protocol-zero-0 merged 1 commit into
mainfrom
chore/post-v112-evidence-and-docs
May 26, 2026
Merged

docs(evidence): commit evidence/ artifacts referenced by README#41
Protocol-zero-0 merged 1 commit into
mainfrom
chore/post-v112-evidence-and-docs

Conversation

@Protocol-zero-0

Copy link
Copy Markdown
Owner

Why

The README has pointed to `evidence/` since v1.0 as "checked-in artifacts of runs anyone can reproduce", but the directory never landed. Dead link in v1.0 / v1.1.0 / v1.1.1 / v1.1.2 readers. Pre-publicize cleanup.

What lands

  • `evidence/README.md` — top-level orientation; new reproducibility note pointing out the demo run used `claude_cli` (currently on main, shipping in v1.2.0); everything else reproducible against v1.1.2 today.
  • `evidence/demo-target-run-2026-05-14/` — full ledger of a real, self-halted kernel run against `examples/demo_target`. 47 ledger files + per-run README + config + raw `run.log`. Demonstrates planner reading history, evaluator rejecting useless patches, hard-stop firing ($0.11 / 3 runs / 276 tokens).
  • `evidence/repo-snapshot-2026-05-13/` — architecture, test transcript, and 5-minute terminal walkthrough captured at v0.3.0.

Stats: 54 files, 1132 insertions.

What's NOT in this PR

  • No code changes
  • No version bump
  • Paths inside the historical `evolution-cli.yml` are absolute and pre-bundled (capture from 2026-05-14) — kept as-is because this is a historical artifact, not a runnable example. The reproducibility note explains the situation.

Test plan

  • CI green on this PR
  • After merge, `evidence/` link in README points at real files

The README has pointed to `evidence/` since v1.0 ("checked-in artifacts
of runs anyone can reproduce"), but the directory itself never landed —
the link was dead in v1.0 / v1.1.0 / v1.1.1 / v1.1.2 readers.
This commit ships the two anchor pieces:
- `demo-target-run-2026-05-14/` — full ledger of a real, self-halted
kernel run against examples/demo_target. 47 ledger files + README +
config + raw run.log. Demonstrates planner reading history, evaluator
rejecting useless patches, hard-stop firing — $0.11 / 3 runs / 276
tokens.
- `repo-snapshot-2026-05-13/` — architecture, test transcript, and
5-minute terminal walkthrough captured at v0.3.0.
Adds a reproducibility note pointing out that the demo run used
`claude_cli` (currently on main, shipping in v1.2.0); everything else
in evidence/ is reproducible against v1.1.2.
No code change. No version bump.
CopilotAI review requested due to automatic review settings May 26, 2026 10:14
@Protocol-zero-0
Protocol-zero-0 merged commit b3a5d66 into mainMay 26, 2026
4 checks passed
@Protocol-zero-0
Protocol-zero-0 deleted the chore/post-v112-evidence-and-docs branch May 26, 2026 10:15

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds the missing evidence/ directory that the main README has referenced since v1.0, checking in a curated set of reproducibility artifacts (repo snapshot + a real demo-target run ledger) intended to make the project’s claims auditable via concrete files.

Changes:

  • Add evidence/README.md as a top-level index/orientation for checked-in evidence.
  • Add evidence/repo-snapshot-2026-05-13/ snapshot docs (architecture summary, walkthrough, test transcript).
  • Add evidence/demo-target-run-2026-05-14/ case study + full per-run ledger artifacts and config used for the demo run.

Reviewed changes

Copilot reviewed 53 out of 54 changed files in this pull request and generated 11 comments.

Show a summary per file
FileDescription
evidence/README.mdIndex for evidence artifacts and reproducibility notes
evidence/repo-snapshot-2026-05-13/architecture.mdRepo architecture snapshot write-up (as of 2026-05-13)
evidence/repo-snapshot-2026-05-13/test-output.txtCaptured test transcript artifact
evidence/repo-snapshot-2026-05-13/walkthrough.mdCopy/paste walkthrough for inspecting repo anatomy
evidence/demo-target-run-2026-05-14/README.mdNarrative case study + reproduction steps for demo-target run
evidence/demo-target-run-2026-05-14/evolution-cli.ymlConfig used for the recorded demo-target run
evidence/demo-target-run-2026-05-14/ledger/.evolution_state.jsonPersisted run state summary for the demo run
evidence/demo-target-run-2026-05-14/ledger/accepted/current_commit.txtAccepted-branch pointer recorded in the ledger
evidence/demo-target-run-2026-05-14/ledger/failed/0001-summary.jsonFailure summary for run 0001
evidence/demo-target-run-2026-05-14/ledger/failed/0002-summary.jsonFailure summary for run 0002
evidence/demo-target-run-2026-05-14/ledger/failed/0003-summary.jsonFailure summary for run 0003
evidence/demo-target-run-2026-05-14/ledger/halted/20260514T041157Z.jsonHalt reason + totals recorded at stop time
evidence/demo-target-run-2026-05-14/ledger/runs/0001/candidate_commit.txtCandidate commit SHA record for run 0001
evidence/demo-target-run-2026-05-14/ledger/runs/0001/config.jsonPer-run config snapshot (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/decision.jsonGovernor decision artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/evaluation.jsonEvaluator output artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/evaluator_input.jsonEvaluator input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_input.jsonExecutor input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_output.jsonExecutor output summary (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_output.stdout.txtRaw executor tool stdout capture (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/goal.jsonGoal snapshot (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/observation.jsonEvidence observation artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/patch.diffPatch diff artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/plan.jsonPlanner output plan artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/planner_input.jsonPlanner input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/reflection.jsonReflection/history entry artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/candidate_commit.txtCandidate commit SHA record for run 0002
evidence/demo-target-run-2026-05-14/ledger/runs/0002/config.jsonPer-run config snapshot (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/decision.jsonGovernor decision artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/evaluation.jsonEvaluator output artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/evaluator_input.jsonEvaluator input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_input.jsonExecutor input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_output.jsonExecutor output summary (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_output.stdout.txtRaw executor tool stdout capture (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/goal.jsonGoal snapshot (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/observation.jsonEvidence observation artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/patch.diffPatch diff artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/plan.jsonPlanner output plan artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/planner_input.jsonPlanner input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/reflection.jsonReflection/history entry artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/candidate_commit.txtCandidate commit SHA record for run 0003
evidence/demo-target-run-2026-05-14/ledger/runs/0003/config.jsonPer-run config snapshot (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/decision.jsonGovernor decision artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/evaluation.jsonEvaluator output artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/evaluator_input.jsonEvaluator input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_input.jsonExecutor input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_output.jsonExecutor output summary (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_output.stdout.txtRaw executor tool stdout capture (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/goal.jsonGoal snapshot (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/observation.jsonEvidence observation artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/patch.diffPatch diff artifact (run 0003; empty)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/plan.jsonPlanner output plan artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/planner_input.jsonPlanner input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/reflection.jsonReflection/history entry artifact (run 0003)
Comments suppressed due to low confidence (4)

evidence/repo-snapshot-2026-05-13/walkthrough.md:35

  • The “Expected last line” shows “83 passed in ~25s”, but the checked-in transcript ends with “83 passed in 41.30s”. Consider updating the expected timing (or removing it) to avoid confusing readers who compare output.
    evidence/repo-snapshot-2026-05-13/walkthrough.md:62
  • ls roles/ and cat roles/planner.py will fail in the current repo layout because the role scripts live under evolution_kernel/roles/ (or can be referenced via bundled: in config). Either update the paths or add a note to check out the v0.3.0 snapshot commit before running these commands.
    evidence/repo-snapshot-2026-05-13/walkthrough.md:53
  • The expected wc -l evolution_kernel/governor.py output is hard-coded to 673 lines, but the current file is 674 lines. If this walkthrough is meant to be copy-pasteable on current main, consider making this an approximate check (or pinning to a specific tag/commit).
    evidence/repo-snapshot-2026-05-13/architecture.md:38
  • This snapshot lists role scripts under a top-level roles/ directory and says role I/O lives at roles/*.{input,output}.json, but the current repo layout uses evolution_kernel/roles/* for the bundled scripts and the governor writes per-run artifacts like planner_input.json / plan.json directly under each run dir. Either pin the document to a specific commit/tag where roles/ existed, or update the paths so the file references remain navigable today.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadevidence/README.md

It exists alongside the README's "See it in action" section, which describes an *illustrative* GSM8K scenario (a design target, not a checked-in run). The artifacts here are different: they describe **what's actually inside this repo today**, anchored to specific files, tests, commits, and a real end-to-end run anyone can verify in under ten minutes.

> **Reproducibility note.** The 2026-05-14 demo run used the `claude_cli` LLM provider, which is merged on `main` and will ship in **v1.2.0**. Until then, reproduce from a `git clone` of this repo. Everything else in this directory (architecture snapshot, walkthrough, ledger structure) is reproducible against v1.1.2 today.
Comment threadevidence/README.md
|---|---|
| [`README.md`](demo-target-run-2026-05-14/README.md) | Narrated case study: setup, run-by-run timeline, why a self-halted run is stronger evidence than a successful one, exact reproduction commands. |
| [`evolution-cli.yml`](demo-target-run-2026-05-14/evolution-cli.yml) | The exact config used (the new `claude_cli` provider; $10 budget; src/ scope). |
| [`run.log`](demo-target-run-2026-05-14/run.log) | Raw kernel stdout/stderr from the run. |
Comment threadevidence/README.md
| File | What it shows |
|---|---|
| [`architecture.md`](repo-snapshot-2026-05-13/architecture.md) | The 8-module, ~1,800-LOC runtime; the 5 role scripts; the 4-stage PR history that built it. With exact file paths and line counts. |
| [`test-output.txt`](repo-snapshot-2026-05-13/test-output.txt) | Raw transcript of `python3 -m pytest tests/ -v`. **83 tests pass in ~25s, no network calls.** (Counted before PR7a/PR7b landed; latest count is 99 — re-run the suite to verify.) |
| Coding agent | `claude-code` (also `claude -p`, with `--permission-mode bypassPermissions` inside the kernel-managed worktree) |
| Hard stops | `max_iterations: 10`, `max_consecutive_failures: 3`, `max_total_usd: 10.00`, `max_total_tokens: 1,000,000` |

Full config: [`evolution-cli.yml`](evolution-cli.yml). Raw kernel stdout/stderr: [`run.log`](run.log).
Comment on lines +100 to +116
## How to reproduce

```bash
git clone https://github.com/Protocol-zero-0/evolution-kernel.git
cd evolution-kernel
pip install -e . # (or set PYTHONPATH=$PWD if PEP 668 blocks)

# Prepare a fresh demo target outside the repo
cp -r examples/demo_target /tmp/demo-target
bash /tmp/demo-target/setup.sh

# Re-run with the same config used here
PYTHONPATH=$PWD evolution-kernel \
--config evidence/demo-target-run-2026-05-14/evolution-cli.yml \
--repo /tmp/demo-target \
--ledger /tmp/ek-rerun \
--loop
Comment on lines +133 to +137
| [`roles/planner.py`](../../roles/planner.py) | new `_call_claude_cli(prompt, model)` + `provider == "claude_cli"` branch |
| [`roles/evaluator.py`](../../roles/evaluator.py) | inline `claude_cli` branch in `_call_llm` |
| [`roles/goal_evaluator.py`](../../roles/goal_evaluator.py) | new helper + branch |
| [`roles/strategist.py`](../../roles/strategist.py) | new helper + branch |
| [`roles/executor.sh`](../../roles/executor.sh) | `claude -p` now invoked with `--permission-mode bypassPermissions` (governor's worktree is the trust boundary) |

All four `_call_claude_cli` helpers shell out via `claude -p --model <m> --output-format json`, parse the JSON envelope, and return real `total_cost_usd` and `input_tokens + output_tokens`. The kernel's existing `max_total_usd` and `max_total_tokens` cost guards continue to work without modification — they just see a different LLM client underneath.

All 99 existing tests still pass with these additions (see [`repo-snapshot-2026-05-13/test-output.txt`](../repo-snapshot-2026-05-13/test-output.txt) — that snapshot was taken before this PR's edits, but the suite was re-run after each edit during this session; final result: `99 passed in 25.93s`).
Comment on lines +36 to +38
planner: ["python3", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/planner.py"]
executor: ["bash", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/executor.sh"]
evaluator: ["python3", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/evaluator.py"]
Comment on lines +21 to +25
### 1. Verify the kernel works — run the test suite (~25s)

```bash
python3 -m pytest tests/ -v
```
Comment on lines +7 to +20
## Runtime — 8 Python modules, ~1,800 LOC total

```
evolution_kernel/__init__.py 4 LOC
evolution_kernel/cli.py 327 LOC — argument parsing, --loop dispatch
evolution_kernel/config.py 368 LOC — evolution.yml schema + validation
evolution_kernel/governor.py 673 LOC — closed-loop orchestrator (zero LLM calls)
evolution_kernel/hard_stops.py 132 LOC — max_iterations / max_total_usd / max_total_tokens
evolution_kernel/observer.py 100 LOC — runs evidence_sources, normalizes output
evolution_kernel/sandbox.py 100 LOC — process sandbox (PR7a, work-in-progress)
evolution_kernel/scope.py 70 LOC — allowed_paths enforcement
─────────
1,774 LOC
```
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Protocol-zero-0
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs(evidence): commit evidence/ artifacts referenced by README - #41

Merged
Protocol-zero-0 merged 1 commit into
mainfrom
chore/post-v112-evidence-and-docs
May 26, 2026
Merged

docs(evidence): commit evidence/ artifacts referenced by README#41
Protocol-zero-0 merged 1 commit into
mainfrom
chore/post-v112-evidence-and-docs

Conversation

@Protocol-zero-0

Copy link
Copy Markdown
Owner

Why

The README has pointed to `evidence/` since v1.0 as "checked-in artifacts of runs anyone can reproduce", but the directory never landed. Dead link in v1.0 / v1.1.0 / v1.1.1 / v1.1.2 readers. Pre-publicize cleanup.

What lands

  • `evidence/README.md` — top-level orientation; new reproducibility note pointing out the demo run used `claude_cli` (currently on main, shipping in v1.2.0); everything else reproducible against v1.1.2 today.
  • `evidence/demo-target-run-2026-05-14/` — full ledger of a real, self-halted kernel run against `examples/demo_target`. 47 ledger files + per-run README + config + raw `run.log`. Demonstrates planner reading history, evaluator rejecting useless patches, hard-stop firing ($0.11 / 3 runs / 276 tokens).
  • `evidence/repo-snapshot-2026-05-13/` — architecture, test transcript, and 5-minute terminal walkthrough captured at v0.3.0.

Stats: 54 files, 1132 insertions.

What's NOT in this PR

  • No code changes
  • No version bump
  • Paths inside the historical `evolution-cli.yml` are absolute and pre-bundled (capture from 2026-05-14) — kept as-is because this is a historical artifact, not a runnable example. The reproducibility note explains the situation.

Test plan

  • CI green on this PR
  • After merge, `evidence/` link in README points at real files

The README has pointed to `evidence/` since v1.0 ("checked-in artifacts
of runs anyone can reproduce"), but the directory itself never landed —
the link was dead in v1.0 / v1.1.0 / v1.1.1 / v1.1.2 readers.
This commit ships the two anchor pieces:
- `demo-target-run-2026-05-14/` — full ledger of a real, self-halted
kernel run against examples/demo_target. 47 ledger files + README +
config + raw run.log. Demonstrates planner reading history, evaluator
rejecting useless patches, hard-stop firing — $0.11 / 3 runs / 276
tokens.
- `repo-snapshot-2026-05-13/` — architecture, test transcript, and
5-minute terminal walkthrough captured at v0.3.0.
Adds a reproducibility note pointing out that the demo run used
`claude_cli` (currently on main, shipping in v1.2.0); everything else
in evidence/ is reproducible against v1.1.2.
No code change. No version bump.
CopilotAI review requested due to automatic review settings May 26, 2026 10:14
@Protocol-zero-0
Protocol-zero-0 merged commit b3a5d66 into mainMay 26, 2026
4 checks passed
@Protocol-zero-0
Protocol-zero-0 deleted the chore/post-v112-evidence-and-docs branch May 26, 2026 10:15

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds the missing evidence/ directory that the main README has referenced since v1.0, checking in a curated set of reproducibility artifacts (repo snapshot + a real demo-target run ledger) intended to make the project’s claims auditable via concrete files.

Changes:

  • Add evidence/README.md as a top-level index/orientation for checked-in evidence.
  • Add evidence/repo-snapshot-2026-05-13/ snapshot docs (architecture summary, walkthrough, test transcript).
  • Add evidence/demo-target-run-2026-05-14/ case study + full per-run ledger artifacts and config used for the demo run.

Reviewed changes

Copilot reviewed 53 out of 54 changed files in this pull request and generated 11 comments.

Show a summary per file
FileDescription
evidence/README.mdIndex for evidence artifacts and reproducibility notes
evidence/repo-snapshot-2026-05-13/architecture.mdRepo architecture snapshot write-up (as of 2026-05-13)
evidence/repo-snapshot-2026-05-13/test-output.txtCaptured test transcript artifact
evidence/repo-snapshot-2026-05-13/walkthrough.mdCopy/paste walkthrough for inspecting repo anatomy
evidence/demo-target-run-2026-05-14/README.mdNarrative case study + reproduction steps for demo-target run
evidence/demo-target-run-2026-05-14/evolution-cli.ymlConfig used for the recorded demo-target run
evidence/demo-target-run-2026-05-14/ledger/.evolution_state.jsonPersisted run state summary for the demo run
evidence/demo-target-run-2026-05-14/ledger/accepted/current_commit.txtAccepted-branch pointer recorded in the ledger
evidence/demo-target-run-2026-05-14/ledger/failed/0001-summary.jsonFailure summary for run 0001
evidence/demo-target-run-2026-05-14/ledger/failed/0002-summary.jsonFailure summary for run 0002
evidence/demo-target-run-2026-05-14/ledger/failed/0003-summary.jsonFailure summary for run 0003
evidence/demo-target-run-2026-05-14/ledger/halted/20260514T041157Z.jsonHalt reason + totals recorded at stop time
evidence/demo-target-run-2026-05-14/ledger/runs/0001/candidate_commit.txtCandidate commit SHA record for run 0001
evidence/demo-target-run-2026-05-14/ledger/runs/0001/config.jsonPer-run config snapshot (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/decision.jsonGovernor decision artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/evaluation.jsonEvaluator output artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/evaluator_input.jsonEvaluator input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_input.jsonExecutor input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_output.jsonExecutor output summary (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_output.stdout.txtRaw executor tool stdout capture (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/goal.jsonGoal snapshot (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/observation.jsonEvidence observation artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/patch.diffPatch diff artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/plan.jsonPlanner output plan artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/planner_input.jsonPlanner input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/reflection.jsonReflection/history entry artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/candidate_commit.txtCandidate commit SHA record for run 0002
evidence/demo-target-run-2026-05-14/ledger/runs/0002/config.jsonPer-run config snapshot (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/decision.jsonGovernor decision artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/evaluation.jsonEvaluator output artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/evaluator_input.jsonEvaluator input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_input.jsonExecutor input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_output.jsonExecutor output summary (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_output.stdout.txtRaw executor tool stdout capture (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/goal.jsonGoal snapshot (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/observation.jsonEvidence observation artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/patch.diffPatch diff artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/plan.jsonPlanner output plan artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/planner_input.jsonPlanner input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/reflection.jsonReflection/history entry artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/candidate_commit.txtCandidate commit SHA record for run 0003
evidence/demo-target-run-2026-05-14/ledger/runs/0003/config.jsonPer-run config snapshot (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/decision.jsonGovernor decision artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/evaluation.jsonEvaluator output artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/evaluator_input.jsonEvaluator input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_input.jsonExecutor input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_output.jsonExecutor output summary (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_output.stdout.txtRaw executor tool stdout capture (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/goal.jsonGoal snapshot (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/observation.jsonEvidence observation artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/patch.diffPatch diff artifact (run 0003; empty)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/plan.jsonPlanner output plan artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/planner_input.jsonPlanner input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/reflection.jsonReflection/history entry artifact (run 0003)
Comments suppressed due to low confidence (4)

evidence/repo-snapshot-2026-05-13/walkthrough.md:35

  • The “Expected last line” shows “83 passed in ~25s”, but the checked-in transcript ends with “83 passed in 41.30s”. Consider updating the expected timing (or removing it) to avoid confusing readers who compare output.
    evidence/repo-snapshot-2026-05-13/walkthrough.md:62
  • ls roles/ and cat roles/planner.py will fail in the current repo layout because the role scripts live under evolution_kernel/roles/ (or can be referenced via bundled: in config). Either update the paths or add a note to check out the v0.3.0 snapshot commit before running these commands.
    evidence/repo-snapshot-2026-05-13/walkthrough.md:53
  • The expected wc -l evolution_kernel/governor.py output is hard-coded to 673 lines, but the current file is 674 lines. If this walkthrough is meant to be copy-pasteable on current main, consider making this an approximate check (or pinning to a specific tag/commit).
    evidence/repo-snapshot-2026-05-13/architecture.md:38
  • This snapshot lists role scripts under a top-level roles/ directory and says role I/O lives at roles/*.{input,output}.json, but the current repo layout uses evolution_kernel/roles/* for the bundled scripts and the governor writes per-run artifacts like planner_input.json / plan.json directly under each run dir. Either pin the document to a specific commit/tag where roles/ existed, or update the paths so the file references remain navigable today.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadevidence/README.md

It exists alongside the README's "See it in action" section, which describes an *illustrative* GSM8K scenario (a design target, not a checked-in run). The artifacts here are different: they describe **what's actually inside this repo today**, anchored to specific files, tests, commits, and a real end-to-end run anyone can verify in under ten minutes.

> **Reproducibility note.** The 2026-05-14 demo run used the `claude_cli` LLM provider, which is merged on `main` and will ship in **v1.2.0**. Until then, reproduce from a `git clone` of this repo. Everything else in this directory (architecture snapshot, walkthrough, ledger structure) is reproducible against v1.1.2 today.
Comment threadevidence/README.md
|---|---|
| [`README.md`](demo-target-run-2026-05-14/README.md) | Narrated case study: setup, run-by-run timeline, why a self-halted run is stronger evidence than a successful one, exact reproduction commands. |
| [`evolution-cli.yml`](demo-target-run-2026-05-14/evolution-cli.yml) | The exact config used (the new `claude_cli` provider; $10 budget; src/ scope). |
| [`run.log`](demo-target-run-2026-05-14/run.log) | Raw kernel stdout/stderr from the run. |
Comment threadevidence/README.md
| File | What it shows |
|---|---|
| [`architecture.md`](repo-snapshot-2026-05-13/architecture.md) | The 8-module, ~1,800-LOC runtime; the 5 role scripts; the 4-stage PR history that built it. With exact file paths and line counts. |
| [`test-output.txt`](repo-snapshot-2026-05-13/test-output.txt) | Raw transcript of `python3 -m pytest tests/ -v`. **83 tests pass in ~25s, no network calls.** (Counted before PR7a/PR7b landed; latest count is 99 — re-run the suite to verify.) |
| Coding agent | `claude-code` (also `claude -p`, with `--permission-mode bypassPermissions` inside the kernel-managed worktree) |
| Hard stops | `max_iterations: 10`, `max_consecutive_failures: 3`, `max_total_usd: 10.00`, `max_total_tokens: 1,000,000` |

Full config: [`evolution-cli.yml`](evolution-cli.yml). Raw kernel stdout/stderr: [`run.log`](run.log).
Comment on lines +100 to +116
## How to reproduce

```bash
git clone https://github.com/Protocol-zero-0/evolution-kernel.git
cd evolution-kernel
pip install -e . # (or set PYTHONPATH=$PWD if PEP 668 blocks)

# Prepare a fresh demo target outside the repo
cp -r examples/demo_target /tmp/demo-target
bash /tmp/demo-target/setup.sh

# Re-run with the same config used here
PYTHONPATH=$PWD evolution-kernel \
--config evidence/demo-target-run-2026-05-14/evolution-cli.yml \
--repo /tmp/demo-target \
--ledger /tmp/ek-rerun \
--loop
Comment on lines +133 to +137
| [`roles/planner.py`](../../roles/planner.py) | new `_call_claude_cli(prompt, model)` + `provider == "claude_cli"` branch |
| [`roles/evaluator.py`](../../roles/evaluator.py) | inline `claude_cli` branch in `_call_llm` |
| [`roles/goal_evaluator.py`](../../roles/goal_evaluator.py) | new helper + branch |
| [`roles/strategist.py`](../../roles/strategist.py) | new helper + branch |
| [`roles/executor.sh`](../../roles/executor.sh) | `claude -p` now invoked with `--permission-mode bypassPermissions` (governor's worktree is the trust boundary) |

All four `_call_claude_cli` helpers shell out via `claude -p --model <m> --output-format json`, parse the JSON envelope, and return real `total_cost_usd` and `input_tokens + output_tokens`. The kernel's existing `max_total_usd` and `max_total_tokens` cost guards continue to work without modification — they just see a different LLM client underneath.

All 99 existing tests still pass with these additions (see [`repo-snapshot-2026-05-13/test-output.txt`](../repo-snapshot-2026-05-13/test-output.txt) — that snapshot was taken before this PR's edits, but the suite was re-run after each edit during this session; final result: `99 passed in 25.93s`).
Comment on lines +36 to +38
planner: ["python3", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/planner.py"]
executor: ["bash", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/executor.sh"]
evaluator: ["python3", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/evaluator.py"]
Comment on lines +21 to +25
### 1. Verify the kernel works — run the test suite (~25s)

```bash
python3 -m pytest tests/ -v
```
Comment on lines +7 to +20
## Runtime — 8 Python modules, ~1,800 LOC total

```
evolution_kernel/__init__.py 4 LOC
evolution_kernel/cli.py 327 LOC — argument parsing, --loop dispatch
evolution_kernel/config.py 368 LOC — evolution.yml schema + validation
evolution_kernel/governor.py 673 LOC — closed-loop orchestrator (zero LLM calls)
evolution_kernel/hard_stops.py 132 LOC — max_iterations / max_total_usd / max_total_tokens
evolution_kernel/observer.py 100 LOC — runs evidence_sources, normalizes output
evolution_kernel/sandbox.py 100 LOC — process sandbox (PR7a, work-in-progress)
evolution_kernel/scope.py 70 LOC — allowed_paths enforcement
─────────
1,774 LOC
```
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Protocol-zero-0
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs(evidence): commit evidence/ artifacts referenced by README - #41

Merged
Protocol-zero-0 merged 1 commit into
mainfrom
chore/post-v112-evidence-and-docs
May 26, 2026
Merged

docs(evidence): commit evidence/ artifacts referenced by README#41
Protocol-zero-0 merged 1 commit into
mainfrom
chore/post-v112-evidence-and-docs

Conversation

@Protocol-zero-0

Copy link
Copy Markdown
Owner

Why

The README has pointed to `evidence/` since v1.0 as "checked-in artifacts of runs anyone can reproduce", but the directory never landed. Dead link in v1.0 / v1.1.0 / v1.1.1 / v1.1.2 readers. Pre-publicize cleanup.

What lands

  • `evidence/README.md` — top-level orientation; new reproducibility note pointing out the demo run used `claude_cli` (currently on main, shipping in v1.2.0); everything else reproducible against v1.1.2 today.
  • `evidence/demo-target-run-2026-05-14/` — full ledger of a real, self-halted kernel run against `examples/demo_target`. 47 ledger files + per-run README + config + raw `run.log`. Demonstrates planner reading history, evaluator rejecting useless patches, hard-stop firing ($0.11 / 3 runs / 276 tokens).
  • `evidence/repo-snapshot-2026-05-13/` — architecture, test transcript, and 5-minute terminal walkthrough captured at v0.3.0.

Stats: 54 files, 1132 insertions.

What's NOT in this PR

  • No code changes
  • No version bump
  • Paths inside the historical `evolution-cli.yml` are absolute and pre-bundled (capture from 2026-05-14) — kept as-is because this is a historical artifact, not a runnable example. The reproducibility note explains the situation.

Test plan

  • CI green on this PR
  • After merge, `evidence/` link in README points at real files

The README has pointed to `evidence/` since v1.0 ("checked-in artifacts
of runs anyone can reproduce"), but the directory itself never landed —
the link was dead in v1.0 / v1.1.0 / v1.1.1 / v1.1.2 readers.
This commit ships the two anchor pieces:
- `demo-target-run-2026-05-14/` — full ledger of a real, self-halted
kernel run against examples/demo_target. 47 ledger files + README +
config + raw run.log. Demonstrates planner reading history, evaluator
rejecting useless patches, hard-stop firing — $0.11 / 3 runs / 276
tokens.
- `repo-snapshot-2026-05-13/` — architecture, test transcript, and
5-minute terminal walkthrough captured at v0.3.0.
Adds a reproducibility note pointing out that the demo run used
`claude_cli` (currently on main, shipping in v1.2.0); everything else
in evidence/ is reproducible against v1.1.2.
No code change. No version bump.
CopilotAI review requested due to automatic review settings May 26, 2026 10:14
@Protocol-zero-0
Protocol-zero-0 merged commit b3a5d66 into mainMay 26, 2026
4 checks passed
@Protocol-zero-0
Protocol-zero-0 deleted the chore/post-v112-evidence-and-docs branch May 26, 2026 10:15

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds the missing evidence/ directory that the main README has referenced since v1.0, checking in a curated set of reproducibility artifacts (repo snapshot + a real demo-target run ledger) intended to make the project’s claims auditable via concrete files.

Changes:

  • Add evidence/README.md as a top-level index/orientation for checked-in evidence.
  • Add evidence/repo-snapshot-2026-05-13/ snapshot docs (architecture summary, walkthrough, test transcript).
  • Add evidence/demo-target-run-2026-05-14/ case study + full per-run ledger artifacts and config used for the demo run.

Reviewed changes

Copilot reviewed 53 out of 54 changed files in this pull request and generated 11 comments.

Show a summary per file
FileDescription
evidence/README.mdIndex for evidence artifacts and reproducibility notes
evidence/repo-snapshot-2026-05-13/architecture.mdRepo architecture snapshot write-up (as of 2026-05-13)
evidence/repo-snapshot-2026-05-13/test-output.txtCaptured test transcript artifact
evidence/repo-snapshot-2026-05-13/walkthrough.mdCopy/paste walkthrough for inspecting repo anatomy
evidence/demo-target-run-2026-05-14/README.mdNarrative case study + reproduction steps for demo-target run
evidence/demo-target-run-2026-05-14/evolution-cli.ymlConfig used for the recorded demo-target run
evidence/demo-target-run-2026-05-14/ledger/.evolution_state.jsonPersisted run state summary for the demo run
evidence/demo-target-run-2026-05-14/ledger/accepted/current_commit.txtAccepted-branch pointer recorded in the ledger
evidence/demo-target-run-2026-05-14/ledger/failed/0001-summary.jsonFailure summary for run 0001
evidence/demo-target-run-2026-05-14/ledger/failed/0002-summary.jsonFailure summary for run 0002
evidence/demo-target-run-2026-05-14/ledger/failed/0003-summary.jsonFailure summary for run 0003
evidence/demo-target-run-2026-05-14/ledger/halted/20260514T041157Z.jsonHalt reason + totals recorded at stop time
evidence/demo-target-run-2026-05-14/ledger/runs/0001/candidate_commit.txtCandidate commit SHA record for run 0001
evidence/demo-target-run-2026-05-14/ledger/runs/0001/config.jsonPer-run config snapshot (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/decision.jsonGovernor decision artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/evaluation.jsonEvaluator output artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/evaluator_input.jsonEvaluator input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_input.jsonExecutor input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_output.jsonExecutor output summary (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_output.stdout.txtRaw executor tool stdout capture (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/goal.jsonGoal snapshot (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/observation.jsonEvidence observation artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/patch.diffPatch diff artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/plan.jsonPlanner output plan artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/planner_input.jsonPlanner input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/reflection.jsonReflection/history entry artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/candidate_commit.txtCandidate commit SHA record for run 0002
evidence/demo-target-run-2026-05-14/ledger/runs/0002/config.jsonPer-run config snapshot (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/decision.jsonGovernor decision artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/evaluation.jsonEvaluator output artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/evaluator_input.jsonEvaluator input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_input.jsonExecutor input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_output.jsonExecutor output summary (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_output.stdout.txtRaw executor tool stdout capture (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/goal.jsonGoal snapshot (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/observation.jsonEvidence observation artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/patch.diffPatch diff artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/plan.jsonPlanner output plan artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/planner_input.jsonPlanner input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/reflection.jsonReflection/history entry artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/candidate_commit.txtCandidate commit SHA record for run 0003
evidence/demo-target-run-2026-05-14/ledger/runs/0003/config.jsonPer-run config snapshot (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/decision.jsonGovernor decision artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/evaluation.jsonEvaluator output artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/evaluator_input.jsonEvaluator input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_input.jsonExecutor input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_output.jsonExecutor output summary (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_output.stdout.txtRaw executor tool stdout capture (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/goal.jsonGoal snapshot (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/observation.jsonEvidence observation artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/patch.diffPatch diff artifact (run 0003; empty)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/plan.jsonPlanner output plan artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/planner_input.jsonPlanner input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/reflection.jsonReflection/history entry artifact (run 0003)
Comments suppressed due to low confidence (4)

evidence/repo-snapshot-2026-05-13/walkthrough.md:35

  • The “Expected last line” shows “83 passed in ~25s”, but the checked-in transcript ends with “83 passed in 41.30s”. Consider updating the expected timing (or removing it) to avoid confusing readers who compare output.
    evidence/repo-snapshot-2026-05-13/walkthrough.md:62
  • ls roles/ and cat roles/planner.py will fail in the current repo layout because the role scripts live under evolution_kernel/roles/ (or can be referenced via bundled: in config). Either update the paths or add a note to check out the v0.3.0 snapshot commit before running these commands.
    evidence/repo-snapshot-2026-05-13/walkthrough.md:53
  • The expected wc -l evolution_kernel/governor.py output is hard-coded to 673 lines, but the current file is 674 lines. If this walkthrough is meant to be copy-pasteable on current main, consider making this an approximate check (or pinning to a specific tag/commit).
    evidence/repo-snapshot-2026-05-13/architecture.md:38
  • This snapshot lists role scripts under a top-level roles/ directory and says role I/O lives at roles/*.{input,output}.json, but the current repo layout uses evolution_kernel/roles/* for the bundled scripts and the governor writes per-run artifacts like planner_input.json / plan.json directly under each run dir. Either pin the document to a specific commit/tag where roles/ existed, or update the paths so the file references remain navigable today.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadevidence/README.md

It exists alongside the README's "See it in action" section, which describes an *illustrative* GSM8K scenario (a design target, not a checked-in run). The artifacts here are different: they describe **what's actually inside this repo today**, anchored to specific files, tests, commits, and a real end-to-end run anyone can verify in under ten minutes.

> **Reproducibility note.** The 2026-05-14 demo run used the `claude_cli` LLM provider, which is merged on `main` and will ship in **v1.2.0**. Until then, reproduce from a `git clone` of this repo. Everything else in this directory (architecture snapshot, walkthrough, ledger structure) is reproducible against v1.1.2 today.
Comment threadevidence/README.md
|---|---|
| [`README.md`](demo-target-run-2026-05-14/README.md) | Narrated case study: setup, run-by-run timeline, why a self-halted run is stronger evidence than a successful one, exact reproduction commands. |
| [`evolution-cli.yml`](demo-target-run-2026-05-14/evolution-cli.yml) | The exact config used (the new `claude_cli` provider; $10 budget; src/ scope). |
| [`run.log`](demo-target-run-2026-05-14/run.log) | Raw kernel stdout/stderr from the run. |
Comment threadevidence/README.md
| File | What it shows |
|---|---|
| [`architecture.md`](repo-snapshot-2026-05-13/architecture.md) | The 8-module, ~1,800-LOC runtime; the 5 role scripts; the 4-stage PR history that built it. With exact file paths and line counts. |
| [`test-output.txt`](repo-snapshot-2026-05-13/test-output.txt) | Raw transcript of `python3 -m pytest tests/ -v`. **83 tests pass in ~25s, no network calls.** (Counted before PR7a/PR7b landed; latest count is 99 — re-run the suite to verify.) |
| Coding agent | `claude-code` (also `claude -p`, with `--permission-mode bypassPermissions` inside the kernel-managed worktree) |
| Hard stops | `max_iterations: 10`, `max_consecutive_failures: 3`, `max_total_usd: 10.00`, `max_total_tokens: 1,000,000` |

Full config: [`evolution-cli.yml`](evolution-cli.yml). Raw kernel stdout/stderr: [`run.log`](run.log).
Comment on lines +100 to +116
## How to reproduce

```bash
git clone https://github.com/Protocol-zero-0/evolution-kernel.git
cd evolution-kernel
pip install -e . # (or set PYTHONPATH=$PWD if PEP 668 blocks)

# Prepare a fresh demo target outside the repo
cp -r examples/demo_target /tmp/demo-target
bash /tmp/demo-target/setup.sh

# Re-run with the same config used here
PYTHONPATH=$PWD evolution-kernel \
--config evidence/demo-target-run-2026-05-14/evolution-cli.yml \
--repo /tmp/demo-target \
--ledger /tmp/ek-rerun \
--loop
Comment on lines +133 to +137
| [`roles/planner.py`](../../roles/planner.py) | new `_call_claude_cli(prompt, model)` + `provider == "claude_cli"` branch |
| [`roles/evaluator.py`](../../roles/evaluator.py) | inline `claude_cli` branch in `_call_llm` |
| [`roles/goal_evaluator.py`](../../roles/goal_evaluator.py) | new helper + branch |
| [`roles/strategist.py`](../../roles/strategist.py) | new helper + branch |
| [`roles/executor.sh`](../../roles/executor.sh) | `claude -p` now invoked with `--permission-mode bypassPermissions` (governor's worktree is the trust boundary) |

All four `_call_claude_cli` helpers shell out via `claude -p --model <m> --output-format json`, parse the JSON envelope, and return real `total_cost_usd` and `input_tokens + output_tokens`. The kernel's existing `max_total_usd` and `max_total_tokens` cost guards continue to work without modification — they just see a different LLM client underneath.

All 99 existing tests still pass with these additions (see [`repo-snapshot-2026-05-13/test-output.txt`](../repo-snapshot-2026-05-13/test-output.txt) — that snapshot was taken before this PR's edits, but the suite was re-run after each edit during this session; final result: `99 passed in 25.93s`).
Comment on lines +36 to +38
planner: ["python3", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/planner.py"]
executor: ["bash", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/executor.sh"]
evaluator: ["python3", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/evaluator.py"]
Comment on lines +21 to +25
### 1. Verify the kernel works — run the test suite (~25s)

```bash
python3 -m pytest tests/ -v
```
Comment on lines +7 to +20
## Runtime — 8 Python modules, ~1,800 LOC total

```
evolution_kernel/__init__.py 4 LOC
evolution_kernel/cli.py 327 LOC — argument parsing, --loop dispatch
evolution_kernel/config.py 368 LOC — evolution.yml schema + validation
evolution_kernel/governor.py 673 LOC — closed-loop orchestrator (zero LLM calls)
evolution_kernel/hard_stops.py 132 LOC — max_iterations / max_total_usd / max_total_tokens
evolution_kernel/observer.py 100 LOC — runs evidence_sources, normalizes output
evolution_kernel/sandbox.py 100 LOC — process sandbox (PR7a, work-in-progress)
evolution_kernel/scope.py 70 LOC — allowed_paths enforcement
─────────
1,774 LOC
```
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Protocol-zero-0
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

docs(evidence): commit evidence/ artifacts referenced by README - #41

Merged
Protocol-zero-0 merged 1 commit into
mainfrom
chore/post-v112-evidence-and-docs
May 26, 2026
Merged

docs(evidence): commit evidence/ artifacts referenced by README#41
Protocol-zero-0 merged 1 commit into
mainfrom
chore/post-v112-evidence-and-docs

Conversation

@Protocol-zero-0

Copy link
Copy Markdown
Owner

Why

The README has pointed to `evidence/` since v1.0 as "checked-in artifacts of runs anyone can reproduce", but the directory never landed. Dead link in v1.0 / v1.1.0 / v1.1.1 / v1.1.2 readers. Pre-publicize cleanup.

What lands

  • `evidence/README.md` — top-level orientation; new reproducibility note pointing out the demo run used `claude_cli` (currently on main, shipping in v1.2.0); everything else reproducible against v1.1.2 today.
  • `evidence/demo-target-run-2026-05-14/` — full ledger of a real, self-halted kernel run against `examples/demo_target`. 47 ledger files + per-run README + config + raw `run.log`. Demonstrates planner reading history, evaluator rejecting useless patches, hard-stop firing ($0.11 / 3 runs / 276 tokens).
  • `evidence/repo-snapshot-2026-05-13/` — architecture, test transcript, and 5-minute terminal walkthrough captured at v0.3.0.

Stats: 54 files, 1132 insertions.

What's NOT in this PR

  • No code changes
  • No version bump
  • Paths inside the historical `evolution-cli.yml` are absolute and pre-bundled (capture from 2026-05-14) — kept as-is because this is a historical artifact, not a runnable example. The reproducibility note explains the situation.

Test plan

  • CI green on this PR
  • After merge, `evidence/` link in README points at real files

The README has pointed to `evidence/` since v1.0 ("checked-in artifacts
of runs anyone can reproduce"), but the directory itself never landed —
the link was dead in v1.0 / v1.1.0 / v1.1.1 / v1.1.2 readers.
This commit ships the two anchor pieces:
- `demo-target-run-2026-05-14/` — full ledger of a real, self-halted
kernel run against examples/demo_target. 47 ledger files + README +
config + raw run.log. Demonstrates planner reading history, evaluator
rejecting useless patches, hard-stop firing — $0.11 / 3 runs / 276
tokens.
- `repo-snapshot-2026-05-13/` — architecture, test transcript, and
5-minute terminal walkthrough captured at v0.3.0.
Adds a reproducibility note pointing out that the demo run used
`claude_cli` (currently on main, shipping in v1.2.0); everything else
in evidence/ is reproducible against v1.1.2.
No code change. No version bump.
CopilotAI review requested due to automatic review settings May 26, 2026 10:14
@Protocol-zero-0
Protocol-zero-0 merged commit b3a5d66 into mainMay 26, 2026
4 checks passed
@Protocol-zero-0
Protocol-zero-0 deleted the chore/post-v112-evidence-and-docs branch May 26, 2026 10:15

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds the missing evidence/ directory that the main README has referenced since v1.0, checking in a curated set of reproducibility artifacts (repo snapshot + a real demo-target run ledger) intended to make the project’s claims auditable via concrete files.

Changes:

  • Add evidence/README.md as a top-level index/orientation for checked-in evidence.
  • Add evidence/repo-snapshot-2026-05-13/ snapshot docs (architecture summary, walkthrough, test transcript).
  • Add evidence/demo-target-run-2026-05-14/ case study + full per-run ledger artifacts and config used for the demo run.

Reviewed changes

Copilot reviewed 53 out of 54 changed files in this pull request and generated 11 comments.

Show a summary per file
FileDescription
evidence/README.mdIndex for evidence artifacts and reproducibility notes
evidence/repo-snapshot-2026-05-13/architecture.mdRepo architecture snapshot write-up (as of 2026-05-13)
evidence/repo-snapshot-2026-05-13/test-output.txtCaptured test transcript artifact
evidence/repo-snapshot-2026-05-13/walkthrough.mdCopy/paste walkthrough for inspecting repo anatomy
evidence/demo-target-run-2026-05-14/README.mdNarrative case study + reproduction steps for demo-target run
evidence/demo-target-run-2026-05-14/evolution-cli.ymlConfig used for the recorded demo-target run
evidence/demo-target-run-2026-05-14/ledger/.evolution_state.jsonPersisted run state summary for the demo run
evidence/demo-target-run-2026-05-14/ledger/accepted/current_commit.txtAccepted-branch pointer recorded in the ledger
evidence/demo-target-run-2026-05-14/ledger/failed/0001-summary.jsonFailure summary for run 0001
evidence/demo-target-run-2026-05-14/ledger/failed/0002-summary.jsonFailure summary for run 0002
evidence/demo-target-run-2026-05-14/ledger/failed/0003-summary.jsonFailure summary for run 0003
evidence/demo-target-run-2026-05-14/ledger/halted/20260514T041157Z.jsonHalt reason + totals recorded at stop time
evidence/demo-target-run-2026-05-14/ledger/runs/0001/candidate_commit.txtCandidate commit SHA record for run 0001
evidence/demo-target-run-2026-05-14/ledger/runs/0001/config.jsonPer-run config snapshot (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/decision.jsonGovernor decision artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/evaluation.jsonEvaluator output artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/evaluator_input.jsonEvaluator input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_input.jsonExecutor input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_output.jsonExecutor output summary (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_output.stdout.txtRaw executor tool stdout capture (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/goal.jsonGoal snapshot (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/observation.jsonEvidence observation artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/patch.diffPatch diff artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/plan.jsonPlanner output plan artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/planner_input.jsonPlanner input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/reflection.jsonReflection/history entry artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/candidate_commit.txtCandidate commit SHA record for run 0002
evidence/demo-target-run-2026-05-14/ledger/runs/0002/config.jsonPer-run config snapshot (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/decision.jsonGovernor decision artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/evaluation.jsonEvaluator output artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/evaluator_input.jsonEvaluator input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_input.jsonExecutor input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_output.jsonExecutor output summary (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_output.stdout.txtRaw executor tool stdout capture (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/goal.jsonGoal snapshot (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/observation.jsonEvidence observation artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/patch.diffPatch diff artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/plan.jsonPlanner output plan artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/planner_input.jsonPlanner input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/reflection.jsonReflection/history entry artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/candidate_commit.txtCandidate commit SHA record for run 0003
evidence/demo-target-run-2026-05-14/ledger/runs/0003/config.jsonPer-run config snapshot (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/decision.jsonGovernor decision artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/evaluation.jsonEvaluator output artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/evaluator_input.jsonEvaluator input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_input.jsonExecutor input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_output.jsonExecutor output summary (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_output.stdout.txtRaw executor tool stdout capture (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/goal.jsonGoal snapshot (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/observation.jsonEvidence observation artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/patch.diffPatch diff artifact (run 0003; empty)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/plan.jsonPlanner output plan artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/planner_input.jsonPlanner input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/reflection.jsonReflection/history entry artifact (run 0003)
Comments suppressed due to low confidence (4)

evidence/repo-snapshot-2026-05-13/walkthrough.md:35

  • The “Expected last line” shows “83 passed in ~25s”, but the checked-in transcript ends with “83 passed in 41.30s”. Consider updating the expected timing (or removing it) to avoid confusing readers who compare output.
    evidence/repo-snapshot-2026-05-13/walkthrough.md:62
  • ls roles/ and cat roles/planner.py will fail in the current repo layout because the role scripts live under evolution_kernel/roles/ (or can be referenced via bundled: in config). Either update the paths or add a note to check out the v0.3.0 snapshot commit before running these commands.
    evidence/repo-snapshot-2026-05-13/walkthrough.md:53
  • The expected wc -l evolution_kernel/governor.py output is hard-coded to 673 lines, but the current file is 674 lines. If this walkthrough is meant to be copy-pasteable on current main, consider making this an approximate check (or pinning to a specific tag/commit).
    evidence/repo-snapshot-2026-05-13/architecture.md:38
  • This snapshot lists role scripts under a top-level roles/ directory and says role I/O lives at roles/*.{input,output}.json, but the current repo layout uses evolution_kernel/roles/* for the bundled scripts and the governor writes per-run artifacts like planner_input.json / plan.json directly under each run dir. Either pin the document to a specific commit/tag where roles/ existed, or update the paths so the file references remain navigable today.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadevidence/README.md

It exists alongside the README's "See it in action" section, which describes an *illustrative* GSM8K scenario (a design target, not a checked-in run). The artifacts here are different: they describe **what's actually inside this repo today**, anchored to specific files, tests, commits, and a real end-to-end run anyone can verify in under ten minutes.

> **Reproducibility note.** The 2026-05-14 demo run used the `claude_cli` LLM provider, which is merged on `main` and will ship in **v1.2.0**. Until then, reproduce from a `git clone` of this repo. Everything else in this directory (architecture snapshot, walkthrough, ledger structure) is reproducible against v1.1.2 today.
Comment threadevidence/README.md
|---|---|
| [`README.md`](demo-target-run-2026-05-14/README.md) | Narrated case study: setup, run-by-run timeline, why a self-halted run is stronger evidence than a successful one, exact reproduction commands. |
| [`evolution-cli.yml`](demo-target-run-2026-05-14/evolution-cli.yml) | The exact config used (the new `claude_cli` provider; $10 budget; src/ scope). |
| [`run.log`](demo-target-run-2026-05-14/run.log) | Raw kernel stdout/stderr from the run. |
Comment threadevidence/README.md
| File | What it shows |
|---|---|
| [`architecture.md`](repo-snapshot-2026-05-13/architecture.md) | The 8-module, ~1,800-LOC runtime; the 5 role scripts; the 4-stage PR history that built it. With exact file paths and line counts. |
| [`test-output.txt`](repo-snapshot-2026-05-13/test-output.txt) | Raw transcript of `python3 -m pytest tests/ -v`. **83 tests pass in ~25s, no network calls.** (Counted before PR7a/PR7b landed; latest count is 99 — re-run the suite to verify.) |
| Coding agent | `claude-code` (also `claude -p`, with `--permission-mode bypassPermissions` inside the kernel-managed worktree) |
| Hard stops | `max_iterations: 10`, `max_consecutive_failures: 3`, `max_total_usd: 10.00`, `max_total_tokens: 1,000,000` |

Full config: [`evolution-cli.yml`](evolution-cli.yml). Raw kernel stdout/stderr: [`run.log`](run.log).
Comment on lines +100 to +116
## How to reproduce

```bash
git clone https://github.com/Protocol-zero-0/evolution-kernel.git
cd evolution-kernel
pip install -e . # (or set PYTHONPATH=$PWD if PEP 668 blocks)

# Prepare a fresh demo target outside the repo
cp -r examples/demo_target /tmp/demo-target
bash /tmp/demo-target/setup.sh

# Re-run with the same config used here
PYTHONPATH=$PWD evolution-kernel \
--config evidence/demo-target-run-2026-05-14/evolution-cli.yml \
--repo /tmp/demo-target \
--ledger /tmp/ek-rerun \
--loop
Comment on lines +133 to +137
| [`roles/planner.py`](../../roles/planner.py) | new `_call_claude_cli(prompt, model)` + `provider == "claude_cli"` branch |
| [`roles/evaluator.py`](../../roles/evaluator.py) | inline `claude_cli` branch in `_call_llm` |
| [`roles/goal_evaluator.py`](../../roles/goal_evaluator.py) | new helper + branch |
| [`roles/strategist.py`](../../roles/strategist.py) | new helper + branch |
| [`roles/executor.sh`](../../roles/executor.sh) | `claude -p` now invoked with `--permission-mode bypassPermissions` (governor's worktree is the trust boundary) |

All four `_call_claude_cli` helpers shell out via `claude -p --model <m> --output-format json`, parse the JSON envelope, and return real `total_cost_usd` and `input_tokens + output_tokens`. The kernel's existing `max_total_usd` and `max_total_tokens` cost guards continue to work without modification — they just see a different LLM client underneath.

All 99 existing tests still pass with these additions (see [`repo-snapshot-2026-05-13/test-output.txt`](../repo-snapshot-2026-05-13/test-output.txt) — that snapshot was taken before this PR's edits, but the suite was re-run after each edit during this session; final result: `99 passed in 25.93s`).
Comment on lines +36 to +38
planner: ["python3", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/planner.py"]
executor: ["bash", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/executor.sh"]
evaluator: ["python3", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/evaluator.py"]
Comment on lines +21 to +25
### 1. Verify the kernel works — run the test suite (~25s)

```bash
python3 -m pytest tests/ -v
```
Comment on lines +7 to +20
## Runtime — 8 Python modules, ~1,800 LOC total

```
evolution_kernel/__init__.py 4 LOC
evolution_kernel/cli.py 327 LOC — argument parsing, --loop dispatch
evolution_kernel/config.py 368 LOC — evolution.yml schema + validation
evolution_kernel/governor.py 673 LOC — closed-loop orchestrator (zero LLM calls)
evolution_kernel/hard_stops.py 132 LOC — max_iterations / max_total_usd / max_total_tokens
evolution_kernel/observer.py 100 LOC — runs evidence_sources, normalizes output
evolution_kernel/sandbox.py 100 LOC — process sandbox (PR7a, work-in-progress)
evolution_kernel/scope.py 70 LOC — allowed_paths enforcement
─────────
1,774 LOC
```
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Protocol-zero-0
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs(evidence): commit evidence/ artifacts referenced by README - #41

Merged
Protocol-zero-0 merged 1 commit into
mainfrom
chore/post-v112-evidence-and-docs
May 26, 2026
Merged

docs(evidence): commit evidence/ artifacts referenced by README#41
Protocol-zero-0 merged 1 commit into
mainfrom
chore/post-v112-evidence-and-docs

Conversation

@Protocol-zero-0

Copy link
Copy Markdown
Owner

Why

The README has pointed to `evidence/` since v1.0 as "checked-in artifacts of runs anyone can reproduce", but the directory never landed. Dead link in v1.0 / v1.1.0 / v1.1.1 / v1.1.2 readers. Pre-publicize cleanup.

What lands

  • `evidence/README.md` — top-level orientation; new reproducibility note pointing out the demo run used `claude_cli` (currently on main, shipping in v1.2.0); everything else reproducible against v1.1.2 today.
  • `evidence/demo-target-run-2026-05-14/` — full ledger of a real, self-halted kernel run against `examples/demo_target`. 47 ledger files + per-run README + config + raw `run.log`. Demonstrates planner reading history, evaluator rejecting useless patches, hard-stop firing ($0.11 / 3 runs / 276 tokens).
  • `evidence/repo-snapshot-2026-05-13/` — architecture, test transcript, and 5-minute terminal walkthrough captured at v0.3.0.

Stats: 54 files, 1132 insertions.

What's NOT in this PR

  • No code changes
  • No version bump
  • Paths inside the historical `evolution-cli.yml` are absolute and pre-bundled (capture from 2026-05-14) — kept as-is because this is a historical artifact, not a runnable example. The reproducibility note explains the situation.

Test plan

  • CI green on this PR
  • After merge, `evidence/` link in README points at real files

The README has pointed to `evidence/` since v1.0 ("checked-in artifacts
of runs anyone can reproduce"), but the directory itself never landed —
the link was dead in v1.0 / v1.1.0 / v1.1.1 / v1.1.2 readers.
This commit ships the two anchor pieces:
- `demo-target-run-2026-05-14/` — full ledger of a real, self-halted
kernel run against examples/demo_target. 47 ledger files + README +
config + raw run.log. Demonstrates planner reading history, evaluator
rejecting useless patches, hard-stop firing — $0.11 / 3 runs / 276
tokens.
- `repo-snapshot-2026-05-13/` — architecture, test transcript, and
5-minute terminal walkthrough captured at v0.3.0.
Adds a reproducibility note pointing out that the demo run used
`claude_cli` (currently on main, shipping in v1.2.0); everything else
in evidence/ is reproducible against v1.1.2.
No code change. No version bump.
CopilotAI review requested due to automatic review settings May 26, 2026 10:14
@Protocol-zero-0
Protocol-zero-0 merged commit b3a5d66 into mainMay 26, 2026
4 checks passed
@Protocol-zero-0
Protocol-zero-0 deleted the chore/post-v112-evidence-and-docs branch May 26, 2026 10:15

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds the missing evidence/ directory that the main README has referenced since v1.0, checking in a curated set of reproducibility artifacts (repo snapshot + a real demo-target run ledger) intended to make the project’s claims auditable via concrete files.

Changes:

  • Add evidence/README.md as a top-level index/orientation for checked-in evidence.
  • Add evidence/repo-snapshot-2026-05-13/ snapshot docs (architecture summary, walkthrough, test transcript).
  • Add evidence/demo-target-run-2026-05-14/ case study + full per-run ledger artifacts and config used for the demo run.

Reviewed changes

Copilot reviewed 53 out of 54 changed files in this pull request and generated 11 comments.

Show a summary per file
FileDescription
evidence/README.mdIndex for evidence artifacts and reproducibility notes
evidence/repo-snapshot-2026-05-13/architecture.mdRepo architecture snapshot write-up (as of 2026-05-13)
evidence/repo-snapshot-2026-05-13/test-output.txtCaptured test transcript artifact
evidence/repo-snapshot-2026-05-13/walkthrough.mdCopy/paste walkthrough for inspecting repo anatomy
evidence/demo-target-run-2026-05-14/README.mdNarrative case study + reproduction steps for demo-target run
evidence/demo-target-run-2026-05-14/evolution-cli.ymlConfig used for the recorded demo-target run
evidence/demo-target-run-2026-05-14/ledger/.evolution_state.jsonPersisted run state summary for the demo run
evidence/demo-target-run-2026-05-14/ledger/accepted/current_commit.txtAccepted-branch pointer recorded in the ledger
evidence/demo-target-run-2026-05-14/ledger/failed/0001-summary.jsonFailure summary for run 0001
evidence/demo-target-run-2026-05-14/ledger/failed/0002-summary.jsonFailure summary for run 0002
evidence/demo-target-run-2026-05-14/ledger/failed/0003-summary.jsonFailure summary for run 0003
evidence/demo-target-run-2026-05-14/ledger/halted/20260514T041157Z.jsonHalt reason + totals recorded at stop time
evidence/demo-target-run-2026-05-14/ledger/runs/0001/candidate_commit.txtCandidate commit SHA record for run 0001
evidence/demo-target-run-2026-05-14/ledger/runs/0001/config.jsonPer-run config snapshot (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/decision.jsonGovernor decision artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/evaluation.jsonEvaluator output artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/evaluator_input.jsonEvaluator input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_input.jsonExecutor input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_output.jsonExecutor output summary (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_output.stdout.txtRaw executor tool stdout capture (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/goal.jsonGoal snapshot (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/observation.jsonEvidence observation artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/patch.diffPatch diff artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/plan.jsonPlanner output plan artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/planner_input.jsonPlanner input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/reflection.jsonReflection/history entry artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/candidate_commit.txtCandidate commit SHA record for run 0002
evidence/demo-target-run-2026-05-14/ledger/runs/0002/config.jsonPer-run config snapshot (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/decision.jsonGovernor decision artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/evaluation.jsonEvaluator output artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/evaluator_input.jsonEvaluator input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_input.jsonExecutor input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_output.jsonExecutor output summary (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_output.stdout.txtRaw executor tool stdout capture (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/goal.jsonGoal snapshot (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/observation.jsonEvidence observation artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/patch.diffPatch diff artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/plan.jsonPlanner output plan artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/planner_input.jsonPlanner input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/reflection.jsonReflection/history entry artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/candidate_commit.txtCandidate commit SHA record for run 0003
evidence/demo-target-run-2026-05-14/ledger/runs/0003/config.jsonPer-run config snapshot (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/decision.jsonGovernor decision artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/evaluation.jsonEvaluator output artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/evaluator_input.jsonEvaluator input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_input.jsonExecutor input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_output.jsonExecutor output summary (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_output.stdout.txtRaw executor tool stdout capture (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/goal.jsonGoal snapshot (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/observation.jsonEvidence observation artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/patch.diffPatch diff artifact (run 0003; empty)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/plan.jsonPlanner output plan artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/planner_input.jsonPlanner input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/reflection.jsonReflection/history entry artifact (run 0003)
Comments suppressed due to low confidence (4)

evidence/repo-snapshot-2026-05-13/walkthrough.md:35

  • The “Expected last line” shows “83 passed in ~25s”, but the checked-in transcript ends with “83 passed in 41.30s”. Consider updating the expected timing (or removing it) to avoid confusing readers who compare output.
    evidence/repo-snapshot-2026-05-13/walkthrough.md:62
  • ls roles/ and cat roles/planner.py will fail in the current repo layout because the role scripts live under evolution_kernel/roles/ (or can be referenced via bundled: in config). Either update the paths or add a note to check out the v0.3.0 snapshot commit before running these commands.
    evidence/repo-snapshot-2026-05-13/walkthrough.md:53
  • The expected wc -l evolution_kernel/governor.py output is hard-coded to 673 lines, but the current file is 674 lines. If this walkthrough is meant to be copy-pasteable on current main, consider making this an approximate check (or pinning to a specific tag/commit).
    evidence/repo-snapshot-2026-05-13/architecture.md:38
  • This snapshot lists role scripts under a top-level roles/ directory and says role I/O lives at roles/*.{input,output}.json, but the current repo layout uses evolution_kernel/roles/* for the bundled scripts and the governor writes per-run artifacts like planner_input.json / plan.json directly under each run dir. Either pin the document to a specific commit/tag where roles/ existed, or update the paths so the file references remain navigable today.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadevidence/README.md

It exists alongside the README's "See it in action" section, which describes an *illustrative* GSM8K scenario (a design target, not a checked-in run). The artifacts here are different: they describe **what's actually inside this repo today**, anchored to specific files, tests, commits, and a real end-to-end run anyone can verify in under ten minutes.

> **Reproducibility note.** The 2026-05-14 demo run used the `claude_cli` LLM provider, which is merged on `main` and will ship in **v1.2.0**. Until then, reproduce from a `git clone` of this repo. Everything else in this directory (architecture snapshot, walkthrough, ledger structure) is reproducible against v1.1.2 today.
Comment threadevidence/README.md
|---|---|
| [`README.md`](demo-target-run-2026-05-14/README.md) | Narrated case study: setup, run-by-run timeline, why a self-halted run is stronger evidence than a successful one, exact reproduction commands. |
| [`evolution-cli.yml`](demo-target-run-2026-05-14/evolution-cli.yml) | The exact config used (the new `claude_cli` provider; $10 budget; src/ scope). |
| [`run.log`](demo-target-run-2026-05-14/run.log) | Raw kernel stdout/stderr from the run. |
Comment threadevidence/README.md
| File | What it shows |
|---|---|
| [`architecture.md`](repo-snapshot-2026-05-13/architecture.md) | The 8-module, ~1,800-LOC runtime; the 5 role scripts; the 4-stage PR history that built it. With exact file paths and line counts. |
| [`test-output.txt`](repo-snapshot-2026-05-13/test-output.txt) | Raw transcript of `python3 -m pytest tests/ -v`. **83 tests pass in ~25s, no network calls.** (Counted before PR7a/PR7b landed; latest count is 99 — re-run the suite to verify.) |
| Coding agent | `claude-code` (also `claude -p`, with `--permission-mode bypassPermissions` inside the kernel-managed worktree) |
| Hard stops | `max_iterations: 10`, `max_consecutive_failures: 3`, `max_total_usd: 10.00`, `max_total_tokens: 1,000,000` |

Full config: [`evolution-cli.yml`](evolution-cli.yml). Raw kernel stdout/stderr: [`run.log`](run.log).
Comment on lines +100 to +116
## How to reproduce

```bash
git clone https://github.com/Protocol-zero-0/evolution-kernel.git
cd evolution-kernel
pip install -e . # (or set PYTHONPATH=$PWD if PEP 668 blocks)

# Prepare a fresh demo target outside the repo
cp -r examples/demo_target /tmp/demo-target
bash /tmp/demo-target/setup.sh

# Re-run with the same config used here
PYTHONPATH=$PWD evolution-kernel \
--config evidence/demo-target-run-2026-05-14/evolution-cli.yml \
--repo /tmp/demo-target \
--ledger /tmp/ek-rerun \
--loop
Comment on lines +133 to +137
| [`roles/planner.py`](../../roles/planner.py) | new `_call_claude_cli(prompt, model)` + `provider == "claude_cli"` branch |
| [`roles/evaluator.py`](../../roles/evaluator.py) | inline `claude_cli` branch in `_call_llm` |
| [`roles/goal_evaluator.py`](../../roles/goal_evaluator.py) | new helper + branch |
| [`roles/strategist.py`](../../roles/strategist.py) | new helper + branch |
| [`roles/executor.sh`](../../roles/executor.sh) | `claude -p` now invoked with `--permission-mode bypassPermissions` (governor's worktree is the trust boundary) |

All four `_call_claude_cli` helpers shell out via `claude -p --model <m> --output-format json`, parse the JSON envelope, and return real `total_cost_usd` and `input_tokens + output_tokens`. The kernel's existing `max_total_usd` and `max_total_tokens` cost guards continue to work without modification — they just see a different LLM client underneath.

All 99 existing tests still pass with these additions (see [`repo-snapshot-2026-05-13/test-output.txt`](../repo-snapshot-2026-05-13/test-output.txt) — that snapshot was taken before this PR's edits, but the suite was re-run after each edit during this session; final result: `99 passed in 25.93s`).
Comment on lines +36 to +38
planner: ["python3", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/planner.py"]
executor: ["bash", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/executor.sh"]
evaluator: ["python3", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/evaluator.py"]
Comment on lines +21 to +25
### 1. Verify the kernel works — run the test suite (~25s)

```bash
python3 -m pytest tests/ -v
```
Comment on lines +7 to +20
## Runtime — 8 Python modules, ~1,800 LOC total

```
evolution_kernel/__init__.py 4 LOC
evolution_kernel/cli.py 327 LOC — argument parsing, --loop dispatch
evolution_kernel/config.py 368 LOC — evolution.yml schema + validation
evolution_kernel/governor.py 673 LOC — closed-loop orchestrator (zero LLM calls)
evolution_kernel/hard_stops.py 132 LOC — max_iterations / max_total_usd / max_total_tokens
evolution_kernel/observer.py 100 LOC — runs evidence_sources, normalizes output
evolution_kernel/sandbox.py 100 LOC — process sandbox (PR7a, work-in-progress)
evolution_kernel/scope.py 70 LOC — allowed_paths enforcement
─────────
1,774 LOC
```
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Protocol-zero-0
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs(evidence): commit evidence/ artifacts referenced by README - #41

Merged
Protocol-zero-0 merged 1 commit into
mainfrom
chore/post-v112-evidence-and-docs
May 26, 2026
Merged

docs(evidence): commit evidence/ artifacts referenced by README#41
Protocol-zero-0 merged 1 commit into
mainfrom
chore/post-v112-evidence-and-docs

Conversation

@Protocol-zero-0

Copy link
Copy Markdown
Owner

Why

The README has pointed to `evidence/` since v1.0 as "checked-in artifacts of runs anyone can reproduce", but the directory never landed. Dead link in v1.0 / v1.1.0 / v1.1.1 / v1.1.2 readers. Pre-publicize cleanup.

What lands

  • `evidence/README.md` — top-level orientation; new reproducibility note pointing out the demo run used `claude_cli` (currently on main, shipping in v1.2.0); everything else reproducible against v1.1.2 today.
  • `evidence/demo-target-run-2026-05-14/` — full ledger of a real, self-halted kernel run against `examples/demo_target`. 47 ledger files + per-run README + config + raw `run.log`. Demonstrates planner reading history, evaluator rejecting useless patches, hard-stop firing ($0.11 / 3 runs / 276 tokens).
  • `evidence/repo-snapshot-2026-05-13/` — architecture, test transcript, and 5-minute terminal walkthrough captured at v0.3.0.

Stats: 54 files, 1132 insertions.

What's NOT in this PR

  • No code changes
  • No version bump
  • Paths inside the historical `evolution-cli.yml` are absolute and pre-bundled (capture from 2026-05-14) — kept as-is because this is a historical artifact, not a runnable example. The reproducibility note explains the situation.

Test plan

  • CI green on this PR
  • After merge, `evidence/` link in README points at real files

The README has pointed to `evidence/` since v1.0 ("checked-in artifacts
of runs anyone can reproduce"), but the directory itself never landed —
the link was dead in v1.0 / v1.1.0 / v1.1.1 / v1.1.2 readers.
This commit ships the two anchor pieces:
- `demo-target-run-2026-05-14/` — full ledger of a real, self-halted
kernel run against examples/demo_target. 47 ledger files + README +
config + raw run.log. Demonstrates planner reading history, evaluator
rejecting useless patches, hard-stop firing — $0.11 / 3 runs / 276
tokens.
- `repo-snapshot-2026-05-13/` — architecture, test transcript, and
5-minute terminal walkthrough captured at v0.3.0.
Adds a reproducibility note pointing out that the demo run used
`claude_cli` (currently on main, shipping in v1.2.0); everything else
in evidence/ is reproducible against v1.1.2.
No code change. No version bump.
CopilotAI review requested due to automatic review settings May 26, 2026 10:14
@Protocol-zero-0
Protocol-zero-0 merged commit b3a5d66 into mainMay 26, 2026
4 checks passed
@Protocol-zero-0
Protocol-zero-0 deleted the chore/post-v112-evidence-and-docs branch May 26, 2026 10:15

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds the missing evidence/ directory that the main README has referenced since v1.0, checking in a curated set of reproducibility artifacts (repo snapshot + a real demo-target run ledger) intended to make the project’s claims auditable via concrete files.

Changes:

  • Add evidence/README.md as a top-level index/orientation for checked-in evidence.
  • Add evidence/repo-snapshot-2026-05-13/ snapshot docs (architecture summary, walkthrough, test transcript).
  • Add evidence/demo-target-run-2026-05-14/ case study + full per-run ledger artifacts and config used for the demo run.

Reviewed changes

Copilot reviewed 53 out of 54 changed files in this pull request and generated 11 comments.

Show a summary per file
FileDescription
evidence/README.mdIndex for evidence artifacts and reproducibility notes
evidence/repo-snapshot-2026-05-13/architecture.mdRepo architecture snapshot write-up (as of 2026-05-13)
evidence/repo-snapshot-2026-05-13/test-output.txtCaptured test transcript artifact
evidence/repo-snapshot-2026-05-13/walkthrough.mdCopy/paste walkthrough for inspecting repo anatomy
evidence/demo-target-run-2026-05-14/README.mdNarrative case study + reproduction steps for demo-target run
evidence/demo-target-run-2026-05-14/evolution-cli.ymlConfig used for the recorded demo-target run
evidence/demo-target-run-2026-05-14/ledger/.evolution_state.jsonPersisted run state summary for the demo run
evidence/demo-target-run-2026-05-14/ledger/accepted/current_commit.txtAccepted-branch pointer recorded in the ledger
evidence/demo-target-run-2026-05-14/ledger/failed/0001-summary.jsonFailure summary for run 0001
evidence/demo-target-run-2026-05-14/ledger/failed/0002-summary.jsonFailure summary for run 0002
evidence/demo-target-run-2026-05-14/ledger/failed/0003-summary.jsonFailure summary for run 0003
evidence/demo-target-run-2026-05-14/ledger/halted/20260514T041157Z.jsonHalt reason + totals recorded at stop time
evidence/demo-target-run-2026-05-14/ledger/runs/0001/candidate_commit.txtCandidate commit SHA record for run 0001
evidence/demo-target-run-2026-05-14/ledger/runs/0001/config.jsonPer-run config snapshot (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/decision.jsonGovernor decision artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/evaluation.jsonEvaluator output artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/evaluator_input.jsonEvaluator input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_input.jsonExecutor input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_output.jsonExecutor output summary (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_output.stdout.txtRaw executor tool stdout capture (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/goal.jsonGoal snapshot (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/observation.jsonEvidence observation artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/patch.diffPatch diff artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/plan.jsonPlanner output plan artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/planner_input.jsonPlanner input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/reflection.jsonReflection/history entry artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/candidate_commit.txtCandidate commit SHA record for run 0002
evidence/demo-target-run-2026-05-14/ledger/runs/0002/config.jsonPer-run config snapshot (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/decision.jsonGovernor decision artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/evaluation.jsonEvaluator output artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/evaluator_input.jsonEvaluator input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_input.jsonExecutor input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_output.jsonExecutor output summary (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_output.stdout.txtRaw executor tool stdout capture (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/goal.jsonGoal snapshot (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/observation.jsonEvidence observation artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/patch.diffPatch diff artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/plan.jsonPlanner output plan artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/planner_input.jsonPlanner input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/reflection.jsonReflection/history entry artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/candidate_commit.txtCandidate commit SHA record for run 0003
evidence/demo-target-run-2026-05-14/ledger/runs/0003/config.jsonPer-run config snapshot (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/decision.jsonGovernor decision artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/evaluation.jsonEvaluator output artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/evaluator_input.jsonEvaluator input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_input.jsonExecutor input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_output.jsonExecutor output summary (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_output.stdout.txtRaw executor tool stdout capture (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/goal.jsonGoal snapshot (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/observation.jsonEvidence observation artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/patch.diffPatch diff artifact (run 0003; empty)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/plan.jsonPlanner output plan artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/planner_input.jsonPlanner input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/reflection.jsonReflection/history entry artifact (run 0003)
Comments suppressed due to low confidence (4)

evidence/repo-snapshot-2026-05-13/walkthrough.md:35

  • The “Expected last line” shows “83 passed in ~25s”, but the checked-in transcript ends with “83 passed in 41.30s”. Consider updating the expected timing (or removing it) to avoid confusing readers who compare output.
    evidence/repo-snapshot-2026-05-13/walkthrough.md:62
  • ls roles/ and cat roles/planner.py will fail in the current repo layout because the role scripts live under evolution_kernel/roles/ (or can be referenced via bundled: in config). Either update the paths or add a note to check out the v0.3.0 snapshot commit before running these commands.
    evidence/repo-snapshot-2026-05-13/walkthrough.md:53
  • The expected wc -l evolution_kernel/governor.py output is hard-coded to 673 lines, but the current file is 674 lines. If this walkthrough is meant to be copy-pasteable on current main, consider making this an approximate check (or pinning to a specific tag/commit).
    evidence/repo-snapshot-2026-05-13/architecture.md:38
  • This snapshot lists role scripts under a top-level roles/ directory and says role I/O lives at roles/*.{input,output}.json, but the current repo layout uses evolution_kernel/roles/* for the bundled scripts and the governor writes per-run artifacts like planner_input.json / plan.json directly under each run dir. Either pin the document to a specific commit/tag where roles/ existed, or update the paths so the file references remain navigable today.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadevidence/README.md

It exists alongside the README's "See it in action" section, which describes an *illustrative* GSM8K scenario (a design target, not a checked-in run). The artifacts here are different: they describe **what's actually inside this repo today**, anchored to specific files, tests, commits, and a real end-to-end run anyone can verify in under ten minutes.

> **Reproducibility note.** The 2026-05-14 demo run used the `claude_cli` LLM provider, which is merged on `main` and will ship in **v1.2.0**. Until then, reproduce from a `git clone` of this repo. Everything else in this directory (architecture snapshot, walkthrough, ledger structure) is reproducible against v1.1.2 today.
Comment threadevidence/README.md
|---|---|
| [`README.md`](demo-target-run-2026-05-14/README.md) | Narrated case study: setup, run-by-run timeline, why a self-halted run is stronger evidence than a successful one, exact reproduction commands. |
| [`evolution-cli.yml`](demo-target-run-2026-05-14/evolution-cli.yml) | The exact config used (the new `claude_cli` provider; $10 budget; src/ scope). |
| [`run.log`](demo-target-run-2026-05-14/run.log) | Raw kernel stdout/stderr from the run. |
Comment threadevidence/README.md
| File | What it shows |
|---|---|
| [`architecture.md`](repo-snapshot-2026-05-13/architecture.md) | The 8-module, ~1,800-LOC runtime; the 5 role scripts; the 4-stage PR history that built it. With exact file paths and line counts. |
| [`test-output.txt`](repo-snapshot-2026-05-13/test-output.txt) | Raw transcript of `python3 -m pytest tests/ -v`. **83 tests pass in ~25s, no network calls.** (Counted before PR7a/PR7b landed; latest count is 99 — re-run the suite to verify.) |
| Coding agent | `claude-code` (also `claude -p`, with `--permission-mode bypassPermissions` inside the kernel-managed worktree) |
| Hard stops | `max_iterations: 10`, `max_consecutive_failures: 3`, `max_total_usd: 10.00`, `max_total_tokens: 1,000,000` |

Full config: [`evolution-cli.yml`](evolution-cli.yml). Raw kernel stdout/stderr: [`run.log`](run.log).
Comment on lines +100 to +116
## How to reproduce

```bash
git clone https://github.com/Protocol-zero-0/evolution-kernel.git
cd evolution-kernel
pip install -e . # (or set PYTHONPATH=$PWD if PEP 668 blocks)

# Prepare a fresh demo target outside the repo
cp -r examples/demo_target /tmp/demo-target
bash /tmp/demo-target/setup.sh

# Re-run with the same config used here
PYTHONPATH=$PWD evolution-kernel \
--config evidence/demo-target-run-2026-05-14/evolution-cli.yml \
--repo /tmp/demo-target \
--ledger /tmp/ek-rerun \
--loop
Comment on lines +133 to +137
| [`roles/planner.py`](../../roles/planner.py) | new `_call_claude_cli(prompt, model)` + `provider == "claude_cli"` branch |
| [`roles/evaluator.py`](../../roles/evaluator.py) | inline `claude_cli` branch in `_call_llm` |
| [`roles/goal_evaluator.py`](../../roles/goal_evaluator.py) | new helper + branch |
| [`roles/strategist.py`](../../roles/strategist.py) | new helper + branch |
| [`roles/executor.sh`](../../roles/executor.sh) | `claude -p` now invoked with `--permission-mode bypassPermissions` (governor's worktree is the trust boundary) |

All four `_call_claude_cli` helpers shell out via `claude -p --model <m> --output-format json`, parse the JSON envelope, and return real `total_cost_usd` and `input_tokens + output_tokens`. The kernel's existing `max_total_usd` and `max_total_tokens` cost guards continue to work without modification — they just see a different LLM client underneath.

All 99 existing tests still pass with these additions (see [`repo-snapshot-2026-05-13/test-output.txt`](../repo-snapshot-2026-05-13/test-output.txt) — that snapshot was taken before this PR's edits, but the suite was re-run after each edit during this session; final result: `99 passed in 25.93s`).
Comment on lines +36 to +38
planner: ["python3", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/planner.py"]
executor: ["bash", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/executor.sh"]
evaluator: ["python3", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/evaluator.py"]
Comment on lines +21 to +25
### 1. Verify the kernel works — run the test suite (~25s)

```bash
python3 -m pytest tests/ -v
```
Comment on lines +7 to +20
## Runtime — 8 Python modules, ~1,800 LOC total

```
evolution_kernel/__init__.py 4 LOC
evolution_kernel/cli.py 327 LOC — argument parsing, --loop dispatch
evolution_kernel/config.py 368 LOC — evolution.yml schema + validation
evolution_kernel/governor.py 673 LOC — closed-loop orchestrator (zero LLM calls)
evolution_kernel/hard_stops.py 132 LOC — max_iterations / max_total_usd / max_total_tokens
evolution_kernel/observer.py 100 LOC — runs evidence_sources, normalizes output
evolution_kernel/sandbox.py 100 LOC — process sandbox (PR7a, work-in-progress)
evolution_kernel/scope.py 70 LOC — allowed_paths enforcement
─────────
1,774 LOC
```
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Protocol-zero-0
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

docs(evidence): commit evidence/ artifacts referenced by README - #41

Merged
Protocol-zero-0 merged 1 commit into
mainfrom
chore/post-v112-evidence-and-docs
May 26, 2026
Merged

docs(evidence): commit evidence/ artifacts referenced by README#41
Protocol-zero-0 merged 1 commit into
mainfrom
chore/post-v112-evidence-and-docs

Conversation

@Protocol-zero-0

Copy link
Copy Markdown
Owner

Why

The README has pointed to `evidence/` since v1.0 as "checked-in artifacts of runs anyone can reproduce", but the directory never landed. Dead link in v1.0 / v1.1.0 / v1.1.1 / v1.1.2 readers. Pre-publicize cleanup.

What lands

  • `evidence/README.md` — top-level orientation; new reproducibility note pointing out the demo run used `claude_cli` (currently on main, shipping in v1.2.0); everything else reproducible against v1.1.2 today.
  • `evidence/demo-target-run-2026-05-14/` — full ledger of a real, self-halted kernel run against `examples/demo_target`. 47 ledger files + per-run README + config + raw `run.log`. Demonstrates planner reading history, evaluator rejecting useless patches, hard-stop firing ($0.11 / 3 runs / 276 tokens).
  • `evidence/repo-snapshot-2026-05-13/` — architecture, test transcript, and 5-minute terminal walkthrough captured at v0.3.0.

Stats: 54 files, 1132 insertions.

What's NOT in this PR

  • No code changes
  • No version bump
  • Paths inside the historical `evolution-cli.yml` are absolute and pre-bundled (capture from 2026-05-14) — kept as-is because this is a historical artifact, not a runnable example. The reproducibility note explains the situation.

Test plan

  • CI green on this PR
  • After merge, `evidence/` link in README points at real files

The README has pointed to `evidence/` since v1.0 ("checked-in artifacts
of runs anyone can reproduce"), but the directory itself never landed —
the link was dead in v1.0 / v1.1.0 / v1.1.1 / v1.1.2 readers.
This commit ships the two anchor pieces:
- `demo-target-run-2026-05-14/` — full ledger of a real, self-halted
kernel run against examples/demo_target. 47 ledger files + README +
config + raw run.log. Demonstrates planner reading history, evaluator
rejecting useless patches, hard-stop firing — $0.11 / 3 runs / 276
tokens.
- `repo-snapshot-2026-05-13/` — architecture, test transcript, and
5-minute terminal walkthrough captured at v0.3.0.
Adds a reproducibility note pointing out that the demo run used
`claude_cli` (currently on main, shipping in v1.2.0); everything else
in evidence/ is reproducible against v1.1.2.
No code change. No version bump.
CopilotAI review requested due to automatic review settings May 26, 2026 10:14
@Protocol-zero-0
Protocol-zero-0 merged commit b3a5d66 into mainMay 26, 2026
4 checks passed
@Protocol-zero-0
Protocol-zero-0 deleted the chore/post-v112-evidence-and-docs branch May 26, 2026 10:15

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds the missing evidence/ directory that the main README has referenced since v1.0, checking in a curated set of reproducibility artifacts (repo snapshot + a real demo-target run ledger) intended to make the project’s claims auditable via concrete files.

Changes:

  • Add evidence/README.md as a top-level index/orientation for checked-in evidence.
  • Add evidence/repo-snapshot-2026-05-13/ snapshot docs (architecture summary, walkthrough, test transcript).
  • Add evidence/demo-target-run-2026-05-14/ case study + full per-run ledger artifacts and config used for the demo run.

Reviewed changes

Copilot reviewed 53 out of 54 changed files in this pull request and generated 11 comments.

Show a summary per file
FileDescription
evidence/README.mdIndex for evidence artifacts and reproducibility notes
evidence/repo-snapshot-2026-05-13/architecture.mdRepo architecture snapshot write-up (as of 2026-05-13)
evidence/repo-snapshot-2026-05-13/test-output.txtCaptured test transcript artifact
evidence/repo-snapshot-2026-05-13/walkthrough.mdCopy/paste walkthrough for inspecting repo anatomy
evidence/demo-target-run-2026-05-14/README.mdNarrative case study + reproduction steps for demo-target run
evidence/demo-target-run-2026-05-14/evolution-cli.ymlConfig used for the recorded demo-target run
evidence/demo-target-run-2026-05-14/ledger/.evolution_state.jsonPersisted run state summary for the demo run
evidence/demo-target-run-2026-05-14/ledger/accepted/current_commit.txtAccepted-branch pointer recorded in the ledger
evidence/demo-target-run-2026-05-14/ledger/failed/0001-summary.jsonFailure summary for run 0001
evidence/demo-target-run-2026-05-14/ledger/failed/0002-summary.jsonFailure summary for run 0002
evidence/demo-target-run-2026-05-14/ledger/failed/0003-summary.jsonFailure summary for run 0003
evidence/demo-target-run-2026-05-14/ledger/halted/20260514T041157Z.jsonHalt reason + totals recorded at stop time
evidence/demo-target-run-2026-05-14/ledger/runs/0001/candidate_commit.txtCandidate commit SHA record for run 0001
evidence/demo-target-run-2026-05-14/ledger/runs/0001/config.jsonPer-run config snapshot (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/decision.jsonGovernor decision artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/evaluation.jsonEvaluator output artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/evaluator_input.jsonEvaluator input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_input.jsonExecutor input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_output.jsonExecutor output summary (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/executor_output.stdout.txtRaw executor tool stdout capture (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/goal.jsonGoal snapshot (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/observation.jsonEvidence observation artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/patch.diffPatch diff artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/plan.jsonPlanner output plan artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/planner_input.jsonPlanner input artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0001/reflection.jsonReflection/history entry artifact (run 0001)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/candidate_commit.txtCandidate commit SHA record for run 0002
evidence/demo-target-run-2026-05-14/ledger/runs/0002/config.jsonPer-run config snapshot (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/decision.jsonGovernor decision artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/evaluation.jsonEvaluator output artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/evaluator_input.jsonEvaluator input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_input.jsonExecutor input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_output.jsonExecutor output summary (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/executor_output.stdout.txtRaw executor tool stdout capture (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/goal.jsonGoal snapshot (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/observation.jsonEvidence observation artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/patch.diffPatch diff artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/plan.jsonPlanner output plan artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/planner_input.jsonPlanner input artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0002/reflection.jsonReflection/history entry artifact (run 0002)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/candidate_commit.txtCandidate commit SHA record for run 0003
evidence/demo-target-run-2026-05-14/ledger/runs/0003/config.jsonPer-run config snapshot (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/decision.jsonGovernor decision artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/evaluation.jsonEvaluator output artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/evaluator_input.jsonEvaluator input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_input.jsonExecutor input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_output.jsonExecutor output summary (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/executor_output.stdout.txtRaw executor tool stdout capture (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/goal.jsonGoal snapshot (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/observation.jsonEvidence observation artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/patch.diffPatch diff artifact (run 0003; empty)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/plan.jsonPlanner output plan artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/planner_input.jsonPlanner input artifact (run 0003)
evidence/demo-target-run-2026-05-14/ledger/runs/0003/reflection.jsonReflection/history entry artifact (run 0003)
Comments suppressed due to low confidence (4)

evidence/repo-snapshot-2026-05-13/walkthrough.md:35

  • The “Expected last line” shows “83 passed in ~25s”, but the checked-in transcript ends with “83 passed in 41.30s”. Consider updating the expected timing (or removing it) to avoid confusing readers who compare output.
    evidence/repo-snapshot-2026-05-13/walkthrough.md:62
  • ls roles/ and cat roles/planner.py will fail in the current repo layout because the role scripts live under evolution_kernel/roles/ (or can be referenced via bundled: in config). Either update the paths or add a note to check out the v0.3.0 snapshot commit before running these commands.
    evidence/repo-snapshot-2026-05-13/walkthrough.md:53
  • The expected wc -l evolution_kernel/governor.py output is hard-coded to 673 lines, but the current file is 674 lines. If this walkthrough is meant to be copy-pasteable on current main, consider making this an approximate check (or pinning to a specific tag/commit).
    evidence/repo-snapshot-2026-05-13/architecture.md:38
  • This snapshot lists role scripts under a top-level roles/ directory and says role I/O lives at roles/*.{input,output}.json, but the current repo layout uses evolution_kernel/roles/* for the bundled scripts and the governor writes per-run artifacts like planner_input.json / plan.json directly under each run dir. Either pin the document to a specific commit/tag where roles/ existed, or update the paths so the file references remain navigable today.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadevidence/README.md

It exists alongside the README's "See it in action" section, which describes an *illustrative* GSM8K scenario (a design target, not a checked-in run). The artifacts here are different: they describe **what's actually inside this repo today**, anchored to specific files, tests, commits, and a real end-to-end run anyone can verify in under ten minutes.

> **Reproducibility note.** The 2026-05-14 demo run used the `claude_cli` LLM provider, which is merged on `main` and will ship in **v1.2.0**. Until then, reproduce from a `git clone` of this repo. Everything else in this directory (architecture snapshot, walkthrough, ledger structure) is reproducible against v1.1.2 today.
Comment threadevidence/README.md
|---|---|
| [`README.md`](demo-target-run-2026-05-14/README.md) | Narrated case study: setup, run-by-run timeline, why a self-halted run is stronger evidence than a successful one, exact reproduction commands. |
| [`evolution-cli.yml`](demo-target-run-2026-05-14/evolution-cli.yml) | The exact config used (the new `claude_cli` provider; $10 budget; src/ scope). |
| [`run.log`](demo-target-run-2026-05-14/run.log) | Raw kernel stdout/stderr from the run. |
Comment threadevidence/README.md
| File | What it shows |
|---|---|
| [`architecture.md`](repo-snapshot-2026-05-13/architecture.md) | The 8-module, ~1,800-LOC runtime; the 5 role scripts; the 4-stage PR history that built it. With exact file paths and line counts. |
| [`test-output.txt`](repo-snapshot-2026-05-13/test-output.txt) | Raw transcript of `python3 -m pytest tests/ -v`. **83 tests pass in ~25s, no network calls.** (Counted before PR7a/PR7b landed; latest count is 99 — re-run the suite to verify.) |
| Coding agent | `claude-code` (also `claude -p`, with `--permission-mode bypassPermissions` inside the kernel-managed worktree) |
| Hard stops | `max_iterations: 10`, `max_consecutive_failures: 3`, `max_total_usd: 10.00`, `max_total_tokens: 1,000,000` |

Full config: [`evolution-cli.yml`](evolution-cli.yml). Raw kernel stdout/stderr: [`run.log`](run.log).
Comment on lines +100 to +116
## How to reproduce

```bash
git clone https://github.com/Protocol-zero-0/evolution-kernel.git
cd evolution-kernel
pip install -e . # (or set PYTHONPATH=$PWD if PEP 668 blocks)

# Prepare a fresh demo target outside the repo
cp -r examples/demo_target /tmp/demo-target
bash /tmp/demo-target/setup.sh

# Re-run with the same config used here
PYTHONPATH=$PWD evolution-kernel \
--config evidence/demo-target-run-2026-05-14/evolution-cli.yml \
--repo /tmp/demo-target \
--ledger /tmp/ek-rerun \
--loop
Comment on lines +133 to +137
| [`roles/planner.py`](../../roles/planner.py) | new `_call_claude_cli(prompt, model)` + `provider == "claude_cli"` branch |
| [`roles/evaluator.py`](../../roles/evaluator.py) | inline `claude_cli` branch in `_call_llm` |
| [`roles/goal_evaluator.py`](../../roles/goal_evaluator.py) | new helper + branch |
| [`roles/strategist.py`](../../roles/strategist.py) | new helper + branch |
| [`roles/executor.sh`](../../roles/executor.sh) | `claude -p` now invoked with `--permission-mode bypassPermissions` (governor's worktree is the trust boundary) |

All four `_call_claude_cli` helpers shell out via `claude -p --model <m> --output-format json`, parse the JSON envelope, and return real `total_cost_usd` and `input_tokens + output_tokens`. The kernel's existing `max_total_usd` and `max_total_tokens` cost guards continue to work without modification — they just see a different LLM client underneath.

All 99 existing tests still pass with these additions (see [`repo-snapshot-2026-05-13/test-output.txt`](../repo-snapshot-2026-05-13/test-output.txt) — that snapshot was taken before this PR's edits, but the suite was re-run after each edit during this session; final result: `99 passed in 25.93s`).
Comment on lines +36 to +38
planner: ["python3", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/planner.py"]
executor: ["bash", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/executor.sh"]
evaluator: ["python3", "/home/ubuntu/work/protocol-zero/evolution-kernel/roles/evaluator.py"]
Comment on lines +21 to +25
### 1. Verify the kernel works — run the test suite (~25s)

```bash
python3 -m pytest tests/ -v
```
Comment on lines +7 to +20
## Runtime — 8 Python modules, ~1,800 LOC total

```
evolution_kernel/__init__.py 4 LOC
evolution_kernel/cli.py 327 LOC — argument parsing, --loop dispatch
evolution_kernel/config.py 368 LOC — evolution.yml schema + validation
evolution_kernel/governor.py 673 LOC — closed-loop orchestrator (zero LLM calls)
evolution_kernel/hard_stops.py 132 LOC — max_iterations / max_total_usd / max_total_tokens
evolution_kernel/observer.py 100 LOC — runs evidence_sources, normalizes output
evolution_kernel/sandbox.py 100 LOC — process sandbox (PR7a, work-in-progress)
evolution_kernel/scope.py 70 LOC — allowed_paths enforcement
─────────
1,774 LOC
```
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Protocol-zero-0