Filesystem spine โ no spine, some spine, complete spine + the HTML sidecar question
A recurring issue Dan named today: filesystems that mix categories, statuses, entities, and events at the same hierarchy level. Three levels of spine + when HTML sidecars help / hurt. Generalized from this morning's insurance-claim folder audit; applicable to audrey-archive, vehicle receipts, client deliverables, anywhere file volume grows past ~50.
Three spine levels: no spine (flat list of disparate concepts), some spine (partial nesting that breaks at the next category), complete spine (Insurer โ Policy โ Claim โ numbered-section nesting). Most household filesystems start at no-spine and never climb.
The recurring failure mode: mixing categories (Contents), statuses (Submitted/Excluded/Missing), entities (Loan Depot), events (Payouts), and objects (Shed Structure) at the SAME hierarchy level. Each adds a "spine break."
HTML sidecars buy a lot but cost something: they turn a file browser into a cockpit, but introduce two sources of truth. Rule: use HTML sidecars when file count > ~50, multi-stakeholder, or time-sensitive. Skip below that.
Sidecars work only on complete-spine filesystems: rendering a cockpit on top of a no-spine tree just photographs the chaos in HTML.
The recurring issue Dan named today
Looking at Dan's 4TB drive insurance-claim folder this morning:
~/Drive4TB/insurance-claim/ No spine
Scans
Loan Depot
Payouts
PA Insurance
Missing Item Receipts
Excluded Property Contents
Status
Submitted Property Contents
Submissions
Contents
Shed Structure
11 folders. Each adds context the others don't share. Nothing nests.
~/Drive4TB/insurance/ Some spine
homeowners
liberty-mutual
claim_046414618
Scans
Loan Depot
Payouts
Contents (all 3 statuses still mixed)
Status
Shed Structure
Top-level nests cleanly. Inside each claim, the no-spine shape comes back.
~/Drive4TB/insurance/ Complete spine
homeowners
liberty-mutual
policy_H3V-281
claim_046414618_2021-07-29_storm
00-index.md cockpit
10-correspondence
20-estimates
30-invoices
40-payouts
50-contents
60-structure
80-loan-servicer
99-inbox
Insurer โ policy โ per-claim. Numbered sections; statuses live in metadata.
The three levels of spine
Level 1 โ No spine
Flat list at the top level. Folders are a mix of categories, statuses, entities, events, and objects. Nothing nests; everything is one click from the root. Common signs:
Multiple folders with similar names ("Submissions" + "Submitted Property Contents" + "Status")
Folders that describe a STATE rather than a class of thing ("Excluded", "Missing", "Submitted")
Folders that describe a counterparty ("Loan Depot") next to folders that describe a money flow ("Payouts")
No README, no index, no orientation file โ you have to remember what each folder holds
Trade-offs. Fast to start. Familiar pattern (the Desktop "just dump it here" pattern at scale). Survives ~20 files; breaks past ~50. Future-you will not remember why you made those choices.
Level 2 โ Some spine
One or two levels of nesting around a clear top-level concept (insurer โ policy, or year โ month), but inside the nested folder the no-spine pattern re-emerges. Common signs:
Top level is clean, deeper levels are flat
"I had a system but it got messy" โ almost always means some-spine, not no-spine
Pattern: year/2026/ at the top is great; everything inside 2026/ is the old chaos
Trade-offs. Better than no-spine because new top-level entries fit cleanly. But the second-level chaos compounds: every n-th claim repeats the same flat-list-of-disparate-things pattern, so reorganizing is Nร the work.
Level 3 โ Complete spine
Every level of nesting answers a different conceptual question. Each folder name says "I am a kind of X" where X is consistent within its level. Common signs:
Each level answers one question: insurer? policy? claim? section?
An 00-index.md or README at each significant root tells you what's here
An 99-inbox/ at the leaf where new files land before being filed
Trade-offs. Most work to design (~30 min for an insurance claim). Easiest to navigate, hardest to outgrow, supports tooling on top.
Eight principles for climbing to complete spine
Numbered prefixes (10-, 20-, 30-...). Alphabetical = logical order. New categories slot in between existing ones (15- goes between 10- and 20-) without renaming everything.
Per-event isolation. The same property can have multiple claims; mixing them is the most common future-pain. claim_<id>_<date>_<cause>/ as the unit of isolation.
Category โ status. "Submitted / Excluded / Missing" aren't categories of contents โ they're states. One contents/ directory; state in _state.json or filename suffix. Anything that's a STATE goes into metadata, not folder structure.
Filename convention: <YYYY-MM-DD>_<vendor>_<purpose>.pdf. Sortable chronologically, scannable for "what is this."
Inbox at the leaf.99-inbox/ is where new scans land before being filed. The pipeline picks up from there.
Auto-generated cockpit at each significant root.00-index.md (or 00-cockpit.html) summarizes the claim โ totals, outstanding actions, deadlines. Regenerated from filesystem state + structured metadata.
Entity folders where it makes sense. 30-invoices/tree-removal/, 80-loan-servicer/loan-depot/ โ group by the thing-being-paid-for or the party-being-dealt-with. "Loan Depot" deserves its own subfolder under 80-loan-servicer/, not a top-level slot competing with the claim itself.
Status as file, not folder. If you have a folder called "Status", it's either a markdown file (70-status.md at the claim root) or it's metadata in a JSON sidecar. Status changes; folder names shouldn't.
The HTML sidecar question โ when does it help?
The bigger move beyond "complete spine" is layering a generated HTML cockpit on top of the filesystem. The pa.gf.cx claim-cockpit sketch is exactly this โ a per-claim landing page (00-index.html) generated from the filesystem state + JSON sidecar + analyst output, surfaced behind CF Access.
This is high-leverage but not free.
Pros
Cockpit, not file browser. "What do I do next" surfaces above "where is X."
Auto-regenerable. Re-run the renderer when filesystem changes; cockpit stays current without manual updates.
Surfaces what Finder can't: totals, deadlines, status, action sequences, outstanding amounts.
Mirrors the sidecar pattern. JSON-as-data + HTML-as-view is the same architectural shape as the ingest โ render pipeline already shipping.
Multi-stakeholder share. Audrey, an adjuster, a contractor โ anyone you grant access โ sees the same authoritative view.
Searchable. Add Ask-Opus search box (Phase C of cockpit sketch) and the cockpit answers questions, not just shows files.
Editorial voice. The smart-advocate framing carries through; not a process-bureaucrat directory listing.
Cons
Two sources of truth risk. If filesystem and cockpit drift (last regenerate was a month ago), the cockpit silently misleads.
Maintenance cost. Adding a new category means updating the renderer alongside the filesystem.
Finder muscle memory. Browser โ file picker; old habits resist routing through HTML.
One URL vs. many files. HTML cockpit lives at a single URL; the files themselves still live in directories. Knowing which to open when matters.
Browser dependency. Offline-on-a-plane recovery requires the source files anyway โ the cockpit becomes the secondary surface.
Premature on small collections. Below ~50 files, the renderer + style sheet is more work than just opening the folder.
The recommendation โ when sidecars help vs hurt
Use HTML sidecars when: (a) the file count is >~50, (b) the data is time-sensitive (deadlines exist), (c) multiple stakeholders need the same authoritative view, or (d) the cockpit would surface metrics the filesystem can't (totals, days-remaining, action-rank).
Skip HTML sidecars when: file count <20, single-user, low-stakes, all-evergreen content. A markdown 00-index.md is enough at this scale.
The rendering rule: only layer sidecars on complete-spine filesystems. Putting a cockpit on a no-spine tree just photographs the chaos in HTML; nothing useful comes through.
Where this applies beyond insurance
Domain
Likely current spine
Move
Insurance claims (today's case)
No spine
Insurer โ policy โ claim โ numbered sections + cockpit at each claim root
Vehicle records (Honda HRX, Z665, Ardisam, Billy Goat โ already nested under codes.json)
Some spine
Already partly there via pa/equipment/<slug>.html + receipts/. Lift to per-entity cockpits when service-log grows past ~20 entries.
audrey product archive (the 100s-of-documents signal)
No spine, but high volume coming
Designer/collection/year/piece โ receipts + photos + correspondence per piece. Cockpit per collection.
Scans โ 99-inbox/ (raw incoming; pipeline will consume from here)
Loan Depot โ 80-loan-servicer/loan-depot/
Payouts โ 40-payouts/
PA Insurance โ this IS Liberty Mutual; rename to 00-policy-docs/ or merge into root
Missing + Submitted + Excluded Property Contents โ all collapse into 50-contents/ with state in _state.json
Status โ 70-status.md at the claim root
Submissions โ if it's correspondence, into 10-correspondence/; if it's the same as Payouts, merge into 40-payouts/
Contents โ 50-contents/
Shed Structure โ 60-structure/shed/
Generate the first 00-index.md from the existing claim sidecar (~/Code/home-projects/pa/home-insurance/claims/_bulk-source/2026-05-20-bulk-scan-19-pages.json) โ pulls insurer, total paid, outstanding amounts, deadlines, action ranking
(Optional) Generate the HTML cockpit alongside 00-index.md if you want the pa.gf.cx surface to mirror the filesystem
The closing aphorism
A folder is a promise about what's inside. A no-spine filesystem is a promise broken with every new folder. A complete-spine filesystem promises the structure will absorb the next file. The cockpit on top is the receipt that says: I kept the promise.
dare.co.uk strategy note ยท 2026-05-20 ยท filesystem-spine framework ยท generated by Claude with DanTriggered by Dan's 4TB insurance-claim folder audit. Generalizable to insurance / vehicles / audrey-archive / property-docs / client-engagements / personal-finance. ~50+ files = complete-spine + cockpit; below = markdown index is enough.