OK, I decided to start from @guyemerson’s grammar which we know is doing the right thing, and try to add a subject extraction rule, a head-filler rule, and a wh-pronoun there, and see if it will work.
Here’s what I added:
wh-ques-phrase := basic-head-filler-phrase & interrogative-clause &
head-final &
[ SYNSEM.LOCAL.CAT [ MC bool,
VAL #val,
HEAD verb ],
HEAD-DTR.SYNSEM.LOCAL.CAT [ MC na,
VAL #val & [ SUBJ < >,
COMPS < > ] ],
NON-HEAD-DTR.SYNSEM.NON-LOCAL.QUE.LIST < ref-ind > ].
extracted-subj-phrase := basic-extracted-subj-phrase &
[ SYNSEM.LOCAL.CAT.HEAD verb,
HEAD-DTR.SYNSEM.LOCAL.CAT.VAL.COMPS < > ].
wh-word-lex := norm-ltop-lex-item & basic-icons-lex-item &
[ SYNSEM [ LOCAL [ CAT [ VAL [ SPR < >,
SUBJ < >,
COMPS < >,
SPEC < > ] ],
CONT [ RELS.LIST < [ LBL #larg,
ARG0 #arg0 ],
[ PRED "which_q_rel",
ARG0 #arg0,
RSTR #harg ] >,
HCONS.LIST < [ HARG #harg,
LARG #larg ] > ] ],
NON-LOCAL.QUE.LIST < #arg0 > ] ].
wh-pronoun-noun-lex := wh-word-lex & norm-hook-lex-item &
non-mod-lex-item & basic-one-arg &
[ SYNSEM [ LOCAL [ CAT.HEAD noun,
CONT [ HOOK.INDEX.PNG.PER 3rd,
RELS.LIST <[ ARG0 ref-ind ], [] > ] ] ] ].
wh-noun-lex := wh-pronoun-noun-lex &
[ SYNSEM.LOCAL.CAT.HEAD.CASE nom ].
Now I can’t apply the subject extraction rule to the VP for this reason (this is the SYNSEM’s own NONLOCAL):

Any tips? Here’s basic-extracted-subj, for reference:
basic-extracted-subj-phrase := basic-extracted-arg-phrase & head-compositional &
[ SYNSEM.LOCAL.CAT.VAL [ SUBJ < >,
SPR < >,
COMPS < > ],
HEAD-DTR.SYNSEM [ LOCAL.CAT [ VAL [ SUBJ < gap &
[ LOCAL #local & local &
[ CONT.HOOK.INDEX ref-ind ] ] >,
COMPS olist ],
MC na ],
NON-LOCAL.SLASH.LIST < #local > ],
C-CONT [ RELS.LIST < >,
HCONS.LIST < >,
ICONS.LIST < > ] ].
To clarify, I don’t understand where the conflicting constraints come from. Does it seem like something in the head-complement rule is insisting that the SLASH be null??..