WWN Sheaf Model: DAG Fibers over the Ring
Table of Contents
Motivation
The base WWN contract models navigation across sites (the ring). But within each site there is a directed acyclic graph of pages rooted at the landing page. A visitor's full trajectory lives in the total space of a fiber bundle over the ring:
\[E \xrightarrow{\pi} \mathbb{Z}_{\text{ord}}\]
where the fiber \(\pi^{-1}(k) = G_k\) is the DAG rooted at site \(k\).
Ring navigation only occurs at the root. Descent into a site's DAG is orthogonal to the ring protocol.
Extended State
\[\mathcal{C} = \langle \text{ord}, k, w, t, d, \; \sigma \rangle\]
| Parameter | Domain | Description |
|---|---|---|
| ord | \(\mathbb{N}^+\) | Order of ring (from manifest) |
| k | \(\mathbb{Z}_{\text{ord}}\) | Ring position (1-indexed) |
| w | \(\mathbb{Z}\) | Winding number. Omit if 0. |
| t | \(\mathbb{N}\) | Turning count. Omit if 0. |
| d | \(\{n\}\) | Direction. Omit for +. d=n for -. |
| \(\sigma\) | Path in \(G_k\) | Root-to-current path in site DAG |
The path \(\sigma = (v_0, v_1, \ldots, v_m)\) where \(v_0\) is always the root (landing page). When \(\sigma = (v_0)\), the visitor is at the root and ring navigation is available.
Depth
\[\text{depth}(k) = |\sigma| - 1\]
The visitor's full position is a point in \(\mathbb{Z}_{\text{ord}} \times \mathbb{N}\) but the second axis has site-dependent topology.
Navigation Modes
Mode Constraints
| Mode | Guard | Actions available | State change |
|---|---|---|---|
| Ring | \(\sigma = (v_0)\) | next, prev | \(k, w, t, d\) update |
| Descent | edge \((v_m, u) \in G_k\) | follow link | \(\sigma \gets \sigma \cdot u\) |
| Ascent | \(\lvert\sigma\rvert > 1\) | back toward root | \(\sigma \gets \sigma_{[0:m-1]}\) |
Invariant: ring transitions require \(\lvert\sigma\rvert = 1\). A visitor must ascend to the root before moving to the next site.
Site DAG Structure
Each member site \(k\) publishes a DAG \(G_k = (V_k, E_k)\):
DAG Properties
- Rooted: exactly one root \(v_0\) per site (the landing page)
- Acyclic: no page links back to an ancestor (DAG, not arbitrary graph)
- Finite: each site has a bounded page count
- Heterogeneous: \(|V_k|\) and structure vary per site
Sitemap as Manifest Extension
The ring manifest currently lists members by URL. Extended with DAG:
# ring.toml — member entry [[members]] k = 3 root = "https://example.com/" [[members.pages]] path = "/about" parent = "/" [[members.pages]] path = "/posts" parent = "/" [[members.pages]] path = "/posts/winding-numbers" parent = "/posts"
The DAG is reconstructed from parent edges. If no pages are declared,
the site is a single-node DAG (root only), collapsing to the base contract.
URL Encoding
Opaque Fibers (recommended)
The ring protocol stays unchanged. The site's own URL path is \(\sigma\):
https://member-3.example.com/posts/winding-numbers?k=3&w=1
└─── σ ──────────────┘ └ ring state ┘
At root:
https://member-3.example.com/?k=3&w=1
The ring footer appears only when \(\sigma = (v_0)\), i.e., on the root page.
Inner pages may display a "return to ring" link pointing to /?k…&w=…=.
Transparent Fibers (optional)
If the ring tracks depth:
https://wal.sh/research/wwn/?k=3&w=1&sigma=posts/winding-numbers
This reveals traversal depth to analytics but couples the ring protocol to site-internal structure.
Behavioral Classes (Extended)
The \((w, t)\) plane from winding-ring-spec.org gains a depth axis:
| Class | \(w\) | \(t\) | depth | Pattern |
|---|---|---|---|---|
| Passive Observer | \(= 0\) | \(= 0\) | \(= 0\) | Landed on root, left |
| Shallow Browser | \(= 0\) | \(= 0\) | \(> 0\) | Explored one site's pages |
| Linear Explorer | \(\geq 1\) | \(= 0\) | \(= 0\) | Ring traversal, roots only |
| Deep Explorer | \(\geq 1\) | \(= 0\) | \(> 0\) | Traverses ring AND descends |
| Spelunker | \(= 0\) | \(= 0\) | \(\gg 0\) | Deep in one site, never leaves |
| Backtracker | any | \(> 0\) | any | Reversed ring direction |
| Oscillator | any | \(\gg \lvert w\rvert\) | any | High turns, low net winding |
| Completionist | \(\geq 1\) | any | \(= \max(G_k)\) | Full depth at every site visited |
Phase Space Visualization
Formal Properties
Projection
The projection \(\pi: E \to \mathbb{Z}_{\text{ord}}\) forgets the DAG path:
\[\pi(\text{ord}, k, w, t, d, \sigma) = (\text{ord}, k, w, t, d)\]
This recovers the base WWN contract. All ring-level analysis (winding, turning, behavioral class at ring level) operates on the projection.
Section
A section \(s: \mathbb{Z}_{\text{ord}} \to E\) assigns each ring position a specific page. The trivial section maps every \(k\) to its root:
\[s_0(k) = (\text{ord}, k, w, t, d, (v_0^k))\]
A non-trivial section might map each site to its "most interesting" page (e.g., for generating preview cards or OG images).
Fiber Product
Two visitors at the same ring position but different depths occupy different points in \(E\):
\[\pi^{-1}(k) = \{ \sigma \mid \sigma \text{ is a root-path in } G_k \}\]
The cardinality \(|\pi^{-1}(k)|\) equals the number of nodes in \(G_k\).
Compatibility with Base Contract
This model is a conservative extension of the base WWN contract:
- When all sites are single-page (\(|V_k| = 1 \;\forall k\)), \(\sigma\) is always \((v_0)\) and the sheaf model collapses to the base ring
- The ring footer contract is unchanged — it only renders at root
- Existing URLs without \(\sigma\) are valid (implies root)
- The turning count \(t\) is unaffected by intra-site navigation
The sheaf structure is invisible to ring participants who don't declare pages.
Open Questions
[ ]Should intra-site back-button count as a "turn" for \(t\), or only ring-level reversals?[ ]Breadcrumb: show \(\sigma\) as path, or just depth indicator?[ ]Cross-site DAG links (site 3's page links to site 5's page) — teleportation on the cylinder?[ ]Maximum depth for behavioral analytics? Cap at depth 5?[ ]Does the ring manifest need to enumerate all DAG nodes, or just roots?
