Skip to content

Add multi-format CoreEx.IO processing, JSON CodeGen, and Functions examples - #195

Open
chullybun wants to merge 8 commits into
mainfrom
feature/io-multiformat
Open

chullybun wants to merge 8 commits into
mainfrom
feature/io-multiformat

Conversation

@chullybun

@chullybun chullybun commented Nov 11, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Extend CoreEx.IO from CSV-only ingestion to CSV, JSONL, and streaming JSON documents, with a shared processing lifecycle and generation-first integrations. Includes the multi-format foundation through Phase 3 and the Phase 4 API/migration, framework, packaging, and release-note sweep. Intentional compatibility breaks still require maintainer acceptance before merge.

  • Share validation, awaited reporting, metadata, scoped execution, replay, accounting, and telemetry while retaining format-specific CSV behavior.
  • Add nested JSONL objects, optional discriminator-based metadata routing, and JSON root-array, envelope-array, and single-object selection.
  • Use standard System.Text.Json contracts and deserialization. Selected JSON document objects stream from original bytes without a per-object DOM or custom token-to-model deserializer; JSONL retains per-line DOM parsing.
  • Extend File CodeGen, schema, generated validators, namespace documentation, packaged AI references, and migration/release guidance.
  • Add six native Azure Functions examples: simple and hierarchical/nested CSV, JSON, and JSONL, including header/trailer reconciliation, ETag-pinned Blob input, streamed reports, transactional receipts, and outbox writes.

Compatibility and operational boundaries

This includes intentional breaking changes to the file-processing API, CSV YAML configuration, shared cardinality/position types, and telemetry. See the 4.3-to-4.4 migration guide.

CoreEx.IO and CoreEx.CodeGen retain .NET 8, 9, and 10 targets. CoreEx.IO's .NET 8 package requires System.Text.Json 9.0.21 or later to avoid version 8 buffering entire ignored containers during async deserialization. The native Functions examples target .NET 10. Ignore skips decoding unknown string values and therefore does not guarantee their UTF-8 validity; structural checks remain enabled.

ValidateThenExecute preserves whole-file acceptance before replay; ValidateAndExecute explicitly permits partial execution. Source admission, input size, concurrency, retries, and business idempotency remain application-owned. Typed unit graphs, metadata, parser/serializer buffers, and duplicate-name tracking still consume memory; collection validation occurs after allocation. No universal bounded-memory or exactly-once guarantee is implied.

Validation

Full CI passed on 27432f88: Core, Samples (.NET 8/9/10), Samples E2E, Functions runtime, Template validation, Coverage, and the final required-success gate.

The latest follow-up (d31085bd) splits Core CI into one unit-test job and isolated .NET 8/9/10 infrastructure jobs, retaining sequential infrastructure execution, CodeGen checks, merged coverage, and the required-success gate. It also restores standard NuGet root-guide packaging: README/AGENTS remain packaged, while namespace/migration guides remain repository-linked and available through the template AI bundle. CI for this follow-up is pending.

Additional local verification:

  • All 411 IO tests pass on each supported framework.
  • Reproduced the .NET 8 streaming-memory failure, then verified the same 4,390,943-byte input uses approximately 24 KB additional live managed memory near EOF after the serializer upgrade, versus approximately 16 MB before. This is a focused managed-heap characterization, not an absolute memory or process-RSS guarantee.
  • Verified report serialization and omitted zero counters through the real report writer, and added a late-content-failure component regression.
  • Verified generated-type name collision cases, standard IO root-guide packaging, and framework assemblies.
  • Seven focused packaged AI/Aspire/JSON/JSONL scaffold scenarios pass, including generated-consumer execution.

Native runtime proofs use real local infrastructure and simulated BlobCreated webhook delivery because Azurite does not emit Event Grid events; Azure provisioning, authentication, and cloud delivery are not established by these tests. Dependency audit failures were resolved with patched Aspire hosting/AppHost and WebUtilities versions, without suppressing vulnerability checks.

Release-readiness checklist

  • Review the API/configuration migration surface and add consumer migration/release notes.
  • Verify supported-framework CI and full existing end-to-end gates.
  • Validate template-pack/scaffolds, standard root-guide packaging, and AI references.
  • Revisit memory characterization against the documented operational claims.
  • Maintainer acceptance of the intentional public API/configuration/telemetry breaks.

