jeswr / jeswr/solid-server-rs

LWS core error contract: 4xx/5xx from the core LDP path are text/plain, not RFC 9457 problem details (JLWSC-HG-5)

Open
#13 0 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.