Repository navigation
feat(revise): capture each merged pull request's harvest into the log, so prepare reads the month from there - #118
Merged
Merged
Conversation
…, and prepare reads it A new capture mode harvests the pull requests merged since the last capture, runs their analysts and guidance extraction, and keeps each one's harvest line, description, comment list, guidance items and analysis in the standard's log under capture/pr-NNNN/, with the days searched in capture/covered.txt (scripts/capture.py store). prepare step 1 restores the window from the log (capture.py load), captures only the days or merges the log lacks, and runs the analysts and the extractor only for those, so a month already captured starts no pr-reader, analyst or extractor. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… changed A record frozen at its first capture missed the replies posted after it, so each capture harvests the whole window again with one pr-reader, and capture.py pending names the pull requests new or changed since, the only ones the analysts and the extractor read. A capture keeps every dump file the analysts and the record read, takes analysis blocks only from its own run, refuses a report whose count line does not count its lines, and keeps a pull request whose slice stayed unread as not read. load matches captured merges by number, puts the day on each refusal, and refuses a failed fetch so prepare captures it again. The capture is committed in both rows, and the scheduled-agent trigger is dropped. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…is, fix the sandbox pack A pull request newly not read kept its stale analysis and lost the block its analyst had just written: the block is now chosen by what pending names, not by what was read for guidance. Another covered repository's merges are not in this clone's git, so prepare captures it first, one pr-reader that reads nothing unchanged, rather than trusting a same-day covered line. The guidance check takes only the comment lists a slice holds, step 10 commits the log's capture, capture's step 6 says what leaving a clone's capture uncommitted costs and that a capture merges before the next one, and the sandbox pack counts the two new scenarios and copies its fixture files one by one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… stray not-read The check for a capture pull request still open moves to step 1, before any agent runs, and names how it is found. store refuses a --not-read pull request that pending does not name, which would otherwise drop its kept items. capture.md, the contract and the README say, as prepare.md does, that prepare captures this repository when its git shows a merge the log lacks and each other covered repository always. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Origin: #87, tracked in #89: harvesting a month in one
preparestarted about 60 agents in one session, past the subagent cap, and a failure late in the run cost everything read before it.Sandbox: two new offline scenarios on Sonnet, both passing on the final commit.
revise-prepare-captured: with the window's one merged pull request already captured,preparerestores it from the log and starts nopr-reader,thread-analystorguidance-extractor($0.19).revise-prepare-uncaptured: with no capture,capture.py loadnames the pull request and the days, andpreparegoes to capture them, and does not read the month as empty ($0.21). An earlier run of the second scenario found a real bug, now fixed: a log not yet made was refused as an unreadable input instead of read as holding no capture. Private reference month: three pull requests (199 comments) stored and restored through the log give a guidance tally identical, line for line, to the one from the original slices.Canary: the driver's first weekly
/lasp-dev:revise capture, then the nextprepare. Step 1 should print a harvest block fromcapture.py load, and the run should start nopr-readerfor this repository unless git shows a merge the log lacks. Apreparethat starts analysts or the extractor for pull requests a capture already read is the failure to look for.What changes
The month's reading moves out of
prepare. A new mode,/lasp-dev:revise capture, which the driver runs weekly:pr-reader, so each record and comment list takes the replies since the last capture;preparerestores the window from the log. It captures this repository only when git shows a merge the log lacks, and each other covered repository always, since no git here shows what merged there. On a captured window it starts no harvest, analyst or extraction agent for this repository.scripts/capture.py, three commands:pendingnames the pull requests whose comment list is new or changed.storewrites<log>/capture/pr-NNNN/:covered.txt;--not-readthatpendingdoes not name.loadrestores.review/harvest/and the guidance slices, and prints the harvest blockpr-readerwould have. It refuses (exit 2) on uncovered days, merges git lists with no capture, failed fetches and missing records.skills/revise/capture.md: the new mode. Before harvesting, it checks that no earlier capture's pull request is still open.skills/revise/prepare.md:<log>/capture/.skills/revise/SKILL.md: the mode, the files and the bounds;docs/contracts.md: "The capture", a new section;docs/design.md: why the month is read as it merges;.review/rows;revise-prepare-capturedandrevise-prepare-uncaptured, with a fixture undersandbox/fixture/capture/.revise2.24.0. feat(revise): read a reply an agent drafted, which its poster read, as the poster's guidance #117 also bumps to 2.24.0, so whichever merges second takes 2.25.0.Not changed:
record.pyand the record contract,pr-reader, the analysts, the extractor, the sweep,apply,correct.Review
Three adversarial rounds:
prepare;prepare;--not-readis refused.All fixed.
Decisions for the maintainer
captureweekly by hand. No GitHub Action or scheduled agent: either would need a model's credentials, and a person's answers at the archive's refusal and the commit.prepareneeds no harvest. Thepages/directory and scratch files are left out.capture/pr-NNNN/items.json, notpr-NNNN.items.jsonat the log's root as the issue sketched, so a capture's files sit together andloadcan restore them as a dump.preparestill starts onepr-readerfor each, since this checkout's git cannot show their merges. Its extractor reads only what changed.preparereads records as of the last capture. Runningcapturejust beforepreparetakes the latest replies.ghCLI once before stopping. The sandbox denied it. That habit predates this change.Closes #87.
🤖 Generated with Claude Code. AI assistance level: 5/5 (not read by a person).