Quikcast standalone core: CONDITIONALLY FEATURE-COMPLETE

No genuine core gap identified. Ready for performance profiling within the supported formats and deployment contract. This is a feature audit, not production certification.

Accepted assumptions

Unix daemon with a draining log collector; external TLS and private administration; static restart-based configuration and ephemeral HLS; supported encoded-media mappings; whole-object MPEG-TS HLS clients that work without Range; bounded capacity with connection headroom. Broad target-player/proxy validation remains open.

Source: current working-tree code and existing tests/captures · audit date 2026-10-07 · 49 unit/property/concurrency + 20 transport integration tests pass. Older client captures do not certify this exact build.

Completeness matrix — areas, evidence, limitations and actions
AreaStatusEvidenceLimitationAction
Source ingestCOMPLETEsrc/ingest.rs; src/protocol.rs; streaming: raw/framed/Expect/hostile/inactivity testsPUT raw/Content-Length/chunked; SOURCE raw ICE/1.0/HTTP; static configured mounts; no takeoverKeep supported encoder regression gates.
Source ownership/reconnectCOMPLETEsrc/mounts.rs; simultaneous_source_claims_have_one_owner; old_cleanup_cannot_release_successor; delayed_admin_target_cannot_kill_successorListeners belong to one generation and terminate on source loss; reconnect can reject while retired references consume reservationsNo required change.
Continuous GET/HEAD and accountingCOMPLETEsrc/server.rs; src/listener.rs; src/transport.rs; fanout, idle disconnect, native management TCP testsPublic unauthenticated listeners; HTTP/1.0 close-delimited audio; HEAD has no lease; socket writes are not playback proofValidate intended player/proxy settings.
Slow consumers and isolationCOMPLETEstopped_socket_does_not_backpressure_source_or_healthy_listener; ring eviction/property tests; ICY integrationA slow peer is disconnected, never replayed across generations; finite ring is not archival bufferingKeep explicit stopped-socket test, not only short load runs.
MP3COMPLETE_WITH_LIMITATIONsrc/media.rs; src/ring.rs; milestone-5 media-delivery-final/report.jsonLayer III MPEG-1/2/2.5 indexed bitrate joins; no free-format/layer I/II join support; decoder reservoir recovery possibleAccept declared subset; certify target players.
AAC ADTSCOMPLETE_WITH_LIMITATIONframe_headers_and_split_boundaries; adts_passthrough_and_frame_aligned_late_join; six-case decode captureaudio/aac and audio/aacp; no raw AAC/LATM/LOAS/PCE join; AACp fixture proves AAC-LC, not HE-AAC certificationAdd HE-AAC evidence only if required by a target workflow.
Ogg VorbisCOMPLETE_WITH_LIMITATIONsrc/media/ogg.rs; ogg_late_join_headers_chains_and_corruption_isolation; decode captureSequential single logical streams/chains; bounded init; no multiplexing or comment rewriting; container validation onlyAccept supported mapping; validate live players.
Ogg OpusCOMPLETE_WITH_LIMITATIONreal_streams_split_headers_pages_and_chains; corruption_truncation_multiplex_and_header_ceiling; decode captureMono/stereo mapping family 0; no multichannel families; ICY suppressedAccept supported mapping.
ICY metadata and update ingressCOMPLETE_WITH_LIMITATIONsrc/icy.rs; src/listener.rs; icy_titles_authentication_clearing_and_generation_reset; icy_boundary_inside_single_ingress_allocation; milestone-4 verification16,000 audio-byte interval; UTF-8 title <=1,024 bytes; semicolon/control rejected; apostrophe/backslash verbatim per reference; Ogg in-band onlyRetain narrow client compatibility and clarify restrictions in operator guide.
HLS typed production/publicationCOMPLETEsrc/hls/http.rs; src/hls/store.rs; typed_hls_upload_publication_and_independent_lifecycles; revision-race testsExternal producer supplies TS plus typed descriptions; authenticated internal producer API, separate from native inspectionNo continuous/HLS conversion.
HLS storage/lifecycle/visibilityCOMPLETEHLS budget, immutable-backing, stale-generation, retention, discontinuity, inspection and shutdown testsMemory only; end retains final playlists, delete/grace/final references reclaim; staging expires; bounded capacity can reject new workProducer must recover/repopulate after process restart.
HLS public playback/cacheCOMPLETE_WITH_LIMITATIONsrc/hls/http.rs; milestone-6/http-playback-final-source/report.json; GET/HEAD/ETag/CORS testsMPEG-TS whole objects; Range returns 416; recorded FFmpeg playback disables seeking/persistence; generic browser/native defaults unprovenCertify target HLS players. Reclassify Range only if an actual required player cannot operate.
Native management APICOMPLETEsrc/management.rs; docs/management-api.md; authentication/error/inspection/pagination tests; real source/listener control TCP testsEphemeral live pages, max200; lexical random IDs; asynchronous disconnect; observational snapshots; nested mount paths supportedOperators re-read state after actions and restart.
Admission and limitsCOMPLETE_WITH_LIMITATIONConfig validation; global/local semaphores; concurrent_mount_admission_never_exceeds_limit; HLS capacities/budget failure testsTCP/handshake exhaustion closes before routing; domain exhaustion returns503; admin/public share global capacity; allocation budgets are not RSS capsReserve connection headroom and size OS/proxy resources.
Accepting/draining/shutdownCOMPLETEsrc/lifecycle.rs; src/server.rs; drain commit-race tests; three drain TCP tests; docs/drain-lifecycle-review.mdOne-way drain, explicit shutdown; admitted work can finish after drain; HLS new mutations blocked, existing objects playable; no automatic drain deadline/resumeUse documented admission boundary and explicit shutdown.
Health/readinessCOMPLETEserver routing; drain_preserves_streams_inspection_health_and_administrative_controlsProcess readiness checks acceptance, not encoder availability or end-to-end audio; management listener closes during shutdownExternal monitoring checks source/playback separately.
Metrics/stats/loggingCOMPLETE_WITH_LIMITATIONsrc/metrics.rs; src/logging.rs; stopped_sink_drops_bounded_records_without_waiting; native stats testsFixed labels; structured tracing fields, not promised JSON/durable audit; lossy4096-byte records; Unix nonregular stdout requiredProvide draining collector; use metrics for aggregate monitoring.
Proxy/network deploymentCOMPLETE_WITH_LIMITATIONsrc/client.rs; forwarding_contract; docs/architecture.md and management-api.mdExternal TLS/private admin; explicit trusted XFF IP/CIDR; no HTTP/2/native TLS; raw SOURCE may need TCP pass-through; live buffering/timeouts must be configuredValidate actual proxy; never publicly forward admin indiscriminately.
Static configuration/startupCOMPLETEsrc/config.rs; src/hls/config.rs; configuration tests; config/quikcast.example.tomlBounded TOML; deny unknown fields; secret-file support; restart to alter settings; Unix CLI logging prerequisiteNo runtime reload required for current scope.
Security boundariesCOMPLETE_WITH_LIMITATIONsrc/auth.rs; protocol canonicalization/duplicate rejection; credential/proxy/hostile/HLS tests; no secret Debug/response fieldsTLS and private exposure external; no RBAC/rate-limiting system; source/HLS secret reuse forbidden; management secret separation is operator-enforcedUse generated distinct secrets, restrictive files and trusted ingress.
Fifteen-step operator workflowCOMPLETE_WITH_LIMITATIONImplementation paths and workflow evidence map in audit report; native TCP controls and drain testsViable through static TOML/HTTP/signals/restart; integrated real-client/proxy rehearsal outstandingPerform scoped real traffic rehearsal; no product feature missing.
Real encoder/player compatibilityCOMPLETE_WITH_LIMITATIONHistorical curl/FFmpeg/Liquidsoap captures; six MIME decode cases; user-reported BUTT session, README local setupCaptures predate management/drain; no sealed BUTT/version/playback capture; decode success is not universal player certificationRepeat target encoder/player checks on selected profiling baseline.
Architecture/resource ownershipCOMPLETEConcrete runtime/mount/generation/HLS types; leases, JoinSet, bounded ring and stores; source reviewSynchronous lock/scan cost bounded but needs profiling; no material refactor prerequisite foundMeasure before changing architecture.
Performance architectureCOMPLETE_WITH_LIMITATIONBytes sharing, cursor ring, flush gate, immutable charged HLS; milestone-3 load/resource evidenceNo zero-copy or production capacity claim; current management/drain build lacks new dedicated-host mixed workload measurementsProceed to reproducible profiling, preserving correctness gates.
Operator documentation consolidationOPTIONALREADME; docs/protocol.md; milestone-2/4/5/6; management API; drain reviewREADME still describes RadioPlatform identity; historical proposal/remaining-work statements can mislead; complete guide distributed across milestonesConsolidate standalone runbook/navigation and mark historical statements; documentation completion, not a missing server feature.
Additional Icecast compatibilityOPTIONALCaptured 2.4.4/2.5.0 behavior and supported producer testsNo demonstrated client need for XML admin parity/status-json/directory/config syntax/all historical quirksAdd only for concrete supported-client requirement.
Operational tooling/enhancementsOPTIONALNative HTTP API/static restart workflow already sufficientNo CLI/dashboard/frozen pages/persistent history/audit store/reload/rotationSeparate optional backlog; no new core milestone justified.
Relays/fallback/takeover/distributionDEFERREDExplicit scope boundary; current duplicate-source policyNo relays, fallback, replacement/priorities/failover/chaining/edge-originRemain deferred; future relay maps continuous remote stream to local continuous mount only.
Additional media/HLS/deployment featuresDEFERREDExplicit intended identity and tested subsetsAdditional codecs, CMAF/fMP4/raw-AAC HLS, LL-HLS/encryption, native TLS/PROXY protocolRemain deferred unless actual target workflow changes scope.
Platform integration and conversionDEFERREDIndependent continuous and HLS modules; runtime dependencies only Rust server librariesNo RadioPlatform integration, DB/accounts, AutoDJ, encode/decode/transcode/remux/media processesPreserve boundary; conversion/AutoDJ remain outside identity.

Full audit report