The example checks a two-page, one-media archive plan. Home.md maps to TeamNotes/Home.html, Setup.md to TeamNotes/Setup.html, and the diagram belongs at TeamNotes/Setup/diagram.png. A wrong media-folder case is held even though the image filename exists. Destination Home-to-Setup and Reset-anchor checks remain unresolved until a real import provides actual page identities.

Inventory the source revision
GitHub wiki content has its own repository identity rather than necessarily being the project's ordinary documentation directory. Record actual source commit, page filenames, display titles, extensions and outgoing references. The fictional source has Home.md linking to Setup, Setup.md containing a Reset heading and diagram reference, and diagram.png as original media. No real wiki content or image is copied in this example. Keep source identities distinct from destination page URLs, leaving the latter blank until native import evidence supplies them.
Choose and record a Markdown converter/version before generating an archive. Review the syntax actually present, including code fences, tables and relative media references. A successful conversion process does not establish that navigation or every construct survived. Inspect the converted pages before packaging, comparing original text and purpose with the emitted HTML. The helper accepts an editable path inventory for the bounded fixture; it checks those paths rather than parsing or converting an arbitrary wiki.
Associate media with its page
Atlassian's Cloud import FAQ describes a ZIP containing a folder of HTML files, with media stored under a folder matching the page name. Here TeamNotes names the proposed space, Home.html and Setup.html the content pages, and Setup/diagram.png the associated media. A file called diagram.png in Home's folder is not an acceptable substitute. Keep output filename, owning page and intended relative reference together, then verify the actual import associates and displays that asset.
Confirm the target tenant's current import workflow and required permissions before execution. Do not assume that an arbitrary account can create the destination space. The manifest does not perform an upload, create a ZIP, establish permissions or clone a wiki. Count expected content pages separately from any automatically created navigation or overview artifacts. Actual imported counts, pages and media need their own inspection rather than an invented success message or a notification treated as proof of complete content.
Track content and link differences
The documented import limits include code blocks becoming plain text and unsupported navigation, iframe and button constructs. Where a source uses them, record source purpose, converted representation, actual destination appearance and repair decision. Do not promise automatic preservation of authors, Git history or permissions from a content archive. Keep source history independently. For links, collect actual Setup page and Reset-heading behavior after import; a surviving hyperlink or heading does not prove the old target or fragment now reaches the new destination.
Finish with a source-to-destination reconciliation. Keep a hold on missing targets rather than guessing destination URLs to fill the ledger. Inspect the diagram, both pages, code text and relevant links under the actual archive and converter revisions. Source, parser, archive naming or target settings changes require fresh affected checks. The local preflight makes expected structure concrete, while native converted archives and observed Confluence pages remain the evidence for a completed migration.
Make your own working example
Build an original migration-archive preflight for a fictional two-page GitHub wiki, not a converter or importer. Source Home.md links to Setup; Setup.md has Reset heading and diagram.png. Expected paths TeamNotes/Home.html, TeamNotes/Setup.html, TeamNotes/Setup/diagram.png. Provide editable JSON path array, Check manifest, Wrong media folder, Reset.
Check both HTML content pages and the exact Setup-owned diagram path; report expected two pages/one media item, missing paths, duplicate paths and unknown extras. Wrong TeamNotes/Home/diagram.png must not pass because a basename exists. Keep Home-to-Setup and Reset-anchor destination checks unresolved; no guessed destination URLs or automatic link repair.
Display original source/output/owner mapping beside the preflight result. Explain actual converter/version, source commit, target Cloud workflow/permission, archive bytes and destination inspection remain separate. Include documented loss-review categories for code text, navigation, iframe and button usage, without claiming history or permissions transfer. Edits clear prior preflight. No repo cloning, ZIP creation, upload, space creation, destination writes or fabricated import success.
Use one self-contained HTML file with no remote dependency. Keep the initial sample, output, and labeled controls near the top. Use at least 16px text, strong contrast, visible focus, and a stacked layout at 360px without horizontal overflow. Use explicit type=button click handlers and explicit DOM selectors; do not depend on native form submission. Clear stale feedback when task inputs change. Render entered text safely. Keep practice data local to the current page; do not imply saving, sending, or production integration. Return only the finished HTML.
Clarify the media-owner instruction
Keep the source commit, converted archive and destination observations together. In a separate HTML migration map, NOS supports revising eligible static explanations visually without AI regeneration. Clarify Setup's media-folder ownership before the native archive is prepared.