docs: integrate Bash tool bridge fix

This commit is contained in:
inman
2026-09-02 12:11:04 +08:00
parent 55bf80e88e
commit 774beee508
5 changed files with 88 additions and 86 deletions

View File

@@ -1,84 +0,0 @@
# Task: Fix Bash tool execution bridge
## Identity
- Task ID: 20260902-fix-bash-tool-bridge-9c4e7a12
- Mode: Feature
- Branch: codex/20260902-fix-bash-tool-bridge-9c4e7a12-fix-bash-tool-bridge
- Worktree: /Users/inmanx/Documents/makelore-fix-bash-tool-bridge-9c4e7a12
- Base commit: 6073bd6f4ce269b067b13e1eed0371b38dc2c054
- Owner: codex
- Status: Completed
## Scope
- Reproduce and fix the Makelore-managed Pi tool-batch deadlock that delays
parallel Bash calls until the five-minute HTTP idle timeout.
- Preserve project-scoped write-lease isolation while making Bash/edit/write
tools execute sequentially inside one assistant tool batch.
- Add real Agent Server coverage for two Bash calls, including a command-level
timeout, and verify the same resource path used by packaged builds.
## Intent And Constraints
- Keep Pi `0.84.2` as the sole runtime and keep Renderer isolated from Pi wire.
- Do not replay an accepted mutation or weaken the cross-Conversation/project
write lease; only remove the same-batch pre-execution self-deadlock.
- Retain parallel execution for batches containing only read-only tools where
Pi supports it.
- Treat packaging as a verification path, not as a substitute for the source
correction.
## Outcome
- Reproduced the stall with the real Pi Agent Server process. Pi `0.84.2`
prepares every tool in a parallel batch before it executes any of them, while
Makelore acquires the project write lease in `tool_call` and releases it in
`tool_result`. Two Bash calls in one assistant response therefore self-deadlocked:
the first held the lease without starting and the second waited for that lease.
- Confirmed that the apparent five-minute Bash hang came from the Agent Server
HTTP idle timeout around the managed-extension request, not from a missing
shell dependency or the Bash command timeout. Packaging alone would retain the
same behavior because it ships this Agent Server resource and extension bundle.
- Marked built-in `bash`, `edit`, and `write` tools as sequential whenever an
Agent thread is rebound. Marked dynamically declared product tools that require
the same project write lease as sequential in the generated Makelore extension.
Read-only tool batches keep Pi's parallel behavior.
- Advanced the managed extension artifact from v4 to v5 and synchronized the
release proof and worker-opening expectations.
- Added a real-process regression that emits two Bash calls in one assistant
response. The first exercises its explicit command timeout and the second must
still run successfully without waiting for the HTTP idle timeout.
## Verification
- Pre-fix regression: the new real-process test failed with the second Bash result
equal to `fetch failed`, reproducing the production failure under a 250 ms HTTP
idle timeout.
- Focused regression: `pnpm exec vitest run
tests/unit/pi-agent-server-process-real.test.ts
tests/unit/pi-extension-bundle.test.ts
tests/unit/pi-managed-worker-opener.test.ts --maxWorkers=2` passed 3 files and
9 tests.
- `pnpm run typecheck` passed.
- `pnpm test` passed 213 files and 1,733 tests; 3 tests were skipped.
- `pnpm run lint:check` passed with 0 errors and 5 existing warnings in
`src/pages/Home/index.tsx` and `src/pages/Makelore/index.tsx`.
- `pnpm run build:vite` passed for Renderer, Electron Main, Preload, and the
release utility worker, proving the fixed Agent Server resource is included by
the production build path.
- `git diff --check` passed.
## Follow-ups
- Integrate this feature branch into local `main`, update the canonical current
state/README, restart Makelore, and use the real-process regression as the
non-destructive smoke check instead of replaying the user's accepted turn.
## Promotion Candidates
- Promote the write-lease batch rule to README/current state: write-leased Pi
tools are serialized within one assistant batch, while read-only tools may
remain parallel.
- Record the full-suite, production-build, and real-process regression results in
the evidence index during integration.

View File

@@ -0,0 +1,70 @@
# Task: Integrate Bash tool bridge fix
## Identity
- Task ID: 20260902-integrate-bash-tool-bridge-e81a5c6d
- Mode: Integration
- Branch: main
- Worktree: /Users/inmanx/Documents/makelore
- Base commit: 6073bd6f4ce269b067b13e1eed0371b38dc2c054
- Owner: codex
- Status: Completed
## Scope
- Merge completed feature task `20260902-fix-bash-tool-bridge-9c4e7a12`
(`49112b6`) into local `main`.
- Reconcile the write-leased Pi tool-batch rule with README, canonical current
state, and the evidence index.
- Re-run focused real-process coverage, typecheck, and the production Vite build
on the integrated tree, then restart the local Makelore platform.
## Intent And Constraints
- Preserve the feature task's bounded semantics: only tools that acquire the
project write lease are serialized; read-only Pi tool batches remain parallel.
- Do not replay or mutate the user's accepted, currently stuck Conversation as a
smoke test. Use the disposable real-process regression instead.
- Merge only to local `main`; do not push, package, deploy, or alter unrelated
user changes.
- Treat production build success as proof that packaging consumes the fixed
resources, not as permission to claim an installer artifact was produced.
## Outcome
- Merged source commit `49112b6` into local `main` as merge commit `55bf80e`.
- Integrated the bounded Pi tool-batch correction: built-in `bash`, `edit`, and
`write`, plus dynamic product tools that acquire the project write lease, are
sequential within one assistant response. Read-only batches retain parallel
execution.
- Updated README, canonical current state, and the evidence index with the exact
failure mechanism and verification boundary. A production build was verified;
no installer was created, pushed, deployed, or published.
- Stopped the old development process cleanly so its already-open Agent Server
could not keep serving the pre-fix resource. The platform restart is the final
operational handoff after the integration commit.
## Verification
- Source branch: the pre-fix real-process regression reproduced the second Bash
result as `fetch failed` under a 250 ms managed-extension HTTP idle timeout.
- Source branch: 3 focused files / 9 tests, 213 full files / 1,733 tests with 3
skipped, typecheck, lint with 0 errors / 5 existing warnings, and the full
Renderer/Main/Preload/utility Vite production build passed.
- Integrated `main`: the 3 focused Pi process/extension/worker files passed all
9 tests, `pnpm run typecheck` passed, and `pnpm run build:vite` passed for all
four production targets.
- The regression verifies that a timed-out first Bash does not block the second
Bash, the second returns `SECOND_OK`, and neither result contains `fetch failed`.
## Follow-ups
- A signed installer is unnecessary to correct this source-level deadlock. Build
an installer only when release validation or distribution is requested; the
normal packaged resource path already consumes the corrected Agent Server and
v5 extension bundle.
## Promotion Candidates
- None; the relevant runtime contract and evidence were promoted during this
integration task.