mirror of
https://github.com/morluto/rea
synced 2026-10-25 22:08:11 -04:00
0583fc69be
Select completed source-to-bundle mappings and candidates through the shared view owner, preserve reference-file provenance, and retain full Evidence. Reuse bounded JSON reading, heap admission, and cancellation before session writes. Verified public Redux Toolkit source/map facts with an independent oracle, equivalent CLI/MCP workflows, focused negative controls, and complete CI/review. Historical paired SDK context estimates fall about 64%; timing/resource tradeoffs and final verification receipts are recorded without a general speedup or actual model-token claim. Fixes #6112.
211 lines
13 KiB
Markdown
211 lines
13 KiB
Markdown
# Selected source-to-bundle facts
|
||
|
||
Issue #6112. Baseline: `main@aa51e4343963fdd0b97ec2ebdc3c41579fd9cb38`.
|
||
Measured implementation: the production-file SHA-256 manifest in
|
||
[source-to-bundle.json](source-to-bundle.json). These are working-tree
|
||
measurements, not a claim that the baseline commit already contains the feature.
|
||
The original cohort predates the CLI error-envelope and review guard fixes,
|
||
pinned separately in the JSON. The CLI invalid-application output was restored
|
||
exactly. Post-guard SDK tasks verified both output profiles before the later
|
||
reference-file provenance fix. Final tasks preserve normalized comparison facts
|
||
while full Evidence IDs now commit the selected file origin. Historical paired
|
||
medians are not presented as new measurements of the later guard changes.
|
||
|
||
## Analyst question and correctness
|
||
|
||
For `src/createSlice.ts`, `src/createReducer.ts` and
|
||
`src/query/core/buildThunks.ts`, report source correspondence and candidate counts,
|
||
then inspect the exact supporting candidate signals for the two split files.
|
||
Keep the complete comparison available. This is static location correspondence;
|
||
it does not establish behavioral equivalence or removal.
|
||
|
||
Public corpus: [Redux Toolkit 2.2.7 npm tarball](https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.2.7.tgz),
|
||
1,184,767 bytes; SHA-256
|
||
`f2517c466b50424b661a27e48039f15db7783e5822f46b5c7d39f20104ac67a9`.
|
||
The published `src/` and three root `dist/` bundles/maps are copied byte-for-byte
|
||
into separate roots, retaining the `src/` and `dist/` prefixes. No target code or
|
||
package scripts execute. REA runs its own static analysis helpers.
|
||
|
||
An independent Python JSON/SHA-256/path oracle checks all 180 source-file hashes,
|
||
99 embedded source nodes and 210 candidate relations in every completed task.
|
||
All 99 embedded source strings differ from the published source bytes; path
|
||
correspondence must not become an exact-source or semantic-equivalence claim.
|
||
The complete report has 33 split and 147 unknown rows. The selected files have
|
||
3, 3 and 0 candidates respectively. Selected mapping/candidate identities,
|
||
original indices, signals, mapped flags and source coverage agree with the full
|
||
retained comparison. Global classification runs before selection.
|
||
|
||
## Completed-task costs
|
||
|
||
Linux, Node 24.18.0, one CPU, 4 GiB hard / 3 GiB early-stop process-family guard,
|
||
192-task ceiling and no swap. Six SDK tasks alternate complete/selected,
|
||
selected/complete, complete/selected. Each starts a fresh server with an isolated
|
||
HOME. OS page caches are warm/uncontrolled: these are process-cold observations,
|
||
not OS-cold measurements. All six exit successfully, release their processes and
|
||
record no OOM, resource stop or task-limit event.
|
||
|
||
Each task includes catalog discovery, application preparation, comparison and
|
||
full Evidence export. Selected tasks additionally query candidate signals via
|
||
`inspect_analysis_view`. Both cohorts use the existing explicit semantic-node
|
||
cap of one because the question only needs source/map correspondence. This is
|
||
not equivalent semantic-graph coverage; the omission metadata remains visible.
|
||
|
||
| Whole task | Existing full inline graph/report | File graph + selected mappings/candidates |
|
||
| ----------------------------------------- | --------------------------------: | ----------------------------------------: |
|
||
| Input catalog, cl100k estimate | 47,913 | 48,026 |
|
||
| All call arguments, estimate | 37,272 | 297 |
|
||
| All MCP text replies, estimate | 67,407 | 6,442 |
|
||
| Total estimated context | 152,592 | 54,765 |
|
||
| Wall seconds, median | 11.899 | 14.733 |
|
||
| Process-family CPU seconds, median | 11.551 | 14.377 |
|
||
| Kernel process-family peak MiB, median | 666.6 | 950.7 |
|
||
| Comparison reply bytes, text + structured | 427,799 | 13,199 |
|
||
| Additional candidate reply bytes | 0 | 19,393 |
|
||
|
||
Context estimates fall 64.1%, including the slightly larger catalog and extra
|
||
call. Tokenizer: `tiktoken==0.12.0`, `cl100k_base`; one name/description/input-schema
|
||
catalog plus every argument and MCP text reply. Output schemas, transport
|
||
framing, model prompts/reasoning and actual billed usage are not included.
|
||
There was no model invocation; these are not actual model token savings.
|
||
|
||
This workflow trades extra cold-client time/memory for substantially smaller
|
||
context. Comparison itself takes approximately 206–216 ms before and 249–262 ms
|
||
with file validation and selected delivery. The first candidate-view call takes
|
||
2.1–2.4 seconds. A separate calibration repeats the identical candidate query:
|
||
2,071 ms first, 72 ms second, with identical Evidence. This is consistent with
|
||
one-time SDK validator work; it is not a general speedup or a server-only profile.
|
||
No comparison cache was added: the measured matching computation is already
|
||
small, and a file cache would need additional freshness/identity rules.
|
||
|
||
Reference import is a separate one-time public CLI step: 4.757 s wall,
|
||
4.603 s CPU, 365.6 MiB peak. Add that same preparation cost to either first task;
|
||
download/extraction and compilation are excluded. An additional baseline with
|
||
default semantic coverage retains 22,090 semantic nodes and exports 42,870,148
|
||
bytes; explicit cap one retains one and exports 2,896,937 bytes. All comparison
|
||
facts agree after excluding expected Evidence lineage. Those single-run
|
||
observations demonstrate question-specific existing task selection, not a new
|
||
semantic-analysis optimization or equal-coverage performance claim.
|
||
|
||
## Existing output-schema selection
|
||
|
||
A second six-task cohort explicitly selects the existing
|
||
`REA_MCP_OUTPUT_SCHEMA_PROFILE=off` for **both** workflows, with baseline
|
||
`main@01788bac8`. REA still validates successful results against the canonical
|
||
contracts and returns complete structured content; clients do not receive output
|
||
schemas to compile. This is an explicit caller configuration, not a new default.
|
||
The independent oracle and selected/full fact checks pass in every run.
|
||
|
||
| Whole task, output profile off | Full graph/report | Selected facts |
|
||
| -------------------------------------- | ----------------: | -------------: |
|
||
| Total estimated context | 152,668 | 54,841 |
|
||
| Wall seconds, median | 11.597 | 10.890 |
|
||
| Process-family CPU seconds, median | 11.244 | 10.569 |
|
||
| Kernel process-family peak MiB, median | 628.7 | 626.0 |
|
||
| Candidate query milliseconds | not needed | 18–21 |
|
||
|
||
The context reduction remains approximately 64%. Whole-task ranges overlap
|
||
(complete 10.899–12.215 s; selected 10.802–11.196 s), so the apparent median
|
||
improvement does not establish a stable speedup. Unlike the default full-output
|
||
cohort, this configured workflow avoids the extra cold SDK validator cost and
|
||
has similar task memory/time. Two initial pilot cases are excluded. All six
|
||
observed runs, explicit configuration and implementation hashes are retained in
|
||
[source-to-bundle-output-off.json](source-to-bundle-output-off.json).
|
||
|
||
## Existing CLI/code-composition control
|
||
|
||
The public CLI on the same saved application/reference produces complete Evidence
|
||
identical to MCP (205,231 output bytes). The measured CLI comparison step is
|
||
2.842 s wall, 2.670 s CPU, 357.4 MiB process-family peak. A separate Python
|
||
projection of the three rows already yields 22,108 bytes. A native agent can
|
||
redirect full JSON to a file and select facts in code, so raw SDK savings do not
|
||
establish savings over every native client. These byte sizes are not token counts;
|
||
actual native-agent context and external projection CPU are unmeasured.
|
||
|
||
The new CLI reference-file form preserves the normalized facts and records its
|
||
file origin. Its saved Evidence
|
||
can be queried by `inspect-analysis-view` using the same source-to-bundle
|
||
projector as MCP. The interface supplies reusable, authenticated facts and
|
||
relationships instead of requiring each caller to maintain an ad-hoc projection.
|
||
|
||
## Reproduce
|
||
|
||
Use pinned Node/npm, `npm ci` and `npm run build:cached` for baseline and feature
|
||
worktrees. Install dependencies once per lockfile; do not run npm through a shared
|
||
node_modules symlink. Run heavy steps serially with the checked-in resource guard.
|
||
Set absolute paths for `BASE_RUNTIME`, `FEATURE_RUNTIME` and `LAB`.
|
||
|
||
```sh
|
||
curl -fL 'https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.2.7.tgz' -o /tmp/toolkit.tgz
|
||
python3 experiments/analysis-efficiency/source-to-bundle-prepare.py /tmp/toolkit.tgz "$LAB"
|
||
python3 experiments/analysis-efficiency/resource-run.py --observe-payload-exit -- \
|
||
node "$BASE_RUNTIME/scripts/rea.mjs" import-reference-source "$LAB/reference" --json \
|
||
> "$LAB/reference.json" 2> "$LAB/reference-import.log"
|
||
```
|
||
|
||
For each of the six ordered trials, use a new output directory; set `RUNTIME` to
|
||
the baseline for `MODE=complete`, feature for `MODE=selected`. Capture both stdout
|
||
and stderr in the adjacent `.log` so the resource receipt remains available.
|
||
|
||
```sh
|
||
python3 experiments/analysis-efficiency/resource-run.py --observe-payload-exit -- \
|
||
node experiments/analysis-efficiency/source-to-bundle.mjs \
|
||
--runtime "$RUNTIME" --corpus "$LAB" --reference "$LAB/reference.json" \
|
||
--output "$LAB/paired-1-complete" --mode "$MODE" \
|
||
> "$LAB/paired-1-complete.log" 2>&1
|
||
python3 experiments/analysis-efficiency/source-to-bundle-oracle.py \
|
||
"$LAB/paired-1-complete" "$LAB/reference.json"
|
||
uv run --no-project --with tiktoken==0.12.0 python \
|
||
experiments/analysis-efficiency/source-to-bundle-costs.py "$LAB"
|
||
```
|
||
|
||
Use a separate output name and `--mode selected --warm-continuation` for the
|
||
validator calibration; exclude it from paired medians. For the configured
|
||
cohort, add `--output-profile off`, use new `off-paired-*` directories and the
|
||
01788bac8 control, then run the cost reader with
|
||
`--pattern 'off-paired-*' --output "$LAB/costs-off.json"`. Retain the tarball,
|
||
reference, transcripts, bundles, independent proofs and guard receipts locally.
|
||
Never commit target binaries, dependency trees, credentials or generated builds.
|
||
|
||
## Review guards and regression controls
|
||
|
||
The file reader admits JSON assembly; a shared application guard additionally
|
||
reserves live heap headroom before schema validation clones data and computes the
|
||
root commitment. Evidence-file and historical-graph readers use the same owner,
|
||
with their original operation-specific diagnostics. Validation yields before
|
||
checking a pending cancellation, including validation failures. MCP computes its
|
||
selected view before yielding and committing any application source, comparison,
|
||
residual unknown or view to the session.
|
||
|
||
Seven shared headroom/Evidence-reader tests pass. A separate 65-test focused run
|
||
covers file cancellation, graph paths, actual SDK cancellation during validation
|
||
and comparison, and cross-source pages with candidate counts 2/1/2. The latter
|
||
checks original indices, totals and next offsets across boundaries and filters.
|
||
All three new guard regressions fail in a negative control with those gates
|
||
temporarily removed, then pass after restoration. Memory admission is an estimate;
|
||
the reported hard process-family ceilings come from the experiment guard.
|
||
|
||
Post-guard public-package SDK tasks, before the later provenance fix, retained all
|
||
180 source-file / 99 embedded-node / 210 relation oracle checks and byte-identical
|
||
complete comparison Evidence. Their receipts, source hashes and costs are under
|
||
`subsequent_review_guards` in the main JSON; they are excluded from paired medians.
|
||
|
||
## Reference-file provenance and cancellation attribution
|
||
|
||
The final file form records `parameters.reference_source` with `kind: file`, the
|
||
exact caller `requested_path` and the reader's absolute selected `path`. The
|
||
shared file owner supplies that path without a second interpretation; POSIX
|
||
`..` and symlink semantics remain intact. Identical graphs in different chosen
|
||
files have the same normalized facts/mapping IDs and distinct Evidence IDs.
|
||
Inline legacy Evidence remains identical. Actual public-package CLI file
|
||
Evidence equals MCP file Evidence for the same origin; relative CLI paths also
|
||
have maintained coverage.
|
||
|
||
Reader cancellation is reattributed to `compare_source_to_bundle`, preserving the
|
||
original cause. Six MCP/profile/guard tests and 29 selected CLI/shared-JSON
|
||
ownership tests pass. Removing provenance recording and cancellation attribution
|
||
makes three tests fail as expected. Additional Evidence-reader/file cancellation
|
||
checks pass. Final real-package tasks estimate 54,896 cl100k tokens in both output
|
||
profiles, preserve all independent oracle facts, and retain the new provenance;
|
||
these are additional verification runs, not new paired medians. The main JSON's
|
||
`subsequent_reference_provenance` records final source hashes and receipts.
|