Skip to content

Commit aba6225

Browse files
Wire test, docs, and report conventions into builder chain (#929)
* Wire test, docs, and report conventions into builder chain * Fix grammar in same-commit docs clause * Wire docs routing, testsmith consumer, and PR shape into builder chain
1 parent fa115dd commit aba6225

3 files changed

Lines changed: 32 additions & 3 deletions

File tree

plugins/corbits-skills/skills/implement/SKILL.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,9 @@ The order of operations depends on whether you're fixing a bug or building a fea
9292

9393
Keep the test focused on the behavior introduced by this commit. Don't test unrelated functionality. The test is part of the deliverable, not an afterthought.
9494

95-
Keep the scope tight to what was discussed. If you discover additional work is needed, finish the current commit's scope first and note the additional work for a future commit.
95+
The test lands in the same unit of work as the implementation (Step 4) — same commit when committing — one logical unit (source of truth: style skill, AGENTS.md). When the caller passes testsmith-designed cases, land them as the implementation tests; any case left unlanded goes in the report with why so the caller can route a tester run.
96+
97+
Keep the scope tight to what was discussed. If you discover additional work is needed, finish the current commit's scope first and note the additional work for a future commit. When the landing alters documented behavior beyond the discussed doc scope, flag it for the caller so a shakespeare docs pass can follow.
9698

9799
### Step 3: Build Gate
98100

@@ -105,12 +107,13 @@ Run `make` (or the project's equivalent full pipeline: format, lint, build, test
105107
- If the build fails due to pre-existing issues unrelated to your changes, report the failure to the caller and let them decide how to proceed
106108
- Do not move forward with a broken build
107109
- Do not substitute partial builds (e.g., running only the compiler) for the full pipeline
110+
- Record the exact verification commands and their exit statuses: the report maps each success criterion to pass, fail, or blocked with command evidence
108111

109112
### Step 4: Commit
110113

111114
Update `activeForm` to "Committing: {subject}".
112115

113-
Create the commit. Follow the commit message conventions from the `style` skill. Include the test in the same commit as the implementation — they are one logical unit of work.
116+
Create the commit. Follow the commit message conventions from the `style` skill. Include the test in the same unit of work as the implementation — same commit when committing — one logical unit — and update the docs when the commit changes documented behavior. Worker-chain branch/PR convention: branch name carries the issue id, the PR body ends with `Fixes CL-…` and carries no AI-attribution lines (CONTRIBUTING: title stays a plain-English sentence, body is Summary/Verification).
114117

115118
### Step 5: Critique Loop
116119

src/agent/directors/builder/package.test.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,30 @@ describe("builderPackage", () => {
167167
expect(prompt).toMatch(/Summary \/ Findings \/ Blockers \/ Paths/);
168168
});
169169

170+
test("systemPrompt wires same-unit tests, docs upkeep, and report mapping", () => {
171+
const p = builderPackage.systemPrompt;
172+
expect(p).toMatch(/same commit/);
173+
expect(p).toMatch(/same commit when committing/);
174+
expect(p).toMatch(/alters documented behavior/i);
175+
expect(p).toMatch(/update the docs/i);
176+
expect(p).toMatch(
177+
/map each success_criteria item to pass, fail, or blocked/,
178+
);
179+
expect(p).toMatch(
180+
/bare .*pass.*without command evidence.*incomplete report/is,
181+
);
182+
});
183+
184+
test("systemPrompt wires docs routing, testsmith consumer, and branch/PR shape", () => {
185+
const p = builderPackage.systemPrompt;
186+
expect(p).toMatch(/testsmith-designed cases/);
187+
expect(p).toMatch(/route a tester run/);
188+
expect(p).toMatch(/shakespeare docs pass/);
189+
expect(p).toMatch(/branch name carries the issue id/i);
190+
expect(p).toMatch(/Fixes CL-/);
191+
expect(p).toMatch(/no AI-attribution lines/);
192+
});
193+
170194
test("systemPrompt preserves public API sync/async under Guidelines", () => {
171195
const prompt = builderPackage.systemPrompt;
172196
expect(prompt).toMatch(/Public API shapes/i);

src/agent/directors/builder/package.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ The order of operations depends on whether you're fixing a bug or building a fea
6060
6161
Keep the test focused on the behavior introduced by this unit of work. Don't test unrelated functionality. The test is part of the deliverable, not an afterthought.
6262
63+
Land the test in the same unit of work as the implementation — same commit when committing — one logical unit. When the change alters documented behavior, update the docs that describe it in the same unit of work (source of truth: style skill, AGENTS.md). When the brief carries testsmith-designed cases, land them as the implementation tests; any case left unlanded goes under Blockers with why so the parent can route a tester run. When the landing alters documented behavior outside the brief's doc scope, flag it under Blockers so the parent can route a shakespeare docs pass.
64+
6365
Keep the scope tight to the brief. If you discover additional work is needed, finish the current brief's scope first and note the additional work under Blockers / Findings for a future unit.
6466
6567
## Build Gate
@@ -79,7 +81,7 @@ For implementation work, run the repository-defined typecheck command and releva
7981
8082
**Don't shortcut verify.** The value is in the discipline. Skipping the build gate "because this change is simple" defeats the purpose.
8183
82-
**Keep units focused.** Deliver a working tree that satisfies the brief and report. Builder does NOT commit unless the brief's success_criteria explicitly ask for a commit — the parent / Skywalker usually owns commits. Prefer: working tree + report envelope.
84+
**Keep units focused.** Deliver a working tree that satisfies the brief and report. Builder does NOT commit unless the brief's success_criteria explicitly ask for a commit — the parent / Skywalker usually owns commits. Prefer: working tree + report envelope. Worker-chain branch/PR convention for the parent's handoff: branch name carries the issue id, the PR body ends with \`Fixes CL-…\` and carries no AI-attribution lines (CONTRIBUTING: title stays a plain-English sentence, body is Summary/Verification only).
8385
8486
**Discovered extra work** belongs under Blockers / Findings for a future unit — finish the current brief first.
8587

0 commit comments

Comments
 (0)