From 012d151fe84e011f8c2314208307bc0d9fa8a136 Mon Sep 17 00:00:00 2001 From: tegwick Date: Mon, 15 Jun 2026 01:38:02 +0200 Subject: [PATCH] =?UTF-8?q?spec(SHARD-WP-0005=20T6):=20orthogonal=20core?= =?UTF-8?q?=20spectra=20+=20implied=20positions=20+=20interaction=20subset?= =?UTF-8?q?=20(=C2=A76.5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes D-1. ~6 independent core axes (substrate, write-granularity, opacity, envelope, access, liveness) with the rest implied via published rules that forbid impossible profiles; a small named axis-interaction table is the degradation contract (proof obligation behind 'core logic written once'). Co-Authored-By: Claude Opus 4.8 --- spec/CoreArchitectureBlueprint.md | 45 +++++++++++++++++++ .../SHARD-WP-0005-architecture-hardening.md | 2 +- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/spec/CoreArchitectureBlueprint.md b/spec/CoreArchitectureBlueprint.md index 753b37d..e9ee2d0 100644 --- a/spec/CoreArchitectureBlueprint.md +++ b/spec/CoreArchitectureBlueprint.md @@ -262,6 +262,51 @@ only via export→files (I-12). - **Absence is first-class** — the profile must express *can't* cleanly (Oddmuse floor), so degradation paths are explicit, never guessed. +### 6.5 Orthogonal core, implied positions, and the interaction subset + +Fifteen independent ordinal axes is *descriptively* right but would be *operationally* a mess +if treated as fifteen free dimensions: the axes are **not orthogonal**, and a degradation +function over all 15 jointly is the flat-checklist problem returning in higher dimensions +(review D-1). Three rules tame it. + +**(a) A small orthogonal core; the rest are implied.** Most axes are *correlated* and collapse +to a few independent choices. The **core axes** an adapter must independently declare: + +1. **Substrate** → drives attachment-mode, history, merge, and native-query positions together + (git-IS-store ⟹ history=git-native ⟹ merge=git/text ⟹ query=build-your-own-index; + relational-DB ⟹ direct-DB attach ⟹ DB-version-row history ⟹ DB query). +2. **Write granularity** → drives addressing granularity and the overlay/patch shape. +3. **Content opacity** → drives translation and (where encrypted) collapses native-query. +4. **Operational envelope** → drives freshness mode (§8.8) and rebuild expectations (§8.7). +5. **Access grant** → independent (authz, L5). +6. **Computational/liveness** → independent (projection kind, §8.5). + +The remaining axes are **implied/derived** from these via published implication rules; an +adapter *may* override an implied position, but the default is computed, not hand-set. This +turns ~15 free dimensions into ~6 independent ones plus derivations — fewer things to get +wrong, and impossible combinations become unrepresentable. + +**(b) Implication rules forbid impossible profiles.** E.g. `attachment=git-IS-store ⟹ +history≥git-native`; `opacity=encrypted-whole-shard ⟹ native-query=none ∧ translation≤opaque`; +`merge=native-CRDT ⟹ history=CRDT-log ∧ envelope=realtime`. A profile that violates an +implication is rejected at registration — capability-as-data (I-3) with integrity constraints. + +**(c) The degradation function reads a *named, small* interaction subset — not all pairs.** +"No per-backend code" is only credible if we say *which* axis interactions the generic logic +actually consults. They are: + +| Operation | Axes consulted (jointly) | +|-----------|--------------------------| +| **write / overlay-apply** | write-granularity × merge-model × history × access-grant | +| **transclude / address a span** | addressing-granularity × write-granularity × identity-vs-placement | +| **project / cache** | operational-envelope × computational-liveness × content-opacity | +| **query** | native-query × content-opacity (encrypted ⇒ derive-index-or-none) | +| **translate** | translation × content-opacity × structure | +| **federate** | substrate × history × merge (per the §8.3 model) | + +Everything else is a single-axis check. This table *is* the degradation contract: it is small, +enumerated, and testable — the proof obligation behind "core logic written once." + --- ## 7. Top waist — the Wiki Page Model (L2) diff --git a/workplans/SHARD-WP-0005-architecture-hardening.md b/workplans/SHARD-WP-0005-architecture-hardening.md index f33d4c1..c4cf1bd 100644 --- a/workplans/SHARD-WP-0005-architecture-hardening.md +++ b/workplans/SHARD-WP-0005-architecture-hardening.md @@ -129,7 +129,7 @@ operational expectation). ```task id: SHARD-WP-0005-T5 -status: todo +status: done priority: medium state_hub_task_id: "b031715c-00d0-4a0a-99f1-4e74a236d04b" ```