XML remains deferred to Phase 5 and is not implemented in this PR.

References

  • Design and phase tracking: docs/design/io-multiformat/coreex-io-multiformat-plan.md.
  • Runtime documentation: src/CoreEx.IO/README.md.
  • Functions example matrix and test boundaries: tests/CoreEx.Azure.Functions.TestApp/InventoryImports/README.md.

chullybun and others added 4 commits November 9, 2026 14:41
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Eric Sibly <eric.sibly@avanade.com>
Extract the format-neutral coordinator, processing modes, diagnostics, metadata, scoped execution, and replay. Migrate CSV, File CodeGen, consumers, tests, and generated configuration references; simplify extension hooks with focused argument objects.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Eric Sibly <eric.sibly@avanade.com>
Deliver the Phase 2 JSONL runtime, metadata routing, nested mapping and File CodeGen with generated integration consumers. Simplify parsing and policies, reduce the public API, and share cardinality and record-position enums across formats. Update schema, documentation, AI guidance, and focused coverage. Template-pack validation remains explicitly deferred.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Eric Sibly <eric.sibly@avanade.com>
Use System.Text.Json for JSON object deserialization, generate collection validation, split IO documentation by namespace, and demonstrate simple and complex CSV, JSON, and JSONL Blob imports.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Eric Sibly <eric.sibly@avanade.com>
Copilot AI balanced review requested due to automatic review settings November 11, 2026 02:22

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The Ignore policy documentation promises UTF-8 validation of unknown values, but tests confirm ignored strings are not decoded and may contain malformed UTF-8.

1 open issue
What changed in this PR

This PR extends CoreEx.IO’s CSV ingestion foundation to JSONL and streaming JSON documents, sharing validation, reporting, replay, and scoped execution across formats.

Changes:

  • Introduces shared processing contracts, metadata rules, telemetry, and JSON configuration.
  • Extends File CodeGen and generated examples for nested records, collections, and metadata.
  • Adds multi-format inventory import examples, fixtures, and Functions runtime wiring.
