Skip to content

chore(deps-dev): bump vitest from 4.0.18 to 4.1.0 in /extensions - #3

Merged
HenryLach merged 3 commits into
mainfrom
dependabot/npm_and_yarn/extensions/vitest-4.1.0
Mar 15, 2026
Merged

chore(deps-dev): bump vitest from 4.0.18 to 4.1.0 in /extensions#3
HenryLach merged 3 commits into
mainfrom
dependabot/npm_and_yarn/extensions/vitest-4.1.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Mar 14, 2026

Copy link
Copy Markdown
Contributor

Bumps vitest from 4.0.18 to 4.1.0.

Release notes

Sourced from vitest's releases.

v4.1.0

Vitest 4.1 is out!

This release page lists all changes made to the project during the 4.1 beta. To get a review of all the new features, read our blog post.

   🚀 Features

... (truncated)

Commits
  • 4150b91 chore: release v4.1.0
  • 1de0aa2 fix: correctly identify concurrent test during static analysis (#9846)
  • c3cac1c fix: use isAgent check, not just TTY, for watch mode (#9841)
  • eab68ba chore(deps): update all non-major dependencies (#9824)
  • 031f02a fix: allow catch/finally for async assertion (#9827)
  • 3e9e096 feat(reporters): add agent reporter to reduce ai agent token usage (#9779)
  • 0c2c013 chore: release v4.1.0-beta.6
  • 8181e06 fix: hideSkippedTests should not hide test.todo (fix #9562) (#9781)
  • a8216b0 fix: manual and redirect mock shouldn't load or transform original module...
  • 689a22a fix(browser): types of getCDPSession and cdp() (#9716)
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 4.0.18 to 4.1.0.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.0/packages/vitest)

---
updated-dependencies:
- dependency-name: vitest
  dependency-version: 4.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot @github

dependabot Bot commented on behalf of github Mar 14, 2026

Copy link
Copy Markdown
Contributor Author

Labels

The following labels could not be found: chore. Please create it before Dependabot can add it to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

@dependabot dependabot Bot added the dependencies Dependency updates label Mar 14, 2026
@HenryLach
HenryLach self-requested a review as a code owner March 15, 2026 00:29
@HenryLach
HenryLach merged commit 3c9385b into main Mar 15, 2026
1 check passed
@HenryLach
HenryLach deleted the dependabot/npm_and_yarn/extensions/vitest-4.1.0 branch March 15, 2026 00:35
HenryLach added a commit that referenced this pull request Mar 17, 2026
…(number validation > 0), dynamic JSON-only footer
HenryLach added a commit that referenced this pull request Mar 17, 2026
…pers (coerceValueForWrite, writeProjectConfigField, writeUserPreference)
HenryLach added a commit that referenced this pull request Mar 17, 2026
* checkpoint: TP-014 fix R006 revisions — explicit key mapping preserves record keys in YAML→camelCase and camelCase→snake_case adapters, resolveConfigRoot uses per-file precedence

* checkpoint: TP-014 Step 2 R006 revisions complete - all 3 issues fixed

* hydrate: expand Step 3 checkboxes per R007 review

* test(TP-014): add project-config-loader tests — precedence/error matrix (50 tests passing)

* checkpoint: TP-014 workspace root resolution tests verified

* checkpoint: TP-014 key-preservation and adapter regression tests verified

* checkpoint: TP-014 defaults non-mutation and backward-compat wrappers verified

* checkpoint: TP-014 Step 3 complete — all 434 tests passing (16 files)

* hydrate: add R008 revision items to Step 3

* test(TP-014): fix test 4.5 to exercise loadProjectConfig throw + default fallback per R008

* test(TP-014): fix test 4.5 to actually call task-runner loadConfig with malformed JSON

* checkpoint: TP-014 Step 3 R008 revisions complete — all 434 tests passing

* test(TP-014): clean up test 4.5 to use static import of loadConfig instead of require()

* hydrate: expand Step 4 checkboxes per R009 review

* docs(TP-014): add JSON config section to task-runner.yaml.md reference

* docs(TP-014): add JSON config section to task-orchestrator.yaml.md reference

* checkpoint: TP-014 install.md checked - no update needed, YAML scaffolding references still correct

* checkpoint: TP-014 task artifacts (.DONE, STATUS.md)

* feat(TP-014): complete Step 4 - documentation & delivery, .DONE created

* hydrate: TP-017 expand Step 0 checkboxes per R001 review

* hydrate: TP-015 expand Step 0 checkboxes per R001 review

* checkpoint: TP-017 preflight path convention confirmed with PI_CODING_AGENT_DIR override and cross-platform resolution

* checkpoint: TP-015 read current cmdInit() implementation

* checkpoint: TP-015 read spec auto-detection and gitignore sections

* checkpoint: TP-015 verify spec reachability (found in main repo .pi/local/docs/)

* checkpoint: TP-015 verify TP-014 config loader/schema contract

* checkpoint: TP-015 record current cmdInit() behavior to preserve

* checkpoint: TP-015 identify downstream validation (no init-specific tests exist)

* checkpoint: TP-015 Step 0 Preflight complete

* checkpoint: TP-015 Step 0 preflight complete - all items verified

* hydrate: TP-017 expand Step 1 checkboxes with R002 review feedback

* checkpoint: TP-017 preferences schema, allowlist, and types defined in preferences.ts

* checkpoint: TP-017 loadUserPreferences and resolveUserPreferencesPath implemented

* hydrate: TP-015 add R002 revision items to Step 0

* checkpoint: TP-015 revert TP-014 file changes from TP-015 commits (R002 fix)

* checkpoint: TP-015 fix malformed STATUS.md tables (R002 revision)

* checkpoint: TP-015 Step 0 complete, orchestrator advancing to Step 1

* checkpoint: TP-017 merge logic updated with mergeModel, dashboardPort, empty-string semantics

* checkpoint: TP-017 Step 1 complete — exports wired, all 434 tests pass

* checkpoint: TP-017 Step 1 verified complete — all checkboxes done, 434 tests pass

* hydrate: expand Step 1 checkboxes per R003 review

* hydrate: TP-017 expand Step 2 checkboxes per R003 review

* checkpoint: TP-015 detection logic implemented (isGitRepo, findSubdirectoryGitRepos, detectInitMode)

* checkpoint: TP-015 error path verified (no git repo, no subdirectory repos)

* checkpoint: TP-015 ambiguous case handled (prompt + preset bypass)

* checkpoint: TP-015 Scenario B already-initialized detection verified

* checkpoint: TP-017 tests for path resolution, loading edge cases, unknown-key dropping

* checkpoint: TP-017 Layer 2 guardrails tests confirmed

* checkpoint: TP-017 merge integration tests confirmed (JSON + YAML backed, e2e)

* checkpoint: TP-017 Step 2 complete — full test suite passes (17 files, 461 tests)

* checkpoint: TP-015 all mode detection branches validated (repo, workspace, ambiguous, error)

* checkpoint: TP-015 Step 1 Mode Auto-Detection complete

* hydrate: TP-017 expand Step 3 checkboxes per R004 review

* checkpoint: TP-017 task artifacts (.DONE, STATUS.md)

* checkpoint: TP-017 verified completion criteria

* checkpoint: TP-017 confirmed no docs need updating

* checkpoint: TP-017 .DONE created

* feat(TP-017): user preferences layer complete

* hydrate: TP-015 add R004 revision items to Step 1

* checkpoint: TP-017 Step 3 complete — all items verified

* checkpoint: TP-015 fix findSubdirectoryGitRepos to use isGitRepoRoot

* checkpoint: TP-015 fix existingConfigPath mismatch for ambiguous→workspace resolution

* checkpoint: TP-015 Step 1 complete — all R004 revision items addressed

* hydrate: expand Step 2 checkboxes based on R005 review

* checkpoint: TP-015 define gitignore constants and reusable helpers

* checkpoint: TP-015 ensureGitignoreEntries and detectAndOfferUntrackArtifacts helpers implemented

* checkpoint: TP-015 integrate gitignore enforcement into cmdInit repo-mode flow

* checkpoint: TP-015 tracked-artifact detection and git rm --cached offer implemented

* checkpoint: TP-015 Step 2 complete — gitignore enforcement with dry-run output

* checkpoint: TP-015 Step 2 verified complete — all gitignore enforcement items done

* hydrate: TP-015 add R006 revision items to Step 2

* hydrate: TP-015 add R006 revision items to Step 2

* checkpoint: TP-015 fix patternToRegex directory prefix matching and switch to execFileSync

* checkpoint: TP-015 remove dead buildGitignoreBlock function

* checkpoint: TP-015 add gitignore pattern matching tests (18 tests), Step 2 R006 revisions complete

* feat(TP-015): R006 extract gitignore patterns to testable module with 26 tests

* hydrate: TP-015 expand Step 3 checkboxes based on R007 review

* checkpoint: TP-015 implement detectSpawnMode() reusable helper

* checkpoint: TP-015 wire spawn_mode into generateOrchestratorYaml via vars

* checkpoint: TP-015 tmux guidance message with preset/runner-only/dry-run handling

* checkpoint: TP-015 Step 3 verified and complete — tmux/spawn mode detection

* checkpoint: TP-015 Step 3 verification complete — all tmux detection behaviors verified

* hydrate: expand Step 4 checkboxes based on R009 review

* checkpoint: TP-015 config repo selection prompt and workspace vars gathering verified

* checkpoint: TP-015 .taskplane/ scaffolding in config repo verified

* checkpoint: TP-015 gitignore enforcement in config repo verified

* checkpoint: TP-015 pointer file creation verified

* checkpoint: TP-015 dry-run/preset/force compatibility for workspace mode verified

* checkpoint: TP-015 Step 4 complete — workspace mode init (Scenario C)

* hydrate: add R010 revision items to Step 4

* checkpoint: TP-015 R010 fix workspace gitignore prefix and tracked-artifact scanning

* checkpoint: TP-015 R010 include .gitignore in workspace auto-commit staging

* checkpoint: TP-015 R010 fix overwrite confirmation skipIfExists + execFileSync for git ls-files

* hydrate: expand Step 5 checkboxes for Scenario D

* feat(TP-015): implement Scenario D workspace join — pointer-only early return

* checkpoint: TP-015 pointer idempotency implemented

* checkpoint: TP-015 user confirmation messaging implemented

* checkpoint: TP-015 Step 5 complete — Scenario D workspace join verified

* hydrate: TP-015 add R012 revision items to Step 5

* checkpoint: TP-015 R012 fix --force bypassing Scenario D control flow

* checkpoint: TP-015 R012 wrap pointer JSON.parse in try/catch, Step 5 complete

* hydrate: expand Step 6 checkboxes per R013 review

* checkpoint: TP-015 baseline validation gates pass (478 tests, help, doctor)

* checkpoint: TP-015 Scenario A dry-run verified (repo mode, all presets)

* checkpoint: TP-015 all three presets verified (minimal, full, runner-only)

* checkpoint: TP-015 YAML output verified alongside JSON (both repo and workspace modes)

* feat(TP-015): add init-mode-detection tests (34 tests) and fix Windows 8.3 path bug in isGitRepoRoot

* checkpoint: TP-015 Step 6 complete — all testing & verification done

* hydrate: TP-015 add R014 revision items to Step 6

* checkpoint: TP-015 fix mirrored isGitRepoRoot() in test to match production realpathSync.native normalization, add regression test 1.8

* checkpoint: TP-015 full vitest suite passes (19 files, 513 tests) after R014 fixes

* checkpoint: TP-015 Step 6 complete, all R014 revision items addressed

* hydrate: expand Step 7 checkboxes per R015 review

* docs(TP-015): update install tutorial for init-v2 flow

* docs(TP-015): update commands.md init reference for mode detection and new behaviors

* docs(TP-015): update README quickstart with mode detection and gitignore note

* checkpoint: TP-015 final verification — 513 tests pass, CLI help/doctor OK, all commits use TP-015 prefix

* checkpoint: TP-015 task artifacts (.DONE, STATUS.md)

* feat(TP-015): task complete — .DONE created, all steps finished

* hydrate: TP-018 expand Step 0 checkboxes per R001 review

* checkpoint: TP-018 read pi ctx.ui API capabilities

* checkpoint: TP-018 read config schema from TP-014

* checkpoint: TP-018 reviewed Layer 2 allowlist and preferences boundary

* hydrate: TP-016 expand Step 0 checkboxes per R001 review

* checkpoint: TP-018 reviewed config root/path semantics in workspace mode

* checkpoint: TP-018 reviewed config root/path semantics in workspace mode

* checkpoint: TP-018 reviewed JSON-first + YAML fallback write-back behavior

* checkpoint: TP-018 reviewed JSON-first + YAML fallback for write-back alignment

* checkpoint: TP-016 inventoried all config/agent/state resolution call sites

* checkpoint: TP-016 resolver inventory table complete

* checkpoint: TP-018 preflight findings - field/source inventory with UI control types and layer mapping

* checkpoint: TP-016 documented mode matrix for pointer resolution

* checkpoint: TP-016 mode matrix documented

* checkpoint: TP-016 Step 0 preflight complete — resolution map, mode matrix, env-var precedence documented

* checkpoint: TP-018 reviewed JSON-first + YAML fallback behavior (already done)

* checkpoint: TP-016 env-var precedence documented, Step 0 complete

* hydrate: TP-018 add R002 revision items to Step 0

* checkpoint: TP-016 R002 revisions - unified pointer failure semantics, fixed STATUS.md formatting

* checkpoint: TP-018 R002 fixes — added missing fields (worker.spawnMode, context.maxWorkerMinutes, preWarm.autoDetect), CONTEXT.md review, schema coverage checklist

* checkpoint: TP-018 Step 0 R002 revisions complete — field inventory updated with missing fields and schema coverage checklist

* checkpoint: TP-016 R002 revision - unified pointer failure semantics, fixed function names, deduped log, merged mode matrices

* hydrate: TP-018 expand Step 1 checkboxes per R003 review

* hydrate: TP-016 expand Step 1 checkboxes per R003 review

* checkpoint: TP-018 section taxonomy, ordering, field-to-section assignment, and UI controls documented

* checkpoint: TP-018 source-indicator behavior rules documented for all layer combinations

* checkpoint: TP-018 schema coverage validated, Step 1 complete

* checkpoint: TP-016 resolvePointer() function implemented in workspace.ts

* checkpoint: TP-016 return contract verified - config/agent follow pointer, state stays at workspace .pi/

* checkpoint: TP-016 Step 1 complete - PointerResolution type and resolvePointer() implemented

* hydrate: add R003 revision items to Step 1

* checkpoint: TP-016 Step 1 confirmed complete on re-entry

* checkpoint: TP-018 Step 1 complete - R003 revisions applied (worker.spawnMode L1 fix, field contract table, non-editable surfacing)

* hydrate: TP-018 add R004 revision items to Step 1

* checkpoint: TP-018 R004 fix - consolidated canonical navigation map (12 sections)

* checkpoint: TP-018 R004 fix - aligned source-badge rules with type-specific merge semantics

* hydrate: TP-016 add R004 revision items to Step 1

* checkpoint: TP-016 fix config_path containment for Windows absolute paths and add defense-in-depth relative() check

* checkpoint: TP-018 R004 fix - canonical source rule matrix, spawnMode enum disambiguation

* hydrate: TP-018 expand Step 2 checkboxes with R005 items

* checkpoint: TP-016 add resolvePointer test suite (6.x) with 18 tests covering all failure modes + valid resolution

* hydrate: TP-016 expand Step 2 checkboxes per R005 review

* checkpoint: TP-018 create settings-tui.ts with section navigation, field display, source badges, and validation

* checkpoint: TP-016 thread pointer into resolveConfigRoot and loadProjectConfig

* checkpoint: TP-016 thread pointer into loadAgentDef for workspace agent resolution

* feat(TP-018): register /settings command with section navigation TUI

* checkpoint: TP-016 verified repo mode parity — all 576 tests pass

* checkpoint: TP-018 Step 2 complete - /settings command with TUI, source badges, validation

* checkpoint: TP-018 Step 2 complete - settings-tui.ts, /settings command, all tests pass (540/540)

* checkpoint: TP-016 Step 2 tests for pointer-threaded config resolution (5.x series in project-config-loader.test.ts)

* checkpoint: TP-016 Step 2 complete

* checkpoint: TP-016 Step 2 verified complete — all 593 tests passing

* hydrate: TP-018 add R006 revision items to Step 2

* checkpoint: TP-018 R006 fix #1 - use workspaceRoot for /settings config reads

* hydrate: TP-016 add R006 revision items to Step 2

* hydrate: TP-018 add R006 revision items for Step 2

* checkpoint: TP-018 R006 fix #2 - dynamic Advanced section discovery from schema

* checkpoint: TP-018 R006 fixes verified - all 540 tests pass, Step 2 complete

* checkpoint: TP-016 fix dual-layout config file resolution (standard .pi/ and flat pointer layout)

* checkpoint: TP-016 surface pointer warnings to stderr (once per session)

* checkpoint: TP-018 R006 fixes #3 (source detection type guards) and #4 (number validation > 0), dynamic JSON-only footer

* hydrate: TP-018 expand Step 3 checkboxes per R007 review

* checkpoint: TP-016 consolidate test suites, add flat-layout pointer tests, all 591 tests green

* checkpoint: TP-018 R006 fix #5 — add 58 unit tests for settings-tui pure functions

* checkpoint: TP-018 implement write-back destination matrix (L1/L2/L1+L2)

* checkpoint: TP-018 L1 writes to resolveConfigRoot JSON with atomic write pattern

* checkpoint: TP-018 L2 writes to resolveUserPreferencesPath with mkdir+atomic

* checkpoint: TP-016 add 6.x agent resolution + warning surfacing tests for Step 2 R006 coverage

* hydrate: expand Step 3 checkboxes with R007 revision items

* checkpoint: TP-018 confirmation gate already implemented in showSectionSettingsLoop

* feat(TP-018): R007 fix — YAML-only bootstrap writes full L1 snapshot via loadLayer1Config

* hydrate: TP-016 expand Step 3 checkboxes based on R007 review

* checkpoint: TP-018 Step 3 complete — all write-back items done, 598 tests pass

* feat(TP-018): fix ctx.ui.select/confirm API signatures and deep-clone safety

* checkpoint: TP-016 buildExecutionContext already resolves pointer and passes configRoot to loaders

* checkpoint: TP-016 spawnMergeAgent already uses pointer agentRoot, state files at stateRoot

* checkpoint: TP-016 pointer warning already logged at orchestrator startup via buildExecutionContext

* checkpoint: TP-016 verified state/sidecar paths invariant - never follow pointer

* hydrate: TP-018 add R008 revision items to Step 3

* checkpoint: TP-018 R008 fix #1 — malformed JSON throws explicit error (already implemented), fix stale module header

* checkpoint: TP-018 R008 fix #2 — unlinkSync already in place for temp-file cleanup

* checkpoint: TP-018 R008 fix #3 — add 30 unit tests for write-back helpers (coerceValueForWrite, writeProjectConfigField, writeUserPreference)

* checkpoint: TP-016 fix and deduplicate orchestrator pointer tests, all 597 tests passing

* hydrate: expand Step 4 checkboxes per R009 review

* checkpoint: TP-016 Step 3 complete - orchestrator pointer threading verified with 11 new tests

* checkpoint: TP-018 add YAML source-badge tests (16.x series — JSON-only, YAML-only, JSON+YAML precedence)

* checkpoint: TP-018 add zero-mutation path tests (17.x series — cancel/decline confirmation)

* checkpoint: TP-018 add Advanced section discoverability tests (18.x series)

* hydrate: TP-016 expand Step 4 checkboxes based on R009 review

* checkpoint: TP-018 remove duplicate test sections (16-18.x) from prior iteration

* checkpoint: TP-016 dashboard state paths verified as pointer-invariant, added clarifying comments

* checkpoint: TP-018 Step 4 complete — 682 tests pass (54 new: YAML source detection, zero-mutation paths, Advanced discoverability)

* checkpoint: TP-016 verified STATUS.md/task-folder resolution is pointer-independent in dashboard

* checkpoint: TP-016 Step 4 complete — dashboard pointer threading verified

* hydrate: TP-016 add R008 revision items to Step 3

* hydrate: add R010 revision items to Step 4

* feat(TP-016): thread workspaceRoot into resumeOrchBatch for consistent stateRoot

* feat(TP-018): extract resolveWriteAction decision logic, replace tautological tests with real decision-tree tests

* checkpoint: TP-018 Step 4 complete - fix test count, mark R010 revisions done

* feat(TP-016): replace source-text test assertions with behavioral state-root consistency tests

* hydrate: expand Step 5 checkboxes for TP-016

* hydrate: TP-018 expand Step 5 checkboxes per R011 review

* checkpoint: TP-016 verified test 7.11 is behavioral, Step 3 R008 already closed

* checkpoint: TP-018 add /settings to commands reference

* checkpoint: TP-016 verified pointer failure/parity matrix test coverage

* checkpoint: TP-018 add /settings to README command table

* checkpoint: TP-018 add /settings mention to install tutorial

* checkpoint: TP-016 verified integration split invariant test coverage

* checkpoint: TP-018 normalize STATUS.md top-level status field

* checkpoint: TP-016 Step 5 complete — all 609 tests passing

* checkpoint: TP-018 task artifacts (.DONE, STATUS.md)

* feat(TP-018): complete /settings TUI command — docs, README, .DONE

* hydrate: TP-018 add R012 revision items to Step 5

* hydrate: TP-016 add R012 revision items to Step 5

* hydrate: TP-016 add R012 revision items to Step 5

* checkpoint: TP-018 fix /settings common responses to match actual error paths

* checkpoint: TP-018 update commands.md intro and move Configuration Commands above CLI

* checkpoint: TP-018 add Example block to /settings command reference

* docs(TP-018): refine /settings Advanced description and Common responses per R012 review

* checkpoint: TP-016 R012 replace signature tests 7.11/7.12 with behavioral state-root tests

* checkpoint: TP-016 R012 full test suite passing (609 tests)

* checkpoint: TP-016 R012 — add VERIFICATION.md with full test coverage matrix for Step 5

* hydrate: TP-016 expand Step 6 checkboxes per R013 review

* checkpoint: TP-016 architecture doc impact check - no update needed

* checkpoint: TP-016 final acceptance reconciliation - all criteria met

* checkpoint: TP-016 task artifacts (.DONE, STATUS.md)

* checkpoint: TP-016 .DONE created - task complete

* feat: configurable merge agent timeout, default 10 min (was 5 min)

- OrchestratorConfig.merge.timeout_minutes field (default: 10)
- waitForMergeResult() uses config value instead of hardcoded constant
- Exposed in /settings TUI under Merge section
- Updated task-orchestrator.yaml template

Fixes merge agent timeouts on large batches.
HenryLach added a commit that referenced this pull request Mar 18, 2026
…9) (#53)

* hydrate: expand Step 4 checkboxes per R009 review

* docs(TP-014): add JSON config section to task-runner.yaml.md reference

* docs(TP-014): add JSON config section to task-orchestrator.yaml.md reference

* checkpoint: TP-014 install.md checked - no update needed, YAML scaffolding references still correct

* checkpoint: TP-014 task artifacts (.DONE, STATUS.md)

* feat(TP-014): complete Step 4 - documentation & delivery, .DONE created

* hydrate: TP-017 expand Step 0 checkboxes per R001 review

* hydrate: TP-015 expand Step 0 checkboxes per R001 review

* checkpoint: TP-017 preflight path convention confirmed with PI_CODING_AGENT_DIR override and cross-platform resolution

* checkpoint: TP-015 read current cmdInit() implementation

* checkpoint: TP-015 read spec auto-detection and gitignore sections

* checkpoint: TP-015 verify spec reachability (found in main repo .pi/local/docs/)

* checkpoint: TP-015 verify TP-014 config loader/schema contract

* checkpoint: TP-015 record current cmdInit() behavior to preserve

* checkpoint: TP-015 identify downstream validation (no init-specific tests exist)

* checkpoint: TP-015 Step 0 Preflight complete

* checkpoint: TP-015 Step 0 preflight complete - all items verified

* hydrate: TP-017 expand Step 1 checkboxes with R002 review feedback

* checkpoint: TP-017 preferences schema, allowlist, and types defined in preferences.ts

* checkpoint: TP-017 loadUserPreferences and resolveUserPreferencesPath implemented

* hydrate: TP-015 add R002 revision items to Step 0

* checkpoint: TP-015 revert TP-014 file changes from TP-015 commits (R002 fix)

* checkpoint: TP-015 fix malformed STATUS.md tables (R002 revision)

* checkpoint: TP-015 Step 0 complete, orchestrator advancing to Step 1

* checkpoint: TP-017 merge logic updated with mergeModel, dashboardPort, empty-string semantics

* checkpoint: TP-017 Step 1 complete — exports wired, all 434 tests pass

* checkpoint: TP-017 Step 1 verified complete — all checkboxes done, 434 tests pass

* hydrate: expand Step 1 checkboxes per R003 review

* hydrate: TP-017 expand Step 2 checkboxes per R003 review

* checkpoint: TP-015 detection logic implemented (isGitRepo, findSubdirectoryGitRepos, detectInitMode)

* checkpoint: TP-015 error path verified (no git repo, no subdirectory repos)

* checkpoint: TP-015 ambiguous case handled (prompt + preset bypass)

* checkpoint: TP-015 Scenario B already-initialized detection verified

* checkpoint: TP-017 tests for path resolution, loading edge cases, unknown-key dropping

* checkpoint: TP-017 Layer 2 guardrails tests confirmed

* checkpoint: TP-017 merge integration tests confirmed (JSON + YAML backed, e2e)

* checkpoint: TP-017 Step 2 complete — full test suite passes (17 files, 461 tests)

* checkpoint: TP-015 all mode detection branches validated (repo, workspace, ambiguous, error)

* checkpoint: TP-015 Step 1 Mode Auto-Detection complete

* hydrate: TP-017 expand Step 3 checkboxes per R004 review

* checkpoint: TP-017 task artifacts (.DONE, STATUS.md)

* checkpoint: TP-017 verified completion criteria

* checkpoint: TP-017 confirmed no docs need updating

* checkpoint: TP-017 .DONE created

* feat(TP-017): user preferences layer complete

* hydrate: TP-015 add R004 revision items to Step 1

* checkpoint: TP-017 Step 3 complete — all items verified

* checkpoint: TP-015 fix findSubdirectoryGitRepos to use isGitRepoRoot

* checkpoint: TP-015 fix existingConfigPath mismatch for ambiguous→workspace resolution

* checkpoint: TP-015 Step 1 complete — all R004 revision items addressed

* hydrate: expand Step 2 checkboxes based on R005 review

* checkpoint: TP-015 define gitignore constants and reusable helpers

* checkpoint: TP-015 ensureGitignoreEntries and detectAndOfferUntrackArtifacts helpers implemented

* checkpoint: TP-015 integrate gitignore enforcement into cmdInit repo-mode flow

* checkpoint: TP-015 tracked-artifact detection and git rm --cached offer implemented

* checkpoint: TP-015 Step 2 complete — gitignore enforcement with dry-run output

* checkpoint: TP-015 Step 2 verified complete — all gitignore enforcement items done

* hydrate: TP-015 add R006 revision items to Step 2

* hydrate: TP-015 add R006 revision items to Step 2

* checkpoint: TP-015 fix patternToRegex directory prefix matching and switch to execFileSync

* checkpoint: TP-015 remove dead buildGitignoreBlock function

* checkpoint: TP-015 add gitignore pattern matching tests (18 tests), Step 2 R006 revisions complete

* feat(TP-015): R006 extract gitignore patterns to testable module with 26 tests

* hydrate: TP-015 expand Step 3 checkboxes based on R007 review

* checkpoint: TP-015 implement detectSpawnMode() reusable helper

* checkpoint: TP-015 wire spawn_mode into generateOrchestratorYaml via vars

* checkpoint: TP-015 tmux guidance message with preset/runner-only/dry-run handling

* checkpoint: TP-015 Step 3 verified and complete — tmux/spawn mode detection

* checkpoint: TP-015 Step 3 verification complete — all tmux detection behaviors verified

* hydrate: expand Step 4 checkboxes based on R009 review

* checkpoint: TP-015 config repo selection prompt and workspace vars gathering verified

* checkpoint: TP-015 .taskplane/ scaffolding in config repo verified

* checkpoint: TP-015 gitignore enforcement in config repo verified

* checkpoint: TP-015 pointer file creation verified

* checkpoint: TP-015 dry-run/preset/force compatibility for workspace mode verified

* checkpoint: TP-015 Step 4 complete — workspace mode init (Scenario C)

* hydrate: add R010 revision items to Step 4

* checkpoint: TP-015 R010 fix workspace gitignore prefix and tracked-artifact scanning

* checkpoint: TP-015 R010 include .gitignore in workspace auto-commit staging

* checkpoint: TP-015 R010 fix overwrite confirmation skipIfExists + execFileSync for git ls-files

* hydrate: expand Step 5 checkboxes for Scenario D

* feat(TP-015): implement Scenario D workspace join — pointer-only early return

* checkpoint: TP-015 pointer idempotency implemented

* checkpoint: TP-015 user confirmation messaging implemented

* checkpoint: TP-015 Step 5 complete — Scenario D workspace join verified

* hydrate: TP-015 add R012 revision items to Step 5

* checkpoint: TP-015 R012 fix --force bypassing Scenario D control flow

* checkpoint: TP-015 R012 wrap pointer JSON.parse in try/catch, Step 5 complete

* hydrate: expand Step 6 checkboxes per R013 review

* checkpoint: TP-015 baseline validation gates pass (478 tests, help, doctor)

* checkpoint: TP-015 Scenario A dry-run verified (repo mode, all presets)

* checkpoint: TP-015 all three presets verified (minimal, full, runner-only)

* checkpoint: TP-015 YAML output verified alongside JSON (both repo and workspace modes)

* feat(TP-015): add init-mode-detection tests (34 tests) and fix Windows 8.3 path bug in isGitRepoRoot

* checkpoint: TP-015 Step 6 complete — all testing & verification done

* hydrate: TP-015 add R014 revision items to Step 6

* checkpoint: TP-015 fix mirrored isGitRepoRoot() in test to match production realpathSync.native normalization, add regression test 1.8

* checkpoint: TP-015 full vitest suite passes (19 files, 513 tests) after R014 fixes

* checkpoint: TP-015 Step 6 complete, all R014 revision items addressed

* hydrate: expand Step 7 checkboxes per R015 review

* docs(TP-015): update install tutorial for init-v2 flow

* docs(TP-015): update commands.md init reference for mode detection and new behaviors

* docs(TP-015): update README quickstart with mode detection and gitignore note

* checkpoint: TP-015 final verification — 513 tests pass, CLI help/doctor OK, all commits use TP-015 prefix

* checkpoint: TP-015 task artifacts (.DONE, STATUS.md)

* feat(TP-015): task complete — .DONE created, all steps finished

* hydrate: TP-018 expand Step 0 checkboxes per R001 review

* checkpoint: TP-018 read pi ctx.ui API capabilities

* checkpoint: TP-018 read config schema from TP-014

* checkpoint: TP-018 reviewed Layer 2 allowlist and preferences boundary

* hydrate: TP-016 expand Step 0 checkboxes per R001 review

* checkpoint: TP-018 reviewed config root/path semantics in workspace mode

* checkpoint: TP-018 reviewed config root/path semantics in workspace mode

* checkpoint: TP-018 reviewed JSON-first + YAML fallback write-back behavior

* checkpoint: TP-018 reviewed JSON-first + YAML fallback for write-back alignment

* checkpoint: TP-016 inventoried all config/agent/state resolution call sites

* checkpoint: TP-016 resolver inventory table complete

* checkpoint: TP-018 preflight findings - field/source inventory with UI control types and layer mapping

* checkpoint: TP-016 documented mode matrix for pointer resolution

* checkpoint: TP-016 mode matrix documented

* checkpoint: TP-016 Step 0 preflight complete — resolution map, mode matrix, env-var precedence documented

* checkpoint: TP-018 reviewed JSON-first + YAML fallback behavior (already done)

* checkpoint: TP-016 env-var precedence documented, Step 0 complete

* hydrate: TP-018 add R002 revision items to Step 0

* checkpoint: TP-016 R002 revisions - unified pointer failure semantics, fixed STATUS.md formatting

* checkpoint: TP-018 R002 fixes — added missing fields (worker.spawnMode, context.maxWorkerMinutes, preWarm.autoDetect), CONTEXT.md review, schema coverage checklist

* checkpoint: TP-018 Step 0 R002 revisions complete — field inventory updated with missing fields and schema coverage checklist

* checkpoint: TP-016 R002 revision - unified pointer failure semantics, fixed function names, deduped log, merged mode matrices

* hydrate: TP-018 expand Step 1 checkboxes per R003 review

* hydrate: TP-016 expand Step 1 checkboxes per R003 review

* checkpoint: TP-018 section taxonomy, ordering, field-to-section assignment, and UI controls documented

* checkpoint: TP-018 source-indicator behavior rules documented for all layer combinations

* checkpoint: TP-018 schema coverage validated, Step 1 complete

* checkpoint: TP-016 resolvePointer() function implemented in workspace.ts

* checkpoint: TP-016 return contract verified - config/agent follow pointer, state stays at workspace .pi/

* checkpoint: TP-016 Step 1 complete - PointerResolution type and resolvePointer() implemented

* hydrate: add R003 revision items to Step 1

* checkpoint: TP-016 Step 1 confirmed complete on re-entry

* checkpoint: TP-018 Step 1 complete - R003 revisions applied (worker.spawnMode L1 fix, field contract table, non-editable surfacing)

* hydrate: TP-018 add R004 revision items to Step 1

* checkpoint: TP-018 R004 fix - consolidated canonical navigation map (12 sections)

* checkpoint: TP-018 R004 fix - aligned source-badge rules with type-specific merge semantics

* hydrate: TP-016 add R004 revision items to Step 1

* checkpoint: TP-016 fix config_path containment for Windows absolute paths and add defense-in-depth relative() check

* checkpoint: TP-018 R004 fix - canonical source rule matrix, spawnMode enum disambiguation

* hydrate: TP-018 expand Step 2 checkboxes with R005 items

* checkpoint: TP-016 add resolvePointer test suite (6.x) with 18 tests covering all failure modes + valid resolution

* hydrate: TP-016 expand Step 2 checkboxes per R005 review

* checkpoint: TP-018 create settings-tui.ts with section navigation, field display, source badges, and validation

* checkpoint: TP-016 thread pointer into resolveConfigRoot and loadProjectConfig

* checkpoint: TP-016 thread pointer into loadAgentDef for workspace agent resolution

* feat(TP-018): register /settings command with section navigation TUI

* checkpoint: TP-016 verified repo mode parity — all 576 tests pass

* checkpoint: TP-018 Step 2 complete - /settings command with TUI, source badges, validation

* checkpoint: TP-018 Step 2 complete - settings-tui.ts, /settings command, all tests pass (540/540)

* checkpoint: TP-016 Step 2 tests for pointer-threaded config resolution (5.x series in project-config-loader.test.ts)

* checkpoint: TP-016 Step 2 complete

* checkpoint: TP-016 Step 2 verified complete — all 593 tests passing

* hydrate: TP-018 add R006 revision items to Step 2

* checkpoint: TP-018 R006 fix #1 - use workspaceRoot for /settings config reads

* hydrate: TP-016 add R006 revision items to Step 2

* hydrate: TP-018 add R006 revision items for Step 2

* checkpoint: TP-018 R006 fix #2 - dynamic Advanced section discovery from schema

* checkpoint: TP-018 R006 fixes verified - all 540 tests pass, Step 2 complete

* checkpoint: TP-016 fix dual-layout config file resolution (standard .pi/ and flat pointer layout)

* checkpoint: TP-016 surface pointer warnings to stderr (once per session)

* checkpoint: TP-018 R006 fixes #3 (source detection type guards) and #4 (number validation > 0), dynamic JSON-only footer

* hydrate: TP-018 expand Step 3 checkboxes per R007 review

* checkpoint: TP-016 consolidate test suites, add flat-layout pointer tests, all 591 tests green

* checkpoint: TP-018 R006 fix #5 — add 58 unit tests for settings-tui pure functions

* checkpoint: TP-018 implement write-back destination matrix (L1/L2/L1+L2)

* checkpoint: TP-018 L1 writes to resolveConfigRoot JSON with atomic write pattern

* checkpoint: TP-018 L2 writes to resolveUserPreferencesPath with mkdir+atomic

* checkpoint: TP-016 add 6.x agent resolution + warning surfacing tests for Step 2 R006 coverage

* hydrate: expand Step 3 checkboxes with R007 revision items

* checkpoint: TP-018 confirmation gate already implemented in showSectionSettingsLoop

* feat(TP-018): R007 fix — YAML-only bootstrap writes full L1 snapshot via loadLayer1Config

* hydrate: TP-016 expand Step 3 checkboxes based on R007 review

* checkpoint: TP-018 Step 3 complete — all write-back items done, 598 tests pass

* feat(TP-018): fix ctx.ui.select/confirm API signatures and deep-clone safety

* checkpoint: TP-016 buildExecutionContext already resolves pointer and passes configRoot to loaders

* checkpoint: TP-016 spawnMergeAgent already uses pointer agentRoot, state files at stateRoot

* checkpoint: TP-016 pointer warning already logged at orchestrator startup via buildExecutionContext

* checkpoint: TP-016 verified state/sidecar paths invariant - never follow pointer

* hydrate: TP-018 add R008 revision items to Step 3

* checkpoint: TP-018 R008 fix #1 — malformed JSON throws explicit error (already implemented), fix stale module header

* checkpoint: TP-018 R008 fix #2 — unlinkSync already in place for temp-file cleanup

* checkpoint: TP-018 R008 fix #3 — add 30 unit tests for write-back helpers (coerceValueForWrite, writeProjectConfigField, writeUserPreference)

* checkpoint: TP-016 fix and deduplicate orchestrator pointer tests, all 597 tests passing

* hydrate: expand Step 4 checkboxes per R009 review

* checkpoint: TP-016 Step 3 complete - orchestrator pointer threading verified with 11 new tests

* checkpoint: TP-018 add YAML source-badge tests (16.x series — JSON-only, YAML-only, JSON+YAML precedence)

* checkpoint: TP-018 add zero-mutation path tests (17.x series — cancel/decline confirmation)

* checkpoint: TP-018 add Advanced section discoverability tests (18.x series)

* hydrate: TP-016 expand Step 4 checkboxes based on R009 review

* checkpoint: TP-018 remove duplicate test sections (16-18.x) from prior iteration

* checkpoint: TP-016 dashboard state paths verified as pointer-invariant, added clarifying comments

* checkpoint: TP-018 Step 4 complete — 682 tests pass (54 new: YAML source detection, zero-mutation paths, Advanced discoverability)

* checkpoint: TP-016 verified STATUS.md/task-folder resolution is pointer-independent in dashboard

* checkpoint: TP-016 Step 4 complete — dashboard pointer threading verified

* hydrate: TP-016 add R008 revision items to Step 3

* hydrate: add R010 revision items to Step 4

* feat(TP-016): thread workspaceRoot into resumeOrchBatch for consistent stateRoot

* feat(TP-018): extract resolveWriteAction decision logic, replace tautological tests with real decision-tree tests

* checkpoint: TP-018 Step 4 complete - fix test count, mark R010 revisions done

* feat(TP-016): replace source-text test assertions with behavioral state-root consistency tests

* hydrate: expand Step 5 checkboxes for TP-016

* hydrate: TP-018 expand Step 5 checkboxes per R011 review

* checkpoint: TP-016 verified test 7.11 is behavioral, Step 3 R008 already closed

* checkpoint: TP-018 add /settings to commands reference

* checkpoint: TP-016 verified pointer failure/parity matrix test coverage

* checkpoint: TP-018 add /settings to README command table

* checkpoint: TP-018 add /settings mention to install tutorial

* checkpoint: TP-016 verified integration split invariant test coverage

* checkpoint: TP-018 normalize STATUS.md top-level status field

* checkpoint: TP-016 Step 5 complete — all 609 tests passing

* checkpoint: TP-018 task artifacts (.DONE, STATUS.md)

* feat(TP-018): complete /settings TUI command — docs, README, .DONE

* hydrate: TP-018 add R012 revision items to Step 5

* hydrate: TP-016 add R012 revision items to Step 5

* hydrate: TP-016 add R012 revision items to Step 5

* checkpoint: TP-018 fix /settings common responses to match actual error paths

* checkpoint: TP-018 update commands.md intro and move Configuration Commands above CLI

* checkpoint: TP-018 add Example block to /settings command reference

* docs(TP-018): refine /settings Advanced description and Common responses per R012 review

* checkpoint: TP-016 R012 replace signature tests 7.11/7.12 with behavioral state-root tests

* checkpoint: TP-016 R012 full test suite passing (609 tests)

* checkpoint: TP-016 R012 — add VERIFICATION.md with full test coverage matrix for Step 5

* hydrate: TP-016 expand Step 6 checkboxes per R013 review

* checkpoint: TP-016 architecture doc impact check - no update needed

* checkpoint: TP-016 final acceptance reconciliation - all criteria met

* checkpoint: TP-016 task artifacts (.DONE, STATUS.md)

* checkpoint: TP-016 .DONE created - task complete

* feat: configurable merge agent timeout, default 10 min (was 5 min) (#52)

* checkpoint: TP-014 fix R006 revisions — explicit key mapping preserves record keys in YAML→camelCase and camelCase→snake_case adapters, resolveConfigRoot uses per-file precedence

* checkpoint: TP-014 Step 2 R006 revisions complete - all 3 issues fixed

* hydrate: expand Step 3 checkboxes per R007 review

* test(TP-014): add project-config-loader tests — precedence/error matrix (50 tests passing)

* checkpoint: TP-014 workspace root resolution tests verified

* checkpoint: TP-014 key-preservation and adapter regression tests verified

* checkpoint: TP-014 defaults non-mutation and backward-compat wrappers verified

* checkpoint: TP-014 Step 3 complete — all 434 tests passing (16 files)

* hydrate: add R008 revision items to Step 3

* test(TP-014): fix test 4.5 to exercise loadProjectConfig throw + default fallback per R008

* test(TP-014): fix test 4.5 to actually call task-runner loadConfig with malformed JSON

* checkpoint: TP-014 Step 3 R008 revisions complete — all 434 tests passing

* test(TP-014): clean up test 4.5 to use static import of loadConfig instead of require()

* hydrate: expand Step 4 checkboxes per R009 review

* docs(TP-014): add JSON config section to task-runner.yaml.md reference

* docs(TP-014): add JSON config section to task-orchestrator.yaml.md reference

* checkpoint: TP-014 install.md checked - no update needed, YAML scaffolding references still correct

* checkpoint: TP-014 task artifacts (.DONE, STATUS.md)

* feat(TP-014): complete Step 4 - documentation & delivery, .DONE created

* hydrate: TP-017 expand Step 0 checkboxes per R001 review

* hydrate: TP-015 expand Step 0 checkboxes per R001 review

* checkpoint: TP-017 preflight path convention confirmed with PI_CODING_AGENT_DIR override and cross-platform resolution

* checkpoint: TP-015 read current cmdInit() implementation

* checkpoint: TP-015 read spec auto-detection and gitignore sections

* checkpoint: TP-015 verify spec reachability (found in main repo .pi/local/docs/)

* checkpoint: TP-015 verify TP-014 config loader/schema contract

* checkpoint: TP-015 record current cmdInit() behavior to preserve

* checkpoint: TP-015 identify downstream validation (no init-specific tests exist)

* checkpoint: TP-015 Step 0 Preflight complete

* checkpoint: TP-015 Step 0 preflight complete - all items verified

* hydrate: TP-017 expand Step 1 checkboxes with R002 review feedback

* checkpoint: TP-017 preferences schema, allowlist, and types defined in preferences.ts

* checkpoint: TP-017 loadUserPreferences and resolveUserPreferencesPath implemented

* hydrate: TP-015 add R002 revision items to Step 0

* checkpoint: TP-015 revert TP-014 file changes from TP-015 commits (R002 fix)

* checkpoint: TP-015 fix malformed STATUS.md tables (R002 revision)

* checkpoint: TP-015 Step 0 complete, orchestrator advancing to Step 1

* checkpoint: TP-017 merge logic updated with mergeModel, dashboardPort, empty-string semantics

* checkpoint: TP-017 Step 1 complete — exports wired, all 434 tests pass

* checkpoint: TP-017 Step 1 verified complete — all checkboxes done, 434 tests pass

* hydrate: expand Step 1 checkboxes per R003 review

* hydrate: TP-017 expand Step 2 checkboxes per R003 review

* checkpoint: TP-015 detection logic implemented (isGitRepo, findSubdirectoryGitRepos, detectInitMode)

* checkpoint: TP-015 error path verified (no git repo, no subdirectory repos)

* checkpoint: TP-015 ambiguous case handled (prompt + preset bypass)

* checkpoint: TP-015 Scenario B already-initialized detection verified

* checkpoint: TP-017 tests for path resolution, loading edge cases, unknown-key dropping

* checkpoint: TP-017 Layer 2 guardrails tests confirmed

* checkpoint: TP-017 merge integration tests confirmed (JSON + YAML backed, e2e)

* checkpoint: TP-017 Step 2 complete — full test suite passes (17 files, 461 tests)

* checkpoint: TP-015 all mode detection branches validated (repo, workspace, ambiguous, error)

* checkpoint: TP-015 Step 1 Mode Auto-Detection complete

* hydrate: TP-017 expand Step 3 checkboxes per R004 review

* checkpoint: TP-017 task artifacts (.DONE, STATUS.md)

* checkpoint: TP-017 verified completion criteria

* checkpoint: TP-017 confirmed no docs need updating

* checkpoint: TP-017 .DONE created

* feat(TP-017): user preferences layer complete

* hydrate: TP-015 add R004 revision items to Step 1

* checkpoint: TP-017 Step 3 complete — all items verified

* checkpoint: TP-015 fix findSubdirectoryGitRepos to use isGitRepoRoot

* checkpoint: TP-015 fix existingConfigPath mismatch for ambiguous→workspace resolution

* checkpoint: TP-015 Step 1 complete — all R004 revision items addressed

* hydrate: expand Step 2 checkboxes based on R005 review

* checkpoint: TP-015 define gitignore constants and reusable helpers

* checkpoint: TP-015 ensureGitignoreEntries and detectAndOfferUntrackArtifacts helpers implemented

* checkpoint: TP-015 integrate gitignore enforcement into cmdInit repo-mode flow

* checkpoint: TP-015 tracked-artifact detection and git rm --cached offer implemented

* checkpoint: TP-015 Step 2 complete — gitignore enforcement with dry-run output

* checkpoint: TP-015 Step 2 verified complete — all gitignore enforcement items done

* hydrate: TP-015 add R006 revision items to Step 2

* hydrate: TP-015 add R006 revision items to Step 2

* checkpoint: TP-015 fix patternToRegex directory prefix matching and switch to execFileSync

* checkpoint: TP-015 remove dead buildGitignoreBlock function

* checkpoint: TP-015 add gitignore pattern matching tests (18 tests), Step 2 R006 revisions complete

* feat(TP-015): R006 extract gitignore patterns to testable module with 26 tests

* hydrate: TP-015 expand Step 3 checkboxes based on R007 review

* checkpoint: TP-015 implement detectSpawnMode() reusable helper

* checkpoint: TP-015 wire spawn_mode into generateOrchestratorYaml via vars

* checkpoint: TP-015 tmux guidance message with preset/runner-only/dry-run handling

* checkpoint: TP-015 Step 3 verified and complete — tmux/spawn mode detection

* checkpoint: TP-015 Step 3 verification complete — all tmux detection behaviors verified

* hydrate: expand Step 4 checkboxes based on R009 review

* checkpoint: TP-015 config repo selection prompt and workspace vars gathering verified

* checkpoint: TP-015 .taskplane/ scaffolding in config repo verified

* checkpoint: TP-015 gitignore enforcement in config repo verified

* checkpoint: TP-015 pointer file creation verified

* checkpoint: TP-015 dry-run/preset/force compatibility for workspace mode verified

* checkpoint: TP-015 Step 4 complete — workspace mode init (Scenario C)

* hydrate: add R010 revision items to Step 4

* checkpoint: TP-015 R010 fix workspace gitignore prefix and tracked-artifact scanning

* checkpoint: TP-015 R010 include .gitignore in workspace auto-commit staging

* checkpoint: TP-015 R010 fix overwrite confirmation skipIfExists + execFileSync for git ls-files

* hydrate: expand Step 5 checkboxes for Scenario D

* feat(TP-015): implement Scenario D workspace join — pointer-only early return

* checkpoint: TP-015 pointer idempotency implemented

* checkpoint: TP-015 user confirmation messaging implemented

* checkpoint: TP-015 Step 5 complete — Scenario D workspace join verified

* hydrate: TP-015 add R012 revision items to Step 5

* checkpoint: TP-015 R012 fix --force bypassing Scenario D control flow

* checkpoint: TP-015 R012 wrap pointer JSON.parse in try/catch, Step 5 complete

* hydrate: expand Step 6 checkboxes per R013 review

* checkpoint: TP-015 baseline validation gates pass (478 tests, help, doctor)

* checkpoint: TP-015 Scenario A dry-run verified (repo mode, all presets)

* checkpoint: TP-015 all three presets verified (minimal, full, runner-only)

* checkpoint: TP-015 YAML output verified alongside JSON (both repo and workspace modes)

* feat(TP-015): add init-mode-detection tests (34 tests) and fix Windows 8.3 path bug in isGitRepoRoot

* checkpoint: TP-015 Step 6 complete — all testing & verification done

* hydrate: TP-015 add R014 revision items to Step 6

* checkpoint: TP-015 fix mirrored isGitRepoRoot() in test to match production realpathSync.native normalization, add regression test 1.8

* checkpoint: TP-015 full vitest suite passes (19 files, 513 tests) after R014 fixes

* checkpoint: TP-015 Step 6 complete, all R014 revision items addressed

* hydrate: expand Step 7 checkboxes per R015 review

* docs(TP-015): update install tutorial for init-v2 flow

* docs(TP-015): update commands.md init reference for mode detection and new behaviors

* docs(TP-015): update README quickstart with mode detection and gitignore note

* checkpoint: TP-015 final verification — 513 tests pass, CLI help/doctor OK, all commits use TP-015 prefix

* checkpoint: TP-015 task artifacts (.DONE, STATUS.md)

* feat(TP-015): task complete — .DONE created, all steps finished

* hydrate: TP-018 expand Step 0 checkboxes per R001 review

* checkpoint: TP-018 read pi ctx.ui API capabilities

* checkpoint: TP-018 read config schema from TP-014

* checkpoint: TP-018 reviewed Layer 2 allowlist and preferences boundary

* hydrate: TP-016 expand Step 0 checkboxes per R001 review

* checkpoint: TP-018 reviewed config root/path semantics in workspace mode

* checkpoint: TP-018 reviewed config root/path semantics in workspace mode

* checkpoint: TP-018 reviewed JSON-first + YAML fallback write-back behavior

* checkpoint: TP-018 reviewed JSON-first + YAML fallback for write-back alignment

* checkpoint: TP-016 inventoried all config/agent/state resolution call sites

* checkpoint: TP-016 resolver inventory table complete

* checkpoint: TP-018 preflight findings - field/source inventory with UI control types and layer mapping

* checkpoint: TP-016 documented mode matrix for pointer resolution

* checkpoint: TP-016 mode matrix documented

* checkpoint: TP-016 Step 0 preflight complete — resolution map, mode matrix, env-var precedence documented

* checkpoint: TP-018 reviewed JSON-first + YAML fallback behavior (already done)

* checkpoint: TP-016 env-var precedence documented, Step 0 complete

* hydrate: TP-018 add R002 revision items to Step 0

* checkpoint: TP-016 R002 revisions - unified pointer failure semantics, fixed STATUS.md formatting

* checkpoint: TP-018 R002 fixes — added missing fields (worker.spawnMode, context.maxWorkerMinutes, preWarm.autoDetect), CONTEXT.md review, schema coverage checklist

* checkpoint: TP-018 Step 0 R002 revisions complete — field inventory updated with missing fields and schema coverage checklist

* checkpoint: TP-016 R002 revision - unified pointer failure semantics, fixed function names, deduped log, merged mode matrices

* hydrate: TP-018 expand Step 1 checkboxes per R003 review

* hydrate: TP-016 expand Step 1 checkboxes per R003 review

* checkpoint: TP-018 section taxonomy, ordering, field-to-section assignment, and UI controls documented

* checkpoint: TP-018 source-indicator behavior rules documented for all layer combinations

* checkpoint: TP-018 schema coverage validated, Step 1 complete

* checkpoint: TP-016 resolvePointer() function implemented in workspace.ts

* checkpoint: TP-016 return contract verified - config/agent follow pointer, state stays at workspace .pi/

* checkpoint: TP-016 Step 1 complete - PointerResolution type and resolvePointer() implemented

* hydrate: add R003 revision items to Step 1

* checkpoint: TP-016 Step 1 confirmed complete on re-entry

* checkpoint: TP-018 Step 1 complete - R003 revisions applied (worker.spawnMode L1 fix, field contract table, non-editable surfacing)

* hydrate: TP-018 add R004 revision items to Step 1

* checkpoint: TP-018 R004 fix - consolidated canonical navigation map (12 sections)

* checkpoint: TP-018 R004 fix - aligned source-badge rules with type-specific merge semantics

* hydrate: TP-016 add R004 revision items to Step 1

* checkpoint: TP-016 fix config_path containment for Windows absolute paths and add defense-in-depth relative() check

* checkpoint: TP-018 R004 fix - canonical source rule matrix, spawnMode enum disambiguation

* hydrate: TP-018 expand Step 2 checkboxes with R005 items

* checkpoint: TP-016 add resolvePointer test suite (6.x) with 18 tests covering all failure modes + valid resolution

* hydrate: TP-016 expand Step 2 checkboxes per R005 review

* checkpoint: TP-018 create settings-tui.ts with section navigation, field display, source badges, and validation

* checkpoint: TP-016 thread pointer into resolveConfigRoot and loadProjectConfig

* checkpoint: TP-016 thread pointer into loadAgentDef for workspace agent resolution

* feat(TP-018): register /settings command with section navigation TUI

* checkpoint: TP-016 verified repo mode parity — all 576 tests pass

* checkpoint: TP-018 Step 2 complete - /settings command with TUI, source badges, validation

* checkpoint: TP-018 Step 2 complete - settings-tui.ts, /settings command, all tests pass (540/540)

* checkpoint: TP-016 Step 2 tests for pointer-threaded config resolution (5.x series in project-config-loader.test.ts)

* checkpoint: TP-016 Step 2 complete

* checkpoint: TP-016 Step 2 verified complete — all 593 tests passing

* hydrate: TP-018 add R006 revision items to Step 2

* checkpoint: TP-018 R006 fix #1 - use workspaceRoot for /settings config reads

* hydrate: TP-016 add R006 revision items to Step 2

* hydrate: TP-018 add R006 revision items for Step 2

* checkpoint: TP-018 R006 fix #2 - dynamic Advanced section discovery from schema

* checkpoint: TP-018 R006 fixes verified - all 540 tests pass, Step 2 complete

* checkpoint: TP-016 fix dual-layout config file resolution (standard .pi/ and flat pointer layout)

* checkpoint: TP-016 surface pointer warnings to stderr (once per session)

* checkpoint: TP-018 R006 fixes #3 (source detection type guards) and #4 (number validation > 0), dynamic JSON-only footer

* hydrate: TP-018 expand Step 3 checkboxes per R007 review

* checkpoint: TP-016 consolidate test suites, add flat-layout pointer tests, all 591 tests green

* checkpoint: TP-018 R006 fix #5 — add 58 unit tests for settings-tui pure functions

* checkpoint: TP-018 implement write-back destination matrix (L1/L2/L1+L2)

* checkpoint: TP-018 L1 writes to resolveConfigRoot JSON with atomic write pattern

* checkpoint: TP-018 L2 writes to resolveUserPreferencesPath with mkdir+atomic

* checkpoint: TP-016 add 6.x agent resolution + warning surfacing tests for Step 2 R006 coverage

* hydrate: expand Step 3 checkboxes with R007 revision items

* checkpoint: TP-018 confirmation gate already implemented in showSectionSettingsLoop

* feat(TP-018): R007 fix — YAML-only bootstrap writes full L1 snapshot via loadLayer1Config

* hydrate: TP-016 expand Step 3 checkboxes based on R007 review

* checkpoint: TP-018 Step 3 complete — all write-back items done, 598 tests pass

* feat(TP-018): fix ctx.ui.select/confirm API signatures and deep-clone safety

* checkpoint: TP-016 buildExecutionContext already resolves pointer and passes configRoot to loaders

* checkpoint: TP-016 spawnMergeAgent already uses pointer agentRoot, state files at stateRoot

* checkpoint: TP-016 pointer warning already logged at orchestrator startup via buildExecutionContext

* checkpoint: TP-016 verified state/sidecar paths invariant - never follow pointer

* hydrate: TP-018 add R008 revision items to Step 3

* checkpoint: TP-018 R008 fix #1 — malformed JSON throws explicit error (already implemented), fix stale module header

* checkpoint: TP-018 R008 fix #2 — unlinkSync already in place for temp-file cleanup

* checkpoint: TP-018 R008 fix #3 — add 30 unit tests for write-back helpers (coerceValueForWrite, writeProjectConfigField, writeUserPreference)

* checkpoint: TP-016 fix and deduplicate orchestrator pointer tests, all 597 tests passing

* hydrate: expand Step 4 checkboxes per R009 review

* checkpoint: TP-016 Step 3 complete - orchestrator pointer threading verified with 11 new tests

* checkpoint: TP-018 add YAML source-badge tests (16.x series — JSON-only, YAML-only, JSON+YAML precedence)

* checkpoint: TP-018 add zero-mutation path tests (17.x series — cancel/decline confirmation)

* checkpoint: TP-018 add Advanced section discoverability tests (18.x series)

* hydrate: TP-016 expand Step 4 checkboxes based on R009 review

* checkpoint: TP-018 remove duplicate test sections (16-18.x) from prior iteration

* checkpoint: TP-016 dashboard state paths verified as pointer-invariant, added clarifying comments

* checkpoint: TP-018 Step 4 complete — 682 tests pass (54 new: YAML source detection, zero-mutation paths, Advanced discoverability)

* checkpoint: TP-016 verified STATUS.md/task-folder resolution is pointer-independent in dashboard

* checkpoint: TP-016 Step 4 complete — dashboard pointer threading verified

* hydrate: TP-016 add R008 revision items to Step 3

* hydrate: add R010 revision items to Step 4

* feat(TP-016): thread workspaceRoot into resumeOrchBatch for consistent stateRoot

* feat(TP-018): extract resolveWriteAction decision logic, replace tautological tests with real decision-tree tests

* checkpoint: TP-018 Step 4 complete - fix test count, mark R010 revisions done

* feat(TP-016): replace source-text test assertions with behavioral state-root consistency tests

* hydrate: expand Step 5 checkboxes for TP-016

* hydrate: TP-018 expand Step 5 checkboxes per R011 review

* checkpoint: TP-016 verified test 7.11 is behavioral, Step 3 R008 already closed

* checkpoint: TP-018 add /settings to commands reference

* checkpoint: TP-016 verified pointer failure/parity matrix test coverage

* checkpoint: TP-018 add /settings to README command table

* checkpoint: TP-018 add /settings mention to install tutorial

* checkpoint: TP-016 verified integration split invariant test coverage

* checkpoint: TP-018 normalize STATUS.md top-level status field

* checkpoint: TP-016 Step 5 complete — all 609 tests passing

* checkpoint: TP-018 task artifacts (.DONE, STATUS.md)

* feat(TP-018): complete /settings TUI command — docs, README, .DONE

* hydrate: TP-018 add R012 revision items to Step 5

* hydrate: TP-016 add R012 revision items to Step 5

* hydrate: TP-016 add R012 revision items to Step 5

* checkpoint: TP-018 fix /settings common responses to match actual error paths

* checkpoint: TP-018 update commands.md intro and move Configuration Commands above CLI

* checkpoint: TP-018 add Example block to /settings command reference

* docs(TP-018): refine /settings Advanced description and Common responses per R012 review

* checkpoint: TP-016 R012 replace signature tests 7.11/7.12 with behavioral state-root tests

* checkpoint: TP-016 R012 full test suite passing (609 tests)

* checkpoint: TP-016 R012 — add VERIFICATION.md with full test coverage matrix for Step 5

* hydrate: TP-016 expand Step 6 checkboxes per R013 review

* checkpoint: TP-016 architecture doc impact check - no update needed

* checkpoint: TP-016 final acceptance reconciliation - all criteria met

* checkpoint: TP-016 task artifacts (.DONE, STATUS.md)

* checkpoint: TP-016 .DONE created - task complete

* feat: configurable merge agent timeout, default 10 min (was 5 min)

- OrchestratorConfig.merge.timeout_minutes field (default: 10)
- waitForMergeResult() uses config value instead of hardcoded constant
- Exposed in /settings TUI under Merge section
- Updated task-orchestrator.yaml template

Fixes merge agent timeouts on large batches.

* hydrate: TP-019 expand Step 0 checkboxes per R001 review

* checkpoint: TP-019 read cmdDoctor, spec, and reusable helpers

* checkpoint: TP-019 preflight complete — baseline, helpers, and spec criteria documented

* checkpoint: TP-019 gitignore entry validation in cmdDoctor

* checkpoint: TP-019 tracked artifact detection with remediation verified complete

* checkpoint: TP-019 workspace pointer chain validation (pointer → config repo → .taskplane/)

* checkpoint: TP-019 default branch check for .taskplane/ config presence

* checkpoint: TP-019 legacy YAML config migration warning in doctor

* feat: change checkpoint discipline from per-checkbox to per-step commits

Workers now commit at step boundaries instead of after every checkbox.
STATUS.md is still updated after each checkbox (that's the worker's memory),
but git commits only happen when a step is complete.

Exceptions that still get immediate commits:
- Hydration (STATUS.md expansion before implementing)
- REVISE response (adding reviewer revision items)
- Wrap-up signal (stopping mid-step)

This reduces git overhead by ~70-80% per task without losing any recovery
capability — STATUS.md on disk is the resumability mechanism, not git.

Updated:
- templates/agents/task-worker.md (base worker prompt)
- skills/create-taskplane-task/references/prompt-template.md (PROMPT template)
- skills/create-taskplane-task/SKILL.md (skill docs)

* feat(TP-019): complete Step 4 — tmux vs spawn_mode mismatch check in doctor

Doctor now reads project config spawn_mode and warns if set to 'tmux'
but tmux is not installed, with platform-specific install guidance.

Step 4 completed manually (worker stalled on API errors after 3 iterations).
Steps 5-6 verified and closed.

* fix(settings-onboarding): align workspace init, /settings pointer resolution, and doctor JSON checks

* docs: update CHANGELOG.md through v0.3.1 and strengthen release checklist in AGENTS.md

CHANGELOG was stale since v0.1.14 — added entries for v0.1.15 through
v0.3.1 plus unreleased changes. AGENTS.md release sequence now has
mandatory CHANGELOG step with formatting guidance and pre-release checklist.
HenryLach added a commit that referenced this pull request May 7, 2026
…+ multi-repo reconstruction guard)

Two defensive fixes from sage's post-merge code review of the TP-187/189
batch. Both classified 'important' (not blockers for the Taskplane repo's
own self-orchestration, but real correctness improvements for the broader
recovery flow).

1. **batchId gating on lane-terminated / lane-respawned IPC** (sage #3,
   extension.ts).

   The supervisor's terminated-lane filter previously trusted any
   incoming lane-terminated/lane-respawned IPC without checking which
   batch it belonged to. A stale message from a prior batch (engine-worker
   not yet shut down, or out-of-order delivery on the IPC channel) could
   taint the live batch's suppression map — either suppressing legitimate
   alerts (false positive) or unmuting alerts that should be filtered
   (false negative).

   Added `ipcBatchIdMatches(incomingBatchId)` helper that gates on the
   supervisor's tracked `batchState.batchId`. Mismatches are logged to
   stderr (operator-visible diagnostic) and the IPC is dropped.
   Back-compat: if either side has no batchId yet (first batch, or
   pre-update IPC sender), accept the message — preserves existing
   behavior.

   Applied to BOTH supervisor handler registration sites (execute path
   and resume path).

2. **Refuse reconstruction for multi-repo batches** (sage's blocker
   reframed, persistence.ts).

   The TP-187 #539 reconstruction loop hardcodes `segments: []` because
   per-segment topology lives only in the deleted batch-state.json. For
   single-repo batches (the common case, including Taskplane's own
   self-orchestration), `segments` is always empty so the hardcode is
   correct. For multi-repo batches with segment expansion, hardcoding
   `segments: []` would silently lose the expansion state and could
   re-execute already-done segments OR fail dependency checks for
   cross-repo waves.

   Added a fail-loud guard that detects the multi-repo case via worker
   manifest repoIds: if >1 distinct repoId is present, append a clear
   failure to the reconstruction failure list and continue to the next
   candidate (or surface the explicit refusal in the aggregated error
   message). Operators get a concrete pointer ('Restore
   .pi/batch-state.json from backup or start a new batch') instead of
   silently-broken state.

3. Other sage findings (drain race, suppression ordering for no-progress
   path, exit-reason enforcement, candidate selection, behavioral test
   gaps) are documented in the PR body for follow-up but not folded into
   this change. Rationale: they're either deferral-worthy (test style
   improvements, exit-reason enforcement that requires server-side
   re-prompt machinery) or low-impact-for-Taskplane-itself.

Tests: 3579 passing / 1 skipped / 0 failed (no regressions).
No new tests added in this commit — the in-batch suite already covers
both code paths via behavioral tests; these are surgical defensive
guards layered on top.
HenryLach added a commit that referenced this pull request Sep 7, 2026
…able exit-intercept window; resume forwards worker env

penster feedback #3 (batches 20260906T194514 / 20260906T221045):

Item 4 — an UNCOMMITTED STATUS.md edit flipping a REVISE'd step to
✅ Complete reappeared on every relaunch and was never authored by the
worker. Cause: the lane-runner's post-iteration heuristic marks any step
whose checkboxes are all checked as Complete regardless of its review
verdict. The worker correctly reverted it per the recovery recipe; the
runtime flipped it back; the flip also trips review_step's complete-step
guard. Step completion is now review-gated with the same scanner as the
finalize gate: a step whose latest review is REVISE/RETHINK is not marked
Complete ('Step completion withheld' in STATUS). Remediation eligibility is
checkbox-based and unaffected; a later APPROVE lets the heuristic run.

Item 5 — the 60s exit-intercept reply window is too short for a supervisor
inside a long tool call (a blocking --wait). New
taskRunner.worker.exit_intercept_timeout_sec (default 60, clamped 15..1800)
threaded config-loader → buildWorkerEnv → lane-runner; agent-host's
per-intercept safety race is window + 60s (exitInterceptSafetyMs).

Sage-found gap while wiring it: resume's reconnect and re-execute paths
never forwarded buildWorkerEnv(runnerConfig.worker) — worker model/thinking/
tools (and now this window) were dropped on retry+resume. Forwarded at both
sites (buildWorkerEnv was an unused import in resume.ts).

Tests: behavioural (all boxes checked, step In Progress, latest review
REVISE → step block stays In Progress; 'Step completion withheld'),
buildWorkerEnv clamping, wiring incl. resume forwarding. Docs:
task-runner.yaml.md, CHANGELOG. Suite 3957 pass / 0 fail.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Dependency updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant