This prompt is for platform and integration engineers who maintain API contracts that evolve over time. The job-to-be-done is migrating an AI-generated structured output that was produced for an older schema version (v1) into a payload that conforms to a newer schema version (v2). You use this prompt when your inference pipeline has a cached response, a stored completion, or a queued message that was valid under a previous contract but will be rejected by the current downstream parser, database, or API gateway. The prompt takes the original output, the old schema, the new schema, and a migration specification that defines field renames, structural changes, and new required fields with their safe defaults.
Prompt
Schema Version Migration Repair Prompt

When to Use This Prompt
Define the job, reader, and constraints for the Schema Version Migration Repair Prompt.
Do not use this prompt when the original output is semantically incorrect or hallucinated—this is a structural migration, not a content repair. If the v1 output contains factual errors, missing citations, or low-confidence fields, route it through a separate repair or escalation prompt first. Also avoid this prompt when the schema change is so large that a full regeneration from source context would be more reliable than a migration; the prompt works best for incremental contract changes such as renaming customer_id to account_id, moving address from a flat field to a nested location object, or injecting a new version field with a constant default. The reader is expected to have both schema versions and a migration spec ready before invoking this prompt.
Before wiring this into production, define your validation step: the migrated output must pass the v2 schema validator. If it fails, the retry loop should feed the validation errors back into the prompt with the original v1 output still available as context. Set a hard retry budget—typically 2 attempts—because structural migrations are deterministic and repeated failures indicate a migration spec mismatch, not a model error. Always log the migration diff for auditability, and if the prompt cannot produce valid v2 output after the retry budget, escalate to a human with the original payload, both schemas, and the failed migration attempts.
Use Case Fit
Where the Schema Version Migration Repair Prompt delivers value and where it introduces unacceptable risk.
Good Fit: Deterministic API Evolution
Use when: You have a strict migration spec with explicit field renames, type changes, and new required fields with defined defaults. The prompt can reliably transform old-schema JSON to new-schema JSON without guessing. Guardrail: Provide the migration spec as a structured diff, not prose.
Bad Fit: Semantic Restructuring
Avoid when: The schema change involves splitting a single concept into multiple new objects or merging fields that require business logic. The model may hallucinate relationships or lose data fidelity. Guardrail: Use a deterministic transformation function for complex restructuring; reserve the prompt for straightforward field-level changes.
Required Input: Migration Spec
Risk: Without an explicit mapping of old fields to new fields, the model will guess and silently corrupt data. Guardrail: Always provide a machine-readable migration spec (JSON patch, field map, or structured diff) alongside the old-schema output. Never rely on the model to infer schema changes from examples alone.
Operational Risk: Silent Data Corruption
Risk: A migrated field may look valid but contain semantically wrong data because the model misinterpreted the old field's meaning. Guardrail: Run the migrated output through the new schema's validator and compare field-level checksums where possible. Flag any field that was transformed, not just copied, for human spot-checking.
Operational Risk: Default Value Staleness
Risk: New required fields injected with safe defaults may become stale if the defaults change later. Downstream systems may treat the default as a real value. Guardrail: Tag all injected defaults with a metadata field like "injected_default": true so consumers can distinguish real data from placeholders.
Good Fit: Backward-Compatible Rollouts
Use when: You're running a canary deployment where some services still expect the old schema and others expect the new one. The prompt can act as a translation layer during the transition window. Guardrail: Version-stamp every migrated payload and log the migration prompt version for auditability.
Copy-Ready Prompt Template
A reusable prompt template for migrating structured output from an old schema version to a new one, with placeholders for the migration spec, source data, and output constraints.
This prompt template is designed for platform teams evolving API contracts. It takes a structured payload generated for an older schema version and migrates it to a newer version by renaming fields, restructuring nested objects, and injecting new required fields with safe defaults. The template is self-contained and can be copied directly into your repair harness or retry loop. All dynamic inputs are represented as square-bracket placeholders that your application must populate before sending the request to the model.
textYou are a schema migration repair agent. Your task is to transform a structured output that was generated for an older schema version into a payload that conforms to a newer schema version. ## MIGRATION SPECIFICATION [MIGRATION_SPEC] ## SOURCE PAYLOAD (OLD SCHEMA) [SOURCE_PAYLOAD] ## OUTPUT SCHEMA (NEW VERSION) [OUTPUT_SCHEMA] ## INSTRUCTIONS 1. Parse the SOURCE PAYLOAD and identify all fields, nested objects, and arrays. 2. Apply the MIGRATION SPECIFICATION to rename fields, restructure nested objects, and add or remove fields as specified. 3. For any new required fields in the OUTPUT SCHEMA that have no corresponding source data, inject a safe default value based on the field type: - String: empty string "" - Number: 0 - Boolean: false - Array: empty array [] - Object: empty object {} - Nullable: null 4. Preserve all semantic content from the SOURCE PAYLOAD. Do not drop or alter data unless the MIGRATION SPECIFICATION explicitly requires it. 5. Validate the migrated payload against the OUTPUT SCHEMA. If any required field is still missing after applying defaults, flag it in the migration report. 6. Output a JSON object with two top-level keys: - "migrated_payload": the fully migrated and validated payload - "migration_report": an object containing: - "fields_renamed": array of {old_name, new_name} for each renamed field - "fields_added": array of field names that were injected with defaults - "fields_removed": array of field names that were dropped per the migration spec - "defaults_applied": array of {field, default_value, reason} for each injected default - "warnings": array of strings describing any issues that could not be resolved - "confidence": one of "high", "medium", or "low" indicating overall migration confidence ## CONSTRAINTS - Do not modify the OUTPUT SCHEMA itself. - Do not invent data for new required fields beyond safe type-appropriate defaults. - If the MIGRATION SPECIFICATION is ambiguous for a particular field, apply the most conservative interpretation and flag it in warnings. - If the SOURCE PAYLOAD contains fields not mentioned in the MIGRATION SPECIFICATION, preserve them unless the OUTPUT SCHEMA prohibits additional properties. - Return only valid JSON. No markdown fences, no commentary outside the JSON object.
To adapt this template for your environment, replace each square-bracket placeholder with the appropriate content before sending the request. [MIGRATION_SPEC] should contain a clear, structured description of every field rename, structural change, and new field requirement. This can be a JSON object mapping old paths to new paths, a natural-language changelog, or a structured diff. [SOURCE_PAYLOAD] is the original structured output that failed validation against the new schema. [OUTPUT_SCHEMA] is the target JSON Schema, TypeScript interface, or Pydantic model definition that the migrated payload must satisfy. For high-risk migrations involving financial, healthcare, or compliance data, always route the migration_report with confidence below "high" to a human reviewer before accepting the migrated payload into downstream systems.
Prompt Variables
Placeholders required by the Schema Version Migration Repair Prompt. Wire these into your retry harness before calling the model.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[ORIGINAL_OUTPUT] | The structured output generated for the old schema version that needs migration | {"user_name": "Alice", "contact": {"email_addr": "alice@example.com"}} | Must be valid JSON. If the original output is malformed, run JSON Repair Prompt first. Parse check required before migration. |
[OLD_SCHEMA_VERSION] | Semantic version or identifier of the schema the original output conforms to | v1.2.0 | Must match a known version in the migration spec. Reject if version is unrecognized or missing from the migration map. |
[NEW_SCHEMA_VERSION] | Target schema version to migrate the output to | v2.0.0 | Must differ from [OLD_SCHEMA_VERSION]. Reject if versions are identical or if target version predates source version. |
[MIGRATION_SPEC] | Machine-readable description of field renames, restructures, new required fields, and deprecated fields between versions | {"renames": {"email_addr": "email"}, "new_required": {"phone": {"default": null, "type": "string | null"}}, "deprecated": ["contact"], "restructures": {"contact": {"move_to_root": ["email"]}}} | Must be valid JSON. Schema check: spec must include at least one of renames, new_required, deprecated, or restructures. Reject empty spec. |
[OUTPUT_SCHEMA] | JSON Schema for the target version to validate the migrated output against | {"type": "object", "properties": {"user_name": {"type": "string"}, "email": {"type": "string"}, "phone": {"type": ["string", "null"]}}, "required": ["user_name", "email", "phone"]} | Must be valid JSON Schema draft-07 or later. Validation of migrated output against this schema is required before returning success. |
[DEFAULT_POLICY] | Instruction for how to populate new required fields when no source data exists: use_null, use_empty_string, use_placeholder, or escalate | use_null | Must be one of the four allowed values. Reject any other string. If escalate is selected, the prompt must return an escalation decision instead of a migrated payload when defaults are needed. |
[MAX_RETRIES] | Maximum number of migration repair attempts before escalating | 3 | Must be an integer between 1 and 5. If the migrated output fails [OUTPUT_SCHEMA] validation after this many attempts, the harness must escalate rather than retry indefinitely. |
[MIGRATION_NOTES] | Optional human-readable notes about migration intent, edge cases, or business rules that the spec cannot express | Phone field is optional for existing users but required for new schema compliance. Use null when missing. | Optional field. If provided, must be a non-empty string. The prompt should treat these notes as authoritative overrides to the migration spec when conflicts arise. |
Implementation Harness Notes
How to wire the Schema Version Migration Repair Prompt into a production application with validation, retries, and safe defaults.
The Schema Version Migration Repair Prompt is designed to sit inside a post-generation repair loop, not as a standalone endpoint. After a model produces output against an older schema version, your application should validate that output against the expected current schema. If validation fails with errors indicating version drift—such as missing required fields, renamed properties, or structural mismatches—the harness routes the invalid payload and the migration specification into this repair prompt. The prompt returns a migrated payload that must pass validation against the new schema before the application accepts it.
Wire the prompt into a retry pipeline with a strict budget. On the first validation failure, extract the error messages and compare them against your known migration spec. If the errors match expected version-change patterns, call the repair prompt with [ORIGINAL_OUTPUT], [CURRENT_SCHEMA], and [MIGRATION_SPEC]. Validate the repaired output against [CURRENT_SCHEMA] using a JSON Schema validator like Ajv or Pydantic. If validation passes, log the repair event with the original and migrated payloads for audit. If validation fails again, increment a retry counter and re-invoke the repair prompt with the new validation errors appended to [PREVIOUS_ERRORS]. Stop after three attempts and escalate to a human review queue with the full repair history.
Critical safety checks must run before accepting any migrated output. Compare the semantic content of the original and migrated payloads using a field-level diff. If the repair prompt injected defaults for new required fields, flag those fields for downstream consumers so they know the values were not present in the original data. For high-risk domains such as finance, healthcare, or legal, require human approval on any migration that modified more than a configurable percentage of fields or injected defaults into required fields. Log every migration attempt—successful or failed—with the model version, prompt version, migration spec version, and validation result for observability and debugging. Never silently accept a repaired payload without validation, and never retry indefinitely.
Expected Output Contract
Fields, types, and validation rules for the migrated schema output. Use this contract to validate the model's response before accepting it into downstream systems.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
migrated_output | object | Top-level must be a valid JSON object. Parse check: JSON.parse must succeed. | |
migrated_output.schema_version | string (semver) | Must match [TARGET_SCHEMA_VERSION]. Regex check: ^\d+.\d+.\d+$. | |
migrated_output.data | object or array | Must conform to [TARGET_SCHEMA] structure. Schema check: validate against provided JSON Schema. | |
migrated_output.migration_log | array of objects | Each entry must have field, from_version, to_version, action, and default_applied fields. Schema check: validate log entry schema. | |
migrated_output.migration_log[].field | string (JSONPath) | Must reference a field that was renamed, restructured, or injected. Parse check: valid dot-notation path. | |
migrated_output.migration_log[].action | enum: rename | restructure | inject_default | remove | Must be one of the allowed enum values. Enum check: exact string match. | |
migrated_output.migration_log[].default_applied | boolean | Must be true if action is inject_default and a safe default was used. Logic check: consistency with action field. | |
migrated_output.warnings | array of strings or null | If present, each string must describe an ambiguity or non-destructive change. Null allowed when no warnings exist. |
Common Failure Modes
Schema migration repair fails in predictable ways. These cards cover the most common failure modes when migrating structured output from an old schema version to a new one, and how to guard against them.
Semantic Drift During Field Rename
What to watch: The model renames a field correctly but subtly changes its meaning or value during migration. For example, customer_name becomes full_name but the value shifts from 'Acme Corp' to 'Acme Corporation (Primary Account)'. Guardrail: Add an explicit instruction to preserve original values exactly when renaming fields, and run a pre-migration vs post-migration diff on renamed fields to detect value changes.
Hallucinated Defaults for New Required Fields
What to watch: The new schema requires a field that has no equivalent in the old output. The model invents plausible but unsupported data instead of using a safe sentinel. For example, injecting a fake migration_timestamp or guessing a risk_score. Guardrail: Provide an explicit defaults map in the prompt for every new required field, and validate that injected values match only the allowed defaults or null sentinels.
Nested Object Restructuring Collapse
What to watch: When flattening nested objects or restructuring hierarchies, the model drops intermediate fields, merges sibling keys, or loses array ordering. For example, address.street and address.city become a single malformed location string. Guardrail: Include a before/after structural example in the prompt showing the exact transformation, and validate the output against the new schema with a structural diff tool.
Enum Value Orphan in New Schema
What to watch: An old enum value has no direct equivalent in the new schema's allowed values. The model either picks a wrong match or drops the field entirely. For example, status: 'pending_review' has no match in the new enum ['draft', 'active', 'archived']. Guardrail: Supply an explicit enum mapping table in the migration spec, and flag unmapped values for human review rather than allowing silent mapping or deletion.
Array Element Count Mismatch
What to watch: The old output has an array of N items, but the new schema expects exactly M items or a different cardinality constraint. The model truncates, duplicates, or pads the array incorrectly. Guardrail: Define array cardinality rules explicitly in the migration spec, and add a post-migration check that validates array lengths against the new schema's minItems/maxItems constraints.
Type Coercion with Data Loss
What to watch: A field changes type between schema versions, and the model coerces the value in a way that loses precision or meaning. For example, converting a float price: 19.99 to an integer price_cents: 19 instead of 1999. Guardrail: Specify exact coercion rules with multiplication factors, format templates, or rounding policies in the migration prompt, and validate numeric precision post-migration.
Evaluation Rubric
Use this rubric to test whether the Schema Version Migration Repair Prompt produces safe, correct, and complete outputs before deploying it into a production pipeline. Each criterion includes a pass standard, a failure signal, and a concrete test method.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Field Rename Accuracy | All fields specified in [MIGRATION_SPEC] are renamed correctly in the output. No old field names remain. | Old field name persists in output. A field is renamed to an incorrect target name. | Diff the output keys against the [MIGRATION_SPEC] rename map. Assert zero old-key occurrences and 100% new-key match. |
Structural Restructuring | Nested objects are correctly reshaped according to [MIGRATION_SPEC] (e.g., flattened, nested, or moved). No data is lost from the original payload. | A value from the original payload is missing. A value is placed at the wrong nesting level. | Traverse the output structure using a path-based comparison against the [MIGRATION_SPEC] restructuring rules. Assert value equality for all leaf nodes. |
New Required Field Injection | Every new required field listed in [MIGRATION_SPEC] is present in the output with a safe, context-appropriate default value. | A new required field is missing. A new required field contains a hallucinated value not derivable from the input or spec. | Check output for presence of all new required fields. Validate that injected values match the default strategy defined in [MIGRATION_SPEC] (e.g., null, empty string, or derived). |
Semantic Content Preservation | All semantic data from [ORIGINAL_OUTPUT] is preserved in the migrated output. No facts, values, or relationships are altered or dropped. | A numeric value is changed. A text description is rewritten or summarized. A list item is dropped. | Perform a deep semantic diff: extract all leaf values from [ORIGINAL_OUTPUT] and assert they exist unchanged in the migrated output, excluding only fields explicitly deprecated in [MIGRATION_SPEC]. |
Output Schema Validity | The migrated output passes strict validation against [TARGET_SCHEMA] with zero errors. | Validation against [TARGET_SCHEMA] returns any error (type mismatch, missing required, additional property, pattern failure). | Run the output through a JSON Schema validator using [TARGET_SCHEMA]. Assert zero errors. This is a hard gate. |
Deprecated Field Removal | All fields marked as deprecated in [MIGRATION_SPEC] are absent from the output. | A deprecated field remains in the output. | Intersect the output keys with the deprecated field list from [MIGRATION_SPEC]. Assert the intersection is empty. |
Repair Confidence Flag | The output includes a [REPAIR_CONFIDENCE] field with a value of 'high', 'medium', or 'low' that accurately reflects the migration complexity. | The [REPAIR_CONFIDENCE] flag is missing. The flag is 'high' when a destructive coercion or data loss occurred. | Assert the field exists and is a valid enum value. For test cases with known destructive migrations, assert the flag is not 'high'. |
Idempotency | Running the migration prompt twice on the same [ORIGINAL_OUTPUT] produces identical results. | A second migration pass alters field values, renames fields differently, or injects different defaults. | Execute the prompt twice with identical inputs. Perform a byte-level or deep-object equality check. Assert full equality. |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Use the base prompt with a single migration spec and no retry loop. Provide the [OLD_SCHEMA], [NEW_SCHEMA], [MIGRATION_SPEC], and [OUTPUT_TO_MIGRATE] as plain text. Accept the first valid result.
codeYou are a schema migration assistant. Given the output below, which was generated for [OLD_SCHEMA], migrate it to conform to [NEW_SCHEMA] using the following migration rules: [MIGRATION_SPEC] Output to migrate: [OUTPUT_TO_MIGRATE] Return only the migrated output as valid JSON matching the new schema.
Watch for
- Missing field defaults when the migration spec is incomplete
- Nested object restructuring that loses semantic content
- Enum value mappings that don't account for removed or renamed members

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us