Skip to content

docs(plan): Epic B2 design — multi-source (merge-join + enrichment) - #71

Merged
thiagoluga merged 1 commit into
masterfrom
docs/epic-b2-multisource-design
Jul 1, 2026
Merged

docs(plan): Epic B2 design — multi-source (merge-join + enrichment)#71
thiagoluga merged 1 commit into
masterfrom
docs/epic-b2-multisource-design

Conversation

@thiagoluga

Copy link
Copy Markdown
Owner

Design / decision PR — no code yet. Opens Epic B2 (multi-source), following the same design-first flow as Epic A / B1.

What's here (docs only)

  • docs/epic-b2-multisource.md — the blueprint:
    • Two explicit, user-chosen strategies (D23), because they have different memory/perf profiles:
      • keyset merge-join — an IStreamingSource<TResult> merging two same-key-ordered sources; constant memory (bounded per-key multiplicity); inner + left-outer;
      • enrichment/lookup — an IBatchSource<TResult> that makes one batched lookup per page and maps it in (O(pageSize), structurally no N+1).
    • Both produce a source the existing pipeline consumes unchanged — no parallel pipeline.
    • API sketches, the OSS/Pro boundary, and a B2.1–B2.4 breakdown.
  • DECISIONSD28 (the two strategies) + D29 (packaging — open).
  • PLAN — Epic B2 reshaped.

Decisions I need from you (in the doc)

  1. Pro or free? B2's value is the join sources — there's no natural MIT/Pro split like B1, so it's a straight monetization call. I recommend Pro (NeoReports.Sources.Join.Pro, same model as the XLSX Pro package) for consistency with your B1 choice; the free-MIT alternative maximizes adoption but forgoes B2 revenue.
  2. Join types for v1 — inner + left-outer enough?
  3. Dynamic config for multi-source — defer to a later step (recommended)?
  4. Validation gate — the roadmap gates multi-source on real-user validation; build it now, or validate first?

Once you approve the approach (and answer the above), I'll start B2.1 (enrichment) — the more contained of the two.

Blueprint for multi-source reports before coding (design-before-code per D23). Two
explicit, user-chosen strategies, each producing a source the existing pipeline consumes
unchanged:
- keyset merge-join (streaming, constant memory, inner + left-outer);
- enrichment/lookup (batched per page, O(pageSize), no N+1).

docs/epic-b2-multisource.md has the architecture, the API sketches, the open sub-decisions
(Pro vs free — no natural MIT/Pro split, so a straight monetization call — package name,
join types, dynamic config, validation gate), and a B2.1-B2.4 PR breakdown. DECISIONS adds
D28 (strategies) and D29 (packaging, open). PLAN reshapes Epic B2. Docs only.
@sonarqubecloud

sonarqubecloud Bot commented Jul 1, 2026

Copy link
Copy Markdown

@thiagoluga
thiagoluga merged commit f88b3c0 into master Jul 1, 2026
5 checks passed
@thiagoluga
thiagoluga deleted the docs/epic-b2-multisource-design branch July 1, 2026 18:46
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