Skip to content

feat(core): every engine explains itself — fromMap, merge, multi-edit trails - #277

Merged
eschizoid merged 1 commit into
mainfrom
design/engine-explain
Jul 30, 2026
Merged

feat(core): every engine explains itself — fromMap, merge, multi-edit trails#277
eschizoid merged 1 commit into
mainfrom
design/engine-explain

Conversation

@eschizoid

Copy link
Copy Markdown
Owner

What (stacked on #276)

Item 4 of the design round: every engine explains itself. The deep mapper promised "the report cannot drift from what the mapper does" while fromMap, merge, and every Telescope.all normalizer explained as empty — despite each building exactly the per-slot data a trail wants, then discarding it.

  • FromMap: one Transformed row per extract (map key → component through the row's converter), one MISSING_SOURCE skip per defaulted slot — derived from the same slot alignment the forward path runs on.
  • Merge: one Mapped row per bound component (SourceClass.field → target; ResolvedStep now records the source-side property name), one skip per unbound component — derived from the same positional plan the forward path binds.
  • Telescope.all: the product's trail is the concatenation of its edits' trails in edit order, on both the fused and sequential branches.

EngineExplainTest pins all three (each previously reported empty). Because every trail is derived from the data the forward path executes, the drift-free property now genuinely holds for all three engines.

…edit trails

The deep mapper promised "the report cannot drift from what the mapper
does" while two of three engines and every multi-edit normalizer explained
as empty — despite each building exactly the per-slot data a trail wants
and then discarding it.

- FromMap emits one Transformed row per extract (map key → component,
  through the row's converter) and one MISSING_SOURCE skip per defaulted
  slot, derived from the same slot alignment the forward path runs on.
- Merge emits one Mapped row per bound component (SourceClass.field →
  target field — ResolvedStep now records the source-side property name)
  and one MISSING_SOURCE skip per unbound component, derived from the same
  positional plan the forward path binds.
- Telescope.all products carry the concatenation of their edits' trails in
  edit order, on both the fused and the sequential branches.

EngineExplainTest pins all three (each previously reported empty).
@eschizoid
eschizoid force-pushed the design/engine-explain branch from 6a3ac14 to a299fd9 Compare July 30, 2026 23:04
@eschizoid
eschizoid changed the base branch from design/facade-lattice to main July 30, 2026 23:04
@eschizoid
eschizoid merged commit c6aebb1 into main Jul 30, 2026
5 checks passed
@eschizoid
eschizoid deleted the design/engine-explain branch July 30, 2026 23:08
@codecov

codecov Bot commented Jul 30, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 79.78%. Comparing base (dc0972f) to head (a299fd9).
⚠️ Report is 2 commits behind head on main.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@             Coverage Diff              @@
##               main     #277      +/-   ##
============================================
+ Coverage     79.74%   79.78%   +0.04%     
- Complexity     2041     2046       +5     
============================================
  Files            88       88              
  Lines          6471     6491      +20     
  Branches       1324     1330       +6     
============================================
+ Hits           5160     5179      +19     
- Misses          769      770       +1     
  Partials        542      542              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant