Skip to content

Row actions: Investigate and Ask lead; merged PR starts no crew work - #34

Merged
iamwhatever merged 1 commit into
mainfrom
feat/row-actions-manual-pr
Oct 1, 2026
Merged

iamwhatever merged 1 commit into
mainfrom
feat/row-actions-manual-pr

Conversation

@iamwhatever

Copy link
Copy Markdown
Owner

Summary

1. A merged PR starts no crew work. github_state.refresh records fix_handoff.pr_state and logs one dispatch event PR #N merged. It no longer sets possibly_resolved, so dispatch_watcher has nothing to hand the Thread Watcher and nothing wakes. after_poll counts only new / thread_changed / possibly_resolved from the poll as movement, never pr_states. Kept: the merged item stays in needs_reanalysis (Re-analyze count), the row reads PR #N merged ✓, the decide reason Fix merged · PR #N with Done, and the PR lines in the Re-analyze prompt. REANALYZE_PR_RULE and brief v10 say a merged fix reaches the Lead only through the owner's Re-analyze.

2. Real row actions; the fallback button is gone. type Primary is now 'Open' | 'Reply' | 'Dispatch fix' | 'Investigate' | 'Ask lead' | 'Done' | ''.

Button Row One click
Investigate a cluster, or a bug-report/feature-request not investigated yet POST /investigate with the cluster's member keys (or the one key) and repo: "", the same body the Ledger tab sends. No new route. Shows Investigating…, then Investigator · running · since HH:MM (from investigation_at while /now shows the Investigator working), then Investigated · N links with the links under ▾. Refusals (409 unattended_required, …) show an inline ErrorNotice with one Try again
Ask lead an investigated bug-report/feature-request with no draft and no hand-off POST /items/reanalyze with that key. Shows Lead thinking… while reanalyze_in_flight. The prompt carries investigation links: … and ask: decide: fix hand-off, reply draft, or close for that row
Open a question/already-answered with no draft opens the detail view
(none) anything else only ▾ (the message)

/needs rows gain status, investigation, investigation_at, links_count, links (first 8) and reanalyze_in_flight. The investigator stays read-only and the unattended gate on /investigate is unchanged.

3. Docs. README both halves (new Row buttons table, merged PRs only via Re-analyze), CHARTER (row Investigate is an owner action; a PR state never triggers crew work), CONTRACT (new row fields, button rules, pr_state no longer flags), crew_brief v10. app.json 0.9.8 with one highlights line.

Testing

  • python -m pytest tests -q -p no:cacheprovider: 362 passed (354 on main, +8 new, 1 replaced).
    • merged transition writes pr_state + one event, sets no possibly_resolved, is not handed to the Watcher, and does not wake the Lead;
    • /needs rows expose investigation / links_count / links / status / reanalyze_in_flight (also on clusters);
    • reanalyze_prompt carries the decide: ask only for rows with no draft and no hand-off; the brief names it.
  • npm run build clean; ui/dist/index.mjs rebuilt.
  • shoot.mjs: all checks pass, including the new row actions check: a cluster row shows Investigate; one click posts /investigate once with 2 keys, the button reads Investigating… (disabled) and the row reads Investigator · running · since HH:MM; an investigated bug row shows Ask lead and Investigated · 2 links, its ▾ lists 2 links, one click posts /items/reanalyze once with 1 key; a question row shows Open; nothing on the Board says "Decide". The board check now expects 8 decide rows ending Open, Ask lead.
  • Screenshots regenerated; new docs/screenshots/investigate-row.png.

Note: the Ledger's Investigate posts to /investigate (not /items/investigate), so the row reuses that route.

A merged fix PR records pr_state and one "PR #N merged" event, and nothing
else: no possibly_resolved flag, no Thread Watcher run, no wake. It still
joins Re-analyze, reads "Fix merged · PR #N" with Done, and the Lead gets
it only through the owner's Re-analyze.

The Needs-you fallback button is gone. A row now offers one real step:
Investigate (a cluster, or a bug/feature not investigated yet) posts the
same /investigate body the Ledger tab sends and shows the run inline from
/now; Ask lead (an investigated bug/feature with no draft and no hand-off)
posts /items/reanalyze for that item, and the prompt asks the Lead to
decide: fix hand-off, reply draft, or close. A question with no draft gets
Open; anything else gets only its ▾. /needs rows carry investigation,
investigation_at, links_count, links, status and reanalyze_in_flight.

Brief v10, CHARTER, CONTRACT, README (both halves) and screenshots updated;
app 0.9.8.
@iamwhatever
iamwhatever merged commit 7cd9480 into main Oct 1, 2026
2 checks passed
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