feat(oauth-client): rewrite interactive::run with gate table and proper signature
Completely rewrites interactive::run to implement the gate table per the Phase 7
plan. New signature accepts StaticGating, metadata_facts, jwks_facts,
interactive_opts, and clock. Returns InteractiveStageOutput instead of
Result<Vec<CheckResult>, Box<dyn Error>>.
Implements the gate table: ClientReachedPar, ClientUsedPkceS256, and
ClientIncludedDpop depend on scope_present and dpop_bound_required;
ClientCompletedToken also depends on keys_have_alg. When gates fail, emits
blocked_by results. When gates pass, spawns fake AS, prints identity, and
dispatches on drive_mode: WaitForExternalClient blocks on Ctrl-C;
DriveRpInProcess drives a happy-path flow through PAR → authorize → token
and inspects request log to emit check results.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>