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 / case | Check basis | Expected decision |
|---|---|---|
| #specifications | one matching id | target found |
| #shipping | target removed | missing |
| #details | two matching IDs | ambiguous |
Run the acceptance exercise
- Collect the meaningful old fragment links from authorised records and map their intended sections.
- On a test destination, inspect the exact decoded ID and count matching elements.
- 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