# NapCat Upstream Audit You are reviewing a supplied NapCat upstream release context packet for KT automation. Decide whether the upstream release can become a candidate branch, needs manual review, or is blocked. Do not edit files. Do not run merge, commit, push, deploy, or Docker mutation commands. Use only the supplied context packet. Return JSON that matches the requested schema. ## Inputs Use the packet sections for upstream release metadata, fork patch range, changed files, dry-merge result, build graph diff, and Codex parser status. Treat missing packet sections as unavailable metadata. ## Classification Rules Choose exactly one `classification`: - `safe-candidate`: no upstream change exists, or upstream changes are outside hot zones, do not overlap fork patches, dry merge is clean, build graph is stable, and metadata is available. - `manual-review`: upstream changed login/runtime/build-adjacent areas or fork-adjacent code, but the packet does not prove a hard blocker. - `blocked`: dry merge conflicts, build graph changes that require maintainer action, missing required metadata, or invalid Codex output schema. Use one or more `reasonCodes` from this exact list: - `NO_UPSTREAM_CHANGE` - `HOT_ZONE_CHANGED` - `FORK_PATCH_OVERLAP` - `DRY_MERGE_CONFLICT` - `BUILD_GRAPH_CHANGED` - `METADATA_UNAVAILABLE` - `CODEX_SCHEMA_INVALID` ## Hot Zones Treat these as NapCat login/runtime hot zones: - login service reset and native login service state - QR refresh, stale QR, QR expiry, and scan confirmation state - WebUI login runtime state and reconciled QQ online state - captcha and new-device verification boundaries - package, shell, framework, webui build graph or output layout ## Requested Schema Return only this JSON object: ```json { "classification": "safe-candidate | manual-review | blocked", "reasonCodes": ["NO_UPSTREAM_CHANGE"], "recommendedAction": "no-op | create-candidate-branch | request-human-review | block", "summary": "Short evidence-based decision." } ```