WWN Auto-Navigation Parameter
Table of Contents
1. Auto-Navigation Parameter
1.1. Motivation
A webring member may want to send a visitor directly to the next
member rather than landing them at their own site. The auto parameter
triggers a state transition on arrival, converting a coordinate snapshot
into an imperative navigation.
1.2. Parameter Specification
| Parameter | Domain | Description |
|---|---|---|
| auto | \{next, prev, "", nil\} |
Trigger transition on load (default: nil) |
When auto is present, the client executes the corresponding
transition function before rendering, then redirects to the
resulting state URL. An empty value (bare &auto) inherits direction
from d: if d=p, fires next; if d=n, fires prev.
1.3. Fiber Collapse (Opaque Fibers)
auto implies opaque fibers. The transition operates on \(\pi(\mathcal{C})\),
discarding \(\sigma\). The visitor always lands at \(v_0\).
Auto-navigation always redirects to the root of the target member,
regardless of the current DAG position. Every auto collapses the fiber:
This is the opaque fiber model — ring navigation only occurs at roots.
If you're deep in a site's DAG and trigger auto, you get ejected to
the next member's root. The path \(\sigma\) is forgotten.
1.3.1. Interior case
/research/wwn/testing/?w=5&d=p&auto σ collapses: /research/wwn/testing/ → / w updates: 5 → 6 (if boundary crossing) → /?w=6&d=p
You were spelunking; now you're at root.
1.3.2. Boundary case
At a torus boundary, both collapses happen simultaneously:
/research/wwn/?w=-8191&d=n&auto 1. σ collapses: /research/wwn/ → / (fiber projection) 2. w wraps: -8191 → 8191 (through the hole) → /?w=8191&d=n
Maximum topological violence: traverse the torus boundary and collapse the fiber in one click.
Transition on auto=next:
Where \(k' = (k \mod \text{ord}) + 1\), \(w' = w + \mathbf{1}_{k=\text{ord}}\).
1.4. Behavioral Modes
1.4.1. One-Shot (Safe)
The auto parameter is stripped from the resulting URL after firing.
The visitor lands at the next member's site with a clean state URL.
Navigation stops.
Sender → auto=next → Member₂ (clean URL, no auto param)
↓
stop
1.4.2. Self-Preserving (Dangerous)
The auto parameter is retained in the resulting URL. The next
member's page loads with auto=next still present, triggering another
transition. Navigation continues autonomously.
Sender → auto=next → Member₂ (auto=next) → Member₃ (auto=next) → ...
This is a self-propagating traversal. The visitor's browser becomes a crawler.
1.5. Implications by Ring Order
1.5.1. ord > 1: Distributed Relay
Each member site receives one hit per revolution. The request propagates around the ring, incrementing \(w\) at each \(k = \text{ord} \to k = 1\) boundary. Every member becomes an unwitting redirect relay.
site₁ → site₂ → site₃ → ... → site_ord → site₁ (w+1) → site₂ → ...
Effect: Distributes load across members. Still infinite, but slow enough per-member that it may go unnoticed until \(w\) reaches the clamp boundary.
Detection signature: \(t = 0\), \(w\) monotonically increasing, \(d = +\) constant. Textbook linear torus knot — the exact crawler fingerprint the winding number was designed to identify.
1.5.2. ord = 1: Self-Inflicted DDoS
Every hop returns to the sole member. The redirect loop has zero network fan-out. All requests hit the same origin.
you → you (w+1) → you (w+2) → you (w+3) → ...
Effect: A tight loop bounded only by redirect latency and the browser's redirect limit (Chrome: 20, Firefox: 20, RFC 2068 suggestion: 5). Each browser that opens the link becomes an independent attack vector — against yourself.
Time to boundary (assuming 100ms per redirect, \(w_{\max} = 8191\)):
\begin{equation} T = \frac{(8191 - w_0)}{1} \times 0.1\text{s} \approx 13.7 \text{ minutes} \end{equation}At which point \(w\) wraps to \(-8191\) and the loop continues in the other direction. The period of the full oscillation across \(\mathbb{Z}_{16383}\) is approximately 27 minutes per browser tab.
Summary: You invented a way to DDoS yourself by being the only member of your own webring.
1.6. Pathological Scenarios
1.6.1. Chain Letter Propagation
A user shares a URL with auto=next intact. Each recipient's browser
fires the transition, generating a new URL with incremented state,
which may itself be shared. The winding number becomes a proxy for
social propagation depth.
1.6.2. Amplification via Sharing
On ord=1, sharing a self-preserving auto=next link to \(N\) people
opens \(N\) concurrent redirect loops against your own site. This is
unintentional reflection amplification where the attacker, reflector,
and victim are all the same person.
1.6.3. Race Condition at Clamp Boundary
If \(w = w_{\max}\) and two auto-navigations fire concurrently, behavior at the clamp boundary depends on whether wrapping is atomic. URL-encoded state avoids server-side races (state is in the client), but the semantic discontinuity (\(w: 8191 \to -8191\)) may confuse analytics.
1.7. Recommended Design
function handleAutoNavigation(params) { const auto = params.get('auto'); if (!auto) return null; // One-shot: strip auto param before redirect const nextState = transition(currentState, auto); const nextUrl = stateToUrl(nextState); // CRITICAL: do not preserve auto param // Preserving creates self-propagating traversal nextUrl.searchParams.delete('auto'); return nextUrl; }
1.7.1. Safeguards (if self-preserving mode is ever desired)
- TTL parameter:
auto_ttl=Ndecrements on each hop. Navigation halts at \(N = 0\). - Rate limiting: Server-side tracking of redirect frequency per session.
- Winding budget: Halt auto-navigation when \(|w - w_0| > \Delta w_{\max}\).
- Browser redirect limits: Browsers cap redirects at ~20. This is not a safeguard; it's a symptom that something has gone wrong.
1.8. State Diagram
stateDiagram-v2 [*] --> Landing: URL with auto=next state "One-Shot Mode" as OneShot { Landing --> Transition: fire transition Transition --> StripAuto: remove auto param StripAuto --> Redirect: clean URL Redirect --> [*]: visitor lands, navigation stops } state "Self-Preserving Mode (DANGEROUS)" as Danger { Landing --> Transition2: fire transition Transition2 --> KeepAuto: retain auto param KeepAuto --> Redirect2: URL with auto=next state "ord > 1" as Multi { Redirect2 --> NextMember: hit next member NextMember --> Transition2: auto fires again } state "ord = 1 (SELF-DDOS)" as Solo { Redirect2 --> Self: hit yourself Self --> Transition2: auto fires again } } note right of Danger Self-propagating traversal. Each redirect triggers the next. Terminates only at browser redirect limit (~20 hops) or clamp boundary wrap. end note
1.9. Classification via Torus Signature
The auto-navigation parameter, ironically, produces the exact winding signature the WWN system was designed to detect and classify:
| Behavior | \(w\) pattern | \(t\) | Torus class |
|---|---|---|---|
| Human browsing | low, oscillating | >0 | low-order, non-monotonic |
auto=next one-shot |
\(w_0\) or \(w_0 + 1\) | 0 | point or single step |
auto=next preserved |
monotonic increasing | 0 | $(1, \text{ord})$-torus knot |
auto=prev preserved |
monotonic decreasing | 0 | $(1, -\text{ord})$-torus knot |
| Confused bot | chaotic | >>0 | dense, high-genus approximation |
The feature designed to assist navigation is indistinguishable, by the system's own classification metrics, from a malicious crawler.
1.10. References
- WWN Overview
- Winding Ring Spec
- Sheaf Model — fiber collapse context
- Test Procedures — auto transition verification
