Skip to content

[Artifact Forest 3/9] Add bounded scripttool screenplay conversion adapter #424

Open

Description

@szmyty

2026-10-12 — implementation merged; deep testing deferred

PR #443 merged with explicit maintainer authorization at dea72f3.

The three bounded, explicitly pinned FDX/OSF/Fade In imports to Fountain are merged. Doctor integration preserves one tool.scripttool entry and its actual capabilities. Direction/platform qualification and reconciliation of rejected reverse exports remain for the deep testing session.

All four current PRs (#441–#444) are now merged. Source-level conflicts, registry duplication and stale route descriptions were reconciled; the final main tree matches the authored integration tree. Tests, builds, linting, native qualification and CI were not run for this merge. No Actions were dispatched or polled.

This issue retains its existing acceptance/qualification record. The maintainer plans a deep testing session after the implementation sprint and will create any new follow-up issues from actual findings then. No new audit issues were created during this merge.

Next implementation order in ROADMAP.md: #422 → #426 → remaining #429 integration → #430, with #406 as the subsequent layered/localized composition lane.

Earlier checkpoint record

Authored checkpoint — 2026-10-12

Draft PR #443 implements bounded, opt-in FDX / OSF / Fade In → Fountain imports. It is stacked on the #423 model draft #442; neither draft is merged.

Independent readers validate a strict body-only profile and compare ordered semantic content before publication. Provider execution requires an absolute executable path, SHA-256, exact version, timeout, and explicit unqualified opt-in. CLI bundles and graph artifacts retain source/output/version/argv/validation/loss evidence.

The provider evaluation explicitly rejects all three reverse native routes: incomplete FDX envelope and OSF/Fade In paragraph-style defects. Fountain → provider JSON is recorded as a separate inspection/derivative candidate rejected for execution, with no canonical JSON edge. These are source findings, not observed vendor-application failures.

Keep this issue open. 65 focused tests are authored but unrun. At the user's request, no tests, builds, schema checks, format/lint, native probes/conversions, installs/downloads, or CI ran. The three adopted candidates still need exact-binary/platform qualification; acceptance boxes below remain unchanged.

Published commit: 3e076c0333f154b0f1c4f0101bc122ceacb9fd75; exact authored tree: aa9cfe30069e4c1af598976f996505d6ea119590. See handoff and usage/limits.


Parent: #421
Depends on: #423

Provider candidate: https://github.com/rsdoiel/scripttool

Outcome

Adopt/adapt/reject scripttool as a bounded external screenplay conversion provider and, if adopted, expose its proven conversions through the canonical graph.

Observed upstream CLI surface includes:

  • FDX → Fountain
  • FadeIn → Fountain
  • OSF → Fountain
  • Fountain → FDX
  • Fountain → FadeIn
  • Fountain → OSF
  • Fountain → JSON
  • Fountain formatting
  • Fountain character reporting

Requirements

  • Evaluate current source/version/release/install status and AGPL-3.0 obligations.
  • Keep the provider external: do not vendor or link AGPL code into MIT-licensed Renderflow core.
  • Register stable provider/tool and capability IDs.
  • Probe exact version/runtime availability.
  • Invoke directly with bounded argv, timeout, capture, cancellation, and expected-output checks.
  • Validate output independently against [Artifact Forest 2/9] Define canonical screenplay artifacts and capability truth #423 fixtures/schema.
  • Record source/output hashes, provider version, argv digest, loss profile, and validation evidence.
  • Model each supported direction as a separate graph edge.
  • Reject unsupported/unknown behavior instead of falling back silently.

Acceptance criteria

  • At least the six FDX/FadeIn/OSF ↔ Fountain routes are independently proven or explicitly rejected with evidence.
  • Fountain → JSON is represented as an inspection/derivative capability rather than a magical canonical truth.
  • Missing/incompatible provider is excluded during planning with an actionable diagnostic.
  • Provider failure cannot leave a successful artifact/checkpoint.
  • Fixtures cover malformed inputs and representational loss.
  • Licensing/distribution notes are present in the tool registry and docs.

Non-goals

Bundling scripttool into Renderflow distributions or claiming lossless round-trip for every screenplay feature.

Provider observation — 2026-09-25

The current public scripttool README documents explicit CLI commands for:

  • FDX → Fountain
  • FadeIn → Fountain
  • OSF → Fountain
  • Fountain → FDX
  • Fountain → FadeIn
  • Fountain → OSF
  • Fountain → JSON
  • Fountain formatting and a character-list report

The repository is not archived, but its checked-in license is AGPL-3.0. Treat it as an external command provider; do not vendor/link it into Renderflow core. Re-verify current release/install viability during implementation.

Audit-to-roadmap reconciliation — 2026-10-21

Audit: https://github.com/egohygiene/renderflow/blob/audit/flow-suite-20261021T025401Z/audits/flow-suite-20261021T025401Z.md · Complete roadmap: #367

Bounded external Scripttool imports authored; reverse directions remain individually rejected, not enabled by shared codecs.

Bounded preparation: Reconcile evidence for each of the original six directions without expanding accepted routes.

Full outcome remains gated (*): Qualified exact external executable/platform/fixtures; preserve AGPL external-provider boundary and deferred execution.

The maintainer's implementation-sprint qualification deferral remains in force. This audit ran no Renderflow tests, compiler/build/Cargo resolution, product lint/format/schema qualification, native/CLI/provider/visual execution, installers or new CI. Reading existing exact-source provider records is not a qualification rerun. Source implementation and authored tests are not passing-test, native-fidelity, release or downstream-consumer evidence.

This is an additive planning note. The full original issue, acceptance criteria, scope, parent references and historical checkpoints remain authoritative and unchanged. No acceptance box or issue is closed by this audit. Recommended ledger parent: #421.

Activity

  1. added a commit that references this issue on Oct 12, 2026
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