Skip to content

Pi hashline edit frequently fails on small files #269

Description

@letterk

Short description

Pi hashline edit frequently fails on small files

What happened?

Summary

Hashline editing within Pi frequently fails during normal editing workflows,
even on small source files that are well below the documented size limit for this feature.
The observed failure rate is substantially higher compared to the default edit mode.

Failures are intermittent: they do not happen every time, but occur repeatedly across ordinary editing sessions on small source code.

Examples

One representative failure sequence:

  1. Attempted hashline edit failed with error:

    text PUT body rows must begin with `+` (`+` alone is a blank row);
    unexpected content at line 10
    
  2. The model explicitly re‑invoked the read tool on the file. The file is only 130 lines of Python source (not auto‑generated large reports), far under the documented size threshold. The read output clearly contained all expected lines including line 16.

  3. The immediately‑following hashline edit then failed with:

    line 16 was not retained by the tagged read
    

This sequence has happened multiple times across different small source files.

Open questions / potential root causes

I do not have a confirmed root cause. Likely candidates include:

  • Model generating invalid hashline patch syntax
  • Pi integration layer handling for hashline edits
  • Snapshot / retained‑line state management
  • State corruption triggered by a previously‑failed hashline edit
  • Interaction between the tagged read tool and hashline edit tool

The line 16 was not retained by the tagged read error is especially problematic:
the preceding read tool call returned the file content and visibly included line 16,
yet the subsequent edit rejects this line as missing from tagged read snapshot.

Observation: Many failures appear to occur shortly after a prior hashline edit failure,
which suggests state carry‑over after failure may be a contributing factor.

Expected behavior

  1. For typical small source files: an explicit read followed immediately by a hashline edit should reliably complete successfully.
  2. When internal snapshot/tag state becomes invalid, the tool should return clear, actionable error guidance (e.g. hint to re‑read the file) rather than cascading mysterious failures on subsequent edits.
  3. When hashline patch syntax is invalid, error messages should give sufficient structured feedback so the model can understand the mistake and automatically retry the edit.

Diagnostics

## Description
Pi hashline edit frequently fails on small files

## Environment
- AFT CLI: v0.52.2
- AFT binary: 0.52.2
- OS: linux x64
- Node: v24.19.0

## Diagnostics
- Timestamp: 2026-08-27T06:18:15.778Z
- AFT CLI: v0.52.2
- AFT binary: 0.52.2
- OS: linux x64
- Node: v24.19.0

### Pi
- Host installed: true
- Host version: 0.84.3
- Plugin registered: true
- Plugin version: 0.52.2
- AFT enabled: true
- AFT config parse error: none

#### Config paths

{
  "configDir": "~/.pi/agent",
  "harnessConfig": "~/.pi/agent/settings.json",
  "harnessConfigFormat": "json",
  "aftConfig": "~/.config/cortexkit/aft.jsonc",
  "aftConfigFormat": "jsonc"
}


#### AFT flags

{
  "$schema": "https://raw.githubusercontent.com/cortexkit/aft/main/assets/aft.schema.json",
  "tool_surface": "all",
  "bash": {
    "rewrite": true,
    "compress": true,
    "background": false
  },
  "edit_mode": "hashline",
  "search_index": true,
  "backup": {
    "enabled": true,
    "max_depth": 2,
    "max_file_size": 10485760
  }
}


#### Plugin cache

{
  "path": "~/.pi/agent/npm/node_modules/@cortexkit/aft-pi/package.json",
  "cached": "0.52.2",
  "exists": true
}


#### Storage

{
  "path": "~/.local/share/cortexkit/aft",
  "exists": true,
  "accessible": true,
  "sizesByKey": {
    "index": 2085718,
    "semantic": 0,
    "backups": 0,
    "url_cache": 0,
    "onnxruntime": 0,
    "logs": 3410037
  }
}


#### ONNX Runtime

{
  "required": false,
  "systemPath": null,
  "systemVersion": null,
  "systemCompatible": null,
  "ignoredSystemPath": null,
  "ignoredSystemReason": null,
  "cachedPath": null,
  "cachedVersion": null,
  "cachedCompatible": null,
  "platform": "linux-x64",
  "installHint": "AFT auto-downloads ONNX Runtime on supported Linux (glibc)",
  "requirement": ">=1.20"
}


#### Log file
`~/.local/share/cortexkit/aft/logs/aft-plugin.log` (2499 KB)

### Binary cache

{
  "versions": [
    "v0.49.4",
    "v0.52.1",
    "v0.52.2"
  ],
  "activeVersion": "v0.52.2",
  "totalSize": 245848944,
  "path": "~/.cache/aft/bin"
}


### LSP cache

{
  "npm": {
    "path": "~/.cache/aft/lsp-packages",
    "entries": [
      {
        "name": "@biomejs/biome",
        "path": "~/.cache/aft/lsp-packages/%40biomejs%2Fbiome",
        "size": 73256244
      },
      {
        "name": "pyright",
        "path": "~/.cache/aft/lsp-packages/pyright",
        "size": 19346296
      },
      {
        "name": "yaml-language-server",
        "path": "~/.cache/aft/lsp-packages/yaml-language-server",
        "size": 19204825
      },
      {
        "name": "bash-language-server",
        "path": "~/.cache/aft/lsp-packages/bash-language-server",
        "size": 14519148
      }
    ],
    "totalSize": 126326513
  },
  "github": {
    "path": "~/.cache/aft/lsp-binaries",
    "entries": [],
    "totalSize": 0
  },
  "totalSize": 126326513
}


