Maybe what you want is #+frob (:file "foo") Ideally not, as you'd have to remember to reload all your .asd files every time you messed with features. If this isn't what :feature does, then what is it for?
2. Suppose I would like some code to run at compile-time / load-time to determine where the fasls should live (e.g. hypothetically, in a subdirectory named after a timestamp, or according to what patches I have loaded). How do I express this?
You can define your own :around method on output-files, and/or override default methods. See how ASDF-BINARY-LOCATIONS (now part of ASDF 1.366 and later) does it. Hmm, that's an improvement. (Otoh writing about a rapidly moving target is tricky. Each time I review this it's changed.) Note that with XCVB, you can :depends-on (:when (:featurep :frob) "foo") and you can xcvb --object-directory obj-$(timestamp) ... OK. So you still can't say: look for the :frob feature and decide whether to include this component? Thanks, - n