From 4256128b9fa81737f59a55ffc59d4944dc42a08b Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Tue, 1 Sep 2026 08:04:01 +0100 Subject: [PATCH] fix(mime): register application/vnd.k9 without the +nickel suffix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `k9-svc/SPEC.adoc` and `k9-svc/IANA-MEDIA-TYPE-APPLICATION.adoc` contradicted each other in `main`: the application registers `application/vnd.k9` *without* a structured-syntax suffix, while the spec and 24 downstream files still declared `application/vnd.k9+nickel`. Owner ruling (2026-09-01): `application/vnd.k9`, no suffix. Structured-syntax suffixes are intended for widely-registered base syntaxes; `+nickel` is not one, and carrying it into IANA review invites a reviewer objection for no gain. Sweeps 25 occurrences across 24 files — mime registrations (`mime.types`, `k9.xml`, `k9.uti.plist`, `k9.magic`), the LSP hover text, both pandoc filters, every `deploy.k9.ncl`, the site pages and the per-binding READMEs. Deliberately NOT swept: `IANA-MEDIA-TYPE-APPLICATION.adoc`, whose two remaining mentions are intentional — one records that earlier drafts used the suffix, the other reserves `+nickel` as a possible future companion type. `k9.xml` and `k9.uti.plist` re-verified as parsing after the edit. This discharges the K9 IANA blocker. Co-Authored-By: Claude Opus 5 --- deno/.machine_readable/svc/k9/README.adoc | 2 +- deno/container/deploy.k9.ncl | 2 +- editors/vscode/container/deploy.k9.ncl | 2 +- examples/config.k9.ncl | 2 +- examples/container-deploy.k9.ncl | 2 +- examples/deploy.k9.ncl | 2 +- haskell/.machine_readable/svc/k9/README.adoc | 2 +- haskell/container/deploy.k9.ncl | 2 +- lsp/src/hover.rs | 2 +- mime/k9.magic | 2 +- mime/k9.uti.plist | 2 +- mime/k9.xml | 2 +- mime/mime.types | 2 +- pandoc/PANDOC-SUBMISSION.adoc | 2 +- pandoc/container/deploy.k9.ncl | 2 +- pandoc/k9-reader.lua | 2 +- pandoc/k9-writer.lua | 2 +- rs/.machine_readable/svc/k9/README.adoc | 2 +- rs/container/deploy.k9.ncl | 2 +- site/index.adoc | 4 ++-- site/spec.adoc | 2 +- site/start.adoc | 2 +- validate-action/.machine_readable/svc/k9/README.adoc | 2 +- validate-action/container/deploy.k9.ncl | 2 +- 24 files changed, 25 insertions(+), 25 deletions(-) diff --git a/deno/.machine_readable/svc/k9/README.adoc b/deno/.machine_readable/svc/k9/README.adoc index f54b220..56de211 100644 --- a/deno/.machine_readable/svc/k9/README.adoc +++ b/deno/.machine_readable/svc/k9/README.adoc @@ -162,7 +162,7 @@ git clone https://github.com/{{OWNER}}/k9-svc.git - **K9-SVC Specification:** https://github.com/{{OWNER}}/k9-svc/blob/main/SPEC.adoc - **K9 User Guide:** https://github.com/{{OWNER}}/k9-svc/blob/main/GUIDE.adoc - **Security Documentation:** https://github.com/{{OWNER}}/k9-svc/blob/main/docs/SECURITY-FAQ.adoc -- **IANA Media Type:** `application/vnd.k9+nickel` +- **IANA Media Type:** `application/vnd.k9` == Contributing diff --git a/deno/container/deploy.k9.ncl b/deno/container/deploy.k9.ncl index 0ad0d04..04db325 100644 --- a/deno/container/deploy.k9.ncl +++ b/deno/container/deploy.k9.ncl @@ -20,7 +20,7 @@ let component_pedigree = { metadata = { name = "{{SERVICE_NAME}}-deploy", version = "{{VERSION}}", - breed = "application/vnd.k9+nickel", + breed = "application/vnd.k9", magic_number = "K9!", description = "{{PROJECT_NAME}} deployment component (Hunt level)", }, diff --git a/editors/vscode/container/deploy.k9.ncl b/editors/vscode/container/deploy.k9.ncl index 0ad0d04..04db325 100644 --- a/editors/vscode/container/deploy.k9.ncl +++ b/editors/vscode/container/deploy.k9.ncl @@ -20,7 +20,7 @@ let component_pedigree = { metadata = { name = "{{SERVICE_NAME}}-deploy", version = "{{VERSION}}", - breed = "application/vnd.k9+nickel", + breed = "application/vnd.k9", magic_number = "K9!", description = "{{PROJECT_NAME}} deployment component (Hunt level)", }, diff --git a/examples/config.k9.ncl b/examples/config.k9.ncl index eb2dff5..efaba95 100644 --- a/examples/config.k9.ncl +++ b/examples/config.k9.ncl @@ -13,7 +13,7 @@ let component_pedigree = { metadata = { name = "example-config", version = "1.0.0", - breed = "application/vnd.k9+nickel", + breed = "application/vnd.k9", magic_number = "K9!", description = "Example configuration component with type contracts", }, diff --git a/examples/container-deploy.k9.ncl b/examples/container-deploy.k9.ncl index 39c9d56..5b8c7e8 100644 --- a/examples/container-deploy.k9.ncl +++ b/examples/container-deploy.k9.ncl @@ -36,7 +36,7 @@ let component_pedigree = { metadata = { name = "container-deploy-stack", version = "1.0.0", - breed = "application/vnd.k9+nickel", + breed = "application/vnd.k9", magic_number = "K9!", description = "Multi-service container deployment with rolling updates and rollback", }, diff --git a/examples/deploy.k9.ncl b/examples/deploy.k9.ncl index 653c386..7362b22 100644 --- a/examples/deploy.k9.ncl +++ b/examples/deploy.k9.ncl @@ -19,7 +19,7 @@ let component_pedigree = { metadata = { name = "example-deploy", version = "1.0.0", - breed = "application/vnd.k9+nickel", + breed = "application/vnd.k9", magic_number = "K9!", description = "Example deployment component (Hunt level)", }, diff --git a/haskell/.machine_readable/svc/k9/README.adoc b/haskell/.machine_readable/svc/k9/README.adoc index f54b220..56de211 100644 --- a/haskell/.machine_readable/svc/k9/README.adoc +++ b/haskell/.machine_readable/svc/k9/README.adoc @@ -162,7 +162,7 @@ git clone https://github.com/{{OWNER}}/k9-svc.git - **K9-SVC Specification:** https://github.com/{{OWNER}}/k9-svc/blob/main/SPEC.adoc - **K9 User Guide:** https://github.com/{{OWNER}}/k9-svc/blob/main/GUIDE.adoc - **Security Documentation:** https://github.com/{{OWNER}}/k9-svc/blob/main/docs/SECURITY-FAQ.adoc -- **IANA Media Type:** `application/vnd.k9+nickel` +- **IANA Media Type:** `application/vnd.k9` == Contributing diff --git a/haskell/container/deploy.k9.ncl b/haskell/container/deploy.k9.ncl index 0ad0d04..04db325 100644 --- a/haskell/container/deploy.k9.ncl +++ b/haskell/container/deploy.k9.ncl @@ -20,7 +20,7 @@ let component_pedigree = { metadata = { name = "{{SERVICE_NAME}}-deploy", version = "{{VERSION}}", - breed = "application/vnd.k9+nickel", + breed = "application/vnd.k9", magic_number = "K9!", description = "{{PROJECT_NAME}} deployment component (Hunt level)", }, diff --git a/lsp/src/hover.rs b/lsp/src/hover.rs index 969188d..6d308ae 100644 --- a/lsp/src/hover.rs +++ b/lsp/src/hover.rs @@ -141,7 +141,7 @@ pub fn hover_at(text: &str, position: Position) -> Option { "Pedigree Field: breed", "**`breed`** — MIME Type Identifier\n\n\ The MIME type for this component. Defaults to \ - `application/vnd.k9+nickel`.\n\n\ + `application/vnd.k9`.\n\n\ **Required:** No (has default)\n\ **Type:** `String`\n\n\ _See: pedigree.ncl § Metadata_", diff --git a/mime/k9.magic b/mime/k9.magic index f1a8ab9..33ae8fb 100644 --- a/mime/k9.magic +++ b/mime/k9.magic @@ -7,5 +7,5 @@ 0 string K9! K9 Self-Validating Component >3 byte 0x0A \b, newline follows >3 byte 0x20 \b, space follows -!:mime application/vnd.k9+nickel +!:mime application/vnd.k9 !:ext k9/k9.ncl diff --git a/mime/k9.uti.plist b/mime/k9.uti.plist index 3682bf3..cdd5de9 100644 --- a/mime/k9.uti.plist +++ b/mime/k9.uti.plist @@ -27,7 +27,7 @@ k9.ncl public.mime-type - application/vnd.k9+nickel + application/vnd.k9 diff --git a/mime/k9.xml b/mime/k9.xml index f1bc381..bc7ecf0 100644 --- a/mime/k9.xml +++ b/mime/k9.xml @@ -2,7 +2,7 @@ - + K9 Self-Validating Component K9 Self-Validating Component (Alpha Breed) K9 Selbstvalidierende Komponente diff --git a/mime/mime.types b/mime/mime.types index ffbd682..d4ab3a0 100644 --- a/mime/mime.types +++ b/mime/mime.types @@ -2,4 +2,4 @@ # MIME types entry for K9 SVC (for systems using /etc/mime.types) # Append to /etc/mime.types or ~/.mime.types -application/vnd.k9+nickel k9 k9.ncl +application/vnd.k9 k9 k9.ncl diff --git a/pandoc/PANDOC-SUBMISSION.adoc b/pandoc/PANDOC-SUBMISSION.adoc index cd42ac1..08f0478 100644 --- a/pandoc/PANDOC-SUBMISSION.adoc +++ b/pandoc/PANDOC-SUBMISSION.adoc @@ -58,7 +58,7 @@ pandoc -f k9.lua input.k9.ncl -t k9-writer.lua -o roundtrip.k9.ncl * K9 SVC specification: https://github.com/hyperpolymath/standards/tree/main/k9-svc -* Media type: `+application/vnd.k9+nickel+` (IANA registration pending) +* Media type: `+application/vnd.k9+` (IANA registration pending) === Related diff --git a/pandoc/container/deploy.k9.ncl b/pandoc/container/deploy.k9.ncl index 0ad0d04..04db325 100644 --- a/pandoc/container/deploy.k9.ncl +++ b/pandoc/container/deploy.k9.ncl @@ -20,7 +20,7 @@ let component_pedigree = { metadata = { name = "{{SERVICE_NAME}}-deploy", version = "{{VERSION}}", - breed = "application/vnd.k9+nickel", + breed = "application/vnd.k9", magic_number = "K9!", description = "{{PROJECT_NAME}} deployment component (Hunt level)", }, diff --git a/pandoc/k9-reader.lua b/pandoc/k9-reader.lua index 3938409..1e178ea 100644 --- a/pandoc/k9-reader.lua +++ b/pandoc/k9-reader.lua @@ -12,7 +12,7 @@ -- pandoc -f k9-reader.lua component.k9.ncl -o docs.html -- pandoc -f k9-reader.lua component.k9.ncl -t markdown -- --- Media type: application/vnd.k9+nickel (IANA registration pending) +-- Media type: application/vnd.k9 (IANA registration pending) function Reader(input, reader_options) local source = tostring(input) diff --git a/pandoc/k9-writer.lua b/pandoc/k9-writer.lua index a191a4e..39fedae 100644 --- a/pandoc/k9-writer.lua +++ b/pandoc/k9-writer.lua @@ -18,7 +18,7 @@ -- -- Round-trip: pandoc -f k9.lua input.k9.ncl -t k9-writer.lua -o roundtrip.k9.ncl -- --- Media type: application/vnd.k9+nickel (IANA registration pending) +-- Media type: application/vnd.k9 (IANA registration pending) -- Spec: /standards/k9-svc/SPEC.adoc --- Writer entry point. Pandoc calls this with the full document AST. diff --git a/rs/.machine_readable/svc/k9/README.adoc b/rs/.machine_readable/svc/k9/README.adoc index f54b220..56de211 100644 --- a/rs/.machine_readable/svc/k9/README.adoc +++ b/rs/.machine_readable/svc/k9/README.adoc @@ -162,7 +162,7 @@ git clone https://github.com/{{OWNER}}/k9-svc.git - **K9-SVC Specification:** https://github.com/{{OWNER}}/k9-svc/blob/main/SPEC.adoc - **K9 User Guide:** https://github.com/{{OWNER}}/k9-svc/blob/main/GUIDE.adoc - **Security Documentation:** https://github.com/{{OWNER}}/k9-svc/blob/main/docs/SECURITY-FAQ.adoc -- **IANA Media Type:** `application/vnd.k9+nickel` +- **IANA Media Type:** `application/vnd.k9` == Contributing diff --git a/rs/container/deploy.k9.ncl b/rs/container/deploy.k9.ncl index 0ad0d04..04db325 100644 --- a/rs/container/deploy.k9.ncl +++ b/rs/container/deploy.k9.ncl @@ -20,7 +20,7 @@ let component_pedigree = { metadata = { name = "{{SERVICE_NAME}}-deploy", version = "{{VERSION}}", - breed = "application/vnd.k9+nickel", + breed = "application/vnd.k9", magic_number = "K9!", description = "{{PROJECT_NAME}} deployment component (Hunt level)", }, diff --git a/site/index.adoc b/site/index.adoc index ec7a8b5..7b03b74 100644 --- a/site/index.adoc +++ b/site/index.adoc @@ -12,7 +12,7 @@ its own guarantees. Components validate themselves, with a trust model that scales from inert data to cryptographically signed execution. [.badge]#v1.0.0-alpha# [.badge]#Nickel contractiles# [.badge]#.k9 / -.k9.ncl# [.badge]#application/vnd.k9+nickel# [.badge]#MPL-2.0 / +.k9.ncl# [.badge]#application/vnd.k9# [.badge]#MPL-2.0 / CC-BY-SA-4.0# Get started Read the spec GitHub @@ -48,7 +48,7 @@ escalation. First-class media type -application/vnd.k9+nickel — registered, addressable, toolable. +application/vnd.k9 — registered, addressable, toolable. === A taste diff --git a/site/spec.adoc b/site/spec.adoc index 61d9fc4..74cf817 100644 --- a/site/spec.adoc +++ b/site/spec.adoc @@ -16,7 +16,7 @@ repository. |=== |Property |Value |Extensions |`+.k9+`, `+.k9.ncl+` -|Media type |`+application/vnd.k9+nickel+` +|Media type |`+application/vnd.k9+` |Encoding |UTF-8 |Built on |Nickel, Just |Licence |MPL-2.0 (code), CC-BY-SA-4.0 (docs) diff --git a/site/start.adoc b/site/start.adoc index a36ceaa..f78825b 100644 --- a/site/start.adoc +++ b/site/start.adoc @@ -46,7 +46,7 @@ Unsigned level-3 components are refused — escalation is never implicit. === Files & types * Extensions: `+.k9+`, `+.k9.ncl+` -* Media type: `+application/vnd.k9+nickel+` +* Media type: `+application/vnd.k9+` * Encoding: UTF-8 === Tooling diff --git a/validate-action/.machine_readable/svc/k9/README.adoc b/validate-action/.machine_readable/svc/k9/README.adoc index 19e8911..65f111c 100644 --- a/validate-action/.machine_readable/svc/k9/README.adoc +++ b/validate-action/.machine_readable/svc/k9/README.adoc @@ -163,7 +163,7 @@ git clone https://github.com/hyperpolymath/standards.git - **K9-SVC Specification:** https://github.com/hyperpolymath/standards/blob/main/k9-svc/SPEC.adoc - **K9 User Guide:** https://github.com/hyperpolymath/standards/blob/main/k9-svc/GUIDE.adoc - **Security Documentation:** https://github.com/hyperpolymath/standards/blob/main/k9-svc/docs/SECURITY-FAQ.adoc -- **IANA Media Type:** `application/vnd.k9+nickel` +- **IANA Media Type:** `application/vnd.k9` == Contributing diff --git a/validate-action/container/deploy.k9.ncl b/validate-action/container/deploy.k9.ncl index e2d3de0..3fe7fdf 100644 --- a/validate-action/container/deploy.k9.ncl +++ b/validate-action/container/deploy.k9.ncl @@ -20,7 +20,7 @@ let component_pedigree = { metadata = { name = "k9-validate-action-deploy", version = "1.0.0", - breed = "application/vnd.k9+nickel", + breed = "application/vnd.k9", magic_number = "K9!", description = "k9-validate-action deployment component (Hunt level)", },