• 4 Open
    0 Closed
    Updated 2026-07-24 14:30:07 +02:00
    No due date

    Signal-quality measurement becomes reachable from the release binary, and correct when reached. #312: measure ic needs a persisted price/signal tap pair that no release-binary path can produce — the agent of the 2026-07-22 external field test (triage: #314) hit the --trace refusals, concluded trace persistence was disabled in the installed version, and abandoned the measurement path; the fix extends the closed tap vocabulary and streams through the TapTraceWriter seam landed with #283. #294 pins the IC offline-join duplicate-timestamp semantics: once #312 makes the join reachable, a multi-source same-timestamp measurement stream would silently resolve duplicates last-wins — reachability without pinned join semantics risks a quietly wrong IC, so the two land together. #318 adds numerically robust rolling statistics (RollingVar/RollingStd; the z-score shape — own node vs thin composition — is an open cut) to the std vocabulary: the same field test saw a hand-rolled z-score fork between an O(N)-per-tick correct form and an O(1) form whose float drift decays into noise over ~13M ticks; robust rolling stats are shared substrate for authored signals and measurement alike.

    Done: measure ic runs end-to-end from the release binary, duplicate-timestamp joins have pinned semantics, and rolling variance/stddev/z-score ship robust.

  • 3 Open
    0 Closed
    Updated 2026-07-23 13:42:57 +02:00
    No due date

    The #295 shell-boundary cut made the engine consumable as a library, and the first downstream research project pins it as a cargo git dependency (surveyed in #295, recorded in #296). Three finishing moves on that surface. #296: record the compatibility contract for the public library surface — even if the recorded answer is "no stability promised before 1.0; downstream pins a commit", the policy is then written rather than implicit, and it classifies whether the churn below counts as breaking. #297: convert the ~20 remaining std::process::exit refusal sites in the runner's single-run paths to RunnerError propagation (as reproduce.rs already models), so an embedding caller gets a Result instead of a killed host process; shell dispatch keeps byte-identical stderr text and exit codes, already pinned by the E2E suites. #299: the reproduce API returns the per-member report on the simple path and derives the DataSource from the stored manifest by default, refusing loudly on pip/window mismatch instead of reporting a spurious determinism divergence.

    Done: no library code path exits the host process, reproduce is honest on its simple path, and the compatibility contract is a recorded ledger fact.

  • 1 Open
    2 Closed
    Updated 2026-07-25 11:39:11 +02:00
    No due date

    Container for the ratified #319 direction (owner decision 2026-07-24: retire the research-verb sugar; tag pre-sugar-retirement = 6fb7caf is the A-baseline). Internal sequence: #328 (axis-namespace reconciliation, discovered as a prerequisite by the binary-only M1 fieldtest) runs FIRST, then the #319 retirement itself. Queued after the Data-authorability boundary milestone per the ratified backlog plan.

  • 4 Open
    0 Closed
    Updated 2026-07-23 13:42:58 +02:00
    No due date

    Completes the tap-subscriber cut (#283) around its trace store, in the wake of that cycle's fieldtest (findings filed as #309/#311; #307/#308 filed at the cycle's close). #309: a plain aura run records declared taps but neither echoes nor documents the trace handle, so the recorded trace is discoverable only by guessing the default trace-dir name. #311: two different blueprints defaulting to the same blueprint name write into the same trace dir, orphaning still-chartable tap files from the earlier run; the issue records three candidate contracts (clear the dir, reject the collision, or ratify-and-document the hazard). #308 migrates the legacy Recorder surface onto the TapTraceWriter delivery seam (landed with #283) so a single delivery shape remains. #307 replaces the JSON on-disk trace encoding with a compact binary format plugging into that same seam — JSON does not scale to multi-million-point series. Order: the two small honesty fixes first (#309, #311), then the structural levers (#308, #307).

    Done: a run's traces are discoverable from its output, the same-name collision has a decided contract, and one delivery shape with a scalable encoding remains.