# Miru: author-side and independent-review corrections

This comparison asks what the existing engineering assessment would score if the recorded corrections from **both** review stages were absent. The Descant side assumes completion of the remaining agreed migration work. The comparison side starts from that same projected end state and removes the recorded corrections under the original scoring rule. Neither side is a separately executed alternative implementation.

The headline difference is in **rubric points**, not a percentage of tasks passed or a measured percentage improvement in software quality. The category anchors are assessment judgments. The arithmetic is reproducible; that does not make those judgments empirical measurements.

| Engineering assessment | Score |
| --- | ---: |
| With Descant, conditional on completing the agreed work | 83.9/100 |
| Same projected base without recorded author-side or independent-review corrections | 46.9/100 |
| Difference | 37.0 rubric points |

## What changed from the original comparison

The original [assessment.json](assessment.json) and [method.md](method.md) remain available. Their 53.8/100 engineering result removes only the 233 retained independent-review corrections. It does not estimate the effect of the authoring review loop.

The expanded [full-review-assessment.json](full-review-assessment.json) adds 585 author-side correction records and reuses exactly the same anchors, category weights, severity penalties, cap, floor and process assumptions. The UI and full-review CSV tables read that expanded dataset. The original JSON and CSV results are not overwritten.

| Evidence included | Plan review | Build review | Independent review | Total records |
| --- | ---: | ---: | ---: | ---: |
| Expanded assessment | 411 | 174 | 233 | 818 |
| Plan-excluded sensitivity | 0 | 174 | 233 | 407 |
| Original independent-only scenario | 0 | 0 | 233 | 233 |

The headline case-study results use a narrower presentation cohort: **560 author-side fixes + 196 non-Minor independent-review fixes = 756 records** on merged implementation PRs. The assessment also includes the two design PRs and Minor independent findings. Author-side records grow from 560 to 585 when the design work is included. Independent records reconcile as 196 non-Minor implementation + 24 Minor implementation + 12 design + one retained earlier correction whose final response declined further change = 233. These are overlapping views, not separate totals to add together.

## Category assignment

Every author-side finding has one row in [author-category-assignments.json](author-category-assignments.json), keyed to its public `record_id` in [author-side/findings.json](author-side/findings.json). Assignment rationale and method are explicit.

The 174 build-review findings have structured file locations. They use the original ordered path rules, as do the independent-review findings. File location is a reproducible proxy for relevance, not a semantic assessment of consequences. A defect discussed in a test file can therefore be assigned to tests even if it also concerns architecture.

The 411 plan-review findings have **no structured file location**. Their categories are analyst judgments based on the substantive finding and recorded correction. No path is invented to force them through the path rule. A second reviewer checked all 30 initial E4/E6 plan assignments and 14 other rows. One low finding, `author-pr148-plan-006`, moved from E4 to E5 because its missing checkpoint was needed to test transaction failures. Five E6 rationales were clarified without changing categories. This changed the modeled engineering result from 46.7 to 46.9; the previous category is recorded in the assignment row. Those judgments are inputs, not decisions made by the scoring script. The plan-excluded sensitivity shows the arithmetic without them.

A record receives one category even when its implications span several. Records have unique IDs, but that does not establish unique underlying defects: review rounds and stages can revisit a problem. Plan and build records are not semantically deduplicated against each other or against independent-review records.

## The unchanged scoring rule

The rubric has six engineering categories with total weight 51 and nine process categories with weight 45. Each category has an anchor from zero to five. The four-point economics domain remains unrated because completion cost is unknown.

Group score = 100 × sum(category weight × anchor) ÷ (5 × included weight).

For each engineering category and requirements traceability, subtract 0.50 anchor points per blocker, 0.25 per high finding, 0.10 per medium/P2 finding and 0.05 per low/P3 finding. Sum within each category, cap the deduction at **two anchor points**, and apply a floor of one. Recorded author severities map directly: blocker → blocker, high → high, medium → P2, low → P3.

The cap matters. After a category reaches it, further finding records do not reduce that category’s score. This makes the result cap-bound; adding hundreds of records need not create a proportional score change. With every engineering category at the original two-point cap, the rule’s lowest possible engineering result on this projected base is 112/255 × 100 = **43.9/100**. That is a limit of this formula, not a measured performance bound. The cap was not raised to produce a larger comparison.

The same five parameter sensitivities remain available in the expanded JSON and [full-review-sensitivities.csv](full-review-sensitivities.csv): declared rule, blocker/high only with cap 1.5, half severity deductions, cap one, and cap three. They show dependence on scoring choices, not confidence intervals.

For the process calculation, independent review, author response, follow-ups, issue grooming and learnings are set to zero by the scenario definition. This does not establish that a model or its native tools cannot perform those activities. Decomposition, scope and communication keep their projected anchors. Both the included and excluded views of those five assumed-absent categories are published. The headline uses engineering, which does not include those process zeros.

## What the records establish

The independent-review inputs are published GitHub threads. The author-side inputs are edited excerpts from a retained private review capture, now released with their recorded corrections and provenance. PR and commit links identify the public work; they are not public copies of every internal finding or plan revision. The source excerpt and public row hashes help track integrity but cannot independently authenticate withheld originals.

All 585 author-side finding and answer timestamps precede the first submitted independent review. All 411 plan records also precede PR creation. The 174 build records do not satisfy that joint pre-creation test. The study therefore says **before independent review**, not that all corrections happened before a PR was opened.

A recorded fixed answer is a resolution claim. The build commit objects were located, but every patch and retained behavior was not independently audited against every finding. A plan correction is also not necessarily a defect that had already reached code. This modeled comparison assumes the recorded problems would remain without their corresponding corrections; it does not establish which an independently executed model-only run would prevent or fix on its own.

Research, investigation, initial planning and accumulated knowledge can prevent mistakes without leaving a correction record. This calculation does not estimate those effects, interaction between fixes, or every consequence of removing Descant. It is a transparent no-review-corrections scenario, not a measured standalone-model baseline.

## Reproduce

Keep the complete bundle together and run:

```sh
python3 -I reproduce-findings.py
python3 -I recompute.py
python3 -I author-side/verify.py
python3 -I recompute-full-review.py
```

These commands make no network calls and change no files. They check the public independent-review extraction, original arithmetic, author-side export integrity, complete category join, unchanged rubric and expanded arithmetic. The all-review calculation reuses the original scoring engine. A missing record, changed input, mismatched category count or divergent stored result fails verification.
