<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Specification on emsenn.net</title>
    <link>https://emsenn.net/tags/specification/</link>
    <description>Recent content in Specification on emsenn.net</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 06 Mar 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://emsenn.net/tags/specification/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Creating Specifications</title>
      <link>https://emsenn.net/library/domains/engineering/domains/tech/texts/creating-specifications/</link>
      <pubDate>Fri, 06 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://emsenn.net/library/domains/engineering/domains/tech/texts/creating-specifications/</guid>
      <description>&lt;h1 id=&#34;creating-specifications&#34;&gt;Creating Specifications&lt;/h1&gt;&#xA;&lt;p&gt;This text describes how to write &lt;a href=&#34;../terms/specification.md&#34; class=&#34;link-internal&#34;&gt;specifications&lt;/a&gt; that are enforceable — versioned, canonicalizable, test-mapped, and deterministic. It exists to make specs usable as contracts: readable by humans, actionable by agents, and checkable by tools.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-specification-as-transformer&#34;&gt;The specification as transformer&lt;/h2&gt;&#xA;&lt;p&gt;In the &amp;ldquo;contract as transformer&amp;rdquo; framing:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Inputs&lt;/strong&gt;: a spec artifact (Markdown/plaintext) and its declared versioning/stability metadata&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Constraints&lt;/strong&gt;: normative language and hygiene rules; canonicalization; determinism; conformance mapping&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Outputs&lt;/strong&gt;: a conformance matrix; executable tests/fixtures; machine-readable diagnostics for violations&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;normative-scaffold&#34;&gt;Normative scaffold&lt;/h2&gt;&#xA;&lt;h3 id=&#34;a1-versioning-must&#34;&gt;A.1 Versioning (MUST)&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Version identifiers MUST follow &lt;code&gt;MAJOR.MINOR.PATCH&lt;/code&gt; where:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;MAJOR: backward-incompatible changes.&lt;/li&gt;&#xA;&lt;li&gt;MINOR: backward-compatible feature additions.&lt;/li&gt;&#xA;&lt;li&gt;PATCH: backward-compatible fixes and clarifications.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Each spec artifact MUST declare &lt;code&gt;spec-id&lt;/code&gt;, &lt;code&gt;version&lt;/code&gt;, &lt;code&gt;release-date (UTC, YYYY-MM-DD)&lt;/code&gt;, and &lt;code&gt;stability&lt;/code&gt; in {draft, candidate, stable, deprecated}.&lt;/li&gt;&#xA;&lt;li&gt;Wire formats and behavior linked to a MAJOR version MUST remain stable within that MAJOR series.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;a2-canonicalization-must&#34;&gt;A.2 Canonicalization (MUST)&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Define a single canonical byte sequence for all serializable artifacts.&lt;/li&gt;&#xA;&lt;li&gt;Rules MUST specify:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Field ordering and omission rules.&lt;/li&gt;&#xA;&lt;li&gt;String normalization (Unicode NFC), whitespace policy, and number formatting.&lt;/li&gt;&#xA;&lt;li&gt;Deterministic map/dict ordering.&lt;/li&gt;&#xA;&lt;li&gt;Binary encoding and endianness.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;A reference function &lt;code&gt;CANON(x) -&amp;gt; bytes&lt;/code&gt; MUST be specified and testable (golden vectors).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;a3-error-semantics-must&#34;&gt;A.3 Error Semantics (MUST)&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Errors MUST use a stable schema with fields:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;code&lt;/code&gt; (stable, machine-readable), &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;severity&lt;/code&gt; in {info, warn, error, fatal},&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;where&lt;/code&gt; (component/module), &lt;code&gt;when&lt;/code&gt; (UTC timestamp), &lt;code&gt;correlation-id&lt;/code&gt;,&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;fault&lt;/code&gt; (producer/consumer), &lt;code&gt;retryable&lt;/code&gt; (bool), &lt;code&gt;data&lt;/code&gt; (opaque).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Define error classes:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Input/validation, Canonicalization, Version/feature, State/consistency, I/O/transport, Security/authz.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Each algorithm step MUST specify which errors it can emit and under what preconditions.&lt;/li&gt;&#xA;&lt;li&gt;Ambiguities MUST be errors (not &amp;ldquo;unspecified behavior&amp;rdquo;).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;a4-conformance-mustshould&#34;&gt;A.4 Conformance (MUST/SHOULD)&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Provide a conformance matrix listing each normative &amp;ldquo;MUST/SHOULD/MAY&amp;rdquo; and the actor(s) it binds (producer, consumer, intermediary, validator).&lt;/li&gt;&#xA;&lt;li&gt;Publish an executable conformance suite with:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Golden inputs/outputs, negative cases, fuzz corpus seeds, and determinism checks.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Implementations MUST declare a &lt;code&gt;conformance-profile&lt;/code&gt; referencing matrix rows and test IDs.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;a5-upgrade-path-should&#34;&gt;A.5 Upgrade Path (SHOULD)&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Specify negotiated capabilities:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Feature flags, version ranges, and fallback behavior.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Define deprecation windows:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Announcement, availability of dual-stack behavior, removal.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Specify migration tools/artifacts:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Translators, shims, and data backfills with idempotency guarantees.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;a6-security-and-privacy-notes-must&#34;&gt;A.6 Security and Privacy Notes (MUST)&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Enumerate attacker models and trust boundaries.&lt;/li&gt;&#xA;&lt;li&gt;State confidentiality/integrity expectations for canonical bytes on the wire and at rest.&lt;/li&gt;&#xA;&lt;li&gt;Specify required mitigations (authn/authz, replay protection, input limits, timing channels).&lt;/li&gt;&#xA;&lt;li&gt;Define data retention and minimization requirements.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;a7-interop-and-determinism-must&#34;&gt;A.7 Interop and Determinism (MUST)&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;All observable outputs for the same canonical inputs MUST be bit-for-bit identical across conforming implementations.&lt;/li&gt;&#xA;&lt;li&gt;Randomness MUST be explicitly parameterized and seeded via inputs; otherwise it is forbidden in normative algorithms.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;a8-registries-and-extension-points-mayshould&#34;&gt;A.8 Registries and Extension Points (MAY/SHOULD)&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;If extension points exist, define:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Registration policy, review process, collision handling, and permanence.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Each registry entry MUST include: identifier, status, spec reference, and security notes.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;a9-formal-artifacts-should&#34;&gt;A.9 Formal Artifacts (SHOULD)&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Provide machine-readable schemas (e.g., JSON Schema/ASN.1/IDL) and reference TCK hooks.&lt;/li&gt;&#xA;&lt;li&gt;Include pseudo-code that is executable or trivially transpilable.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;a10-document-hygiene-must&#34;&gt;A.10 Document Hygiene (MUST)&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Each &amp;ldquo;MUST/SHOULD/MAY&amp;rdquo; statement is normative and test-mapped (link to conformance ID).&lt;/li&gt;&#xA;&lt;li&gt;All examples MUST indicate whether they are normative (golden) or informative (illustrative).&lt;/li&gt;&#xA;&lt;li&gt;The spec MUST include a glossary and an explicit non-normative &amp;ldquo;Rationale&amp;rdquo; annex.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>What Makes a Web Platform Robust</title>
      <link>https://emsenn.net/library/domains/engineering/domains/tech/domains/computing/domains/internet/domains/investigating/what-makes-a-web-platform-robust/</link>
      <pubDate>Sun, 13 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://emsenn.net/library/domains/engineering/domains/tech/domains/computing/domains/internet/domains/investigating/what-makes-a-web-platform-robust/</guid>
      <description>&lt;h1 id=&#34;what-makes-a-web-platform-robust&#34;&gt;What makes a web platform robust?&lt;/h1&gt;&#xA;&lt;p&gt;People usually answer this question by pointing at features: scalability, moderation tools, extensibility, performance, user growth. Those matter, but they’re downstream. What I’m interested in here is robustness at a more basic level: what structural properties let a platform keep functioning once it is public, contested, and under pressure.&lt;/p&gt;&#xA;&lt;p&gt;To get at that, I deliberately compared systems that are rarely discussed together: WordPress, Wikipedia, Mastodon instances, authored games like &lt;em&gt;Kingdom of Loathing&lt;/em&gt; or &lt;em&gt;Sunless Sea&lt;/em&gt;, and live-trading dashboards like Fidelity ActiveTrader. These systems differ wildly in purpose and tone, but they all host public interaction where actions have consequences. That turns out to be enough common ground to extract something invariant.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
