▶ Demo: the legacy codebase assessment

Module 08 demo · ~4 minutes · facts that survive compaction, failures that carry their story, numbers that keep their source

Repo, files & checks

client-project/
claims-intake/ (1,400 files, eleven years old)
sources/ (two specs, one old, one current)
CLAUDE.md
.claude/agents/
Part 1 · the files that survive
findings.md · one line per fact, with its path and date
progress.md · where we are, what is next
a subagent reads; only its report comes back
after /compact: the facts are still there ✓
Part 2 · failures that carry their story
.claude/agents/explorer.md · the reporting rule
access failure: timed out, with what it tried
retried in halves: appeals handler found ✓
empty result reported as empty, never as a failure ✓
Part 3 · the trail
synthesis.md · every claim next to its source and date
90 days vs 180 days: both kept, both dated ✓
fresh session picks up from progress.md ✓
findings.md
# Findings: claims-intake

One line per fact. Every line carries the file
path it came from and the date it was read.
Read this file before answering any question
about the codebase.

(empty so far)
the subagent's report · claim validation
Read 31 files under claims-intake/rules/.
Reporting only what you asked for.

Classes that validate a claim:
  intake/rules/ProviderIdRule.java
    rejects a claim with no provider ID
  intake/rules/TimelyFilingRule.java
    180 days from date of service
    hardcoded exception list: 3 payer codes
  intake/rules/DuplicateClaimRule.java
    same member, same date, same code

Appended 3 lines to findings.md.
None of the 31 files entered your window.
findings.md
# Findings: claims-intake

2026-08-29 | intake/rules/ProviderIdRule.java
  rejects a claim with no provider ID
2026-08-29 | intake/rules/TimelyFilingRule.java
  180 days from date of service
  hardcoded exception list: 3 payer codes
2026-08-29 | intake/rules/DuplicateClaimRule.java
  same member, same date, same code
2026-08-29 | intake/IntakeController.java
  the entry point for every claim
the session · after /compact
> /compact focus on the claims-intake
  assessment; drop the report formatting
  discussion

Conversation compacted.
Re-read CLAUDE.md
Read findings.md
Read progress.md

The summary kept the direction of the work.
The numbers, paths, and dates were never in
the summary. They were in the two files,
and the two files were re-read from disk.
after compaction · the day-two question
> which class enforces timely filing, and
  what is the window?

From findings.md:
intake/rules/TimelyFilingRule.java
180 days from date of service, with a
hardcoded exception list for three payer
codes.

(Yesterday's session answered this with
"the validation layer typically handles
timely filing." Same question. The
difference is where the fact lived.)
.claude/agents/explorer.md
---
name: explorer
description: Reads a part of the codebase and
  reports findings with paths.
---

When something fails, report:
- the kind of failure: timed out, refused,
  empty result, could not parse
- exactly what you tried (path, query)
- whatever you did manage to get
- one thing to try next

Never report an empty result as a failure.
Never report a failure as an empty result.
Append every finding to findings.md with
the path and today's date.
the explorer's report · appeals flow
type: access_failure (timed out)
attempted: read claims-intake/appeals/
  AppealsProcessor.java (9,000 lines)
partial: 4 of 5 files in appeals/ read;
  AppealsRouter.java references a handler
  in the file that timed out
alternative: read the big file in two
  halves, or grep it for "class "

findings.md: 4 lines appended.

This is a failure with its story attached.
"No appeals handling found" would have
been the same event, with the story
thrown away.
the retry · in halves
> read AppealsProcessor.java in two
  halves and finish the trace

Found: class AppealsHandler, line 312.
Appeals enter through AppealsRouter,
land in AppealsHandler.process(), and a
second hardcoded exception list (five
plan codes) skips the 60 day appeal
window entirely.

findings.md: 2 lines appended.

The assessment now has two undocumented
exception lists in its risk section.
The first draft had none.
the explorer's report · the archive folder
> use the explorer to check
  claims-intake/archive/ for any live
  validation code

type: empty_result
attempted: list and read claims-intake/
  archive/
matches: 0 (the folder holds 2 README
  files and nothing else)
alternative: none needed

Nothing happened, and nothing happening
is the correct answer. A retry would find
zero files again. The report says so,
so the coordinator does not retry.
the research subagent · timely filing window
Sources read: 2

claim: timely filing window is 90 days
  source: sources/intake-spec-v2.docx
  excerpt: "claims must be received within
    90 days of the date of service"
  date: 2023-04-12

claim: timely filing window is 180 days
  source: claims-intake/rules/
    TimelyFilingRule.java
  excerpt: WINDOW_DAYS = 180
  date: last modified 2025-11-03

The two disagree. Both reported.
Not choosing. That is your call.
synthesis.md
# Claims intake: current state

## Well supported (two or more sources agree)
- Claims enter through IntakeController
  (IntakeController.java; intake-spec-v2,
  2023-04-12)
- Provider ID is required
  (ProviderIdRule.java; spec section 3.1)

## Contested or single source
| claim | source | date |
|---|---|---|
| filing window 90 days | intake-spec-v2 | 2023-04-12 |
| filing window 180 days | TimelyFilingRule | 2025-11-03 |

The code is newer than the spec. Confirm
with the client which one is live.
fresh session · Monday morning
(fresh session)
> read progress.md and findings.md, then
  tell me where we are

Where we are:
- 14 validation classes mapped (findings.md)
- appeals flow traced; two undocumented
  exception lists logged as risks
- open: confirm the filing window with
  the client (90 vs 180, dated)
Next, from progress.md: trace the provider
letter flow.

Nothing from last week's conversation is
in this window. Everything that matters
is in two files, so nothing was lost.
Delegation
your main sessionthe coordinator; no file needed
→
a subagentits own window; reads 31 files
→
findings.mdone line per fact
Module 08 · Demo
The legacy codebase assessment
A 1,400 file system nobody can explain becomes an assessment the client can plan around: facts that survive compaction, failures that carry their story, and a synthesis where every number keeps its source. Three parts:
1 · Keep the window lean 2 · Make failures speak 3 · Keep the trail
Facts in files, failures with their story
Two files the compaction cannot erase, one reporting rule in every agent, and a synthesis that keeps its sources. The prompt pack builds this exact practice in your second brain.

Open the prompt pack →   On to the quiz →

Part 1 · Keep the window lean Part 2 · Make failures speak Part 3 · Keep the trail