Zeayii.Vexo.Assembly.Core 0.0.23

dotnet add package Zeayii.Vexo.Assembly.Core --version 0.0.23
                    
NuGet\Install-Package Zeayii.Vexo.Assembly.Core -Version 0.0.23
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Zeayii.Vexo.Assembly.Core" Version="0.0.23" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Zeayii.Vexo.Assembly.Core" Version="0.0.23" />
                    
Directory.Packages.props
<PackageReference Include="Zeayii.Vexo.Assembly.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Zeayii.Vexo.Assembly.Core --version 0.0.23
                    
#r "nuget: Zeayii.Vexo.Assembly.Core, 0.0.23"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Zeayii.Vexo.Assembly.Core@0.0.23
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Zeayii.Vexo.Assembly.Core&version=0.0.23
                    
Install as a Cake Addin
#tool nuget:?package=Zeayii.Vexo.Assembly.Core&version=0.0.23
                    
Install as a Cake Tool

Zeayii.Vexo.Assembly.Core

Organization: zeayii
Module Type: Core Orchestration Layer
Target Framework: net10.0

1. Purpose

Zeayii.Vexo.Assembly.Core is the orchestration backbone of assembly flow. It does not parse protocol internals or container bytes. Instead, it coordinates:

  1. descriptor input,
  2. provider preparation output,
  3. manifest extraction output,

into a deterministic incremental stream of ExecutionTask frames.

2. Responsibilities

  • Provide unified assembly entry points (single-shot + incremental).
  • Drive provider preparation stage and content-key obtain stage.
  • Orchestrate DASH/HLS adapters and polling state transitions.
  • Execute snapshot validation, stability validation, and delta building.
  • Consume immutable AssemblyOptions snapshot consistently.

3. Non-Responsibilities

  • No MPD/M3U8 parsing internals (Manifest module owns this).
  • No MP4/WebM byte-level parse/remux (Media module owns this).
  • No vendor-private business logic (Provider/private modules own this).
  • No CLI argument mapping (host application owns this).

4. Layering and Dependency Direction

Vexo / Host
  -> Core (this module)
    -> Manifest
      -> Media
        -> Abstractions

Core exposes orchestration behavior only and keeps protocol internals behind adapters.

5. Public Usage

Use DI registration and resolve SerialTaskAssembler:

services.AddTaskAssemblyCoreRuntime(assemblyOptions);

var assembler = provider.GetRequiredService<SerialTaskAssembler>();
await foreach (var frame in assembler.AssembleFramesAsync(descriptor, context, ct))
{
    if (frame is WorkUnitFrame workUnitFrame)
    {
        // workUnitFrame.WorkUnit / workUnitFrame.Delta / workUnitFrame.LifecycleState
    }
}

6. Main Execution Flow

  1. SerialTaskAssembler resolves provider via TaskAssemblyOrchestratorResolver.
  2. Runs PrepareAsync in streaming mode (no full buffering).
  3. For each preparation context, performs one extraction round (coordinator-based):
    • format sniffing,
    • DASH/HLS adapter extraction,
    • filter pipeline,
    • ExecutionTask build.
  4. Applies snapshot/stability validation and delta build.
  5. Continues or terminates based on refresh decision.

6.1 Group Timeline Finalization (New)

  • After deduplication, the filter chain runs GroupTimelineFinalizeFilter to compute:
    • StartOffset (session-accumulated offset) per StreamGroup;
    • Duration (primary media duration) per StreamGroup.
  • Offset state is kept in assembly session (TaskAssemblyUnitSession.AccumulatedOffset) and carried across rounds.
  • Text subtitles receive group offset; container subtitles do not receive text-style shifting to keep execution-side container concat semantics intact.
  • Per-round RoundAccumulatedDuration is committed by adapters at round completion and becomes the next round's start baseline.

7. Design Principles

  • Streaming-first: preparation is yielded as it arrives.
  • One-way dependency: no upward coupling into host/private code.
  • State centralization: polling and lifecycle state are managed in Core.
  • Extensible-private logic: provider extension points without polluting public pipeline.

8. Performance and AOT

  • Explicit types + DI delegates; no runtime reflection dependency.
  • Singleton registrations for high-frequency resolvers/adapters.
  • Iterative polling flow without unnecessary intermediate materialization.

9. Collaboration with Other Modules

  • Abstractions: contracts, models, filters, validators.
  • Manifest: protocol extraction, refresh decision, protocol filters.
  • Offline: sample orchestrator and default assembly wiring.

10. Commercial Release Checklist

  • Freeze and document AssemblyOptions defaults.
  • Run incremental assembly regression on real-world vectors.
  • Keep private provider logic isolated from core orchestration path.

11. License

This module follows the repository root license.

12. Visibility Boundary (public / internal)

Core intentionally exposes only:

  • SerialTaskAssembler as the runtime assembly entry point.
  • ServiceCollectionExtensions as the DI composition entry.

All orchestration collaborators (adapters, resolvers, round requests) are internal because:

  • the execution layer should not depend on Core internals,
  • public API must represent capabilities, not wiring details,
  • Core internals can evolve without forcing external breaking changes.
Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.0.23 131 3/14/2026
0.0.22 116 3/14/2026
0.0.21 117 3/14/2026
0.0.20 123 3/14/2026
0.0.19 113 3/13/2026
0.0.18 120 3/13/2026
0.0.17 116 3/13/2026
0.0.15 116 3/12/2026
0.0.14 118 3/12/2026
0.0.13 120 3/12/2026
0.0.12 121 3/2/2026
0.0.11 119 3/1/2026
0.0.10 123 3/1/2026
0.0.9 124 2/28/2026
0.0.8 128 2/26/2026
0.0.7 125 2/26/2026
0.0.6 121 2/26/2026
0.0.5 118 2/26/2026
0.0.4 122 2/26/2026
0.0.3 127 2/25/2026
Loading failed