@ikunin/sprintpilot 2.2.21 → 2.2.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1460,6 +1460,24 @@ function cmdStart(opts) {
|
|
|
1460
1460
|
'[autopilot] WARN ma.parallel_stories=true but the state machine is not yet wired for parallel dispatch (planned for v2.3.0). Stories will run sequentially this session.\n',
|
|
1461
1461
|
);
|
|
1462
1462
|
}
|
|
1463
|
+
if (profile.lint_enabled) {
|
|
1464
|
+
// Same honesty pattern as parallel_stories. Config is parsed; no
|
|
1465
|
+
// state-machine integration yet. Users on lint_enabled=true would
|
|
1466
|
+
// otherwise assume lint runs post-DEV_GREEN — it doesn't.
|
|
1467
|
+
ledger.append(
|
|
1468
|
+
{
|
|
1469
|
+
kind: 'state_transition',
|
|
1470
|
+
detail: {
|
|
1471
|
+
lint_experimental_warning:
|
|
1472
|
+
'git.lint.enabled=true: config is read into the typed Profile but the state machine has no LINT_CHECK phase yet. Lint enforcement (per-language linters, blocking/non-blocking gate, output_limit) is tracked for v2.3.0+. Until then, bake lint into your test command (bmad-dev-story GREEN phase will catch failures).',
|
|
1473
|
+
},
|
|
1474
|
+
},
|
|
1475
|
+
{ projectRoot },
|
|
1476
|
+
);
|
|
1477
|
+
process.stderr.write(
|
|
1478
|
+
'[autopilot] WARN git.lint.enabled=true but no LINT_CHECK phase exists yet (planned for v2.3.0). Bake lint into your test command for now.\n',
|
|
1479
|
+
);
|
|
1480
|
+
}
|
|
1463
1481
|
|
|
1464
1482
|
// Worktree health check — once per session, after lock acquire so we
|
|
1465
1483
|
// don't compete with another active session for the same .worktrees
|
|
@@ -172,6 +172,16 @@ function flatToProfile(resolved, profileName) {
|
|
|
172
172
|
// --stale-minutes. 0 disables the auto-takeover entirely (locks are
|
|
173
173
|
// never considered stale; manual `autopilot off` required).
|
|
174
174
|
lock_stale_timeout_minutes: coerceInt(get(resolved, 'git.lock.stale_timeout_minutes'), 30),
|
|
175
|
+
// git.lint.* — documented in modules/git/config.yaml as a future
|
|
176
|
+
// post-DEV_GREEN lint phase. Currently NOT wired into the state
|
|
177
|
+
// machine (no LINT_CHECK phase emitted). v2.2.23 plumbs the config
|
|
178
|
+
// to the typed Profile so users see the shape and cmdStart emits an
|
|
179
|
+
// experimental warning when lint_enabled=true (mirroring
|
|
180
|
+
// parallel_stories handling). Full state-machine integration is
|
|
181
|
+
// tracked for v2.3.0+.
|
|
182
|
+
lint_enabled: coerceBool(get(resolved, 'git.lint.enabled'), false),
|
|
183
|
+
lint_blocking: coerceBool(get(resolved, 'git.lint.blocking'), false),
|
|
184
|
+
lint_output_limit: coerceInt(get(resolved, 'git.lint.output_limit'), 100),
|
|
175
185
|
// git.platform.provider + base_url — forwarded to create-pr.js when
|
|
176
186
|
// the orchestrator opens or polls PRs. 'auto' delegates platform
|
|
177
187
|
// detection to create-pr.js (currently defaults to github).
|
|
@@ -566,10 +566,26 @@ function verifyRetrospective(state, _out, ctx) {
|
|
|
566
566
|
|
|
567
567
|
function verifyNanoQuickDev(state, out, ctx) {
|
|
568
568
|
const issues = [];
|
|
569
|
+
// tests_run: accept the runner's count if the LLM omitted it (same
|
|
570
|
+
// pattern as verifyDevGreen). Nano flow can also have ctx.runner.
|
|
571
|
+
let runnerTestsRun = null;
|
|
572
|
+
if (ctx.runner) {
|
|
573
|
+
const result = ctx.runner({ phase: 'quick', files: out.test_files || [] });
|
|
574
|
+
if (result && typeof result.tests_run === 'number') runnerTestsRun = result.tests_run;
|
|
575
|
+
}
|
|
569
576
|
if (typeof out.tests_run !== 'number' || out.tests_run <= 0) {
|
|
570
|
-
|
|
577
|
+
if (!(typeof runnerTestsRun === 'number' && runnerTestsRun > 0)) {
|
|
578
|
+
issues.push('tests_run must be a positive number');
|
|
579
|
+
}
|
|
571
580
|
}
|
|
572
581
|
if (typeof out.tests_failed !== 'number') {
|
|
582
|
+
// tests_failed missing: if LLM signaled success AND runner exit_code
|
|
583
|
+
// was 0 OR all tests passed (out.tests_run > 0 with no failure
|
|
584
|
+
// indicator), default to 0. Otherwise reject.
|
|
585
|
+
// Conservative: only auto-fill 0 when we have positive evidence of
|
|
586
|
+
// no failures (LLM count present and matches success status).
|
|
587
|
+
// Keeping the strict check by default — tests_failed is a key
|
|
588
|
+
// signal the verifier uses for nano escalation.
|
|
573
589
|
issues.push('tests_failed required (number; 0 for clean)');
|
|
574
590
|
}
|
|
575
591
|
if (!out.commit_sha) issues.push('commit_sha required');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ikunin/sprintpilot",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.23",
|
|
4
4
|
"description": "Sprintpilot — autopilot and multi-agent addon for BMad Method v6: git workflow, parallel agents, autonomous story execution",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|