Compare contract input costs
Result
The split report contract is 2,249 bytes; shortening the existing contract produces 4,939 bytes, against 13,727 bytes currently. Shortening saves 8,788 bytes per mandatory collection read; the split saves a further 2,690 bytes. Shortening captures 76.6% of the split's collection-byte reduction.
The split's additional reduction is 3.7–9.3% of the shortened method-file packet, depending on role. In the saved-packet comparison below it is 1.5–8.5%. The smaller ownership boundary remains a separate advantage; the coverage audit also counts 12 unrelated rule groups in shortening versus three in the split draft. Neither has a literal zero count; these measurements do not establish better analysis.
Measurement and provenance
See coverage check for clause dispositions and input measurements for paths, UTF-8 bytes and SHA-256s. Measured against current files at the recorded input commit plus workshop drafts. Each distinct required file is counted once per packet. No moved rule is placed in another always-loaded worker file: shared role contracts are held unchanged.
These are file-byte costs, not tokens or observed read calls. Common root/harness context, conditionally followed definitions, source inspection, tool results and future retries are excluded. The collection contract is mandatory under root writer doctrine, although current code does not supply it. Every alternative requires repairing that delivery gap; omission is not counted as a valid saving.
The earlier 1,749-byte split draft had scope/title/link/loading gaps. The coverage check explains the repairs reflected in the new size. The split existing-owner contract is 4,443 bytes; workers do not load it just because their method instructions live there. Maintenance and publication drafts are coordinator/author inputs, not worker read-first inputs.
Per-role mandatory method reads
Sources: AnalyseAgenticSystem role constructors and job in
src/commonplace/lib/agentic_workflow.py. Counts include the job instruction,
worker rules, explicitly supplied shared contracts and member types. All eight
roles write collection working artifacts, including fragments, and need the
collection contract. Role-specific repair/return stages reuse these method files.
| Role | Existing role files | Current contract | Shortening | Split |
|---|---|---|---|---|
| boundary | 24,117 | 37,844 | 29,056 | 26,366 |
| runtime | 33,203 | 46,930 | 38,142 | 35,452 |
| memory | 47,993 | 61,720 | 52,932 | 50,242 |
| epistemic | 44,544 | 58,271 | 49,483 | 46,793 |
| reconcile | 67,254 | 80,981 | 72,193 | 69,503 |
| verify | 68,664 | 82,391 | 73,603 | 70,913 |
| synthesize | 37,724 | 51,451 | 42,663 | 39,973 |
| verify-synthesis | 37,314 | 51,041 | 42,253 | 39,563 |
Saved-packet replay
Local state still retains the latest prompt for 14 job names from
AAS-2026-10-03-dynamic-cheatsheet-02. These include correction stages and repair
prompts with explicit previous-output reads. For each, count the saved prompt,
its named instruction/read-first files, named task reads and explicit repair
baseline, using their current bytes. Add each candidate collection contract.
All named files exist. This counts the complete finite file-read list found in
that saved invocation, including task material, rather than method files alone.
This is a controlled replay of declared inputs, not the exact historical worker context: prompts can have been overwritten by retries, dependencies can reflect later accepted outputs, and current method files differ from the run's method. The run originally had more attempts than the 14 retained prompts. Do not sum these rows as its historical consumption. No source checkout is read or run. Relocated path lengths, new prompt batching and publication-specific changes to member types are not projected; those require measurements after implementation. Holding them constant isolates the collection-contract contribution.
| Saved job | Current contract | Shortening | Split |
|---|---|---|---|
| boundary | 40,585 | 31,797 | 29,107 |
| epistemic | 93,845 | 85,057 | 82,367 |
| memory-0 | 136,025 | 127,237 | 124,547 |
| memory-1 | 157,803 | 149,015 | 146,325 |
| reconcile-0 | 175,307 | 166,519 | 163,829 |
| reconcile-1 | 184,849 | 176,061 | 173,371 |
| reconcile-2 | 186,560 | 177,772 | 175,082 |
| runtime | 56,373 | 47,585 | 44,895 |
| synthesize | 159,037 | 150,249 | 147,559 |
| synthesize-1 | 161,997 | 153,209 | 150,519 |
| verify-1 | 184,749 | 175,961 | 173,271 |
| verify-2 | 184,749 | 175,961 | 173,271 |
| verify-synthesis | 158,320 | 149,532 | 146,842 |
| verify-synthesis-1 | 159,498 | 150,710 | 148,020 |
What is established
The coverage audit shows how shared authoring rules and removed operational rules reach their appropriate consumers. Both candidate contracts supply explicit conditional maintenance loading; only the shortening/split existing-owner author needs the additional theory-account rule for ordinary authored analyses. Analytical jobs already receive that record contract.
Shortening avoids the report/type/pin/redirect migration while obtaining most of the measured reduction. Prefer it if that reduction meets the operator's goal. Choose the split if the smaller per-role input and separation from unrelated rule growth justify its migration and cross-collection method dependencies.
Neither alternative is ready to deploy by copying one file: promote maintenance routes and add the chosen contract to job read-first/hashed inputs. The split also needs publication/type/consumer changes and bounded migration adoption. Publication by reference remains a separate choice, available in either layout. A live evaluation, source-reading cost and actual quality outcomes remain outside this authorized check.