Repository navigation
[Artifact Forest 3/9] Add bounded scripttool screenplay conversion adapter #424
Description
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.
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
Merge #443: bounded scripttool imports [skip ci]