Skip to content

Epic: Pre-Wave-5 consistency reconciliation pass #49

Description

@CameronBrooks11

Holistic consistency-reconciliation pass between the Wave-4 convergence and the Wave-5 SDK extraction (#45). Output of the six-subagent pre-extraction consistency audit (2026-06-24; full note working/provider-sdk-wave5-prereconciliation-audit.md). Gates #45 — the SDK lift starts only after Tier-0 is frozen and Tier-1 lands.

The audit confirmed D1–D3 (design addendum) but found three stated assumptions to be ground-truth-wrong and surfaced gates the addendum doesn't cover:

  • ❌ "all three providers on the DeviceAdapter descriptor" — bread has no struct and no adapter_for (triplicated if/else dispatch); descriptor + switch is net-new (→ bread#69).
  • ❌ "adopt sim's device_common (richest) as the basis" — basis is the union (sim ∪ bread's 5-type value-makers; sim can't emit INT64/UINT64).
  • ❌ "Wave 4 trailing convergence items (non-prerequisite, pre/post-SDK) #44 items are trailing consolidation" — they're net-new migrations (logging onto sim; config away from sim).
  • ➕ New gates: G3 DeviceSpec impedance, G4 min_timestamp silent-regression, G5 quality hook.

Tier 0 — design freeze (paper; gates Tier 1 & the lift)

Tier 1 — per-provider pre-extraction reconciliation (code; standalone PRs)

Tier 2 — hygiene (mechanical; do immediately, parallel, no design dependency)

  • H1 setup-vcpkg → v2.2 b2d9b16 everywhere: ezo (all wf), bread (all wf), sim (hardening.yml + release.yml; ci.yml already on v2.2). A fresh SDK scaffold would otherwise inherit the old cache-clobber-prone v2 c76784a.
  • H1 add permissions: contents: read to sim ci.yml (ezo/bread already have it); remove sim's dead CONTRIBUTING.md path-filter in docs.yml.
  • H2 standardize preset names across the three (sim -strict scheme; ezo missing ci-windows-release; sim missing arm64; ezo missing the Windows GNU/triplet guard).
  • H2 ezo CHANGELOG.md — add the Keep-a-Changelog/SemVer header block (sim/bread have it).

SDK-repo-time (record now; execute when the repo exists, Phase D)

  • SDK stays source/FetchContent-consumed, not prebuilt (TSAN/static/arm64 rebuild protobuf in-tree); SDK owns the protobuf/vcpkg-baseline pin (else silent ABI-staleness).
  • SDK owns Warnings.cmake, triplets, *.supp templates. Scaffold the repo from bread (cleanest hygiene template).
  • #44 trailing items fold into each provider's migration: logging→sim Logger (ezo 14 / bread 31 sites), sim config retrofit, ezo runtime_state shrink, error-mapping (= ezo P2). DeviceDiscoveryStrategy stays provider-local (discovery is device-specific; SDK owns only the report contract).

Sequence

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions