Skip to content

Extract lessons candidates from trace artifacts#4

Merged
aid-ninja merged 2 commits into
mainfrom
bean-lessons
Jun 21, 2026
Merged

Extract lessons candidates from trace artifacts#4
aid-ninja merged 2 commits into
mainfrom
bean-lessons

Conversation

@aid-ninja

Copy link
Copy Markdown
Contributor

Summary

  • Adds bean-lessons: reads .bean/runs/*.json and writes a ranked lessons-candidates report to .bean/lessons.json (+ optional --markdown).
  • Five candidate kinds: recurring_residual, high_pivot, budget_exceeded, blocker_code_frequency, verifier_failure.
  • Adds schemas/lessons.schema.json, skills/bean/references/lessons.md, and a deterministic fixture corpus under test/fixtures/traces/.
  • install.sh + release tarballs ship the fifth binary.

Scope

Read-only and deterministic — no LLM, no network, no mutation of claims, prompts, skills, or memory. It proposes, never applies. This is not cross-task learning; turning candidates into harness changes is a separate, later decision.

Behavior

  • Exit 0 candidates found · 2 none/empty corpus (report still written) · 3 invalid corpus or write failure (fail closed).
  • Ranked by count desc → kind asc → signal asc; evidence sorted by run_id; deterministic modulo generated_at.

Validation

  • npm test
  • node test/conformance.mjs (adds 5 bean-lessons checks: ranking, determinism, empty→2, malformed→3, foreign-schema→3)
  • cargo fmt --check --manifest-path rs/Cargo.toml

🤖 Generated with Claude Code

aid-ninja and others added 2 commits June 20, 2026 23:48
First consumer of the trace artifact: bean-lessons reads .bean/runs/*.json and writes a ranked
lessons-candidates report to .bean/lessons.json (+ optional --markdown). Read-only and
deterministic — no LLM, no network, no mutation of claims/prompts/skills/memory. It proposes,
never applies. This is NOT cross-task learning.

Five candidate kinds: recurring_residual (normalized, >=2 runs), high_pivot (pivot_count >= 2),
budget_exceeded, blocker_code_frequency (ranked, no threshold), verifier_failure. Ranked by
count desc, kind asc, signal asc; evidence sorted by run_id.

Exit codes: 0 candidates found; 2 none/empty corpus (report still written); 3 invalid corpus or
write failure (fail closed).

- rs/src/bin/bean-lessons.rs (auto-discovered binary).
- schemas/lessons.schema.json (additionalProperties:false, top + per-candidate).
- skills/bean/references/lessons.md (docs + scope boundary).
- test/fixtures/traces/ sample corpus + conformance (ranking, determinism, empty->2, malformed->3).
- install.sh + release.yml ship the fifth binary.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…ease checklist

- Fail closed on a partial/copied corpus: validate every trace has the required trace/v0 keys
  (and that run_id/status are non-empty strings, pivot_count an integer, blocker_codes/
  verifier_verdicts/residuals arrays) before summarizing. Missing fields -> exit 3, not silent
  empty-default candidates. Conformance adds a "missing required fields -> exit 3" case.
- README: "four binaries" -> "five"; add bean-lessons to the runtime list + install line.
- release.yml smoke now runs --help on all five binaries (verified each supports it); tarball
  already ships bean-lessons.
- lessons.schema.json: generated_at documented as INTEGER epoch-ms (not ISO-8601).

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
@aid-ninja aid-ninja merged commit ac1036b into main Jun 21, 2026
3 checks passed
@aid-ninja aid-ninja deleted the bean-lessons branch June 21, 2026 04:57
Sign up for free to 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.

1 participant