## PR #1305 — "Add Entire blame and why commands"  by `suhaanthayyil`

You're now on branch `codex/entire-blame-why`. The PR adds two AI-aware line attribution commands:

- **`entire blame <file> [--line N|N-M] [--json]`** — like `git blame`, but labels lines `[AI]`, `[HU]`, `[MX]`, or `[??]` (uncommitted)
- **`entire why <file[:line]> [--json]`** — resolves a line back to its Entire checkpoint, agent prompt, session, model, etc.

It works by running `git blame --line-porcelain`, then enriching the blamed commits with `Entire-Checkpoint` trailers and checkpoint/session metadata from the `entire/checkpoints/v1` branch.

### Changes Made
Done. `blame` and `why` are now hidden Labs commands. Here's what changed:

- **`cmd/entire/cli/attribution.go`** — added `Hidden: true` to both `newBlameCmd` and `newWhyCmd`, with the same "hidden during maturation" comment style used by `review`/`org`/etc.
- **`cmd/entire/cli/labs.go`** — registered `blame` and `why` in the `experimentalCommands` slice and added `entire blame --help` / `entire why --help` to the "Try:" block in the labs overview.
- **`README.md`** — removed the two command-table rows (no other Labs command appears in that table) and reworded the prose to point users at `entire labs` for discovery.

#### Verified behavior:
- `entire --help` → blame/why **absent** from root help ✓
- `entire labs` → both **listed** as experimental commands ✓
- `entire blame --help` / `entire why --help` → still **fully functional** ✓
- Existing tests pass (`TestRootHelp_ShowsLabsButHidesReview`, `TestLabsRegistryCommandsExistAtCanonicalPaths`, etc.), `mise run fmt && mise run lint` clean.

### Full Review Findings
1. **`[AI]` flips to `[MX]` between `blame` and `why` — inconsistent authorship rules** (`attribution.go:479` vs `:372`) - address before merge.
2. **`Mixed` is checkpoint-scoped, not session/file-scoped — over-reports `[MX]`** (`attribution.go:420`) - fix is necessary.
3. **Renamed files silently fall back to the wrong session** (`attribution.go:437`, `pathsContainFile` at `:1081`) - requires correction.
4. **All-sessions-read-failure yields a blank-but-confident `[AI]` line** (`attribution.go:442`) - improve user feedback.

### Cleanup (non-blocking)
5. **Three structurally identical structs** (`attribution.go:73`, `:85`, partially `:516`) - suggest collapsing into one.
6. **`renderAttributionBlameCompact` / `renderAttributionBlameLong` duplicate scaffolding** (`attribution.go:743`, `:784`) - optimization needed.
7. **Summary percentages can sum to 99%** (`attribution.go:727`) - fix for cleaner output.

### Summary of the Work Done
- Small changes to unify authorship rules, set the Mixed flag correctly, and improve user feedback concerning session fallback and invalid metadata.

Completing all fixes and adding regression tests, with all parts verified to ensure accuracy.
