Pilot slice: the smallest unit of migration execution

A pilot is not “half of a migration,” but a bounded check of a specific source-to-target hypothesis. Choose one endpoint, job, adapter, or other observable flow for which you can name inputs, outputs, dependencies, owner, and stop condition.

Separate migration execution into preparation, pilot, verification, and decision. Before the pilot, have migration discovery, compatibility assumptions, and a rollback path; otherwise a small diff creates a small but unpredictable risk.

Branch and worktree as boundary controls

StepWhat to recordWhy
Baselinerevision, clean/known diff, available checkshave a comparison point
Branchseparate name and one pilot scopedo not mix migration with feature work
Worktreeisolated path, owner, and cleanup rulereduce overlap between parallel changes
Reviewdiff, affected paths, risk, and evidencestop scope drift before merge
DecisionGO, HOLD, NARROW, or ROLLBACKmake the result explicit

Entry and exit gates for a pilot slice

  1. Describe the migration hypothesis and bounded affected area in the task spec and migration plan.
  2. Create a baseline revision and branch/worktree; do not mix unrelated changes.
  3. Check that the rollback trigger, owner, and checkpoint are known before the first edit.
  4. Perform only the agreed slice and collect the diff, focused checks, and behavior evidence.
  5. Choose GO, HOLD, NARROW, or ROLLBACK; expanding scope requires a new decision.

When to stop a pilot

  • the source baseline cannot be reproduced or a critical input remains Unknown;
  • an undescribed data-format, configuration, or side-effect change is found;
  • the behavior comparison has no observable oracle or reveals a discrepancy;
  • rollback cannot return code and state to a defined safe point;
  • the diff leaves the bounded slice or requires an unapproved dependency upgrade.

Canonical lesson source · JavaRush

Open JavaRush material