FIELD NOTES · ACCEPTANCE EXERCISES

A migrated URL can work while its section link is broken

An old link ending in #specifications may reach the correct new page but no longer reach its section. Extend migration acceptance beyond status and destination to the intended fragment target. This is a small content-address contract, not permission to rewrite legacy pages or redirect rules.

Who should use this acceptance brief

Businesses migrating long service pages or documentation. Use this as a scoped website handover task. Where real system evidence is required, teaching examples are not a substitute.

Source-bound platform fact

HTML id identifies an element for fragment links and must be unique within the document. A successful page response alone does not check that target. MDN: HTML id · Checked 16 October 2026.

Filled teaching example

Synthetic example, not a client case. Finite inputs, expected decisions and counterexamples follow; no live integration is claimed.

On narrow screens, scroll to read the complete table.

Input / caseCheck basisExpected decision
#specificationsone matching idtarget found
#shippingtarget removedmissing
#detailstwo matching IDsambiguous

Run the acceptance exercise

  1. Collect the meaningful old fragment links from authorised records and map their intended sections.
  2. On a test destination, inspect the exact decoded ID and count matching elements.
  3. Follow the real link and verify scrolling, heading context and keyboard behaviour separately.

Interpret the result and retain evidence

The finite checker returns missing, unique or ambiguous for supplied IDs. It does not reproduce browser scroll behaviour, redirects or text-fragment syntax. Preserve the original URL, the destination response and a section-level observation; a 200-only migration spreadsheet cannot prove this last step.

Limits before implementation

Case, encoding and client-render timing need actual browser tests. Existing old pages and redirect configuration remain frozen.

Replay the finite example

Save both files in one folder and run with Node22.13 or newer. The example sends no network requests and changes no account or site. Filled inputs and expected outputs · Inspectable functions

node decision-check.mjs migration-fragment-target-proof.json