Repository navigation
[Artifact Forest 4/9] Add afterwriting Fountain PDF and screenplay-analysis adapter #425
Description
2026-10-12 — implementation merged; deep testing deferred
PR #444 merged with explicit maintainer authorization at 3ca1f97.
The pinned Fountain-to-PDF adapter, independent analysis/inspection, CLI/graph integration and denied-provider preflight fix are merged. All 66 authored tests are still unrun. Exact runtime, two-run reproducibility and visual qualification remain documented in docs/work/425/QUALIFICATION.md.
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 implementation: #444, stacked on #443, which is stacked on #442. This issue remains open; acceptance criteria below are unchanged.
- Authored strict original Fountain → PDF through the explicit planner/provider boundary and standalone CLI, with fixed A4/US Letter Courier profiles, pinned Node/package bytes, private staging, bounded direct-argv execution, provenance, and mandatory independent PDF inspection.
- Added independent source analysis (exact scene-heading occurrences, element counts, character cue/dialogue statistics, and defined whitespace-token counts), schemas, synthetic fixtures, and source/report/profile/PDF binding at terminal publication. These are Renderflow reports, not upstream CLI analytics.
- Source evaluation found that afterwriting 1.17.3 spans different dependency trees and has neither a version command nor a stable structured analysis/report command. Initial input is ASCII/LF, body-only strict Fountain. Native FDX, title pages, Unicode, custom fonts/settings, embedded fonts, and publishing fidelity are not supported by this checkpoint.
- 66 focused tests are authored and unrun. Per the user's instruction, tests, compilation/builds, schema checks, lint/format, native probes/conversions, installation, and CI are deferred. Source review and exact published Git blob/tree checks are completed; no runtime or reproducibility qualification is claimed.
- Wrap-up: fixed a denied-provider/transform preflight bypass in planning and execution refresh; two additional callback-based regression tests are authored and unrun. Added the deferred qualification runbook. Current feat(screenplay): add pinned afterwriting PDF adapter (#425) [skip ci] #444 head:
777bad45e90ff0ed9d3891a31324f50d2ff7ab5f. - Remaining: execute focused checks; qualify exact platform/runtime/package/font inputs and failure paths; render twice under pinned inputs; compare structural/text/layout evidence and metadata; independently review PDF readability/visual/print behavior. Package pins are not loaded-code attestations, and bounded PDF input/streams are not a hard total-memory quota.
- No merge performed. Land/rebase parent drafts first and reconcile the independent feat(toolchain): add optional creative doctor profile (#429) [skip ci] #441 doctor registry additions without duplicate tool IDs.
Qualification handoff · Provider evaluation
Provider candidate: https://github.com/ifrost/afterwriting-labs
Outcome
Adopt/adapt/reject the afterwriting CLI as a focused Fountain publication/report provider.
Observed upstream CLI/docs support Fountain → formatted PDF through Node.js and screenplay analysis/statistics. The upstream CLI documentation explicitly notes direct FDX conversion is not reliable, so FDX normalization should use the screenplay interchange provider rather than pretending afterwriting owns it.
Requirements
- Evaluate current package/release/runtime support and MIT licensing.
- Register Node/runtime and afterwriting provider requirements explicitly.
- Expose Fountain → screenplay PDF as a typed, validated capability.
- Evaluate useful deterministic analysis outputs such as page count, locations, character/dialogue/action statistics; expose only stable proven outputs.
- Bind PDF generation options (paper/profile, title page, page numbers, scene numbering, fonts, etc.) to a versioned Renderflow profile.
- Run with direct argv and bounded process controls.
- Validate produced PDF independently and retain screenplay/source/provider provenance.
- Keep provider-specific formatting options out of core screenplay semantics.
Acceptance criteria
- Fountain → PDF executes through the canonical provider/planner boundary.
- Two runs under pinned source/config/toolchain are reproducible to the documented level; nondeterministic metadata is normalized or reported.
- Output passes PDF structural validation.
- Missing Node/provider/font requirements fail before claiming output.
- Supported analysis/report capabilities have schemas and fixtures.
- FDX is not advertised as an afterwriting CLI input unless current execution evidence proves it.
Non-goals
Replacing general Pandoc PDF rendering or using afterwriting as the screenplay interchange layer.
Provider observation — 2026-09-25
The current public afterwriting-labs README/docs describe an MIT-licensed, Node.js-based CLI for Fountain → PDF plus screenplay statistics/reporting. Its CLI documentation explicitly lists direct FDX conversion as a known issue, so FDX normalization must not be assigned to this provider without new execution evidence.
Re-verify package/runtime health and current maintenance before adopting it as a supported provider.
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 Afterwriting PDF plus independent Renderflow analysis authored; package/source pin is not installed runtime qualification.
Bounded preparation: Review exact package/Node policy and bounded ASCII/body profile.
Full outcome remains gated (*): Qualified Node/package/fonts and independent PDF/native visual/two-run evidence after deferral.
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
fix(screenplay): respect provider policy before preflight (#425) [ski…
Merge #444: pinned screenplay PDF adapter [skip ci]