Atlas Scout Preview 26 · Official release · August 3, 2026
More evidence. Fewer guesses. Less duplicated work.
This release began as a routine hunt for wasted work and found something worse than waste: Atlas Scout was throwing away real evidence to make room for a byte-identical copy of itself. Every truncated answer had been paying for the same bytes twice. Preview 26 fixes that boundary, tightens which relationships Scout is willing to believe, and stops the Go and SQLite paths from repeating work they had already done—with every regression printed next to the wins it rode in with.
Modern MCP · canonical structured payload · same request
The answer stopped paying for itself twice.
Truncation is the worst failure a context tool can have, because it is invisible: the agent never learns what it was not shown. It reasons confidently from 397 lines as if they were the whole story. The audit found Scout truncating for the worst possible reason.
Atlas Scout returned every tool result as structured content and then copied the same JSON into a text block for older hosts. The response guard measured both copies before deciding what fit. A perfectly valid answer could therefore be truncated—not because the evidence was too large, but because its compatibility copy consumed the same budget a second time.
Preview 26 settles the 24 KiB evidence budget against the canonical structured result first. Only then can an older client receive its text mirror, under a separate 48 KiB hard ceiling. Clients negotiating MCP 2025-06-18 or later receive no duplicate mirror at all. The truncated flag now means useful evidence did not fit.
Swipe the chart and table sideways to inspect every exact value.
One modern fast-context response
- live MCP session
- same zaguancorex request
- modern protocol 2025-11-25
- evidence: higher is better
- envelope: lower is better
| Measured boundary | Previous behavior | Preview 26 | Change |
|---|---|---|---|
| Useful evidence | 7,648 bytes | 13,105 bytes | +71% |
| Complete modern envelope | 16,182 bytes | 13,190 bytes | −18% |
Modern clients
One semantic answer.
Structured content is the answer. Claude Code, Codex, OpenCode, and Antigravity all passed live structured-only source-evidence tasks.
Legacy clients
Compatibility without evidence loss.
Older protocol revisions keep their text mirror, but it is added after the useful result has been budgeted and cannot force that result to shrink.
Live host checks prove the structured result reached each tested model and supported a source-verified answer. They do not prove that every host avoids reserializing the data internally, so Preview 26 makes no cross-host token-efficiency claim.
Named evidence tiers · language boundaries · traversal safety
A decimal stopped pretending to be certainty.
Ask a code tool who calls a Rust is_emptymethod and a wrong answer is worse than no answer: 220 reported callers means the agent either reads 220 call sites or trusts none of them. Preview 26’s answer for that same method is six—the ones the evidence can actually support. The other 214 are no longer asserted as facts.
Stored confidence values occupied four clusters, but a number invites arithmetic the evidence cannot support. Preview 26 names what each relationship is actually based on, counts those tiers in reference results, and decides traversal from the evidence—not an arbitrary threshold.
| Evidence tier | What was observed | May extend traversal? |
|---|---|---|
proven | A language or module rule identifies the target | Yes |
receiver_typed | A recorded receiver type identifies one indexed method | Yes |
unique_name | One non-method declaration has that name in the language family | Yes |
unique_method_name | One method remains, but its receiver type is unknown | No—reported, counted, and withheld |
The old global-unique pass allowed names in unrelated languages to collide or bind: Rust calls reached TypeScript and C++ declarations, and Python calls reached Rust methods. Language families now share a namespace only where the languages genuinely do so—TypeScript with TSX, JavaScript and Astro, and C with C++. Semantic documentation anchors remain cross-language because a document referring to code is a real reference.
Method calls also stopped falling through to a global name match. Receiver typing now handles more of the relationships it can prove. A conservative Rust fallback can report one remaining method name only when no curated standard-library method owns that name, but that weaker edge cannot invent a graph path or propagate impact.
996 files · one extraction pass · field-by-field context equality
Go stopped parsing the same corpus twice.
Go resolution needs package clauses, imports, and build constraints from every Go file. Preview 25 rebuilt that context by reading and parsing the whole corpus after extraction had just parsed it. A third of a second spent re-learning what the indexer had known moments earlier, on every fresh index. Preview 26 records those facts in schema 7 during the first pass and reads them back for resolution. go.mod and go.work remain disk-authoritative configuration.
Go reconciliation on a 996-file workspace
- 996 supported files
- 761 Go files
- same workspace
- field-by-field context equality
- lower is better
| Measured boundary | Preview 25 | Preview 26 | Change |
|---|---|---|---|
| Second corpus parse | 331 ms | 0 ms | removed |
| Relationship resolution | 840 ms | 496 ms | −41% |
| Complete index | 2,063 ms | 1,758 ms | −15% |
A later regression recheck measured similar direction on the Go-heavy Ollama corpus, while explicitly declining to promote that follow-up into a new formal efficiency claim. Preview 26’s published headline remains the original controlled 15% complete index and 41% resolution improvements above.
SQLite seeks · concurrent reads · honest page boundaries
Fast paths became actual fast paths.
None of these four is a headline on its own. Together they are the difference between a tool that is fast on a benchmark and a tool that stays fast while your editor holds an unsaved buffer, the writer holds a transaction, and your query is scoped to one directory.
Scoped queries
Seek the path range.
Path scoping no longer wraps file_path in a function that defeats its index. Query-plan tests require indexed equality and range seeks instead of a workspace-wide scan.
Read concurrency
Do not queue reads behind the writer.
Four read-only WAL connections now serve 24 read paths while the single writer keeps its transaction boundary. A regression test holds the writer and proves reads still complete.
File cleanup
Reuse the eight statements.
Prepared deletion statements reduced median cleanup from 35,005 to 6,876 µs on the audit workspace—a 5.1× improvement—and by 75.76% in the normalized kernel campaign.
Overlay pages
Filter before spending the limit.
Search and anchor queries exclude overlay-shadowed disk rows before ranking and truncation. Six requested results no longer silently become five while a file is open in an editor.
Warm MCP query screen
| Selected request · p50 of 200 samples | Preview 25 | Preview 26 candidate | Change |
|---|---|---|---|
| Exact symbol search | 0.126 ms | 0.101 ms | −19.84% |
| Common-name search | 0.530 ms | 0.406 ms | −23.40% |
| Outline | 0.578 ms | 0.411 ms | −28.89% |
| Incoming references | 0.309 ms | 0.282 ms | −8.74% |
| Broad fuzzy search | 5.052 ms | 5.509 ms | +9.05% |
| Edit impact | 4.424 ms | 4.582 ms | +3.57% |
The selected regressions remain single-digit millisecond calls. They are published because “most improved” is not “all improved,” and because the broad-search path deserves continued observation on larger symbol populations.
Measured, rejected, and left alone
The audit did not confuse less code with a better product.
An optimization audit generates pressure to ship every finding as a win. These four were measured and then deliberately not shipped that way. They are published anyway, because the reasoning is part of the product.
Kept, not claimed
UTF-8 slicing: no measurable gain.
Removing redundant validation was simpler and strictly less work, but indexing measured 0.77 versus 0.78 seconds. It is not marketed as a speedup.
Rejected
Do not trade likely tests for 5 ms.
Reducing fast-context neighbor work could save roughly 4–5 ms but would remove neighbor-derived test hints. The data was worth more than the imperceptible latency.
Kept
OpenPGP stays.
Removing the dependency saved about 1 MB, not the multi-megabyte hypothesis. That is not enough to justify changing the updater’s release-security protocol casually.
Not guessed
Windows listener change deferred.
The named-pipe finding could not be compiled and exercised in the audit environment. Platform-specific async code was left unchanged rather than “fixed” without proof.
The audit also found the next real bottleneck: FTS5 maintenance dominates the remaining database-write work. Changing it would alter consistency and durability behavior, so it was recorded as a design decision for later—not smuggled into a mechanical cleanup pass.
Correctness first · regressions published · host matrix closed
Large repositories were used to look for damage, not flattering multipliers.
The easiest way to fake an optimization release is to measure only where you optimized. So Preview 26 was pointed at the Linux kernel with a different question: after all these changes, is anything missing?
Nothing was. The normalized Linux-kernel campaign preserved every raw logical count and completed 0.54% faster with 1.60% lower peak RSS and 4.53% fewer filesystem output blocks. Its resolution phase was 8.36% slower because the safer language and evidence rules do more work there. Extraction and write savings offset that cost, but the regression remains part of the record.
- Claude Code, Codex, OpenCode, and Antigravity completed source-verified tasks from structured-only MCP output while leaving the test checkout clean.
- Formatting, all-target compilation, release builds, database integrity, modern and legacy wire shapes, overlay behavior, WAL cleanup, cancellation, updater timestamp parsing, and query-plan seeks received dedicated gates.
- The final schema-guidance issue found by live Codex use—gap pagination requiring one directory path—was corrected before release and pinned by a regression test.
- Candidate-only Clippy warnings are zero and emitted warnings fell from 788 to 690 on the same toolchain. Strict pedantic Clippy still sees inherited debt; Preview 26 does not claim the historical tree is warning-free.
Signed release · four native targets · public verification
The optimization report ends at the release boundary.
- Signed tag
v1.0.0-preview.26- Release commit
8020cbb9f701bae7fad9969f8f25d28cb99ff3bc- Release manifest SHA-256
6f09cfaa5b789dde61bf5b98fb9a39022c9e0684261261ba4d5a1769cf229128- Release tests
- 474 passed · 6 intentionally ignored · 0 failed
- Public immutable objects
- 24 objects · exact size and SHA-256 verified
- Stable channel
- Untouched · no stable pointer published
Every native lane built and tested on its target runner, completed the offline smoke test, produced its SBOM and Sigstore provenance, passed OpenPGP certification, and moved through private staging and owner-gated promotion without rebuilding. Independent public verification then downloaded every versioned object and checked its bytes, hash, and cache policy.
Preview 27 is now the current public preview
Upgrade the complete managed installation.
The native updater verifies the signed release contract, stages the complete runtime and integration payload, and atomically moves the managed installation to the current preview.
atlas-scout upgrade --check
atlas-scout upgrade