Skip to content

Consolidate public URL imports behind one resumable contract #832

Description

@chubes4

Problem

static-site-importer/import-url currently exposes three execution paths through opaque provider_args: single-page fetch, monolithic whole-site collection, and resumable batch import. A WordPress.com UI caller would need to know internal controls such as collect_site and batch_pages, and the paths can drift in collection, compilation, quality, finalization, and reporting behavior.

Direction

Make the resumable URL batch engine the canonical built-in public URL import path for sites of every size. The public ability accepts the source URL and import intent; SSI owns collection mode, batch size, invocation budget, limits, continuation identity, and progress. Provider-supplied artifacts must continue through the canonical artifact importer.

Acceptance criteria

  • One static-site-importer/import-url contract supports WordPress.com UI callers without collect_site, batch_pages, or runtime tuning.
  • Built-in public URL imports use one resumable implementation for one page or hundreds.
  • Continuation responses retain one stable import identity and deterministic progress.
  • Existing provider override behavior remains supported.
  • Direct and batched behavior parity is covered for collection, import options, final activation, reports, quality, and idempotent replay.
  • CLI remains a projection of the ability rather than a separate policy owner.

Related: #808. Runtime evidence is tracked by Automattic/wp-codebox#2212 and WordPress Playground PR WordPress/wordpress-playground#4172.

AI assistance

OpenAI gpt-5.6-sol via OpenCode was used to reproduce the split-path behavior, inspect the runtime and ability boundaries, and draft this issue. Chris Huber remains responsible for the issue and implementation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions