Description
aft_inspect times out (60s bridge timeout) on repos with Next.js App Router dynamic-route directories containing brackets/parens — e.g. (app), [locationId], [[...sign-in]], [trpc], [camis].
What happened
Every aft_inspect call takes 38-63s in bridge time and hits the 60s bridge timeout. The AFT plugin log shows every timeout is immediately preceded by a burst of pull_file_diagnostics failed: failed to parse file URI for '<path>' errors. 784 total failure lines across sessions Aug 17-19, 102 unique failing paths. Every failing path contains Next.js App Router dynamic segments with brackets/parens.
What was expected
aft_inspect should complete successfully. The URI parser should handle parentheses and brackets in directory names (valid in Next.js App Router route groups and dynamic segments).
Steps to reproduce
- Create a Next.js project with App Router route groups
(app)/ and dynamic segments [locationId]/, [[...sign-in]]/
- Run
aft_inspect in an opencode session with AFT plugin v0.51.2
- Observe 60s timeout; check
aft-plugin.log for failed to parse file URI errors preceding each timeout
Example failing paths
src/app/(app)/team/[locationId]/page.tsx
src/app/(app)/vault/[locationId]/VaultContent.tsx
src/app/api/trpc/[trpc]/route.ts
src/app/api/public-trpc/[trpc]/route.ts
src/app/sign-in/[[...sign-in]]/page.tsx
src/app/sign-up/[[...sign-up]]/page.tsx
src/app/discover/confirm/[camis]/page.tsx
src/app/(app)/[...not-found]/page.tsx
Evidence
- Every
aft_inspect timeout in the plugin log is immediately preceded by 2+ pull_file_diagnostics failed: failed to parse file URI lines for bracketed paths
- 784 total failure lines, 102 unique failing paths — all contain
(), [], or [[]] directory segments
- Bash and other AFT tools work fine (130-370ms) — only
aft_inspect is affected
- Pattern recurs across sessions (Aug 17, 18, 19) and across worktrees — not transient
.worktrees/ nested copies multiply the bad-path count (each worktree has its own (app)/[locationId]/... tree)
Root cause
pull_file_diagnostics URI parser cannot handle ()/[]/[[]] in path segments. The parser needs to percent-encode or handle these characters.
Workaround
Exclude .worktrees/ from AFT watcher to reduce path count.
Environment
- AFT CLI: v0.51.2
- AFT binary: 0.51.2
- OS: darwin arm64
- Node: v24.16.0
Diagnostics
- Timestamp: 2026-08-19T20:53:48.233Z
- AFT CLI: v0.51.2
- AFT binary: 0.51.2
- OS: darwin arm64
- Node: v24.16.0
OpenCode
- Host installed: true
- Host version: 1.18.18
- Plugin registered: true
- Plugin version: 0.51.2
- AFT enabled: true (from ~/.config/cortexkit/aft.jsonc)
- AFT config parse error: none
Config paths
{
"configDir": "/var/folders/hm/rs884dmd1k57by1tl7vx_70w0000gn/T/ocx-oc-merged-mPOMgh",
"harnessConfig": "/var/folders/hm/rs884dmd1k57by1tl7vx_70w0000gn/T/ocx-oc-merged-mPOMgh/opencode.jsonc",
"harnessConfigFormat": "jsonc",
"aftConfig": "~/.config/cortexkit/aft.jsonc",
"aftConfigFormat": "jsonc",
"tuiConfig": "/var/folders/hm/rs884dmd1k57by1tl7vx_70w0000gn/T/ocx-oc-merged-mPOMgh/tui.json",
"tuiConfigFormat": "none"
}
AFT flags
{
"$schema": "https://raw.githubusercontent.com/cortexkit/aft/main/assets/aft.schema.json",
"enabled": true,
"hoist_builtin_tools": true,
"format_on_edit": false,
"validate_on_edit": "syntax",
"configure_warnings_delivery": "toast",
"tool_surface": "recommended",
"disabled_tools": [],
"search_index": true,
"semantic_search": true,
"semantic": {
"backend": "fastembed",
"model": "all-MiniLM-L6-v2",
"timeout_ms": 25000,
"max_batch_size": 64,
"max_files": 20000
},
"restrict_to_project_root": false,
"auto_update": true,
"lsp": {
"servers": {
"tinymist": {
"extensions": [
".typ"
],
"binary": "tinymist",
"args": [],
"root_markers": [
".git",
"typst.toml"
],
"env": {
"TYPST_FONT_PATHS": "/usr/share/fonts"
},
"initialization_options": {
"formatterMode": "typstyle"
}
},
"typescript": {
"initialization_options": {
"tsserver": {
"path": "~/.bun/install/global/node_modules/typescript/lib"
}
}
},
"astro": {
"initialization_options": {
"typescript": {
"tsdk": "~/.bun/install/global/node_modules/typescript/lib"
}
}
}
},
"disabled": [
"python"
],
"python": "ty",
"diagnostic_cache_size": 5000
},
"bash": {
"rewrite": true,
"compress": true,
"background": true,
"subagent_background": true,
"foreground_wait_window_ms": 8000
},
"inspect": {
"enabled": true,
"tier2_idle_minutes": 5,
"duplicates": {
"expected_mirrors": [
[
"plugin/**",
"pi-plugin/**"
]
]
}
},
"experimental": {
"lsp_ty": false
}
}
Plugin cache
{
"path": "~/.cache/opencode/packages/@cortexkit/aft-opencode@latest",
"cached": "0.51.2",
"latest": "0.51.2",
"exists": true
}
Storage
{
"path": "~/.local/share/cortexkit/aft",
"exists": true,
"accessible": true,
"sizesByKey": {
"index": 13958100,
"semantic": 188865227,
"backups": 0,
"url_cache": 0,
"onnxruntime": 31
},
"legacyDuplication": {
"totalPartitions": 6,
"totalBytes": 130393369,
"byHarness": [
{
"harness": "opencode",
"partitions": 6,
"bytes": 130393369
}
]
}
}
ONNX Runtime
{
"required": true,
"systemPath": "/opt/homebrew/lib",
"systemVersion": "1.29.0",
"systemCompatible": true,
"ignoredSystemPath": null,
"ignoredSystemReason": null,
"cachedPath": null,
"cachedVersion": null,
"cachedCompatible": null,
"platform": "darwin-arm64",
"installHint": "brew install onnxruntime (Apple Silicon)",
"requirement": ">=1.20"
}
Log file
~/.local/share/cortexkit/aft/logs/aft-plugin.log (13927 KB)
Binary cache
{
"versions": [
"v0.41.0",
"v0.42.0",
"v0.44.0",
"v0.45.1",
"v0.46.0",
"v0.47.0",
"v0.47.1",
"v0.47.2",
"v0.48.0",
"v0.48.1",
"v0.49.0",
"v0.49.2",
"v0.49.3",
"v0.49.4",
"v0.50.0",
"v0.50.1",
"v0.51.0",
"v0.51.1",
"v0.51.2"
],
"activeVersion": "v0.51.2",
"totalSize": 1365273312,
"path": "~/.cache/aft/bin"
}
LSP cache
{
"npm": {
"path": "~/.cache/aft/lsp-packages",
"entries": [
{
"name": "@astrojs/language-server",
"path": "~/.cache/aft/lsp-packages/%40astrojs%2Flanguage-server",
"size": 66989078
},
{
"name": "@biomejs/biome",
"path": "~/.cache/aft/lsp-packages/%40biomejs%2Fbiome",
"size": 59022829
},
{
"name": "pyright",
"path": "~/.cache/aft/lsp-packages/pyright",
"size": 19459975
},
{
"name": "yaml-language-server",
"path": "~/.cache/aft/lsp-packages/yaml-language-server",
"size": 17795051
},
{
"name": "bash-language-server",
"path": "~/.cache/aft/lsp-packages/bash-language-server",
"size": 14513829
},
{
"name": "typescript-language-server",
"path": "~/.cache/aft/lsp-packages/typescript-language-server",
"size": 3226474
},
{
"name": "clangd/clangd",
"path": "~/.cache/aft/lsp-packages/clangd%2Fclangd",
"size": 79
}
],
"totalSize": 181007315
},
"github": {
"path": "~/.cache/aft/lsp-binaries",
"entries": [
{
"name": "clangd",
"path": "~/.cache/aft/lsp-binaries/clangd",
"size": 556094791
}
],
"totalSize": 556094791
},
"totalSize": 737102106
}
Recent errors (last 20, sanitized)
[2026-08-19T03:21:30.397Z] WARN [aft-plugin] [ses_fe97bb616ffevTcBn06BP5WquB] [aft-plugin] bg-notifications: drain failed: active bridge unavailable for <PROJECT>/.worktrees/fix/team-hardening
[2026-08-19T06:09:24.920Z] INFO [aft-plugin] [aft] 2026-08-19T06:09:24Z [aft] callgraph store refresh failed: sqlite error: database is locked
[2026-08-19T07:11:07.772Z] INFO [aft-plugin] [aft] 2026-08-19T07:11:07Z [aft] callgraph store refresh failed: sqlite error: database is locked
[2026-08-19T09:09:02.918Z] WARN [aft-plugin] [ses_fe6b81f74ffe84uplo5hlWUBc2] [aft-plugin] bg-notifications: drain failed: active bridge unavailable for <PROJECT>
[2026-08-19T09:09:06.984Z] WARN [aft-plugin] [ses_fe6b81f74ffe84uplo5hlWUBc2] [aft-plugin] bg-notifications: drain failed: active bridge unavailable for <PROJECT>
[2026-08-19T09:09:06.994Z] WARN [aft-plugin] [ses_fe6b81f74ffe84uplo5hlWUBc2] [aft-plugin] bg-notifications: drain failed: active bridge unavailable for <PROJECT>
[2026-08-19T09:09:09.519Z] WARN [aft-plugin] [ses_fe6b81f74ffe84uplo5hlWUBc2] [aft-plugin] bg-notifications: drain failed: active bridge unavailable for <PROJECT>
[2026-08-19T09:09:09.537Z] WARN [aft-plugin] [ses_fe6b81f74ffe84uplo5hlWUBc2] [aft-plugin] bg-notifications: drain failed: active bridge unavailable for <PROJECT>
[2026-08-19T09:09:14.745Z] WARN [aft-plugin] [ses_fe6b81f74ffe84uplo5hlWUBc2] [aft-plugin] bg-notifications: drain failed: active bridge unavailable for <PROJECT>
[2026-08-19T09:09:18.742Z] WARN [aft-plugin] [ses_fe6b81f74ffe84uplo5hlWUBc2] [aft-plugin] bg-notifications: drain failed: active bridge unavailable for <PROJECT>
[2026-08-19T09:09:18.772Z] WARN [aft-plugin] [ses_fe6b81f74ffe84uplo5hlWUBc2] [aft-plugin] bg-notifications: drain failed: active bridge unavailable for <PROJECT>
[2026-08-19T09:09:24.469Z] WARN [aft-plugin] [ses_fe6b81f74ffe84uplo5hlWUBc2] [aft-plugin] bg-notifications: drain failed: active bridge unavailable for <PROJECT>
[2026-08-19T09:09:31.582Z] WARN [aft-plugin] [ses_fe6b81f74ffe84uplo5hlWUBc2] [aft-plugin] bg-notifications: drain failed: active bridge unavailable for <PROJECT>
[2026-08-19T09:09:32.036Z] WARN [aft-plugin] [ses_fe6b81f74ffe84uplo5hlWUBc2] [aft-plugin] bg-notifications: drain failed: active bridge unavailable for <PROJECT>
[2026-08-19T09:09:40.462Z] WARN [aft-plugin] [ses_fe6b81f74ffe84uplo5hlWUBc2] [aft-plugin] bg-notifications: drain failed: active bridge unavailable for <PROJECT>
[2026-08-19T13:19:39.050Z] WARN [aft-plugin] [ses_fe5d34a06ffeD5tr7NMsLdW1kM] [aft-plugin] bg-notifications: drain failed: active bridge unavailable for <PROJECT>/.worktrees/feat/phase-3def-routes
[2026-08-19T20:10:29.467Z] WARN [aft-plugin] [ses_fe45a8ba0ffeL75SgBx5U9LCio] [aft-plugin] bg-notifications: drain failed: active bridge unavailable for <PROJECT>/.worktrees/feat/phase-3def-routes
[2026-08-19T20:18:59.269Z] INFO [aft-plugin] RPC error: status => BridgeTransportTimeoutError: [aft-plugin] Request "status" (id=4) timed out after 5000ms
[2026-08-19T20:21:02.160Z] INFO [aft-plugin] RPC error: status => BridgeTransportTimeoutError: [aft-plugin] Request "status" (id=6) timed out after 5000ms
[2026-08-19T20:21:31.681Z] WARN [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] [aft-plugin] bg-notifications: drain failed: [aft-plugin] Request "bash_drain_completions" (id=7) timed out after 30000ms
Recent AFT tool failures
- spawn: failed to spawn ×4
- status: timed out after 5000ms ×4
- tool_call: timed out after 60000ms ×4
- bridge killed after timeout ×3
- tool_call: timed out after 30000ms ×3
- bash_drain_completions: timed out after 30000ms ×2
Logs (last 200 lines per harness)
OpenCode log (~/.local/share/cortexkit/aft/logs/aft-plugin.log)
[2026-08-19T20:45:34.829Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=153ms pre=0ms bridge=152ms post=0ms
[2026-08-19T20:45:36.562Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=3379ms pre=0ms bridge=3379ms post=0ms
[2026-08-19T20:45:48.604Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=154ms pre=0ms bridge=154ms post=0ms
[2026-08-19T20:45:49.083Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=156ms pre=0ms bridge=156ms post=0ms
[2026-08-19T20:45:49.289Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=159ms pre=0ms bridge=159ms post=0ms
[2026-08-19T20:45:49.760Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=150ms pre=0ms bridge=150ms post=1ms
[2026-08-19T20:45:59.316Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=361ms pre=0ms bridge=361ms post=0ms
[2026-08-19T20:46:00.242Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=433ms pre=0ms bridge=432ms post=0ms
[2026-08-19T20:46:00.355Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=256ms pre=0ms bridge=256ms post=0ms
[2026-08-19T20:46:00.695Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=261ms pre=0ms bridge=260ms post=0ms
[2026-08-19T20:46:06.782Z] INFO [aft-plugin] [aft] 2026-08-19T20:46:06Z [aft] [ses_fe45310ffffeURgTSI81snBf3L] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=57 tier2=[none] semantic={collects:0,files:0,chunks:0,ms:0} callgraph_invalidations=0 executor_completed={interactive:0,maintenance:0} oldest_queued_ms={interactive:none,maintenance:none} toolcall={new:0,window:0,p50_total_ms:0,max_total_ms:0,p50_queue_ms:0,max_queue_ms:0} file_log_dropped=0
[2026-08-19T20:46:13.511Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=361ms pre=0ms bridge=360ms post=0ms
[2026-08-19T20:46:15.736Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=1987ms pre=0ms bridge=1987ms post=0ms
[2026-08-19T20:46:20.320Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=8119ms pre=0ms bridge=8119ms post=0ms
[2026-08-19T20:46:29.829Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=5161ms pre=0ms bridge=5161ms post=0ms
[2026-08-19T20:46:38.104Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=12992ms pre=0ms bridge=12992ms post=0ms
[2026-08-19T20:46:42.529Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=1709ms pre=0ms bridge=1708ms post=0ms
[2026-08-19T20:47:06.932Z] INFO [aft-plugin] [aft] 2026-08-19T20:47:06Z [aft] [ses_fe45310ffffeURgTSI81snBf3L] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=20 tier2=[none] semantic={collects:0,files:0,chunks:0,ms:0} callgraph_invalidations=0 executor_completed={interactive:0,maintenance:0} oldest_queued_ms={interactive:none,maintenance:none} toolcall={new:0,window:0,p50_total_ms:0,max_total_ms:0,p50_queue_ms:0,max_queue_ms:0} file_log_dropped=0
[2026-08-19T20:47:31.452Z] INFO [aft-plugin] [aft] 2026-08-19T20:47:31Z [aft] [ses_fe45310ffffeURgTSI81snBf3L] bash_wait_detach: session=ses_fe45310ffffeURgTSI81snBf3L detached=false active_wait_sessions=0
[2026-08-19T20:47:31.452Z] INFO [aft-plugin] [aft] 2026-08-19T20:47:31Z [aft] [ses_fe45310ffffeURgTSI81snBf3L] bash_wait_detach: session=ses_fe45310ffffeURgTSI81snBf3L detached=false active_wait_sessions=0
[2026-08-19T20:47:31.452Z] INFO [aft-plugin] [bash_wait_detach] no active wait found for session ses_fe45310ffffeURgTSI81snBf3L (signaled 2 bridge(s))
[2026-08-19T20:47:35.622Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=157ms pre=0ms bridge=156ms post=0ms
[2026-08-19T20:47:36.252Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=155ms pre=0ms bridge=154ms post=0ms
[2026-08-19T20:47:37.466Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=183ms pre=0ms bridge=183ms post=0ms
[2026-08-19T20:47:58.220Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=3691ms pre=0ms bridge=3691ms post=0ms
[2026-08-19T20:47:58.220Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=1865ms pre=0ms bridge=1864ms post=0ms
[2026-08-19T20:48:01.842Z] INFO [aft-plugin] [aft] 2026-08-19T20:48:01Z [aft] [ses_fe45310ffffeURgTSI81snBf3L] bash_wait_detach: session=ses_fe45310ffffeURgTSI81snBf3L detached=false active_wait_sessions=0
[2026-08-19T20:48:01.843Z] INFO [aft-plugin] [aft] 2026-08-19T20:48:01Z [aft] [ses_fe45310ffffeURgTSI81snBf3L] bash_wait_detach: session=ses_fe45310ffffeURgTSI81snBf3L detached=false active_wait_sessions=0
[2026-08-19T20:48:01.843Z] INFO [aft-plugin] [bash_wait_detach] no active wait found for session ses_fe45310ffffeURgTSI81snBf3L (signaled 2 bridge(s))
[2026-08-19T20:48:01.958Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=5619ms pre=0ms bridge=5619ms post=0ms
[2026-08-19T20:48:07.025Z] INFO [aft-plugin] [aft] 2026-08-19T20:48:07Z [aft] [ses_fe45310ffffeURgTSI81snBf3L] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=22 tier2=[none] semantic={collects:0,files:0,chunks:0,ms:0} callgraph_invalidations=0 executor_completed={interactive:0,maintenance:0} oldest_queued_ms={interactive:none,maintenance:none} toolcall={new:0,window:0,p50_total_ms:0,max_total_ms:0,p50_queue_ms:0,max_queue_ms:0} file_log_dropped=0
[2026-08-19T20:48:16.232Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] [aft-plugin] bg-notifications: wake scheduled {"event":"bash_completion_wake_scheduled","delay_ms":200,"pending_completions":1,"pending_long_running":0,"pending_pattern_matches":0,"retry_attempt":0}
[2026-08-19T20:48:16.433Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] [aft-plugin] bg-notifications: wake fire {"event":"bash_completion_wake_fire","task_ids":["bash-01426a59d77436f7"],"long_running_task_ids":[],"reminder_sha256":"ff7a787ea841d7ba","reminder_chars":811,"retry_attempt":0}
[2026-08-19T20:48:16.440Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] [aft-plugin] bg-notifications: wake promptAsync start {"event":"bash_completion_wake_prompt_async_start","delivery_id":"aftdel_ce5334cb-6b96-4867-9e02-37d15a276f47","attempt":1,"task_ids":["bash-01426a59d77436f7"],"directory":"<PROJECT>","reminder_sha256":"ff7a787ea841d7ba","reminder_chars":811,"prompt_context":{"agent":"build","model":{"providerID":"ollama-cloud","modelID":"glm-5.2"},"variant":null}}
[2026-08-19T20:48:16.443Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] [aft-plugin] bg-notifications: wake promptAsync ok {"event":"bash_completion_wake_prompt_async_ok","delivery_id":"aftdel_ce5334cb-6b96-4867-9e02-37d15a276f47","attempt":1,"task_ids":["bash-01426a59d77436f7"]}
[2026-08-19T20:48:16.451Z] INFO [aft-plugin] [aft] 2026-08-19T20:48:16Z [aft] [ses_fe45310ffffeURgTSI81snBf3L] bash_wait_detach: session=ses_fe45310ffffeURgTSI81snBf3L detached=false active_wait_sessions=0
[2026-08-19T20:48:16.456Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] [aft-plugin] bg-notifications: ack ok {"event":"bash_completion_ack_ok","delivery_id":"aftdel_ce5334cb-6b96-4867-9e02-37d15a276f47","task_ids":["bash-01426a59d77436f7"]}
[2026-08-19T20:48:16.457Z] INFO [aft-plugin] [aft] 2026-08-19T20:48:16Z [aft] [ses_fe45310ffffeURgTSI81snBf3L] bash_wait_detach: session=ses_fe45310ffffeURgTSI81snBf3L detached=false active_wait_sessions=0
[2026-08-19T20:48:16.457Z] INFO [aft-plugin] [bash_wait_detach] no active wait found for session ses_fe45310ffffeURgTSI81snBf3L (signaled 2 bridge(s))
[2026-08-19T20:48:43.415Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=1070ms pre=0ms bridge=1070ms post=0ms
[2026-08-19T20:48:47.212Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=40ms pre=0ms bridge=40ms post=0ms
[2026-08-19T20:48:53.217Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=3153ms pre=0ms bridge=3152ms post=0ms
[2026-08-19T20:48:53.219Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] [aft-plugin] bg-notifications: in-turn append {"event":"bash_completion_in_turn_append","task_ids":["bash-f9adc8d3e594d993"],"long_running_task_ids":[],"reminder_sha256":"51aada05e237bc65","reminder_chars":102}
[2026-08-19T20:48:53.226Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] [aft-plugin] bg-notifications: ack ok {"event":"bash_completion_ack_ok","delivery_id":null,"task_ids":["bash-f9adc8d3e594d993"]}
[2026-08-19T20:48:56.827Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash_status total=3ms pre=0ms bridge=3ms post=0ms
[2026-08-19T20:49:02.090Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=1612ms pre=0ms bridge=1611ms post=0ms
[2026-08-19T20:49:05.991Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=152ms pre=0ms bridge=152ms post=0ms
[2026-08-19T20:49:06.416Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=819ms pre=0ms bridge=819ms post=0ms
[2026-08-19T20:49:07.205Z] INFO [aft-plugin] [aft] 2026-08-19T20:49:07Z [aft] [ses_fe45310ffffeURgTSI81snBf3L] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=23 tier2=[none] semantic={collects:0,files:0,chunks:0,ms:0} callgraph_invalidations=0 executor_completed={interactive:0,maintenance:0} oldest_queued_ms={interactive:none,maintenance:none} toolcall={new:0,window:0,p50_total_ms:0,max_total_ms:0,p50_queue_ms:0,max_queue_ms:0} file_log_dropped=0
[2026-08-19T20:49:10.562Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=145ms pre=0ms bridge=145ms post=0ms
[2026-08-19T20:49:13.504Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=154ms pre=0ms bridge=154ms post=0ms
[2026-08-19T20:49:17.413Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=150ms pre=0ms bridge=149ms post=0ms
[2026-08-19T20:49:20.339Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=163ms pre=0ms bridge=163ms post=0ms
[2026-08-19T20:49:20.561Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=151ms pre=0ms bridge=151ms post=0ms
[2026-08-19T20:49:28.737Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=5649ms pre=0ms bridge=5649ms post=0ms
[2026-08-19T20:49:31.888Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=259ms pre=0ms bridge=259ms post=0ms
[2026-08-19T20:49:35.999Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=256ms pre=0ms bridge=255ms post=0ms
[2026-08-19T20:49:39.419Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=168ms pre=0ms bridge=167ms post=0ms
[2026-08-19T20:49:39.666Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=153ms pre=0ms bridge=153ms post=0ms
[2026-08-19T20:49:43.145Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=472ms pre=0ms bridge=471ms post=0ms
[2026-08-19T20:49:47.107Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=151ms pre=0ms bridge=151ms post=0ms
[2026-08-19T20:49:48.273Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=989ms pre=0ms bridge=989ms post=0ms
[2026-08-19T20:49:51.307Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=154ms pre=0ms bridge=154ms post=0ms
[2026-08-19T20:49:52.065Z] INFO [aft-plugin] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-08-19T20:49:52.067Z] INFO [aft-plugin] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-08-19T20:49:52.075Z] INFO [aft-plugin] Resolved binary: ~/.cache/aft/bin/v0.51.2/aft
[2026-08-19T20:49:52.075Z] INFO [aft-plugin] AFT storage migration skipped for opencode: no legacy data at ~/.local/share/opencode/storage/plugin/aft; using ~/.local/share/cortexkit/aft for fresh install
[2026-08-19T20:49:52.077Z] INFO [aft-plugin] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-08-19T20:49:52.079Z] INFO [aft-plugin] ONNX Runtime found at system path: /opt/homebrew/lib
[2026-08-19T20:49:52.291Z] INFO [aft-plugin] [lsp] auto-install: 5 npm + 0 github install(s) running in background
[2026-08-19T20:49:52.302Z] INFO [aft-plugin] RPC server listening on 127.0.0.1:62842
[2026-08-19T20:49:52.311Z] INFO [aft-plugin] hashline activation decision requested=false edit_slot_survives=false effective=false
[2026-08-19T20:49:52.311Z] INFO [aft-plugin] Workflow hints injected (4588 chars)
[2026-08-19T20:49:52.311Z] INFO [aft-plugin] ONNX Runtime ready at /opt/homebrew/lib; new bridges will load semantic backend.
[2026-08-19T20:49:52.817Z] INFO [aft-plugin] [lsp] lsp_paths_extra updated after auto-install: 7 dirs pushed to live bridges
[2026-08-19T20:49:57.318Z] INFO [aft-plugin] [auto-update-checker] Skipping check (another instance ran one recently)
[2026-08-19T20:50:07.368Z] INFO [aft-plugin] [aft] 2026-08-19T20:50:07Z [aft] [ses_fe45310ffffeURgTSI81snBf3L] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=43 tier2=[none] semantic={collects:0,files:0,chunks:0,ms:0} callgraph_invalidations=0 executor_completed={interactive:0,maintenance:0} oldest_queued_ms={interactive:none,maintenance:none} toolcall={new:0,window:0,p50_total_ms:0,max_total_ms:0,p50_queue_ms:0,max_queue_ms:0} file_log_dropped=0
[2026-08-19T20:51:06.621Z] WARN [aft-plugin] [bash_wait_detach] no live bridge for session ses_fe435438cffekhpNH7IDl3jeUe (root <PROJECT>/.worktrees/feat/phase-4-etl_cleanup)
[2026-08-19T20:51:16.461Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=84337ms pre=0ms bridge=84337ms post=0ms
[2026-08-19T20:51:20.160Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=268ms pre=0ms bridge=267ms post=0ms
[2026-08-19T20:51:23.567Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=368ms pre=0ms bridge=368ms post=0ms
[2026-08-19T20:51:26.453Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=153ms pre=0ms bridge=153ms post=0ms
[2026-08-19T20:51:27.164Z] INFO [aft-plugin] [ses_fe435438cffekhpNH7IDl3jeUe] [subagent-detect] cache miss, calling client.session.get(id=ses_fe435438cffekhpNH7IDl3jeUe)
[2026-08-19T20:51:27.166Z] INFO [aft-plugin] [ses_fe435438cffekhpNH7IDl3jeUe] [subagent-detect] SDK returned session=present, parentID=undefined → isSubagent=false
[2026-08-19T20:51:27.169Z] INFO [aft-plugin] [ses_fe435438cffekhpNH7IDl3jeUe] Spawning binary: ~/.cache/aft/bin/v0.51.2/aft (cwd: <PROJECT>/.worktrees/feat/phase-4-etl_cleanup)
[2026-08-19T20:51:27.169Z] INFO [aft-plugin] bridge.spawnProcess: useFastembedBackend=true, parentORT=(unset), ortLibraryPath=/opt/homebrew/lib/libonnxruntime.dylib
[2026-08-19T20:51:27.169Z] INFO [aft-plugin] ORT_DYLIB_PATH set from managed ONNX Runtime: /opt/homebrew/lib/libonnxruntime.dylib
[2026-08-19T20:51:27.223Z] INFO [aft-plugin] [ses_fe435438cffekhpNH7IDl3jeUe] hashline registration carrier transport=ndjson phase=configure edit_slot_survives=false
[2026-08-19T20:51:29.142Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] hashline registration carrier transport=ndjson phase=tool_call edit_slot_survives=false
[2026-08-19T20:51:29.147Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=grep total=9ms pre=4ms bridge=5ms post=0ms
[2026-08-19T20:51:29.934Z] INFO [aft-plugin] [aft] 2026-08-19T20:51:29Z [aft] log retention sweep: removed_files=0 bytes_freed=0
[2026-08-19T20:51:29.934Z] INFO [aft-plugin] [aft] 2026-08-19T20:51:29Z [aft] started, pid 16396
[2026-08-19T20:51:29.996Z] INFO [aft-plugin] [aft] 2026-08-19T20:51:29Z [aft] [ses_fe435438cffekhpNH7IDl3jeUe] sharing the repo index family owned by <PROJECT> (read-only borrow)
[2026-08-19T20:51:29.996Z] INFO [aft-plugin] [aft] 2026-08-19T20:51:29Z [aft] [ses_fe435438cffekhpNH7IDl3jeUe] project root set: <PROJECT>/.worktrees/feat/phase-4-etl_cleanup
[2026-08-19T20:51:30.024Z] INFO [aft-plugin] [aft] 2026-08-19T20:51:30Z [aft] [ses_fe435438cffekhpNH7IDl3jeUe] gitignore matcher built: 124 pattern(s)
[2026-08-19T20:51:30.154Z] INFO [aft-plugin] [aft] 2026-08-19T20:51:30Z [aft] [ses_fe435438cffekhpNH7IDl3jeUe] loaded semantic index from disk: 3064 entries
[2026-08-19T20:51:30.179Z] INFO [aft-plugin] [aft] 2026-08-19T20:51:30Z [aft] watcher started: <PROJECT>/.worktrees/feat/phase-4-etl_cleanup
[2026-08-19T20:51:30.379Z] INFO [aft-plugin] [aft] 2026-08-19T20:51:30Z [aft] [ses_fe435438cffekhpNH7IDl3jeUe] loaded symbol cache from disk: 1260 files
[2026-08-19T20:51:30.381Z] INFO [aft-plugin] Binary version: 0.51.2
[2026-08-19T20:51:30.437Z] INFO [aft-plugin] [aft] 2026-08-19T20:51:30Z [aft] [ses_fe435438cffekhpNH7IDl3jeUe] pre-warmed symbol cache: 0 new, 1013 cached, 1260 files total
[2026-08-19T20:51:30.756Z] INFO [aft-plugin] [ses_fe435438cffekhpNH7IDl3jeUe] perf tool=bash total=3592ms pre=3ms bridge=3589ms post=1ms
[2026-08-19T20:51:33.592Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=872ms pre=0ms bridge=872ms post=0ms
[2026-08-19T20:51:37.944Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=1089ms pre=0ms bridge=1089ms post=0ms
[2026-08-19T20:51:40.975Z] INFO [aft-plugin] [aft] 2026-08-19T20:51:40Z [aft] [ses_fe434bce7ffe058vI2joLkhrgO] bash_wait_detach: session=ses_fe434bce7ffe058vI2joLkhrgO detached=false active_wait_sessions=0
[2026-08-19T20:51:40.982Z] INFO [aft-plugin] [aft] 2026-08-19T20:51:40Z [aft] [ses_fe434bce7ffe058vI2joLkhrgO] bash_wait_detach: session=ses_fe434bce7ffe058vI2joLkhrgO detached=false active_wait_sessions=0
[2026-08-19T20:51:40.982Z] INFO [aft-plugin] [bash_wait_detach] no active wait found for session ses_fe434bce7ffe058vI2joLkhrgO (signaled 2 bridge(s))
[2026-08-19T20:51:42.600Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=779ms pre=0ms bridge=779ms post=0ms
[2026-08-19T20:51:44.681Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] [subagent-detect] cache miss, calling client.session.get(id=ses_fe434bce7ffe058vI2joLkhrgO)
[2026-08-19T20:51:44.682Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] [subagent-detect] SDK returned session=present, parentID="ses_fe435438cffekhpNH7IDl3jeUe" → isSubagent=true
[2026-08-19T20:51:44.901Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=220ms pre=1ms bridge=219ms post=0ms
[2026-08-19T20:51:44.901Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=216ms pre=0ms bridge=215ms post=0ms
[2026-08-19T20:51:47.218Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] hashline registration carrier transport=ndjson phase=tool_call edit_slot_survives=false
[2026-08-19T20:51:47.223Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=8ms pre=3ms bridge=5ms post=0ms
[2026-08-19T20:51:47.225Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=grep total=4ms pre=1ms bridge=3ms post=0ms
[2026-08-19T20:51:49.247Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=7ms pre=2ms bridge=5ms post=0ms
[2026-08-19T20:51:49.416Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=153ms pre=0ms bridge=153ms post=0ms
[2026-08-19T20:51:53.399Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=16ms pre=2ms bridge=13ms post=0ms
[2026-08-19T20:51:53.399Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=11ms pre=2ms bridge=9ms post=0ms
[2026-08-19T20:51:53.399Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=7ms pre=0ms bridge=7ms post=0ms
[2026-08-19T20:51:56.265Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=1ms pre=0ms bridge=1ms post=0ms
[2026-08-19T20:51:56.430Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=156ms pre=0ms bridge=155ms post=0ms
[2026-08-19T20:51:59.268Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=11ms pre=2ms bridge=9ms post=0ms
[2026-08-19T20:51:59.269Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=8ms pre=2ms bridge=5ms post=0ms
[2026-08-19T20:51:59.269Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=3ms pre=1ms bridge=2ms post=0ms
[2026-08-19T20:52:02.789Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=10ms pre=2ms bridge=8ms post=0ms
[2026-08-19T20:52:02.790Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=6ms pre=2ms bridge=4ms post=0ms
[2026-08-19T20:52:02.981Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=179ms pre=0ms bridge=178ms post=0ms
[2026-08-19T20:52:06.416Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=8ms pre=1ms bridge=7ms post=0ms
[2026-08-19T20:52:06.417Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=6ms pre=2ms bridge=4ms post=0ms
[2026-08-19T20:52:06.579Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=150ms pre=0ms bridge=150ms post=0ms
[2026-08-19T20:52:07.706Z] INFO [aft-plugin] [aft] 2026-08-19T20:52:07Z [aft] [ses_fe45310ffffeURgTSI81snBf3L] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=24 tier2=[none] semantic={collects:0,files:0,chunks:0,ms:0} callgraph_invalidations=0 executor_completed={interactive:0,maintenance:0} oldest_queued_ms={interactive:none,maintenance:none} toolcall={new:0,window:0,p50_total_ms:0,max_total_ms:0,p50_queue_ms:0,max_queue_ms:0} file_log_dropped=0
[2026-08-19T20:52:09.034Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=1ms pre=1ms bridge=1ms post=0ms
[2026-08-19T20:52:09.270Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=190ms pre=0ms bridge=190ms post=0ms
[2026-08-19T20:52:11.335Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=149ms pre=0ms bridge=149ms post=1ms
[2026-08-19T20:52:13.855Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=6ms pre=2ms bridge=4ms post=0ms
[2026-08-19T20:52:14.037Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=168ms pre=0ms bridge=168ms post=0ms
[2026-08-19T20:52:16.901Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=1ms pre=1ms bridge=1ms post=0ms
[2026-08-19T20:52:20.442Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=2ms pre=1ms bridge=1ms post=0ms
[2026-08-19T20:52:23.952Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=225ms pre=0ms bridge=225ms post=0ms
[2026-08-19T20:52:23.952Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=221ms pre=0ms bridge=221ms post=0ms
[2026-08-19T20:52:25.634Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=1912ms pre=0ms bridge=1912ms post=0ms
[2026-08-19T20:52:29.882Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=82ms pre=0ms bridge=82ms post=0ms
[2026-08-19T20:52:29.935Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=132ms pre=0ms bridge=132ms post=0ms
[2026-08-19T20:52:30.049Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=241ms pre=0ms bridge=241ms post=0ms
[2026-08-19T20:52:30.303Z] INFO [aft-plugin] [aft] 2026-08-19T20:52:30Z [aft] [ses_fe434bce7ffe058vI2joLkhrgO] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=88 tier2=[none] semantic={collects:0,files:0,chunks:0,ms:0} callgraph_invalidations=0 executor_completed={interactive:0,maintenance:0} oldest_queued_ms={interactive:none,maintenance:none} toolcall={new:0,window:0,p50_total_ms:0,max_total_ms:0,p50_queue_ms:0,max_queue_ms:0} file_log_dropped=0
[2026-08-19T20:52:33.575Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=6ms pre=2ms bridge=4ms post=0ms
[2026-08-19T20:52:33.577Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=3ms pre=0ms bridge=2ms post=0ms
[2026-08-19T20:52:38.038Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=184ms pre=0ms bridge=184ms post=0ms
[2026-08-19T20:52:38.038Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=180ms pre=0ms bridge=180ms post=0ms
[2026-08-19T20:52:41.659Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=162ms pre=0ms bridge=161ms post=0ms
[2026-08-19T20:52:46.079Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=146ms pre=0ms bridge=145ms post=0ms
[2026-08-19T20:52:49.059Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=183ms pre=0ms bridge=182ms post=0ms
[2026-08-19T20:52:49.059Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=181ms pre=0ms bridge=181ms post=0ms
[2026-08-19T20:52:49.110Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=60612ms pre=0ms bridge=60611ms post=0ms
[2026-08-19T20:52:51.726Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] hashline registration carrier transport=ndjson phase=tool_call edit_slot_survives=false repeated=20
[2026-08-19T20:52:51.733Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=9ms pre=2ms bridge=7ms post=0ms
[2026-08-19T20:52:51.733Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=5ms pre=1ms bridge=4ms post=0ms
[2026-08-19T20:52:51.733Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=2ms pre=0ms bridge=2ms post=0ms
[2026-08-19T20:52:53.510Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=1106ms pre=0ms bridge=1106ms post=0ms
[2026-08-19T20:52:55.354Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=10ms pre=2ms bridge=9ms post=0ms
[2026-08-19T20:52:55.555Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=194ms pre=0ms bridge=194ms post=0ms
[2026-08-19T20:52:55.555Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=189ms pre=0ms bridge=188ms post=0ms
[2026-08-19T20:52:57.715Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=40ms pre=0ms bridge=40ms post=0ms
[2026-08-19T20:52:57.811Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=6ms pre=2ms bridge=4ms post=0ms
[2026-08-19T20:52:57.813Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=3ms pre=0ms bridge=2ms post=0ms
[2026-08-19T20:53:01.464Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=245ms pre=0ms bridge=245ms post=0ms
[2026-08-19T20:53:01.464Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=239ms pre=0ms bridge=239ms post=0ms
[2026-08-19T20:53:01.464Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=233ms pre=0ms bridge=233ms post=0ms
[2026-08-19T20:53:05.069Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=202ms pre=0ms bridge=202ms post=0ms
[2026-08-19T20:53:05.069Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=199ms pre=0ms bridge=198ms post=0ms
[2026-08-19T20:53:06.232Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=5136ms pre=0ms bridge=5136ms post=0ms
[2026-08-19T20:53:07.752Z] INFO [aft-plugin] [aft] 2026-08-19T20:53:07Z [aft] [ses_fe45310ffffeURgTSI81snBf3L] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=10 tier2=[none] semantic={collects:0,files:0,chunks:0,ms:0} callgraph_invalidations=0 executor_completed={interactive:0,maintenance:0} oldest_queued_ms={interactive:none,maintenance:none} toolcall={new:0,window:0,p50_total_ms:0,max_total_ms:0,p50_queue_ms:0,max_queue_ms:0} file_log_dropped=0
[2026-08-19T20:53:07.871Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=5ms pre=1ms bridge=3ms post=0ms
[2026-08-19T20:53:08.036Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=150ms pre=0ms bridge=150ms post=0ms
[2026-08-19T20:53:08.659Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash_status total=2ms pre=0ms bridge=2ms post=0ms
[2026-08-19T20:53:10.666Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=200ms pre=0ms bridge=200ms post=0ms
[2026-08-19T20:53:10.666Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=196ms pre=0ms bridge=196ms post=0ms
[2026-08-19T20:53:13.430Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=6ms pre=2ms bridge=4ms post=0ms
[2026-08-19T20:53:13.599Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=157ms pre=0ms bridge=156ms post=0ms
[2026-08-19T20:53:16.054Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash_write total=3ms pre=0ms bridge=3ms post=0ms
[2026-08-19T20:53:17.617Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=195ms pre=0ms bridge=194ms post=0ms
[2026-08-19T20:53:17.617Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=192ms pre=0ms bridge=192ms post=0ms
[2026-08-19T20:53:20.855Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=2157ms pre=0ms bridge=2157ms post=0ms
[2026-08-19T20:53:21.223Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=223ms pre=0ms bridge=222ms post=1ms
[2026-08-19T20:53:21.344Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=342ms pre=0ms bridge=342ms post=0ms
[2026-08-19T20:53:23.696Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash_status total=3ms pre=0ms bridge=3ms post=0ms
[2026-08-19T20:53:27.136Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash_write total=2ms pre=0ms bridge=2ms post=0ms
[2026-08-19T20:53:30.382Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=199ms pre=0ms bridge=199ms post=0ms
[2026-08-19T20:53:30.382Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=195ms pre=0ms bridge=195ms post=0ms
[2026-08-19T20:53:30.636Z] INFO [aft-plugin] [aft] 2026-08-19T20:53:30Z [aft] [ses_fe434bce7ffe058vI2joLkhrgO] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=89 tier2=[none] semantic={collects:0,files:0,chunks:0,ms:0} callgraph_invalidations=0 executor_completed={interactive:0,maintenance:0} oldest_queued_ms={interactive:none,maintenance:none} toolcall={new:0,window:0,p50_total_ms:0,max_total_ms:0,p50_queue_ms:0,max_queue_ms:0} file_log_dropped=0
[2026-08-19T20:53:31.741Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=2119ms pre=0ms bridge=2119ms post=0ms
[2026-08-19T20:53:34.756Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash_status total=4ms pre=0ms bridge=4ms post=0ms
[2026-08-19T20:53:37.094Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash_write total=8ms pre=0ms bridge=8ms post=0ms
[2026-08-19T20:53:41.287Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash total=2127ms pre=0ms bridge=2127ms post=0ms
[2026-08-19T20:53:43.986Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=read total=6ms pre=2ms bridge=4ms post=0ms
[2026-08-19T20:53:44.151Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=155ms pre=0ms bridge=155ms post=0ms
[2026-08-19T20:53:43.997Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash_status total=4ms pre=0ms bridge=4ms post=0ms
[2026-08-19T20:53:47.407Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=200ms pre=0ms bridge=200ms post=0ms
[2026-08-19T20:53:47.407Z] INFO [aft-plugin] [ses_fe434bce7ffe058vI2joLkhrgO] perf tool=bash total=197ms pre=0ms bridge=197ms post=0ms
[2026-08-19T20:53:47.824Z] INFO [aft-plugin] [ses_fe45310ffffeURgTSI81snBf3L] perf tool=bash_write total=2ms pre=0ms bridge=2ms post=0ms
Usernames and home paths have been stripped from this report.
Description
aft_inspecttimes out (60s bridge timeout) on repos with Next.js App Router dynamic-route directories containing brackets/parens — e.g.(app),[locationId],[[...sign-in]],[trpc],[camis].What happened
Every
aft_inspectcall takes 38-63s in bridge time and hits the 60s bridge timeout. The AFT plugin log shows every timeout is immediately preceded by a burst ofpull_file_diagnostics failed: failed to parse file URI for '<path>'errors. 784 total failure lines across sessions Aug 17-19, 102 unique failing paths. Every failing path contains Next.js App Router dynamic segments with brackets/parens.What was expected
aft_inspectshould complete successfully. The URI parser should handle parentheses and brackets in directory names (valid in Next.js App Router route groups and dynamic segments).Steps to reproduce
(app)/and dynamic segments[locationId]/,[[...sign-in]]/aft_inspectin an opencode session with AFT plugin v0.51.2aft-plugin.logforfailed to parse file URIerrors preceding each timeoutExample failing paths
Evidence
aft_inspecttimeout in the plugin log is immediately preceded by 2+pull_file_diagnostics failed: failed to parse file URIlines for bracketed paths(),[], or[[]]directory segmentsaft_inspectis affected.worktrees/nested copies multiply the bad-path count (each worktree has its own(app)/[locationId]/...tree)Root cause
pull_file_diagnosticsURI parser cannot handle()/[]/[[]]in path segments. The parser needs to percent-encode or handle these characters.Workaround
Exclude
.worktrees/from AFT watcher to reduce path count.Environment
Diagnostics
OpenCode
Config paths
{ "configDir": "/var/folders/hm/rs884dmd1k57by1tl7vx_70w0000gn/T/ocx-oc-merged-mPOMgh", "harnessConfig": "/var/folders/hm/rs884dmd1k57by1tl7vx_70w0000gn/T/ocx-oc-merged-mPOMgh/opencode.jsonc", "harnessConfigFormat": "jsonc", "aftConfig": "~/.config/cortexkit/aft.jsonc", "aftConfigFormat": "jsonc", "tuiConfig": "/var/folders/hm/rs884dmd1k57by1tl7vx_70w0000gn/T/ocx-oc-merged-mPOMgh/tui.json", "tuiConfigFormat": "none" }AFT flags
{ "$schema": "https://raw.githubusercontent.com/cortexkit/aft/main/assets/aft.schema.json", "enabled": true, "hoist_builtin_tools": true, "format_on_edit": false, "validate_on_edit": "syntax", "configure_warnings_delivery": "toast", "tool_surface": "recommended", "disabled_tools": [], "search_index": true, "semantic_search": true, "semantic": { "backend": "fastembed", "model": "all-MiniLM-L6-v2", "timeout_ms": 25000, "max_batch_size": 64, "max_files": 20000 }, "restrict_to_project_root": false, "auto_update": true, "lsp": { "servers": { "tinymist": { "extensions": [ ".typ" ], "binary": "tinymist", "args": [], "root_markers": [ ".git", "typst.toml" ], "env": { "TYPST_FONT_PATHS": "/usr/share/fonts" }, "initialization_options": { "formatterMode": "typstyle" } }, "typescript": { "initialization_options": { "tsserver": { "path": "~/.bun/install/global/node_modules/typescript/lib" } } }, "astro": { "initialization_options": { "typescript": { "tsdk": "~/.bun/install/global/node_modules/typescript/lib" } } } }, "disabled": [ "python" ], "python": "ty", "diagnostic_cache_size": 5000 }, "bash": { "rewrite": true, "compress": true, "background": true, "subagent_background": true, "foreground_wait_window_ms": 8000 }, "inspect": { "enabled": true, "tier2_idle_minutes": 5, "duplicates": { "expected_mirrors": [ [ "plugin/**", "pi-plugin/**" ] ] } }, "experimental": { "lsp_ty": false } }Plugin cache
{ "path": "~/.cache/opencode/packages/@cortexkit/aft-opencode@latest", "cached": "0.51.2", "latest": "0.51.2", "exists": true }Storage
{ "path": "~/.local/share/cortexkit/aft", "exists": true, "accessible": true, "sizesByKey": { "index": 13958100, "semantic": 188865227, "backups": 0, "url_cache": 0, "onnxruntime": 31 }, "legacyDuplication": { "totalPartitions": 6, "totalBytes": 130393369, "byHarness": [ { "harness": "opencode", "partitions": 6, "bytes": 130393369 } ] } }ONNX Runtime
{ "required": true, "systemPath": "/opt/homebrew/lib", "systemVersion": "1.29.0", "systemCompatible": true, "ignoredSystemPath": null, "ignoredSystemReason": null, "cachedPath": null, "cachedVersion": null, "cachedCompatible": null, "platform": "darwin-arm64", "installHint": "brew install onnxruntime (Apple Silicon)", "requirement": ">=1.20" }Log file
~/.local/share/cortexkit/aft/logs/aft-plugin.log(13927 KB)Binary cache
{ "versions": [ "v0.41.0", "v0.42.0", "v0.44.0", "v0.45.1", "v0.46.0", "v0.47.0", "v0.47.1", "v0.47.2", "v0.48.0", "v0.48.1", "v0.49.0", "v0.49.2", "v0.49.3", "v0.49.4", "v0.50.0", "v0.50.1", "v0.51.0", "v0.51.1", "v0.51.2" ], "activeVersion": "v0.51.2", "totalSize": 1365273312, "path": "~/.cache/aft/bin" }LSP cache
{ "npm": { "path": "~/.cache/aft/lsp-packages", "entries": [ { "name": "@astrojs/language-server", "path": "~/.cache/aft/lsp-packages/%40astrojs%2Flanguage-server", "size": 66989078 }, { "name": "@biomejs/biome", "path": "~/.cache/aft/lsp-packages/%40biomejs%2Fbiome", "size": 59022829 }, { "name": "pyright", "path": "~/.cache/aft/lsp-packages/pyright", "size": 19459975 }, { "name": "yaml-language-server", "path": "~/.cache/aft/lsp-packages/yaml-language-server", "size": 17795051 }, { "name": "bash-language-server", "path": "~/.cache/aft/lsp-packages/bash-language-server", "size": 14513829 }, { "name": "typescript-language-server", "path": "~/.cache/aft/lsp-packages/typescript-language-server", "size": 3226474 }, { "name": "clangd/clangd", "path": "~/.cache/aft/lsp-packages/clangd%2Fclangd", "size": 79 } ], "totalSize": 181007315 }, "github": { "path": "~/.cache/aft/lsp-binaries", "entries": [ { "name": "clangd", "path": "~/.cache/aft/lsp-binaries/clangd", "size": 556094791 } ], "totalSize": 556094791 }, "totalSize": 737102106 }Recent errors (last 20, sanitized)
Recent AFT tool failures
Logs (last 200 lines per harness)
OpenCode log (~/.local/share/cortexkit/aft/logs/aft-plugin.log)
Usernames and home paths have been stripped from this report.