Evolve Note Workflow
Scope And Loading
Change note-generation judgment or style through a reproducible historical experiment. Do not generate the next daily note or change deterministic extractors, OCR, converters, hashing, chunking, indexing, or validators here.
Resolve an explicit series/type or repository scope from current filesystem evidence on every invocation. Read the active generation skill and the owning skill's JSON contract to interpret eligible run evidence; do not obtain paths, state, counters, or schedules from another skill.
Preconditions And Git Gate
Require explicit authorization before using isolated generator or reviewer agents.
At every invocation:
- Resolve the repository root from the current filesystem.
- Resolve exactly one explicit scope and its mutation target.
- Run a fresh read-only Git check against that repository.
- Continue only when the repository is valid, the baseline revision is identifiable, and the worktree is clean.
- Discover eligible subject-local JSON runs from the resolved scope.
Make zero writes until the scope, Git gate, and sample set all pass. Do not create or update a separate Git-state file.
If blocked, refuse workflow evolution only. Explain that baseline freezing, comparison, and rollback cannot be guaranteed. Recommend repairing the repository state, but never change Git without authorization. Recheck on every later request.
Eligible History
Accept only runs using a current skill-owned JSON contract. Require matching skill identity, source paths and hashes, raw/refined output paths, a completed run, a present raw note with status: raw, and a present human-refined note with status: refined.
Legacy Markdown runs are not eligible yet. A later converter task will define their conversion. When only legacy runs or insufficient real JSON pairs exist, report the missing eligible history and make zero writes.
Freeze And Select
Before producing experiment outputs, freeze by path and hash:
- active generation skill and applicable
.note-style.mdfiles; - run manifests, sources, indexes, raw/refined notes, templates, prompts, active tools, and environment declarations;
- a 100-point rubric and hard acceptance gates.
Treat human-refined notes as the 100-point target for organization, style, and user preference, while verifying facts against original sources. Use the frozen pre-evolution output as baseline.
For series/type scope, select three non-contiguous completed pairs near the middle of the history. Exclude openings, closings, summaries, corrupt sources, and atypical one-offs unless targeted. Change only that series .note-style.md.
For repository scope, select one representative middle pair per eligible note type. Keep every .note-style.md byte-identical and change only the shared generation skill. Reject cross-type regressions.
Record selection and exclusion reasons. Do not repeatedly tune against the same samples without new held-out history.
Isolated A/B Execution
When isolated agents are authorized:
- Start baseline and candidate generators without inherited conversation.
- Give each only its frozen task capsule and workflow identity; hide refined targets, rubrics, variant mappings, and conclusions.
- Blind output identities.
- Start independent reviewers without inherited conversation. Give them sources, mappings, rubric, both outputs, and refined targets, but not the intended winner.
- Freeze reports before revealing identities. Bound inputs, report size, and stop conditions.
If isolation is unavailable or unauthorized, use a clean task context, record lower confidence, and do not claim blind independent review.
Score And Decide
Score baseline and candidate against the same frozen rubric, covering evidence coverage and mappings, factual correctness, structure, usefulness and style, formatting, human refinement cost, side effects, and rule compliance.
Promote only when every applicable gate passes:
- no sample loses coverage, mapping integrity, or correctness;
- no sample needs more structural rewrite or human refinement;
- aggregate score improves without trading away safety or rule compliance;
- repository scope degrades no represented type;
- series/type scope changes only the target
.note-style.md; - hashes, identities, and blind mappings reconcile.
On any hard-gate failure, retain the frozen active version and keep the candidate inactive. Test attractive fragments only as a new candidate.
Persist And Finish
Create an evolution run only after every precondition passes. Read the evolution persistence contract completely before writing and follow it through completion. Do not update counters, schedules, or due-state after the decision.
Completion Gates
- The Git gate is fresh and passing.
- Baseline, samples, rubric, and acceptance gates were frozen before candidate outputs.
- Generator target isolation and reviewer blindness are truthful.
- Mutation stayed within the selected scope.
- Failed candidates remain inactive and retained evidence reproduces the decision.