Skip to content

MCP 4: report fields that fell back to defaults #133

Description

@deanleigh

Fourth increment of #129. Makes the output trustworthy rather than merely present.

The problem, from a real import

Organiser Name silently fell back to the blueprint placeholder while every other organiser field extracted fine. Nothing said so. The page looked complete and was not.

That is the dangerous failure: not a crash, not an empty field, but a plausible-looking value that came from the blueprint instead of the source. At 135 tours, silent fallback is how a bad page reaches production.

The tool

warnings[] on the response, populated for every destination field that ended up with its blueprint default rather than mapped content.

warnings: [
  { field: "organiserName", reason: "no source content matched; kept blueprint default" }
]

Applies to both dryRun: true and a real import — knowing before creating is better.

What counts as a warning

  • A mapping exists but matched nothing in the source
  • A field has a blueprint value and no mapping targets it, so nothing could ever fill it
  • A mapping targets something not in destination.json (stale after a blueprint change)

The third overlaps existing ValidateConfig startup warnings. Worth reusing rather than duplicating the logic.

What is not a warning

Fields deliberately left to the blueprint. Not everything is meant to be filled from a source, and warning about those would train people to ignore the list.

Distinguishing the two may need something in the workflow config — an expectation that a field should be filled. Worth checking whether the map already implies it before adding config.

Done when

  • Re-importing the tour that missed Organiser Name reports it
  • A clean import returns an empty array, not noise
  • Warnings name the field in the same terms the destination uses

Part of #129. Follows #132.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions