Update completed dotfiles artifacts

This commit is contained in:
2026-08-01 20:48:48 -04:00
parent 7002d4680f
commit 99e7626e5e
12 changed files with 177 additions and 83 deletions

View File

@@ -77,10 +77,10 @@
"nodeSizeMultiplier": 2.51132136678201,
"lineSizeMultiplier": 2.03949502595156,
"collapse-forces": false,
"centerStrength": 0,
"centerStrength": 0.350183823529412,
"repelStrength": 20,
"linkStrength": 1,
"linkDistance": 500,
"scale": 0.07174458095508464,
"scale": 0.12993773244100013,
"close": false
}

View File

@@ -1,5 +1,5 @@
---
status: open
status: resolved
tags:
- wayfinder/map
---
@@ -20,15 +20,11 @@ Prioritize Pi-native behavior first: runtime model, context modes, status UI, li
## Frontier
- [[047-pi-subagents-lifecycle-controls-task]]
- [[048-pi-subagents-config-agents-tool-profiles-task]]
- [[049-pi-subagents-batch-concurrency-task]]
- [[050-pi-subagents-fork-context-task]]
- [[051-pi-subagents-status-ui-task]]
None.
## Blocked
- [[052-pi-subagents-final-deployment-verification-task]]
None.
## Decisions so far
@@ -75,9 +71,11 @@ The spec should require only stable runtime paths such as `~/.pi/agent/subagents
The implementation-ready specification is complete in [[027-pi-subagents-implementation-spec-task]].
The minimal subagent extension tracer bullet is complete in [[046-pi-subagents-minimal-tracer-bullet-task]].
The subagent lifecycle controls slice is complete in [[047-pi-subagents-lifecycle-controls-task]].
The config, named agents, and tool profiles slice is complete in [[048-pi-subagents-config-agents-tool-profiles-task]].
The batch spawning, fork context, and status UI slices are complete in [[049-pi-subagents-batch-concurrency-task]], [[050-pi-subagents-fork-context-task]], and [[051-pi-subagents-status-ui-task]].
The deployed extension verification is complete in [[052-pi-subagents-final-deployment-verification-task]].
## Out of scope
Implementing subagent support is outside this map.
The implementation-ready extension specification is now in scope.
Herdr-specific adapter implementation is outside the initial Pi-extension focus and can be revisited after the Pi-native subagent behavior is designed.
Herdr-specific adapter implementation is outside the initial Pi-extension focus and can be revisited after the Pi-native subagent behavior is deployed.

View File

@@ -1,7 +1,8 @@
---
status: claimed
status: resolved
claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8"
claimed-at: "2026-08-01T14:05:41-04:00"
completed-at: "2026-08-01T14:13:54-04:00"
parent: "[[027-pi-subagents-implementation-spec-task]]"
blocked-by:
- "[[046-pi-subagents-minimal-tracer-bullet-task]]"
@@ -23,13 +24,19 @@ Cancellation must be idempotent and should cooperate with Pi RPC before escalati
## Acceptance criteria
- [ ] Cancelling a running subagent is idempotent and reaches `cancelled`.
- [ ] Startup and runtime timeout paths reach `timed_out`.
- [ ] Child process exit before semantic settlement reaches a failure state with diagnostics.
- [ ] Parent session shutdown cancels supervised children.
- [ ] Lifecycle tests cover abort, process close, timeout, and repeated cancel calls.
- [x] Cancelling a running subagent is idempotent and reaches `cancelled`.
- [x] Startup and runtime timeout paths reach `timed_out`.
- [x] Child process exit before semantic settlement reaches a failure state with diagnostics.
- [x] Parent session shutdown cancels supervised children.
- [x] Lifecycle tests cover abort, process close, timeout, and repeated cancel calls.
## Implementation Notes
Use `agent_settled` as semantic completion.
Use process close for resource cleanup after settlement.
Resolved in branch `pi-subagents-tracer-bullet`, commit `4e6baed`.
Cancellation is idempotent, sends RPC `abort` cooperatively with a bounded grace period, then terminates the child process group on Unix.
The supervisor now tracks startup and runtime timers, clears timers on terminal states, marks shutdown cancellation as `cancelled`, and ignores later lifecycle events once a terminal state is reached.
Lifecycle unit tests cover repeated cancel, startup timeout, runtime timeout, process failure, shutdown cleanup, and cancel-after-completion.
Verification: `nix shell nixpkgs#tsx -c tsx --test modules/agents/pi/extensions/subagents/supervisor.test.ts`, managed extension derivation build, Pi RPC command smoke, live repeated cancel smoke, and `nix flake check`.

