From 513e03b0693ca880c721c0b7706a111830f32f2c Mon Sep 17 00:00:00 2001 From: Eva <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz> Date: Mon, 17 Aug 2026 22:32:29 -0400 Subject: [PATCH] docs(nip-fi): fix pinned NIP source links and identifier-classification contradiction Review findings from Mari and Quinn on #5946 at 2511d1baf: - Repoint the pinned NIP-42/NIP-98 source links from a nonexistent upstream commit (404) to the resolved commit 6d2979b3f503a8539c983efbcdcf901bbcf9ed23 (both 200). - NIP-FI-EDGE no longer classifies transport_contract_id as interoperability-critical, which contradicted core's exclusive deployment-local classification. The value stays deployment-local; the contract semantics EDGE contributes to it are what is normative. - Core's rejection-and-privacy absolute ("never of private server state") now carries the authorization_unavailable carve-out its own table and NIP-FI-CONF already relied on. Co-authored-by: Eva <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz> Signed-off-by: Eva <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz> --- docs/nips/NIP-FI-EDGE.md | 10 +++++++--- docs/nips/NIP-FI.md | 10 ++++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/docs/nips/NIP-FI-EDGE.md b/docs/nips/NIP-FI-EDGE.md index e96fb8a3de..b04129c7ab 100644 --- a/docs/nips/NIP-FI-EDGE.md +++ b/docs/nips/NIP-FI-EDGE.md @@ -19,9 +19,13 @@ The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **OPTIONAL** are to be interpreted as described in BCP 14 when, and only when, they appear in all capitals. -`transport_contract_id` and every identifier serialized by this document are -interoperability-critical. Local adapter revision identifiers and key identifiers -are deployment-local and MUST NOT appear in public discovery. +Every identifier this document serializes on the wire — header names, the +profile identifier, provenance envelope fields, and proof transport codes — is +interoperability-critical. `transport_contract_id` remains deployment-local as +core classifies it: its value is opaque outside a deployment, while the +canonical contract semantics this profile contributes to it are normative and +fixed here. Local adapter revision identifiers and key identifiers are +deployment-local and MUST NOT appear in public discovery. ## Common trusted-edge requirements diff --git a/docs/nips/NIP-FI.md b/docs/nips/NIP-FI.md index 4c83ae5957..310fe39df9 100644 --- a/docs/nips/NIP-FI.md +++ b/docs/nips/NIP-FI.md @@ -447,8 +447,10 @@ assertion revalidation material is destroyed on expiry, close, or invalidation. ## Rejection and privacy Public class is a function only of evidence the requester supplied, never of -private server state. Under the private-posture rule, even `key_mismatch` joins -the private-state anonymity set. +private per-principal server state; `authorization_unavailable` is the sole +exception and reveals only that a required authoritative dependency is +unreadable, never any per-principal fact. Under the private-posture rule, even +`key_mismatch` joins the private-state anonymity set. | Private condition | Public class | Nostr prefix and exact text | HTTP response | |---|---|---|---| @@ -578,8 +580,8 @@ atomically. Availability failures deny rather than degrade to Nostr-only access. ## Sources -- NIP-42 authentication: -- NIP-98 HTTP authentication: +- NIP-42 authentication: +- NIP-98 HTTP authentication: - JWT BCP: - JWT access-token profile: - Non-normative composed model: [NIP-FI-MODEL.md](NIP-FI-MODEL.md)