Backlog finder #
Find features from past sessions that never shipped, without burning frontier quota. Scan all sessions in the current project by default using a Map-Reduce flow:
- Map: Run one fast
agyFlash worker per session. Each worker lists every feature discussed asIMPLEMENTEDorNOT IMPLEMENTED. - Reduce: Compare all worker reports by date against
git logto find the latest snapshot of open work.
1. Select scope #
Query $HOME/.gemini/antigravity/conversation_summaries.db with sqlite3 to list root sessions where parent_conversation_id = ''. Always skip the active session.
- Single-project sweep by default: Scan all sessions for the current workspace across all time, ordered from oldest to newest.
WORKSPACE_PATH=$(pwd)
sqlite3 -json "$HOME/.gemini/antigravity/conversation_summaries.db" "
SELECT
conversation_id,
title,
workspace_uris,
step_count,
datetime(last_modified_time) AS last_active
FROM conversation_summaries
WHERE parent_conversation_id = ''
AND killed = 0
AND step_count > 4
AND workspace_uris LIKE '%file://${WORKSPACE_PATH}\"%'
ORDER BY last_modified_time ASC;
"- Optional time sweep: Wait for the user to ask for a time window across all projects. Then swap the
workspace_urisfilter forAND last_modified_time >= datetime('now', '-N days').
2. Map: one agy Flash worker per session #
Check your agent tier in the system prompt. When running on a frontier tier such as Gemini 4 Argon or Pro:
- Never read raw
transcript.jsonlfiles in the main session. - Never call
invoke_subagentfor transcript mining. Subagents inherit your frontier tier and burn high-cost quota. - Always spawn one headless
agyCLI worker per session pinned to a fast Flash tier such asflash-liteorflash-low.
Select the fastest Flash tier from agy models:
FLASH_MODEL=$(agy models | awk '/flash-lite|flash.*low/ {print $1; exit}')Read only the chat turns and git commits. Skip tool logs, ask_question prompts, system notes, and scratch files.
For each session, extract the non-empty USER_INPUT and PLANNER_RESPONSE messages from transcript.jsonl, plus the last 100 commits from git log when the workspace uses git. Pass both inside -p="..." because agy -p ignores stdin in text mode:
FLOW=$(jq -r '
select((.type == "USER_INPUT" or .type == "PLANNER_RESPONSE") and (.content | length > 0))
| "[\(.step_index) \(.type)]: \(.content)"
' "$HOME/.gemini/antigravity/brain/${CONV_ID}/.system_generated/logs/transcript.jsonl")
GIT_LOG=$(git -C "$WORKSPACE_PATH" log --oneline -n 100 2>/dev/null)
agy --model "$FLASH_MODEL" --disable-slash-commands -p="Do not call any tools.
Read the conversation and git log below, and output a single message listing all features discussed with a binary status (IMPLEMENTED or NOT IMPLEMENTED).
For each feature, include:
- Status: IMPLEMENTED or NOT IMPLEMENTED
- Feature: short title and description
- Reasoning: why it was discussed
- Last known status: what happened to it in the conversation or git log
- Expected value: High, Medium, or Low (and why)
Session: ${TITLE} (${CONV_ID}) | Last active: ${LAST_ACTIVE}
Git log:
${GIT_LOG}
Conversation:
${FLOW}" > "/tmp/smtm-${CONV_ID}.md"Run up to six agy workers in parallel background jobs using & and wait.
3. Reduce: compute the latest snapshot #
After all Map workers finish, read /tmp/smtm-*.md by date and check git log to build the latest snapshot:
- Drop finished items: If a later session or commit in
git logshipped a feature from an older session, drop it. - Drop rejected ideas: If the user rejected an idea or replaced it with a newer design later, drop it.
- Merge repeated items: Combine repeated mentions of the same open feature into one row linked to the latest session.
Score each remaining item by user impact, time saved, and system payoff:
- High: Solves a recurring pain point, fixes a bug, unblocks a core workflow, or delivers high return for low effort.
- Medium: Adds useful polish, speeds up a manual step, or delivers a solid feature with clear payoff.
- Low: Covers minor cleanup, cosmetic tweaks, or optional polish.
4. Render the backlog table #
Output one compact Markdown table per project, sorted from High to Low. Keep each cell under 15 words in plain English—no commit hashes, step numbers, or file paths:
## <Project Name>
| Value | Item | Why | Status | Benefit |
| :--- | :--- | :--- | :--- | :--- |
| **High** | **<Short title>** ([chat](conversation://<id>)) — <1-line summary> | <Why it came up> | <Where it stopped> | <Payoff if built> |