docs(api): api-review daily audit 2026-09-01 — localize english text in ZH specs (336 ops, zero surface change) - #333
Merged
Conversation
Registry (auth=all, non-push) and committed specs both hold exactly 336 operations: zero added, zero removed. The only registry change since the last run is the Huawei AOM push rows, which are auth=integration and out of public scope. Text-only bilingual-contract fixes (146 lines, no structural change): - 52 ZH ops had responses.200.description 'Success' instead of '成功' - 15 on-call ZH ops carried the English tag 'On-call/Incidents', which is also undeclared in the ZH tags list; mapping.yaml tag_zh is 故障管理 - 2 rum ZH ops + their tag declaration carried 'RUM/Session replay' instead of mapping.yaml's 'RUM/RUM 会话回放' - /account/info 200 description 'OK' -> 'Success' (EN) / '成功' (ZH) - /rum/issue/export ZH 200 description translated to match sibling exports docs.json and both api-catalog.mdx files are untouched: no operation was added or removed, and all 336 paths are already present in the nav and catalogs. lint_openapi.py passes; split and consolidated stay identical.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
api-review daily audit — 2026-09-01 (UTC)
Mode:
--mode generate --scope all --auto(equivalent to/api-review --mode generate --scope all --auto)Registry source:
fc-pgy/logic/api/api_test.go@a21dfb3(2026-09-01 13:26 +0800), 926 rows parsedDocs baseline:
main@e50f58fOperation surface: zero drift
Public-scope filter (
Auth == "all", path not/event/push/*, non-hidden module) yields 336 operations; the committed specs contain exactly the same 336(method, path)pairs. Set equality was verified both directions.The only registry change since the last run (2026-08-31) is PR #879
feat/huawei-aom, which adds 4 Huawei cloud push rows (/event/push/alert/huaweiyun/aom,-apm,/ces,/lts). All four areauth: integration, so they are out of public API scope by design and correctly absent from the specs — no new public endpoint to document.Handler-side scan across
fc-event,fc-oncall,fc-pgy,fc-rum,fc-statuspage,fc-datasource,go-pkgfor commits since2026-08-31T08:12Zfound no change to any public API request/response shape: the fc-event work is AI SRE IM-card/feedback rendering (logic/ai_sre/*), fc-oncall/fc-rum/fc-statuspage/go-pkg had none in controller or struct paths, and the fc-datasource change is PlugTeams attachment download.What this PR changes: bilingual-contract text drift (146 lines, text-only)
No structural change — verified by full-tree deep compare:
pathskeys,components.schemaskeys,operationIdlist and tags-entry shape are all byte-identical to HEAD. Only four leaf text fields moved, and only these:description:"Success"→"成功"(in the.zhfiles)tags[0]:"On-call/Incidents"→"On-call/故障管理"tags[]listtags[]name + 4 optags[0]:"RUM/Session replay"→"RUM/RUM 会话回放"mapping.yaml/account/info200description:"OK"→"Success"(EN) /"成功"(ZH)/rum/issue/export200description→"成功。CSV 附件,非 JSON 信封。"Files touched:
on-call.openapi.zh.json(26),safari.openapi.zh.json(41),rum.openapi.zh.json(4),platform.openapi.{en,zh}.json(1 each), plus the two consolidated copies kept in sync (openapi.zh.json72,openapi.en.json1). Total: 7 files, 146 insertions / 146 deletions.Rationale for the ZH tag renames:
mapping.yamlis the authority for tag labels (<parent_zh>/<tag_zh>).on-call/incidentdeclarestag_zh: 故障管理, and 40 of its 55 ZH ops already carriedOn-call/故障管理— the other 15 (/incident/feed,/incident/comment,comment-type/*,work-item/*) carried the English label, which Mintlify renders as a separate English sidebar group.rum/session-replaydeclarestag_zh: RUM 会话回放; the spec carried the English form.RUM/RUM Sourcemapwas left alone — it looks untranslated but is exactlymapping.yaml's declaredtag_zh("RUM Sourcemap").Not changed (deliberate exemptions, all evidence-checked)
docs.jsonand{en,zh}/openapi/api-catalog.mdx: untouched. Zero operations were added or removed, and every one of the 336 spec paths is already present in the nav allow-list and in both catalogs (verified programmatically) — the 0-endpoint-change case where 防错铁律 3 forbids nav edits.openapi.legacy.zh.json: untouched (read-only reference).text/csv,application/octet-stream,application/x-ndjsonresponses;multipart/form-datarequests). The repo's ownscripts/lint_openapi.pycodifies exactly this exemption and passes.ScheduleNotify.advance_in_time(lead time in seconds),ServiceMap*.max_age_ms/report_interval_ms(data age / reporting interval). Zero-milliviolations among real ms-epoch fields.Verification run in this session
python3 scripts/lint_openapi.py→OK: 12 spec files, no violationsjson.load), with path/schema counts printed per filegit show HEAD:<path>→ 146 diffs, every one in the allow-listed table above; zero unexplainedpaths/schemas/operationId/ tags-shape identical to HEAD (no structural or ordering churn)new=[],stale=[]json.dumps(indent=2, ensure_ascii=False)+ trailing newline round-trip, so no reformatting could leak into the diff. Every edit was applied as an assertion-guarded line replacement (expected count per file per class had to match exactly, or nothing was written).findings.unresolved / environment notes
runbooks/api-review-apply-patches.pyandrunbooks/api-review-daily.mdare still absent from the team knowledge pack (same as the 2026-08-28 note), so 防错铁律 6's "patch first" step could not run. Baseline fidelity was instead guaranteed by the round-trip proof + assertion-guarded line edits described above. No full regeneration was attempted with the unpatched generator.mapping.yamlcoverage gap (skill-side, not fixed here): 13 paths that areauth: allin the registry and already documented in the specs are claimed by nopath_prefixesentry, so a--scope allanalyze run would drop them:monitors—/monit/query/data,/monit/query/diagnose,/monit/targets,/monit/tools/catalog,/monit/tools/invoke,/monit/servicemap/{status,summary,topology,fleet,fleet/summary};rum—/rum/data/query,/rum/field/list,/rum/resource/info. Recommend adding these prefixes tomapping.yaml(or to the missing patch script) before the next generate, otherwise a regeneration would delete 13 live endpoints.monit-webapi/monit-edgeare not on GitHub (flashcatcloudorg), so themonitorsmodule could not be re-extracted from handler source this round and carries forward unchanged from HEAD apart from nothing (0 lines touched).