-
Cycle 0003 (dt policy) — ratify fixed timestep as default, variable-dt as opt-in admitted stream, braidability constraint for settlement.
-
KERNEL_strand-contractbacklog item — strand as a first-class relation with exact fields, invariants, lifecycle, and TTD mapping. -
KERNEL_strand-settlementbacklog item — deterministic settlement semantics (compare → plan → import → conflict artifact). -
crates/method/— standalone METHOD library crate (cycle 0002).cargo xtask method statusandcargo xtask method status --jsonfor backlog lane counts, active cycles, and legend load. -
Adopt METHOD: backlog lanes, legends, cycle loop, BEARING signpost.
-
docs/DOCS_AUDIT.md— full audit of every file in the docs corpus. -
docs/BEARING.md— current direction and tensions signpost. -
Four legends: KERNEL, MATH, PLATFORM, DOCS.
-
Seven asap backlog items (five xtask METHOD commands, docs cleanup, roadmap migration).
-
Three graveyard entries (BOAW naming, 5x Duty Model, unimplemented future specs).
docs/METHODOLOGY.md— 5x Duty Model (never practiced; see graveyard).- 17 unimplemented future spec files (see graveyard).
docs/march-16.plan.md— stale planning scratchpad.docs/plans/parallel-merge-and-footprint-optimizations.md— superseded by design review.- ADRs (0001–0011), old plans, book (LaTeX), and research artifacts. All recoverable from git history.
warp-fficrate deleted: The C ABI integration path (crates/warp-ffi) has been removed. The C ABI approach was abandoned in favor of Rust plugin extension viaRewriteRuletrait registration and Rhai scripting. See TASKS-DAG.md #26 (Graveyard). This is a BREAKING CHANGE for any downstream code that depended on the C FFI surface.
- The adaptive parallel-policy experiment follow-ups so benchmark/report rows
now describe the plan that actually executed, adaptive planning reuses the
runtime shard-partitioning path instead of duplicating profiling logic, stale
adaptive Criterion directories are selected deterministically, malformed
adaptive benchmark directory names now fail loudly instead of disappearing
from baked reports, conflicting truthful adaptive rows are rejected before
export, and the experimental selector seam stays out of the public
warp-corekernel surface while the benchmark-facing adaptive routing entrypoints remain concrete and deterministic.
- The docs-surface reduction follow-ups so the collision tour no longer points
at a deleted guide route, the architecture outline uses implementation-backed
deterministic wording for the scene boundary, task-DAG tooling/docs use the
new
tasks-dag-source.mdname consistently, and the backlog now tracks broader docs-validation cleanup beyond Markdown-only checks, including recursivedocs/public/**/*.htmlcoverage.
- The PR workflow hardening follow-ups so
pr-preflightskips deleted file-targeted inputs,pr-threads replycan target an explicit PR context instead of assuming the checkout repo, review-thread batch resolution reports partial progress before failure, GitHub auth-error detection avoids genericauthor-style false positives, and the workflow docs point at the trackeddocs/archive/AGENTS.mdpath.
- The Phase 8 runtime-schema/tooling follow-ups so workspace Prettier usage is
declared and lockfile-pinned, runtime schema validation now fails clearly
when
nodeis unavailable, dependency DAG generation usesdocs/archive/tasks/TASKS-DAG.mdas the default task source with UTC-stable fallback labels, and the tracked Rust Analyzer workspace target dir is repo-local and cross-platform. - Shared Phase 8 type extraction so
WorldlineIdis actually opaque likeHeadId,echo-wasm-abiforwardsstd/serdeintoecho-runtime-schemaexplicitly,echo-wasm-abi --no-default-featuresavoids a straystddependency, and positive-only scheduler/inbox schema inputs are represented explicitly asPositiveInt. - Late Phase 8 review follow-ups so contributor docs use portable workspace
links, the runtime-schema README matches the default
serdecontract, the schema audit/inventory docs reflect the typed-id migration, and dependency-DAG docs use the correct GitHub workflow wording. - Final Phase 8 review follow-ups so shared logical counters enforce their
checked-arithmetic boundary, runtime-schema validation runs through the
pinned
pnpm schema:runtime:checkentrypoint, worldline-id/schema nullability docs match the frozen 32-byte and scheduler-state contracts, and backlog follow-up tasks now requirecargo xtaskas the maintenance surface.
- Fixed the session WebSocket gateway TLS stack to use the Rustls ring
provider instead of AWS-LC, clearing the current
cargo auditandcargo-denyblockers without weakening TLS coverage. - Fixed hook timing instrumentation to cache its clock source, serialize CSV header creation, and runtime-test the sequential and parallel pre-push hooks instead of only checking them statically.
- Fixed ABI/runtime metadata surfaces so dormant heads are representable, playback cursor tick/state invariants stay encapsulated, and typed logical counter helpers have direct boundary coverage.
- Fixed the browser adapter to reuse the canonical committed-tick helper and preserve large logical tick values end-to-end instead of clamping them.
- Fixed final PR review follow-ups so browser-only large-tick DTOs no
longer hand-edit generated protocol artifacts, forked provenance retains
checkpoint state at the copied tip,
verify-localrecords failing lane timings even when helpersexit, and the session gateway tolerates an already-installed Rustls crypto provider. - Fixed final replay/tooling follow-ups so checkpoints are validated before
storage, suffix replay rebuilds metadata without a second provenance scan,
hook timing reaps stale CSV locks,
pr-statuspropagates paginated parse failures, and mixed timing logs prefer current run records over legacy rows. - Fixed final Rabbit review follow-ups so checkpoint fixtures carry honest replay metadata, playback rejects non-canonical tick-zero materializations, observation/spec docs spell out deterministic U0 hashes, and verifier timing appends stay serialized without hiding helper failures.
- Changed playback, replay, snapshot, and fork materialization now rebuild
full
WorldlineStateinstead of a warp-local store-only approximation. - Added checkpoint-backed playback and provenance replay so historical materialization can restore from validated full-state checkpoints as an acceleration path before replaying the remaining suffix from authoritative provenance.
- Changed replay, observation, and ABI metadata now carry typed
WorldlineTick/GlobalTickcoordinates consistently across the public Phase 7 boundary.
- Changed local verification success stamps now key off the actual checked
tree instead of
HEAD, so commit-only churn can reuse the same clean proof across manual and hook-triggered runs without ignoring unstaged or untracked changes. - Added per-lane and per-run timing records under
.git/verify-local/timing.jsonl, keeping local timing artifacts off the tracked repo while making verifier cost visible. - Added
scripts/pr-status.shplusmake pr-statusas a one-shot GitHub summary for PR number, head SHA, unresolved thread count, review decision, merge state, and grouped checks. - Fixed
cargo nextesttargeted verification now respects crate target shape instead of hardcoding--lib --tests, which keeps bin-only crates from tripping the local fast path. - Changed the full local tooling lane now runs all hook regression scripts
under
tests/hooks/test_*.shinstead of one hardcoded verifier test.
- Changed the local full verifier now runs as curated parallel lanes with
isolated
CARGO_TARGET_DIRs for clippy, tests, rustdoc, and guard checks, which cuts local wall-clock time by avoiding one giant serialized cargo invocation. - Changed staged and reduced local Rust checks now use a narrower fast-path target surface, keeping the heaviest all-target clippy drag in CI instead of every local iteration loop.
- Changed full local verification is now scope-aware: tooling-only full changes stay tooling-local, while critical Rust changes run local smoke lanes and defer exhaustive proof to CI.
- Changed local
warp-coresmoke selection is now file-family aware: default source edits stay on--lib, runtime/inbox files pullinbox, playback files pull playback-smoke tests, and PRNG edits pull the golden regression. - Changed local
warp-wasmandecho-wasm-abismoke selection is now file-family aware too:warp-wasm/src/lib.rsstays on plain lib smoke,warp_kernel.rspulls the engine-enabled lane, canonical ABI work pulls only canonical/floating-point vectors, and non-Rust crate docs no longer wake Rust lanes at all. - Added
make verify-ultra-fastas the shortest local edit-loop lane: changed Rust crates getcargo check, critical runtime surfaces still pull targeted smoke tests, tooling-only changes stay on a syntax/smoke path, and clippy/rustdoc/guard scans stay on heavier local paths and CI. - Added
make verify-full-sequentialas an explicit fallback when the lane runner itself needs debugging. - Fixed ultra-fast tooling smoke now detects actual shell tooling files by
extension or shebang, so extensionless hook entrypoints stay covered while
non-shell files like hook docs or timing logs do not false-fail under
bash -n.
- Added ADR-0011 documenting the explicit observation contract with worldline, coordinate, frame, and projection semantics.
- Changed Phase 4 provenance/BTR work is now the documented substrate
baseline: provenance is entry-based, parent refs are stored explicitly, and
the standalone
ProvenanceServiceowns authoritative worldline history. - Added
ObservationService::observe(...)as the canonical internal read path with explicit worldline, coordinate, frame, and projection semantics. - Added deterministic observation artifacts and error mapping:
INVALID_WORLDLINE,INVALID_TICK,UNSUPPORTED_FRAME_PROJECTION,UNSUPPORTED_QUERY, andOBSERVATION_UNAVAILABLE. - Changed
WarpKerneland the WASM ABI now exposeobserve(...), whileget_head,snapshot_at, anddrain_view_opsare thin one-phase adapters over the observation contract.execute_query(...)currently lowers through observation semantics and returns deterministicUNSUPPORTED_QUERYuntil full query support is implemented. - Changed
drain_view_ops()is now legacy adapter/debug behavior only: it reads recorded truth throughobserve(...)and tracks only adapter-local drain state instead of mutating runtime-owned materialization state. - Changed
ttd-browsermigrated to the entry-based provenance API after the Phase 4 hard cut removed the old provenance convenience methods.
- Changed during the post-Phase-5 closeout, the ADR-0008 / ADR-0009 implementation plan was updated to mark Phases 0-5 implemented and record Phase 5 as shipped.
- Changed ADR-0010 is now accepted, aligning the observational/admin split with the implemented observation contract rather than leaving it in a hypothetical state.
- Added
docs/march-16.plan.mdas the post-merge execution bridge for dev-loop hardening, Phase 6 adapter deletion, explicit tick types, and the later replay / transport horizons.
- Fixed
Engine::commit_with_state()now restores both the engine-owned runtime metadata and the borrowedWorldlineStateeven if rule execution unwinds, and duplicate admitted ingress is deduplicated byingress_idbefore command enqueue. - Fixed the canonical pre-commit hook now routes staged crate verification
through
scripts/verify-local.sh pre-commit, which uses index-scoped changed files plus an index-tree stamp instead of branch-HEADreuse. - Clarified cumulative
unpause(PlaybackMode::Paused)notes now describe the shipped deterministic all-build failure instead of mixing final behavior with the earlier debug-only guard.
- Changed
scripts/hooks/pre-commitandscripts/hooks/pre-pushnow delegate to the canonical.githooks/implementations instead of enforcing a stale parallel local policy. - Added
scripts/verify-local.shplusmake verify-fast,make verify-pr, andmake verify-fullso local verification can scale with the change set and reuse a same-HEADsuccess stamp. - Changed the canonical pre-push hook now classifies docs-only, reduced, and critical verification paths, escalating to a determinism/tooling-focused local gate only for determinism-critical, CI, hook, and build-system changes.
- Fixed manual
make verify-fullruns and the canonical pre-push full gate now share the same success stamp, so an explicit clean full pass suppresses the identical hook rerun for the sameHEAD. - Changed the curated local full test lane now runs library and integration targets only for the small non-core confidence crates, cutting doc-test-only churn while the script reports total elapsed time on completion or failure.
- Changed the main CI workflow no longer runs on
pushforfeat/**branches, leavingpull_requestas the authoritative branch-validation lane whilemainretains push-time protection. - Changed the CI
Testsgate now fans in from parallelworkspace sans warp-coreandwarp-coreshards, preserving the requiredTestsstatus while cutting PR wall-clock time spent waiting on one serialized workspace job. - Changed the
warp-coreCI shard now usescargo nextestfor the main test inventory and keepscargo test --docas a separate step so the heavy crate runs faster without dropping its doctest coverage.
- Fixed
Enginenow caches canonicalcmd/*rule order at registration time instead of rebuilding and sorting that list for every admitted ingress envelope. - Fixed
WorldlineRegistry::register(...)now preserves the restored frontier tick implied byWorldlineState.tick_historyinstead of rewinding restored worldlines to tick 0. - Fixed
WorldlineStateroot validation is now fallible and explicit: callers must supply or derive the unique root instance with a backing store, and the old fabricated fallback root is gone. - Fixed
WarpKernel::with_engine(...)now returns a typedKernelInitErrorfor non-fresh or invalid caller-supplied engine state instead of panicking through the WASM host boundary. - Clarified ADR-0008 and the Phase 3 implementation plan now describe
duplicate suppression as per-resolved-head, use full
head_keyvalues for per-head APIs, and keepWorldlineRuntimepseudocode encapsulated.
- Fixed
WorldlineRuntimeno longer exposes raw public registries that can desynchronize the default-writer / named-inbox route tables; named inbox lookup is now allocation-free on the live ingress path. - Fixed
SchedulerCoordinator::super_tick()now preflightsglobal_tick/frontier_tickoverflow before draining inboxes or mutating worldline state. - Fixed runtime ingress event materialization is now folded back into the
recorded tick patch boundary, so replaying
initial_state + tick_historymatches the committed post-state. - Fixed
WarpKernel::with_engine(...)now rejects non-fresh engines instead of silently dropping runtime history that it cannot preserve.
- Fixed duplicate worldline registration now surfaces as a typed
RuntimeError::DuplicateWorldlineat the runtime boundary instead of being silently ignored at the call site. - Fixed golden-vector and proptest determinism harnesses now pin
EngineBuilderto a single worker so hashes do not inherit ambientECHO_WORKERSor host core-count entropy. - Fixed GV-004 now pins both engines to the expected
state_root,patch_digest, andcommit_hashartifacts rather than checking only one run against constants and the second run for self-consistency. - Clarified hook/docs governance:
.githooks/installed viamake hooksis canonical,scripts/hooks/are legacy shims, ADR-0008 now states seek is observational-only, and the ADR exceptions ledger no longer uses a sentinel pseudo-entry.
- Fixed
HeadIdis now opaque with internal range bounds, so public callers cannot fabricate arbitrary head identities whileheads_for_worldline()still keeps itsBTreeMaprange-query fast path. - Fixed
WriterHeadnow derives pause state frommode, andunpause(PlaybackMode::Paused)now fails deterministically in all builds instead of only underdebug_assert!. - Fixed
PlaybackHeadRegistryandWorldlineRegistryno longer expose raw public mutable access to stored heads/frontiers; runtime code uses targeted internal inbox/frontier mutation instead. - Fixed
IngressEnvelopefields are now private andHeadInbox::ingest()enforces the canonical content hash in release builds too, closing the debug-only invariant hole. - Fixed
SchedulerCoordinator::peek_order()now derives runnable order from the head registry instead of trusting cached state, and tick counters now fail deterministically on overflow. - Fixed INV-002 now asserts exact head-key equality against the canonical expected order, not just length plus pairwise zip checks.
- Fixed the ADR implementation plan now shows private-field pseudocode for
worldline frontiers and the stronger verification matrix, including the
rustdoc warnings gate (
RUSTDOCFLAGS="-D warnings" cargo doc ... --no-deps).
- Fixed
WriterHead.keyis now private with akey()getter, preventing mutation viaPlaybackHeadRegistry::get_mut()which would break the BTreeMap key invariant. - Fixed INV-002 proptest now verifies exact key identity (sorted+deduped input vs output), catching bugs where rebuild substitutes one key for another.
- Fixed plan doc pseudocode updated to reflect private fields with getters
(
WriterHead,WorldlineFrontier) and correct constructor name (IngressEnvelope::local_intent).
- Fixed
WriterHead.modeis now private with amode()getter, preventing themode/pausedpair from diverging via direct field assignment. - Fixed
SchedulerCoordinator::super_tick()now uses canonical runnable order derived from the head registry viapeek_order()instead of trusting stale runnable-cache state. - Fixed
HeadInbox::set_policy()now revalidates pending envelopes against the new policy, evicting any that no longer pass. - Fixed
HeadInbox::admit()now usesmem::take+into_values()instead ofclone()+clear()for zero-copy admission inAcceptAll/KindFilter. - Fixed
HeadInbox::ingest()added envelope hash invariant checks; later hardening enforces the canonicalingress_id/payload-hash match in release builds as well. - Fixed
WorldlineState.warp_stateis nowpub(crate)with awarp_state()getter, andWorldlineFrontierfields arepub(crate)with public getters. - Fixed INV-002 proptest now verifies set preservation (length check) in addition to canonical ordering.
- Fixed removed
redundant_cloneclippy suppression fromhead.rsandcoordinator.rstest modules. - Fixed ADR exceptions ledger sentinel row no longer mimics an active entry.
- Fixed verification matrix in implementation plan now matches hook-enforced
gate (
--workspace --all-targets -D missing_docs).
- Fixed
HeadInbox::ingest()now rejects non-matching envelopes at ingest time underKindFilterpolicy, preventing unbounded memory growth. - Fixed GV-003 golden vector now covers all 6 fork entries (ticks 0..=5), closing a gap where the fork-tick itself was never verified.
- Added INV-002 proptest for canonical head ordering (shuffled insertion
always produces canonical
(worldline_id, head_id)order). - Added duplicate-tick detection to INV-001 (append at existing tick fails).
- Fixed
heads_for_worldline()now uses BTreeMap range queries (O(log n + k) instead of O(n) full scan). - Fixed
unpause()initially added a debug-only guard forPaused; later hardening made the failure deterministic in all build configurations. - Fixed pre-commit hook now passes
--workspaceto clippy. - Improved documentation: multi-writer frontier semantics,
global_tickbehavior on empty SuperTicks,compute_ingress_idlength-prefix safety,InboxAddressas human-readable alias.
- Added
IntentKind— stable, content-addressed intent kind identifier using domain-separated BLAKE3 ("intent-kind:" || label). - Added
IngressEnvelope— unified, content-addressed ingress model with deterministic routing and idempotent deduplication. - Added
IngressTarget— routing discriminant:DefaultWriter,InboxAddress, orExactHead(control/debug only). - Added
IngressPayload— payload enum starting withLocalIntent, extensible for cross-worldline messages (Phase 10) and imports (Phase 11). - Added
HeadInbox— per-head inbox withBTreeMap-keyed pending envelopes for deterministic admission order. - Added
InboxPolicy— admission control:AcceptAll,KindFilter, orBudgeted { max_per_tick }.
- Added
SchedulerCoordinator— serial canonical scheduling loop that iterates runnable writer heads in(worldline_id, head_id)order and advances each worldline's frontier tick. - Added
WorldlineRuntime— top-level runtime struct bundling worldline registry, head registry, runnable set, and global tick. - Added
StepRecord— output record documenting which heads were stepped and in what order during a SuperTick.
- Added
HeadId,WriterHeadKey,WriterHead— first-class head types for worldline-aware scheduling. Heads are control objects (identity, mode, paused state), not private mutable stores. - Added
PlaybackHeadRegistry—BTreeMap-backed registry providing canonical(worldline_id, head_id)iteration order. - Added
RunnableWriterSet— ordered live index of non-paused writer heads. - Added
WorldlineState— broad wrapper aroundWarpStatepreventing API calcification aroundGraphStore. - Added
WorldlineFrontier— the single mutable frontier state per worldline, owningWorldlineStateandfrontier_tick. - Added
WorldlineRegistry—BTreeMap-backed registry of worldline frontiers with deterministic iteration. - Added
make_head_id()— domain-separated BLAKE3 identifier factory ("head:" || label).
- Added golden vector suite (
golden_vectors_phase0.rs) pinning commit determinism, provenance replay integrity, fork reproducibility, and idempotent ingress hashes before the worldline runtime refactor. - Added invariant test suite (
invariant_property_tests.rs) enforcing monotonic worldline ticks, idempotent ingress, cross-worldline isolation, commit determinism, and provenance immutability; INV-001/002/003/005 useproptest, while INV-004/006 are fixed regression tests. - Added ADR exceptions ledger (
docs/adr/adr-exceptions.md) — operational from Phase 0 onward, every intentional model violation must be logged with owner and expiry. - Added ADR-0010: Observational Seek, Explicit Snapshots, and Administrative Rewind — companion ADR clarifying the seek/rewind split under the one-frontier-state-per-worldline design.
- Added implementation plan for ADR-0008 and ADR-0009
(
docs/plans/adr-0008-and-0009.md) — 14-phase roadmap with verification matrix and exit criteria. - Added git hooks (
scripts/hooks/pre-commit,scripts/hooks/pre-push) for lint and test gating.
- Added ADR-0009: Inter-Worldline Communication, Frontier Transport, and Conflict Policy — formalizes message-passing-only communication between worldlines, frontier-relative patches, suffix transport as the replication primitive, four-dimensional footprint interference, explicit conflict surfacing over silent LWW, and the state-vs-history convergence separation.
- Added ADR-0008: Worldline Runtime Model — formalizes writer/reader heads, SuperTick scheduling contract, three-domain boundaries (Echo Core, App, Janus), per-head seek/jump semantics, and the 8-step normative refactor plan.
- Exported
compute_tick_commit_hash_v2,compute_op_emission_index_digest, andOpEmissionEntryfromwarp-corepublic API (previouslydead_code). - Wired
LocalProvenanceStore::append_with_writes()to actually store atom writes instead of discarding them. - Added
LocalProvenanceStore::atom_writes(w, tick)— query atom writes for a specific tick (TTD "Show Me Why" provenance). - Added
LocalProvenanceStore::atom_history(w, atom)— causal cone walk usingout_slots(Paper IIIOut(μ)) to filter ticks that wrote to the atom, with early termination at creation. O(history) scan, no reverse index. - Fixed
LocalProvenanceStore::fork()to copyatom_writesalongside patches, expected hashes, and outputs. - Added 12 tests covering atom write storage, queries, filtering, fork,
causal-cone walk, skip behavior, early termination, within-tick ordering,
and
SlotId::Node(atom)provenance path.
- Added
digest_golden_vectors.rs— DIND-level golden-hash tests that exercisecompute_emissions_digest,compute_op_emission_index_digest, andcompute_tick_commit_hash_v2through warp-core's crate-root re-exports. - Pinned 3 golden vectors: individual emission/op-emission-index digests plus a full hash chain (emissions → op-index → tick-commit). Any wire format drift in the public digest surface is now caught outside module-local tests.
- Fixed
atom_history()within-tick write ordering: the backward tick walk collected per-tick writes in forward order, so the finalreverse()flipped within-tick execution sequence. Iteratetick_writes.iter().rev()so the global reverse restores original order. - Fixed creation truncation: if a single tick had
[create, mutate]for the same atom, forward iteration hitis_create()first and returned early, losing the subsequent mutation. - Updated
fork()rustdoc to mentionatom_writesin the copied fields. - Documented
append_with_writes()invariant: atom writes must reference atoms declared inpatch.out_slotsforatom_history()visibility.
- Fixed
scripts/ban-globals.sh: the\bthread_local!\band\blazy_static!\bpatterns never matched because!is not a word character in ripgrep regex, making the trailing\bimpossible. Use escaped\!without trailing\b. - Added
.ban-globals-allowlistto exemptwarp-wasm/src/lib.rs(WASM boundary legitimately needs module-scopedthread_local+install_kernel).
- Fixed
init()now returns real 32-bytestate_rootandcommit_idhashes from the freshly constructed kernel instead of empty vecs. - Fixed
WarpKernel::with_engine()auto-registerssys/ack_pendingif absent, silently ignoring duplicates. PreventsENGINE_ERRORon first dispatched intent when callers forget to register it. - Removed unnecessary
#[allow(dead_code)]on publicWarpKernel::with_engine()method. - Removed redundant explicit type annotation on
get_registry_info(). - Fixed broken
RegistryInforustdoc link after import removal.
- Fixed
warp-core: cfg-gate footprint enforcement internals (FootprintGuard,OpTargets,op_write_targets, etc.) so they compile out cleanly underunsafe_graphwithout dead-code warnings. - Fixed
warp-core: add#[allow(unused_mut)]on cfg-conditional mutation inengine_impl.rs. - Fixed
echo-wasm-bindings: restructureTtdControllerWASM bindings to use per-methodwasm_bindgenwithJsValue/JsErrorwrappers instead of blanketwasm_bindgenon the impl block (fixes trait bound errors under--all-features). - Fixed
echo-scene-codec: add clippy allow attributes to test module forexpect_used,unwrap_used, andfloat_cmp. - Fixed
warp-coretests: move enforcement-only imports into cfg-gatedmod enforcementinparallel_footprints.rs.
- Fixed
dispatch_intentnow validates the EINT envelope before passing bytes to the engine, returningINVALID_INTENT(code 2) for malformed envelopes instead of forwarding garbage. - Added
Displayimpl forEnvelopeError(no_std compatible). - Changed
OkEnvelopeandErrEnvelopefields to private with::new()constructors, enforcing correctokfield values at compile time. - Added default implementations for
KernelPort::execute_queryandKernelPort::render_snapshotreturningNOT_SUPPORTED, making future trait evolution non-breaking. - Updated SPEC-0009 error code 2 description and versioning notes.
- Added
KernelPorttrait toecho-wasm-abi— app-agnostic byte-level boundary contract for WASM host adapters. Includes ABI response DTOs (DispatchResponse,StepResponse,HeadInfo,DrainResponse,RegistryInfo), error codes, and CBOR wire envelope types. - Added
WarpKerneltowarp-wasm(behindenginefeature) — wrapswarp-core::EngineimplementingKernelPort. Registerssys/ack_pendingsystem rule, provides deterministic tick execution. - Replaced all placeholder WASM exports with real implementations:
dispatch_intent,step,drain_view_ops,get_head,snapshot_at,get_registry_info, and handshake metadata getters now return live data. - Added
init()export for kernel initialization; calling exports before init returns structured error (no panics). - Added CBOR success/error envelope protocol (
{ ok: true/false, ... }) for allUint8Arrayreturns. - Added
install_kernel()public API for app-agnostic kernel injection. - Added SPEC-0009 documenting ABI v1 contract, wire encoding, error codes, versioning strategy, and migration notes.
- Added 14 conformance tests covering dispatch, step, drain, snapshot, determinism, error paths, and handshake metadata.
execute_queryandrender_snapshothonestly reportNOT_SUPPORTED(error code 5) until the engine query dispatcher lands.
- Renamed
warp_core::boawmodule towarp_core::parallel— all import paths, re-exports, and doc comments updated. - Renamed 14
boaw_*integration test files toparallel_*, updated test harness types (BoawScenario→ParallelScenario,BoawTestHarness→ParallelTestHarness, etc.) and string literals. - Renamed
boaw_baselinebenchmark toparallel_baseline, updatedwarp-benches/Cargo.tomltarget. - Annotated 5 ADR files with deprecation notice (filenames preserved as historical records).
- Updated book/LaTeX sections, specs, guides, and source comments to
replace BOAW references with
parallel. - Replaced "Echo/JITOS" → "Echo" in
echo-wasm-bindings,echo-wasm-abi, andspec-000-rewritecrate metadata and READMEs. - Replaced "JITOS Engineering Standard" → "Echo Engineering Standard" in
METHODOLOGY.md. - Replaced "Echo / Continuum" → "Echo" in ADR-0007.
- Archived 6 entire directories to
docs/archive/:notes/,plans/,tasks/,rfc/,memorials/,jitos/(session artifacts, completed work). - Archived
docs/study/(51 files: LaTeX papers, build artifacts, tour materials) todocs/archive/study/. - Archived 4 completed DIND mission docs from
docs/determinism/and the supersededECHO_ROADMAP.mdfromdocs/ROADMAP/. - Archived 18 stale loose docs from
docs/root:AGENTS.md,ISSUES_MATRIX.md,code-map.md,phase1-plan.md,roadmap-mwmr-mini-epic.md,branch-merge-playbook.md,testing-and-replay-plan.md,runtime-diagnostics-plan.md,telemetry-graph-replay.md,warp-demo-roadmap.md,warp-runtime-architecture.md,capability-ownership-matrix.md,ROLLBACK_TTD.md,aion-papers-bridge.md,rust-rhai-ts-division.md,hash-graph.md,two-lane-abi.md,diagrams.md. - Archived dead redirect
guide/collision-tour.md(both targets missing). - Rewrote
docs/meta/docs-index.md: curated golden-path index with clear separation of implemented specs, vision specs (unimplemented), ADRs, and archive. Removed broken links and stale entries.
- Fixed
CONTRIBUTING.md: Rust version 1.71.1 → 1.90.0,AGENTS.mdpath todocs/AGENTS.md,reference/typescript/→packages/andapps/, commit message guidance aligned with conventional commits. - Fixed
.devcontainer/post-create.sh: reads toolchain version fromrust-toolchain.tomlinstead of hardcoding 1.71.1, removed stalermg-corecrate reference. - Fixed
warp-wasm/README.md: corrected dependency claim fromwarp-coretoecho-wasm-abi+echo-registry-api. - Fixed
echo-session-proto/README.md: removed brokendocs/tex/paths, pointed todocs/js-cbor-mapping.mdand book sections instead. - Fixed
ttd-browser/README.md: removed brokendocs/plans/ttd-app.mdreference and nonexistentttd-controllercrate mention. - Fixed
NOTICE: copyright year 2025 → 2025–2026, SPDX identifier aligned toLicenseRef-MIND-UCAL-1.0. - Fixed ROADMAP priority mismatch: 5 milestone READMEs aligned from P2 → P3 to match the parent index. Proof Core status downgraded from "Verified" to "In Progress" (Docs Polish feature still incomplete).
- Fixed
guide/cargo-features.md: removed nonexistentspec-000-rewritecrate section. - Fixed
guide/course/glossary.md: correctedViolationKindvariantAdjacencyViolation→OpWarpUnknownwith full variant names. - Fixed
BENCHMARK_GUIDE.md: updated "CI Integration (Future)" section to reflect existing G3 perf gate. - Fixed
echo-session-clientandecho-session-serviceCargo.toml descriptions: removed stale "(skeleton)" qualifier.
- Fixed
scripts/check_task_lists.sh: accept file arguments for testability; fall back to built-inFILESarray when none are given. - Fixed
scripts/tests/check_task_lists_test.sh: updated tests to pass file arguments to the checker and match current output messages. Tests were broken after theFILESarray was emptied when task lists were archived.
- Removed stale root-level ADR duplicates (
ADR-0003throughADR-0006); canonical copies already exist indocs/adr/. - Removed completed one-shot plan
MERGE_TTD_BRANCH_PLAN.md. - Moved determinism docs (
DETERMINISM-AUDIT.md,DIND-MISSION*.md) todocs/determinism/. - Moved task trackers (
TASKS.md,TASKS-DAG.md,WASM-TASKS.md) todocs/tasks/. - Moved
ECHO_ROADMAP.mdtodocs/ROADMAP/,COMING_SOON.mdtodocs/plans/,AGENTS.mdtodocs/. - Deleted untracked junk files (
paper-7eee.log,dind-report.json,.DS_Store). - Archived 14 superseded/completed docs: redirect stubs removed,
canonical content already in
docs/archive/. Updated cross-references indocs-index.md,code-map.md,DETERMINISTIC_MATH.md, andwarp-geom/README.md. - Added
docs/archive/README.mddefining archive policy.
- CI: G3 perf regression gate now compares criterion benchmark output
against a git-tracked
perf-baseline.jsonand fails if any benchmark regresses beyond 15% (configurable via--threshold). Structuredperf-report.jsonartifact uploaded alongside rawperf.log. - CI: New
perf-baseline-update.ymlworkflow auto-generates baseline update PRs on main pushes that touch Rust sources. - Scripts: Added
check_perf_regression.cjs(gate comparison) andgenerate_perf_baseline.cjs(baseline generation from bencher output).
- Policy: Added "Determinism Allowlist Governance" section to
docs/RELEASE_POLICY.mddocumenting acceptable exemption criteria, approval requirements, and audit cadence for.ban-nondeterminism-allowlist. - Scripts: Added cross-reference from
ban-nondeterminism.shheader to the governance policy.
-
License: Renamed SPDX identifier
MIND-UCAL-1.0→LicenseRef-MIND-UCAL-1.0across 328 files to comply with SPDX Appendix IV (custom identifiers must useLicenseRef-prefix). Updatedensure_spdx.shtooling and pre-commit hook accordingly. -
Fix: Fixed radix sort scope pair index inversion in
scheduler.rsbucket16(). LSD passes were processing scope bytes MSB-first instead of LSB-first, causing the radix-sort path (n > 1024) to produce a different ordering than the comparison-sort path (n ≤ 1024). Added 3 property tests:proptest_drain_matches_btreemap_reference(fuzzes both sort paths),proptest_insertion_order_independence, andthreshold_boundary_determinism. -
Spec: Replaced "Theorem A" in
spec-mwmr-concurrency.mdwith the formal name from Paper II: "Skeleton-plane Tick Confluence theorem (§6, Thm. 6.1)". -
Spec: Changed
<i>Alea iacta est</i>to semantic HTML inmemorials/2026-01-18-phase4-rubicon.md(foreign phrase italics). -
Spec: Resolved 4 CRITICAL CodeRabbit items: normative frame ordering rule in
spec-editor-and-inspector.md(stable sort by(tick, frameType), UTF-8 lexicographic, insertion-order tie-break); addedgetNode()toBridgeContextinspec-temporal-bridge.mdwithNodeIddisambiguation note (timeline hash vs WARP graphu64); definedworld:configcapability inspec-capabilities-and-security.mdand removed "not yet defined" warning fromspec-runtime-config.md; verifiedSweepProxyrename inspec-knots-in-time.md. Also changedproducerreturn type fromobjecttounknowninspec-editor-and-inspector.md. -
Spec: Rewrote
spec-branch-tree.mdto resolve all 10 CodeRabbit review items. Key changes: formalReadKey/WriteKey/QualifiedKeytype definitions with ECS-layer layering rationale;MergeStrategyIdas extensible namespaced string registry; extractedTimelineNodeCorehashable subset and replaced broken hash formula; unifiedparents[]replacingparentId + mergeParents?; renamed entropy heuristic to "branch strain" (distinguished from Aion Boltzmann entropy); definedWorldView,GCPolicy, three explicit GC modes with transitive pin semantics, domain-separated seed derivation, layered causal-edge semantics,CapabilityAssertionwith forward reference to capabilities spec, andStabilityObserverlifecycle. -
Polish: Resolved remaining 13 Tier 2 CodeRabbit items (all 66 complete): session token format (HMAC-SHA256) and filter semantics in
spec-editor-and-inspector.md; signing canonicalization subsection with 8-field byte layout inspec-warp-confluence.md; breaking-change criteria and deprecation timeline inspec-world-api.md;BlockManifestsection encoding inspec-serialization-protocol.md; radix sort internals documentation inscheduler-optimization-followups.md; enum style unification in SPEC-0002;cargo metadataprovenance command incargo-features.md; expanded serde acceptance criteria inissue-canonical-f32.md. -
Polish: Resolved 12 Tier 1 CodeRabbit items:
remain disjoint→are non-conflictingin SPEC-0003, tightened subnormal definition inDETERMINISTIC_MATH.md, added Aion inline definition inbranch-merge-playbook.md, converted numbered narrative to bullets inspec-time-streams-and-wormholes.md, verified 3 already-correct items (serialization link, admission MUST language, musings blank line), dismissed 3 prettier-enforced formatting items. -
Spec: Resolved all 3 TODO comments in
spec-scheduler.md: bidirectional dependency resolution rules, cleanerregisterSystempseudo-code, and a formal resource conflict detection model aligned with warp-core'sFootprint. ReplacedComponentSignaturewithSystemFootprint(reads/writes/exclusiveTags). -
Review: Addressed 69 CodeRabbit review comments across 37 files:
- xtask: Cross-platform
command_exists, annotated UTF-8 errors, warned on non-UTF-8 path drops, simplifiedhas_extension, fixed doc comment. - Specs: Hardened 15 spec docs — added error handling for branch-tree
commit conflicts, defined equality predicates, bounded parent counts in
merkle-commit, specified canonical field ordering, fixed broken cross-refs
and link styles, added validation rules and error codes to runtime-config,
unified
BranchId/KairosBranchId, clarified signing payloads. - Notes/Archive: Corrected O(n log n) cost attribution in scheduler notes, fixed stale code references and branch names, expanded commit hashes, added provenance blocks.
- Docs: Fixed ADR-0004 placeholder, normalized titles, corrected dependency direction in ISSUES_MATRIX, fixed emphasis style, consolidated repetitive bullets, added cargo-features provenance note, fixed heading levels in warp-math-claims, fixed workflow artifacts in mat-bus-finish RFC.
- xtask: Cross-platform
-
Archive: Moved 6 superseded docs to
docs/archive/with redirect stubs (spec-deterministic-math.md,spec-geom-collision.md,notes/scheduler-radix-optimization.md,notes/xtask-wizard.md,plans/cross-warp-parallelism.md,plans/BOAW-tech-debt.md). -
Consolidate: Added "Docs Map" callouts to
SPEC_DETERMINISTIC_MATH.mdandDETERMINISTIC_MATH.mdlinking all 5 docs in the deterministic math cluster. Updatedscheduler.mdQuick Map with status labels. -
Fix: Repaired 13 broken cross-references (
docs/specs/->docs/spec/,memorial.md->memorials/...,streams-inspector-frame.md->streams-inspector.md,docs/spec/SPEC-0004...prefix, archived file image paths, nonexistent README link). -
New:
cargo xtask lint-dead-refs— scansdocs/for broken markdown cross-references. Handles relative paths, VitePress root-relative links, anddocs/public/asset resolution. Use--allto also check non-markdown file references (images, HTML). -
New:
cargo xtask markdown-fix— auto-fixes common markdown lint violations: SPDX header repair, prettier formatting, and markdownlint--fix. Supports--no-prettierand--no-lintflags. -
New:
cargo xtask docs-lint— combined pipeline that runsmarkdown-fixfollowed bylint-dead-refs. Single command for full docs hygiene. -
New: Configuration reference (
docs/guide/configuration-reference.md) covering engine parameters, protocol constants, and environment variables. -
New: Cargo feature flags reference (
docs/guide/cargo-features.md) covering all 19 features across 11 crates. -
Fix:
cargo xtask lint-dead-refsnow usespulldown-cmarkfor link extraction (handles title text, balanced parens, angle-bracket URLs) and separates scan scope from VitePress docs root. Includes 10 unit tests. -
Fix:
det_fixedcorrectly documented as a behavioral switch incargo-features.md;worker_countdefault now showsNUM_SHARDScap. -
Fix: All file collection in xtask now uses
git ls-filesinstead of filesystem walks (skips build artifacts like.vitepress/dist/). -
Update: Archival stubs enriched with date, reason, and PR metadata. Draft spec (
spec-scheduler.md) marked with[!CAUTION]disclaimer and TODO markers for unspecified sections. -
Update: Math code fences converted from
texttomathwith proper LaTeX markup acrossTHEORY.md,SPEC-0001, and scheduler notes. -
Fix: Archived
cross-warp-parallelism.mdannotated with implementation traceability andWorkUnitstruct deviation (noshard_idin actual code). -
Fix: Archived
BOAW-tech-debt.mdchecklists annotated as frozen with tracking-moved callout pointing toTECH-DEBT-BOAW.md. -
Fix: Archived
scheduler-radix-optimization.mdcanonical order clarified and code-reference staleness disclaimer made visible. -
New:
.coderabbit.yaml— excludesdocs/archive/**from CodeRabbit reviews (frozen historical records generate low-value feedback). -
Update: README determinism claims link, reference docs section, docs-index entries, docs-audit log.
- Determinism Claims v0.1: New
docs/determinism/DETERMINISM_CLAIMS_v0.1.mddocumenting five determinism claims (DET-001 through DET-005) covering static inspection, float parity, parallel execution, trig oracle golden vectors, and torture-rerun reproducibility. - Trig Golden Vectors (DET-004): New test
crates/warp-core/tests/trig_golden_vectors.rswith a 2048-sample golden binary (testdata/trig_golden_2048.bin) that locks downdfix64sin/cos/tan outputs across platforms. Runs on Linux and macOS in CI. - Torture Rerun Script (DET-005):
scripts/torture-100-reruns.sh— turnkey repro script that runs 100 sequential simulations and asserts identical hashes. - CI Trig Oracle Gate: Added trig golden vector tests to
.github/workflows/det-gates.ymlfor both Linux and macOS runners, with log artifacts uploaded alongside existing determinism artifacts. - CLAIM_MAP.yaml: Added DET-004 and DET-005 entries with required evidence pointers and owner roles.
- Evidence Generator: Wired DET-004 and DET-005 into
scripts/generate_evidence.cjsso the evidence policy cross-check passes. - Ban-Nondeterminism Allowlist: Added
trig_golden_vectors.rsto.ban-nondeterminism-allowlist(test-onlystd::fsfor reading golden vector binaries).
- Updated
docs/ROADMAP/proof-core/README.md: checked off P1 exit criteria, marked milestone as "In Progress". - Resequenced roadmap phases: P0 verified, P1→P2→P3 ordering clarified.
- Bench Recursive Scanning:
collect_criterion_resultsnow walks directories recursively, correctly finding grouped (benchmark_group) and parameterised (BenchmarkId) benchmarks that Criterion stores in nested directories (e.g.group/bench/new/estimates.json). - Bench Regex Filter: Post-filter now uses
regex::Regexto match Criterion's own regex semantics instead of substringcontains. Filters with anchors or metacharacters (e.g.^hotpath$) now work correctly.
- Stale
warp-ffiReferences: Removed deleted crate from git hooks (pre-push-parallel,pre-push-sequential),warp-core/README.md, andAGENTS.md. Only historical references in CHANGELOG and TASKS-DAG remain. - Broken Spec Paths: Fixed
docs/specs/→docs/spec/in two acceptance criteria indocs/ROADMAP/backlog/security.md. emit()Error Propagation: Changedoutput::emit()to returnResult<()>instead of silently printing to stderr on serialization failure. All call sites (bench.rs,verify.rs,inspect.rs) now propagate with?.- SPEC-0005 Clarity: Bound loop index variable in BTR verification algorithm
(H-3); documented missing-producer behavior in
derive()(H-4); clarified multi-producer vs. most-recent-producer semantics betweenbuild_provenance_graph()andderive()(M-4); addedcanonical_state_hash()cross-reference (M-5); specified composition error semantics (M-6); added set semantics forOut(μ)/In(μ)(M-8); expandedProvenanceNodeconstructor in pseudocode (L-10); documented empty derivation graph semantics (L-11); formalized identity composition (L-12); definedH(P)notation in example (L-13); added Paper III citation (L-14). format_duration()Infinity: Addedis_infinite()check alongsideis_nan()sof64::INFINITYreturns "N/A" instead of formatting as seconds.- Safe
edge_ixCast: Replacedas usizewithusize::try_from()ininspect.rstree builder to guard against truncation on 32-bit targets. - Bench Test Ordering: Added positional assertion ensuring
--precedes the filter pattern inbuild_bench_command. - Bench Empty Warning: Added stderr warning when no benchmark results found.
- WSC Loader Warnings: Warning messages now include entity IDs (first 4 bytes hex) for easier debugging.
- Inspect Docstring: Changed "Prints" to "Displays" in module docstring.
TREE_MAX_DEPTHDoc: Added doc comment explaining the depth limit's purpose.- Fragile
len() - 1: Changedi == node.children.len() - 1toi + 1 == node.children.len()to avoid underflow on empty children (though the loop guards against this, the pattern is safer).
- Bench Filter:
echo-cli bench --filter <pattern>now passes the filter as a Criterion regex (-- <pattern>) instead of a--benchcargo target selector. Previous behavior would look for a bench target named after the pattern rather than filtering benchmarks by regex. - Verify Expected Hash:
--expectednow correctly reports "unchecked" for warps 1+ instead of silently claiming "pass". Emits a stderr warning when--expectedis used with multi-warp snapshots. Text and JSON output now use consistent lowercase status values. - Unused Dependency: Removed
colored = "2"fromwarp-cli(declared but never imported). - Output Hardening:
emit()no longer panics on JSON serialization failure; falls back to stderr. Bench exit status now reports Unix signal numbers instead of a misleading-1. - Error Handling:
collect_criterion_resultsnow logs a warning on unparseableestimates.jsoninstead of silently skipping.format_durationreturns "N/A" for NaN/negative values.att_row_to_valuewarns on missing blob data instead of silent fallback. - Dead Code: Replaced blanket
#![allow(dead_code)]onlib.rswith targeted#[allow(dead_code)]on theoutputmodule only. - Man Page Headers: Subcommand man pages now use prefixed names
(
echo-cli-bench,echo-cli-verify,echo-cli-inspect) in.THheaders instead of bare subcommand names. - Visibility: Narrowed all non-API structs and functions from
pubtopub(crate)in bench, verify, inspect, and wsc_loader modules. Onlycli.rstypes remainpub(required by xtask man page generation). - cargo-deny: Fixed wildcard dependency error for
warp-cliinxtask/Cargo.tomlby adding explicitversion = "0.1.0"alongside the path override. - Man Page Cleanup:
cargo xtask man-pagesnow removes staleecho-cli*.1files before regeneration so the output directory is an exact snapshot.
- Inspect Tree Warp Identity: Multi-warp snapshots now label each tree
section with its warp index (
Tree (warp 0):,Tree (warp 1):) instead of flattening all trees into a single unlabeledTree:section. - WSC Loader Attachment Checks: Replaced
debug_assert!with runtime warnings for attachment multiplicity violations. Previously, release builds silently dropped extra attachments; now emits a warning to stderr. - Test Naming: Renamed
tampered_wsc_failstotampered_wsc_does_not_panicto accurately reflect the test's behavior (no assertion, just no-panic guard). - Test Coverage: Added
roundtrip_with_edge_attachmentsandroundtrip_with_descend_attachmenttests towsc_loader.rs, covering previously untested code paths. - SPEC-0005
global_tickInvariant: Reworded frompatches[i].global_tick == ito correctly state contiguity relative to the payload's start tick, since payloads can begin at any absolute tick viafrom_store(store, wl, 5..10). - SPEC-0005 BTR Verification: Fixed step 5 of the verification algorithm
to reference the actual hash formula from §5.4 instead of a nonexistent
parentsfield. - SPEC-0005 Derivation Algorithm: Fixed backward-cone traversal that dropped
transitive dependencies. The original filter checked the root query slot at
every hop; now accepts all frontier nodes unconditionally (they are already
known-causal) and traces all
in_slotsbackward. - Stale
warp-ffiReferences: Removed deadwarp-ffientry fromdet-policy.yaml, C ABI text fromphase1-plan.md, and stale CLI names fromrust-rhai-ts-division.md.
- TASKS-DAG Spec Path:
SPEC-PROVENANCE-PAYLOAD.md→SPEC-0005-provenance-payload.mdin sub-task title and AC1 (two occurrences). Same stale path fixed in ROADMAP backlogsecurity.md. - SPEC-0005 Byte Counts: Domain separation tag sizes corrected:
echo:provenance_payload:v1\0= 27 bytes (was 28),echo:provenance_edge:v1\0= 24 bytes (was 25). - Project Tour: Updated
warp-clidescription from "Placeholder CLI home" to list actual subcommands (verify, bench, inspect). - CI Formatting: Removed stray blank line between warp-geom and warp-wasm
rustdoc steps in
ci.yml.
- CLI Scaffold (
warp-cli): Replaced placeholder with fullclap4 derive subcommand dispatch. Three subcommands:verify,bench,inspect. Global--format text|jsonflag for machine-readable output. - Verify Subcommand:
echo-cli verify <snapshot.wsc>loads a WSC snapshot, validates structural integrity viavalidate_wsc, reconstructs the in-memoryGraphStorefrom columnar data, and computes the state root hash. Optional--expected <hex>flag compares against a known hash. - WSC Loader: New
wsc_loadermodule bridges WSC columnar format toGraphStore— the inverse ofwarp_core::wsc::build_one_warp_input. Reconstructs nodes, edges, and attachments fromWarpView. - Bench Subcommand:
echo-cli bench [--filter <pattern>]shells out tocargo bench -p warp-benches, parses Criterion JSON fromtarget/criterion/*/new/estimates.json, and renders an ASCII table viacomfy-table. Supports--format jsonfor CI integration. - Inspect Subcommand:
echo-cli inspect <snapshot.wsc> [--tree]displays WSC metadata (tick, schema hash, warp count), graph statistics (node/edge counts, type breakdown, connected components via BFS), and optional ASCII tree rendering depth-limited to 5 levels. - Man Pages: Added
clap_mangen-based man page generation toxtask.cargo xtask man-pagesgeneratesdocs/man/echo-cli.1,echo-cli-verify.1,echo-cli-bench.1,echo-cli-inspect.1.
- SPEC-0005: Published
docs/spec/SPEC-0005-provenance-payload.mdmapping Paper III (AION Foundations) formalism to concrete Echo types. Defines four new types (ProvenancePayload,BoundaryTransitionRecord,ProvenanceNode,DerivationGraph), wire format with CBOR encoding and domain separation tags, two worked examples (3-tick accumulator, branching fork), bridge to existingProvenanceStore/PlaybackCursorAPIs, and attestation envelope with SLSA alignment.
- Evidence Derivation: Replaced artifact-directory-presence check for
DET-001with structured parsing and validation ofstatic-inspection.json;FAILEDstatic inspections now correctly yieldUNVERIFIEDevidence instead of relying solely on artifact existence. Addssource_file,source_status, and optionalerrorfields to DET-001 evidence. - Evidence Script Hardening: Added TypeError guard on
generateEvidenceinput, try/catch withprocess.exit(1)in CLI mode, truncated log interpolations to 200 chars incheckStaticInspection, harmonized parameter naming, and tightened JSDoc return types to'VERIFIED'|'UNVERIFIED'union.
- Docs Build: Rewrote
ADR-0007-impl.mdfrom a 3185-line raw conversation transcript into a proper 13-section ADR document. The Vue template compiler was crashing on bare Rust generics (BTreeMap<NodeId, NodeRecord>, etc.) outside fenced code blocks. The new document preserves all architectural knowledge as a structured implementation companion to ADR-0007. - Stale Hash Domain: Updated three stale
DIND_STATE_HASH_V2references ingraph.rsdoc comment andADR-0007-impl.md§2.1/§7 to match the actual domain prefixecho:state_root:v1defined indomain.rs. Renamed the adjacentV2 Changessubsection toLayout Notesto remove versioning ambiguity. - Module Count: Fixed off-by-one module count in
ADR-0007-impl.mdmetadata and §1 prose (36 → 37) and added qualifier noting tables cover key modules only. - Stale Design Doc: Deleted
docs/WARP-GRAPH.md(1,219-line chat transcript fully superseded byADR-0007-impl.mdandcrates/warp-core/src/wsc/). Extracted all-zero-key caveat into ADR §9.6 andsave_wsc()convenience wrapper gap intoTASKS-DAG.mdbacklog before removal.
- CI Security: Hardened
det-gatesworkflow against script injection by using environment variables for allgithub.*interpolations (branch refs, SHA, run ID, event name). - WASM Reproducibility: Implemented bit-exact reproducibility checks (G4)
for
ttd-browserWASM using hash comparison of clean isolated rebuilds. - Static Inspection: Added automated CI guard for
DET-001covering all 14 DET_CRITICAL crate paths (expanded fromecho-wasm-abionly). Report now conditional on check outcome (PASSED/FAILED). - Evidence Validation: Made artifact presence checks in
validate-evidenceconditional on classification tier; addeddet-macos-artifactscheck;run_reducedandDET_NONCRITICALpaths no longer hard-fail. - Policy Classification: Promoted
warp-benchesfrom DET_NONCRITICAL to DET_IMPORTANT so benchmark crate changes trigger reduced gates. - Benchmark Correctness: Replaced
let _ =with.unwrap()on allbus.emit()calls; migratediter_with_setuptoiter_batched. - CBOR Robustness: Expanded negative security tests for
ProjectionKindandLabelAnchorenum tags and optimizedMAX_OPSboundary check. - Evidence Integrity: Enhanced
generate_evidence.cjsandvalidate_claims.cjswith stricter semantic validation (SHAs, run IDs) and artifact existence checks. - Script Quality: Replaced
process.exit(1)withthrowinclassify_changes.cjs; removed dead import; exported functions for testing. - Governance: Moved
sec-claim-map.jsontodocs/determinism/, formalized gate states inRELEASE_POLICY.md, tightened claim statements inCLAIM_MAP.yaml. - CI Permissions: Added
permissions: contents: readtodet-gates.ymlfor least-privilege workflow execution. - CI Robustness: Made ripgrep install idempotent; gated
validate-evidenceonclassify-changessuccess; invoked CJS scripts vianodefor cross-platform portability. - Evidence Validation: Relaxed
commit_shacheck to acceptlocalsentinel for local development; exportedgenerateEvidenceandvalidateClaimsfunctions for unit testing (#286). - Claims Precision: Sharpened
PRF-001statement to reference specific Criterion benchmark rather than generic threshold language. - Backlog: Added five
TASKS-DAG.mditems: BLD-001 claim gap, macOS parity claim, CI concurrency controls, expanded script test coverage, anddet-policy.yamlpath simplification. - Evidence Completeness: Added
REPRO-001claim for G4 build reproducibility toCLAIM_MAP.yamland wired intogenerate_evidence.cjs. - Script Hardening: Added
Array.isArrayguard forrequired_gatesinvalidate_det_policy.cjs; used explicit null/undefined check invalidate_claims.cjsinstead of falsy coercion. - Test Robustness: Encoded all 5 CBOR fields in
reject_invalid_versionto prevent false passes from decoder field-read reordering. - Docs: Added G3 staging-optional rationale in
RELEASE_POLICY.md; merge-commit revert guidance and evidence packet filing inROLLBACK_TTD.md; documentedtests/**/e2e/**classification rationale indet-policy.yaml. - Gate Coverage: Made G3 (perf-regression) run for all non-
run_nonepaths, not justrun_full. Ensures PRF-001 claim fires for DET_IMPORTANT changes (e.g.,warp-benches). Movedperf-artifactspresence check to always-required. - Classification Precision: Carved
tests/dind*andtestdata/dind/**out of the DET_NONCRITICALdocscatch-all into a dedicateddind-tests-rootentry at DET_IMPORTANT, preventing gate evasion for DIND test modifications. - Policy Simplification: Replaced 20+ explicit docs paths with
**catch-all indet-policy.yaml; max-class semantics ensure higher-priority patterns win. - CI Concurrency: Added
concurrencyblock todet-gates.ymlto cancel superseded runs on the same branch. - CI Robustness: Added push-event empty changelist guard (defaults to full run).
- Dynamic DETERMINISM_PATHS: Replaced hardcoded crate list in
static-inspectionwithyq/jqextraction fromdet-policy.yamlDET_CRITICAL entries, eliminating manual sync. - Evidence Sync Guardrails: Added CI cross-check step validating claim IDs
in
evidence.jsonmatchCLAIM_MAP.yamlexactly; addedsec-claim-map.jsontest ID existence verification against source. - macOS Parity Claim: Added
DET-003toCLAIM_MAP.yamlandgenerate_evidence.cjsfor macOS-specific determinism verification. - Claims Precision: Fixed REPRO-001 evidence type from
static_inspectiontohash_comparison; flattened verboserequired_evidencesyntax. - Test Assertions: Strengthened
reject_invalid_enum_tagstest to assert specific error messages instead of bareis_err()checks. - CI Timeouts: Added
timeout-minutesto alldet-gates.ymljobs to prevent hung jobs from burning the 6-hour GitHub default. - Classification Optimization: Added early-exit in
classify_changes.cjswhenmaxClassreachesDET_CRITICAL(guarded byrequire_full_classification). - Build Repro Fix: Restored
rustup target add wasm32-unknown-unknowninbuild-repro— required becauserust-toolchain.tomlpins a specific Rust version that overrides thedtolnay/rust-toolchainaction's target.
- Path-Aware CI Gates: Implemented
det-policy.yamlandclassify_changes.cjsto classify workspace crates (DET_CRITICAL/IMPORTANT/NONCRITICAL) and drive selective CI gate triggering (G1-G4). - Hardening Gates (G1-G4):
- G1 (Determinism): Integrated float parity tests and the DIND (Deterministic Ironclad Nightmare Drills) suite on both Linux and macOS.
- G2 (Security): Added negative security tests for the CBOR decoder (MAX_OPS, invalid versions/enums, truncated payloads).
- G3 (Performance): Created
materialization_hotpathCriterion benchmark inwarp-benchesto track materialization overhead. - G4 (Build): Added WASM build reproducibility checks verifying bit-exact artifacts across clean rebuilds.
- Evidence Integrity: Added
generate_evidence.cjsandvalidate_claims.cjsto ensure allVERIFIEDclaims are backed by immutable CI artifacts (run IDs, commit SHAs). - Static Inspection: Integrated
DET-001automated static inspection into CI to verify zero-HashMap usage in deterministic guest paths. - Governance: Published
RELEASE_POLICY.md(staging/prod blockers) andROLLBACK_TTD.md(commit-ordered rollback sequences). - Security Claim Mapping: Exported
sec-claim-map.jsonmapping decoder controls to explicit negative test cases.
- Scene Rendering Port (
echo-scene-port): Defined the core data model for deterministic scene updates, including nodes, edges, labels, and camera state. - Scene Codec (
echo-scene-codec): Implemented a high-performanceminicborcodec forSceneDeltaserialization with strict validation. - Float Parity Proof: Integrated a cross-language verification suite
ensuring
canonicalize_f32produces bit-identical results between Rust and JavaScript. - Scene Integrity Drills: Added stress tests for atomic state mutations and robustness against truncated CBOR payloads.
- TTD Wire Protocols (v2): Implemented high-integrity codecs for intents and
receipts.
- Added
EINT v2(Intent Envelope) with Little-Endian fixed headers and BLAKE3 payload checksums. - Added
TTDR v2(Tick Receipt Record) supporting full provenance commitments including state roots and emission digests. - Integrated "Header Integrity Drills" and a decoder fuzzer to ensure protocol robustness.
- Added
- Provenance & Merkle Hardening: Expanded core state model to support
deterministic "Show Me Why" features.
- Added
AtomWriterecords to track causal arrows from rules to state changes. - Implemented
compute_tick_commit_hash_v2, binding schema identity, worldline history, and materialized emissions into a single Merkle root. - Added
TruthSink::clear_sessionto ensure isolated and leak-free memory management for TTD sessions.
- Added
- DIND Phase 5 (The Shuffle): Added robustness against insertion order and
HashMap iteration leaks.
- Implemented
echo-dind convergecommand to verify that shuffles of commutative operations (e.g. disjointput_kv) yield identical final state hashes. - Added randomized scenario generator (
scripts/bootstrap_randomized_order.mjs) producing semantically equivalent transcripts via different orderings. - Added regression tests for Invariant A (Self-Consistency) and Invariant B (Convergence) in CI; see issue #22.
- Implemented
- Domain-Separated Hash Contexts: Added unique domain-separation prefixes
to all core commitment hashes to prevent cross-context structural collisions.
state_root(graph hash),patch_digest(tick patch), andcommit_id(Merkle root) now use distinct BLAKE3 domain tags (e.g.echo:state_root:v1\0).RenderGraph::compute_hash(echo-graph) now uses its own domain tag, ensuring renderable snapshots cannot collide with engine state roots.- Added
warp_core::domainmodule containing public prefix constants. - Integrated cross-domain collision tests into CI.
- Benchmarks CI Integration: The
warp-benchespackage is now integrated into the CI compilation gate (cargo check --benches).
- Roadmap Refactor ("Sharpened" structure): Migrated the flat roadmap into
a 2-level hierarchy based on features and milestones.
- Established a WIP Cap policy: maximum 2 active milestones and 3 active feature files per milestone to prevent context thrashing.
- Added binary Exit Criteria to all milestone READMEs to ensure clear, objective completion signals.
- Renamed milestones for clarity (e.g.
lock-the-hashes,first-light,proof-core). - Audited and updated license headers (SPDX) and formatting (Prettier/MD028) across roadmap documents.
-
Typed
HubConnectErrorenum replaces the opaqueHubConnectError(String). Four variants (Timeout,Connect,Handshake,Subscribe) carry structured context, and ashould_retry()predicate is wired into the ninelives retry policy so future non-transient variants can short-circuit retries. -
Hub observer task exits are surfaced — the fire-and-forget
tokio::spawnis wrapped in a watcher task that logs unexpected exits and panics atwarn!/error!level, preventing silent observer disappearance. -
connect_failuresrestored to per-attempt semantics — the metric now increments on every failed connection attempt (1:1 withconnect_attempts), not once per exhausted retry burst. This preserves dashboard/alerting accuracy during prolonged hub outages. -
Hub observer reconnect now uses
ninelivesretry policy with exponential backoff (250 ms → 3 s) and full jitter, replacing hand-rolled backoff state. Retries are grouped into bursts of 10 attempts; on exhaustion a 10 s cooldown separates bursts. This prevents synchronized retry storms across gateway instances and improves recovery behavior during prolonged hub outages. -
Connection setup (connect + handshake + subscribe) extracted into
hub_observer_try_connect, separating connection logic from retry orchestration. -
Entire connection attempt (connect + handshake + subscribe) is now wrapped in a single 5 s timeout, preventing a stalled peer from hanging the retry loop.
-
Retry policy construction uses graceful error handling instead of
.expect(), so a misconfiguration disables the observer with a log rather than panicking inside a fire-and-forgettokio::spawn. -
Added 1 s cooldown after the read loop exits to prevent tight reconnect loops when the hub accepts connections but immediately closes them.
- Security: upgraded
bytes1.11.0 → 1.11.1 to fix RUSTSEC-2026-0007 (integer overflow inBytesMut::reserve).