Skip to content

feat: intake reconcile mode — flag shipped-but-stale backlog prompts #52

Description

@Jammy2211

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

  1. 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.
  2. 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/".
  3. main()reconcile subcommand with optional path-prefix; read-only always (--apply → stderr note, still read-only); --json emits the full result.
  4. intake.shreconcile in the known-subcommand case + help header (adjust the help sed range).
  5. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions