Skip to content

Commit 3bf5a3b

Browse files
docs: refresh verification record (#55)
Refresh the self-evolution verification record with the post-#54 historical snapshot, discovered test count, benchmark metadata, and stale-claim documentation checks. Fixes #55.
1 parent 51be333 commit 3bf5a3b

2 files changed

Lines changed: 120 additions & 6 deletions

File tree

‎docs/self-evolution.md‎

Lines changed: 55 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,14 @@
22

33
This is the operator guide for the merged self-evolution and multi-party memory
44
features. It records behavior that is callable today, not a promise about
5-
future learning. The verification below was run on `main` at `51d0bce` on
6-
2026-09-03.
5+
future learning. The verification record below is explicitly a historical
6+
snapshot, not a claim about the repository's current `HEAD`.
7+
8+
Historical verification snapshot: `51be33361422e55e1f2f00c33a0e0f8c56132a91`
9+
(the post-#54 `main` revision, captured before this #55 documentation-only
10+
update). Snapshot date: 2026-09-04.
11+
12+
Current repository test count at this snapshot: **130 unittest cases**.
713

814
## Verified surface
915

@@ -192,21 +198,64 @@ completion is non-regressing and a paired secondary improvement is credible;
192198
OpenKyrozen does not emit a competitor-superiority claim from a tool success or
193199
an unpaired run.
194200

201+
The historical snapshot's isolated `make benchmark` output had five cases and
202+
five verified successes for both runners. Both runners used provider
203+
`deterministic-fixture` and model `openkyrozen-memory-policy-v1`; each case had
204+
`fixture_verified` evidence. The observed summary was:
205+
206+
| Runner | Cases | Verified successes | Tool calls | Tokens | Evidence status |
207+
| --- | ---: | ---: | ---: | ---: | --- |
208+
| clean | 5 | 5 | 22 | 973 | `fixture_verified` |
209+
| evolved | 5 | 5 | 22 | 973 | `fixture_verified` |
210+
211+
The run reported `completion_non_regressing: true`,
212+
`paired_evidence_status: insufficient`, and
213+
`public_superiority_claim_supported: false`. The fixture is deterministic
214+
and proves the scoped memory behavior; it does not provide the independently
215+
paired product evidence required for a public superiority claim. Latency is
216+
diagnostic only and is not treated as a release claim.
217+
218+
## Verification snapshot commands
219+
220+
The post-#54 snapshot ran the repository's current checks and smoke coverage:
221+
222+
```bash
223+
make check
224+
make docs-check
225+
make shell-check
226+
make lint
227+
make test
228+
make benchmark
229+
git diff --check
230+
```
231+
232+
The `make test` suite includes the API health/scoping smoke and the CLI
233+
command-loop smoke. `make benchmark` uses the five-case
234+
`benchmarks/multi_party_memory.jsonl` fixture, temporary SQLite databases, the
235+
`openkyrozen-learning-benchmark-v1` protocol, and no provider credentials.
236+
The documented commit is retained only as a historical verification snapshot;
237+
later commits must run these checks again before making current-release claims.
238+
195239
## Verification and troubleshooting
196240

197241
Run the same local gates used for the merged implementation:
198242

199243
```bash
200244
make check
245+
make docs-check
246+
make shell-check
247+
make lint
201248
tmpdir=$(mktemp -d /tmp/openkyrozen-check.XXXXXX)
202249
KYROZEN_DB_PATH="$tmpdir/state.sqlite3" make test
250+
make benchmark
203251
git diff --check
204252
```
205253

206-
The last verification on `main` passed 58 tests, the API health/scoping smoke,
207-
the CLI command-loop smoke, and the five-case multi-party benchmark with four
208-
ablations (`make check` reports the 29-entry base registry). A new artifact is
209-
not immediate: wait for an eligible run, at least
254+
The historical post-#54 verification passed the 130 discovered tests, the API
255+
health/scoping smoke, the CLI command-loop smoke, and the five-case
256+
clean/evolved benchmark described above. `make check` reports the live 31-tool
257+
runtime inventory, including 14 `git_` tools. A new artifact is not immediate:
258+
wait for an eligible run, at least
210259
60 seconds of idle time, reviewer evidence, and then the two-success plus
211260
replay gate. A model or environment mismatch intentionally downgrades an
212261
artifact to canary. If ChromaDB is unavailable, SQLite remains the durable

‎scripts/check_docs.py‎

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,43 @@
66
import re
77
import shlex
88
import sys
9+
import unittest
910
from pathlib import Path
1011

1112
from generate_tool_inventory import ROOT, render_inventory, runtime_routes
1213

1314

1415
README_FILES = sorted(ROOT.glob("README*.md"))
16+
VERIFICATION_DOC = ROOT / "docs" / "self-evolution.md"
1517
STALE_TOOL_PATTERNS = (
1618
re.compile(r"\b26\b[^\n]*(?:tool|工具|ツール|도구)", re.IGNORECASE),
1719
re.compile(r"(?:Git|git)[^\n]{0,24}\b15\b[^\n]*(?:tool|工具|ツール|도구)", re.IGNORECASE),
1820
re.compile(r"\b15\b[^\n]*(?:Git|git)[^\n]*(?:tool|工具|ツール|도구)", re.IGNORECASE),
1921
)
22+
STALE_VERIFICATION_CLAIMS = (
23+
"51d0bce",
24+
"58 tests",
25+
"119 tests",
26+
"359378b",
27+
)
28+
VERIFICATION_COMMANDS = (
29+
"make check",
30+
"make docs-check",
31+
"make shell-check",
32+
"make lint",
33+
"make test",
34+
"make benchmark",
35+
"git diff --check",
36+
)
37+
BENCHMARK_METADATA = (
38+
"benchmarks/multi_party_memory.jsonl",
39+
"openkyrozen-learning-benchmark-v1",
40+
"deterministic-fixture",
41+
"openkyrozen-memory-policy-v1",
42+
"fixture_verified",
43+
"paired_evidence_status: insufficient",
44+
"public_superiority_claim_supported: false",
45+
)
2046

2147

2248
def _command_blocks(text: str) -> list[str]:
@@ -78,6 +104,44 @@ def _check_commands(path: Path, text: str, routes: set[str], targets: set[str])
78104
return errors
79105

80106

107+
def _discovered_test_count() -> int:
108+
suite = unittest.TestLoader().discover(
109+
str(ROOT / "tests"), pattern="test_*.py"
110+
)
111+
return suite.countTestCases()
112+
113+
114+
def _check_verification_record() -> list[str]:
115+
if not VERIFICATION_DOC.exists():
116+
return ["docs/self-evolution.md is missing"]
117+
text = VERIFICATION_DOC.read_text(encoding="utf-8")
118+
errors: list[str] = []
119+
for claim in STALE_VERIFICATION_CLAIMS:
120+
if claim in text:
121+
errors.append(f"self-evolution.md contains obsolete verification claim '{claim}'")
122+
123+
if "historical verification snapshot" not in text.lower():
124+
errors.append("self-evolution.md must label its verification as a historical snapshot")
125+
if not re.search(r"Historical verification snapshot:\s*`[0-9a-f]{40}`", text):
126+
errors.append("self-evolution.md must identify a full historical verification commit")
127+
128+
test_count = _discovered_test_count()
129+
expected_test_marker = f"Current repository test count at this snapshot: **{test_count} unittest cases**"
130+
if expected_test_marker not in text:
131+
errors.append(f"self-evolution.md must record the discovered test count ({test_count})")
132+
133+
for command in VERIFICATION_COMMANDS:
134+
if command not in text:
135+
errors.append(f"self-evolution.md is missing verification command '{command}'")
136+
for marker in BENCHMARK_METADATA:
137+
if marker not in text:
138+
errors.append(f"self-evolution.md is missing benchmark metadata '{marker}'")
139+
for marker in ("API health/scoping smoke", "CLI command-loop smoke"):
140+
if marker not in text:
141+
errors.append(f"self-evolution.md is missing verification evidence '{marker}'")
142+
return errors
143+
144+
81145
def main() -> int:
82146
expected_inventory = render_inventory()
83147
import main as agent_main
@@ -92,6 +156,7 @@ def main() -> int:
92156
routes = runtime_routes(__import__("server"))
93157
route_paths = {path for _, path in routes}
94158
targets = _make_targets()
159+
errors.extend(_check_verification_record())
95160
for readme in README_FILES:
96161
text = readme.read_text(encoding="utf-8")
97162
for pattern in STALE_TOOL_PATTERNS:

0 commit comments

Comments
 (0)