From a87731bd112ecc43dc297fbadc28c42c839a3bf5 Mon Sep 17 00:00:00 2001 From: ualtinok <94532+ualtinok@users.noreply.github.com> Date: Wed, 28 Oct 2026 01:01:51 +0100 Subject: [PATCH 1/5] mason: release notes for v0.63.0 Inventory cutoff: 0ae448f03fe523481cefa9e292fd17cfc2811494 (330 first-parent PR merges since v0.62.0). Fold 209 fragments and clear the queue. next-notes.md already contains only its heading, matching the prior release cut. Exclude default-off index views, disabled groundwork and internal/CI claims; include unfragmented fixes verified against the cutoff tree. Leave runtime source, announcements, versions and publication snapshots unchanged. Add the non-ranking notes-only harness descriptor. Verification: release-note renderer passed for 1 file; descriptor check green for 211 non-ranking paths; notes-only diff/content audit passed; local release input gate passed 24 tool schemas and 6 activation transitions. Final notes: 86 lines, 1,238 words, 68 items. No runtime tests or typechecks: no runtime or package files changed. Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com> --- .alfonso/release-notes/next/S6.md | 1 - .../release-notes/next/a0-control-egress.md | 1 - .../release-notes/next/a0-prepared-config.md | 1 - .../release-notes/next/access-policy-s5.md | 1 - .../next/actor-storage-propagation.md | 1 - .../next/aft-search-honest-replies.md | 1 - .../next/applicability-cache-lru.md | 1 - .../next/applicability-walk-cost.md | 1 - .../next/atomic-worker-mktemp.md | 1 - .alfonso/release-notes/next/audit-u06.md | 1 - .alfonso/release-notes/next/audit-u10.md | 1 - .alfonso/release-notes/next/audit-u11a-p1.md | 1 - .alfonso/release-notes/next/audit-u13.md | 1 - .alfonso/release-notes/next/audit-u14.md | 1 - .../release-notes/next/audit-u15-part1.md | 1 - .alfonso/release-notes/next/audit-u17a.md | 1 - .alfonso/release-notes/next/audit-u17b.md | 1 - .alfonso/release-notes/next/audit-u18a-p1.md | 1 - .alfonso/release-notes/next/audit-u18b.md | 1 - .alfonso/release-notes/next/audit-u20.md | 1 - .alfonso/release-notes/next/audit-u21a.md | 1 - .../next/audit-u21b-summary-migration.md | 1 - .alfonso/release-notes/next/audit-u23.md | 1 - .../next/background-runon-reply.md | 1 - .alfonso/release-notes/next/backup-memory.md | 1 - .../next/backup-undo-migration-wait.md | 1 - .../release-notes/next/bash-changed-files.md | 1 - .../next/bash-cleanup-low-uptime.md | 1 - .../release-notes/next/bash-env-project.md | 4 - .../next/bash-kill-exited-process.md | 1 - .../next/bash-kill-marker-order.md | 1 - .../release-notes/next/bash-kill-scope.md | 1 - .../release-notes/next/bash-kill-survivors.md | 1 - .../release-notes/next/bash-memory-limit.md | 1 - .../next/bash-permission-loop.md | 2 - .../release-notes/next/bash-syntax-check.md | 2 - .../release-notes/next/bash-task-gc-cost.md | 1 - .../next/bash-task-storage-hygiene.md | 1 - .../next/bash-unknown-task-redirect.md | 1 - .../release-notes/next/bg-artifact-retry.md | 1 - .../release-notes/next/bg-completion-lost.md | 1 - ...907e6130e3df4-lease-heartbeat-close-cpu.md | 1 - .../next/bind-consumer-capabilities-log.md | 1 - .../next/borrowed-index-identity.md | 1 - .../next/bridge-timeout-isolation.md | 1 - .../next/cache-coordination-race.md | 1 - .../release-notes/next/cache-dir-setting.md | 1 - .../next/cache-key-contention.md | 1 - .../release-notes/next/callgraph-937-973.md | 1 - .../next/callgraph-busy-not-absent.md | 1 - .../next/callgraph-payload-size.md | 1 - .../next/callgraph-reexport-panic.md | 1 - .../next/callgraph-reopen-reconcile-order.md | 1 - .../next/callgraph-restart-reconcile.md | 1 - .../next/callgraph-serving-busy-wait.md | 1 - .../release-notes/next/callgraph-store-io.md | 1 - .../next/callgraph-version-upgrade.md | 1 - .../release-notes/next/catalog-db-window.md | 1 - .../release-notes/next/catalog-runon-log.md | 1 - .../release-notes/next/codemode-head-route.md | 1 - .../next/codemode-principal-class.md | 1 - .../next/cold-build-slot-order.md | 1 - .../next/command-redaction-output.md | 1 - .../next/compress-keep-unknown-lines.md | 1 - .../next/configure-callgraph-retry.md | 1 - .../next/configure-warnings-biome-memo.md | 1 - .../next/consent-scope-coalesce.md | 1 - .../next/consent-settled-answer.md | 1 - .../next/declare-tool-result-format.md | 1 - .../next/derived-incremental-writes.md | 1 - .../next/disk-limit-reader-markers.md | 1 - .../next/file-identity-stamps.md | 1 - .../release-notes/next/fork-lock-release.md | 1 - .../next/frame-loop-disk-stall.md | 1 - .../release-notes/next/frame-loop-drain.md | 1 - .../next/frame-loop-validators.md | 1 - .../release-notes/next/gh-job-log-range.md | 1 - .../next/gh-shim-url-thread-numbers.md | 1 - .alfonso/release-notes/next/gh-shim-v22.md | 1 - .../next/gh-worker-log-failed.md | 1 - .../next/gh-worker-read-pipes.md | 1 - .../next/glob-named-ignored-folders.md | 1 - .../next/grep-empty-diagnosis-cost.md | 1 - .../release-notes/next/grep-file-kinds.md | 1 - .../next/head-preflight-policy.md | 1 - .../next/health-rollup-quiet-ticks.md | 1 - .../next/health-rollup-reuse-connection.md | 1 - .../next/health-sweep-path-cache.md | 1 - .../next/health-telemetry-bound.md | 1 - .../next/idle-reaper-frame-loop.md | 1 - .../release-notes/next/idle-root-release.md | 1 - .../next/import-and-ast-grep-fixes.md | 1 - .../release-notes/next/index-build-cpu.md | 1 - .../next/index-event-log-fields.md | 1 - .../release-notes/next/inspect-accuracy.md | 1 - .../next/inspect-fresh-after-edit.md | 1 - .../next/late-approval-budget.md | 1 - .../next/lease-heartbeat-open-handles.md | 1 - .../next/lease-release-descriptors.md | 1 - .../release-notes/next/legacy-alias-index.md | 1 - .../release-notes/next/local-embed-memory.md | 1 - .../release-notes/next/log-session-prefix.md | 1 - .../next/lsp-applicability-incremental.md | 1 - .../next/lsp-reader-instances.md | 1 - .../release-notes/next/lsp-rooted-hints.md | 1 - .../next/lsp-startup-reservations.md | 1 - .../next/managed-git-hook-hang.md | 1 - .../next/oc1-read-rules-outline-zoom.md | 1 - .../release-notes/next/occipital-read-only.md | 1 - .../next/opencode-always-narrow.md | 1 - .../next/opencode2-plugin-fixes-646.md | 1 - .alfonso/release-notes/next/oss-index-rss.md | 1 - .../next/outline-batch-bounds.md | 1 - .alfonso/release-notes/next/page-collect.md | 1 - .alfonso/release-notes/next/perf-a15-lsp.md | 1 - .../release-notes/next/pi-outside-access.md | 1 - .../next/profile-busy-thread-stacks.md | 1 - .../release-notes/next/project-bash-env.md | 1 - .../next/publication-extract-reuse.md | 1 - .../next/queued-outside-edit-diagnostics.md | 1 - .../next/reader-tool-catalogs.md | 1 - .../next/reclaim-deleted-roots.md | 1 - .../next/remote-cancel-confirmed.md | 1 - .../remote-stop-registration-completion.md | 1 - .../next/remote-unknown-cancel.md | 1 - .../next/replay-admission-race.md | 1 - .../next/replay-project-scoped.md | 1 - .../release-notes/next/restart-preview.md | 1 - .../next/retention-bind-latency.md | 1 - .../next/retention-deadline-incomplete.md | 1 - .../next/retention-lease-dir-once.md | 1 - .../next/retention-manifest-cache.md | 1 - .../next/retention-trash-reaper.md | 1 - .../next/route-project-from-stamp.md | 1 - .../next/runon-background-cancel.md | 1 - .../next/runon-background-reply.md | 1 - .../next/runon-capture-remote-phase.md | 1 - .../release-notes/next/runon-cd-refusal.md | 1 - .../release-notes/next/runon-cd-sequential.md | 1 - .../next/runon-draining-backoff.md | 1 - .../next/runon-guidance-any-os.md | 1 - .alfonso/release-notes/next/runon-job-id.md | 1 - .../next/runon-launch-observation.md | 1 - .../next/runon-launch-reply-race.md | 1 - .alfonso/release-notes/next/runon-macos.md | 1 - .../next/runon-missing-workdir.md | 1 - .../next/runon-quiet-unreported.md | 1 - .../release-notes/next/runon-retry-jitter.md | 1 - .../release-notes/next/runon-signer-retry.md | 1 - .../next/runon-submission-key.md | 1 - .../next/sandbox-git-policy-cache.md | 1 - .../next/sandbox-identity-wait-leak.md | 1 - .../next/scheduler-lock-no-disk.md | 1 - .../next/search-loading-walk-disclosure.md | 1 - .../next/search-path-prefilter.md | 1 - .../next/semantic-restart-reads.md | 1 - .../next/skip-nested-worktrees.md | 1 - .../release-notes/next/slow-call-cpu-time.md | 1 - .../next/status-push-ordering.md | 1 - ...storage-cleanup-read-only-and-old-trash.md | 1 - .alfonso/release-notes/next/storage-floor.md | 1 - .../next/subc-exit-stderr-flush.md | 1 - .../release-notes/next/subc-lost-terminals.md | 1 - .../release-notes/next/subc-stderr-mirror.md | 1 - .../next/symbol-range-span-clip.md | 1 - .../next/synapse-deadline-timeout.md | 1 - .../next/synapse-shape-compiling.md | 1 - .../release-notes/next/tool-result-bodies.md | 1 - .alfonso/release-notes/next/trace-to-hang.md | 1 - .../next/train-push-queued-runner-timeout.md | 1 - .../next/trigram-build-memory.md | 1 - .../release-notes/next/tui-footer-switch.md | 1 - .../release-notes/next/url-fetch-deadline.md | 1 - .../next/v1-zoom-alias-admission.md | 1 - .../release-notes/next/v2-sweep-preflight.md | 1 - .../next/v2-watch-match-wakes.md | 1 - .../next/view-free-page-reclaim.md | 1 - .../release-notes/next/view-health-cache.md | 1 - .../next/view-manifest-incremental.md | 1 - .../next/view-missing-payload-heal.md | 1 - .../next/view-publication-noop-precheck.md | 1 - ...view-publication-scoped-directory-reads.md | 1 - .../next/view-publication-single-flight.md | 1 - .../next/view-publication-wake.md | 1 - .../next/views-cold-build-cleanup.md | 1 - .../release-notes/next/views-derived-reuse.md | 1 - .../views-eviction-waits-for-cleanup-read.md | 1 - .../release-notes/next/views-pending-paths.md | 1 - .../next/views-semantic-ready-snapshot.md | 1 - .../views-superseded-generation-cleanup.md | 1 - .../next/views-write-attribution.md | 1 - .../next/watchdog-layout-cache.md | 1 - .../next/watchdog-marker-poll.md | 1 - .../next/watcher-classify-cost.md | 1 - .../next/watcher-drain-forward-progress.md | 1 - .../next/windows-config-share-delete.md | 1 - .../next/windows-config-watch.md | 1 - .../release-notes/next/windows-exit-status.md | 1 - .../release-notes/next/windows-flush-wait.md | 1 - .../next/windows-memory-exit-code.md | 1 - .../next/windows-pty-memory-kill.md | 1 - .../next/windows-subc-teardown.md | 1 - .../next/worker-codemode-runs.md | 1 - .../release-notes/next/worker-gh-broker.md | 1 - .../next/worker-gh-read-relaxed.md | 1 - .../release-notes/next/worker-signal-probe.md | 1 - .../release-notes/next/worker-signal-scope.md | 1 - .../next/worker-tool-policy-lazy.md | 1 - .../release-notes/next/write-folder-ask.md | 1 - .alfonso/release-notes/v0.63.0.md | 86 +++++++++++++++++++ .../land-release-notes-0.63.0.json | 8 ++ 211 files changed, 94 insertions(+), 214 deletions(-) delete mode 100644 .alfonso/release-notes/next/S6.md delete mode 100644 .alfonso/release-notes/next/a0-control-egress.md delete mode 100644 .alfonso/release-notes/next/a0-prepared-config.md delete mode 100644 .alfonso/release-notes/next/access-policy-s5.md delete mode 100644 .alfonso/release-notes/next/actor-storage-propagation.md delete mode 100644 .alfonso/release-notes/next/aft-search-honest-replies.md delete mode 100644 .alfonso/release-notes/next/applicability-cache-lru.md delete mode 100644 .alfonso/release-notes/next/applicability-walk-cost.md delete mode 100644 .alfonso/release-notes/next/atomic-worker-mktemp.md delete mode 100644 .alfonso/release-notes/next/audit-u06.md delete mode 100644 .alfonso/release-notes/next/audit-u10.md delete mode 100644 .alfonso/release-notes/next/audit-u11a-p1.md delete mode 100644 .alfonso/release-notes/next/audit-u13.md delete mode 100644 .alfonso/release-notes/next/audit-u14.md delete mode 100644 .alfonso/release-notes/next/audit-u15-part1.md delete mode 100644 .alfonso/release-notes/next/audit-u17a.md delete mode 100644 .alfonso/release-notes/next/audit-u17b.md delete mode 100644 .alfonso/release-notes/next/audit-u18a-p1.md delete mode 100644 .alfonso/release-notes/next/audit-u18b.md delete mode 100644 .alfonso/release-notes/next/audit-u20.md delete mode 100644 .alfonso/release-notes/next/audit-u21a.md delete mode 100644 .alfonso/release-notes/next/audit-u21b-summary-migration.md delete mode 100644 .alfonso/release-notes/next/audit-u23.md delete mode 100644 .alfonso/release-notes/next/background-runon-reply.md delete mode 100644 .alfonso/release-notes/next/backup-memory.md delete mode 100644 .alfonso/release-notes/next/backup-undo-migration-wait.md delete mode 100644 .alfonso/release-notes/next/bash-changed-files.md delete mode 100644 .alfonso/release-notes/next/bash-cleanup-low-uptime.md delete mode 100644 .alfonso/release-notes/next/bash-env-project.md delete mode 100644 .alfonso/release-notes/next/bash-kill-exited-process.md delete mode 100644 .alfonso/release-notes/next/bash-kill-marker-order.md delete mode 100644 .alfonso/release-notes/next/bash-kill-scope.md delete mode 100644 .alfonso/release-notes/next/bash-kill-survivors.md delete mode 100644 .alfonso/release-notes/next/bash-memory-limit.md delete mode 100644 .alfonso/release-notes/next/bash-permission-loop.md delete mode 100644 .alfonso/release-notes/next/bash-syntax-check.md delete mode 100644 .alfonso/release-notes/next/bash-task-gc-cost.md delete mode 100644 .alfonso/release-notes/next/bash-task-storage-hygiene.md delete mode 100644 .alfonso/release-notes/next/bash-unknown-task-redirect.md delete mode 100644 .alfonso/release-notes/next/bg-artifact-retry.md delete mode 100644 .alfonso/release-notes/next/bg-completion-lost.md delete mode 100644 .alfonso/release-notes/next/bg_4d3907e6130e3df4-lease-heartbeat-close-cpu.md delete mode 100644 .alfonso/release-notes/next/bind-consumer-capabilities-log.md delete mode 100644 .alfonso/release-notes/next/borrowed-index-identity.md delete mode 100644 .alfonso/release-notes/next/bridge-timeout-isolation.md delete mode 100644 .alfonso/release-notes/next/cache-coordination-race.md delete mode 100644 .alfonso/release-notes/next/cache-dir-setting.md delete mode 100644 .alfonso/release-notes/next/cache-key-contention.md delete mode 100644 .alfonso/release-notes/next/callgraph-937-973.md delete mode 100644 .alfonso/release-notes/next/callgraph-busy-not-absent.md delete mode 100644 .alfonso/release-notes/next/callgraph-payload-size.md delete mode 100644 .alfonso/release-notes/next/callgraph-reexport-panic.md delete mode 100644 .alfonso/release-notes/next/callgraph-reopen-reconcile-order.md delete mode 100644 .alfonso/release-notes/next/callgraph-restart-reconcile.md delete mode 100644 .alfonso/release-notes/next/callgraph-serving-busy-wait.md delete mode 100644 .alfonso/release-notes/next/callgraph-store-io.md delete mode 100644 .alfonso/release-notes/next/callgraph-version-upgrade.md delete mode 100644 .alfonso/release-notes/next/catalog-db-window.md delete mode 100644 .alfonso/release-notes/next/catalog-runon-log.md delete mode 100644 .alfonso/release-notes/next/codemode-head-route.md delete mode 100644 .alfonso/release-notes/next/codemode-principal-class.md delete mode 100644 .alfonso/release-notes/next/cold-build-slot-order.md delete mode 100644 .alfonso/release-notes/next/command-redaction-output.md delete mode 100644 .alfonso/release-notes/next/compress-keep-unknown-lines.md delete mode 100644 .alfonso/release-notes/next/configure-callgraph-retry.md delete mode 100644 .alfonso/release-notes/next/configure-warnings-biome-memo.md delete mode 100644 .alfonso/release-notes/next/consent-scope-coalesce.md delete mode 100644 .alfonso/release-notes/next/consent-settled-answer.md delete mode 100644 .alfonso/release-notes/next/declare-tool-result-format.md delete mode 100644 .alfonso/release-notes/next/derived-incremental-writes.md delete mode 100644 .alfonso/release-notes/next/disk-limit-reader-markers.md delete mode 100644 .alfonso/release-notes/next/file-identity-stamps.md delete mode 100644 .alfonso/release-notes/next/fork-lock-release.md delete mode 100644 .alfonso/release-notes/next/frame-loop-disk-stall.md delete mode 100644 .alfonso/release-notes/next/frame-loop-drain.md delete mode 100644 .alfonso/release-notes/next/frame-loop-validators.md delete mode 100644 .alfonso/release-notes/next/gh-job-log-range.md delete mode 100644 .alfonso/release-notes/next/gh-shim-url-thread-numbers.md delete mode 100644 .alfonso/release-notes/next/gh-shim-v22.md delete mode 100644 .alfonso/release-notes/next/gh-worker-log-failed.md delete mode 100644 .alfonso/release-notes/next/gh-worker-read-pipes.md delete mode 100644 .alfonso/release-notes/next/glob-named-ignored-folders.md delete mode 100644 .alfonso/release-notes/next/grep-empty-diagnosis-cost.md delete mode 100644 .alfonso/release-notes/next/grep-file-kinds.md delete mode 100644 .alfonso/release-notes/next/head-preflight-policy.md delete mode 100644 .alfonso/release-notes/next/health-rollup-quiet-ticks.md delete mode 100644 .alfonso/release-notes/next/health-rollup-reuse-connection.md delete mode 100644 .alfonso/release-notes/next/health-sweep-path-cache.md delete mode 100644 .alfonso/release-notes/next/health-telemetry-bound.md delete mode 100644 .alfonso/release-notes/next/idle-reaper-frame-loop.md delete mode 100644 .alfonso/release-notes/next/idle-root-release.md delete mode 100644 .alfonso/release-notes/next/import-and-ast-grep-fixes.md delete mode 100644 .alfonso/release-notes/next/index-build-cpu.md delete mode 100644 .alfonso/release-notes/next/index-event-log-fields.md delete mode 100644 .alfonso/release-notes/next/inspect-accuracy.md delete mode 100644 .alfonso/release-notes/next/inspect-fresh-after-edit.md delete mode 100644 .alfonso/release-notes/next/late-approval-budget.md delete mode 100644 .alfonso/release-notes/next/lease-heartbeat-open-handles.md delete mode 100644 .alfonso/release-notes/next/lease-release-descriptors.md delete mode 100644 .alfonso/release-notes/next/legacy-alias-index.md delete mode 100644 .alfonso/release-notes/next/local-embed-memory.md delete mode 100644 .alfonso/release-notes/next/log-session-prefix.md delete mode 100644 .alfonso/release-notes/next/lsp-applicability-incremental.md delete mode 100644 .alfonso/release-notes/next/lsp-reader-instances.md delete mode 100644 .alfonso/release-notes/next/lsp-rooted-hints.md delete mode 100644 .alfonso/release-notes/next/lsp-startup-reservations.md delete mode 100644 .alfonso/release-notes/next/managed-git-hook-hang.md delete mode 100644 .alfonso/release-notes/next/oc1-read-rules-outline-zoom.md delete mode 100644 .alfonso/release-notes/next/occipital-read-only.md delete mode 100644 .alfonso/release-notes/next/opencode-always-narrow.md delete mode 100644 .alfonso/release-notes/next/opencode2-plugin-fixes-646.md delete mode 100644 .alfonso/release-notes/next/oss-index-rss.md delete mode 100644 .alfonso/release-notes/next/outline-batch-bounds.md delete mode 100644 .alfonso/release-notes/next/page-collect.md delete mode 100644 .alfonso/release-notes/next/perf-a15-lsp.md delete mode 100644 .alfonso/release-notes/next/pi-outside-access.md delete mode 100644 .alfonso/release-notes/next/profile-busy-thread-stacks.md delete mode 100644 .alfonso/release-notes/next/project-bash-env.md delete mode 100644 .alfonso/release-notes/next/publication-extract-reuse.md delete mode 100644 .alfonso/release-notes/next/queued-outside-edit-diagnostics.md delete mode 100644 .alfonso/release-notes/next/reader-tool-catalogs.md delete mode 100644 .alfonso/release-notes/next/reclaim-deleted-roots.md delete mode 100644 .alfonso/release-notes/next/remote-cancel-confirmed.md delete mode 100644 .alfonso/release-notes/next/remote-stop-registration-completion.md delete mode 100644 .alfonso/release-notes/next/remote-unknown-cancel.md delete mode 100644 .alfonso/release-notes/next/replay-admission-race.md delete mode 100644 .alfonso/release-notes/next/replay-project-scoped.md delete mode 100644 .alfonso/release-notes/next/restart-preview.md delete mode 100644 .alfonso/release-notes/next/retention-bind-latency.md delete mode 100644 .alfonso/release-notes/next/retention-deadline-incomplete.md delete mode 100644 .alfonso/release-notes/next/retention-lease-dir-once.md delete mode 100644 .alfonso/release-notes/next/retention-manifest-cache.md delete mode 100644 .alfonso/release-notes/next/retention-trash-reaper.md delete mode 100644 .alfonso/release-notes/next/route-project-from-stamp.md delete mode 100644 .alfonso/release-notes/next/runon-background-cancel.md delete mode 100644 .alfonso/release-notes/next/runon-background-reply.md delete mode 100644 .alfonso/release-notes/next/runon-capture-remote-phase.md delete mode 100644 .alfonso/release-notes/next/runon-cd-refusal.md delete mode 100644 .alfonso/release-notes/next/runon-cd-sequential.md delete mode 100644 .alfonso/release-notes/next/runon-draining-backoff.md delete mode 100644 .alfonso/release-notes/next/runon-guidance-any-os.md delete mode 100644 .alfonso/release-notes/next/runon-job-id.md delete mode 100644 .alfonso/release-notes/next/runon-launch-observation.md delete mode 100644 .alfonso/release-notes/next/runon-launch-reply-race.md delete mode 100644 .alfonso/release-notes/next/runon-macos.md delete mode 100644 .alfonso/release-notes/next/runon-missing-workdir.md delete mode 100644 .alfonso/release-notes/next/runon-quiet-unreported.md delete mode 100644 .alfonso/release-notes/next/runon-retry-jitter.md delete mode 100644 .alfonso/release-notes/next/runon-signer-retry.md delete mode 100644 .alfonso/release-notes/next/runon-submission-key.md delete mode 100644 .alfonso/release-notes/next/sandbox-git-policy-cache.md delete mode 100644 .alfonso/release-notes/next/sandbox-identity-wait-leak.md delete mode 100644 .alfonso/release-notes/next/scheduler-lock-no-disk.md delete mode 100644 .alfonso/release-notes/next/search-loading-walk-disclosure.md delete mode 100644 .alfonso/release-notes/next/search-path-prefilter.md delete mode 100644 .alfonso/release-notes/next/semantic-restart-reads.md delete mode 100644 .alfonso/release-notes/next/skip-nested-worktrees.md delete mode 100644 .alfonso/release-notes/next/slow-call-cpu-time.md delete mode 100644 .alfonso/release-notes/next/status-push-ordering.md delete mode 100644 .alfonso/release-notes/next/storage-cleanup-read-only-and-old-trash.md delete mode 100644 .alfonso/release-notes/next/storage-floor.md delete mode 100644 .alfonso/release-notes/next/subc-exit-stderr-flush.md delete mode 100644 .alfonso/release-notes/next/subc-lost-terminals.md delete mode 100644 .alfonso/release-notes/next/subc-stderr-mirror.md delete mode 100644 .alfonso/release-notes/next/symbol-range-span-clip.md delete mode 100644 .alfonso/release-notes/next/synapse-deadline-timeout.md delete mode 100644 .alfonso/release-notes/next/synapse-shape-compiling.md delete mode 100644 .alfonso/release-notes/next/tool-result-bodies.md delete mode 100644 .alfonso/release-notes/next/trace-to-hang.md delete mode 100644 .alfonso/release-notes/next/train-push-queued-runner-timeout.md delete mode 100644 .alfonso/release-notes/next/trigram-build-memory.md delete mode 100644 .alfonso/release-notes/next/tui-footer-switch.md delete mode 100644 .alfonso/release-notes/next/url-fetch-deadline.md delete mode 100644 .alfonso/release-notes/next/v1-zoom-alias-admission.md delete mode 100644 .alfonso/release-notes/next/v2-sweep-preflight.md delete mode 100644 .alfonso/release-notes/next/v2-watch-match-wakes.md delete mode 100644 .alfonso/release-notes/next/view-free-page-reclaim.md delete mode 100644 .alfonso/release-notes/next/view-health-cache.md delete mode 100644 .alfonso/release-notes/next/view-manifest-incremental.md delete mode 100644 .alfonso/release-notes/next/view-missing-payload-heal.md delete mode 100644 .alfonso/release-notes/next/view-publication-noop-precheck.md delete mode 100644 .alfonso/release-notes/next/view-publication-scoped-directory-reads.md delete mode 100644 .alfonso/release-notes/next/view-publication-single-flight.md delete mode 100644 .alfonso/release-notes/next/view-publication-wake.md delete mode 100644 .alfonso/release-notes/next/views-cold-build-cleanup.md delete mode 100644 .alfonso/release-notes/next/views-derived-reuse.md delete mode 100644 .alfonso/release-notes/next/views-eviction-waits-for-cleanup-read.md delete mode 100644 .alfonso/release-notes/next/views-pending-paths.md delete mode 100644 .alfonso/release-notes/next/views-semantic-ready-snapshot.md delete mode 100644 .alfonso/release-notes/next/views-superseded-generation-cleanup.md delete mode 100644 .alfonso/release-notes/next/views-write-attribution.md delete mode 100644 .alfonso/release-notes/next/watchdog-layout-cache.md delete mode 100644 .alfonso/release-notes/next/watchdog-marker-poll.md delete mode 100644 .alfonso/release-notes/next/watcher-classify-cost.md delete mode 100644 .alfonso/release-notes/next/watcher-drain-forward-progress.md delete mode 100644 .alfonso/release-notes/next/windows-config-share-delete.md delete mode 100644 .alfonso/release-notes/next/windows-config-watch.md delete mode 100644 .alfonso/release-notes/next/windows-exit-status.md delete mode 100644 .alfonso/release-notes/next/windows-flush-wait.md delete mode 100644 .alfonso/release-notes/next/windows-memory-exit-code.md delete mode 100644 .alfonso/release-notes/next/windows-pty-memory-kill.md delete mode 100644 .alfonso/release-notes/next/windows-subc-teardown.md delete mode 100644 .alfonso/release-notes/next/worker-codemode-runs.md delete mode 100644 .alfonso/release-notes/next/worker-gh-broker.md delete mode 100644 .alfonso/release-notes/next/worker-gh-read-relaxed.md delete mode 100644 .alfonso/release-notes/next/worker-signal-probe.md delete mode 100644 .alfonso/release-notes/next/worker-signal-scope.md delete mode 100644 .alfonso/release-notes/next/worker-tool-policy-lazy.md delete mode 100644 .alfonso/release-notes/next/write-folder-ask.md create mode 100644 .alfonso/release-notes/v0.63.0.md create mode 100644 benchmarks/aft-search/slice-descriptors/land-release-notes-0.63.0.json diff --git a/.alfonso/release-notes/next/S6.md b/.alfonso/release-notes/next/S6.md deleted file mode 100644 index b60fbe2aa2..0000000000 --- a/.alfonso/release-notes/next/S6.md +++ /dev/null @@ -1 +0,0 @@ -- After a Rust edit that leaves the crate's module structure unchanged, call-graph updates no longer re-check callers that only look up modules or `Type::method` paths, which cuts most of the type-lookup work on each edit. diff --git a/.alfonso/release-notes/next/a0-control-egress.md b/.alfonso/release-notes/next/a0-control-egress.md deleted file mode 100644 index 9666cb5bc2..0000000000 --- a/.alfonso/release-notes/next/a0-control-egress.md +++ /dev/null @@ -1 +0,0 @@ -- When the disk is slow, AFT no longer holds up new sessions connecting to it while it saves earlier results, and a request sent while a session is still connecting now waits for the connection instead of failing. diff --git a/.alfonso/release-notes/next/a0-prepared-config.md b/.alfonso/release-notes/next/a0-prepared-config.md deleted file mode 100644 index 36abf0e6bc..0000000000 --- a/.alfonso/release-notes/next/a0-prepared-config.md +++ /dev/null @@ -1 +0,0 @@ -- Bind configuration, source tracking and legacy-location notices now use one bounded local snapshot for the bind's selected harness, without rereading config during configure retries. diff --git a/.alfonso/release-notes/next/access-policy-s5.md b/.alfonso/release-notes/next/access-policy-s5.md deleted file mode 100644 index ddc555d786..0000000000 --- a/.alfonso/release-notes/next/access-policy-s5.md +++ /dev/null @@ -1 +0,0 @@ -- Permission checks for files outside the project now run inside AFT for OpenCode and Pi sessions without the daemon, with one-time approvals tied to the session; deletes and undo ask for exactly what they touch and refuse if a file was swapped after approval. diff --git a/.alfonso/release-notes/next/actor-storage-propagation.md b/.alfonso/release-notes/next/actor-storage-propagation.md deleted file mode 100644 index 1274469f53..0000000000 --- a/.alfonso/release-notes/next/actor-storage-propagation.md +++ /dev/null @@ -1 +0,0 @@ -An OpenCode or Pi session running AFT without the daemon no longer marks a call the daemon is still running as "not started" or "outcome unknown" when both use the same AFT storage. diff --git a/.alfonso/release-notes/next/aft-search-honest-replies.md b/.alfonso/release-notes/next/aft-search-honest-replies.md deleted file mode 100644 index c10b46f616..0000000000 --- a/.alfonso/release-notes/next/aft-search-honest-replies.md +++ /dev/null @@ -1 +0,0 @@ -`aft_search` replies no longer read as answers they are not: a code literal no file contains (such as `foo(`) now says so and labels the remaining results `[similar]`, a rule-denied `path=` is refused with "was not searched" instead of answered from the current project, the lane footer reports what actually served the answer ("answered by a filesystem scan" replaces "fully degraded"), and a regex page counts files first and shows its exact total. diff --git a/.alfonso/release-notes/next/applicability-cache-lru.md b/.alfonso/release-notes/next/applicability-cache-lru.md deleted file mode 100644 index 2705b29156..0000000000 --- a/.alfonso/release-notes/next/applicability-cache-lru.md +++ /dev/null @@ -1 +0,0 @@ -- Working across many projects in one session no longer makes language-server detection rescan projects you are actively editing. diff --git a/.alfonso/release-notes/next/applicability-walk-cost.md b/.alfonso/release-notes/next/applicability-walk-cost.md deleted file mode 100644 index 10a7bf7981..0000000000 --- a/.alfonso/release-notes/next/applicability-walk-cost.md +++ /dev/null @@ -1 +0,0 @@ -- Reduced CPU and allocation overhead when discovering applicable language servers in new checkouts, without changing server selection or workspace roots. diff --git a/.alfonso/release-notes/next/atomic-worker-mktemp.md b/.alfonso/release-notes/next/atomic-worker-mktemp.md deleted file mode 100644 index 9533003531..0000000000 --- a/.alfonso/release-notes/next/atomic-worker-mktemp.md +++ /dev/null @@ -1 +0,0 @@ -The macOS worker's private `mktemp` shim is now published only after its staged executable is closed, preventing a child launch from racing an in-place write. diff --git a/.alfonso/release-notes/next/audit-u06.md b/.alfonso/release-notes/next/audit-u06.md deleted file mode 100644 index b18df80edd..0000000000 --- a/.alfonso/release-notes/next/audit-u06.md +++ /dev/null @@ -1 +0,0 @@ -- Projects on machines without a working git stay indexable and keep a stable index identity, failed standing-root checks retry with backoff instead of every 250 ms, and backup repair and storage cleanup are safer. diff --git a/.alfonso/release-notes/next/audit-u10.md b/.alfonso/release-notes/next/audit-u10.md deleted file mode 100644 index be311c4668..0000000000 --- a/.alfonso/release-notes/next/audit-u10.md +++ /dev/null @@ -1 +0,0 @@ -- Extract function keeps destructured, loop, catch and typed parameters, multiline literals and CRLF/BOM bytes (including one-line extractions), and refuses selections with an outer bare return, await or yield. add_import and move_symbol keep directives, docstrings, `__future__` order, C include guards and CRLF intact. Outline handles Go grouped types and aliases, HTML headings on one line and Pascal keyword boundaries, and ast-grep no longer gives regex advice for array subscripts. Saved symbols and call graphs are rebuilt once after upgrading so these fixes apply to unchanged files too. diff --git a/.alfonso/release-notes/next/audit-u11a-p1.md b/.alfonso/release-notes/next/audit-u11a-p1.md deleted file mode 100644 index 2930691d10..0000000000 --- a/.alfonso/release-notes/next/audit-u11a-p1.md +++ /dev/null @@ -1 +0,0 @@ -- Background bash keeps signal deaths as 128+signal exit codes and returns raw output in bounded 64 KiB pages. Watches in AFT, OpenCode and Pi scan every page of an exited command's output, keep characters whole across pages, and no longer treat a page edge as the end of the output; when they cannot rule out a match, they say the scan is incomplete instead of reporting no match. diff --git a/.alfonso/release-notes/next/audit-u13.md b/.alfonso/release-notes/next/audit-u13.md deleted file mode 100644 index f591f2a3bd..0000000000 --- a/.alfonso/release-notes/next/audit-u13.md +++ /dev/null @@ -1 +0,0 @@ -- Call-graph answers report omitted callers and stale source accurately, and view publication keeps readiness and coverage gaps truthful. diff --git a/.alfonso/release-notes/next/audit-u14.md b/.alfonso/release-notes/next/audit-u14.md deleted file mode 100644 index c27b09e603..0000000000 --- a/.alfonso/release-notes/next/audit-u14.md +++ /dev/null @@ -1 +0,0 @@ -- aft_inspect keeps its findings accurate across edits and partially parsed files, reports a gap when its cache is damaged instead of serving stale results, and refreshes outdated analysis safely. diff --git a/.alfonso/release-notes/next/audit-u15-part1.md b/.alfonso/release-notes/next/audit-u15-part1.md deleted file mode 100644 index 79d83b0e87..0000000000 --- a/.alfonso/release-notes/next/audit-u15-part1.md +++ /dev/null @@ -1 +0,0 @@ -- Language-server diagnostics keep pull-report versions and related files, recover from malformed message bodies, and keep watched-file delivery and document state consistent when a server fails. diff --git a/.alfonso/release-notes/next/audit-u17a.md b/.alfonso/release-notes/next/audit-u17a.md deleted file mode 100644 index db709e2aeb..0000000000 --- a/.alfonso/release-notes/next/audit-u17a.md +++ /dev/null @@ -1 +0,0 @@ -- OpenCode: an invalid shared TUI preferences file is no longer overwritten, edited project config is re-read correctly, and two OpenCode windows can no longer both take the auto-update lock. diff --git a/.alfonso/release-notes/next/audit-u17b.md b/.alfonso/release-notes/next/audit-u17b.md deleted file mode 100644 index cc9b496689..0000000000 --- a/.alfonso/release-notes/next/audit-u17b.md +++ /dev/null @@ -1 +0,0 @@ -- OpenCode: a background completion notice the host was slow to accept is delivered exactly once instead of being lost or sent twice, and plugin RPC calls keep their cancellation, deadline and size limits while reading a reply. diff --git a/.alfonso/release-notes/next/audit-u18a-p1.md b/.alfonso/release-notes/next/audit-u18a-p1.md deleted file mode 100644 index 3ddd0969e5..0000000000 --- a/.alfonso/release-notes/next/audit-u18a-p1.md +++ /dev/null @@ -1 +0,0 @@ -- aft-cli: doctor's binary cleanup keeps installed and pinned plugin versions and leaves the cache untouched when the plugin version can't be read; config writes keep comments and file links; language-server installs from npm keep a publication-age cutoff and skip install scripts. diff --git a/.alfonso/release-notes/next/audit-u18b.md b/.alfonso/release-notes/next/audit-u18b.md deleted file mode 100644 index 95a75130a3..0000000000 --- a/.alfonso/release-notes/next/audit-u18b.md +++ /dev/null @@ -1 +0,0 @@ -- The aft CLI keeps a native command's exit code, picks the cached binary that matches its own version, and Pi retries session notifications it could not deliver. diff --git a/.alfonso/release-notes/next/audit-u20.md b/.alfonso/release-notes/next/audit-u20.md deleted file mode 100644 index 30da13c4e6..0000000000 --- a/.alfonso/release-notes/next/audit-u20.md +++ /dev/null @@ -1 +0,0 @@ -- Semantic search and project setup fixes from the u20 audit: test-support files classified consistently, snippet reads bounded on very long lines, stale setup warnings no longer published after a newer configure. diff --git a/.alfonso/release-notes/next/audit-u21a.md b/.alfonso/release-notes/next/audit-u21a.md deleted file mode 100644 index 1a60e7f041..0000000000 --- a/.alfonso/release-notes/next/audit-u21a.md +++ /dev/null @@ -1 +0,0 @@ -- Search caches recover from corrupt data and poisoned locks, and a slow embedding call now counts as one timeout instead of one per retry. diff --git a/.alfonso/release-notes/next/audit-u21b-summary-migration.md b/.alfonso/release-notes/next/audit-u21b-summary-migration.md deleted file mode 100644 index 05c94ed9e1..0000000000 --- a/.alfonso/release-notes/next/audit-u21b-summary-migration.md +++ /dev/null @@ -1 +0,0 @@ -- Semantic search repairs saved file summaries that exceed a small embedding text budget on load, instead of keeping oversized summaries written by older builds. diff --git a/.alfonso/release-notes/next/audit-u23.md b/.alfonso/release-notes/next/audit-u23.md deleted file mode 100644 index 55f8e6e17b..0000000000 --- a/.alfonso/release-notes/next/audit-u23.md +++ /dev/null @@ -1 +0,0 @@ -- Formatters and type checkers that AFT runs after an edit now use the same sandbox and session grants as that session's shell commands. diff --git a/.alfonso/release-notes/next/background-runon-reply.md b/.alfonso/release-notes/next/background-runon-reply.md deleted file mode 100644 index 06c6ae6cfd..0000000000 --- a/.alfonso/release-notes/next/background-runon-reply.md +++ /dev/null @@ -1 +0,0 @@ -A background command sent to a remote runner now returns its task ID before the runner accepts it; the result or refusal arrives later for that same task. diff --git a/.alfonso/release-notes/next/backup-memory.md b/.alfonso/release-notes/next/backup-memory.md deleted file mode 100644 index 910fa7950e..0000000000 --- a/.alfonso/release-notes/next/backup-memory.md +++ /dev/null @@ -1 +0,0 @@ -- Undo snapshots now keep file bodies on disk rather than retaining copies of every edit in daemon memory. Closing a session or evicting an idle project releases its undo-stack metadata; undo, history and checkpoints remain available from persisted backups, including after restart. diff --git a/.alfonso/release-notes/next/backup-undo-migration-wait.md b/.alfonso/release-notes/next/backup-undo-migration-wait.md deleted file mode 100644 index dbb6288724..0000000000 --- a/.alfonso/release-notes/next/backup-undo-migration-wait.md +++ /dev/null @@ -1 +0,0 @@ -- Undo after an upgrade no longer reports "no undo history" while another AFT process is moving older history into the new layout; it waits briefly or says why it couldn't. diff --git a/.alfonso/release-notes/next/bash-changed-files.md b/.alfonso/release-notes/next/bash-changed-files.md deleted file mode 100644 index 0ad3e8f90c..0000000000 --- a/.alfonso/release-notes/next/bash-changed-files.md +++ /dev/null @@ -1 +0,0 @@ -- Bash can optionally report project files observed changing during a command. Set user `bash.changed_files` to `list` or `diff` (default `off`); diffs use the starting Git blob for clean tracked text files with bounded output, and a bounded watcher flush includes last-moment writes without routine caveats. Actual overflow or a flush timeout is explicitly disclosed. Background commands report in their completion notice. Projects can turn the feature off but cannot enable it. diff --git a/.alfonso/release-notes/next/bash-cleanup-low-uptime.md b/.alfonso/release-notes/next/bash-cleanup-low-uptime.md deleted file mode 100644 index bf72344fc6..0000000000 --- a/.alfonso/release-notes/next/bash-cleanup-low-uptime.md +++ /dev/null @@ -1 +0,0 @@ -- On Windows machines started less than a day ago, finished background command results are kept for their full retention period again, instead of being deleted at the next cleanup about a minute later. diff --git a/.alfonso/release-notes/next/bash-env-project.md b/.alfonso/release-notes/next/bash-env-project.md deleted file mode 100644 index a6b1fccf43..0000000000 --- a/.alfonso/release-notes/next/bash-env-project.md +++ /dev/null @@ -1,4 +0,0 @@ -- `bash.env` now has a project tier. `/.cortexkit/aft.jsonc` may set `bash.env` names, and AFT applies them to local shell commands only while that project is on the filter trust list (`aft doctor filters trust`); a linked worktree inherits its main checkout's trust. A user value wins when both tiers set the same name, and the first bash reply in a session names each applied variable with its tier. Untrusting a project stops its values on the next command, without a reload. -- A harness block's `bash.env` now merges its names into that tier's base map instead of replacing the whole map. Previously, adding one name under `harnesses.pi` silently dropped every base name. -- `bash.env` values no longer reach a `runon` build-server job unless the user lists the name in the new user-only `bash.runon_env` array. A project's values are never sent. Every `bash.env` name that is not sent appears in the job's "the remote job does not receive: …" disclosure. -- The list of names `bash.env` refuses is wider and now applies at both tiers: startup hooks, lookup roots (`HOME`, `TMPDIR`, `XDG_*`, `CARGO_HOME`, …), interpreter injectors, Git redirection and `GIT_CONFIG*`, AFT and module controls (`AFT_*`, `SUBC_*`, …), and sandbox and build-slot controls (compile wrappers, `RUST_TEST_THREADS`/`NEXTEST_TEST_THREADS`, `SCCACHE_*`). Credentials, identity, proxy, and TLS-trust names are refused from project config only. A refused name rejects the config file with an error naming the key; matching is case-insensitive on every platform. Configurations that already used `AFT_*`-prefixed or thread-count names must move them to per-call `env` (per-call names are still checked against the list) or remove them. diff --git a/.alfonso/release-notes/next/bash-kill-exited-process.md b/.alfonso/release-notes/next/bash-kill-exited-process.md deleted file mode 100644 index f52192dcb4..0000000000 --- a/.alfonso/release-notes/next/bash-kill-exited-process.md +++ /dev/null @@ -1 +0,0 @@ -- On macOS, killing a background `bash` task no longer waits for processes that have already exited. A process whose exit has started but whose parent has not cleaned it up yet was counted as still running, so a kill could take its full grace period, and the kill's report could name it as having survived. diff --git a/.alfonso/release-notes/next/bash-kill-marker-order.md b/.alfonso/release-notes/next/bash-kill-marker-order.md deleted file mode 100644 index aab87854e1..0000000000 --- a/.alfonso/release-notes/next/bash-kill-marker-order.md +++ /dev/null @@ -1 +0,0 @@ -- bash_kill no longer reports a command as failed when the command's exit arrives while the kill is being sent; once AFT commits to the kill, the task reads as killed. diff --git a/.alfonso/release-notes/next/bash-kill-scope.md b/.alfonso/release-notes/next/bash-kill-scope.md deleted file mode 100644 index 8865429c5c..0000000000 --- a/.alfonso/release-notes/next/bash-kill-scope.md +++ /dev/null @@ -1 +0,0 @@ -Added owner-only management operation `bash.kill_scope` to stop a cancelled worker's local and remote bash tasks without revoking its scope. Pausing a worker does not call this operation. diff --git a/.alfonso/release-notes/next/bash-kill-survivors.md b/.alfonso/release-notes/next/bash-kill-survivors.md deleted file mode 100644 index 122b893bb4..0000000000 --- a/.alfonso/release-notes/next/bash-kill-survivors.md +++ /dev/null @@ -1 +0,0 @@ -- When a command times out or is killed, AFT now reports any process it could not stop, such as one started with `sudo`, instead of a clean kill; see the `bash` docs for patterns that keep `sudo` commands killable (#830, thanks @iceteaSA). diff --git a/.alfonso/release-notes/next/bash-memory-limit.md b/.alfonso/release-notes/next/bash-memory-limit.md deleted file mode 100644 index e208c991ed..0000000000 --- a/.alfonso/release-notes/next/bash-memory-limit.md +++ /dev/null @@ -1 +0,0 @@ -Optionally cap each local shell command's aggregate memory with `bash.memory_limit_mib`, including foreground, background, and PTY commands. diff --git a/.alfonso/release-notes/next/bash-permission-loop.md b/.alfonso/release-notes/next/bash-permission-loop.md deleted file mode 100644 index 7ca7dc1370..0000000000 --- a/.alfonso/release-notes/next/bash-permission-loop.md +++ /dev/null @@ -1,2 +0,0 @@ -- Bash permission retries stop immediately when the engine repeats an already approved ask, and report the outstanding permission kind, path or pattern, operation, and grant status instead of an unexplained retry limit. Both plugins share the retry policy and log each permission round at INFO. Commands that use an unknown working directory now request approval of the exact command, with an explanation, rather than an unfulfillable relative-folder grant. -- Exact-command approval supplements individual command permissions; it does not replace them. Host deny rules such as `rm *` still apply after a dynamic directory change. diff --git a/.alfonso/release-notes/next/bash-syntax-check.md b/.alfonso/release-notes/next/bash-syntax-check.md deleted file mode 100644 index 897e3a87ac..0000000000 --- a/.alfonso/release-notes/next/bash-syntax-check.md +++ /dev/null @@ -1,2 +0,0 @@ -- A new or edited bash script that the built-in parser rejects is now checked with `bash -n` before AFT calls it broken. Valid scripts the parser can't read, such as an escaped `[ "$a" \< "$b" ]` comparison, are no longer reported as "does not parse", and valid edits to them are no longer rolled back. For a confirmed error, the reply names the line bash reports. When bash can't give a verdict (no bash, which is always the case on Windows, a timeout, or another failure), the reply says the syntax check is unknown (`bash_unavailable`, `bash_timeout` or `bash_failed`). -- Syntax errors in new files now point at the line where parsing actually got stuck, not at the first line of a larger block the parser gave up on. diff --git a/.alfonso/release-notes/next/bash-task-gc-cost.md b/.alfonso/release-notes/next/bash-task-gc-cost.md deleted file mode 100644 index eac44dfdf2..0000000000 --- a/.alfonso/release-notes/next/bash-task-gc-cost.md +++ /dev/null @@ -1 +0,0 @@ -- Cleanup of finished background commands now visits only the records whose retention period has ended, instead of rescanning every saved task, so it uses far less CPU on machines with thousands of finished commands. Retention rules are unchanged. diff --git a/.alfonso/release-notes/next/bash-task-storage-hygiene.md b/.alfonso/release-notes/next/bash-task-storage-hygiene.md deleted file mode 100644 index 58596df1c8..0000000000 --- a/.alfonso/release-notes/next/bash-task-storage-hygiene.md +++ /dev/null @@ -1 +0,0 @@ -- Reclaim empty bash-task session folders during bounded cleanup, remove incomplete empty task layouts, and isolate unreadable retention bindings so one damaged record cannot stall other cleanup; routine no-op retention and detach traces now use debug logging. Thanks @null-axiom for reporting these storage and log hygiene issues. diff --git a/.alfonso/release-notes/next/bash-unknown-task-redirect.md b/.alfonso/release-notes/next/bash-unknown-task-redirect.md deleted file mode 100644 index 60db926de0..0000000000 --- a/.alfonso/release-notes/next/bash-unknown-task-redirect.md +++ /dev/null @@ -1 +0,0 @@ -- `bash_write` called with a task id this session never started now answers in one line that points to `bash` for running commands, and `bash_status`, `bash_kill` and `bash_watch` give a one-line not-found reply that names `bash` too. Thanks @kido5217 (#691). diff --git a/.alfonso/release-notes/next/bg-artifact-retry.md b/.alfonso/release-notes/next/bg-artifact-retry.md deleted file mode 100644 index 5e291c4a0f..0000000000 --- a/.alfonso/release-notes/next/bg-artifact-retry.md +++ /dev/null @@ -1 +0,0 @@ -- Reading a background task's saved state or output no longer fails with "task artifact was concurrently replaced" when AFT rewrites that file at the same moment; the read retries a bounded number of times. diff --git a/.alfonso/release-notes/next/bg-completion-lost.md b/.alfonso/release-notes/next/bg-completion-lost.md deleted file mode 100644 index b2e9fad92e..0000000000 --- a/.alfonso/release-notes/next/bg-completion-lost.md +++ /dev/null @@ -1 +0,0 @@ -Background bash tasks that finish before their launch reply is built now retain their completion notification, including replay after a restart. A terminal status on a launch-only reply no longer acknowledges command output the caller has not received. Foreground results and completed watches still acknowledge their terminal output. diff --git a/.alfonso/release-notes/next/bg_4d3907e6130e3df4-lease-heartbeat-close-cpu.md b/.alfonso/release-notes/next/bg_4d3907e6130e3df4-lease-heartbeat-close-cpu.md deleted file mode 100644 index bc3daea4de..0000000000 --- a/.alfonso/release-notes/next/bg_4d3907e6130e3df4-lease-heartbeat-close-cpu.md +++ /dev/null @@ -1 +0,0 @@ -- Reduced daemon CPU on hosts with many bound projects: writer-lease heartbeats no longer reopen and close each lease file every few seconds, and a daemon no longer warns about its own long-lived leases. diff --git a/.alfonso/release-notes/next/bind-consumer-capabilities-log.md b/.alfonso/release-notes/next/bind-consumer-capabilities-log.md deleted file mode 100644 index 0760f71d86..0000000000 --- a/.alfonso/release-notes/next/bind-consumer-capabilities-log.md +++ /dev/null @@ -1 +0,0 @@ -AFT now logs each route bind's caller, harness, and advertised content and held-reply capabilities for easier compatibility diagnosis. diff --git a/.alfonso/release-notes/next/borrowed-index-identity.md b/.alfonso/release-notes/next/borrowed-index-identity.md deleted file mode 100644 index 89a52c019c..0000000000 --- a/.alfonso/release-notes/next/borrowed-index-identity.md +++ /dev/null @@ -1 +0,0 @@ -External searches and read-only navigation now find existing indexes after Git is added to a previously bound folder. diff --git a/.alfonso/release-notes/next/bridge-timeout-isolation.md b/.alfonso/release-notes/next/bridge-timeout-isolation.md deleted file mode 100644 index 80453bf5c9..0000000000 --- a/.alfonso/release-notes/next/bridge-timeout-isolation.md +++ /dev/null @@ -1 +0,0 @@ -- A tool call that times out on the standalone bridge now fails on its own, instead of restarting the shared AFT process and failing other sessions' calls. AFT restarts only when it has gone silent, and a read, outline, zoom, grep, glob, search, callgraph or inspect cut off by that restart is retried once. The `bridge.hang_threshold` setting no longer does anything; `doctor --fix` removes it. Thanks @null-axiom (#646). diff --git a/.alfonso/release-notes/next/cache-coordination-race.md b/.alfonso/release-notes/next/cache-coordination-race.md deleted file mode 100644 index 92cd6c6d48..0000000000 --- a/.alfonso/release-notes/next/cache-coordination-race.md +++ /dev/null @@ -1 +0,0 @@ -- Projects no longer lose their caches when many open at once on macOS; a rare busy moment now says the cache folder is busy and AFT retries automatically. diff --git a/.alfonso/release-notes/next/cache-dir-setting.md b/.alfonso/release-notes/next/cache-dir-setting.md deleted file mode 100644 index 2b990c449d..0000000000 --- a/.alfonso/release-notes/next/cache-dir-setting.md +++ /dev/null @@ -1 +0,0 @@ -AFT can keep its rebuildable caches (indexes and views) on another volume with the user setting `storage.cache_dir`. If that volume is missing or the setting can't be read, AFT turns the caches off instead of writing them to the main disk, and `doctor --clean-old-caches` removes the old copies after you confirm. diff --git a/.alfonso/release-notes/next/cache-key-contention.md b/.alfonso/release-notes/next/cache-key-contention.md deleted file mode 100644 index 36902a0438..0000000000 --- a/.alfonso/release-notes/next/cache-key-contention.md +++ /dev/null @@ -1 +0,0 @@ -Projects binding concurrently on macOS no longer intermittently lose their cache key and trigram index with `cache_dir_unavailable`. A Darwin race can report a missing file when another project has just created the shared coordination file. AFT now makes a bounded sequence of attempts to open the shared coordination file, retaining the existing symlink protections. If coordination remains busy, the project still binds with a `cache_dir_busy` degradation and automatic retries with bounded backoff while the project remains bound, instead of reporting an unavailable cache folder or requiring a rebind to recover its indexes. diff --git a/.alfonso/release-notes/next/callgraph-937-973.md b/.alfonso/release-notes/next/callgraph-937-973.md deleted file mode 100644 index 01090da1fc..0000000000 --- a/.alfonso/release-notes/next/callgraph-937-973.md +++ /dev/null @@ -1 +0,0 @@ -aft_callgraph now marks functions passed as callbacks, links new Class() only to the class's constructor, says when a zero-caller answer may be missing dynamic calls, and hides Rust inline test callers when tests are excluded. diff --git a/.alfonso/release-notes/next/callgraph-busy-not-absent.md b/.alfonso/release-notes/next/callgraph-busy-not-absent.md deleted file mode 100644 index 9cdacc44f2..0000000000 --- a/.alfonso/release-notes/next/callgraph-busy-not-absent.md +++ /dev/null @@ -1 +0,0 @@ -- Briefly busy call-graph stores stay pending instead of appearing absent, and completed builds retry reopening before serving queries and dead-code inspection. diff --git a/.alfonso/release-notes/next/callgraph-payload-size.md b/.alfonso/release-notes/next/callgraph-payload-size.md deleted file mode 100644 index 5de0c69578..0000000000 --- a/.alfonso/release-notes/next/callgraph-payload-size.md +++ /dev/null @@ -1 +0,0 @@ -- Call-graph caches take about three quarters less disk space, with identical call-graph and dead-code results. After upgrading, AFT re-extracts call graphs once. diff --git a/.alfonso/release-notes/next/callgraph-reexport-panic.md b/.alfonso/release-notes/next/callgraph-reexport-panic.md deleted file mode 100644 index 8200acba28..0000000000 --- a/.alfonso/release-notes/next/callgraph-reexport-panic.md +++ /dev/null @@ -1 +0,0 @@ -Prevent call-graph extraction from panicking on malformed Rust re-export groups while preserving existing well-formed output. diff --git a/.alfonso/release-notes/next/callgraph-reopen-reconcile-order.md b/.alfonso/release-notes/next/callgraph-reopen-reconcile-order.md deleted file mode 100644 index 5709c87f4d..0000000000 --- a/.alfonso/release-notes/next/callgraph-reopen-reconcile-order.md +++ /dev/null @@ -1 +0,0 @@ -- A call-graph query right after a project rebinds no longer reports busy. diff --git a/.alfonso/release-notes/next/callgraph-restart-reconcile.md b/.alfonso/release-notes/next/callgraph-restart-reconcile.md deleted file mode 100644 index db31b891b6..0000000000 --- a/.alfonso/release-notes/next/callgraph-restart-reconcile.md +++ /dev/null @@ -1 +0,0 @@ -- After a restart, the call graph picks up files edited while AFT wasn't running without a full rebuild; the inspect health check backs off after a lost lock instead of retrying every 30 seconds; and the log says why a call graph was rebuilt from scratch (#746, thanks @moynzzz). diff --git a/.alfonso/release-notes/next/callgraph-serving-busy-wait.md b/.alfonso/release-notes/next/callgraph-serving-busy-wait.md deleted file mode 100644 index 69d6b30b9c..0000000000 --- a/.alfonso/release-notes/next/callgraph-serving-busy-wait.md +++ /dev/null @@ -1 +0,0 @@ -- A call graph that was just published no longer answers "busy" for a moment while a background refresh opens it; reads wait briefly, and a lock that lasts longer still reports busy. diff --git a/.alfonso/release-notes/next/callgraph-store-io.md b/.alfonso/release-notes/next/callgraph-store-io.md deleted file mode 100644 index ae7ff07fce..0000000000 --- a/.alfonso/release-notes/next/callgraph-store-io.md +++ /dev/null @@ -1 +0,0 @@ -Reduce disk I/O in the legacy call-graph store (standalone with views off): cold builds commit source-byte batches with a build-only page cache, and one-file refreshes reuse connections and avoid whole-store status/root scans. Existing generations rebuild once for the new indexed schema. Thanks to @moynzzz for the measurements and report in #746. diff --git a/.alfonso/release-notes/next/callgraph-version-upgrade.md b/.alfonso/release-notes/next/callgraph-version-upgrade.md deleted file mode 100644 index ffd16f45ed..0000000000 --- a/.alfonso/release-notes/next/callgraph-version-upgrade.md +++ /dev/null @@ -1 +0,0 @@ -- After an upgrade changes the call-graph format, a project that isn't a Git repository now rebuilds its call graph in the background and removes the old unreadable copy instead of keeping it forever (#771). diff --git a/.alfonso/release-notes/next/catalog-db-window.md b/.alfonso/release-notes/next/catalog-db-window.md deleted file mode 100644 index 240fabb8b9..0000000000 --- a/.alfonso/release-notes/next/catalog-db-window.md +++ /dev/null @@ -1 +0,0 @@ -Tool catalogs that save access settings now wait for project persistence after binding and return retryable readiness errors if it is unavailable. diff --git a/.alfonso/release-notes/next/catalog-runon-log.md b/.alfonso/release-notes/next/catalog-runon-log.md deleted file mode 100644 index c0d2e37449..0000000000 --- a/.alfonso/release-notes/next/catalog-runon-log.md +++ /dev/null @@ -1 +0,0 @@ -- The daemon log records, for each tool catalog answer, whether bash offered the build-server option and which condition stopped it. diff --git a/.alfonso/release-notes/next/codemode-head-route.md b/.alfonso/release-notes/next/codemode-head-route.md deleted file mode 100644 index 7b36f71778..0000000000 --- a/.alfonso/release-notes/next/codemode-head-route.md +++ /dev/null @@ -1 +0,0 @@ -- Codemode calls in the agent's checkout no longer fail after work in other checkouts. Permission conflicts still refuse, naming conflicting settings and route channels. diff --git a/.alfonso/release-notes/next/codemode-principal-class.md b/.alfonso/release-notes/next/codemode-principal-class.md deleted file mode 100644 index c3a50b0b5f..0000000000 --- a/.alfonso/release-notes/next/codemode-principal-class.md +++ /dev/null @@ -1 +0,0 @@ -Codemode no longer refuses a head whose routes differ only in which first-party module opened them. diff --git a/.alfonso/release-notes/next/cold-build-slot-order.md b/.alfonso/release-notes/next/cold-build-slot-order.md deleted file mode 100644 index 40319c0518..0000000000 --- a/.alfonso/release-notes/next/cold-build-slot-order.md +++ /dev/null @@ -1 +0,0 @@ -- Heavy index builds take turns fairly: semantic fills that embed nothing no longer use a build slot, a multi-round fill goes behind work already waiting, and view publication waits in line and no longer holds a slot while waiting on locks. diff --git a/.alfonso/release-notes/next/command-redaction-output.md b/.alfonso/release-notes/next/command-redaction-output.md deleted file mode 100644 index 529572b3bf..0000000000 --- a/.alfonso/release-notes/next/command-redaction-output.md +++ /dev/null @@ -1 +0,0 @@ -- AFT no longer stores command text with compression statistics, masks secrets typed inline in commands in its log, keeps up to 20 failure lines from the middle of long failed output, and names a missed edit by its first line and size. diff --git a/.alfonso/release-notes/next/compress-keep-unknown-lines.md b/.alfonso/release-notes/next/compress-keep-unknown-lines.md deleted file mode 100644 index 1dd6673131..0000000000 --- a/.alfonso/release-notes/next/compress-keep-unknown-lines.md +++ /dev/null @@ -1 +0,0 @@ -- Compressed `bash` output no longer hides lines the cargo summaries don't recognise: another check's verdict printed alongside cargo test, build, check or clippy output (such as `fmt-ok` or `win-check rc=101`) now stays visible, in order, and cargo output of 1 KiB or less is shown exactly as printed. diff --git a/.alfonso/release-notes/next/configure-callgraph-retry.md b/.alfonso/release-notes/next/configure-callgraph-retry.md deleted file mode 100644 index 14b02ce42f..0000000000 --- a/.alfonso/release-notes/next/configure-callgraph-retry.md +++ /dev/null @@ -1 +0,0 @@ -- Call graphs now retry readiness checks blocked by database locks instead of leaving an older graph unrepaired after restart. diff --git a/.alfonso/release-notes/next/configure-warnings-biome-memo.md b/.alfonso/release-notes/next/configure-warnings-biome-memo.md deleted file mode 100644 index 913c0d8aed..0000000000 --- a/.alfonso/release-notes/next/configure-warnings-biome-memo.md +++ /dev/null @@ -1 +0,0 @@ -- Configure warnings now check each folder for its Biome workspace and configuration once per pass instead of once per file, cutting background disk checks in projects with many files. diff --git a/.alfonso/release-notes/next/consent-scope-coalesce.md b/.alfonso/release-notes/next/consent-scope-coalesce.md deleted file mode 100644 index b71085263d..0000000000 --- a/.alfonso/release-notes/next/consent-scope-coalesce.md +++ /dev/null @@ -1 +0,0 @@ -- Approving read access for a whole folder now covers every read tool in that folder at once, instead of the next read tool asking again. diff --git a/.alfonso/release-notes/next/consent-settled-answer.md b/.alfonso/release-notes/next/consent-settled-answer.md deleted file mode 100644 index b2fae61555..0000000000 --- a/.alfonso/release-notes/next/consent-settled-answer.md +++ /dev/null @@ -1 +0,0 @@ -Permission answers already received by AFT no longer leave agents waiting for another notification, and overlapping retries reuse the completed result. diff --git a/.alfonso/release-notes/next/declare-tool-result-format.md b/.alfonso/release-notes/next/declare-tool-result-format.md deleted file mode 100644 index 3264a74996..0000000000 --- a/.alfonso/release-notes/next/declare-tool-result-format.md +++ /dev/null @@ -1 +0,0 @@ -AFT now declares `tool-result/v1` in every tool catalog; routes that do not request it keep their existing replies. diff --git a/.alfonso/release-notes/next/derived-incremental-writes.md b/.alfonso/release-notes/next/derived-incremental-writes.md deleted file mode 100644 index e8b628bafc..0000000000 --- a/.alfonso/release-notes/next/derived-incremental-writes.md +++ /dev/null @@ -1 +0,0 @@ -Small call-graph updates now retain unchanged graph rows and update only changed fields, avoiding unnecessary index-page writes across the checkout when editing a large file. Incremental results remain equivalent to a fresh call-graph build, with the same publication durability and ordering. diff --git a/.alfonso/release-notes/next/disk-limit-reader-markers.md b/.alfonso/release-notes/next/disk-limit-reader-markers.md deleted file mode 100644 index 5f18033a33..0000000000 --- a/.alfonso/release-notes/next/disk-limit-reader-markers.md +++ /dev/null @@ -1 +0,0 @@ -Avoid repeated reader-marker scans in disk-limit sweeps when current generations already cover the family store. Reuse only positive reader censuses within a sweep, recheck late readers before deletion, and reap stale marker files on a slower maintenance clock instead of during protection reads. diff --git a/.alfonso/release-notes/next/file-identity-stamps.md b/.alfonso/release-notes/next/file-identity-stamps.md deleted file mode 100644 index 2eeff2bfbf..0000000000 --- a/.alfonso/release-notes/next/file-identity-stamps.md +++ /dev/null @@ -1 +0,0 @@ -- AFT notices a file replaced within the same timestamp tick by one of the same size (on Windows and for store version files on every platform), instead of trusting stale cached state. diff --git a/.alfonso/release-notes/next/fork-lock-release.md b/.alfonso/release-notes/next/fork-lock-release.md deleted file mode 100644 index 71f1e8eec6..0000000000 --- a/.alfonso/release-notes/next/fork-lock-release.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed AFT's internal file locks staying held while a command was starting, which could make undo-history migration and other maintenance give up and retry later. diff --git a/.alfonso/release-notes/next/frame-loop-disk-stall.md b/.alfonso/release-notes/next/frame-loop-disk-stall.md deleted file mode 100644 index b9d8d7596e..0000000000 --- a/.alfonso/release-notes/next/frame-loop-disk-stall.md +++ /dev/null @@ -1 +0,0 @@ -- Keep background-watch diagnostics off the shared frame loop during slow database reads, and include the active step, command, request ID and elapsed time in stall snapshots. diff --git a/.alfonso/release-notes/next/frame-loop-drain.md b/.alfonso/release-notes/next/frame-loop-drain.md deleted file mode 100644 index cded09002a..0000000000 --- a/.alfonso/release-notes/next/frame-loop-drain.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed brief pauses in every session's tool replies when AFT handed off a running command during a restart while that command's state was busy. diff --git a/.alfonso/release-notes/next/frame-loop-validators.md b/.alfonso/release-notes/next/frame-loop-validators.md deleted file mode 100644 index 3948b0b05f..0000000000 --- a/.alfonso/release-notes/next/frame-loop-validators.md +++ /dev/null @@ -1 +0,0 @@ -Windows: AFT under the Subconscious daemon no longer crashes on its first shell command. diff --git a/.alfonso/release-notes/next/gh-job-log-range.md b/.alfonso/release-notes/next/gh-job-log-range.md deleted file mode 100644 index bf242b6eb5..0000000000 --- a/.alfonso/release-notes/next/gh-job-log-range.md +++ /dev/null @@ -1 +0,0 @@ -- Worker `gh run view --log` no longer fails when the log contains color codes or non-ASCII text. diff --git a/.alfonso/release-notes/next/gh-shim-url-thread-numbers.md b/.alfonso/release-notes/next/gh-shim-url-thread-numbers.md deleted file mode 100644 index 98d2d53490..0000000000 --- a/.alfonso/release-notes/next/gh-shim-url-thread-numbers.md +++ /dev/null @@ -1 +0,0 @@ -- gh shim: a governed command given an issue or pull request URL (such as `gh issue comment https://github.com///issues/513 --body hello`) now routes the bare thread number instead of failing at the route holder. diff --git a/.alfonso/release-notes/next/gh-shim-v22.md b/.alfonso/release-notes/next/gh-shim-v22.md deleted file mode 100644 index d2b831b347..0000000000 --- a/.alfonso/release-notes/next/gh-shim-v22.md +++ /dev/null @@ -1 +0,0 @@ -- gh shim (manifest 22): agents can reply in pull request review threads, resolve or unresolve review threads, edit the title and body of pull requests their bot opened (`gh pr edit`), and build pull request stacks through the stacks API as their bot; `gh stack` reads and local navigation pass through, `gh stack submit`/`sync`/`link`/`unstack`/`checkout` (which would write as the operator) and `gh stack merge`, `gh extension install`/`upgrade`/`remove` run only under the audited operator bypass, and `gh extension list` passes through. diff --git a/.alfonso/release-notes/next/gh-worker-log-failed.md b/.alfonso/release-notes/next/gh-worker-log-failed.md deleted file mode 100644 index 174de6cce0..0000000000 --- a/.alfonso/release-notes/next/gh-worker-log-failed.md +++ /dev/null @@ -1 +0,0 @@ -- Sandboxed workers' `gh run view --log-failed` prints the failed jobs' logs again instead of nothing; like GitHub CLI with whole-job logs, lines are labelled `UNKNOWN STEP`. diff --git a/.alfonso/release-notes/next/gh-worker-read-pipes.md b/.alfonso/release-notes/next/gh-worker-read-pipes.md deleted file mode 100644 index c9c9596f05..0000000000 --- a/.alfonso/release-notes/next/gh-worker-read-pipes.md +++ /dev/null @@ -1 +0,0 @@ -- Worker GitHub reads: piping gh output into head no longer reports a broken pipe error, and large pull request diffs read in full instead of failing with 'reply unavailable'. diff --git a/.alfonso/release-notes/next/glob-named-ignored-folders.md b/.alfonso/release-notes/next/glob-named-ignored-folders.md deleted file mode 100644 index ccefc731da..0000000000 --- a/.alfonso/release-notes/next/glob-named-ignored-folders.md +++ /dev/null @@ -1 +0,0 @@ -`glob` now searches an ignored folder when the pattern names its leading folders explicitly, such as `.cortexkit/internal-docs/**/*cost*`. Rules above that folder are overridden; ignore files inside it, built-in directory and database exclusions, read permissions, and walk limits still apply. Broad patterns like `**/*.md` continue to skip ignored folders. Empty-result guidance now explains how to name an ignored folder in a glob pattern. diff --git a/.alfonso/release-notes/next/grep-empty-diagnosis-cost.md b/.alfonso/release-notes/next/grep-empty-diagnosis-cost.md deleted file mode 100644 index ee2f834cba..0000000000 --- a/.alfonso/release-notes/next/grep-empty-diagnosis-cost.md +++ /dev/null @@ -1 +0,0 @@ -Empty `grep` and `glob` scope breakdowns now stop when the request runs out of time, so on very large checkouts they no longer keep using CPU in the background after the reply. diff --git a/.alfonso/release-notes/next/grep-file-kinds.md b/.alfonso/release-notes/next/grep-file-kinds.md deleted file mode 100644 index fc2bf3282a..0000000000 --- a/.alfonso/release-notes/next/grep-file-kinds.md +++ /dev/null @@ -1 +0,0 @@ -- `grep` no longer prints matching lines from lockfiles, generated and minified files, logs and command output, or JSON data files. It counts them and names the `path` or `include` value that shows them. Large results start with match counts per file and a short first page drawn from every file, totals are exact, and long lines show the part around the match. diff --git a/.alfonso/release-notes/next/head-preflight-policy.md b/.alfonso/release-notes/next/head-preflight-policy.md deleted file mode 100644 index 342b74965a..0000000000 --- a/.alfonso/release-notes/next/head-preflight-policy.md +++ /dev/null @@ -1 +0,0 @@ -Codemode programs in a head session are no longer refused after a worker plan was checked on that head's connection. diff --git a/.alfonso/release-notes/next/health-rollup-quiet-ticks.md b/.alfonso/release-notes/next/health-rollup-quiet-ticks.md deleted file mode 100644 index 4b812a5bfc..0000000000 --- a/.alfonso/release-notes/next/health-rollup-quiet-ticks.md +++ /dev/null @@ -1 +0,0 @@ -Background health refreshes now reuse unchanged cached-finding memory totals, reducing idle CPU without delaying diagnostics. diff --git a/.alfonso/release-notes/next/health-rollup-reuse-connection.md b/.alfonso/release-notes/next/health-rollup-reuse-connection.md deleted file mode 100644 index 856b6bf504..0000000000 --- a/.alfonso/release-notes/next/health-rollup-reuse-connection.md +++ /dev/null @@ -1 +0,0 @@ -Reduce background CPU usage in large multi-project sessions by reusing health-summary database connections between rollup ticks. diff --git a/.alfonso/release-notes/next/health-sweep-path-cache.md b/.alfonso/release-notes/next/health-sweep-path-cache.md deleted file mode 100644 index 6f2ad6d2a3..0000000000 --- a/.alfonso/release-notes/next/health-sweep-path-cache.md +++ /dev/null @@ -1 +0,0 @@ -- Lower background CPU use when many projects are open: the periodic health check and storage cleanup no longer look up the same storage folders again for every project. diff --git a/.alfonso/release-notes/next/health-telemetry-bound.md b/.alfonso/release-notes/next/health-telemetry-bound.md deleted file mode 100644 index 65abb4f592..0000000000 --- a/.alfonso/release-notes/next/health-telemetry-bound.md +++ /dev/null @@ -1 +0,0 @@ -- The daemon health report keeps its per-project detail on long-running machines: view cleanup statistics are capped at the 64 most recently swept families and are dropped first when the report is full. diff --git a/.alfonso/release-notes/next/idle-reaper-frame-loop.md b/.alfonso/release-notes/next/idle-reaper-frame-loop.md deleted file mode 100644 index 5f0a250bf0..0000000000 --- a/.alfonso/release-notes/next/idle-reaper-frame-loop.md +++ /dev/null @@ -1 +0,0 @@ -- Tool calls no longer slow down when many idle projects have pending file changes: the idle-project check now puts an unchanged set of changes back in one step instead of re-adding each file. diff --git a/.alfonso/release-notes/next/idle-root-release.md b/.alfonso/release-notes/next/idle-root-release.md deleted file mode 100644 index 1e84f51b05..0000000000 --- a/.alfonso/release-notes/next/idle-root-release.md +++ /dev/null @@ -1 +0,0 @@ -- Projects the AFT daemon has left idle now give back their threads, config file watches and compiled output filters, so a long-running daemon no longer grows with every project it has served. diff --git a/.alfonso/release-notes/next/import-and-ast-grep-fixes.md b/.alfonso/release-notes/next/import-and-ast-grep-fixes.md deleted file mode 100644 index afede0827b..0000000000 --- a/.alfonso/release-notes/next/import-and-ast-grep-fixes.md +++ /dev/null @@ -1 +0,0 @@ -- Organizing imports keeps comments with their imports and sorts Python in isort order; removing an import removes its end-of-line comment; ast-grep previews refuse invalid rewrites and show `$$$` captures as written (#827, #828, thanks @null-axiom) diff --git a/.alfonso/release-notes/next/index-build-cpu.md b/.alfonso/release-notes/next/index-build-cpu.md deleted file mode 100644 index 0e65d22c7f..0000000000 --- a/.alfonso/release-notes/next/index-build-cpu.md +++ /dev/null @@ -1 +0,0 @@ -- Index builds reuse each caller's symbol lookup table instead of scanning all of its symbols for every local call. diff --git a/.alfonso/release-notes/next/index-event-log-fields.md b/.alfonso/release-notes/next/index-event-log-fields.md deleted file mode 100644 index 6a83b12eea..0000000000 --- a/.alfonso/release-notes/next/index-event-log-fields.md +++ /dev/null @@ -1 +0,0 @@ -- Index timing and progress measurements now remain available in daemon logs even when project paths are long. diff --git a/.alfonso/release-notes/next/inspect-accuracy.md b/.alfonso/release-notes/next/inspect-accuracy.md deleted file mode 100644 index af10b484ab..0000000000 --- a/.alfonso/release-notes/next/inspect-accuracy.md +++ /dev/null @@ -1 +0,0 @@ -`aft_inspect` now follows Rust function values, private macro helpers and source `cfg` call chains instead of reporting their live callees as dead. Pyright/basedpyright document diagnostics are dynamically negotiated and requested for the scoped files; a successful file response certifies coverage without a timing grace. Open-file pulls and server-requested refreshes also keep warm counts and alerts current. Failed or cancelled pulls, and unchanged replies lacking a cached prior pull report, stay unknown rather than checked-clean; `disablePullDiagnostics` and capability unregistration are respected. For servers without negotiated pull, announced analysis runs remain provisional until a server analysis-progress end event follows each publication. When no analysis run is announced or begun, each eligible post-input publication may settle after its own two-second grace, as identified in producer details. Previously certified warm E/W counts and alert episodes stay stable through reanalysis. diff --git a/.alfonso/release-notes/next/inspect-fresh-after-edit.md b/.alfonso/release-notes/next/inspect-fresh-after-edit.md deleted file mode 100644 index 324942b589..0000000000 --- a/.alfonso/release-notes/next/inspect-fresh-after-edit.md +++ /dev/null @@ -1 +0,0 @@ -- Scoped `aft_inspect` no longer reports a fixed error as authoritative after you edit a file with AFT or change it on disk, including files outside the project: pull-based servers such as the TypeScript 7 native server are asked again, and a file whose current text cannot be sent is reported unknown. diff --git a/.alfonso/release-notes/next/late-approval-budget.md b/.alfonso/release-notes/next/late-approval-budget.md deleted file mode 100644 index dabb0b29a1..0000000000 --- a/.alfonso/release-notes/next/late-approval-budget.md +++ /dev/null @@ -1 +0,0 @@ -- An approved outside-folder read or write no longer fails with a filesystem deadline when AFT was busy at the moment you approved it. diff --git a/.alfonso/release-notes/next/lease-heartbeat-open-handles.md b/.alfonso/release-notes/next/lease-heartbeat-open-handles.md deleted file mode 100644 index 1a34255a1d..0000000000 --- a/.alfonso/release-notes/next/lease-heartbeat-open-handles.md +++ /dev/null @@ -1 +0,0 @@ -- The lease heartbeat keeps its lock files open between beats instead of reopening them each time, cutting its CPU use, and no longer warns about leases this process owns. diff --git a/.alfonso/release-notes/next/lease-release-descriptors.md b/.alfonso/release-notes/next/lease-release-descriptors.md deleted file mode 100644 index 32f161cf01..0000000000 --- a/.alfonso/release-notes/next/lease-release-descriptors.md +++ /dev/null @@ -1 +0,0 @@ -AFT no longer keeps a closed project's lock files and database open, and a lease heartbeat recovers on its next beat after one unreadable read of its lock file. diff --git a/.alfonso/release-notes/next/legacy-alias-index.md b/.alfonso/release-notes/next/legacy-alias-index.md deleted file mode 100644 index c75a2fa162..0000000000 --- a/.alfonso/release-notes/next/legacy-alias-index.md +++ /dev/null @@ -1 +0,0 @@ -- Connecting a project AFT hasn't seen before no longer re-reads and re-resolves every entry of its old cache-key file on each connect (about 0.1 to 0.5 s per new project on large files). diff --git a/.alfonso/release-notes/next/local-embed-memory.md b/.alfonso/release-notes/next/local-embed-memory.md deleted file mode 100644 index 6bb2f87548..0000000000 --- a/.alfonso/release-notes/next/local-embed-memory.md +++ /dev/null @@ -1 +0,0 @@ -- Local semantic indexing now releases temporary ONNX Runtime CPU memory after each inference instead of retaining the largest attention allocation. All roots share one build/refresh session and a separate query session, so searches do not queue behind indexing batches. Queries reuse their small buffers and run without indexing-sized thread pools. Idle build sessions unload and reload on demand; root model leases keep the query session warm until unbind or eviction. The memory census reports live embedding sessions and estimated model bytes. diff --git a/.alfonso/release-notes/next/log-session-prefix.md b/.alfonso/release-notes/next/log-session-prefix.md deleted file mode 100644 index b090c2d7fe..0000000000 --- a/.alfonso/release-notes/next/log-session-prefix.md +++ /dev/null @@ -1 +0,0 @@ -Log lines no longer carry the wrong session id: slow-bind warnings name the bind's own session, and lines not tied to a session carry no session tag (#1008, thanks @iceteaSA). diff --git a/.alfonso/release-notes/next/lsp-applicability-incremental.md b/.alfonso/release-notes/next/lsp-applicability-incremental.md deleted file mode 100644 index fd2aadd16c..0000000000 --- a/.alfonso/release-notes/next/lsp-applicability-incremental.md +++ /dev/null @@ -1 +0,0 @@ -- Creating, renaming or deleting ordinary source files no longer makes language-server detection rescan the whole project. diff --git a/.alfonso/release-notes/next/lsp-reader-instances.md b/.alfonso/release-notes/next/lsp-reader-instances.md deleted file mode 100644 index 92e5f09ac1..0000000000 --- a/.alfonso/release-notes/next/lsp-reader-instances.md +++ /dev/null @@ -1 +0,0 @@ -Language-server restarts now ignore diagnostics, requests, and exit notifications left over from the previous server instance. diff --git a/.alfonso/release-notes/next/lsp-rooted-hints.md b/.alfonso/release-notes/next/lsp-rooted-hints.md deleted file mode 100644 index 88eecccc58..0000000000 --- a/.alfonso/release-notes/next/lsp-rooted-hints.md +++ /dev/null @@ -1 +0,0 @@ -LSP symbol hints now resolve relative paths, absolute paths, and file URIs consistently within the project, without confusing same-named files or outside-project hints. diff --git a/.alfonso/release-notes/next/lsp-startup-reservations.md b/.alfonso/release-notes/next/lsp-startup-reservations.md deleted file mode 100644 index 0651f9b04e..0000000000 --- a/.alfonso/release-notes/next/lsp-startup-reservations.md +++ /dev/null @@ -1 +0,0 @@ -- Language servers start once per workspace even when several requests arrive together, and file changes made while a server is starting are sent to it once it is ready. diff --git a/.alfonso/release-notes/next/managed-git-hook-hang.md b/.alfonso/release-notes/next/managed-git-hook-hang.md deleted file mode 100644 index 0e6af8155b..0000000000 --- a/.alfonso/release-notes/next/managed-git-hook-hang.md +++ /dev/null @@ -1 +0,0 @@ -- A managed git hook no longer hangs a commit when a helper process it starts keeps running. diff --git a/.alfonso/release-notes/next/oc1-read-rules-outline-zoom.md b/.alfonso/release-notes/next/oc1-read-rules-outline-zoom.md deleted file mode 100644 index 01d0f22f25..0000000000 --- a/.alfonso/release-notes/next/oc1-read-rules-outline-zoom.md +++ /dev/null @@ -1 +0,0 @@ -OpenCode 1 outline and zoom now honor per-file read rules, including batches and revision reads, and zoom checks re-exported source on both OpenCode hosts; thanks @iceteaSA. diff --git a/.alfonso/release-notes/next/occipital-read-only.md b/.alfonso/release-notes/next/occipital-read-only.md deleted file mode 100644 index 354fdc68c2..0000000000 --- a/.alfonso/release-notes/next/occipital-read-only.md +++ /dev/null @@ -1 +0,0 @@ -Rich-UI reads carried by `occipital` now use an AFT-enforced read-only tool allowlist. Calls and catalogs cannot expose editing, command execution, or future tools by default. Task observations remain session-scoped, and reads that need a new permission approval are refused without prompting. Live URL and GitHub issue/pull-request targets are refused before document fetching or cache lookup. diff --git a/.alfonso/release-notes/next/opencode-always-narrow.md b/.alfonso/release-notes/next/opencode-always-narrow.md deleted file mode 100644 index 1159a653a9..0000000000 --- a/.alfonso/release-notes/next/opencode-always-narrow.md +++ /dev/null @@ -1 +0,0 @@ -OpenCode's “always” approval for an outside file in home, a home ancestor, a root-level folder, or a system folder now applies only to that file. diff --git a/.alfonso/release-notes/next/opencode2-plugin-fixes-646.md b/.alfonso/release-notes/next/opencode2-plugin-fixes-646.md deleted file mode 100644 index ccf741fda8..0000000000 --- a/.alfonso/release-notes/next/opencode2-plugin-fixes-646.md +++ /dev/null @@ -1 +0,0 @@ -Fix OpenCode 2 subagent lookup, engine-result discrimination, live progress, Location diagnostics, session cleanup, and linked-worktree overrides; extend long-command bridge budgets (issue #646). diff --git a/.alfonso/release-notes/next/oss-index-rss.md b/.alfonso/release-notes/next/oss-index-rss.md deleted file mode 100644 index 7e964f9168..0000000000 --- a/.alfonso/release-notes/next/oss-index-rss.md +++ /dev/null @@ -1 +0,0 @@ -Reduce peak memory during cold call-graph indexing with a small parsed-file working set and an 8 MiB build page cache. Graph results, bulk-write batching, and interrupted-build recovery are unchanged. diff --git a/.alfonso/release-notes/next/outline-batch-bounds.md b/.alfonso/release-notes/next/outline-batch-bounds.md deleted file mode 100644 index 976a0b0d3d..0000000000 --- a/.alfonso/release-notes/next/outline-batch-bounds.md +++ /dev/null @@ -1 +0,0 @@ -- Multi-file and directory outlines reuse cached parse results on repeat calls, stop parsing once the reply is full, cap `files` lists at 200 and return a partial result marked "time limit" near the call deadline; whitespace-reflow edit and patch matching now runs in linear time, so a failed edit with very large match text no longer takes seconds; and slow-call log lines now record the argument shape and edit step times. diff --git a/.alfonso/release-notes/next/page-collect.md b/.alfonso/release-notes/next/page-collect.md deleted file mode 100644 index bcf8b75859..0000000000 --- a/.alfonso/release-notes/next/page-collect.md +++ /dev/null @@ -1 +0,0 @@ -AFT can collect an HTML page and the files it references for the phone's page view, under the session's own read rules. diff --git a/.alfonso/release-notes/next/perf-a15-lsp.md b/.alfonso/release-notes/next/perf-a15-lsp.md deleted file mode 100644 index 4241116233..0000000000 --- a/.alfonso/release-notes/next/perf-a15-lsp.md +++ /dev/null @@ -1 +0,0 @@ -- Watcher bursts no longer probe file paths while holding the LSP manager lock when no language servers are running. diff --git a/.alfonso/release-notes/next/pi-outside-access.md b/.alfonso/release-notes/next/pi-outside-access.md deleted file mode 100644 index c275893c4c..0000000000 --- a/.alfonso/release-notes/next/pi-outside-access.md +++ /dev/null @@ -1 +0,0 @@ -- Pi: the new setting `pi.external_access_ask` (on by default) controls whether Pi asks before AFT reads or writes a file outside the project. Only your user config can turn it off. Pi sessions without a screen (print, JSON, RPC) now allow outside access without asking instead of refusing it. On OMP, AFT tells OMP how risky each call is, so OMP's own approval mode decides when to ask. diff --git a/.alfonso/release-notes/next/profile-busy-thread-stacks.md b/.alfonso/release-notes/next/profile-busy-thread-stacks.md deleted file mode 100644 index 3dd2ed3d54..0000000000 --- a/.alfonso/release-notes/next/profile-busy-thread-stacks.md +++ /dev/null @@ -1 +0,0 @@ -- `aft profile` now lists the heaviest stacks of a busy thread whose work spreads over many small calls, instead of an empty list, and when debug symbols cannot be used it keeps the stack frames raw, shows the reason on each affected thread, and continues instead of failing. On Linux it now reads `perf script`'s default output and counts a stack that repeats across samples as one path with its full sample count. diff --git a/.alfonso/release-notes/next/project-bash-env.md b/.alfonso/release-notes/next/project-bash-env.md deleted file mode 100644 index 3022ba8c55..0000000000 --- a/.alfonso/release-notes/next/project-bash-env.md +++ /dev/null @@ -1 +0,0 @@ -- Trusted projects can set `bash.env` in their own `.cortexkit/aft.jsonc`, so a repository's tools get the variables they need while your own values still win on any name you both set. diff --git a/.alfonso/release-notes/next/publication-extract-reuse.md b/.alfonso/release-notes/next/publication-extract-reuse.md deleted file mode 100644 index 0936e2635a..0000000000 --- a/.alfonso/release-notes/next/publication-extract-reuse.md +++ /dev/null @@ -1 +0,0 @@ -- Publishing a Rust project's call graph after an edit does far less work: AFT indexes each file's syntax once instead of re-walking it for every method call, with identical results. diff --git a/.alfonso/release-notes/next/queued-outside-edit-diagnostics.md b/.alfonso/release-notes/next/queued-outside-edit-diagnostics.md deleted file mode 100644 index 2cf354a146..0000000000 --- a/.alfonso/release-notes/next/queued-outside-edit-diagnostics.md +++ /dev/null @@ -1 +0,0 @@ -- `aft_inspect` no longer reports Rust files as clean right after another program changes them while AFT's language-server connection is busy; it now waits for the `cargo check` that change needs, or says the check is still running. diff --git a/.alfonso/release-notes/next/reader-tool-catalogs.md b/.alfonso/release-notes/next/reader-tool-catalogs.md deleted file mode 100644 index b96933b98c..0000000000 --- a/.alfonso/release-notes/next/reader-tool-catalogs.md +++ /dev/null @@ -1 +0,0 @@ -- Tools served through the CortexKit daemon describe each tool once, mention only tools the session actually has, and ask `read`, `write` and `edit` for `path` (`filePath` still works); a backwards `endLine` now says it is a line number, not a count. diff --git a/.alfonso/release-notes/next/reclaim-deleted-roots.md b/.alfonso/release-notes/next/reclaim-deleted-roots.md deleted file mode 100644 index 6d4b2f2127..0000000000 --- a/.alfonso/release-notes/next/reclaim-deleted-roots.md +++ /dev/null @@ -1 +0,0 @@ -Fixed deleted project roots being retained indefinitely by terminal bash task records or another root's tasks. Reclaim now stops the deleted root's running tasks and terminal-task survivor groups before releasing its artifacts. Failed cleanup attempts are spaced at least 30 seconds apart per root, with in-flight, retry-backoff, and busy-registry reasons reported in the idle-reap census. diff --git a/.alfonso/release-notes/next/remote-cancel-confirmed.md b/.alfonso/release-notes/next/remote-cancel-confirmed.md deleted file mode 100644 index 7f38ab6cc4..0000000000 --- a/.alfonso/release-notes/next/remote-cancel-confirmed.md +++ /dev/null @@ -1 +0,0 @@ -Remote cancellations confirmed stopped by the runner now report killed instead of an unknown outcome, without a possibly-still-running warning. diff --git a/.alfonso/release-notes/next/remote-stop-registration-completion.md b/.alfonso/release-notes/next/remote-stop-registration-completion.md deleted file mode 100644 index fbca694a54..0000000000 --- a/.alfonso/release-notes/next/remote-stop-registration-completion.md +++ /dev/null @@ -1 +0,0 @@ -- Remote background tasks now reliably deliver their completion when stopping a task races with restoring its session. diff --git a/.alfonso/release-notes/next/remote-unknown-cancel.md b/.alfonso/release-notes/next/remote-unknown-cancel.md deleted file mode 100644 index c718d647eb..0000000000 --- a/.alfonso/release-notes/next/remote-unknown-cancel.md +++ /dev/null @@ -1 +0,0 @@ -Remote bash tasks with an unknown outcome can now be cancelled with `bash_kill` or when their session scope ends, while their run timeout is still active. diff --git a/.alfonso/release-notes/next/replay-admission-race.md b/.alfonso/release-notes/next/replay-admission-race.md deleted file mode 100644 index 39a6f48f9a..0000000000 --- a/.alfonso/release-notes/next/replay-admission-race.md +++ /dev/null @@ -1 +0,0 @@ -Deferred recovery no longer starts another replay batch after a project's last route disconnects; a batch already admitted may finish. diff --git a/.alfonso/release-notes/next/replay-project-scoped.md b/.alfonso/release-notes/next/replay-project-scoped.md deleted file mode 100644 index 9a92fdeda6..0000000000 --- a/.alfonso/release-notes/next/replay-project-scoped.md +++ /dev/null @@ -1 +0,0 @@ -Background-task recovery now skips task bundles already indexed by the database, records legacy discoveries once, and resumes bounded scans without reopening the same history. diff --git a/.alfonso/release-notes/next/restart-preview.md b/.alfonso/release-notes/next/restart-preview.md deleted file mode 100644 index ccbc1bde1f..0000000000 --- a/.alfonso/release-notes/next/restart-preview.md +++ /dev/null @@ -1 +0,0 @@ -- Ticket-only background completion and watch previews stay visible after a daemon restart; only the task's revoked gh-shim ticket is redacted. diff --git a/.alfonso/release-notes/next/retention-bind-latency.md b/.alfonso/release-notes/next/retention-bind-latency.md deleted file mode 100644 index 7f950d99b8..0000000000 --- a/.alfonso/release-notes/next/retention-bind-latency.md +++ /dev/null @@ -1 +0,0 @@ -- Worker checkouts connect faster during cache cleanup, while newly connected checkouts still keep their cached data safe. diff --git a/.alfonso/release-notes/next/retention-deadline-incomplete.md b/.alfonso/release-notes/next/retention-deadline-incomplete.md deleted file mode 100644 index 466a98e6dc..0000000000 --- a/.alfonso/release-notes/next/retention-deadline-incomplete.md +++ /dev/null @@ -1 +0,0 @@ -- Storage retention reports a cache walk cut off by its time limit as incomplete instead of protected, so later passes retry it. diff --git a/.alfonso/release-notes/next/retention-lease-dir-once.md b/.alfonso/release-notes/next/retention-lease-dir-once.md deleted file mode 100644 index d2189d880d..0000000000 --- a/.alfonso/release-notes/next/retention-lease-dir-once.md +++ /dev/null @@ -1 +0,0 @@ -- Reduced retention cleanup filesystem work by resolving each distinct checkout root only once per pass, without changing which caches are protected. diff --git a/.alfonso/release-notes/next/retention-manifest-cache.md b/.alfonso/release-notes/next/retention-manifest-cache.md deleted file mode 100644 index 54a055fb92..0000000000 --- a/.alfonso/release-notes/next/retention-manifest-cache.md +++ /dev/null @@ -1 +0,0 @@ -- Background storage cleanup no longer decodes every project's view manifests on each pass. It reads a compact key file kept beside each manifest, so it uses far less CPU and memory with many projects and finishes passes it used to abandon at its deadline. diff --git a/.alfonso/release-notes/next/retention-trash-reaper.md b/.alfonso/release-notes/next/retention-trash-reaper.md deleted file mode 100644 index bea7e57c60..0000000000 --- a/.alfonso/release-notes/next/retention-trash-reaper.md +++ /dev/null @@ -1 +0,0 @@ -- Disk space from removed checkouts is now reclaimed; previously deleted views could stay in AFT's trash folder. diff --git a/.alfonso/release-notes/next/route-project-from-stamp.md b/.alfonso/release-notes/next/route-project-from-stamp.md deleted file mode 100644 index c5256cb075..0000000000 --- a/.alfonso/release-notes/next/route-project-from-stamp.md +++ /dev/null @@ -1 +0,0 @@ -Sessions now use the folder the daemon stamps on their scope. diff --git a/.alfonso/release-notes/next/runon-background-cancel.md b/.alfonso/release-notes/next/runon-background-cancel.md deleted file mode 100644 index a73095fa34..0000000000 --- a/.alfonso/release-notes/next/runon-background-cancel.md +++ /dev/null @@ -1 +0,0 @@ -`bash_kill` now cancels a background `runon` command right away even before the runner has accepted it; a command killed before it was sent is never sent, and one killed while the runner held it is reported with an unknown outcome rather than as confirmed stopped. diff --git a/.alfonso/release-notes/next/runon-background-reply.md b/.alfonso/release-notes/next/runon-background-reply.md deleted file mode 100644 index d52e957e27..0000000000 --- a/.alfonso/release-notes/next/runon-background-reply.md +++ /dev/null @@ -1 +0,0 @@ -- Remote bash calls with background: true now return a task ID at once with background wording, instead of a message saying the command was promoted from the foreground. diff --git a/.alfonso/release-notes/next/runon-capture-remote-phase.md b/.alfonso/release-notes/next/runon-capture-remote-phase.md deleted file mode 100644 index 801757d1ba..0000000000 --- a/.alfonso/release-notes/next/runon-capture-remote-phase.md +++ /dev/null @@ -1 +0,0 @@ -A runon call that hands back while the runner still hasn't accepted the job now always names the remote phase (`submitting`) instead of sometimes omitting it. diff --git a/.alfonso/release-notes/next/runon-cd-refusal.md b/.alfonso/release-notes/next/runon-cd-refusal.md deleted file mode 100644 index de2647f772..0000000000 --- a/.alfonso/release-notes/next/runon-cd-refusal.md +++ /dev/null @@ -1 +0,0 @@ -- `runon` now refuses, before anything runs, a command that `cd`s into a folder the build server doesn't have, such as your home folder or another local checkout; set the bash tool's `workdir` instead. On Windows runners it also refuses `cd` to an absolute path. diff --git a/.alfonso/release-notes/next/runon-cd-sequential.md b/.alfonso/release-notes/next/runon-cd-sequential.md deleted file mode 100644 index c1a3e9c550..0000000000 --- a/.alfonso/release-notes/next/runon-cd-sequential.md +++ /dev/null @@ -1 +0,0 @@ -Remote `runon` no longer refuses sequential directory changes between existing folders inside the copied checkout or its siblings. diff --git a/.alfonso/release-notes/next/runon-draining-backoff.md b/.alfonso/release-notes/next/runon-draining-backoff.md deleted file mode 100644 index 1993dbaa99..0000000000 --- a/.alfonso/release-notes/next/runon-draining-backoff.md +++ /dev/null @@ -1 +0,0 @@ -Build-server retries now wait at least five seconds and add jitter after draining and hinted signer refusals, preventing waiting tasks from retrying in lockstep. diff --git a/.alfonso/release-notes/next/runon-guidance-any-os.md b/.alfonso/release-notes/next/runon-guidance-any-os.md deleted file mode 100644 index eb9e79ac2e..0000000000 --- a/.alfonso/release-notes/next/runon-guidance-any-os.md +++ /dev/null @@ -1 +0,0 @@ -- The bash tool's build-server guidance no longer assumes the agent runs on macOS, and says plainly that building and testing go remote; only running a binary that already exists on the machine stays local. diff --git a/.alfonso/release-notes/next/runon-job-id.md b/.alfonso/release-notes/next/runon-job-id.md deleted file mode 100644 index 184984ac9f..0000000000 --- a/.alfonso/release-notes/next/runon-job-id.md +++ /dev/null @@ -1 +0,0 @@ -Remote (`runon`) command results now name the build server's job id, so a report about a remote run can be traced. diff --git a/.alfonso/release-notes/next/runon-launch-observation.md b/.alfonso/release-notes/next/runon-launch-observation.md deleted file mode 100644 index d8d04422a9..0000000000 --- a/.alfonso/release-notes/next/runon-launch-observation.md +++ /dev/null @@ -1 +0,0 @@ -Remote bash launch replies no longer report an already accepted job as still waiting for input capture when the host's blocking pool is busy. Background launches still return their task ID immediately, and saved runner refusals remain errors. diff --git a/.alfonso/release-notes/next/runon-launch-reply-race.md b/.alfonso/release-notes/next/runon-launch-reply-race.md deleted file mode 100644 index 3ca78e8fb6..0000000000 --- a/.alfonso/release-notes/next/runon-launch-reply-race.md +++ /dev/null @@ -1 +0,0 @@ -- A background `runon` call whose job the build server had already accepted no longer replies that the job is still starting. diff --git a/.alfonso/release-notes/next/runon-macos.md b/.alfonso/release-notes/next/runon-macos.md deleted file mode 100644 index 36a1e202d7..0000000000 --- a/.alfonso/release-notes/next/runon-macos.md +++ /dev/null @@ -1 +0,0 @@ -bash can now send build and test commands to a macOS machine with runon: "macos" (fixed size, offline), so macOS-only tests no longer have to run on the local machine. diff --git a/.alfonso/release-notes/next/runon-missing-workdir.md b/.alfonso/release-notes/next/runon-missing-workdir.md deleted file mode 100644 index d25776fc07..0000000000 --- a/.alfonso/release-notes/next/runon-missing-workdir.md +++ /dev/null @@ -1 +0,0 @@ -- `runon` now names a missing working directory or project folder instead of blaming the build server, so you can correct the path. diff --git a/.alfonso/release-notes/next/runon-quiet-unreported.md b/.alfonso/release-notes/next/runon-quiet-unreported.md deleted file mode 100644 index d62cd7c942..0000000000 --- a/.alfonso/release-notes/next/runon-quiet-unreported.md +++ /dev/null @@ -1 +0,0 @@ -runon results no longer end with three "not reported by the runner" lines the build server never fills. diff --git a/.alfonso/release-notes/next/runon-retry-jitter.md b/.alfonso/release-notes/next/runon-retry-jitter.md deleted file mode 100644 index 2582ef8d61..0000000000 --- a/.alfonso/release-notes/next/runon-retry-jitter.md +++ /dev/null @@ -1 +0,0 @@ -- When the build server is draining or its signer is busy, remote bash commands now wait at least 5 seconds, plus a random share of the delay, before resubmitting, so many waiting commands no longer retry at the same instant. diff --git a/.alfonso/release-notes/next/runon-signer-retry.md b/.alfonso/release-notes/next/runon-signer-retry.md deleted file mode 100644 index 8bc633ec5c..0000000000 --- a/.alfonso/release-notes/next/runon-signer-retry.md +++ /dev/null @@ -1 +0,0 @@ -- A `runon` command refused because the build server's signer was briefly unavailable is now resubmitted automatically after the server's retry hint, instead of failing. diff --git a/.alfonso/release-notes/next/runon-submission-key.md b/.alfonso/release-notes/next/runon-submission-key.md deleted file mode 100644 index 1dfc927842..0000000000 --- a/.alfonso/release-notes/next/runon-submission-key.md +++ /dev/null @@ -1 +0,0 @@ -- When the connection to a build-server (runon) job is lost, AFT re-attaches to the same job and continues its output instead of reporting the outcome as unknown, on build servers that support it. diff --git a/.alfonso/release-notes/next/sandbox-git-policy-cache.md b/.alfonso/release-notes/next/sandbox-git-policy-cache.md deleted file mode 100644 index 2010ec1351..0000000000 --- a/.alfonso/release-notes/next/sandbox-git-policy-cache.md +++ /dev/null @@ -1 +0,0 @@ -- On macOS, sandboxed shell commands start faster: Git hook and config policy is now reused between commands instead of being re-read from Git each time. diff --git a/.alfonso/release-notes/next/sandbox-identity-wait-leak.md b/.alfonso/release-notes/next/sandbox-identity-wait-leak.md deleted file mode 100644 index f074b7775b..0000000000 --- a/.alfonso/release-notes/next/sandbox-identity-wait-leak.md +++ /dev/null @@ -1 +0,0 @@ -- A background command that AFT failed to start (for example after an internal error during registration or while AFT was shutting down) no longer leaves a shell process waiting forever; it exits without running the command. diff --git a/.alfonso/release-notes/next/scheduler-lock-no-disk.md b/.alfonso/release-notes/next/scheduler-lock-no-disk.md deleted file mode 100644 index 7f0d9324a2..0000000000 --- a/.alfonso/release-notes/next/scheduler-lock-no-disk.md +++ /dev/null @@ -1 +0,0 @@ -Heavy disk load no longer stalls AFT's request handling through filesystem checks made under the shared scheduler lock. diff --git a/.alfonso/release-notes/next/search-loading-walk-disclosure.md b/.alfonso/release-notes/next/search-loading-walk-disclosure.md deleted file mode 100644 index 9316663bb3..0000000000 --- a/.alfonso/release-notes/next/search-loading-walk-disclosure.md +++ /dev/null @@ -1 +0,0 @@ -- aft_search now says its results came from a capped file walk when the text index finished loading during the search, instead of reporting the index as ready. diff --git a/.alfonso/release-notes/next/search-path-prefilter.md b/.alfonso/release-notes/next/search-path-prefilter.md deleted file mode 100644 index 1ea43679ef..0000000000 --- a/.alfonso/release-notes/next/search-path-prefilter.md +++ /dev/null @@ -1 +0,0 @@ -- aft_search path and filename lookups answer faster in large projects: unrelated files are filtered out before sorting (20,000 files: median 262 ms to 42 ms), with the same results. diff --git a/.alfonso/release-notes/next/semantic-restart-reads.md b/.alfonso/release-notes/next/semantic-restart-reads.md deleted file mode 100644 index ef901358a6..0000000000 --- a/.alfonso/release-notes/next/semantic-restart-reads.md +++ /dev/null @@ -1 +0,0 @@ -- After a restart, editing a file no longer re-reads its unchanged semantic vectors from disk, so semantic indexing does much less disk I/O right after AFT restarts. diff --git a/.alfonso/release-notes/next/skip-nested-worktrees.md b/.alfonso/release-notes/next/skip-nested-worktrees.md deleted file mode 100644 index b09cdb83bb..0000000000 --- a/.alfonso/release-notes/next/skip-nested-worktrees.md +++ /dev/null @@ -1 +0,0 @@ -AFT no longer indexes linked worktrees nested inside a project folder a second time, so search and inspect stay fast and return no duplicate hits (#746, thanks @moynzzz). diff --git a/.alfonso/release-notes/next/slow-call-cpu-time.md b/.alfonso/release-notes/next/slow-call-cpu-time.md deleted file mode 100644 index 24e63c22e7..0000000000 --- a/.alfonso/release-notes/next/slow-call-cpu-time.md +++ /dev/null @@ -1 +0,0 @@ -- Slow tool-call logs now pair each phase's wall time with thread CPU time, showing `cpu=?` on Windows and whenever async waits or thread handoffs prevent reliable attribution. diff --git a/.alfonso/release-notes/next/status-push-ordering.md b/.alfonso/release-notes/next/status-push-ordering.md deleted file mode 100644 index 348aadf37a..0000000000 --- a/.alfonso/release-notes/next/status-push-ordering.md +++ /dev/null @@ -1 +0,0 @@ -Status updates no longer regress to an older value under load. When many updates arrive quickly, they are folded into the latest value before delivery, and a late out-of-order update no longer replaces a newer queued one. Reliable completion delivery is unchanged. diff --git a/.alfonso/release-notes/next/storage-cleanup-read-only-and-old-trash.md b/.alfonso/release-notes/next/storage-cleanup-read-only-and-old-trash.md deleted file mode 100644 index b49fdd784e..0000000000 --- a/.alfonso/release-notes/next/storage-cleanup-read-only-and-old-trash.md +++ /dev/null @@ -1 +0,0 @@ -Storage cleanup frees more disk space: background command records whose scratch folders hold read-only files (such as Go's module cache) are deleted again, and cache trash left by AFT v0.62.0 or earlier or too large for one cleanup pass is now reclaimed. diff --git a/.alfonso/release-notes/next/storage-floor.md b/.alfonso/release-notes/next/storage-floor.md deleted file mode 100644 index e05ed71ee5..0000000000 --- a/.alfonso/release-notes/next/storage-floor.md +++ /dev/null @@ -1 +0,0 @@ -- File tools and undo refuse direct access to AFT's own storage files and live database aliases, even inside an authorized project; multi-file reads and glob edits skip and report protected files without blocking ordinary project files. diff --git a/.alfonso/release-notes/next/subc-exit-stderr-flush.md b/.alfonso/release-notes/next/subc-exit-stderr-flush.md deleted file mode 100644 index 765f05ab12..0000000000 --- a/.alfonso/release-notes/next/subc-exit-stderr-flush.md +++ /dev/null @@ -1 +0,0 @@ -- Supervised shutdowns now give final stderr messages a short, bounded flush, so the exit reason is not left queued when the process stops. diff --git a/.alfonso/release-notes/next/subc-lost-terminals.md b/.alfonso/release-notes/next/subc-lost-terminals.md deleted file mode 100644 index 16b20d7bbd..0000000000 --- a/.alfonso/release-notes/next/subc-lost-terminals.md +++ /dev/null @@ -1 +0,0 @@ -Tool calls no longer hang until the client gives up when a project restarts or its connection closes while the call is still finishing; they now get a reply. diff --git a/.alfonso/release-notes/next/subc-stderr-mirror.md b/.alfonso/release-notes/next/subc-stderr-mirror.md deleted file mode 100644 index a73f8b6895..0000000000 --- a/.alfonso/release-notes/next/subc-stderr-mirror.md +++ /dev/null @@ -1 +0,0 @@ -- Keep subc logging and flushes responsive behind a blocked stderr pipe with a bounded, loss-counted mirror, while preserving standalone stderr delivery. diff --git a/.alfonso/release-notes/next/symbol-range-span-clip.md b/.alfonso/release-notes/next/symbol-range-span-clip.md deleted file mode 100644 index d55463b62d..0000000000 --- a/.alfonso/release-notes/next/symbol-range-span-clip.md +++ /dev/null @@ -1 +0,0 @@ -Search finds the right function more often, because code that follows a function no longer bleeds into that function's search match. diff --git a/.alfonso/release-notes/next/synapse-deadline-timeout.md b/.alfonso/release-notes/next/synapse-deadline-timeout.md deleted file mode 100644 index 1ae399e4b1..0000000000 --- a/.alfonso/release-notes/next/synapse-deadline-timeout.md +++ /dev/null @@ -1 +0,0 @@ -- Synapse request attempts that expire while waiting to send now report a timeout and count toward the circuit breaker just like attempts that time out waiting for a reply. Retries within one call still count as only one timeout, and a healthy shared connection is kept open. diff --git a/.alfonso/release-notes/next/synapse-shape-compiling.md b/.alfonso/release-notes/next/synapse-shape-compiling.md deleted file mode 100644 index f97d4d407d..0000000000 --- a/.alfonso/release-notes/next/synapse-shape-compiling.md +++ /dev/null @@ -1 +0,0 @@ -- With the Synapse embedding backend, a reply saying the model is still compiling or loading no longer throws away the semantic index: indexing waits for the time Synapse names (or its usual retry delay, if that is longer) and then carries on, and searches made meanwhile use keyword results and say the model is warming up. diff --git a/.alfonso/release-notes/next/tool-result-bodies.md b/.alfonso/release-notes/next/tool-result-bodies.md deleted file mode 100644 index d292b6c730..0000000000 --- a/.alfonso/release-notes/next/tool-result-bodies.md +++ /dev/null @@ -1 +0,0 @@ -- Heads and codemode programs that request `tool-result/v1` receive AFT replies as text, data, error codes and budget-fitted images; omitted GitHub images are listed by link. diff --git a/.alfonso/release-notes/next/trace-to-hang.md b/.alfonso/release-notes/next/trace-to-hang.md deleted file mode 100644 index ff9ac13d05..0000000000 --- a/.alfonso/release-notes/next/trace-to-hang.md +++ /dev/null @@ -1 +0,0 @@ -- Call-graph tools such as trace_to and callers no longer hang forever when the first request after opening a project arrives while background index loading is waiting for a build slot. diff --git a/.alfonso/release-notes/next/train-push-queued-runner-timeout.md b/.alfonso/release-notes/next/train-push-queued-runner-timeout.md deleted file mode 100644 index 3d55c7a95a..0000000000 --- a/.alfonso/release-notes/next/train-push-queued-runner-timeout.md +++ /dev/null @@ -1 +0,0 @@ -- Pushes report queued CI jobs without runners and their labels after the 10-minute limit once active jobs finish (reported by CKTUI). diff --git a/.alfonso/release-notes/next/trigram-build-memory.md b/.alfonso/release-notes/next/trigram-build-memory.md deleted file mode 100644 index 4d47eced2d..0000000000 --- a/.alfonso/release-notes/next/trigram-build-memory.md +++ /dev/null @@ -1 +0,0 @@ -- Building the text search index for a folder with very many files now uses much less memory, and the background symbol warm-up stops when the folder is closed or its indexes are released. diff --git a/.alfonso/release-notes/next/tui-footer-switch.md b/.alfonso/release-notes/next/tui-footer-switch.md deleted file mode 100644 index b9a283f6cf..0000000000 --- a/.alfonso/release-notes/next/tui-footer-switch.md +++ /dev/null @@ -1 +0,0 @@ -- The AFT health line in the OpenCode prompt footer can be turned off with `"footer": false` in the `aft` entry of tui-preferences.jsonc. diff --git a/.alfonso/release-notes/next/url-fetch-deadline.md b/.alfonso/release-notes/next/url-fetch-deadline.md deleted file mode 100644 index 7ee4661179..0000000000 --- a/.alfonso/release-notes/next/url-fetch-deadline.md +++ /dev/null @@ -1 +0,0 @@ -- Outline and zoom on a slow or unresponsive URL, or on `issue://`/`pr://` while `gh` hangs, now answer within the call budget, and a repeated failure answers at once. diff --git a/.alfonso/release-notes/next/v1-zoom-alias-admission.md b/.alfonso/release-notes/next/v1-zoom-alias-admission.md deleted file mode 100644 index cdb0278388..0000000000 --- a/.alfonso/release-notes/next/v1-zoom-alias-admission.md +++ /dev/null @@ -1 +0,0 @@ -The V1 tool provider now quietly accepts legacy zoom arguments, including top-level `path` and `symbols` or `targets`, just like the tool translator. The catalog still advertises only `batch`; mixed batch/top-level calls and unknown arguments remain refused. diff --git a/.alfonso/release-notes/next/v2-sweep-preflight.md b/.alfonso/release-notes/next/v2-sweep-preflight.md deleted file mode 100644 index 738632dab7..0000000000 --- a/.alfonso/release-notes/next/v2-sweep-preflight.md +++ /dev/null @@ -1 +0,0 @@ -Reduce disk reads during routine v2 blob-store maintenance by skipping unnecessary and duplicate sweeps. diff --git a/.alfonso/release-notes/next/v2-watch-match-wakes.md b/.alfonso/release-notes/next/v2-watch-match-wakes.md deleted file mode 100644 index 74032d45b4..0000000000 --- a/.alfonso/release-notes/next/v2-watch-match-wakes.md +++ /dev/null @@ -1 +0,0 @@ -- OpenCode 2: a background `bash_watch` now wakes the agent when its pattern matches, including a match found after a missed notification. diff --git a/.alfonso/release-notes/next/view-free-page-reclaim.md b/.alfonso/release-notes/next/view-free-page-reclaim.md deleted file mode 100644 index 9795a94499..0000000000 --- a/.alfonso/release-notes/next/view-free-page-reclaim.md +++ /dev/null @@ -1 +0,0 @@ -- A shared index store that is over its disk limit only because of free space inside its files now gives that space back to the filesystem a little each pass, instead of re-reading every entry and deleting reusable ones every ten minutes. diff --git a/.alfonso/release-notes/next/view-health-cache.md b/.alfonso/release-notes/next/view-health-cache.md deleted file mode 100644 index e109d13e39..0000000000 --- a/.alfonso/release-notes/next/view-health-cache.md +++ /dev/null @@ -1 +0,0 @@ -- The daemon's health summary no longer reopens view status databases on every tick when AFT itself made the change, cutting its per-tick cost during busy periods by about 75x. diff --git a/.alfonso/release-notes/next/view-manifest-incremental.md b/.alfonso/release-notes/next/view-manifest-incremental.md deleted file mode 100644 index c2f2919b9f..0000000000 --- a/.alfonso/release-notes/next/view-manifest-incremental.md +++ /dev/null @@ -1 +0,0 @@ -One-file view publications reuse cached manifests and HEAD listings, verify only new blob keys while deletion counters agree, and periodically cross-check a full rebuild. diff --git a/.alfonso/release-notes/next/view-missing-payload-heal.md b/.alfonso/release-notes/next/view-missing-payload-heal.md deleted file mode 100644 index bd74c73bb5..0000000000 --- a/.alfonso/release-notes/next/view-missing-payload-heal.md +++ /dev/null @@ -1 +0,0 @@ -- When a checkout's stored call-graph or semantic data goes missing (a damaged store that AFT moves aside, or one removed while AFT was stopped), AFT now rebuilds the missing entries from your files instead of leaving that checkout's call graph frozen. A view whose updates keep failing is reported in health. diff --git a/.alfonso/release-notes/next/view-publication-noop-precheck.md b/.alfonso/release-notes/next/view-publication-noop-precheck.md deleted file mode 100644 index f051d5972f..0000000000 --- a/.alfonso/release-notes/next/view-publication-noop-precheck.md +++ /dev/null @@ -1 +0,0 @@ -- Views spend less time waiting for build slots: a batch of changes to files outside the project's committed files (generated or untracked output) no longer rebuilds the view manifest. diff --git a/.alfonso/release-notes/next/view-publication-scoped-directory-reads.md b/.alfonso/release-notes/next/view-publication-scoped-directory-reads.md deleted file mode 100644 index d91e425d09..0000000000 --- a/.alfonso/release-notes/next/view-publication-scoped-directory-reads.md +++ /dev/null @@ -1 +0,0 @@ -- Views publication in a worker checkout now re-reads only the files under a changed directory (including after an agent's temporary-file-then-rename write) instead of every tracked file, and a periodic verification reads the checkout once instead of twice. diff --git a/.alfonso/release-notes/next/view-publication-single-flight.md b/.alfonso/release-notes/next/view-publication-single-flight.md deleted file mode 100644 index 59ac042555..0000000000 --- a/.alfonso/release-notes/next/view-publication-single-flight.md +++ /dev/null @@ -1 +0,0 @@ -Coalesce edits during view publication into one follow-up per root, preserving completed builds and retrying all failed paths without cancel-and-restart churn. diff --git a/.alfonso/release-notes/next/view-publication-wake.md b/.alfonso/release-notes/next/view-publication-wake.md deleted file mode 100644 index 9d77698a82..0000000000 --- a/.alfonso/release-notes/next/view-publication-wake.md +++ /dev/null @@ -1 +0,0 @@ -- With index views on, a call graph reflects an edit within seconds. A finished update no longer waits up to five minutes for an unrelated maintenance timer before it is published. diff --git a/.alfonso/release-notes/next/views-cold-build-cleanup.md b/.alfonso/release-notes/next/views-cold-build-cleanup.md deleted file mode 100644 index 00f53de874..0000000000 --- a/.alfonso/release-notes/next/views-cold-build-cleanup.md +++ /dev/null @@ -1 +0,0 @@ -Cold view builds use less disk I/O and reclaim unpublished databases and SQLite sidecars after failures, cancellation, and restart. diff --git a/.alfonso/release-notes/next/views-derived-reuse.md b/.alfonso/release-notes/next/views-derived-reuse.md deleted file mode 100644 index 362811e4a1..0000000000 --- a/.alfonso/release-notes/next/views-derived-reuse.md +++ /dev/null @@ -1 +0,0 @@ -- On macOS, a checkout whose content matches an existing one now copies its call-graph database with a file-system clone instead of rebuilding it, cutting the disk writes for that step from gigabytes to megabytes. diff --git a/.alfonso/release-notes/next/views-eviction-waits-for-cleanup-read.md b/.alfonso/release-notes/next/views-eviction-waits-for-cleanup-read.md deleted file mode 100644 index 26431549db..0000000000 --- a/.alfonso/release-notes/next/views-eviction-waits-for-cleanup-read.md +++ /dev/null @@ -1 +0,0 @@ -Disk-limit eviction no longer keeps an idle view because a background cleanup pass happened to be reading its pointer at that moment; it waits for that short read to finish. diff --git a/.alfonso/release-notes/next/views-pending-paths.md b/.alfonso/release-notes/next/views-pending-paths.md deleted file mode 100644 index 002d41596b..0000000000 --- a/.alfonso/release-notes/next/views-pending-paths.md +++ /dev/null @@ -1 +0,0 @@ -- With views on, files that are tracked but not on disk, or not valid UTF-8, no longer leave a project stuck at pending; skipped files are listed in status with their reason. diff --git a/.alfonso/release-notes/next/views-semantic-ready-snapshot.md b/.alfonso/release-notes/next/views-semantic-ready-snapshot.md deleted file mode 100644 index dacaff6c83..0000000000 --- a/.alfonso/release-notes/next/views-semantic-ready-snapshot.md +++ /dev/null @@ -1 +0,0 @@ -- With views on, semantic search no longer briefly answers with text matches only (while reporting the semantic lane as ready) right after new embeddings are published. diff --git a/.alfonso/release-notes/next/views-superseded-generation-cleanup.md b/.alfonso/release-notes/next/views-superseded-generation-cleanup.md deleted file mode 100644 index 5a695a6fc8..0000000000 --- a/.alfonso/release-notes/next/views-superseded-generation-cleanup.md +++ /dev/null @@ -1 +0,0 @@ -Reclaim superseded V1 and V2 view generations after publication, give retention a fair bounded sweep across both layouts, and report reclaimed bytes while preserving pins, readers, shared derived owners, and live SQLite connections. diff --git a/.alfonso/release-notes/next/views-write-attribution.md b/.alfonso/release-notes/next/views-write-attribution.md deleted file mode 100644 index b192f5b96f..0000000000 --- a/.alfonso/release-notes/next/views-write-attribution.md +++ /dev/null @@ -1 +0,0 @@ -- View publication log lines now show how many bytes each index store wrote and why the publication was scheduled, so write volume can be traced to its cause. diff --git a/.alfonso/release-notes/next/watchdog-layout-cache.md b/.alfonso/release-notes/next/watchdog-layout-cache.md deleted file mode 100644 index 51886f57a6..0000000000 --- a/.alfonso/release-notes/next/watchdog-layout-cache.md +++ /dev/null @@ -1 +0,0 @@ -- Background task monitoring uses less CPU while finished commands wait for surviving processes to release their scratch files. diff --git a/.alfonso/release-notes/next/watchdog-marker-poll.md b/.alfonso/release-notes/next/watchdog-marker-poll.md deleted file mode 100644 index ba93b528e0..0000000000 --- a/.alfonso/release-notes/next/watchdog-marker-poll.md +++ /dev/null @@ -1 +0,0 @@ -- Reduced the background-command watchdog's per-tick disk work: while a running task's exit marker is still missing or is the same empty file, the watchdog checks it with a single file-status lookup instead of re-resolving the task folder, re-reading its metadata and reopening the marker every half second. Exits are still seen on the next tick. diff --git a/.alfonso/release-notes/next/watcher-classify-cost.md b/.alfonso/release-notes/next/watcher-classify-cost.md deleted file mode 100644 index ea6daad66b..0000000000 --- a/.alfonso/release-notes/next/watcher-classify-cost.md +++ /dev/null @@ -1 +0,0 @@ -- Reduced watcher CPU during build-output bursts: macOS callbacks hand off whole event batches, topology checks share directory probes and stop at already-installed exclusions, and root-deletion polling no longer stats the root for every event. Ignore rules, reported paths, and independent symlink/device traversal checks are unchanged. diff --git a/.alfonso/release-notes/next/watcher-drain-forward-progress.md b/.alfonso/release-notes/next/watcher-drain-forward-progress.md deleted file mode 100644 index f1d2ebce12..0000000000 --- a/.alfonso/release-notes/next/watcher-drain-forward-progress.md +++ /dev/null @@ -1 +0,0 @@ -A steady stream of file changes can no longer stall the indexing of earlier changes: each watcher pass now applies at least one queued change even when receiving new events used its whole time budget. diff --git a/.alfonso/release-notes/next/windows-config-share-delete.md b/.alfonso/release-notes/next/windows-config-share-delete.md deleted file mode 100644 index 425a3dea29..0000000000 --- a/.alfonso/release-notes/next/windows-config-share-delete.md +++ /dev/null @@ -1 +0,0 @@ -- On Windows, an editor or tool can save AFT's user or project config file while AFT is reading it; the save is no longer refused with "access denied". diff --git a/.alfonso/release-notes/next/windows-config-watch.md b/.alfonso/release-notes/next/windows-config-watch.md deleted file mode 100644 index 33d21d2e4b..0000000000 --- a/.alfonso/release-notes/next/windows-config-watch.md +++ /dev/null @@ -1 +0,0 @@ -- On Windows, stopping or moving a config-file watch no longer occasionally freezes unrelated file operations in the AFT process. AFT now uses its own watcher for config files there. diff --git a/.alfonso/release-notes/next/windows-exit-status.md b/.alfonso/release-notes/next/windows-exit-status.md deleted file mode 100644 index 9c7efe4eea..0000000000 --- a/.alfonso/release-notes/next/windows-exit-status.md +++ /dev/null @@ -1 +0,0 @@ -On Windows, a command that ends with `exit N` now reports exit code N, including after AFT restarts while it runs. diff --git a/.alfonso/release-notes/next/windows-flush-wait.md b/.alfonso/release-notes/next/windows-flush-wait.md deleted file mode 100644 index b65e37f2b6..0000000000 --- a/.alfonso/release-notes/next/windows-flush-wait.md +++ /dev/null @@ -1 +0,0 @@ -On Windows, a finished command now waits up to 1.5 seconds for the file watcher before reporting which files it changed, so busy machines no longer mark a complete list as incomplete. diff --git a/.alfonso/release-notes/next/windows-memory-exit-code.md b/.alfonso/release-notes/next/windows-memory-exit-code.md deleted file mode 100644 index d81c2e7487..0000000000 --- a/.alfonso/release-notes/next/windows-memory-exit-code.md +++ /dev/null @@ -1 +0,0 @@ -- On Windows, a command stopped by its memory cap now always reports exit code 137, even when its terminal window closes first. diff --git a/.alfonso/release-notes/next/windows-pty-memory-kill.md b/.alfonso/release-notes/next/windows-pty-memory-kill.md deleted file mode 100644 index c7e8b480f4..0000000000 --- a/.alfonso/release-notes/next/windows-pty-memory-kill.md +++ /dev/null @@ -1 +0,0 @@ -- On Windows, a terminal-mode command stopped by its memory cap now finishes promptly instead of staying running. diff --git a/.alfonso/release-notes/next/windows-subc-teardown.md b/.alfonso/release-notes/next/windows-subc-teardown.md deleted file mode 100644 index e4e12788fe..0000000000 --- a/.alfonso/release-notes/next/windows-subc-teardown.md +++ /dev/null @@ -1 +0,0 @@ -- On Windows, a module stopping or restarting no longer risks cutting off its last responses to the daemon: AFT now finishes writing, signals the end of its output, and reads any remaining daemon input before closing the connection, so the socket closes normally instead of being reset. diff --git a/.alfonso/release-notes/next/worker-codemode-runs.md b/.alfonso/release-notes/next/worker-codemode-runs.md deleted file mode 100644 index 487978f933..0000000000 --- a/.alfonso/release-notes/next/worker-codemode-runs.md +++ /dev/null @@ -1 +0,0 @@ -Codemode programs run by workers can now call AFT tools, with only the worker's own project folder, permissions, settings and shell tasks, never those of the head agent it works for. diff --git a/.alfonso/release-notes/next/worker-gh-broker.md b/.alfonso/release-notes/next/worker-gh-broker.md deleted file mode 100644 index 26a0de39c3..0000000000 --- a/.alfonso/release-notes/next/worker-gh-broker.md +++ /dev/null @@ -1 +0,0 @@ -- Sandboxed worker commands reach AFT's GitHub read path through a private per-command broker, so they never see the daemon connection or its credentials. Worker GitHub reads stay off until a signed routing manifest turns them on. diff --git a/.alfonso/release-notes/next/worker-gh-read-relaxed.md b/.alfonso/release-notes/next/worker-gh-read-relaxed.md deleted file mode 100644 index 2c21baf4c8..0000000000 --- a/.alfonso/release-notes/next/worker-gh-read-relaxed.md +++ /dev/null @@ -1 +0,0 @@ -- Workers on the default relaxed sandbox profile on macOS can now read GitHub through AFT's worker read broker, as strict workers already could. On Linux, relaxed workers still run without the broker, because relaxed Linux does not keep one worker out of another's broker files; the daemon log names that reason. diff --git a/.alfonso/release-notes/next/worker-signal-probe.md b/.alfonso/release-notes/next/worker-signal-probe.md deleted file mode 100644 index 583c7f0d5a..0000000000 --- a/.alfonso/release-notes/next/worker-signal-probe.md +++ /dev/null @@ -1 +0,0 @@ -Worker commands on macOS can again run `kill -0` existence checks on processes outside the command; real signals to those processes stay blocked, and the Linux limit is now documented. diff --git a/.alfonso/release-notes/next/worker-signal-scope.md b/.alfonso/release-notes/next/worker-signal-scope.md deleted file mode 100644 index 568799628d..0000000000 --- a/.alfonso/release-notes/next/worker-signal-scope.md +++ /dev/null @@ -1 +0,0 @@ -- Worker sandbox: a worker command can now signal only processes started by that same command, on macOS and on Linux kernels with Landlock signal scoping (older Linux kernels report the limit as not enforced). Stop background tasks started by earlier commands with bash_kill. diff --git a/.alfonso/release-notes/next/worker-tool-policy-lazy.md b/.alfonso/release-notes/next/worker-tool-policy-lazy.md deleted file mode 100644 index 8a3f33c370..0000000000 --- a/.alfonso/release-notes/next/worker-tool-policy-lazy.md +++ /dev/null @@ -1 +0,0 @@ -- Faster worker tool calls: edits no longer build a formatter sandbox profile and private task directory unless a formatter or checker actually runs, repeat calls no longer wait on the language-server lock, and slow tool-call logs report call-policy setup (`setup=`) apart from argument translation. diff --git a/.alfonso/release-notes/next/write-folder-ask.md b/.alfonso/release-notes/next/write-folder-ask.md deleted file mode 100644 index 65eccbc33f..0000000000 --- a/.alfonso/release-notes/next/write-folder-ask.md +++ /dev/null @@ -1 +0,0 @@ -When an agent asks to write a file outside its own checkout, the permission ask now also offers write access to that file's whole folder, under the same rules that already limit which folders a read ask may offer (never the home folder, a home ancestor, a root-level folder or a system folder). diff --git a/.alfonso/release-notes/v0.63.0.md b/.alfonso/release-notes/v0.63.0.md new file mode 100644 index 0000000000..f19b98b508 --- /dev/null +++ b/.alfonso/release-notes/v0.63.0.md @@ -0,0 +1,86 @@ +# v0.63.0 + +AFT 0.63.0 adds shell memory limits, changed-file reports and a separate cache location. Diagnostics, call graphs, command recovery and permissions are fixed, with lower resource use. + +## Upgrading + +- Outdated call graphs and symbol caches rebuild on use; call-graph caches take about three quarters less disk space. +- Malformed security settings reject config instead of resetting defaults; invalid nonsecurity sections are named and skipped ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). +- `bash.env` values reach remote jobs only when listed in user `bash.runon_env`; project values are never sent ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). +- `bridge.hang_threshold` is retired. User config updates automatically; `npx @cortexkit/aft doctor --fix` removes it from project config ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md#bridge-request-timeouts)). +- Pi print/JSON/RPC sessions allow outside-project access without prompting. Interactive prompts remain on; only user config can disable `pi.external_access_ask` ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). + +## New + +- User `storage.cache_dir` puts caches on another volume; unavailable volumes disable caches without falling back to the primary disk ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md#rebuildable-cache-root-storagecache_dir)). +- User `bash.changed_files` reports `list` or `diff` changes, including background completions; default `off` ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). +- `bash.memory_limit_mib` optionally caps local commands' aggregate memory, including background and terminal commands ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). +- Trusted projects can set local `bash.env` values; user values win. Trust a project with `aft doctor filters trust` ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). +- `bash` accepts `runon: "macos"` for remote macOS-only builds and tests ([docs](https://github.com/cortexkit/aft/blob/main/docs/tools.md#bash)). +- `glob` searches ignored subtrees when the pattern names their leading folders; broader patterns still skip them. +- Worker codemode can call AFT tools with the worker's own project, permissions, settings and shell commands. +- AFT collects local HTML pages and referenced files for the phone's page view under session read rules. +- AFT's `gh` commands support review-thread replies and resolution, bot-authored PR edits and bot-authored PR stacks. +- Opt-in worker GitHub reads support strict macOS/Linux sandboxes and relaxed macOS sandboxes. +- Hide OpenCode 2's health footer with `"aft": { "footer": false }` in `tui-preferences.jsonc` ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md#opencode-tui-preferences)). + +## Changed + +- `grep` counts lockfile, generated/minified, log and JSON matches without printing them; returned `path` or `include` values show them. +- `aft_search` labels non-exact results as similar, discloses filesystem fallback and capped walks, and gives exact regex totals. +- Compressed shell output keeps unrecognized check results, small Cargo outputs and middle-of-output failures. +- Folder approvals cover read tools or writes; granted access survives busy periods, and permission replies explain outstanding grants instead of looping. +- Daemon catalogs prefer `path` (`filePath` still works), accept legacy zoom arguments, and negotiate `tool-result/v1` without changing other clients' replies. +- Indexing and undo use less memory; semantic queries no longer queue behind local indexing, and idle projects release resources. +- Call-graph updates, language-server detection and background maintenance use less CPU and disk (#746, thanks @moynzzz). + +## Fixed + +- Standalone timeouts leave other sessions running; read-only calls interrupted by a hung-process restart retry once (#646, thanks @null-axiom). +- OpenCode 2 fixes subagent lookup, progress, diagnostics, worktree overrides and long commands (#646, thanks @null-axiom). +- Call graphs mark callbacks, link constructors, disclose stale sources or potentially missing calls, and respect inline-test exclusions (#937, #973, thanks @null-axiom, @iceteaSA). +- Call graphs recover after restarts and locks, rebuild outdated non-Git caches and tolerate malformed Rust exports (#746, #771, thanks @moynzzz, @null-axiom). +- `aft_inspect` stops reporting live Rust functions dead, unverified diagnostics clean or stale errors authoritative after edits. +- Language servers start once per workspace, receive startup edits, ignore old-instance messages, retry busy watcher updates and resolve project symbol hints. +- Search and inspect stop duplicating nested linked-worktree results (#746, thanks @moynzzz). +- Gitless projects stay searchable; indexes survive adding Git, damaged caches recover, and continuous edits no longer stall indexing. +- Cache locks recover after unreadable/replaced lock files; macOS projects retry busy cache directories instead of losing indexes. +- Search stops matching functions against neighboring functions' text, bounds long-line snippets and classifies test-support files consistently. +- Unreadable indexes produce gaps instead of silent misses; semantic search fixes exported-symbol ranking and oversized summaries. +- Synapse model warm-up keeps semantic indexes; searches use keyword results while waiting, and retries count as one timeout. +- Python edits preserve indentation, multiline strings and line endings; invalid indentation rolls back (#824, thanks @null-axiom). +- Line-range/multi-edit batches accept existing filenames with glob characters, such as `app/[id]/page.tsx`; actual glob edits require one find/replace. +- Extraction preserves bindings, literals and line endings and refuses unsafe control flow; symbol moves keep TypeScript/JavaScript directives. +- Import edits preserve comments, directives and Python ordering; AST rewrite previews reject invalid rewrites and preserve `$$$` captures (#827, #828, thanks @null-axiom). +- Large matches finish promptly; Go grouped types, HTML headings and Pascal AST patterns parse correctly; timed-out outlines return partial results. +- On Unix, Bash can validate scripts AFT's parser rejects; Windows reports unknown syntax-check results. Confirmed errors name their line. +- Watches preserve split characters across output pages and disclose timed-out scans; Unix commands retain signal exit codes. +- Background completions and watch matches survive startup and restarts; OpenCode/Pi retry undelivered notifications without duplicates. +- Unknown tasks point to `bash`; storage failures stop masquerading as task-limit or missing-task errors (#691, thanks @kido5217). +- Remote background launches return task IDs before acceptance; replies identify submission progress and the build-server job. +- Remote jobs reconnect on supporting servers and retry temporary build-server refusals after a delay. +- Remote cancellations work before acceptance and after unknown outcomes; confirmed stops report killed, delayed stops return pending and later completion. +- Remote commands reject unavailable directories, allow sequential changes among copied folders, and name missing local paths. +- Outline/zoom respect URL/GitHub deadlines; calls keep replying during restarts, shutdowns and slow saves, without mislabeling daemon calls as never started. +- Codemode stops refusing valid head routes after work in other checkouts; sessions use their authorized project folder. +- Oversized or duplicate standalone requests are refused without displacing pending work; busy queues return retry errors. +- Undo waits for migration; cleanup reclaims deleted checkouts, empty/read-only task folders and old cache trash (thanks @null-axiom). +- Windows: config saves work during reads; config and call-graph watches stop without freezing unrelated file operations. +- Windows: same-size replacements invalidate stale caches, and finished command results retain their full lifetime. +- Windows: daemon shell commands stop crashing AFT; `exit N` survives restart; memory-limit stops finish with code 137. +- Kills disclose surviving processes; macOS stops waiting on processes already exiting (#830, thanks @iceteaSA) ([docs](https://github.com/cortexkit/aft/blob/main/docs/tools.md)). +- OpenCode preserves invalid preferences and prevents competing updates; status stops regressing under load. CLI keeps pinned versions, comments and exit codes. +- Pi stops stalled language-server installs; Linux ARM64 skips unsupported clangd downloads. +- Worker GitHub reads handle large diffs, pipes, colored logs and failed-job logs; AFT's `gh` commands accept issue/PR URLs. +- `aft profile` shows busy-thread stacks and raw frames without symbols; logs identify the correct session (#1008, thanks @iceteaSA). +- Managed Git hooks no longer hang on leftover helper processes. + +## Security + +- OpenCode outline/zoom enforce read rules; broad approvals stay file-only, and delete/undo refuse files swapped after approval (thanks @iceteaSA). +- File tools and undo refuse AFT storage and links to live databases, even within authorized projects. +- Phone read-only views refuse edits, commands, new permission prompts, live URLs and GitHub targets. +- Authorization failures prevent command execution; uncertain result recording reports `outcome_unknown` instead of success. +- Language-server downloads never forward GitHub tokens outside `api.github.com`; installers reject unsafe versions and skip npm install scripts. +- Formatters/checkers use the session's sandbox and grants; logs mask inline command secrets. +- macOS workers can use `kill -0`; real signals reach only their command's processes on macOS/supported Linux kernels (older kernels report unenforced) ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md#native-command-sandbox)). diff --git a/benchmarks/aft-search/slice-descriptors/land-release-notes-0.63.0.json b/benchmarks/aft-search/slice-descriptors/land-release-notes-0.63.0.json new file mode 100644 index 0000000000..27e9e44660 --- /dev/null +++ b/benchmarks/aft-search/slice-descriptors/land-release-notes-0.63.0.json @@ -0,0 +1,8 @@ +{ + "fixtures": [ + "harness-goldens" + ], + "kind": "harness", + "slice_class": "non_ranking", + "targeted_mechanism": "none" +} From 4355fa25a7d0bd6ea9454274c0e75d10675ea6cf Mon Sep 17 00:00:00 2001 From: ualtinok <94532+ualtinok@users.noreply.github.com> Date: Wed, 28 Oct 2026 01:07:52 +0100 Subject: [PATCH 2/5] v0.63.0 what's-new dialog text, Pi announcement version and the runon return_paths note Pi's ANNOUNCEMENT_VERSION had become PLUGIN_VERSION, which would re-show the dialog on every patch release and fails release.sh's version check; it is the release literal again, matching OpenCode. Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com> --- .alfonso/release-notes/next/runon-return-paths.md | 1 - .alfonso/release-notes/v0.63.0.md | 1 + packages/opencode-plugin/src/index.ts | 11 +++++------ packages/pi-plugin/src/index.ts | 10 +++++----- 4 files changed, 11 insertions(+), 12 deletions(-) delete mode 100644 .alfonso/release-notes/next/runon-return-paths.md diff --git a/.alfonso/release-notes/next/runon-return-paths.md b/.alfonso/release-notes/next/runon-return-paths.md deleted file mode 100644 index b3f619a5ee..0000000000 --- a/.alfonso/release-notes/next/runon-return-paths.md +++ /dev/null @@ -1 +0,0 @@ -- A `runon` command can now pass `return_paths` to copy up to 64 files (10 MiB in total) back from the build server to the same paths in the project, and the result lists each path as returned or not returned with the reason. diff --git a/.alfonso/release-notes/v0.63.0.md b/.alfonso/release-notes/v0.63.0.md index f19b98b508..46fdaa533f 100644 --- a/.alfonso/release-notes/v0.63.0.md +++ b/.alfonso/release-notes/v0.63.0.md @@ -17,6 +17,7 @@ AFT 0.63.0 adds shell memory limits, changed-file reports and a separate cache l - `bash.memory_limit_mib` optionally caps local commands' aggregate memory, including background and terminal commands ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). - Trusted projects can set local `bash.env` values; user values win. Trust a project with `aft doctor filters trust` ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). - `bash` accepts `runon: "macos"` for remote macOS-only builds and tests ([docs](https://github.com/cortexkit/aft/blob/main/docs/tools.md#bash)). +- `runon` commands copy up to 64 named files (10 MiB total) back with `return_paths`, reporting each as returned or not. - `glob` searches ignored subtrees when the pattern names their leading folders; broader patterns still skip them. - Worker codemode can call AFT tools with the worker's own project, permissions, settings and shell commands. - AFT collects local HTML pages and referenced files for the phone's page view under session read rules. diff --git a/packages/opencode-plugin/src/index.ts b/packages/opencode-plugin/src/index.ts index 028ec36511..d2be735382 100644 --- a/packages/opencode-plugin/src/index.ts +++ b/packages/opencode-plugin/src/index.ts @@ -193,13 +193,12 @@ const PLUGIN_VERSION: string = resolvePluginVersion(import.meta.url); * dismisses an announcement, patch releases that don't bump ANNOUNCEMENT_VERSION * will not re-show it. */ -const ANNOUNCEMENT_VERSION = "0.62.0"; +const ANNOUNCEMENT_VERSION = "0.63.0"; const ANNOUNCEMENT_FEATURES: string[] = [ - "Linux dev containers work again: a project at a bind-mount target such as `/workspace` is no longer refused as too broad.", - "Read a file as it is at any git revision with the opt-in `ref` argument on `read`, `aft_outline` and `aft_zoom` (set `revision_reads: true`).", - "`aft_safety` has a `purge` op that permanently removes a file from this session's undo backups and checkpoints, such as a secret written by mistake.", - "`aft_zoom` takes one `batch` of lookups mixing files and URLs, and OpenCode shows diffs for edits to files over 5,000 lines.", - "Idle OpenCode 2 sessions wake again when a background command finishes, and many reported issues are fixed.", + "Cap a shell command's total memory, background and terminal commands included, with `bash.memory_limit_mib`.", + "Shell results can list or diff the files a command changed: set `bash.changed_files` to `list` or `diff`.", + "Put rebuildable caches on another disk with `storage.cache_dir`.", + "Call graphs mark callback references and link constructors, Python edits keep their indentation, and many reported issues are fixed.", ]; /** diff --git a/packages/pi-plugin/src/index.ts b/packages/pi-plugin/src/index.ts index 6d71a84564..2e8cb38292 100644 --- a/packages/pi-plugin/src/index.ts +++ b/packages/pi-plugin/src/index.ts @@ -207,12 +207,12 @@ const PLUGIN_VERSION: string = (() => { } })(); -const ANNOUNCEMENT_VERSION = PLUGIN_VERSION; +const ANNOUNCEMENT_VERSION = "0.63.0"; const ANNOUNCEMENT_FEATURES: string[] = [ - "Linux dev containers work again: a project at a bind-mount target such as `/workspace` is no longer refused as too broad.", - "Read a file as it is at any git revision with the opt-in `ref` argument on `read`, `aft_outline` and `aft_zoom` (set `revision_reads: true`).", - "`aft_safety` has a `purge` op that permanently removes a file from this session's undo backups and checkpoints, such as a secret written by mistake.", - "`aft_zoom` takes one `batch` of lookups mixing files and URLs, and many reported issues are fixed.", + "Cap a shell command's total memory, background and terminal commands included, with `bash.memory_limit_mib`.", + "Shell results can list or diff the files a command changed: set `bash.changed_files` to `list` or `diff`.", + "Put rebuildable caches on another disk with `storage.cache_dir`.", + "Call graphs mark callback references and link constructors, Python edits keep their indentation, and many reported issues are fixed.", ]; /** From e526b0d1112ba620605520309189b0a3b45b4a15 Mon Sep 17 00:00:00 2001 From: ualtinok <94532+ualtinok@users.noreply.github.com> Date: Wed, 28 Oct 2026 01:57:17 +0100 Subject: [PATCH 3/5] Drop release-note lines for unreleased phone and worker features Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com> --- .alfonso/release-notes/v0.63.0.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/.alfonso/release-notes/v0.63.0.md b/.alfonso/release-notes/v0.63.0.md index 46fdaa533f..e17b2c7631 100644 --- a/.alfonso/release-notes/v0.63.0.md +++ b/.alfonso/release-notes/v0.63.0.md @@ -19,8 +19,6 @@ AFT 0.63.0 adds shell memory limits, changed-file reports and a separate cache l - `bash` accepts `runon: "macos"` for remote macOS-only builds and tests ([docs](https://github.com/cortexkit/aft/blob/main/docs/tools.md#bash)). - `runon` commands copy up to 64 named files (10 MiB total) back with `return_paths`, reporting each as returned or not. - `glob` searches ignored subtrees when the pattern names their leading folders; broader patterns still skip them. -- Worker codemode can call AFT tools with the worker's own project, permissions, settings and shell commands. -- AFT collects local HTML pages and referenced files for the phone's page view under session read rules. - AFT's `gh` commands support review-thread replies and resolution, bot-authored PR edits and bot-authored PR stacks. - Opt-in worker GitHub reads support strict macOS/Linux sandboxes and relaxed macOS sandboxes. - Hide OpenCode 2's health footer with `"aft": { "footer": false }` in `tui-preferences.jsonc` ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md#opencode-tui-preferences)). @@ -80,7 +78,6 @@ AFT 0.63.0 adds shell memory limits, changed-file reports and a separate cache l - OpenCode outline/zoom enforce read rules; broad approvals stay file-only, and delete/undo refuse files swapped after approval (thanks @iceteaSA). - File tools and undo refuse AFT storage and links to live databases, even within authorized projects. -- Phone read-only views refuse edits, commands, new permission prompts, live URLs and GitHub targets. - Authorization failures prevent command execution; uncertain result recording reports `outcome_unknown` instead of success. - Language-server downloads never forward GitHub tokens outside `api.github.com`; installers reject unsafe versions and skip npm install scripts. - Formatters/checkers use the session's sandbox and grants; logs mask inline command secrets. From 8ec2f464cd7410a0d4b71a1fdaa591861d762e69 Mon Sep 17 00:00:00 2001 From: ualtinok <94532+ualtinok@users.noreply.github.com> Date: Wed, 28 Oct 2026 01:59:09 +0100 Subject: [PATCH 4/5] Drop release-note lines for runon, the gh shim, Synapse, daemon catalogs and codemode These need CortexKit parts that are not released. Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com> --- .alfonso/release-notes/v0.63.0.md | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/.alfonso/release-notes/v0.63.0.md b/.alfonso/release-notes/v0.63.0.md index e17b2c7631..09854d7be0 100644 --- a/.alfonso/release-notes/v0.63.0.md +++ b/.alfonso/release-notes/v0.63.0.md @@ -6,7 +6,6 @@ AFT 0.63.0 adds shell memory limits, changed-file reports and a separate cache l - Outdated call graphs and symbol caches rebuild on use; call-graph caches take about three quarters less disk space. - Malformed security settings reject config instead of resetting defaults; invalid nonsecurity sections are named and skipped ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). -- `bash.env` values reach remote jobs only when listed in user `bash.runon_env`; project values are never sent ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). - `bridge.hang_threshold` is retired. User config updates automatically; `npx @cortexkit/aft doctor --fix` removes it from project config ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md#bridge-request-timeouts)). - Pi print/JSON/RPC sessions allow outside-project access without prompting. Interactive prompts remain on; only user config can disable `pi.external_access_ask` ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). @@ -16,11 +15,7 @@ AFT 0.63.0 adds shell memory limits, changed-file reports and a separate cache l - User `bash.changed_files` reports `list` or `diff` changes, including background completions; default `off` ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). - `bash.memory_limit_mib` optionally caps local commands' aggregate memory, including background and terminal commands ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). - Trusted projects can set local `bash.env` values; user values win. Trust a project with `aft doctor filters trust` ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). -- `bash` accepts `runon: "macos"` for remote macOS-only builds and tests ([docs](https://github.com/cortexkit/aft/blob/main/docs/tools.md#bash)). -- `runon` commands copy up to 64 named files (10 MiB total) back with `return_paths`, reporting each as returned or not. - `glob` searches ignored subtrees when the pattern names their leading folders; broader patterns still skip them. -- AFT's `gh` commands support review-thread replies and resolution, bot-authored PR edits and bot-authored PR stacks. -- Opt-in worker GitHub reads support strict macOS/Linux sandboxes and relaxed macOS sandboxes. - Hide OpenCode 2's health footer with `"aft": { "footer": false }` in `tui-preferences.jsonc` ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md#opencode-tui-preferences)). ## Changed @@ -29,7 +24,6 @@ AFT 0.63.0 adds shell memory limits, changed-file reports and a separate cache l - `aft_search` labels non-exact results as similar, discloses filesystem fallback and capped walks, and gives exact regex totals. - Compressed shell output keeps unrecognized check results, small Cargo outputs and middle-of-output failures. - Folder approvals cover read tools or writes; granted access survives busy periods, and permission replies explain outstanding grants instead of looping. -- Daemon catalogs prefer `path` (`filePath` still works), accept legacy zoom arguments, and negotiate `tool-result/v1` without changing other clients' replies. - Indexing and undo use less memory; semantic queries no longer queue behind local indexing, and idle projects release resources. - Call-graph updates, language-server detection and background maintenance use less CPU and disk (#746, thanks @moynzzz). @@ -46,7 +40,6 @@ AFT 0.63.0 adds shell memory limits, changed-file reports and a separate cache l - Cache locks recover after unreadable/replaced lock files; macOS projects retry busy cache directories instead of losing indexes. - Search stops matching functions against neighboring functions' text, bounds long-line snippets and classifies test-support files consistently. - Unreadable indexes produce gaps instead of silent misses; semantic search fixes exported-symbol ranking and oversized summaries. -- Synapse model warm-up keeps semantic indexes; searches use keyword results while waiting, and retries count as one timeout. - Python edits preserve indentation, multiline strings and line endings; invalid indentation rolls back (#824, thanks @null-axiom). - Line-range/multi-edit batches accept existing filenames with glob characters, such as `app/[id]/page.tsx`; actual glob edits require one find/replace. - Extraction preserves bindings, literals and line endings and refuses unsafe control flow; symbol moves keep TypeScript/JavaScript directives. @@ -56,12 +49,7 @@ AFT 0.63.0 adds shell memory limits, changed-file reports and a separate cache l - Watches preserve split characters across output pages and disclose timed-out scans; Unix commands retain signal exit codes. - Background completions and watch matches survive startup and restarts; OpenCode/Pi retry undelivered notifications without duplicates. - Unknown tasks point to `bash`; storage failures stop masquerading as task-limit or missing-task errors (#691, thanks @kido5217). -- Remote background launches return task IDs before acceptance; replies identify submission progress and the build-server job. -- Remote jobs reconnect on supporting servers and retry temporary build-server refusals after a delay. -- Remote cancellations work before acceptance and after unknown outcomes; confirmed stops report killed, delayed stops return pending and later completion. -- Remote commands reject unavailable directories, allow sequential changes among copied folders, and name missing local paths. - Outline/zoom respect URL/GitHub deadlines; calls keep replying during restarts, shutdowns and slow saves, without mislabeling daemon calls as never started. -- Codemode stops refusing valid head routes after work in other checkouts; sessions use their authorized project folder. - Oversized or duplicate standalone requests are refused without displacing pending work; busy queues return retry errors. - Undo waits for migration; cleanup reclaims deleted checkouts, empty/read-only task folders and old cache trash (thanks @null-axiom). - Windows: config saves work during reads; config and call-graph watches stop without freezing unrelated file operations. @@ -70,7 +58,6 @@ AFT 0.63.0 adds shell memory limits, changed-file reports and a separate cache l - Kills disclose surviving processes; macOS stops waiting on processes already exiting (#830, thanks @iceteaSA) ([docs](https://github.com/cortexkit/aft/blob/main/docs/tools.md)). - OpenCode preserves invalid preferences and prevents competing updates; status stops regressing under load. CLI keeps pinned versions, comments and exit codes. - Pi stops stalled language-server installs; Linux ARM64 skips unsupported clangd downloads. -- Worker GitHub reads handle large diffs, pipes, colored logs and failed-job logs; AFT's `gh` commands accept issue/PR URLs. - `aft profile` shows busy-thread stacks and raw frames without symbols; logs identify the correct session (#1008, thanks @iceteaSA). - Managed Git hooks no longer hang on leftover helper processes. From 8337b7ca71877bd348c9c581b27e1853b7f304b0 Mon Sep 17 00:00:00 2001 From: ualtinok <94532+ualtinok@users.noreply.github.com> Date: Wed, 28 Oct 2026 02:21:57 +0100 Subject: [PATCH 5/5] Pi announcement tests expect the announcement version, not the package version The dialog names the release that introduced its features; a patch release keeps the last minor's announcement. The tests read package.json and so broke as soon as the 0.63.0 announcement landed ahead of the version bump. Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com> --- .../pi-plugin/src/__tests__/headless-exit.test.ts | 15 ++++++--------- packages/pi-plugin/src/index.ts | 1 + 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/packages/pi-plugin/src/__tests__/headless-exit.test.ts b/packages/pi-plugin/src/__tests__/headless-exit.test.ts index 0da22d8e60..8c878d8ad5 100644 --- a/packages/pi-plugin/src/__tests__/headless-exit.test.ts +++ b/packages/pi-plugin/src/__tests__/headless-exit.test.ts @@ -21,6 +21,7 @@ import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "nod import { tmpdir } from "node:os"; import { join, resolve } from "node:path"; import { linkCachedExecutable } from "../../../aft-bridge/src/__tests__/test-utils/cached-executable.js"; +import { __test__ } from "../index.js"; /** How long the process may live after its shutdown hook returned. */ const EXIT_BOUND_MS = 5_000; @@ -589,7 +590,7 @@ describe.skipIf(process.platform === "win32")("approved session UI binding", () } test( - "factory without UI delivers the actual plugin version through session context", + "factory without UI delivers the release announcement through session context", async () => { const run = await notifications("notification-upgrade"); expect(run.code).toBe(0); @@ -600,11 +601,9 @@ describe.skipIf(process.platform === "win32")("approved session UI binding", () message: string; type: string; }; - const version = ( - JSON.parse(readFileSync(join(import.meta.dir, "../../package.json"), "utf8")) as { - version: string; - } - ).version; + // The dialog names the announcement release, not the package version: + // a patch release keeps the last minor's announcement. + const version = __test__.announcementVersion; expect(toast.sessionId).toBe("harness-session"); expect(toast.type).toBe("info"); expect(toast.message).toContain(`v${version}:`); @@ -711,9 +710,7 @@ describe.skipIf(process.platform === "win32")("approved session UI binding", () .filter((toast) => toast.type === "info" && toast.message.startsWith("🔧 AFT: ✨")); expect(announcements).toHaveLength(1); expect(announcements[0]?.sessionId).toBe("retry-session"); - const version = JSON.parse( - readFileSync(join(import.meta.dir, "../../package.json"), "utf8"), - ).version; + const version = __test__.announcementVersion; expect(announcements[0]?.message).toContain(`v${version}:`); expect(run.stdout).toContain(`EVENT announcement-marker ${version}`); }, diff --git a/packages/pi-plugin/src/index.ts b/packages/pi-plugin/src/index.ts index 2e8cb38292..9982e05269 100644 --- a/packages/pi-plugin/src/index.ts +++ b/packages/pi-plugin/src/index.ts @@ -1133,4 +1133,5 @@ export const __test__ = { handleConfigureWarningsForSession, shouldPrepareOnnxRuntime, createVersionMismatchHandler, + announcementVersion: ANNOUNCEMENT_VERSION, };