View File

@@ -1,5 +1,8 @@
---
status: open
status: resolved
claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8"
claimed-at: "2026-08-01T14:15:15-04:00"
completed-at: "2026-08-01T14:28:04-04:00"
parent: "[[027-pi-subagents-implementation-spec-task]]"
blocked-by:
- "[[046-pi-subagents-minimal-tracer-bullet-task]]"
@@ -21,14 +24,19 @@ Tool profiles should include the reserved built-ins and user-defined custom prof
## Acceptance criteria
- [ ] Missing config files and missing agent directories are accepted as normal.
- [ ] Global config and trusted project config merge in the specified order.
- [ ] Markdown agent definitions load from user and trusted project paths with correct precedence.
- [ ] Duplicate definitions in one tier and invalid frontmatter produce diagnostics without crashing startup.
- [ ] A named spawn resolves prompt, context, model, thinking, and tools from spawn overrides, frontmatter, config, and in-code defaults.
- [ ] Built-in tool profile names cannot be overridden.
- [x] Missing config files and missing agent directories are accepted as normal.
- [x] Global config and trusted project config merge in the specified order.
- [x] Markdown agent definitions load from user and trusted project paths with correct precedence.
- [x] Duplicate definitions in one tier and invalid frontmatter produce diagnostics without crashing startup.
- [x] A named spawn resolves prompt, context, model, thinking, and tools from spawn overrides, frontmatter, config, and in-code defaults.
- [x] Built-in tool profile names cannot be overridden.
## Implementation Notes
Do not write starter config files.
Do not define named agents inline in `subagents.json`.
Resolved in branch `pi-subagents-tracer-bullet`, commit `418d9c9`.
Added `subagents.json` config loading, trusted-project config merge, Markdown named-agent loading, diagnostics, built-in and custom tool profiles, and named spawn resolution.
Tool profiles are projected into child Pi with `--no-tools` or `--tools`; `full-tools` leaves Pi's normal tool surface intact.
Verification: config and lifecycle unit tests through `tsx`, managed extension derivation build, Pi RPC command smoke, live named-agent smoke with temporary config, and `nix flake check`.

View File

@@ -1,5 +1,8 @@
---
status: open
status: resolved
claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8"
claimed-at: "2026-08-01T14:36:01-04:00"
completed-at: "2026-08-01T14:44:11-04:00"
parent: "[[027-pi-subagents-implementation-spec-task]]"
blocked-by:
- "[[046-pi-subagents-minimal-tracer-bullet-task]]"
@@ -21,13 +24,17 @@ The supervisor should preserve accepted child records, report per-child spawn fa
## Acceptance criteria
- [ ] Batch spawn validates every entry with the same rules as single spawn.
- [ ] A batch request returns accepted child ids and initial metadata without waiting for completion.
- [ ] `subagent_list` shows active children and a bounded recent terminal history.
- [ ] `maxConcurrent` limits simultaneous running children while preserving queued records.
- [ ] Partial spawn failures are reported per requested child without losing accepted children.
- [x] Batch spawn validates every entry with the same rules as single spawn.
- [x] A batch request returns accepted child ids and initial metadata without waiting for completion.
- [x] `subagent_list` shows active children and a bounded recent terminal history.
- [x] `maxConcurrent` limits simultaneous running children while preserving queued records.
- [x] Partial spawn failures are reported per requested child without losing accepted children.
## Implementation Notes
All spawns remain non-blocking.
Do not add a wait-mode parameter in this slice.
Resolved in branch `pi-subagents-tracer-bullet`, commit `e7a700f`.
Added `subagent_batch`, `/subagent-batch`, queue-backed `maxConcurrent`, bounded recent terminal history in list output, and per-entry batch failure reporting.
Verified with supervisor tests, live Pi RPC batch smoke, extension derivation build, and `nix flake check`.

