docs(audits): dated API coverage snapshot + green main (closes #428) - #449
Conversation
…h method After #444-447 documented AdImageAssociation/DeleteReport/DeleteOfflineReport/ GetKeywordsSuggestion, no contract remains with param_shape=undocumented and safety=write, so the hard-fail lookup raised AssertionError. Mirror the existing undocumented-read test and use the _or_skip variant: the runtime guard still exists, the path is just unreachable from real callers. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Records main @ e9c7ea5 parity as a reference point: v5 WSDL 29 services/112 ops (strict parity), reports 8 types/84 fields, optional-field audit 3215 supported/ 26 not_applicable, 23/32 v4 contracts CLI-wired. Documents that the four formerly-undocumented v4 methods are now docs-verified and that GetCreditLimits/ CheckPayment have CLI commands. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds a dated API coverage snapshot document for milestone 0.3.15 and fixes a failing test on main by switching to a skip-tolerant helper since no v4 contract currently has the undocumented + write combination.
Changes:
- New
docs/audits/API_COVERAGE.mdwith frozen parity snapshot at commite9c7ea5. - Updates
test_call_v4_refuses_undocumented_write_methodto use_first_method_with_shape_and_safety_or_skipso the test skips instead of failing when no matching contract exists.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| docs/audits/API_COVERAGE.md | New dated API coverage snapshot doc for #428. |
| tests/test_v4_runtime_shape.py | Switch undocumented-write test to _or_skip helper to handle empty registry case. |
|
@claude review. Focus on critical issues: bugs, security vulnerabilities, logical errors, data loss risks, performance problems. Do NOT nitpick style, naming conventions, minor formatting, or subjective preferences — only flag issues that could break functionality or cause real harm in production. |
|
Claude finished @axisrow's task in 1m 3s —— View job Review: PR #449 — API coverage snapshot + green-main test fixVerdict: No critical issues. Safe to merge. Scope is small: one new docs file and a 1-line test-helper swap. I focused on the test change since the doc is non-executable. Test change — correct ✅
The behaviour-test-that-skips-when-its-precondition-is-unreachable is an acceptable pattern here; the parallel dangerous test keeps the guard under live coverage. Docs file — fine
Notes (non-blocking)
No bugs, security, data-loss, or performance concerns found.
|
Summary
Closes the two open issues of milestone 0.3.15 (#428, #448).
docs/audits/API_COVERAGE.md, a dated parity snapshot (main @e9c7ea5) as a reference point for future audits. All figures are script-generated (build_api_coverage_report.py,build_wsdl_optional_field_audit.py) cross-referenced withdirect_cli/v4_contracts.py:supported/ 26not_applicable/ 0missing_followup.GetCreditLimits/CheckPaymentnow have CLI commands (docs(v4): verify GetCreditLimits wire-shape against official docs (closes #430) #439/docs(v4): stamp CheckPayment with docs-absence verification (closes #431) #440).V4_FINANCE_CURRENCIESwas already removed onmainby fix(v4): align create-invoice wire-body with docs; drop Currency (closes #434) #443. Verifiedgrep -rn V4_FINANCE_CURRENCIESis empty and the suite is green.mainintroduced by the docs(v4): document GetKeywordsSuggestion contract from official docs (closes #435) #444–447 docs wave —test_call_v4_refuses_undocumented_write_methodnow uses the_or_skipvariant (no contract hasparam_shape=undocumented+safety=writeanymore; the runtime guard is intact, the path is just unreachable).Test plan
pytest tests/test_api_coverage.py tests/test_wsdl_parity_gate.py tests/test_v4_live_contracts.py— greenpython3 scripts/build_wsdl_optional_field_audit.py --check— currentpython3 scripts/check_reports_drift.py— 0 driftpytest --ignore=tests/test_integration.py) — 1899 passed, 37 skipped🤖 Generated with Claude Code