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
One modern fast-context responseUseful evidence grows from 7,648 to 13,105 bytes while the complete modern response envelope falls from 16,182 to 13,190 bytes.Preview 25 behaviorPreview 26Useful evidence7,648 bytes13,105 bytes · +71%Complete modern envelope16,182 bytes13,190 bytes · −18%
Before, the response retained 397 of 636 logical lines. Preview 26 returned all 636. Legacy clients also recover the complete evidence, while retaining the compatibility mirror.
Measured boundaryPrevious behaviorPreview 26Change
Useful evidence7,648 bytes13,105 bytes+71%
Complete modern envelope16,182 bytes13,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 tierWhat was observedMay extend traversal?
provenA language or module rule identifies the targetYes
receiver_typedA recorded receiver type identifies one indexed methodYes
unique_nameOne non-method declaration has that name in the language familyYes
unique_method_nameOne method remains, but its receiver type is unknownNo—reported, counted, and withheld
0cross-language relationships after family scoping
220 → 6reported callers for one Rust is_empty method
74 → 680receiver-typed edges on the audit workspace
113 → 367truthfully admitted module pairs

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
Go reconciliation on a 996-file workspaceThe redundant corpus parse falls from 331 milliseconds to zero, relationship resolution falls from 840 to 496 milliseconds, and the complete index falls from 2,063 to 1,758 milliseconds.Preview 25 behaviorPreview 26Second corpus parse331 ms0 ms · removedRelationship resolution840 ms496 ms · −41%Complete index2,063 ms1,758 ms · −15%
The persisted declarations and imports reproduced the previous in-memory context exactly. Generated or oversized Go files still contribute a package identity from a bounded file head while leaving their symbols honestly unindexed.
Measured boundaryPreview 25Preview 26Change
Second corpus parse331 ms0 msremoved
Relationship resolution840 ms496 ms−41%
Complete index2,063 ms1,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 samplesPreview 25Preview 26 candidateChange
Exact symbol search0.126 ms0.101 ms−19.84%
Common-name search0.530 ms0.406 ms−23.40%
Outline0.578 ms0.411 ms−28.89%
Incoming references0.309 ms0.282 ms−8.74%
Broad fuzzy search5.052 ms5.509 ms+9.05%
Edit impact4.424 ms4.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.

94,743kernel files discovered in every scored run
5.27Mkernel symbols preserved exactly
4.96Mraw relationships preserved exactly
0failed files in the scored kernel runs
  • 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