Clean way of building simple taxonomy browser of arbitrary depth I have spent days trying to determine a clean way to do the following:


Display a list of all top-level terms in a vocabulary with links to their child terms
Upon clicking a link, be taken to a list of the children of those terms. 
Ad infinitum until the lowest-level term, for which a list of nodes tagged with that term will be displayed. 


This seems like it would be pretty commonly-needed functionality but I can't find any solution that can handle arbitrary depth, particularly if not all term trees  descend to the same depth.

An ideal solution would be one that uses Views 3, Contexts, EntityFieldQueries, or anything else that's well-supported in Drupal 7.

I'm able to do almost exactly what I want by making a simple view with three node:term relationships (term, term's parent, and term's parent's parent) and user those for sequential contextual filters. The only problem with this is that if there's a node with a termpath of too little depth, it gets listed as "uncategorized" and generates a dead link. Instead of doing that I'd like it to link to the next child term available.
I figured out a way to do this with only the Views module. It's not perfect — it doesn't generate a nice URL and breadcrumb with the taxonomy lineage the way that my solution for a taxonomy of a single depth would do. 

Static Depth Browser

For a taxonomy of static depth (where all terms have the same depth of child terms), you would do the following:


Create a view of nodes
Add relationship to taxonomy term (Term)
Add relationship to taxonomy term parent, accessible via Term (Parent) 
Add relationship to taxonomy term parent, accessible via Parent (Parent Parent)
Repeat step 4 as many times as necessary for your taxonomy's depth.
Add contextual filters for each one and make sure they're in the proper order. Set to display a summary when filter is not in URL.
You'll probably want to override the breadcrumb and title for each filter.
???
PROFIT


Variable Depth Browser

For a taxonomy of variable depth (where some term trees have deeper levels of nesting than others), it's a bit more complex:


Add a new top-level term (Foo) to your vocabulary and put all other terms under it. 
Create a view of terms with a page that displays term names
Add contextual filter: Taxonomy term: Parent term
When the default value is not in the URL, provide default value
Set default value to your top-level term name (Foo) 
Specify validation criteria


Validator: taxonomy term
Criteria: your vocabulary name
Filter value type: Term name converted to term ID

Click the "+Add" button at the top of the Views panel to add an Attachment to the view.
Add to this attachment only (override) Relationship: Taxonomy term: Content with term
Add to this attachment only (override) display: fields: node titles linked to nodes, and remove (from this attachment only!) display: fields: term name
Add to this attachment only (override) contextual filter: Taxonomy term: Name
When filter value is not available, provide default value: Raw value from URL: Path component: 2 (or more if your Page path has >1 component)
Attachment settings: Attach to: [name of the page display you just made]
???
PROFIT


Screenshots of Views' UI for reference: