Overview
Adds intake reconcile — the fourth backlog mode (census → dashboard → formalise → reconcile). Motivation: a prompt's Status: header is not a reliable completeness signal — formalise preserves an existing Status: verbatim, so shipped work can still read Status: planned (found on the PyAutoHeart M0–M5 release-validation cluster, all shipped via PyAutoHeart #23–#26 yet still planned). Reconcile makes the manual audit that caught this repeatable: it cross-references every backlog prompt against Mind-local shipped-state records and prints a confidence-ranked suspect list for a human to retire. It is always read-only — it never moves, deletes, or edits a file.
Plan
intake reconcile [prefix] — read-only even under --apply (stderr note); --json supported.
- Four Mind-local signals per backlog prompt:
- referenced — prompt path/basename appears in a
complete.md entry (prompt: / Restore prompt: / follow-up-prompt: lines); matching line shown verbatim; follow-up/restore/parked/remain wording downgrades to likely-open.
- issued-duplicate — same basename already exists in
issued/.
- topic-overlap — token-Jaccard between prompt basename+title and
complete.md section headers above a tuned threshold.
- stale-status — hand-set
Status: values (e.g. planned) that formalise deliberately preserves.
- Ranked output: referenced / issued-duplicate first, then topic-overlap by score, then stale-status-only; footer notes that retiring stays human and target-repo git log / merged PRs are the final verification (out of scope for v1).
- Docs: intake
AGENTS.md modes table, INTAKE_TAXONOMY.md §6, skills/intake/intake.md.
Detailed implementation plan
Affected Repositories
- PyAutoBrain (primary — agent code + docs; PyAutoMind is read, not written)
Branch Survey
| Repository |
Current Branch |
Dirty? |
| ./PyAutoBrain |
main |
clean |
| ./PyAutoMind |
main |
clean |
Suggested branch: feature/intake-reconcile
Implementation Steps
agents/conductors/intake/_intake.py — _tokens(s) helper (word tokens minus stopwords) + reconcile(mind, prefix=""): reuse census() records; per record collect findings from the four signals; parse complete.md once (section headers via ^## , path-ref lines via substring on path variants: full path, path sans work-type folder, basename); issued/ basenames set; confidence ranking referenced/issued-duplicate → topic-overlap (score desc) → stale-status-only.
emit_reconcile(res) — ranked human report with evidence lines; footer: "retiring is human; verify against the target repo's git log / merged PRs before moving to issued/".
main() — reconcile subcommand with optional path-prefix; read-only always (--apply → stderr note, still read-only); --json emits the full result.
intake.sh — reconcile in the known-subcommand case + help header (adjust the help sed range).
- Docs — modes table in
AGENTS.md, INTAKE_TAXONOMY.md §6 extension, skills/intake/intake.md backlog-view bullet.
Key Files
Testing
Fixture Mind with synthetic complete.md + issued/ exercising each signal independently (referenced via prompt:, follow-up-downgraded reference, issued duplicate, topic overlap, stale status, clean prompt → no finding). Live run expectation from the manual audit: 3 known follow-up references, ~7 topic overlaps, copilot_auto_review stale-status — all correctly surfaced for human review. Regression on classify/ideas/census/dashboard/formalise; bash -n + py_compile.
Original Prompt
Click to expand starting prompt
Add a reconcile mode to the PyAutoBrain intake agent
Type: feature
Target: PyAutoBrain
Repos:
- PyAutoBrain
- PyAutoMind
Difficulty: small
Autonomy: supervised
Priority: low
Status: formalised
Add a reconcile mode to the PyAutoBrain intake agent. It audits the PyAutoMind backlog for prompts describing already-shipped work whose status has gone stale, because a prompt's Status header is not a reliable completeness signal (formalise preserves an existing Status verbatim, so a shipped task can still read Status: planned). For each backlog prompt, cross-reference against complete.md prompt-path references and section headers, issued/ basenames, and optionally the target repo git log / merged PRs, then report a confidence-ranked list of suspected-complete prompts for a human to retire — never move or delete files automatically. Complements census/dashboard/formalise. Touches intake agent code in PyAutoBrain and reads PyAutoMind.
Overview
Adds
intake reconcile— the fourth backlog mode (census → dashboard → formalise → reconcile). Motivation: a prompt'sStatus:header is not a reliable completeness signal —formalisepreserves an existingStatus:verbatim, so shipped work can still readStatus: planned(found on the PyAutoHeart M0–M5 release-validation cluster, all shipped via PyAutoHeart #23–#26 yet stillplanned). Reconcile makes the manual audit that caught this repeatable: it cross-references every backlog prompt against Mind-local shipped-state records and prints a confidence-ranked suspect list for a human to retire. It is always read-only — it never moves, deletes, or edits a file.Plan
intake reconcile [prefix]— read-only even under--apply(stderr note);--jsonsupported.complete.mdentry (prompt:/Restore prompt:/follow-up-prompt:lines); matching line shown verbatim; follow-up/restore/parked/remain wording downgrades to likely-open.issued/.complete.mdsection headers above a tuned threshold.Status:values (e.g.planned) that formalise deliberately preserves.AGENTS.mdmodes table,INTAKE_TAXONOMY.md§6,skills/intake/intake.md.Detailed implementation plan
Affected Repositories
Branch Survey
Suggested branch:
feature/intake-reconcileImplementation Steps
agents/conductors/intake/_intake.py—_tokens(s)helper (word tokens minus stopwords) +reconcile(mind, prefix=""): reusecensus()records; per record collect findings from the four signals; parsecomplete.mdonce (section headers via^##, path-ref lines via substring on path variants: full path, path sans work-type folder, basename);issued/basenames set; confidence ranking referenced/issued-duplicate → topic-overlap (score desc) → stale-status-only.emit_reconcile(res)— ranked human report with evidence lines; footer: "retiring is human; verify against the target repo's git log / merged PRs before moving to issued/".main()—reconcilesubcommand with optional path-prefix; read-only always (--apply→ stderr note, still read-only);--jsonemits the full result.intake.sh—reconcilein the known-subcommand case + help header (adjust the help sed range).AGENTS.md,INTAKE_TAXONOMY.md§6 extension,skills/intake/intake.mdbacklog-view bullet.Key Files
PyAutoBrain/agents/conductors/intake/_intake.py— analysis core (census/dashboard feat: intake census + dashboard modes — Mind backlog page #31, formalise feat: intake formalise mode — retroactively header the backlog #33)PyAutoBrain/agents/conductors/intake/intake.sh— CLI front doorPyAutoMind/complete.md,PyAutoMind/issued/— the shipped-state records read (never written)Testing
Fixture Mind with synthetic
complete.md+issued/exercising each signal independently (referenced viaprompt:, follow-up-downgraded reference, issued duplicate, topic overlap, stale status, clean prompt → no finding). Live run expectation from the manual audit: 3 known follow-up references, ~7 topic overlaps,copilot_auto_reviewstale-status — all correctly surfaced for human review. Regression on classify/ideas/census/dashboard/formalise;bash -n+py_compile.Original Prompt
Click to expand starting prompt
Add a reconcile mode to the PyAutoBrain intake agent
Type: feature
Target: PyAutoBrain
Repos:
Difficulty: small
Autonomy: supervised
Priority: low
Status: formalised
Add a reconcile mode to the PyAutoBrain intake agent. It audits the PyAutoMind backlog for prompts describing already-shipped work whose status has gone stale, because a prompt's Status header is not a reliable completeness signal (formalise preserves an existing Status verbatim, so a shipped task can still read Status: planned). For each backlog prompt, cross-reference against complete.md prompt-path references and section headers, issued/ basenames, and optionally the target repo git log / merged PRs, then report a confidence-ranked list of suspected-complete prompts for a human to retire — never move or delete files automatically. Complements census/dashboard/formalise. Touches intake agent code in PyAutoBrain and reads PyAutoMind.