3.4 KiB
Investigation code blocks v7
New project investigation contexts use investigation_project_v7. Existing
requests keep v4/v5/v6 views and prompts. Only investigation requests change;
archived case data, evidence IDs, controller gates, budgets and other phases do
not change. No extra model call or semantic summary is introduced.
Plain code instead of per-line records
Each shared file stores its metadata and origin once. Contiguous observed code
is represented by blocks with start_line and lines containing plain text
strings. Line numbers are inferred from start_line plus array offset. Shared
line_defaults holds identical truncation flags once per file. Block attributes
preserve different flags and their exact JSON types; missing flags remain missing.
Source records are ordered by actual line number and typed content. Capture slices are remapped so their original item order and duplicates reconstruct exactly. Gaps start new blocks; no unread code is filled in. Contradictory records at one line remain separate and keep the existing conflicting_lines marker. Invalid/noninteger line records retain the previous encoding. Unknown file identity and different snapshots are handled as in v6.
shared_source_blocks_v1 references positions in the flattened blocks. These are
record positions, not literal source line numbers. Fallback row tables remain
available where they are smaller. The final choice is the smallest canonical
view among block, consolidated and thin encodings. No request grows simply to
introduce this encoding. All formats are described by the versioned prompt.
restore_blocks rebuilds the original working view exactly, including filters,
origins, boundaries, null/missing distinctions, truncation, order and actual text.
Offline benchmarks test canonical JSON equality, including Unicode/escapes and
contradictory observations. The measurement script now defaults to v7 and retains
explicit --target-version choices for v5/v6 comparisons.
The actual request inspected by the user
Comparison of the same late Bug 17 request, without display indentation:
| Representation | User-message characters |
|---|---|
| Original transmitted v4 | 206,560 |
| v5 line tables | 91,210 |
| v6 shared file/line tables | 89,817 |
| v7 plain code blocks | 86,166 |
This is a 58.29% reduction against the original, not merely the incremental reduction against the last already compressed version. Readable indented JSON shrinks from 9,210 to 4,255 display lines; display-line counts are not wire sizes. The actual shared code has 631 observed lines, represented by two blocks: 1-80 and 90-640. Lines 81-89 were not read and are not invented. The remaining request contains case sources, hypothesis state, queries/evidence, interpretation, schema and other controller context. It is not all repeated source metadata.
Across all 14 stored Bug 17 contexts, user text shrinks from 1,961,028 to 977,563 characters (50.15%). Across the nine Bug 20 contexts it remains 549,750 versus 563,131 originally (2.38%); that case has little code to consolidate. System instructions are included separately in the benchmark message totals.
Fresh readable v7 examples were written outside the input package under the existing trial's request-inspection directory. They are offline reconstructions, not live requests. Actual provider token use and analysis quality remain to be checked in a future live run. No paid requests were used for this change.