Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
163 commits
Select commit Hold shift + click to select a range
5040343
mason: add sibling revision allocation probe
ualtinok Nov 11, 2026
ae7c462
mason: measure refresh stage ownership
ualtinok Nov 11, 2026
9e50aa9
mason: expose test-only refresh phase measurements
ualtinok Nov 11, 2026
bc9ca4e
mason: bound refresh invalidations with a single-flight cold fallback
ualtinok Nov 11, 2026
1bfaa04
mason: clarify refresh budget and build ownership comments
ualtinok Nov 11, 2026
04b4831
mason: admit declaration readers before resolving bystanders
ualtinok Nov 11, 2026
567d225
mason: hand extracted change records to the cold fallback
ualtinok Nov 11, 2026
d5fa960
mason: preserve cold-build lifecycle when refreshing
ualtinok Nov 11, 2026
74157da
mason: clarify semantic fill after a cold publication
ualtinok Nov 11, 2026
06e8210
mason: resolve exact computed Rust include inputs (#1425)
ualtinok Nov 11, 2026
1d229b1
mason: recognize Rust macro matcher binding nodes (#1425)
ualtinok Nov 11, 2026
f7c6b16
mason: refuse hidden macro forwarding and generation (#1425)
ualtinok Nov 11, 2026
b672676
mason: cache Rust source facts and prefilter parsing (#1425)
ualtinok Nov 11, 2026
2b5844b
mason: expose failed fingerprint trace to release probes (#1425)
ualtinok Nov 11, 2026
3a1f655
mason: short-circuit unsupported local include macro calls (#1425)
ualtinok Nov 11, 2026
3a2cf77
mason: keep unrelated byte and C strings out of path decoding (#1425)
ualtinok Nov 11, 2026
1612b5c
mason: print source uncertainty in fingerprint probes (#1425)
ualtinok Nov 11, 2026
bcef0ca
mason: keep ordinary macro reexports resolvable (#1425)
ualtinok Nov 11, 2026
57361f8
mason: prefilter macro facts after discovering include names (#1425)
ualtinok Nov 11, 2026
938c348
mason: reject shared temp roots and disclose unreadable index folders…
ualtinok Nov 11, 2026
3193514
mason: repair gap compile checks and preserve vanished-root errors (#…
ualtinok Nov 11, 2026
763ff2a
mason: treat unreadable checkout roots as retryable index gaps (#1428)
ualtinok Nov 11, 2026
42aff7b
mason: preserve canonical root spelling in index gaps (#1428)
ualtinok Nov 11, 2026
7592138
mason: keep index gaps rebuildable on 0.64 rollback (#1428)
ualtinok Nov 11, 2026
81fbabb
mason: share idle data timers and native FSEvents delivery
ualtinok Nov 11, 2026
0d7c939
mason: instrument native FSEvents context release
ualtinok Nov 11, 2026
3301ce5
mason: allow deferred native FSEvents context destruction
ualtinok Nov 11, 2026
43e871e
mason: honor planned embedding pauses and quiet expected refusals
ualtinok Nov 11, 2026
803eb7a
mason: keep planned pauses outside failure-only findings
ualtinok Nov 11, 2026
471ecb2
mason: initialize canonical root in pause health fixture
ualtinok Nov 11, 2026
2866d99
mason: bound expected-refusal log deduplication history
ualtinok Nov 11, 2026
75d6423
mason: tolerate CI stalls in slow embedding recovery test
ualtinok Nov 11, 2026
82aa0b5
mason: keep slow embedding test within a one-minute budget
ualtinok Nov 11, 2026
ae239da
mason: add bounded attested secret-use transport and contract fixture
ualtinok Nov 10, 2026
307daad
mason: make secret-use fixture handle cancelled authentication and gr…
ualtinok Nov 10, 2026
737487d
mason: reshape vault calls around concrete outgoing requests
ualtinok Nov 11, 2026
ebc9744
mason: migrate vault fixtures and vendor Cingulate decisions
ualtinok Nov 11, 2026
30d64ed
mason: coordinate per-request phone approvals and proxy routing
ualtinok Nov 11, 2026
bda7317
mason: align request audit fields and explain vault route boundaries
ualtinok Nov 11, 2026
4f1c06a
mason: exercise live route requests and guard concurrent status notices
ualtinok Nov 11, 2026
dfa5393
mason: correct cross-platform proxy types and ephemeral upstream fixt…
ualtinok Nov 11, 2026
705d2d9
mason: bind redirect fixture to a verified second DNS host
ualtinok Nov 11, 2026
4bd150d
mason: verify held phone status and document live vault release
ualtinok Nov 11, 2026
0904289
mason: clarify secret-use fixture counters
ualtinok Nov 11, 2026
de3e489
mason: reserve once-approval notice for actual once decisions
ualtinok Nov 11, 2026
3207a65
mason: explain the consumed one-use approval distinction
ualtinok Nov 11, 2026
0e6facc
mason: isolate released sends and coordinate cancellable request-id c…
ualtinok Nov 11, 2026
1d78a0b
mason: defend cancelled cards, multi-label deadlines and late vault r…
ualtinok Nov 11, 2026
66524a6
mason: finish strict reply lifetimes and remove legacy production fet…
ualtinok Nov 11, 2026
2ae1eaf
mason: wipe escaped wire strings and verify held-command cancellation
ualtinok Nov 11, 2026
ddb2d25
mason: preserve refusal text and finish secret-only retry isolation
ualtinok Nov 11, 2026
6594dd1
mason: count the skipped duplicate-json vault calls consistently
ualtinok Nov 11, 2026
f7b0a47
mason: clarify failed-await withdrawal scope
ualtinok Nov 11, 2026
40cf206
mason: keep approval runtime hooks available to Windows proxy compila…
ualtinok Nov 11, 2026
96d9740
mason: cancel held foreground secret fetches with their tool call
ualtinok Nov 11, 2026
ac06698
mason: expose only the scoped fetch test hook to foreground fixtures
ualtinok Nov 11, 2026
ffa56c9
mason: install stamped secret scopes for real foreground tool jobs
ualtinok Nov 11, 2026
2fcd0de
mason: give real-clock foreground fixtures live approval statements
ualtinok Nov 11, 2026
8c002e5
mason: harden secret fetch buffers and preserve actual consent outcomes
ualtinok Nov 11, 2026
3ca09d6
mason: preserve fetch material refusals during early redaction regist…
ualtinok Nov 11, 2026
137c342
mason: recover only lost consent filings and retain definite refusal …
ualtinok Nov 11, 2026
aaa5e16
mason: model documented consent error frames and live statement expir…
ualtinok Nov 11, 2026
d7a4289
mason: close cancellation and consent classification audit gaps
ualtinok Nov 11, 2026
2a69bf9
mason: preserve existing refusal text after connector cancellation
ualtinok Nov 11, 2026
d9a4c41
mason: synchronize gh routing manifests from vault
ualtinok Nov 11, 2026
0e1ccb8
mason: format manifest sync and annotate worker result
ualtinok Nov 11, 2026
a8ee09d
mason: match pinned manifest wire field order
ualtinok Nov 11, 2026
153773c
mason: include watched manifest versions in sync health
ualtinok Nov 11, 2026
e9af340
mason: hand back worker PTY launches immediately
ualtinok Nov 11, 2026
116d5c2
mason: format PTY regression assertions
ualtinok Nov 11, 2026
2367cba
mason: pin Broca manifest and harness compatibility
ualtinok Nov 11, 2026
45795dd
mason: skip redundant background metadata syncs
ualtinok Nov 11, 2026
dedc531
mason: stop per-spawn git helpers in sandbox profile builders
ualtinok Nov 11, 2026
a37585a
mason: coalesce LSP applicability walks per root
ualtinok Nov 11, 2026
37390f8
mason: format applicability walk scheduling and tests
ualtinok Nov 11, 2026
65ef222
mason: diagnose full health evidence with per-part freshness
ualtinok Nov 11, 2026
79b5bb4
mason: format health diagnosis regression coverage
ualtinok Nov 11, 2026
7bc76b7
mason: require fully healthy findings for trimmed 200-root report
ualtinok Nov 11, 2026
7d08850
mason: seed measured cleanup evidence in healthy-fleet fixture
ualtinok Nov 11, 2026
fd2c9ab
mason: explain protected folders and unknown PTY exits
ualtinok Nov 11, 2026
dd94ca8
mason: retain credential refusal assertions for task environments
ualtinok Nov 11, 2026
1fac444
mason: enable read-only OpenCode Code Mode tools (#1004)
ualtinok Nov 11, 2026
27f15b3
mason: prioritize Linux agent shells for OOM killing (#750)
ualtinok Nov 11, 2026
34c8d40
mason: isolate process-wide OOM warning regression test
ualtinok Nov 11, 2026
d0c0a8c
mason: prune obsolete cross-repository text index paths
ualtinok Nov 11, 2026
cf2514d
mason: remove helpers orphaned by legacy index cleanup
ualtinok Nov 11, 2026
1cab0ee
mason: adapt lost PTY exit fixture to batch 2 command roots
ualtinok Nov 11, 2026
0dcc171
mason: register scoped fetch fixture Option restores
ualtinok Nov 11, 2026
7f6e2da
mason: instrument matching-source preparation for replay
ualtinok Nov 11, 2026
db75a7d
mason: align profiling import formatting
ualtinok Nov 11, 2026
d1b831c
mason: prepare only possible phrase lines during rerank
ualtinok Nov 11, 2026
fd9ade1
mason: record rerank preparation parity and latency evidence
ualtinok Nov 12, 2026
dac8763
Preserve uncommitted changes from an interrupted run
ualtinok Nov 11, 2026
c5bb8c5
mason: preserve file gate semantics
ualtinok Nov 11, 2026
b79ec86
mason: bound integration shell gates
ualtinok Nov 11, 2026
e9e1f51
mason: extend test gates to existing shell predicates
ualtinok Nov 11, 2026
aa1204c
mason: bound remaining integration shell gates
ualtinok Nov 11, 2026
ff629c3
mason: bound library test shell gates
ualtinok Nov 11, 2026
b9091b8
mason: note bounded test gates
ualtinok Nov 11, 2026
542f99e
mason: clarify test gate release note
ualtinok Nov 11, 2026
0de5456
mason: clean up failed gate regression processes
ualtinok Nov 11, 2026
1458302
mason: fall back to fsync on unsupported macOS mounts
ualtinok Nov 11, 2026
22e52cc
mason: pass task paths when syncing restored remote output
ualtinok Nov 11, 2026
fa8e91d
mason: measure filled-store status push costs
ualtinok Nov 12, 2026
39d9052
mason: complete status probe database instrumentation
ualtinok Nov 12, 2026
d8e39a1
mason: bind a harness in status cost fixture
ualtinok Nov 12, 2026
edf5f7c
mason: remove store scans and mutation locks from status pushes
ualtinok Nov 12, 2026
7229217
mason: clone the cached meaning generation through its guard
ualtinok Nov 12, 2026
964317a
mason: prove meaning cache misses stay off the push reader
ualtinok Nov 12, 2026
1fb954c
mason: probe listing-only backup inventory cost
ualtinok Nov 12, 2026
9c65707
mason: count status-push tracked files off the backup mutex with a st…
ualtinok Nov 12, 2026
785ba84
mason: fix test parse counter; probe inventory component costs
ualtinok Nov 12, 2026
0d9e7d3
mason: skip re-resolving the format gate for unchanged backup metadat…
ualtinok Nov 12, 2026
619e091
mason: register the moved backup discovery cap
ualtinok Nov 12, 2026
ba79926
mason: clarify the live-database alias comment
ualtinok Nov 12, 2026
2a8b9bb
mason: show unknown checkpoint counts in status dialogs
ualtinok Nov 12, 2026
7fddecd
mason: correct pi checkpoint row assertions
ualtinok Nov 12, 2026
d34ab77
mason: redact inline passwords and secret-shaped assignments (#1432)
ualtinok Nov 12, 2026
8472297
mason: scope secret-shaped values to shell command text
ualtinok Nov 12, 2026
31f21fe
mason: publish detached Linux and Windows release symbols
ualtinok Nov 12, 2026
e923324
mason: allow stripped Rust GDB loader section
ualtinok Nov 12, 2026
9f14af4
mason: symbolize the release probe at its source line
ualtinok Nov 12, 2026
6aea8b8
mason: document Linux and Windows release symbolization
ualtinok Nov 12, 2026
069fbbd
mason: run ignored real-daemon tool-provider tests in Linux CI
ualtinok Nov 12, 2026
d34dbd2
mason: account for real-daemon nextest installer in workflow gate
ualtinok Nov 12, 2026
7212a44
mason: expose real-daemon startup errors in CI diagnostics
ualtinok Nov 12, 2026
3769c9b
mason: keep daemon fixture parent directories private
ualtinok Nov 12, 2026
d2ab3f5
mason: preflight private daemon run-directory ancestry
ualtinok Nov 12, 2026
560ca2d
mason: keep daemon pass counts visible in the CI log tail
ualtinok Nov 12, 2026
15a0663
mason: emit daemon pass statuses without final skipped inventory
ualtinok Nov 12, 2026
7b464f8
mason: measure ticket repository snapshot cost
ualtinok Nov 12, 2026
72354a5
mason: cache GitHub ticket repository snapshots by file identity
ualtinok Nov 12, 2026
883decb
mason: restrict snapshot timing import to Unix
ualtinok Nov 12, 2026
ad0fd9c
mason: expose pull request review thread state
ualtinok Nov 10, 2026
6d50f1a
mason: complete review thread fixture runner
ualtinok Nov 10, 2026
979a828
mason: preserve discussion selector heading contract
ualtinok Nov 10, 2026
0c75435
mason: expect unavailable thread state in routing fixture
ualtinok Nov 10, 2026
a6db805
mason: defer standalone grep dispatch (#1432)
ualtinok Nov 12, 2026
4cc9fd0
mason: use native write command in grep ordering test (#1432)
ualtinok Nov 12, 2026
5aec69e
mason: verify grep dispatch parity with native requests (#1432)
ualtinok Nov 12, 2026
0602cee
mason: retain prefixed grep error parity in dispatch test (#1432)
ualtinok Nov 12, 2026
37706ba
mason: run every ignored real-daemon test in the tool-provider module
ualtinok Nov 12, 2026
14e44d5
mason: pass the range mapping to the #1432 command redaction calls
ualtinok Nov 12, 2026
e509bc6
mason: let the shell format prefilter admit short password assignments
ualtinok Nov 12, 2026
b08094d
Search-quality descriptor for post-0.64 batch 3
ualtinok Nov 12, 2026
2a6e8c2
mason: align real-host matrix with read-only Code Mode
ualtinok Nov 12, 2026
5f4c21f
Revert "mason: align real-host matrix with read-only Code Mode"
ualtinok Nov 12, 2026
1399353
Hold read-only Code Mode tools (#1004) out of batch 3
ualtinok Nov 12, 2026
0c4c038
mason: align storage refusals and keep fixtures checkout-independent
ualtinok Nov 12, 2026
f264b8b
mason: isolate fleet consumers and pin pending-read budget regressions
ualtinok Nov 12, 2026
d156e6e
mason: ignore empty watcher drains and bound failed-root health detail
ualtinok Nov 12, 2026
8f30373
mason: observe completed-check persistence before testing cold reuse
ualtinok Nov 12, 2026
b14ed88
mason: separate optional status bars from e2e content assertions
ualtinok Nov 12, 2026
0de0b7a
mason: warm the private sandbox shim before validation
ualtinok Nov 12, 2026
25c5445
mason: preserve writable private shim while warming its cache
ualtinok Nov 12, 2026
2db8c0a
mason: pin watcher clock and healthy-root probe regressions
ualtinok Nov 12, 2026
24aa570
mason: keep idle root probes out of watcher pending state
ualtinok Nov 12, 2026
622d5be
mason: format the watcher refresh deadline probe
ualtinok Nov 12, 2026
bb829da
mason: explain cleanup lock contention in pending queries
ualtinok Nov 12, 2026
985ab9c
mason: trace watcher pending sources for native reproduction
ualtinok Nov 12, 2026
085e047
mason: distinguish idle continuation readers from watcher changes
ualtinok Nov 12, 2026
0bc5260
mason: enqueue the pending continuation regression path
ualtinok Nov 12, 2026
1a2fa6f
mason: snapshot all watcher metadata without inventing pending work
ualtinok Nov 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Cross-repository search keeps published index-store reads and the bounded unpublished-pattern fallback while removing unused unbounded trigram builds and comparisons of saved trigram indexes against files on disk.
1 change: 1 addition & 0 deletions .alfonso/release-notes/next/issue-1425.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Rust diagnostics now handle literal `concat!` include paths and local fixture macros with literal arguments. Unresolved includes name their source file. Thanks @elmagow. (#1425)
1 change: 1 addition & 0 deletions .alfonso/release-notes/next/issue-1428.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Shared temporary folders no longer start project watchers, indexing, or language-server discovery, regardless of how they are mounted. Projects in their subfolders still work normally. Index builds now skip unreadable folders, report the coverage gap, and retry them on the next rescan instead of failing the whole build.
1 change: 1 addition & 0 deletions .alfonso/release-notes/next/linux-shell-oom-priority.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Linux agent shell commands now raise their OOM kill priority to protect AFT and desktop sessions during memory pressure (#750).
1 change: 1 addition & 0 deletions .alfonso/release-notes/next/live-secret-vault.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Shell `{{ck-secret:<label>}}` placeholders now use the live vault over AFT's authenticated daemon route. Each HTTPS request is checked against its real host and path; released keys are inserted only at the vault's designated location and are never reused to authorize another request. Requests needing phone approval share the same pending vault request's card, with one 10-minute deadline across all labels in each HTTP request. Cancelling the last waiter withdraws its card. URL fetches also ask per request and redirect, and never retry a credential-bearing send. Standalone use remains fail-closed, and keys stay out of command output, task logs and status replies.
1 change: 1 addition & 0 deletions .alfonso/release-notes/next/lsp-applicability-walks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Coalesce per-root language-server applicability walks with a short settle window and one follow-up for changes received during a walk.
1 change: 1 addition & 0 deletions .alfonso/release-notes/next/manifest-vault-sync.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
AFT now synchronizes signed GitHub routing manifests from the vault and reports the gh shim's activation verdict in daemon health.
1 change: 1 addition & 0 deletions .alfonso/release-notes/next/pr-read-thread-state.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Pull-request reads now show review-thread IDs and open/resolved state, with explicit warnings when thread state is unavailable, incomplete, or cached.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- Protected CortexKit module data, module state, and AFT storage refusals explain why file tools cannot open them and which commands to use instead.
- PTY tasks with lost exit status report exit status unknown without an exit code; real kills keep their status and reason.
1 change: 1 addition & 0 deletions .alfonso/release-notes/next/redact-inline-passwords.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Shell command logs and issue reports now mask inline passwords named `PW` or `PASS` and secret-shaped assignment values.
1 change: 1 addition & 0 deletions .alfonso/release-notes/next/release-debug-symbols.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Release downloads now include matching Linux debug-symbol and Windows PDB archives for symbolizing production stack traces without enlarging installed packages.
1 change: 1 addition & 0 deletions .alfonso/release-notes/next/rerank-prepare.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Search prepares matching-line text only when needed, reducing concurrent rerank CPU without changing results.
1 change: 1 addition & 0 deletions .alfonso/release-notes/next/search-bounded-reads.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Keep status and configuration responsive while grep searches large files.
1 change: 1 addition & 0 deletions .alfonso/release-notes/next/self-diagnosis-snapshot.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- AFT self-diagnosis now uses complete root evidence and each snapshot part's freshness window, so large heaps and size-trimmed health reports do not produce spurious unknown findings.
1 change: 1 addition & 0 deletions .alfonso/release-notes/next/status-push-cost.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Status pushes avoid checkpoint mutation locks, meaning-store rebuilds and compression scans, and sample physical index-store size in the background.
1 change: 1 addition & 0 deletions .alfonso/release-notes/next/status-unknown-checkpoints.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Show unknown checkpoint counts as — in status dialogs.
1 change: 1 addition & 0 deletions .alfonso/release-notes/next/task-metadata-writes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Skip repeated background-task metadata writes and fsyncs when persisted fields and their durability requirements have not changed.
1 change: 1 addition & 0 deletions .alfonso/release-notes/next/test-gate-loops.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Test shell commands waiting for release files now stop when their parent directory disappears or their deadline expires, preventing orphaned polling processes.
1 change: 1 addition & 0 deletions .alfonso/release-notes/next/worker-pty-handback.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
A worker's interactive (pty) shell command answers with its task id at once instead of waiting until it ends.
26 changes: 26 additions & 0 deletions .github/workflows/_unit-suite.yml
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,32 @@ jobs:
SUBC_CORE_BIN: ${{ steps.subc_core.outputs.path }}
SUBC_CORE_WIRE_VERSION: "2"

unit-linux-real-daemon:
name: Real-daemon tool-provider tests (Linux)
if: ${{ github.event_name != 'pull_request' }}
runs-on: ubuntu-24.04
timeout-minutes: 19
env:
SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: sccache
CARGO_INCREMENTAL: "0"
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: mozilla-actions/sccache-action@fc920bf0ec8de6ee65d409111f7ec508035751ba # v0.0.11
continue-on-error: true
- name: Start compiler cache (fall back to uncached)
shell: bash
run: bash scripts/ci-sccache-start.sh
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2
with:
shared-key: unit-linux-real-daemon
cache-on-failure: true
save-if: ${{ github.ref == 'refs/heads/main' }}
- uses: ./.github/actions/setup-nextest
- name: Run ignored real-daemon tool-provider tests
run: bash scripts/ci-real-daemon-tests.sh

plugin-e2e-linux:
name: Plugin e2e (${{ matrix.suite }}, Linux)
if: ${{ github.event_name != 'pull_request' }}
Expand Down
67 changes: 62 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -441,7 +441,22 @@ jobs:
# Use gnu target (not musl) so dlopen works for ONNX Runtime loading.
# musl produces static binaries where dlopen is a stub that always fails.
- name: Build
run: cross build --release --target aarch64-unknown-linux-gnu
# Keep line tables only until objcopy detaches them below; shipped code
# and optimization settings are unchanged.
run: cross build --release --target aarch64-unknown-linux-gnu --config 'profile.release.strip=false' --config 'profile.release.split-debuginfo="off"'

- name: Install ARM64 debug extraction tools
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -y binutils-aarch64-linux-gnu
- name: Split and verify Linux debug symbols
run: python3 scripts/release-debug-symbols.py linux --binary target/aarch64-unknown-linux-gnu/release/aft --objcopy aarch64-linux-gnu-objcopy --archive release-debug/aft-linux-arm64-debug.zip
- uses: actions/upload-artifact@v4
with:
name: linux-arm64-debug
retention-days: ${{ github.event_name == 'schedule' && 2 || 90 }}
path: release-debug/aft-linux-arm64-debug.zip
if-no-files-found: error

- uses: actions/upload-artifact@v4
with:
Expand Down Expand Up @@ -484,7 +499,16 @@ jobs:
# Use gnu target (not musl) so dlopen works for ONNX Runtime loading.
# musl produces static binaries where dlopen is a stub that always fails.
- name: Build
run: cross build --release --target x86_64-unknown-linux-gnu
run: cross build --release --target x86_64-unknown-linux-gnu --config 'profile.release.strip=false' --config 'profile.release.split-debuginfo="off"'

- name: Split and verify Linux debug symbols
run: python3 scripts/release-debug-symbols.py linux --binary target/x86_64-unknown-linux-gnu/release/aft --archive release-debug/aft-linux-x64-debug.zip
- uses: actions/upload-artifact@v4
with:
name: linux-x64-debug
retention-days: ${{ github.event_name == 'schedule' && 2 || 90 }}
path: release-debug/aft-linux-x64-debug.zip
if-no-files-found: error

- name: Bundle shipped Linux binary
id: bundle
Expand Down Expand Up @@ -601,7 +625,8 @@ jobs:
}

- name: Build
run: cargo build --release --target aarch64-pc-windows-msvc
# MSVC keeps debug info in a PDB, not in the shipped executable.
run: cargo build --release --target aarch64-pc-windows-msvc --config 'profile.release.strip=false'
env:
CARGO_TARGET_DIR: ${{ env.AFT_CI_TARGET_DIR }}

Expand All @@ -616,6 +641,16 @@ jobs:
throw "Staged release binary differs from the compiled bytes"
}

- name: Verify and package Windows PDB
shell: pwsh
run: python scripts/release-debug-symbols.py windows --binary target/aarch64-pc-windows-msvc/release/aft.exe --pdb "$env:AFT_CI_TARGET_DIR/aarch64-pc-windows-msvc/release/aft.pdb" --archive release-debug/aft-windows-arm64-pdb.zip
- uses: actions/upload-artifact@v4
with:
name: windows-arm64-pdb
retention-days: ${{ github.event_name == 'schedule' && 2 || 90 }}
path: release-debug/aft-windows-arm64-pdb.zip
if-no-files-found: error

- uses: actions/upload-artifact@v4
with:
name: win32-arm64
Expand Down Expand Up @@ -685,13 +720,13 @@ jobs:
shell: pwsh

- name: Release library codegen (shipped profile)
run: cargo build --release --lib --target x86_64-pc-windows-msvc -p agent-file-tools --timings
run: cargo build --release --lib --target x86_64-pc-windows-msvc -p agent-file-tools --timings --config 'profile.release.strip=false'
shell: pwsh
env:
CARGO_TARGET_DIR: ${{ env.AFT_CI_TARGET_DIR }}

- name: Build
run: cargo build --release --bin aft --target x86_64-pc-windows-msvc -p agent-file-tools --timings
run: cargo build --release --bin aft --target x86_64-pc-windows-msvc -p agent-file-tools --timings --config 'profile.release.strip=false'
shell: pwsh
env:
CARGO_TARGET_DIR: ${{ env.AFT_CI_TARGET_DIR }}
Expand All @@ -707,6 +742,16 @@ jobs:
throw "Staged release binary differs from the compiled bytes"
}

- name: Verify and package Windows PDB
shell: pwsh
run: python scripts/release-debug-symbols.py windows --binary target/x86_64-pc-windows-msvc/release/aft.exe --pdb "$env:AFT_CI_TARGET_DIR/x86_64-pc-windows-msvc/release/aft.pdb" --archive release-debug/aft-windows-x64-pdb.zip
- uses: actions/upload-artifact@v4
with:
name: windows-x64-pdb
retention-days: ${{ github.event_name == 'schedule' && 2 || 90 }}
path: release-debug/aft-windows-x64-pdb.zip
if-no-files-found: error

# Execute the exact bytes being published once on Windows.
- name: Smoke-test binary
run: target/x86_64-pc-windows-msvc/release/aft.exe --version
Expand Down Expand Up @@ -1393,6 +1438,18 @@ jobs:
with:
name: win32-arm64
path: artifacts/win32-arm64
- name: Download Linux debug symbols
uses: actions/download-artifact@v4
with:
pattern: linux-*-debug
path: release-assets
merge-multiple: true
- name: Download Windows PDBs
uses: actions/download-artifact@v4
with:
pattern: windows-*-pdb
path: release-assets
merge-multiple: true

- name: Verify tested macOS binary for release
run: python3 scripts/native-release-artifact.py unpack-published --target aarch64-apple-darwin --archive "$RUNNER_TEMP/tested-darwin-arm64/release.tar" --binary release-assets/aft-darwin-arm64 --dsym release-assets/aft-darwin-arm64-dsym.zip
Expand Down
2 changes: 2 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"slice_class": "engine_unwired",
"targeted_mechanism": "none",
"kind": "harness",
"fixtures": [
"crates/aft/tests/integration/tool_call_parity_test.rs",
"crates/aft/src/commands/semantic_search/external_disk_check.rs",
"crates/aft/src/commands/semantic_search/mod.rs",
"crates/aft/src/search_index.rs",
"crates/aft/src/semantic_index.rs"
],
"note": "Remove the unused unbounded legacy trigram builder, capped lexical-ranking API, memory accounting, saved-index reconciliation and its semantic recorded-stat accessor. Published external repositories already use ExternalSearch's index-store checkout at this base. Preserve unpublished external plain-query walks and the bounded explicit-pattern/query+pattern corpus; specialize its disk collector to the empty corpus its sole production caller supplies. Candidate selection, score formulas, source-first admission, deadlines and public coverage fields remain unchanged. Remove constant-None legacy snapshot branches from ranking and glob. The 300-query interleaved cross-repository replay uses a frozen second AFT checkout; ranked paths and counts must remain identical. No ranking or count difference is waived. Full legacy module deletion is deferred because changing the unpublished pattern fallback requires a separate design decision."
}
114 changes: 114 additions & 0 deletions benchmarks/aft-search/slice-descriptors/ci-speed-post064-batch-3.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
{
"slice_class": "engine_unwired",
"targeted_mechanism": "none",
"kind": "harness",
"fixtures": [
"crates/aft/src/commands/semantic_search/external_disk_check.rs",
"crates/aft/src/commands/semantic_search/external_pattern.rs",
"crates/aft/src/commands/semantic_search/mod.rs",
"crates/aft/src/commands/semantic_search/snippet_bounds.rs",
"crates/aft/src/lib.rs",
"crates/aft/src/search_index.rs",
"crates/aft/src/semantic_index.rs",
"crates/aft/tests/integration/tool_call_parity_test.rs"
],
"slices": [
"rerank-line-prefilter",
"cross-repo-search-index-store",
"deferred-standalone-grep",
"status-push-cost"
],
"note": "Combined post-0.64 batch 3 integration, based on batch 2's tip 398e5549aeaa (main 9b505ee5 has the same tree). Copied the engine_unwired descriptor class and the inherited reference pattern-count declarations from ci-speed-post064-batch-2.json. Ranking-fenced changes: semantic_search/mod.rs scans a phrase's first word in raw line bytes before normalizing a line during rerank (exact because normalization only collapses whitespace and ASCII-lowercases, proven on 400 random mixed-script sources); external_pattern.rs and external_disk_check.rs serve another repository's search from the index store instead of the deleted in-memory text index; search_index.rs and semantic_index.rs lose that in-memory index; telemetry.rs adds status-cost probes; lib.rs module declarations. No routing, candidate selection, score, range or ranked rendering change is intended. Evidence: the rerank change replayed all 6,897 recorded query lines with byte-identical rankings, scores, snippets and counts; the cross-repository change replayed 300 queries identically. The pattern_counts below remain only the pre-0.64 reference transitions already declared by batch 1 and batch 2; they grant no new difference.",
"pattern_counts": {
"followup-census:910002": {
"candidate_files": {
"before": 3,
"after": 6
},
"files_examined": {
"before": 3,
"after": 6
}
},
"followup-census:910003": {
"candidate_files": {
"before": 972,
"after": 860
},
"files_examined": {
"before": 972,
"after": 860
}
},
"followup-census:910004": {
"candidate_files": {
"before": 972,
"after": 860
},
"files_examined": {
"before": 972,
"after": 860
}
},
"followup-census:910005": {
"candidate_files": {
"before": 194,
"after": 141
},
"files_examined": {
"before": 194,
"after": 141
}
},
"followup-census:910010": {
"candidate_files": {
"before": 6,
"after": 19
},
"files_examined": {
"before": 6,
"after": 19
}
},
"followup-census:910011": {
"candidate_files": {
"before": 942,
"after": 729
},
"files_examined": {
"before": 942,
"after": 729
}
},
"followup-census:910012": {
"candidate_files": {
"before": 1031,
"after": 730
},
"files_examined": {
"before": 1031,
"after": 730
}
},
"followup-census:910013": {
"candidate_files": {
"before": 908,
"after": 45
},
"files_examined": {
"before": 908,
"after": 45
}
},
"followup-census:910014": {
"candidate_files": {
"before": 1011,
"after": 24
},
"files_examined": {
"before": 1011,
"after": 24
}
}
}
}
Loading
Loading