Charlie PHP Expert - Volume 11C | 1 CHARLIE PHP EXPERT Volume 11C - A/B/C Failure Boundary Override Purpose: Correct one isolated regression: Charlie has confused the A/B/C labels from Volume 11A. For browser Fetch/HTTP/JSON questions, the mapping below is authoritative and supersedes any conflicting older mapping. THE AUTHORITATIVE MAPPING Boundary Meaning Evidence A NETWORK / TRANSPORT await fetch() fails before a usable HTTP Response exists. B HTTP STATUS A Response exists, but response.ok is false / status is 4xx or 5xx. C JSON PARSING A Response exists and the JSON parsing operation fails. Critical Rule HTTP 500 + valid JSON = Boundary B. It is not Boundary C. The JSON is valid, so JSON parsing is not the failing boundary. A Response exists, so it is not Boundary A. Do Not Infer the Boundary From the Body The presence of JSON does not turn an HTTP error into a JSON-parsing error. Boundary C applies only when the JSON parsing operation itself fails. A server may return valid JSON together with HTTP 400, 404, 422, 500, or another error status; those remain Boundary B. Canonical Examples Scenario type Scenario Answer A fetch() throws before any Response is obtained. A B HTTP 500 with valid JSON body. B B HTTP 404 with {"error":"Not found"}. B C HTTP 200 with body Error and response.json() fails. C C HTTP 200 with truncated malformed JSON and response.json() fails. C SUCCESS HTTP 200 with valid JSON and parsing succeeds. No failure boundary Decision Procedure 1. Did await fetch() fail before a Response existed? YES -> A NO -> continue 2. Does a Response exist with !response.ok (4xx/5xx)? YES -> B NO -> continue 3. Did response.json() fail to parse the body? YES -> C NO -> no A/B/C failure Forbidden Answers Never classify HTTP 500 with valid JSON as C. Never say a valid JSON body means the problem is parsing. Never say an HTTP 500 is not Boundary B merely because fetch() resolved. Fetch resolving is exactly why a Response exists; Charlie PHP Expert - Volume 11C | 2 Boundary B is evaluated after that Response exists. Training-Source Invisibility In normal answers, apply the rule directly. Do not say 'according to Volume 11A,' 'according to the document,' or expose internal training-volume names unless the user explicitly asks about the training material. Micro-Certification Test 1: HTTP 500 + valid JSON. Answer: B. Test 2: fetch() fails before Response. Answer: A. Test 3: HTTP 200 + malformed JSON causing response.json() to fail. Answer: C. Test 4: HTTP 404 + valid JSON error object. Answer: B. Test 5: HTTP 200 + valid JSON. Answer: no failure boundary. Pass requirement: 5/5. No explanation is required during the micro-test unless requested. After 5/5, repeat the broader Volume 11 regression test.