File Description
tests/​CoreEx.IO.Test.Unit/​GlobalUsing.cs Imports JSON runtimes and generated fixtures.
tests/​CoreEx.IO.Test.Unit/​Files/​RoutedJsonl/​RoutedJsonlTrailerValidator.g.cs Validates trailer totals.
tests/​CoreEx.IO.Test.Unit/​Files/​RoutedJsonl/​RoutedJsonlTrailerMapping.g.cs Maps trailer fields.
tests/​CoreEx.IO.Test.Unit/​Files/​RoutedJsonl/​RoutedJsonlTrailer.g.cs Defines trailer wire data.
tests/​CoreEx.IO.Test.Unit/​Files/​RoutedJsonl/​RoutedJsonlOrderValidator.g.cs Validates routed orders.
tests/​CoreEx.IO.Test.Unit/​Files/​RoutedJsonl/​RoutedJsonlOrderMapping.g.cs Maps routed order fields.
tests/​CoreEx.IO.Test.Unit/​Files/​RoutedJsonl/​RoutedJsonlOrder.g.cs Defines routed order data.
tests/​CoreEx.IO.Test.Unit/​Files/​RoutedJsonl/​RoutedJsonlHeaderValidator.g.cs Validates batch identifiers.
tests/​CoreEx.IO.Test.Unit/​Files/​RoutedJsonl/​RoutedJsonlHeaderMapping.g.cs Maps header fields.
tests/​CoreEx.IO.Test.Unit/​Files/​RoutedJsonl/​RoutedJsonlHeader.g.cs Defines header wire data.
tests/​CoreEx.IO.Test.Unit/​Files/​RoutedJsonl/​RoutedJsonlHandler.cs Adds a scoped handler starter.
tests/​CoreEx.IO.Test.Unit/​Files/​OrdersJsonl/​OrdersJsonlLineValidator.g.cs Validates nested order lines.
tests/​CoreEx.IO.Test.Unit/​Files/​OrdersJsonl/​OrdersJsonlLineMapping.g.cs Maps nested line fields.
tests/​CoreEx.IO.Test.Unit/​Files/​OrdersJsonl/​OrdersJsonlLine.g.cs Defines order-line wire data.
tests/​CoreEx.IO.Test.Unit/​Files/​OrdersJsonl/​OrdersJsonlHandler.cs Delegates imports to the application.
tests/​CoreEx.IO.Test.Unit/​Files/​OrdersJsonl/​OrdersJsonlContext.g.cs Adds pass-local JSONL context.
tests/​CoreEx.IO.Test.Unit/​Files/​OrdersJsonl/​OrdersJsonlAddressValidator.g.cs Validates nested addresses.
tests/​CoreEx.IO.Test.Unit/​Files/​OrdersJsonl/​OrdersJsonlAddressMapping.g.cs Maps address fields.
tests/​CoreEx.IO.Test.Unit/​Files/​OrdersJsonl/​OrdersJsonlAddress.g.cs Defines address wire data.
tests/​CoreEx.IO.Test.Unit/​Files/​OrdersJsonl/​IOrderImportApplication.cs Defines application-owned execution.
tests/​CoreEx.IO.Test.Unit/​FileBaselineFixtureTests.cs Uses the renamed content-failure outcome.
tests/​CoreEx.IO.Test.Unit/​CoreEx.IO.Test.Unit.csproj Signs the test assembly.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonlFiles/​InventoryJsonlHandler.cs Delegates JSONL adjustments to the service.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonlFiles/​InventoryJsonlContext.g.cs Defaults JSONL imports to validated replay.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonlFiles/​InventoryJsonlAdjustmentMapping.g.cs Maps JSONL adjustments.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonlFiles/​InventoryJsonlAdjustment.g.cs Defines JSONL adjustment data.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonlBatchFiles/​InventoryJsonlBatchTrailerMapping.g.cs Maps JSONL reconciliation totals.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonlBatchFiles/​InventoryJsonlBatchTrailer.g.cs Defines JSONL trailer data.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonlBatchFiles/​InventoryJsonlBatchLineMapping.g.cs Maps nested JSONL bin quantities.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonlBatchFiles/​InventoryJsonlBatchLine.g.cs Defines JSONL bin-line data.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonlBatchFiles/​InventoryJsonlBatchHeaderValidator.g.cs Validates JSONL batch identifiers.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonlBatchFiles/​InventoryJsonlBatchHeaderMapping.g.cs Maps JSONL batch headers.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonlBatchFiles/​InventoryJsonlBatchHeader.g.cs Defines JSONL header data.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonlBatchFiles/​InventoryJsonlBatchHandler.cs Validates and sums nested quantities.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonlBatchFiles/​InventoryJsonlBatchAdjustmentMapping.g.cs Maps JSONL adjustments and children.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonlBatchFiles/​InventoryJsonlBatchAdjustment.g.cs Defines nested JSONL adjustment data.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonFiles/​InventoryJsonHandler.cs Delegates JSON adjustments to the service.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonFiles/​InventoryJsonContext.g.cs Defaults JSON imports to validated replay.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonFiles/​InventoryJsonAdjustmentMapping.g.cs Maps JSON adjustment fields.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonFiles/​InventoryJsonAdjustment.g.cs Defines JSON adjustment data.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonBatchFiles/​InventoryJsonBatchTrailerValidator.g.cs Validates JSON trailer totals.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonBatchFiles/​InventoryJsonBatchTrailerMapping.g.cs Maps JSON trailer totals.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonBatchFiles/​InventoryJsonBatchTrailer.g.cs Defines JSON trailer data.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonBatchFiles/​InventoryJsonBatchLineValidator.g.cs Validates JSON bin lines.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonBatchFiles/​InventoryJsonBatchLineMapping.g.cs Maps JSON bin quantities.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonBatchFiles/​InventoryJsonBatchLine.g.cs Defines JSON bin-line data.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonBatchFiles/​InventoryJsonBatchHeaderValidator.g.cs Validates JSON batch identifiers.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonBatchFiles/​InventoryJsonBatchHeaderMapping.g.cs Maps JSON batch headers.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonBatchFiles/​InventoryJsonBatchHeader.g.cs Defines JSON header data.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonBatchFiles/​InventoryJsonBatchHandler.cs Validates and sums nested quantities.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonBatchFiles/​InventoryJsonBatchAdjustmentMapping.g.cs Maps JSON adjustments and children.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​JsonBatchFiles/​InventoryJsonBatchAdjustment.g.cs Defines nested JSON adjustment data.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​InventoryJsonProcessor.cs Configures tenant context and reporting.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​InventoryJsonlProcessor.cs Configures tenant context and reporting.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​InventoryJsonlBatchContext.cs Holds pass-local JSONL totals.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​InventoryJsonBatchContext.cs Holds pass-local JSON totals.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​InventoryImportReport.cs Shares diagnostic report serialization.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​InventoryCsvBatchContext.cs Holds pass-local CSV totals.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​Files/​InventoryHandler.cs Adopts shared execution arguments.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​Files/​InventoryAdjustmentMapping.g.cs Generalizes mapping documentation only.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​example.jsonl Adds simple JSONL input.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​example.json Adds root-array JSON input.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​example-batch.jsonl Adds routed JSONL batch input.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​example-batch.json Adds enveloped JSON batch input.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​example-batch.csv Adds hierarchical CSV batch input.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​CsvBatchFiles/​InventoryCsvBatchTrailerValidator.g.cs Validates CSV trailer totals.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​CsvBatchFiles/​InventoryCsvBatchTrailerMapping.g.cs Maps positional CSV totals.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​CsvBatchFiles/​InventoryCsvBatchTrailer.g.cs Defines CSV trailer data.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​CsvBatchFiles/​InventoryCsvBatchLineValidator.g.cs Validates CSV bin lines.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​CsvBatchFiles/​InventoryCsvBatchLineMapping.g.cs Maps positional CSV bin fields.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​CsvBatchFiles/​InventoryCsvBatchLine.g.cs Defines CSV bin-line data.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​CsvBatchFiles/​InventoryCsvBatchHeaderValidator.g.cs Validates CSV batch identifiers.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​CsvBatchFiles/​InventoryCsvBatchHeaderMapping.g.cs Maps CSV batch headers.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​CsvBatchFiles/​InventoryCsvBatchHeader.g.cs Defines CSV header data.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​CsvBatchFiles/​InventoryCsvBatchHandler.cs Validates and executes grouped adjustments.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​CsvBatchFiles/​InventoryCsvBatchAdjustmentValidator.g.cs Validates adjustment identifiers.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​CsvBatchFiles/​InventoryCsvBatchAdjustmentMapping.g.cs Maps positional adjustment fields.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​CsvBatchFiles/​InventoryCsvBatchAdjustmentGroup.g.cs Groups adjustments with child lines.
tests/​CoreEx.Azure.Functions.TestApp/​InventoryImports/​CsvBatchFiles/​InventoryCsvBatchAdjustment.g.cs Defines CSV adjustment data.
tests/​CoreEx.Azure.Functions.TestApp/​GlobalUsing.cs Imports JSON processing namespaces.
tests/​CoreEx.Azure.Functions.TestApp/​CoreEx.Azure.Functions.TestApp.csproj Embeds example inputs.
tests/​CoreEx.Azure.Functions.TestApp.CodeGen/​inventory-jsonl-file.yaml Defines simple JSONL generation.
tests/​CoreEx.Azure.Functions.TestApp.CodeGen/​inventory-json-file.yaml Defines simple JSON generation.
tests/​CoreEx.Azure.Functions.TestApp.CodeGen/​inventory-file.yaml Migrates CSV configuration syntax.
tests/​aspire/​CoreEx.Azure.Functions.Test.Aspire/​BlobRuntimeTests.cs Waits for new import functions.
tests/​aspire/​CoreEx.Azure.Functions.Test.AppHost/​AppHost.cs Enables new import functions.
src/​CoreEx.IO/​JsonLines/​JsonLinesFrame.cs Tracks line bytes and provenance.
src/​CoreEx.IO/​JsonLines/​JsonLinesFileOptions.cs Configures JSONL framing and routing.
src/​CoreEx.IO/​JsonLines/​JsonLinesBlankLinePolicy.cs Defines blank-line handling.
src/​CoreEx.IO/​Json/​JsonUnknownMemberPolicy.cs Defines unknown-member handling.
src/​CoreEx.IO/​Json/​JsonFileOptions.cs Configures member policy and depth.
src/​CoreEx.IO/​Json/​JsonFileContext.cs Exposes document reconciliation context.
src/​CoreEx.IO/​Json/​JsonDocumentToken.cs Carries token source spans.
src/​CoreEx.IO/​Json/​JsonDocumentPosition.cs Tracks paths and duplicate status.
src/​CoreEx.IO/​Json/​JsonDocumentKind.cs Defines array/object unit selection.
src/​CoreEx.IO/​GlobalUsing.cs Imports System.Text.Json APIs.
src/​CoreEx.IO/​FileValidationArgs.cs Supplies EOF validation arguments.
src/​CoreEx.IO/​FileSummaryArgs.cs Supplies finalization arguments.
src/​CoreEx.IO/​FileRecordPosition.cs Shares source-position restrictions.
src/​CoreEx.IO/​FileProcessingTelemetry.cs Adds format-neutral metrics.
src/​CoreEx.IO/​FileProcessingOutcome.cs Simplifies returned processing outcomes.
src/​CoreEx.IO/​FileProcessingMode.cs Adds single-pass validation/execution.
src/​CoreEx.IO/​FileExecutionFailedArgs.cs Carries business failure provenance.
src/​CoreEx.IO/​FileDiagnosticCategory.cs Removes the processing-limit category.
src/​CoreEx.IO/​FileDiagnosticArgs.cs Supplies shared diagnostic arguments.
src/​CoreEx.IO/​FileDateTime.cs Shares explicit-offset detection.
src/​CoreEx.IO/​FileCardinality.cs Shares occurrence-count rules.
src/​CoreEx.IO/​Csv/​CsvRecordPosition.cs Removes the CSV-specific position enum.
src/​CoreEx.IO/​Csv/​CsvRecordCardinality.cs Removes the CSV-specific cardinality enum.
src/​CoreEx.IO/​Csv/​CsvProcessingTelemetry.cs Removes CSV-specific metrics.
src/​CoreEx.IO/​Csv/​CsvParsedRecord.cs Updates terminal-condition documentation only.
src/​CoreEx.IO/​Csv/​CsvMetadataDefinition.cs Defines CSV metadata routes.
src/​CoreEx.IO/​Csv/​CsvHierarchyNode.cs Adopts shared cardinality.
src/​CoreEx.IO/​Csv/​CsvFileMapping.cs Makes header detection internal.
src/​CoreEx.IO/​CoreEx.IO.csproj Updates package description and test access.
src/​CoreEx.CodeGen/​Scripts/​file-script.yaml Generalizes mapping generation labels.
src/​CoreEx.CodeGen/​Files/​Templates/​FileValidator_cs.hbs Uses resolved CLR property names.
src/​CoreEx.CodeGen/​Files/​Templates/​FileRecord_cs.hbs Uses resolved CLR property names.
src/​CoreEx.CodeGen/​Files/​docs/​Unit.md Documents business-unit selection.
src/​CoreEx.CodeGen/​Files/​docs/​Structure.md Removes obsolete envelope options.
src/​CoreEx.CodeGen/​Files/​docs/​Metadata.md Documents shared metadata configuration.
src/​CoreEx.CodeGen/​Files/​docs/​JsonlRecord.md Documents discriminator matching.
src/​CoreEx.CodeGen/​Files/​docs/​JsonlMetadata.md Documents JSONL metadata placement.
src/​CoreEx.CodeGen/​Files/​docs/​Jsonl.md Documents framing and routing options.
src/​CoreEx.CodeGen/​Files/​docs/​JsonDocumentMetadata.md Documents metadata pointer selection.
src/​CoreEx.CodeGen/​Files/​docs/​Json.md Documents shared JSON settings.
src/​CoreEx.CodeGen/​Files/​docs/​CsvRecord.md Documents CSV route constraints.
src/​CoreEx.CodeGen/​Files/​docs/​CsvProperty.md Documents positional field selection.
src/​CoreEx.CodeGen/​Files/​docs/​CsvMetadata.md Documents CSV metadata placement.
src/​CoreEx.CodeGen/​Files/​docs/​Collection.md Documents nested collection constraints.
src/​CoreEx.CodeGen/​Files/​Config/​NodeConfig.cs Emits shared cardinality references.
src/​CoreEx.CodeGen/​Files/​Config/​JsonLinesRecordConfig.cs Validates explicit JSONL route matches.
src/​CoreEx.CodeGen/​Files/​Config/​JsonLinesMetadataConfig.cs Validates JSONL metadata placement.
src/​CoreEx.CodeGen/​Files/​Config/​JsonDocumentMetadataConfig.cs Configures JSON metadata pointers.
src/​CoreEx.CodeGen/​Files/​Config/​CsvPropertyConfig.cs Validates positional CSV selectors.
src/​CoreEx.CodeGen/​Files/​Config/​CsvMetadataConfig.cs Validates CSV metadata placement.
docs/​design/​io-multiformat/​phase0-fixtures/​valid.jsonl Adds valid nested JSONL fixture.
docs/​design/​io-multiformat/​phase0-fixtures/​valid.csv Adds equivalent hierarchical CSV fixture.
docs/​design/​io-multiformat/​phase0-fixtures/​valid-envelope.json Adds JSON envelope fixture.
docs/​design/​io-multiformat/​phase0-fixtures/​valid-array.json Adds JSON root-array fixture.
docs/​design/​io-multiformat/​phase0-fixtures/​trailing-garbage.json Adds trailing-content failure fixture.
docs/​design/​io-multiformat/​phase0-fixtures/​single-object.json Adds root-object fixture.
docs/​design/​io-multiformat/​phase0-fixtures/​routed.jsonl Adds metadata-routed JSONL fixture.
docs/​design/​io-multiformat/​phase0-fixtures/​missing-child.jsonl Adds missing-collection fixture.
docs/​design/​io-multiformat/​phase0-fixtures/​malformed-line.jsonl Adds malformed-line fixture.
docs/​design/​io-multiformat/​phase0-fixtures/​late-total.json Adds reconciliation-mismatch fixture.
docs/​design/​io-multiformat/​phase0-fixtures/​invalid-child.jsonl Adds nested-validation failure fixture.
docs/​design/​io-multiformat/​phase0-fixtures/​empty-array.json Adds empty-array fixture.
AGENTS.md Expands package descriptions to JSONL.
.github/​prompts/​coreex-file.prompt.md Expands prompt scope to JSONL.
.github/​coreex-ai-workflows.md Expands file-workflow description.
.claude/​commands/​coreex-file.md Expands command scope to JSONL.

