P1: Four irreversible delete leaves (subject delete, subject batch-delete,
project delete, account delete) were declared as confirmation=not_required
and executed without a user confirmation gate. Update safetyDestructive to
confirmation=user_required so DeclareLeafMetadata installs the typed
ConfirmSafety gate before the first MCP call.
Update TestCrossPlatformCoverageContractProjectDeleteMapsIntegerIDs to
verify both branches: unconfirmed invocation returns typed
confirmation_required error with zero MCP calls, and --yes confirmation
proceeds with exactly one call and precise arguments.
Add HelpReferences (RelatedSkills + Documentation) to contract ProductDecl
to satisfy TestPublicServicesDeclareExistingHelpReferences and
TestAgentVisibleLeavesHaveCompleteRenderableSafetyAndReferences.
Remove retired edu-contact endpoint from openSupplementServers to satisfy
TestCrossPlatformCoverageOpenSupplementServersExcludesRetiredEduEndpoints.
Register drive-internal as a helper-only supplement server (no command
prefixes, excluded from VisibleProducts) and point capabilityServerID
from "doc" to the newly registered internal capability endpoint.
The CI platform coverage gate (macOS/Windows) only executes tests
matching ^(TestAllShortcuts|TestCrossPlatformCoverage). The edu/college
test functions used standard names and were not exercised during the
platform coverage run, causing 73.89% changed-code coverage (target 100%).
Changes:
- Rename all edu/college test functions with TestCrossPlatformCoverage prefix
- Add edu products to command_matrix_test.go selected map
- Add TestCrossPlatformCoverageOpenSupplementServersIncludesEduEndpoints
in pkg/edition to cover the new supplement server entries
Local verification: coverage-gate-platform reports 100.0000% (3336 stmts).
Unify runtime morphology on pkg/cmdutil.Morph (same function the generator uses),
add a SemanticAliasHandler that looks up the embedded generated table after
morphological normalization and rewrites synonyms to the command's canonical flag
(leaving blocked/ambiguous synonyms untouched for the did-you-mean path), and
thread the command CLIPath through the pipeline Context. Pilot the mechanism on
'calendar event list' by removing its hand-written hidden spelling variants; a
behaviour-preservation test locks the outcome.
Plain Required now validates the effective value (primary flag -> aliases
-> env) instead of only the primary flag, matching the declared fallback
semantics; whitespace-only values under Trim count as missing. Extracted
cmdutil.MissingRequiredFlagsError to keep the unified error format.