View File

@@ -1,5 +1,8 @@
---
status: open
status: resolved
claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8"
claimed-at: "2026-08-01T14:36:01-04:00"
completed-at: "2026-08-01T14:44:11-04:00"
parent: "[[027-pi-subagents-implementation-spec-task]]"
blocked-by:
- "[[046-pi-subagents-minimal-tracer-bullet-task]]"
@@ -22,13 +25,18 @@ Named agents that declare `allowedContexts` should reject disallowed spawn overr
## Acceptance criteria
- [ ] `fork` serializes the parent session header and active branch entries into a child-startable session.
- [ ] The forked worker receives the parent active-branch context plus the delegated request wrapper.
- [ ] `independent` workers still do not receive parent transcript context.
- [ ] `allowedContexts` rejects disallowed context overrides.
- [ ] Tests or manual checks distinguish forked and independent context visibility.
- [x] `fork` serializes the parent session header and active branch entries into a child-startable session.
- [x] The forked worker receives the parent active-branch context plus the delegated request wrapper.
- [x] `independent` workers still do not receive parent transcript context.
- [x] `allowedContexts` rejects disallowed context overrides.
- [x] Tests or manual checks distinguish forked and independent context visibility.
## Implementation Notes
Do not summarize, strip tool output, or compact before spawning.
Let child Pi handle normal compaction.
Resolved in branch `pi-subagents-tracer-bullet`, commit `e7a700f`.
Fork mode passes the parent session file to child Pi with `--fork` and uses a delegated fork-context wrapper; independent mode keeps its transcript-clean wrapper.
`allowedContexts` rejection is covered by spawn resolution.
Verified with live Pi RPC fork smoke where a forked child recovered parent marker `fork-visible-123`, plus tests and `nix flake check`.

View File

@@ -1,5 +1,8 @@
---
status: open
status: resolved
claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8"
claimed-at: "2026-08-01T14:36:01-04:00"
completed-at: "2026-08-01T14:44:11-04:00"
parent: "[[027-pi-subagents-implementation-spec-task]]"
blocked-by:
- "[[046-pi-subagents-minimal-tracer-bullet-task]]"
@@ -21,13 +24,18 @@ Disabling the bundled UI should not disable status records, status events, or to
## Acceptance criteria
- [ ] Spawn accepted, completed, failed, cancelled, and timed-out milestones are appended as durable entries.
- [ ] Milestone entries do not inject child transcripts into normal LLM context.
- [ ] The collapsed UI summary shows live counts.
- [ ] The expanded inspector shows child id, label, context, state, elapsed time, model, tools, last event, and result availability.
- [ ] Disabling `ui` hides bundled UI components but leaves list, status, result, and cancel tools working.
- [x] Spawn accepted, completed, failed, cancelled, and timed-out milestones are appended as durable entries.
- [x] Milestone entries do not inject child transcripts into normal LLM context.
- [x] The collapsed UI summary shows live counts.
- [x] The expanded inspector shows child id, label, context, state, elapsed time, model, tools, last event, and result availability.
- [x] Disabling `ui` hides bundled UI components but leaves list, status, result, and cancel tools working.
## Implementation Notes
Use the status data model as the source of truth.
Do not stream every child event into the parent transcript.
Resolved in branch `pi-subagents-tracer-bullet`, commit `e7a700f`.
Added durable `subagent_milestone` custom entries for accepted, completed, failed, cancelled, and timed-out states, a replaceable widget-based collapsed summary, and `/subagent-ui` expanded inspector toggle.
The widget is gated by config `ui.enabled`, while tools remain available regardless.
Verified milestone entries in live Pi RPC batch/fork smoke, command registration, tests, and `nix flake check`.