## Recent errors (last 20, sanitized)

[2026-08-27T04:18:44.417Z] INFO [aft-pi] [aft] 2026-08-27T04:18:44Z [aft] callgraph store refresh failed: sqlite error: database is locked
[2026-08-27T06:11:17.377Z] INFO [aft-pi] [aft] 2026-08-27T06:11:17Z [aft] callgraph store refresh failed: sqlite error: database is locked


### Recent AFT tool failures
- bash_drain_completions: timed out after 30000ms ×4
- tool_call: timed out after 30000ms ×4
- bridge killed after timeout ×2

## Logs (last 200 lines per harness)
#### Pi log (~/.local/share/cortexkit/aft/logs/aft-plugin.log)


[2026-08-27T05:47:48.967Z] INFO [aft-pi] [aft] 2026-08-27T05:47:48Z [aft] project root set: ~/workspace/aiact
[2026-08-27T05:47:48.968Z] INFO [aft-pi] [aft] 2026-08-27T05:47:48Z [aft] gitignore matcher built: 2 pattern(s)
[2026-08-27T05:47:48.981Z] INFO [aft-pi] [aft] 2026-08-27T05:47:48Z [aft] quarantining unresolved background task bash-fbf9c62fd9d39364: background task layout not found
[2026-08-27T05:47:48.982Z] INFO [aft-pi] [aft] 2026-08-27T05:47:48Z [aft] watcher started: ~/workspace/aiact
[2026-08-27T05:47:48.997Z] INFO [aft-pi] Binary version: 0.52.2
[2026-08-27T05:47:48.998Z] INFO [aft-pi] [aft] 2026-08-27T05:47:48Z [aft] [ses_01a041c2-986c-7449-95f8-61e22754515f] bash_wait_detach: session=01a041c2-986c-7449-95f8-61e22754515f detached=false active_wait_sessions=0
[2026-08-27T05:47:49.008Z] INFO [aft-pi] [aft] 2026-08-27T05:47:49Z [aft] loaded symbol cache from disk: 1 files
[2026-08-27T05:47:49.009Z] INFO [aft-pi] [aft] 2026-08-27T05:47:49Z [aft] pre-warmed symbol cache: 0 new, 1 cached, 1 files total
[2026-08-27T05:47:53.862Z] INFO [aft-pi] [01a04191-6c23-7615-9422-a68d68e8be7d] hashline registration carrier transport=ndjson phase=tool_call edit_slot_survives=true
[2026-08-27T05:48:24.021Z] INFO [aft-pi] [aft] 2026-08-27T05:48:24Z [aft] [ses_01a04191-6c23-7615-9422-a68d68e8be7d] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=11 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-27T05:49:19.640Z] INFO [aft-pi] [aft] 2026-08-27T05:49:19Z [aft] [ses_01a04191-6c23-7615-9422-a68d68e8be7d] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=6 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-27T05:50:06.260Z] INFO [aft-pi] [aft] 2026-08-27T05:50:06Z [aft] [ses_01a04191-6c23-7615-9422-a68d68e8be7d] log retention sweep: removed_files=0 bytes_freed=0
[2026-08-27T06:00:18.478Z] INFO [aft-pi] [aft] 2026-08-27T06:00:17Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] bash_wait_detach: session=01a0377e-81d6-72d6-885c-5e90ec599a10 detached=false active_wait_sessions=0
[2026-08-27T06:00:19.619Z] INFO [aft-pi] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-08-27T06:00:19.621Z] INFO [aft-pi] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-08-27T06:00:19.621Z] INFO [aft-pi] AFT extension loading (plugin v0.52.2)
[2026-08-27T06:00:19.629Z] INFO [aft-pi] Resolved binary from versioned cache: ~/.cache/aft/bin/v0.52.2/aft
[2026-08-27T06:00:19.630Z] INFO [aft-pi] AFT storage migration skipped for pi: no legacy data at ~/.pi/agent/aft; using ~/.local/share/cortexkit/aft for fresh install
[2026-08-27T06:00:19.631Z] INFO [aft-pi] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-08-27T06:00:19.751Z] INFO [aft-pi] [lsp] auto-install: 3 npm + 0 github install(s) running in background
[2026-08-27T06:00:19.755Z] INFO [aft-pi] Workflow hints injected (3695 chars)
[2026-08-27T06:00:19.755Z] INFO [aft-pi] AFT extension ready (surface=all)
[2026-08-27T06:00:19.756Z] INFO [aft-pi] Spawning binary: ~/.cache/aft/bin/v0.52.2/aft (cwd: ~/research/quant-research-qlib)
[2026-08-27T06:00:19.756Z] INFO [aft-pi] bridge.spawnProcess: useFastembedBackend=true, parentORT=(unset), ortLibraryPath=(none)
[2026-08-27T06:00:19.996Z] INFO [aft-pi] hashline registration carrier transport=ndjson phase=configure edit_slot_survives=true
[2026-08-27T06:00:20.609Z] INFO [aft-pi] [aft] 2026-08-27T06:00:20Z [aft] log retention sweep: removed_files=0 bytes_freed=0
[2026-08-27T06:00:20.609Z] INFO [aft-pi] [aft] 2026-08-27T06:00:20Z [aft] started, pid 793583
[2026-08-27T06:00:20.837Z] INFO [aft-pi] [aft] 2026-08-27T06:00:20Z [aft] project root set: ~/research/quant-research-qlib
[2026-08-27T06:00:20.846Z] INFO [aft-pi] [aft] 2026-08-27T06:00:20Z [aft] gitignore matcher built: 43 pattern(s)
[2026-08-27T06:00:20.933Z] INFO [aft-pi] [aft] 2026-08-27T06:00:20Z [aft] search index: refreshed 4 stale file(s) from disk cache
[2026-08-27T06:00:20.973Z] INFO [aft-pi] [aft] 2026-08-27T06:00:20Z [aft] loaded symbol cache from disk: 138 files
[2026-08-27T06:00:21.003Z] INFO [aft-pi] [aft] 2026-08-27T06:00:21Z [aft] persisted symbol cache: 142 files
[2026-08-27T06:00:21.003Z] INFO [aft-pi] [aft] 2026-08-27T06:00:21Z [aft] pre-warmed symbol cache: 4 new, 138 cached, 142 files total
[2026-08-27T06:00:21.036Z] INFO [aft-pi] [aft] 2026-08-27T06:00:21Z [aft] project root set: ~/research/quant-research-qlib
[2026-08-27T06:00:21.036Z] INFO [aft-pi] [lsp] lsp_paths_extra updated after auto-install: 4 dirs pushed to live bridges
[2026-08-27T06:00:21.040Z] INFO [aft-pi] [aft] 2026-08-27T06:00:21Z [aft] gitignore matcher built: 43 pattern(s)
[2026-08-27T06:00:21.042Z] INFO [aft-pi] Binary version: 0.52.2
[2026-08-27T06:00:21.043Z] INFO [aft-pi] [aft] 2026-08-27T06:00:21Z [aft] [ses_01a041ce-1026-7c6a-b083-70ab1784da8e] bash_wait_detach: session=01a041ce-1026-7c6a-b083-70ab1784da8e detached=false active_wait_sessions=0
[2026-08-27T06:00:23.051Z] INFO [aft-pi] [aft] 2026-08-27T06:00:23Z [aft] watcher stop timed out after 2000 ms: ~/research/quant-research-qlib
[2026-08-27T06:00:26.340Z] INFO [aft-pi] [aft] 2026-08-27T06:00:26Z [aft] watcher started: ~/research/quant-research-qlib
[2026-08-27T06:00:26.341Z] INFO [aft-pi] [aft] 2026-08-27T06:00:26Z [aft] watcher stopped: ~/research/quant-research-qlib
[2026-08-27T06:00:26.583Z] INFO [aft-pi] [aft] 2026-08-27T06:00:26Z [aft] [ses_01a041ce-1026-7c6a-b083-70ab1784da8e] watcher overflow: forcing project rescan
[2026-08-27T06:00:26.586Z] INFO [aft-pi] [aft] 2026-08-27T06:00:26Z [aft] [ses_01a041ce-1026-7c6a-b083-70ab1784da8e] gitignore matcher built: 43 pattern(s)
[2026-08-27T06:00:26.589Z] INFO [aft-pi] [aft] 2026-08-27T06:00:26Z [aft] [ses_01a041ce-1026-7c6a-b083-70ab1784da8e] callgraph store scheduled for background rebuild after watcher overflow
[2026-08-27T06:00:26.589Z] INFO [aft-pi] [aft] 2026-08-27T06:00:26Z [aft] [ses_01a041ce-1026-7c6a-b083-70ab1784da8e] started search index refresh after watcher overflow
[2026-08-27T06:00:26.696Z] INFO [aft-pi] [aft] 2026-08-27T06:00:26Z [aft] search index cold streaming build: 147 files, 27952 trigrams, 102 ms (pool=6)
[2026-08-27T06:00:26.514Z] INFO [aft-pi] [aft] 2026-08-27T06:00:26Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=1 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-27T06:00:30.062Z] INFO [aft-pi] [01a0377e-81d6-72d6-885c-5e90ec599a10] hashline registration carrier transport=ndjson phase=tool_call edit_slot_survives=true repeated=5
[2026-08-27T06:01:16.253Z] INFO [aft-pi] [aft] 2026-08-27T06:01:16Z [aft] [ses_01a041ce-1026-7c6a-b083-70ab1784da8e] perf tick: watcher={ingested:1,paths:0,dropped:1} drains=5 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-27T06:01:22.047Z] INFO [aft-pi] [aft] 2026-08-27T06:01:22Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=36 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-27T06:02:17.573Z] INFO [aft-pi] [aft] 2026-08-27T06:02:17Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=12 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-27T06:03:13.250Z] INFO [aft-pi] [aft] 2026-08-27T06:03:13Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=1 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-27T06:06:58.191Z] INFO [aft-pi] [aft] 2026-08-27T06:06:58Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=1 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-27T06:07:53.836Z] INFO [aft-pi] [aft] 2026-08-27T06:07:53Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=7 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-27T06:08:48.737Z] INFO [aft-pi] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-08-27T06:08:48.739Z] INFO [aft-pi] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-08-27T06:08:48.739Z] INFO [aft-pi] AFT extension loading (plugin v0.52.2)
[2026-08-27T06:08:48.748Z] INFO [aft-pi] Resolved binary from versioned cache: ~/.cache/aft/bin/v0.52.2/aft
[2026-08-27T06:08:48.748Z] INFO [aft-pi] AFT storage migration skipped for pi: no legacy data at ~/.pi/agent/aft; using ~/.local/share/cortexkit/aft for fresh install
[2026-08-27T06:08:48.749Z] INFO [aft-pi] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-08-27T06:08:48.813Z] INFO [aft-pi] [lsp] auto-install: 3 npm + 0 github install(s) running in background
[2026-08-27T06:08:48.817Z] INFO [aft-pi] Workflow hints injected (3695 chars)
[2026-08-27T06:08:48.817Z] INFO [aft-pi] AFT extension ready (surface=all)
[2026-08-27T06:08:48.818Z] INFO [aft-pi] Spawning binary: ~/.cache/aft/bin/v0.52.2/aft (cwd: ~/research/quant-research-qlib)
[2026-08-27T06:08:48.818Z] INFO [aft-pi] bridge.spawnProcess: useFastembedBackend=true, parentORT=(unset), ortLibraryPath=(none)
[2026-08-27T06:08:49.051Z] INFO [aft-pi] hashline registration carrier transport=ndjson phase=configure edit_slot_survives=false
[2026-08-27T06:08:49.453Z] INFO [aft-pi] [aft] 2026-08-27T06:08:49Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=1 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-27T06:08:49.599Z] INFO [aft-pi] [aft] 2026-08-27T06:08:49Z [aft] log retention sweep: removed_files=0 bytes_freed=0
[2026-08-27T06:08:49.599Z] INFO [aft-pi] [aft] 2026-08-27T06:08:49Z [aft] started, pid 830300
[2026-08-27T06:08:49.811Z] INFO [aft-pi] [aft] 2026-08-27T06:08:49Z [aft] project root set: ~/research/quant-research-qlib
[2026-08-27T06:08:49.815Z] INFO [aft-pi] [aft] 2026-08-27T06:08:49Z [aft] gitignore matcher built: 43 pattern(s)
[2026-08-27T06:08:49.862Z] INFO [aft-pi] [aft] 2026-08-27T06:08:49Z [aft] search index: refreshed 4 stale file(s) from disk cache
[2026-08-27T06:08:49.902Z] INFO [aft-pi] [aft] 2026-08-27T06:08:49Z [aft] search index build adopted by equivalent reconfigure (generation 1)
[2026-08-27T06:08:49.902Z] INFO [aft-pi] [aft] 2026-08-27T06:08:49Z [aft] project root set: ~/research/quant-research-qlib
[2026-08-27T06:08:49.902Z] INFO [aft-pi] [lsp] lsp_paths_extra updated after auto-install: 4 dirs pushed to live bridges
[2026-08-27T06:08:49.905Z] INFO [aft-pi] [aft] 2026-08-27T06:08:49Z [aft] gitignore matcher built: 43 pattern(s)
[2026-08-27T06:08:49.906Z] INFO [aft-pi] Binary version: 0.52.2
[2026-08-27T06:08:49.912Z] INFO [aft-pi] [aft] 2026-08-27T06:08:49Z [aft] loaded symbol cache from disk: 142 files
[2026-08-27T06:08:49.913Z] INFO [aft-pi] [aft] 2026-08-27T06:08:49Z [aft] [ses_01a041d5-de4f-72dc-a5ae-e2a9ef8a8d1f] bash_wait_detach: session=01a041d5-de4f-72dc-a5ae-e2a9ef8a8d1f detached=false active_wait_sessions=0
[2026-08-27T06:08:49.913Z] INFO [aft-pi] [aft] 2026-08-27T06:08:49Z [aft] pre-warmed symbol cache: 0 new, 142 cached, 142 files total
[2026-08-27T06:08:50.787Z] INFO [aft-pi] [aft] 2026-08-27T06:08:50Z [aft] watcher stopped: ~/research/quant-research-qlib
[2026-08-27T06:08:50.819Z] INFO [aft-pi] [aft] 2026-08-27T06:08:50Z [aft] watcher started: ~/research/quant-research-qlib
[2026-08-27T06:08:50.920Z] INFO [aft-pi] [aft] 2026-08-27T06:08:50Z [aft] [ses_01a041d5-de4f-72dc-a5ae-e2a9ef8a8d1f] watcher overflow: forcing project rescan
[2026-08-27T06:08:50.924Z] INFO [aft-pi] [aft] 2026-08-27T06:08:50Z [aft] [ses_01a041d5-de4f-72dc-a5ae-e2a9ef8a8d1f] gitignore matcher built: 43 pattern(s)
[2026-08-27T06:08:50.927Z] INFO [aft-pi] [aft] 2026-08-27T06:08:50Z [aft] [ses_01a041d5-de4f-72dc-a5ae-e2a9ef8a8d1f] callgraph store scheduled for background rebuild after watcher overflow
[2026-08-27T06:08:50.927Z] INFO [aft-pi] [aft] 2026-08-27T06:08:50Z [aft] [ses_01a041d5-de4f-72dc-a5ae-e2a9ef8a8d1f] started search index refresh after watcher overflow
[2026-08-27T06:08:51.034Z] INFO [aft-pi] [aft] 2026-08-27T06:08:51Z [aft] search index cold streaming build: 147 files, 27952 trigrams, 101 ms (pool=6)
[2026-08-27T06:09:47.318Z] INFO [aft-pi] [aft] 2026-08-27T06:09:47Z [aft] [ses_01a041d5-de4f-72dc-a5ae-e2a9ef8a8d1f] perf tick: watcher={ingested:1,paths:0,dropped:1} drains=5 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-27T06:09:47.346Z] INFO [aft-pi] [aft] 2026-08-27T06:09:47Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=1 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-27T06:10:42.871Z] INFO [aft-pi] [aft] 2026-08-27T06:10:42Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=3 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-27T06:10:49.038Z] INFO [aft-pi] [01a0377e-81d6-72d6-885c-5e90ec599a10] hashline registration carrier transport=ndjson phase=tool_call edit_slot_survives=true repeated=16
[2026-08-27T06:11:17.309Z] INFO [aft-pi] [aft] 2026-08-27T06:11:17Z [aft] [ses_01a041d5-de4f-72dc-a5ae-e2a9ef8a8d1f] invalidated 2 files
[2026-08-27T06:11:17.320Z] INFO [aft-pi] [aft] 2026-08-27T06:11:17Z [aft] callgraph store writer open failed during refresh; deferred paths: callgraph writer lease error: timed out acquiring filesystem lock
[2026-08-27T06:11:17.311Z] INFO [aft-pi] [aft] 2026-08-27T06:11:17Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] invalidated 2 files
[2026-08-27T06:11:17.311Z] INFO [aft-pi] [aft] 2026-08-27T06:11:17Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] tier2 refresh scheduled: reason=ceiling, categories=["dead_code", "unused_exports", "duplicates", "cycles"]
[2026-08-27T06:11:17.377Z] INFO [aft-pi] [aft] 2026-08-27T06:11:17Z [aft] callgraph store refresh failed: sqlite error: database is locked
[2026-08-27T06:11:17.377Z] INFO [aft-pi] [aft] 2026-08-27T06:11:17Z [aft] marked 1 callgraph store file(s) stale after refresh failure
[2026-08-27T06:11:17.432Z] INFO [aft-pi] [aft] 2026-08-27T06:11:17Z [aft] tier2 dead_code: refreshed callgraph store at ~/.local/share/cortexkit/aft/callgraph/d35f055cc7f455b1 for 6 watcher path(s): changed=6 deleted=0 refreshed_own=1
[2026-08-27T06:11:17.670Z] INFO [aft-pi] [aft] 2026-08-27T06:11:17Z [aft] perf tier2_callgraph_snapshot: source=callgraph_store files=142 exports=0 edges=7549 entry_points=0 ms=449
[2026-08-27T06:11:17.824Z] INFO [aft-pi] [aft] 2026-08-27T06:11:17Z [aft] perf tier2 phases category=dead_code freshness=0ms snapshot=466ms scan=50ms(6 files) db=24ms(lock=0,txn=24) rollup=62ms
[2026-08-27T06:11:17.824Z] INFO [aft-pi] [aft] 2026-08-27T06:11:17Z [aft] perf tier2 category=dead_code reuse=miss ms=623
[2026-08-27T06:11:17.876Z] INFO [aft-pi] [aft] 2026-08-27T06:11:17Z [aft] perf tier2 phases category=unused_exports freshness=0ms snapshot=0ms scan=28ms(6 files) db=8ms(lock=0,txn=8) rollup=16ms
[2026-08-27T06:11:17.876Z] INFO [aft-pi] [aft] 2026-08-27T06:11:17Z [aft] perf tier2 category=unused_exports reuse=miss ms=62
[2026-08-27T06:11:17.922Z] INFO [aft-pi] [aft] 2026-08-27T06:11:17Z [aft] perf tier2 category=duplicates reuse=miss ms=45
[2026-08-27T06:11:17.953Z] INFO [aft-pi] [aft] 2026-08-27T06:11:17Z [aft] perf tier2 category=cycles reuse=miss ms=26
[2026-08-27T06:11:24.376Z] INFO [aft-pi] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-08-27T06:11:24.378Z] INFO [aft-pi] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-08-27T06:11:24.378Z] INFO [aft-pi] AFT extension loading (plugin v0.52.2)
[2026-08-27T06:11:24.387Z] INFO [aft-pi] Resolved binary from versioned cache: ~/.cache/aft/bin/v0.52.2/aft
[2026-08-27T06:11:24.388Z] INFO [aft-pi] AFT storage migration skipped for pi: no legacy data at ~/.pi/agent/aft; using ~/.local/share/cortexkit/aft for fresh install
[2026-08-27T06:11:24.389Z] INFO [aft-pi] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-08-27T06:11:24.453Z] INFO [aft-pi] [lsp] auto-install: 3 npm + 0 github install(s) running in background
[2026-08-27T06:11:24.457Z] INFO [aft-pi] Workflow hints injected (3695 chars)
[2026-08-27T06:11:24.457Z] INFO [aft-pi] AFT extension ready (surface=all)
[2026-08-27T06:11:24.458Z] INFO [aft-pi] Spawning binary: ~/.cache/aft/bin/v0.52.2/aft (cwd: ~/research/quant-research-qlib)
[2026-08-27T06:11:24.458Z] INFO [aft-pi] bridge.spawnProcess: useFastembedBackend=true, parentORT=(unset), ortLibraryPath=(none)
[2026-08-27T06:11:24.686Z] INFO [aft-pi] hashline registration carrier transport=ndjson phase=configure edit_slot_survives=false
[2026-08-27T06:11:25.272Z] INFO [aft-pi] [aft] 2026-08-27T06:11:25Z [aft] log retention sweep: removed_files=0 bytes_freed=0
[2026-08-27T06:11:25.272Z] INFO [aft-pi] [aft] 2026-08-27T06:11:25Z [aft] started, pid 831438
[2026-08-27T06:11:25.445Z] INFO [aft-pi] [aft] 2026-08-27T06:11:25Z [aft] project root set: ~/research/quant-research-qlib
[2026-08-27T06:11:25.448Z] INFO [aft-pi] [aft] 2026-08-27T06:11:25Z [aft] gitignore matcher built: 43 pattern(s)
[2026-08-27T06:11:25.490Z] INFO [aft-pi] [aft] 2026-08-27T06:11:25Z [aft] search index: refreshed 5 stale file(s) from disk cache
[2026-08-27T06:11:25.503Z] INFO [aft-pi] [aft] 2026-08-27T06:11:25Z [aft] search index build adopted by equivalent reconfigure (generation 1)
[2026-08-27T06:11:25.503Z] INFO [aft-pi] [aft] 2026-08-27T06:11:25Z [aft] project root set: ~/research/quant-research-qlib
[2026-08-27T06:11:25.504Z] INFO [aft-pi] [lsp] lsp_paths_extra updated after auto-install: 4 dirs pushed to live bridges
[2026-08-27T06:11:25.507Z] INFO [aft-pi] [aft] 2026-08-27T06:11:25Z [aft] gitignore matcher built: 43 pattern(s)
[2026-08-27T06:11:25.509Z] INFO [aft-pi] Binary version: 0.52.2
[2026-08-27T06:11:25.511Z] INFO [aft-pi] [aft] 2026-08-27T06:11:25Z [aft] [ses_01a041d8-3566-7f29-8fce-63b8e0ab3a1a] bash_wait_detach: session=01a041d8-3566-7f29-8fce-63b8e0ab3a1a detached=false active_wait_sessions=0
[2026-08-27T06:11:25.528Z] INFO [aft-pi] [aft] 2026-08-27T06:11:25Z [aft] loaded symbol cache from disk: 141 files
[2026-08-27T06:11:25.548Z] INFO [aft-pi] [aft] 2026-08-27T06:11:25Z [aft] persisted symbol cache: 142 files
[2026-08-27T06:11:25.548Z] INFO [aft-pi] [aft] 2026-08-27T06:11:25Z [aft] pre-warmed symbol cache: 1 new, 141 cached, 142 files total
[2026-08-27T06:11:26.340Z] INFO [aft-pi] [aft] 2026-08-27T06:11:26Z [aft] watcher stopped: ~/research/quant-research-qlib
[2026-08-27T06:11:26.395Z] INFO [aft-pi] [aft] 2026-08-27T06:11:26Z [aft] watcher started: ~/research/quant-research-qlib
[2026-08-27T06:11:26.516Z] INFO [aft-pi] [aft] 2026-08-27T06:11:26Z [aft] [ses_01a041d8-3566-7f29-8fce-63b8e0ab3a1a] watcher overflow: forcing project rescan
[2026-08-27T06:11:26.519Z] INFO [aft-pi] [aft] 2026-08-27T06:11:26Z [aft] [ses_01a041d8-3566-7f29-8fce-63b8e0ab3a1a] gitignore matcher built: 43 pattern(s)
[2026-08-27T06:11:26.523Z] INFO [aft-pi] [aft] 2026-08-27T06:11:26Z [aft] [ses_01a041d8-3566-7f29-8fce-63b8e0ab3a1a] callgraph store scheduled for background rebuild after watcher overflow
[2026-08-27T06:11:26.523Z] INFO [aft-pi] [aft] 2026-08-27T06:11:26Z [aft] [ses_01a041d8-3566-7f29-8fce-63b8e0ab3a1a] started search index refresh after watcher overflow
[2026-08-27T06:11:26.633Z] INFO [aft-pi] [aft] 2026-08-27T06:11:26Z [aft] search index cold streaming build: 147 files, 27953 trigrams, 104 ms (pool=6)
[2026-08-27T06:11:31.917Z] INFO [aft-pi] [aft] 2026-08-27T06:11:31Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] invalidated 2 files
[2026-08-27T06:11:32.062Z] INFO [aft-pi] [aft] 2026-08-27T06:11:32Z [aft] [ses_01a041d8-3566-7f29-8fce-63b8e0ab3a1a] invalidated 2 files
[2026-08-27T06:11:38.550Z] INFO [aft-pi] [aft] 2026-08-27T06:11:38Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] perf tick: watcher={ingested:2,paths:4,dropped:0} drains=17 tier2=[cycles:1/20ms,dead_code:1/604ms,duplicates:1/25ms,unused_exports:1/54ms] semantic={collects:0,files:0,chunks:0,ms:0} callgraph_invalidations=1 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-27T06:11:54.394Z] INFO [aft-pi] [01a0377e-81d6-72d6-885c-5e90ec599a10] hashline registration carrier transport=ndjson phase=tool_call edit_slot_survives=true repeated=13
[2026-08-27T06:12:09.535Z] INFO [aft-pi] [aft] 2026-08-27T06:12:09Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] invalidated 2 files
[2026-08-27T06:12:09.583Z] INFO [aft-pi] [aft] 2026-08-27T06:12:09Z [aft] [ses_01a041d8-3566-7f29-8fce-63b8e0ab3a1a] invalidated 2 files
[2026-08-27T06:12:23.023Z] INFO [aft-pi] [aft] 2026-08-27T06:12:23Z [aft] [ses_01a041d8-3566-7f29-8fce-63b8e0ab3a1a] perf tick: watcher={ingested:3,paths:4,dropped:1} drains=5 tier2=[none] semantic={collects:0,files:0,chunks:0,ms:0} callgraph_invalidations=2 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-27T06:12:34.216Z] INFO [aft-pi] [aft] 2026-08-27T06:12:34Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] perf tick: watcher={ingested:1,paths:2,dropped:0} drains=14 tier2=[none] semantic={collects:0,files:0,chunks:0,ms:0} callgraph_invalidations=1 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-27T06:12:40.711Z] INFO [aft-pi] [aft] 2026-08-27T06:12:40Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] invalidated 2 files
[2026-08-27T06:12:40.735Z] INFO [aft-pi] [aft] 2026-08-27T06:12:40Z [aft] [ses_01a041d8-3566-7f29-8fce-63b8e0ab3a1a] invalidated 2 files
[2026-08-27T06:13:08.353Z] INFO [aft-pi] [01a0377e-81d6-72d6-885c-5e90ec599a10] hashline registration carrier transport=ndjson phase=tool_call edit_slot_survives=true repeated=11
[2026-08-27T06:13:18.621Z] INFO [aft-pi] [aft] 2026-08-27T06:13:18Z [aft] [ses_01a041d8-3566-7f29-8fce-63b8e0ab3a1a] perf tick: watcher={ingested:1,paths:2,dropped:0} drains=0 tier2=[none] semantic={collects:0,files:0,chunks:0,ms:0} callgraph_invalidations=1 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-27T06:13:23.158Z] INFO [aft-pi] [aft] 2026-08-27T06:13:23Z [aft] [ses_01a041d8-3566-7f29-8fce-63b8e0ab3a1a] invalidated 2 files
[2026-08-27T06:13:23.234Z] INFO [aft-pi] [aft] 2026-08-27T06:13:23Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] invalidated 2 files
[2026-08-27T06:13:29.985Z] INFO [aft-pi] [aft] 2026-08-27T06:13:29Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] perf tick: watcher={ingested:2,paths:4,dropped:0} drains=14 tier2=[none] semantic={collects:0,files:0,chunks:0,ms:0} callgraph_invalidations=2 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-27T06:14:04.088Z] INFO [aft-pi] [aft] 2026-08-27T06:14:04Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] invalidated 2 files
[2026-08-27T06:14:04.183Z] INFO [aft-pi] [aft] 2026-08-27T06:14:04Z [aft] [ses_01a041d8-3566-7f29-8fce-63b8e0ab3a1a] invalidated 2 files
[2026-08-27T06:14:12.697Z] INFO [aft-pi] [01a0377e-81d6-72d6-885c-5e90ec599a10] hashline registration carrier transport=ndjson phase=tool_call edit_slot_survives=true repeated=11
[2026-08-27T06:14:14.044Z] INFO [aft-pi] [aft] 2026-08-27T06:14:14Z [aft] [ses_01a041d8-3566-7f29-8fce-63b8e0ab3a1a] perf tick: watcher={ingested:2,paths:4,dropped:0} drains=0 tier2=[none] semantic={collects:0,files:0,chunks:0,ms:0} callgraph_invalidations=2 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-27T06:14:22.680Z] INFO [aft-pi] [aft] 2026-08-27T06:14:22Z [aft] [ses_01a041d8-3566-7f29-8fce-63b8e0ab3a1a] invalidated 2 files
[2026-08-27T06:14:23.078Z] INFO [aft-pi] [aft] 2026-08-27T06:14:22Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] invalidated 2 files
[2026-08-27T06:14:25.448Z] INFO [aft-pi] [aft] 2026-08-27T06:14:25Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] perf tick: watcher={ingested:2,paths:4,dropped:0} drains=16 tier2=[none] semantic={collects:0,files:0,chunks:0,ms:0} callgraph_invalidations=2 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-27T06:14:29.502Z] INFO [aft-pi] [aft] 2026-08-27T06:14:29Z [aft] inspect-triggered cold-build request queued behind concurrency cap (2): request=inspect:~/research/quant-research-qlib:40 kind=explicit inspect Tier-2 run
[2026-08-27T06:14:29.502Z] INFO [aft-pi] [aft] 2026-08-27T06:14:29Z [aft] inspect-triggered cold-build request queued behind concurrency cap (2): request=inspect:~/research/quant-research-qlib:38 kind=explicit inspect Tier-2 run
[2026-08-27T06:14:29.562Z] INFO [aft-pi] [aft] 2026-08-27T06:14:29Z [aft] perf tier2 category=duplicates reuse=miss ms=79
[2026-08-27T06:14:29.569Z] INFO [aft-pi] [aft] 2026-08-27T06:14:29Z [aft] tier2 dead_code: refreshed callgraph store at ~/.local/share/cortexkit/aft/callgraph/d35f055cc7f455b1 for 3 watcher path(s): changed=3 deleted=0 refreshed_own=0
[2026-08-27T06:14:29.584Z] INFO [aft-pi] [aft] 2026-08-27T06:14:29Z [aft] inspect-triggered cold-build slot acquired after 100ms wait: request=inspect:~/research/quant-research-qlib:40 kind=explicit inspect Tier-2 run
[2026-08-27T06:14:29.614Z] INFO [aft-pi] [aft] 2026-08-27T06:14:29Z [aft] perf tier2 category=cycles reuse=miss ms=136
[2026-08-27T06:14:29.620Z] INFO [aft-pi] [aft] 2026-08-27T06:14:29Z [aft] perf tier2_callgraph_snapshot: source=callgraph_store files=142 exports=0 edges=7573 entry_points=0 ms=127
[2026-08-27T06:14:29.684Z] INFO [aft-pi] [aft] 2026-08-27T06:14:29Z [aft] inspect-triggered cold-build slot acquired after 200ms wait: request=inspect:~/research/quant-research-qlib:38 kind=explicit inspect Tier-2 run
[2026-08-27T06:14:29.762Z] INFO [aft-pi] [aft] 2026-08-27T06:14:29Z [aft] perf tier2 phases category=unused_exports freshness=5ms snapshot=0ms scan=25ms(3 files) db=8ms(lock=0,txn=8) rollup=22ms
[2026-08-27T06:14:29.762Z] INFO [aft-pi] [aft] 2026-08-27T06:14:29Z [aft] perf tier2 category=unused_exports reuse=miss ms=269
[2026-08-27T06:14:29.762Z] INFO [aft-pi] [aft] 2026-08-27T06:14:29Z [aft] perf tier2 phases category=dead_code freshness=9ms snapshot=134ms scan=52ms(3 files) db=8ms(lock=0,txn=8) rollup=60ms
[2026-08-27T06:14:29.762Z] INFO [aft-pi] [aft] 2026-08-27T06:14:29Z [aft] perf tier2 category=dead_code reuse=miss ms=271
[2026-08-27T06:14:29.892Z] INFO [aft-pi] [aft] 2026-08-27T06:14:29Z [aft] perf tier2_callgraph_snapshot: source=callgraph_store files=142 exports=0 edges=7573 entry_points=0 ms=136
[2026-08-27T06:14:38.059Z] INFO [aft-pi] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-08-27T06:14:38.061Z] INFO [aft-pi] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-08-27T06:14:38.061Z] INFO [aft-pi] AFT extension loading (plugin v0.52.2)
[2026-08-27T06:14:38.070Z] INFO [aft-pi] Resolved binary from versioned cache: ~/.cache/aft/bin/v0.52.2/aft
[2026-08-27T06:14:38.070Z] INFO [aft-pi] AFT storage migration skipped for pi: no legacy data at ~/.pi/agent/aft; using ~/.local/share/cortexkit/aft for fresh install
[2026-08-27T06:14:38.071Z] INFO [aft-pi] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-08-27T06:14:38.077Z] INFO [aft-pi] Workflow hints injected (3695 chars)
[2026-08-27T06:14:38.077Z] INFO [aft-pi] AFT extension ready (surface=all)
[2026-08-27T06:14:38.078Z] INFO [aft-pi] Spawning binary: ~/.cache/aft/bin/v0.52.2/aft (cwd: ~/workspace/aiact)
[2026-08-27T06:14:38.078Z] INFO [aft-pi] bridge.spawnProcess: useFastembedBackend=true, parentORT=(unset), ortLibraryPath=(none)
[2026-08-27T06:14:38.422Z] INFO [aft-pi] hashline registration carrier transport=ndjson phase=configure edit_slot_survives=false
[2026-08-27T06:14:39.362Z] INFO [aft-pi] [aft] 2026-08-27T06:14:38Z [aft] log retention sweep: removed_files=0 bytes_freed=0
[2026-08-27T06:14:39.362Z] INFO [aft-pi] [aft] 2026-08-27T06:14:38Z [aft] started, pid 832868
[2026-08-27T06:14:39.362Z] INFO [aft-pi] [aft] 2026-08-27T06:14:39Z [aft] project root set: ~/workspace/aiact
[2026-08-27T06:14:39.362Z] INFO [aft-pi] [aft] 2026-08-27T06:14:39Z [aft] gitignore matcher built: 2 pattern(s)
[2026-08-27T06:14:39.362Z] INFO [aft-pi] [aft] 2026-08-27T06:14:39Z [aft] quarantining unresolved background task bash-fbf9c62fd9d39364: background task layout not found
[2026-08-27T06:14:39.362Z] INFO [aft-pi] [aft] 2026-08-27T06:14:39Z [aft] watcher started: ~/workspace/aiact
[2026-08-27T06:14:39.362Z] INFO [aft-pi] [aft] 2026-08-27T06:14:39Z [aft] loaded symbol cache from disk: 1 files
[2026-08-27T06:14:39.362Z] INFO [aft-pi] [aft] 2026-08-27T06:14:39Z [aft] pre-warmed symbol cache: 0 new, 1 cached, 1 files total
[2026-08-27T06:14:39.425Z] INFO [aft-pi] Binary version: 0.52.2
[2026-08-27T06:14:57.044Z] INFO [aft-pi] [aft] 2026-08-27T06:14:56Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] invalidated 2 files
[2026-08-27T06:14:57.111Z] INFO [aft-pi] [aft] 2026-08-27T06:14:57Z [aft] [ses_01a041d8-3566-7f29-8fce-63b8e0ab3a1a] invalidated 2 files
[2026-08-27T06:15:23.226Z] INFO [aft-pi] [aft] 2026-08-27T06:15:23Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] perf tick: watcher={ingested:1,paths:2,dropped:0} drains=18 tier2=[cycles:1/30ms,dead_code:1/266ms,duplicates:1/46ms,unused_exports:1/62ms] semantic={collects:0,files:0,chunks:0,ms:0} callgraph_invalidations=1 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-27T06:15:28.794Z] INFO [aft-pi] [01a0377e-81d6-72d6-885c-5e90ec599a10] hashline registration carrier transport=ndjson phase=tool_call edit_slot_survives=true repeated=9
[2026-08-27T06:15:34.533Z] INFO [aft-pi] [aft] 2026-08-27T06:15:34Z [aft] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=3 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-27T06:16:18.738Z] INFO [aft-pi] [aft] 2026-08-27T06:16:18Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=12 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-27T06:17:14.257Z] INFO [aft-pi] [aft] 2026-08-27T06:17:14Z [aft] [ses_01a0377e-81d6-72d6-885c-5e90ec599a10] perf tick: watcher={ingested:0,paths:0,dropped:0} drains=7 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


_Usernames and home paths have been stripped from this report._

Plugin version

No response

AFT binary version

No response

Platform

No response

Log output (optional)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions