Skip to content

Keep bounded form topology from invalidating generated site plans #845

Description

@chubes4

Problem

A direct Studio import of https://www.tasteandtravelitaly.com/ reaches Blocks Engine compilation, but SSI rejects the resulting runtime declaration because both forms contain control_topology.truncated: true:

static_site_importer_runtime_entity_invalid
$.forms[0].control_topology: control_topology is truncated and cannot preserve source control parentage.
$.forms[1].control_topology: control_topology is truncated and cannot preserve source control parentage.

Blocks Engine bounds form topology at depth 8 / 128 nodes in HtmlTransformer::formControlTopology(). The overflow path deliberately emits truncated: true, and ArtifactCompiler propagates that topology into the runtime form declaration. SSI correctly fails closed because a provider cannot materialize a form after source parentage has been discarded. The generated site plan therefore carries a declaration that cannot satisfy its downstream provider contract.

Expected

Blocks Engine should produce a valid deterministic result when form topology exceeds its bounds. Preserve every control and required parentage within a supported representation, or keep the oversized form as an explicit non-materializable fallback without emitting an invalid provider declaration.

Reproduction

  1. Compile/import https://www.tasteandtravelitaly.com/ through the canonical Studio URL import flow from Route studio create --from URLs through Data Liberation studio#3952.
  2. Observe that collection and reference validation complete.
  3. Observe SSI reject declaration eeedca931fe21e349bb63e5c90290c8203da20028807a6de38cb8726dfd2574b because both form topologies are truncated.

A bounded contract test can reproduce this without the live site by passing the existing overflow topology fixture ($boundedTopologyHtml(1)) through artifact compilation and provider-plan validation, rather than asserting only that the extractor set truncated: true.

AI assistance

OpenAI gpt-5.6-sol via OpenCode traced the live import failure across Blocks Engine emission and SSI provider validation, identified the contract mismatch, and drafted this report. Chris Huber reviewed and remains responsible for the report.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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