Files
rea/experiments/atomic-codemode/value-query-study.md
T
bd27ab7422 docs(experiment): report stripped SSH workflow comparison
Record correct real-model answers through complete atomic and corrected traditional native toolsets. Preserve the under-equipped initial baseline separately, full task costs, provenance, resource evidence and profile/strategy limits.

The direct model answers with machine facts alone; server Code Mode uses the new value queries but performs extra analysis. No inherent Code Mode or broad complex-software superiority is established.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>
2026-10-16 17:45:41 +00:00

99 lines
6.5 KiB
Markdown

# Exact value locations and use occurrences
Real stripped OpenSSH exposed two missing query directions: selecting retained
SSA versions by an observed storage coordinate, and finding uses of a function
input/constant without a defining operation. Literal-constant lookup is not
storage lookup, and operation-definition users cannot represent input uses.
`values(locations:[{space,offset,size_bytes}])` now matches exact retained
coordinates and widths. It preserves multiple SSA versions, intersects ID/input
filters, honors field selection and pages results. IDs retain caller order;
otherwise distinct locations retain caller order, then native value order.
Empty selections select none. `unretained_locations` reports coordinates with no
known retained match before other filters. `location_coverage` preserves the
count of values with unresolved spaces; an empty location request leaves that
count null. These are not alias, pointer-content or live-memory queries.
`relations(kind:"value_uses", seeds:[valueID])` returns exact operand occurrences,
including constants and inputs with null definitions. Its rows have the same
`{operation,input_index,value_id,definition,phi_predecessor,phi_predecessor_edge}`
grain as operands. Repeated slots/PHI incoming edges stay distinct. Paging spans
distinct seed order, then native operation/slot order. Missing value seeds and
partial retained-use scope remain explicit. Call-boundary-only captures support
location lookup; `value_uses` is explicitly unavailable there.
One value-query owner serves full graphs, bounded projections and call-boundary
values; the duplicate input-filter implementations are removed. Operand-row
construction is shared by forward and reverse reads. Native operation-relation
routing also has one owner across full/projection/unavailable views. Both new
indexes build lazily, contain only retained facts, and expire with their resident
snapshot model; arbitrary missing queries do not grow retained state. Existing
two-model/retained-source and execution/resource bounds are unchanged. CLI, SDK
and both MCP adapters share these implementations; the catalog stays 15 methods,
18 direct tools or 4 Code Mode tools. No native engine rebuild is required.
## Real artifact and verification
Target: Debian `openssh-client 1:9.2p1-2+deb12u10` amd64 `/usr/bin/ssh`, stripped
ELF, SHA-256 `04f2ff5f506a3f332e7adeb1478a4c551ae74acdd328e6fb5c2495664d4064e6`.
Engine remains preserved `a9ca8a8a...`, upstream `fe01d629...` plus the pinned
experimental exporter. The caller `0x280c0` contains 11,534 recovered operations,
19,504 values and 245 blocks. Location `ram:0x1144c8/4` has 250 retained versions
and 369 input occurrences; this does not mean 250 physical objects or prove the
global unchanged across calls. Independent GNU decoding finds the four-byte
load/TEST/JE at `0x28e58`/`0x28e63`/`0x28e66`; unwind FDEs corroborate the selected
function starts. Native `INDIRECT`/PHI versions do not solve memory aliases.
Both actual MCP routes verify every selected version and occurrence against
the prior retained complete graph, preserving C, calls and all ordinary native
function fields. They also find the warning callee's incoming RDI value and its
first call use without a whole graph/report read. Case-sensitive spaces,
missing coordinates, source identity, field selection and paging are checked.
Each route executes fifteen MCP requests. The 78 shared JS tests pass, including
projection/call-only scope, null spaces, repeated input slots and PHI bindings.
| Executed scope | Family wall s | Family CPU s | Kernel peak MiB |
| -------------------------------- | ------------: | -----------: | --------------: |
| Shared 78 tests | 4.653 | 4.409 | 88.9 |
| Real Code Mode MCP | 9.081 | 8.730 | 372.3 |
| Real direct MCP | 9.080 | 8.800 | 338.9 |
| Retained-source query diagnostic | 1.327 | 1.145 | 156.9 |
All use one CPU, 4 GiB hard / 3 GiB early-stop bounds, verified cleanup and OOM 0.
Kernel peaks include charged file cache, not RSS. The public MCP checks verify
adapter parity; they issue each query separately rather than optimizing a
multi-query Code Mode script. First indexed tasks take 148.5 ms / 0.149 CPU
seconds Code Mode and 79.7 ms / 0.080 direct. Same-lease selected-value/use reuse
takes 9.7 ms / 0.011 CPU and 4.3 ms / 0.005 respectively. Cumulative peaks only
upper-bound isolated warm memory. No model-token or general speed claim follows.
## Equivalent core query diagnostic
`profile-value-queries.mjs` replays the same retained real source and completes
the same task: select all versions at that exact location and all their retained
operand occurrences. Both strategies return exactly the same 250 values and
369 occurrences. It uses the existing paged API as the scan baseline.
| Strategy | Core reads | Core-result JSON bytes | Elapsed ms | Family CPU s |
| --------------------------------------------- | ---------: | ---------------------: | ---------: | -----------: |
| Page values and operation inputs | 244 | 5,632,444 | 213.34 | 0.214 |
| Exact locations and value uses, first indexes | 6 | 85,421 | 53.51 | 0.054 |
| Same indexed task, warm | 6 | 85,421 | 2.72 | 0.003 |
Parsing the retained source separately takes 611.4 ms / 0.652 CPU seconds. These
query timings include diagnostic JSON byte accounting. They measure core reads
on a previously captured native graph: no fresh native computation, MCP wire,
schema/discovery, model rounds or tokens. The scan reads all 19,504 values and
11,534 operations; the indexed path reads 250 values and selected use rows.
The memory peak is cumulative across strategies. OS caches/host contention and
query order are uncontrolled. This establishes a useful query boundary, not a
native analysis acceleration or completed-agent efficiency advantage.
Local receipts use `.cache/atomic-codemode/ssh-values-{code,direct}-v1*`,
`ssh-value-query-profile*`, and `value-query-shared-tests.log`. The
[real-agent comparison](ssh-warning-study.md) now completes the stripped
application's warning/caller/stack-format/local-guard task in all three lanes.
Code Mode uses the new queries correctly; direct atomic answers with machine
facts alone and has lower observed whole-task costs. The new core-query result
must not be substituted for that completed-task comparison.