Files
Piik/docs/todo.md
T

103 lines
6.3 KiB
Markdown

# Current TODO Ledger
Last reviewed: 2026-09-01
Only **Now** is executable. Observations, old branches, experiments, and parked
topics are not implementation authority.
## Now
No executable product work is currently accepted. Items below remain parked
until their stated boundary is met.
## Parked Product Work
1. **Broader quality optimization.** Same-edge connection regeneration is now
part of the bounded local convergence path. Weighted/global optimization,
parent-wide prediction, startup-limited inference, complete cross-clone
source isolation, and alternative SFU policies remain unaccepted. Reopen only
from exact path evidence; do not add a score, all-pairs probe, periodic
rebalancer, or ordinary SFU preference. Validate whether a quality move merely
shifts residual shared-source pressure to the new parent's siblings before
widening it. Preserve the accepted profiles, bitrate ceilings, endpoint
capacity, degradation preferences and LiveKit representations unless a
measured gain is large enough to justify the quality, resilience,
compatibility and maintenance cost through a new accepted decision.
2. **Startup codec budget.** Reconcile the bounded Auto codec probe with the
first-frame target from measured Browser evidence; do not silently weaken
Auto or move an unproved result into the availability path. Validate whether
H.264 qualification can choose a slower VP8 fallback under mixed GPU/CPU load
before adding comparative or dual-codec probing.
3. **Browser encoded-frame reuse.** After the current Browser experience release,
gate one narrow video-edge adapter that preserves signaling, routing,
ICE/TURN, DTLS, DataChannel congestion control, upstream WebRTC playback and
SFU fallback while reusing one encoded representation across every compatible
P2P descendant. First determine whether current Browser APIs or a mature
module can preserve per-edge adaptation without re-encoding; do not accept a
standard-WebRTC weak-edge fallback as the default merely because it is easy.
Compare one layered SVC encode with a small room-wide simulcast set before any
per-edge encoder; select layers from current edge capacity rather than
classifying Viewers into permanent strong/weak groups.
A strong/weak two-child gate must keep the strong path at full quality,
recover the weak path without globally lowering the shared representation,
bound queues and temporary copies, and measure CPU, bytes, latency, keyframe
recovery, A/V timing and supported mobile Browsers. Reuse existing quality
evidence and route operations; add no custom score, global worst-viewer rule,
periodic ladder or unproved codec representation.
4. **Control-plane resource fairness.** Calibrate one deployment-wide LiveKit
control queue and simple HTTP/WebSocket ingress budgets before implementation;
prove a self-hosted stale-token revocation boundary before independently
releasing subscription egress; do not introduce accounts, polling, risk
scoring, or an independent policy framework.
5. **Client ownership.** Extract media-session owners from the Host/Viewer pages
only alongside reachable behavior work. File length alone does not authorize
a page rewrite; Host diagnostic presentation is already coalesced without
delaying media evidence or route control.
6. **C=3 structural intent retention.** Revisit multiple simultaneous one-shot
Host-root convergence intents only with an exact C=3 reproduction; do not add
periodic balancing or another topology queue for the default path.
7. **Mobile Viewer lifecycle.** Run Android Chrome and iOS Safari matrices for
autoplay, background audio, foreground recovery, lock/page reclamation,
rotation, network migration, and relay survival.
8. **Representative network acceptance.** Complete public-network direct,
Browser relay, SFU, recovery, Pause/Resume, screen-audio, real-game A/V,
two-room SFU, 20-Viewer endurance, and all-UDP-blocked bounded failure.
Validate LiveKit Server 1.13.6 simulcast retransmission under controlled loss
and correlate any remaining SFU freezes with publisher encoding counts before
changing Dynacast or representation policy.
9. **Client-input security review.** Audit HTTP/WebSocket schema, auth,
authorization, rate/body/resource bounds, errors, logs, and secrets without
adding a parallel security framework.
10. **Public-server package.** Package the exact Web/signaling, STUN/SFU, proxy,
secrets, health, and recovery contract for a user-owned server.
11. **Fully local package.** Package Host capture, application server, and local
state for Windows/macOS/Linux with honest TLS, gateway, NAT, and firewall
limits.
12. **Native Host and shared encode.** Revisit Windows first only after capture,
hardware encode, audio, RTP feedback, resources, packaging, licensing, and
Browser interoperability are proved.
13. **Platform output.** System/tab mirroring needs no product adapter, while
Remote Playback, default Cast and AirPlay do not provide a portable live
`MediaStream` output contract. Reopen only for a registered custom receiver
acting as an ordinary Viewer after a named Browser and physical receiver
pass the [platform-output gate](./research/platform-output.md).
14. **NAT inference and predictive candidates.** The default-off Host-only
connection-local experiment is accepted under
[ADR-0009](./adr/0009-connection-local-nat-prediction-experiment.md). Keep
multi-STUN observations and injected candidates additive and diagnostic;
do not make them a participant-wide NAT label, hard candidate skip, route
score, or SFU preference. Validate target-network success, candidate
direction, and bounded resource impact before enabling it by default or
extending it to Viewer relay edges.
15. **Unresolved route-state ownership claims.** Reopen lower-revision
reauthentication, active SFU failure during an unrelated prepare, and
multi-child relay-evidence ownership only from an exact current-wire
reproduction. Do not add a second revision namespace, parallel failure
state, or generalized evidence map from static possibility alone.
## Decision Needed
- Choose the repository and distribution license before public release or
package distribution. GPL/AGPL implementations remain research-only until
then.