generated from coulomb/repo-seed
spec(SHARD-WP-0005 T6): orthogonal core spectra + implied positions + interaction subset (§6.5)
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 <noreply@anthropic.com>
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user