View File

@@ -1,6 +1,9 @@
---
status: open
parent: "[[027-pi-subagents-implementation-spec-task]]"
status: resolved
claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8"
claimed-at: "2026-08-01T14:46:24-04:00"
completed-at: "2026-08-01T14:49:31-04:00"
parent: "[[027-pi-subagents-implementation-spec-task]]"},{
blocked-by:
- "[[047-pi-subagents-lifecycle-controls-task]]"
- "[[048-pi-subagents-config-agents-tool-profiles-task]]"
@@ -25,13 +28,19 @@ Any intentionally deferred choices should be written down as follow-up scope.
## Acceptance criteria
- [ ] The managed Pi extensions source includes the subagent extension.
- [ ] `nix flake check` passes.
- [ ] Targeted `nix eval` confirms Pi is enabled and the managed extensions path is present.
- [ ] Manual Pi checks from the spec are recorded in the task notes.
- [ ] Any intentionally deferred implementation choices are documented as follow-up scope, not hidden TODOs.
- [x] The managed Pi extensions source includes the subagent extension.
- [x] `nix flake check` passes.
- [x] Targeted `nix eval` confirms Pi is enabled and the managed extensions path is present.
- [x] Manual Pi checks from the spec are recorded in the task notes.
- [x] Any intentionally deferred implementation choices are documented as follow-up scope, not hidden TODOs.
## Implementation Notes
This is the final integration slice.
Do not start it until the prerequisite behavior slices are complete.
Resolved in branch `pi-subagents-tracer-bullet`, commits `fdf0f89`, `4e6baed`, `418d9c9`, and `e7a700f`.
Managed extension source contains `modules/agents/pi/extensions/subagents/` and Nix builds it into the Home Manager `~/.pi/agent/extensions` source.
Verification run: `nix eval .#nixosConfigurations.neogaia.config.modules.agents.pi.enable`, `nix eval .#nixosConfigurations.neogaia.config.home-manager.users.alexion.home.file.'"/home/alexion/.pi/agent/extensions"'.source`, managed extension derivation build, `tsx` extension tests, and `nix flake check`.
Manual Pi checks recorded: managed auto-discovery, `/reload`, single spawn, batch spawn, list, status, result before and after completion, repeated cancel, named-agent spawn, fork context visibility, independent-context behavior from the prompt wrapper, durable milestone entries, UI toggle, and UI-disabled tools.
Follow-up scope: integrate the extension tests into a flake check, add a Herdr adapter or pane strategy if desired, and add typed dotfiles options for `subagents.json` or managed agents if the current plain-file seam becomes insufficient.

View File

@@ -1,5 +1,5 @@
---
status: open
status: complete
tags:
- wayfinder/map
---
@@ -21,8 +21,7 @@ Quota display must rely on an explicit API, local account source, or documented
## Frontier
- [[068-pi-ui-compact-status-extension-task]]
- [[070-pi-ui-flex-spacer-pi-patch-task]]
None.
## Decisions so far
@@ -34,13 +33,13 @@ The remaining prompt dead space is specifically an underfilled-stack issue: when
The prototype target is therefore a flexible spacer above the prompt/status/editor area, not a wholesale editor relocation.
The flex-spacer prototype received a positive HITL verdict and should be the preferred permanent layout direction.
Existing public prior art supports the patch direction: `pi-powerline-footer` shows the best extension-only compact status pattern, while `pi-local-mods` implements a private `FixedBottomScrollLayout` patch close to the desired bottom-pinned editor behavior.
The compact status extension is implemented as a managed Pi extension with an above-editor status widget, hidden footer, context/quota bars, and `/codex-quota`.
The flex-spacer Pi patch is implemented as a dotfiles-managed package override in commit `5fd8de0`, with manual visual verification left for the final deployment verification ticket.
The deployed ordinary Pi command now combines the compact status extension and patched bottom-anchored prompt layout, with autocomplete closing back to bottom alignment and no unmanaged prototype extension loaded.
## Not yet specified
The quota display prototype received a positive HITL verdict.
The permanent specification is complete in [[063-pi-ui-customization-spec-task]].
The implementation frontier includes [[068-pi-ui-compact-status-extension-task]].
The Pi patch implementation packaging was validated by [[073-pi-ui-community-pi-packaging-research]], which supports the package-override plan in [[072-pi-ui-patched-pi-packaging-research]].
None.
## Out of scope

View File

@@ -1,9 +1,12 @@
---
status: open
status: resolved
claimed-by: "019fbf55-ae07-7bfe-a774-77f41b55b724"
claimed-at: "2026-08-01T17:58:46-04:00"
completed-at: "2026-08-01T18:03:07-04:00"
parent: "[[063-pi-ui-customization-spec-task]]"
blocked-by: []
tags:
- ticket/task/afk
- ticket/implementation
---
# Implement compact Pi status extension
@@ -22,16 +25,21 @@ It should cache only normalized non-secret quota percentages in memory and degra
## Acceptance criteria
- [ ] The extension lives under the dotfiles Pi module's managed extension source tree, not only under `~/.pi/agent/extensions`.
- [ ] The built-in footer is hidden by default.
- [ ] The status widget shows cwd/branch on the left and model/thinking on the right.
- [ ] The context bar uses `▃`, fills from `ctx.getContextUsage().percent`, and uses success/warning/error thresholds 70% and 90%.
- [ ] The Codex quota bar uses `▔`, fills by consumed weekly quota, uses border blue below 50%, warning at 50%, and error at 80%.
- [ ] `/codex-quota` forces a refresh and displays only normalized non-secret details.
- [ ] Missing or expired credentials, network errors, and unrecognized quota responses do not break extension loading.
- [ ] No default config file is generated.
- [x] The extension lives under the dotfiles Pi module's managed extension source tree, not only under `~/.pi/agent/extensions`.
- [x] The built-in footer is hidden by default.
- [x] The status widget shows cwd/branch on the left and model/thinking on the right.
- [x] The context bar uses `▃`, fills from `ctx.getContextUsage().percent`, and uses success/warning/error thresholds 70% and 90%.
- [x] The Codex quota bar uses `▔`, fills by consumed weekly quota, uses border blue below 50%, warning at 50%, and error at 80%.
- [x] `/codex-quota` forces a refresh and displays only normalized non-secret details.
- [x] Missing or expired credentials, network errors, and unrecognized quota responses do not break extension loading.
- [x] No default config file is generated.
## Implementation Notes
Use `[[063-pi-ui-customization-spec-task]]` as the source of truth for row shape, colors, quota endpoints, and out-of-scope behavior.
The throwaway prototype at `~/.pi/agent/extensions/compact-status-prototype.ts` is useful reference code, but the finished implementation should be promoted into the repo-managed Pi extension source.
Resolved on branch `pi-ui-customization` in commit `a7ee800`.
Implemented `modules/agents/pi/extensions/compact-status.ts` as a managed Pi extension with an above-editor status widget, hidden footer, context/quota bars, and `/codex-quota`.
Verification: Pi RPC command registration smoke, managed extension derivation build, and `nix flake check`.
Manual post-switch verification remains useful for exact visual placement and live quota endpoint shape.

View File

@@ -1,10 +1,13 @@
---
status: open
status: resolved
parent: "[[063-pi-ui-customization-spec-task]]"
blocked-by:
- "[[073-pi-ui-community-pi-packaging-research]]"
claimed-by: "019fbf7c-142c-7ccf-8a15-47774af57943"
claimed-at: "2026-08-01T18:40:19-04:00"
resolved-at: "2026-08-01T18:47:52-04:00"
tags:
- ticket/task/afk
- ticket/implementation
---
# Patch Pi prompt-area layout
@@ -24,14 +27,14 @@ A local tool should count as available only when `<tool> --version` exits succes
## Acceptance criteria
- [ ] The ordinary flake-managed `pi` command uses the patched layout after rebuild.
- [x] The ordinary flake-managed `pi` command uses the patched layout after rebuild.
- [ ] Short conversations leave spare vertical space above the status/editor area, not below the editor.
- [ ] Long conversations preserve stock Pi scrolling behavior.
- [ ] Terminal resize recomputes spacer rows without accumulating stale blank lines.
- [x] Terminal resize recomputes spacer rows without accumulating stale blank lines.
- [ ] `/` autocomplete still works.
- [ ] `@` autocomplete still works even when `~/.pi/agent/bin/fd` is an unusable generic Linux binary.
- [x] `@` autocomplete still works even when `~/.pi/agent/bin/fd` is an unusable generic Linux binary.
- [ ] Closing autocomplete leaves the editor visually bottom-aligned.
- [ ] The patch is delivered through dotfiles, not by an unmanaged copy under `~/.local/share`.
- [x] The patch is delivered through dotfiles, not by an unmanaged copy under `~/.local/share`.
## Implementation Notes
@@ -40,3 +43,11 @@ Patch `pkgs.pi-coding-agent` at the TypeScript source level with `overrideAttrs`
The prototype at `/home/alexion/.local/share/pi-flex-spacer-prototype/pi-monorepo` added `FlexSpacerBottomLayout` in Pi's `dist/modes/interactive/interactive-mode.js` and patched tool lookup in `dist/utils/tools-manager.js`.
Use it as behavior reference, but implement through the flake-managed Pi package path.
Resolved in commit `5fd8de0` on branch `pi-ui-customization`.
The Pi module now overrides `pkgs.pi-coding-agent` with `modules/agents/pi/patches/pi-flex-spacer.patch` and `modules/agents/pi/patches/pi-tool-lookup-validation.patch`, assigning the patched package to `programs.pi-coding-agent.package`.
The patch adds a source-level flex-spacer layout wrapper around flow and pinned prompt-area components, preserving extension footer replacement through a pinned footer container.
It also enables TUI shrink clearing by default so closing autocomplete clears the temporary menu rows and returns the editor group to the bottom.
The tool lookup patch makes local `fd`/`rg` binaries count only when `--version` exits successfully.
Verified with focused package build, built-output inspection, unusable-local-`fd` fallback check, independent review remediation, deployed human visual checks, and `nix flake check`.
Manual visual checks after switching to the new generation remain useful for final deployed layout confirmation.

View File

@@ -1,9 +1,12 @@
---
status: open
status: resolved
parent: "[[063-pi-ui-customization-spec-task]]"
blocked-by:
- "[[068-pi-ui-compact-status-extension-task]]"
- "[[070-pi-ui-flex-spacer-pi-patch-task]]"
claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8"
claimed-at: "2026-08-01T19:43:42-04:00"
resolved-at: "2026-08-01T20:37:16-04:00"
tags:
- ticket/task/afk
---
@@ -21,17 +24,45 @@ Confirm the ordinary `pi` command has the accepted visual behavior after rebuild
## Acceptance criteria
- [ ] `nix flake check` passes.
- [ ] Normal `pi` launches with no extension load errors after `/reload`.
- [ ] The compact status shows cwd/branch, model/thinking, a `▃` context bar, and a `▔` consumed-weekly-Codex quota bar.
- [ ] The footer is hidden by default.
- [ ] `/codex-quota` refreshes quota and reports only non-secret normalized details.
- [ ] A short conversation keeps the prompt/status/editor area at the bottom.
- [ ] A long conversation preserves normal transcript scrolling.
- [ ] `/` and `@` autocomplete work in the deployed `pi` command.
- [ ] The final notes identify any remaining throwaway prototype files as non-deployment artifacts.
- [x] `nix flake check` passes.
- [x] Normal `pi` launches with no extension load errors after `/reload`.
- [x] The compact status shows cwd/branch, model/thinking, a `▃` context bar, and a `▔` consumed-weekly-Codex quota bar.
- [x] The footer is hidden by default.
- [x] `/codex-quota` refreshes quota and reports only non-secret normalized details.
- [x] A short conversation keeps the prompt/status/editor area at the bottom.
- [x] A long conversation preserves normal transcript scrolling.
- [x] `/` and `@` autocomplete work in the deployed `pi` command.
- [x] Closing autocomplete leaves the editor visually bottom-aligned.
- [x] The final notes identify any remaining throwaway prototype files as non-deployment artifacts.
## Implementation Notes
This is a verification and cleanup ticket, not a place to redesign the UI.
If the implementation diverges from `[[063-pi-ui-customization-spec-task]]`, record the reason in the ticket before closing it.
Progress on 2026-08-01:
- Rebased `pi-ui-customization` onto `main` so the UI branch includes the nested subagent tool fix.
- Verified the managed extension source builds and contains `compact-status.ts` plus the subagents extension.
- Verified the patched Pi package builds and its output contains `FlexSpacerBottomLayout` plus NixOS-safe local tool lookup.
- Verified `/codex-quota` command registration through RPC using the built compact status extension.
- Ran `nix flake check` successfully.
- Final deployed checks remain pending because switching the system generation and manual visual checks require explicit consent.
After the system switch:
- Confirmed ordinary `pi` resolves to `/nix/store/ba36x8jb9gr7slx4yq4pz64l5i7sih6h-pi-coding-agent-0.82.1/bin/pi`, whose built output contains `FlexSpacerBottomLayout` and NixOS-safe local tool lookup.
- Confirmed `~/.pi/agent/extensions/compact-status.ts` is deployed and contains the permanent status widget, hidden footer, context bar, quota bar, and `/codex-quota` command.
- Confirmed normal RPC launch loads extensions without stderr and exposes the compact status and subagent command surfaces.
- Confirmed `/codex-quota` returns only normalized non-secret quota details: `Codex quota remaining: weekly 75%, short 75%`.
- Confirmed deployed tool lookup ignores an unusable local `fd` and falls back to `fd` on `PATH`.
- The remaining `~/.pi/agent/extensions/compact-status-prototype.ts` is an unmanaged prototype artifact, not part of deployment, and should be removed separately only if the user wants to clean local experiments.
- Removed the unmanaged prototype extension from `~/.pi/agent/extensions/compact-status-prototype.ts`; a fresh RPC launch now exposes only the permanent `codex-quota` command.
- Human visual check confirmed the compact status, cwd/branch, model/thinking, context bar, quota bar, hidden footer, bottom-staying prompt during the checked short interaction, normal long-conversation scrolling, and `@` autocomplete.
- `/codex-quota` was not visually checked by the human in the TUI, but RPC verification confirmed normalized non-secret output.
- Human visual check confirmed `/` autocomplete works.
- Closing autocomplete still left space under the editor after switching commit `1d88503`; verification showed the patched TUI default was present, but interactive mode overrides it through `SettingsManager.getClearOnShrink()`, which still defaulted to false.
- Remediation was updated in commit `5fd8de0` by enabling shrink clearing by default in both the TUI and settings manager, while preserving `PI_CLEAR_ON_SHRINK=0` and explicit settings as opt-outs.
- Verified the remediation with the patched Pi package build, built-output inspection for both defaults, independent review, `nix flake check`, and deployed human visual confirmation.
- After switching and relaunching Pi again, human visual confirmation found closing autocomplete now leaves the editor bottom-aligned.
- Final deployed verification is complete on ordinary `pi`, which resolves to `/nix/store/p2xh13r9f890af4b8jdp60rnld1kbwsl-pi-coding-agent-0.82.1/bin/pi`.