Review effort: Balanced

Clarify ignored JSON string validation, use the streaming-capable serializer on .NET 8, and read runtime report progress without deserializing internal bookkeeping. Include migration notes, packaged documentation, generated-name guards, and expanded CI consumer checks.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Eric Sibly <eric.sibly@avanade.com>
Copilot AI balanced review requested due to automatic review settings November 11, 2026 16:23

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Intentional public API, configuration, and telemetry breaks require maintainer compatibility review, while supported-framework CI and template-pack/scaffold validation remain pending.

No open issues 🎉

1 resolved since last review

Review effort: Balanced

Assert omitted zero-valued report counters using the actual serialized report contract and cover late content failure in component tests. Upgrade Aspire hosting and WebUtilities dependency floors, including sample hosts and generated Aspire projects, instead of suppressing NuGet audit errors.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Eric Sibly <eric.sibly@avanade.com>
Copilot AI balanced review requested due to automatic review settings November 11, 2026 16:33

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Intentional public API/configuration breaks and packaged template dependency changes require maintainer compatibility review and supported-framework/template validation that remain pending and cannot be established from this source-only review.

No open issues 🎉

Review effort: Balanced

Use explicit None items so multi-target pack evaluation includes the migration and namespace guides. Verify all packed guides and supported assemblies, plus seven packaged AI/Aspire/JSON consumer scenarios.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Eric Sibly <eric.sibly@avanade.com>
Copilot AI balanced review requested due to automatic review settings November 11, 2026 16:56

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Public API and configuration breaking changes require maintainer compatibility review, while SDK and dependency upgrades still await supported-framework CI and template-pack/scaffold validation.

No open issues 🎉

Review effort: Balanced

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Eric Sibly <eric.sibly@avanade.com>
Copilot AI balanced review requested due to automatic review settings November 11, 2026 20:38

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

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.

2 participants