Module: Ecoportal::API::GraphQL::Diff
- Defined in:
- lib/ecoportal/api/graphql/diff.rb,
lib/ecoportal/api/graphql/diff/change.rb,
lib/ecoportal/api/graphql/diff/deploy.rb,
lib/ecoportal/api/graphql/diff/strategy.rb,
lib/ecoportal/api/graphql/diff/id_resolver.rb,
lib/ecoportal/api/graphql/diff/version_diff.rb,
lib/ecoportal/api/graphql/diff/pairing/engine.rb,
lib/ecoportal/api/graphql/diff/pairing/ledger.rb,
lib/ecoportal/api/graphql/diff/pairing/signals.rb,
lib/ecoportal/api/graphql/diff/cross_object_diff.rb,
lib/ecoportal/api/graphql/diff/pairing/candidate.rb,
lib/ecoportal/api/graphql/diff/command_synthesizer.rb
Overview
Diff engines over the page/template model.
VersionDiff handles the EASY, exact case — two snapshots of the SAME object (same ids),
e.g. a UAT template at version N vs N+1 ("what did this ticket change"). The HARD case —
pairing two DIFFERENT objects with different ids (UAT<->PROD, page<->template) — is an
equivalence-matching problem handled by Diff::Pairing (multi-signal + learning ledger).
CommandSynthesizer turns a change-set into an ordered WorkflowCommand batch (the replayable
"commit"); IdResolver fills in move-target ids from a target doc; Deploy orchestrates
diff -> commands -> apply, gating on the honest unsupported list.
Strategy makes diffing a COMPOSABLE family (pairing x scope x move-sensitivity x intent);
CrossObjectDiff is the cross-object front-end (pairs fields via Pairing::Engine, then
emits the same Change output against the pairing map).
Defined Under Namespace
Modules: Pairing Classes: Change, CommandSynthesizer, CrossObjectDiff, Deploy, IdResolver, Strategy, VersionDiff