Round 3 of the unified gaokao-cli rollout. Adds four more passthrough
markers so the unified entry point can drive the remaining ops scripts
without bringing new data models into data/.
- data/cli_compat_delivery_dispatch.py: runpy shim for
scripts/gaokao-delivery-dispatch.py (DispatchDeliveryEvents).
- data/cli_compat_delivery_watchdog.py: runpy shim for
scripts/gaokao-delivery-watchdog.py (WatchdogDeliveryEvents).
- data/cli_compat_retention_cleanup.py: runpy shim for
scripts/gaokao-retention-cleanup.py (OrderRetentionCleanup).
- data/cli_compat_channel_fallback.py: forwarder for
data.channel_sync.monitor.main (CheckChannelHealth /
ManualTemplate).
- data/cli_compat_backup.py: subprocess wrapper that dispatches
scripts/backup_snapshot.sh and scripts/backup_verify.sh.
- data/rules/cli.py main(): routes gaokao-cli {channel, delivery
{dispatch,watchdog}, retention, backup {snapshot,verify}} to the
shims; rejects unknown subcommands with a structured error.
- docs/CLI_API_MAPPING.md §2.1: now lists 12 top-level commands with
their real subcommands and fallback paths.
- tests/test_cli_doctor_phase3.py: +6 tests covering channel
delegation, delivery dispatch / unknown-subcommand, retention
routing, backup shell routing, and backup unknown-subcommand
rejection.
Verification:
- focused: 12 passed
- dev-verify full gate: all checks passed (ruff / mypy / coverage /
pytest / benchmark)
Builds on 7d31d75 (order delegation + doctor self-check). The unified
gaokao-cli now also wraps the legacy shortlink and payment-doctor
scripts through thin runpy-based compat shims.
- data/cli_compat_gaokao_shortlink.py: loads scripts/gaokao-shortlink
via runpy.run_path; preserves argv routing for native subcommands
(create/list/resolve/revoke/...).
- data/cli_compat_payment_doctor.py: loads scripts/payment_provider_doctor.py;
strips the leading 'doctor' marker (the legacy script takes no args)
and rejects unrecognised tokens so silent flag drops are surfaced.
- data/rules/cli.py main(): routes gaokao-cli {share,payment} <...>
to the compat shims; gaokao-cli order remains delegated to
data.orders.cli.
- docs/CLI_API_MAPPING.md §2.1: records the actually-shipped command
surface (rules / majors / majors school-* / audit / order / share /
payment doctor / doctor) so the design doc matches runtime.
- tests/test_cli_doctor_phase3.py: covers share delegation, payment
doctor rejection, and the passthrough help flow.
Verification:
- focused: 6 passed
- dev-verify full gate: all checks passed (ruff / mypy / coverage / pytest / benchmark)