Conversation
…ed; a measure capture role Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sources from suite samples Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s a whole measureSuite over an injected session: each listed file alone, a fresh container after a file that wrote, hung or was killed; each non-pass once more in a fresh container (flaky when they disagree); the suite sampled in fresh containers and confirmed at the proposed resources. The listing drops vitest's [project] prefix and an empty one stops; session.ts has the pure helpers the Docker session reads vitest's output with (relative paths, the per-file status exactly). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… runs, keep measurement.md deterministic Test output reaches report.md, measurement.md and the printed diff only through sanitize(): escape sequences and C0/C1 controls (but newline and tab) stripped, `<` escaped. Paths in a reason are JSON-quoted; listed file names holding a control are refused; error lines in the record are code spans. Exit 0 with the file not passed is a MeasureError. proposeResources refuses non-positive or non-finite samples; settleResources ignores a placeholder prior. The committed record carries no limits, no second run's evidence (new secondRun field, report only) and sorts by file. captureOmissions normalises paths and ignores the workspace root. A MeasureError in the first per-file pass carries the files measured. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…haped like the verifier's Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…resources and promotion set Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cludes on a generated target Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… grades a pass A suite sample or the confirmation must pass gradeVitestReport, not merely exit 0: a missing report or an all-skipped suite is refused by name. An exclude withExcludes cannot write is a MeasureError naming the file (with the partial report), and is noted when listed. The listing runs in its own session; a build killed or timed out names the limits; SIGTERM tears the sessions down; writeProposal's refusals are neutral; measurement.md no longer claims every file passed when flaky files are listed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s-landed note The README and target-init's header now describe the two-command flow (init, measure, review the diff and measurement.md, commit) instead of calling target:measure a follow-up; the placeholder-resource refusal stays as the fail-safe for a target committed without measuring. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…fier's inspection refuses as writes The hand measurement of the generated cli target stopped after 16 files on "Executable workspace file: packages/cli/dist/index.js": check-command.test.ts chmods the built CLI 0755, and the inspection refuses an executable file, as the verifier's tamper check does on every verification. A refused snapshot after a file's run now makes the file writes (reason names the refusal) and the next file gets a fresh session. A refusal before any test ran, or after the suite, stops the measurement; any other snapshot failure is a MeasureError that keeps the files measured. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eout per session; stable, counted measurement.md The verifier runs its visible and independent sessions under one deadline, and a hung suite runs one command to its timeout in each. The proposed deadline could sit below one command timeout (the generated cli target: 300000 beside 420000), so a hung candidate went inconclusive instead of rejected. verifierDeadlineMs is now at least twice (commandTimeoutMs + the slowest session), re-applied after settleResources (coveringDeadline). measurement.md masks UUIDs and mkdtemp suffixes, drops code-frame lines and caps each error line at 240 characters, so a re-measurement that agrees rewrites it byte for byte; each entry shows its test counts, and the record opens with a count of every verdict (D15). A round-trip test loads a written proposal. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… measure lane at 15 minutes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rd the final review --with-dev-builds does not reach the 29 files that import @b4run/testing by relative path; run-typegen and verify-command are capture omissions the detector missed (follow-up); the cli deadline recomputed as 960000. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
This branch was successfully deployed
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.
Framework-gaps item 5, PR 2 of 2. Plan:
docs/superpowers/plans/2026-09-25-targets-generated-from-a-package.md, Tasks 12-19.Stacked on #858. The base is
blove/targets-init. After #858 squash-merges, this branch needsgit rebase --onto origin/main blove/targets-init, and the PR needs retargeting tomain.What it adds
pnpm --filter @b4-example/software-factory-controller target:measure <id> [--pin] [--runs N] [--allow-decrease] [--targets-dir] [--write]The command runs each test file of a target alone, in the target's image, with the network denied, exactly as the verifier would run it. It then proposes the target's excludes and resources as a diff plus a committed
targets/<id>/measurement.md. It writes only with--write.passfailhangkilled(exit 137 with no report)writes(the file changed the workspace, or left a workspace the verifier's inspection refuses)flakyENOENTon a path that exists at the pin is labelled a capture omission.--allow-decrease.measurement.mdis deterministic. Test output is sanitised, UUIDs and temp names are masked, and each entry shows its test counts. A reviewer can see when a mostly-passing file is dropped.target:measureloads a target with placeholder resources. Those targets stay hidden from the drafter until measured.Proof
Docker lane (
devkit).measureon the generateddevkittarget proposes exactly the nine committed excludes and the committed test command, and names each exclude's cause: the uncapturedtemplates/directory. Proposed resources are512/2/60000/180000, beside the committed768/2/60000/240000. The lane takes about 85 s locally.cliby hand, in a scratch catalog. The generatedclitarget covers 169 files and took about 23 minutes on a warm image.@b4run/testing's build output by relative path, which needs a capture edited by hand.chmods the built CLI made the verifier's inspection refuse the workspace. That is now the file'swritesverdict instead of a stop.cli's proposal would be1280/2/420000/960000.Review
Every task had a spec review and a quality review, then the branch had a final review. The "As landed" notes record every fix.
Verification (local, Node 24)
test:sandbox: 13 files passed and 1 skipped (opt-in); 32 tests passed and 5 skipped, in 299 s.pnpm lint,node scripts/check-docs.mjsand the factory typechecks pass.Examples only, so there is no changeset.
🤖 Generated with Claude Code