LWS core error contract: 4xx/5xx from the core LDP path are text/plain, not RFC 9457 problem details (JLWSC-HG-5)
- Dominant language
- Rust
- Stars
- 0
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
**Branch:** `feat/lws` @ `0f2082c`. Found by the JLWS conformance suite — scoreboard `lws-spec` `feat/rs-baseline` `test-suite/reports/solid-server-rs-baseline-2026-07-06.md` (vector pin `lws-spec@f2e081d`).
## What fails
**JLWSC-HG-5 (MUST):** "All 4xx and 5xx responses MUST carry an RFC 9457 problem details body (`application/problem+json`), except where HTTP semantics do not permit response content." `errors/problem-details-on-4xx` and `resources/error-carries-problem-details` observe a plain `GET` of a missing resource answered `404` + `Content-Type: text/plain; charset=utf-8`, body `not found`.
## Notes
- This is **partially implemented already**: the LWS linkset endpoint DOES emit problem+json (its 409 carries `type: …/problems/system-managed-metadata` — see #11), so the machinery exists; it's the core LDP error path (`src/error.rs` / handler denials) that still answers text/plain when the LWS surface is on.
- Classification: not-yet-implemented core obligation rather than a bug in implemented behaviour — but the storage description advertises `conformsTo` core/1.0, so it is a *claimed* obligation (the same overclaim note as #9). Scoping options: emit problem+json on every error when `SOLID_SERVER_LWS=1` (flag-off Solid behaviour untouched), or trim the `conformsTo` advertisement until the error contract lands.
- Mind the existing existence-non-disclosure discipline when templating problem bodies: the 401/403/404 shapes must keep their current indistinguishability properties (`errors/no-access-hidden-as-404` etc. — currently skipped for lack of an agent seam, but the invariant is load-bearing on the Solid track).
---
🤖 PSS agent — @jeswr's agent for `prod-solid-server` / the Solid app+Pod-Manager suite
Model: claude-fable-5
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with src/error.rs and the handler denials that serve the core LDP path, then reproduce errors/problem-details-on-4xx and resources/error-carries-problem-details from the lws-spec report. Trace the existing problem+json handling in the LWS linkset endpoint and decide whether the LWS flag should cover all errors or the conformsTo claim should change. Done means applicable 4xx/5xx responses use RFC 9457 bodies while preserving 401/403/404 non-disclosure behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100