Skip to content

Add NEXT_TASKS_LOOP.md: which open issues suit an autonomous /goal run - #360

Merged
realmarcin merged 5 commits into
mainfrom
next-tasks-loop-doc
Aug 4, 2026
Merged

Add NEXT_TASKS_LOOP.md: which open issues suit an autonomous /goal run#360
realmarcin merged 5 commits into
mainfrom
next-tasks-loop-doc

Conversation

@realmarcin

@realmarcin realmarcin commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Adds NEXT_TASKS_LOOP.md, plus pointers from CLAUDE.md and NEXT_TASKS.md.

Why a second backlog file

NEXT_TASKS.md answers what is deferred. It does not answer what can be handed to a loop that will not stop to ask — and that is a different question. An item needing a curation or schema decision stops on the loop’s first substantive step, so queueing it wastes the run. #319 is the worked example: fully specified, genuinely valuable, and it halted the first loop run inside two minutes pending a decision only you could make.

All 26 open issues are classified: three tiers plus a never-loop set.

Everything was re-measured, not copied

Half the issues in this repo have turned out wrong on inspection (#273, #276, #310, #346), so the file states its evidence per row. Verified against main today:

claim measured
#290 just install fails uv sync --group dev"Group dev is not defined"
#295 one snippet, two supports levels DIET snippet cited as both PARTIAL and SUPPORT
#314 taxon ungrounded after id edit NCBITaxon:1125 is the one of four with no gtdb_classification
#350 isolates gated for schema only 4 of 4 fail linkml-term-validator --labels
#306 arbitrary cache-file choice 63 references have both .md and .txt
#352a no published page 312 records, 305 pages
#277 dangling wiki-links 4, named
#358 size unguarded 3995 chars / 4021 bytes, 5 chars headroom

The tiers

Tier 1 (8 items) — ready now, each with a green/red finish condition. Recommends #290 first: one line, exits 0 or it doesn’t, and it retires a gotcha prompts/backlog-loop.goal.md currently has to carry. A clean first pass through the whole loop on a trivial item is worth more than a big first win.

Tier 2 (3 items) — automatable only with a brief that constrains judgement. #347 is the sharp one: the abstracts are cached and "is this a verbatim substring" is machine-checkable, so a loop can do it — but it must be told to use exact substrings and delete what it cannot source, or the failure mode is fabricating support.

Tier 3 (11 items) — the decision needed is named per issue, so you can answer them in one pass rather than rediscovering each. #319 is called out separately: decided, but per-record evidence curation, so it belongs in a focused session rather than an unattended loop.

Ordering constraints recorded

Note

This is the second open PR (#357 is still awaiting your merge decision), which is a deliberate exception to the loop’s one-PR-in-flight rule — this file is independent of the prompt change and you asked for it directly. If you would rather keep strictly one in flight, I can hold this until #357 lands.

Docs-only, so only vendored-sync runs; the other workflows are path-filtered.


Round two (post-review) — the headline fix was itself wrong

The review caught a P1, and it is the worst kind of error for this file: the counts I published contradicted the criterion published beside them.

My comment on #319 said the figures were "restricted to participants that resolve to no taxonomy entry", then gave 13 and 14 — which came from the auditor's rule (no name match and the id is not unique), not that one. Re-measured over all 1127 participant slots in 312 records:

criterion non-placeholder NCBITaxon:2 total
id appears nowhere in that record's taxonomy 10 / 8 rec 13 / 8 rec 23 / 16
unresolved by the auditor 13 / 9 rec 14 / 9 rec 27 / 18

The first is the right criterion here, and it reproduces the 23 in the issue body exactly — only the record count moved, 17 → 16, after #345. So my aside that the issue "used a broader criterion" was backwards: the issue's was tighter, mine was looser.

The four extra slots are name variants of members already in taxonomy — "Olsenella (Actinobacteriota)" against an id listed twice, "Variovorax" against one listed six times, "Bacillus SynCom" against one listed four times, plus Saanich Inlet's aggregate. They need a rename, not a new entry — so "the 13 each need a grounded term and a snippet" was false for at least three, and calling them host/antagonist was wrong.

The GitHub comment is corrected too, since this file tells readers to cite it in preference to the issue body; fixing only the file would have left the citable record wrong.

Other changes

Tier 1 is now 5 items, Tier 2 5, Tier 3 11.

`NEXT_TASKS.md` says what is deferred. It does not say what can be handed to a
loop that will not stop to ask, and that is a different question — an item
needing a curation or schema decision stops on the loop's first substantive step
and wastes the run.

All 26 open issues are classified into three tiers plus a never-loop set, with
the criterion stated up front: a machine-checkable definition of done, no
curation decision, bounded blast radius, and a premise that survives
measurement.

Every claim was re-measured against `main` today rather than copied from the
issue text, which matters because half the issues in this repo have turned out
wrong on inspection (#273, #276, #310, #346). Verified here: `uv sync --group
dev` still fails; the DIET snippet is still cited at both PARTIAL and SUPPORT;
`NCBITaxon:1125` is still the one ungrounded taxon of four in that record; 4 of 4
isolates fail term validation; 63 references have both a .md and a .txt in the
cache; 312 records against 305 generated pages; 4 dangling wiki-links.

Tier 1 is eight items with green/red finish conditions, recommending #290 first
— one line, exits 0 or doesn't, and it retires a gotcha the goal prompt has to
carry. Tier 2 is three that are automatable only with a brief that constrains
judgement; #347 in particular needs an explicit "use exact substrings, delete
what you cannot source" or the failure mode is fabricating evidence. Tier 3 lists
eleven where the decision needed is named, so it can be answered in one pass.

Also records the ordering constraints: #358 waits on PR #357, the three SPRUCE
issues all edit one file, and #314 should precede #294 so the enum backfill has
correct data under it.

Linked from CLAUDE.md and NEXT_TASKS.md — a new doc nothing references is
invisible, which was a review finding on the last one (#344).
Copilot AI review requested due to automatic review settings August 4, 2026 02:08
…ch's

The #358 row cited 3995 chars / 4021 bytes / 5 spare — the numbers from PR #357,
which is still open. This file merges into main, where the prompt is 3987 / 4015
with 13 spare, so a reader measuring it would have concluded the row was wrong.
Now states main's figures and flags what #357 changes them to.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Ready to approve

Documentation-only change set with no functional impact; only a minor wording nit was found.

This review doesn't count toward merge requirements. Sign up for the private preview to control whether Copilot approvals count.

Pull request overview

Adds a new docs-oriented backlog companion file that classifies open issues by whether they can be safely handled by an autonomous /goal loop run, and wires it into existing contributor docs so the guidance is discoverable.

Changes:

  • Add NEXT_TASKS_LOOP.md with tiered “loop-ready vs needs decision” classifications and ordering constraints.
  • Cross-link the new file from NEXT_TASKS.md.
  • Document the new file in CLAUDE.md’s repo map.
File summaries
File Description
NEXT_TASKS.md Adds a pointer to the new loop-ready backlog file.
NEXT_TASKS_LOOP.md Introduces the tiered loop-readiness backlog with measured criteria and dependencies.
CLAUDE.md Adds NEXT_TASKS_LOOP.md to the documented repository layout.
Review details
  • Files reviewed: 3/3 changed files
  • Comments generated: 1
  • Review effort level: Lite

We're testing this review assessment. Please use 👍 or 👎 to tell us if it's correct.

Comment thread NEXT_TASKS.md Outdated
Comment on lines +8 to +9
Last reconciled: 2026-08-03. For which of these suit an autonomous `/goal` run,
see [NEXT_TASKS_LOOP.md](NEXT_TASKS_LOOP.md).
…mis-tiered items

The review's most severe finding was right: the file asserted "#319 is decided"
while the issue body still says "unresolved" and had zero comments, so the claim
existed in no citable place. In a decision-support document that is the worst
failure — it tells a reader to skip a decision the tracker says is open. The
decision is now recorded as a comment on #319 and cited by permalink, and the
file says explicitly to cite the comment rather than the body.

Its numbers were also unreconciled. Re-measured on `main`: 13 host/antagonist
participant slots across **9** records (not 12) and 14 placeholder slots across 9.
Both differ from the issue body's 23-across-17, which predates #345 and used a
broader criterion; the file now says so instead of quietly disagreeing.

**Two items were in the wrong tier, both by my own stated criterion.**

#295 is not decision-free: the issue asks for PARTIAL *or* dropping the citation
and names the curator who made #262's call as the decider. It is also not a clean
pair — the SUPPORT occurrence is 150 chars and truncated mid-word against the
other two at 188, so it needs a truncation repair too. Moved to Tier 2.

#350's done-when hid a judgement. All 4 isolates fail term validation, but the
failures are mostly wrong *id*, not wrong label — CHEBI:30319 recorded as
"dicyanoaurate(1-)", ENVO:00000072 as "mine tailing", GO:0055114/GO:0055065
obsolete. Picking the right id per term is what id-label-correspondence reserves
for a curator. Moved to Tier 2 with the note that the brief must choose which
branch to take.

#358 was listed as "ready now" while the same file declared it blocked on #357.
It moves to its own queued bucket, and now states the byte question plainly:
4015 bytes on main is already over 4000, so if the ceiling counts bytes the file
has been over all along — which is the question #358 exists to settle.

Corrected numbers: #352a is 7 records without a page, not 1 (the loop would have
had to decide commit-all vs hand-pick unbriefed); #306 is 62 stems with both .md
and .txt exactly, 63 folding case; #325 is 310 of 312, not 311.

Also noted that a #352a PR cannot close #352, since that issue carries the
duplicate-SPRUCE question too — so the loop's "issue closed" finish condition
will not fire.

Pointers: NEXT_TASKS.md's link moved off the "Last reconciled:" line, since a
naive `s/^Last reconciled:.*/` bump would have deleted it (verified it now
survives); CLAUDE.md listed the derived file but not the primary backlog, and
now lists both.
…on I stated

The review's P1 is right, and it is the worst kind of error for this file: the
counts I published contradicted the criterion published beside them.

My comment on #319 said the figures were "restricted to participants that resolve
to no taxonomy entry", then gave 13 and 14 — which came from the *auditor's*
rule (no name match AND the id is not unique), not that one. Re-measured over all
1127 participant slots in 312 records:

  criterion                                    non-placeholder  NCBITaxon:2  total
  id appears nowhere in that taxonomy               10 / 8 rec    13 / 8 rec  23/16
  unresolved by the auditor                         13 / 9 rec    14 / 9 rec  27/18

The first is the criterion for this decision, and it reproduces the 23 in the
issue body exactly — only the record count moved, 17 to 16, after #345. So my
aside that the issue "used a broader criterion" was backwards: the issue's was
the tighter one, mine was looser.

The four extra slots are name variants of members already in taxonomy —
"Olsenella (Actinobacteriota)" against an id listed twice, "Variovorax" against
one listed six times, "Bacillus SynCom" against one listed four times, plus
Saanich Inlet's aggregate. They need a rename, not a new entry, and calling them
"host/antagonist" was wrong: Variovorax and Olsenella are ordinary members and
"Bacillus SynCom" is an aggregate belonging with the placeholders. So "the 13
each need a grounded term and a snippet" was false for at least three of them.

The GitHub comment is corrected too, since this file tells readers to cite it in
preference to the issue body — fixing only the file would have left the citable
record wrong.

**#277 moves to Tier 2.** It fails the same test that demoted #295 and #350: the
issue offers three mutually exclusive remedies, the substance lives in a memory
directory the issue records as absent, and "no dangling links" is satisfiable by
deletion — which discards what the issue calls load-bearing.

**#358 moves out of "Tier 1 — ready now"** into its own Queued section. Listing a
blocked item under a heading that says ready is exactly the trap a loop reading
top-down falls into.

Also: the `id-label-correspondence` claim was overstated — the skill never
reserves that call for a curator, it prescribes `validate_ncbitaxon_ids.py` and
`term_fix_apply.py`; the demotion stands on its other ground. And #359 is dropped
from "Never loop these", having been closed as filed-on-a-false-premise.
#357 merged as 5a1d60b, so the Queued section it justified is gone and #358
returns to Tier 1. Its figures are re-measured against the new main: 3998 chars
and 4028 bytes, leaving 2 characters of headroom — and the bytes now exceed 4000
by 28, which sharpens rather than settles the char-or-byte question #358 exists
to answer.
@realmarcin
realmarcin merged commit 178d2b2 into main Aug 4, 2026
1 check passed
@realmarcin
realmarcin deleted the next-tasks-loop-doc branch August 4, 2026 02:46
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.

2 participants