{"v":"<p dir=\"auto\"><strong>Closing \u2014 committed and verified (2026-10-05).<\/strong><\/p>\n<p dir=\"auto\">The pipeline is on <code>main<\/code> (<code>ef52232<\/code>, <code>745cfee<\/code>, <code>3bbf2db<\/code>): <code>scripts\/form-v2-pipeline.php<\/code>, <code>code\/form_v2_pipeline.inc.php<\/code>, <code>\/admin\/form-v2-publish<\/code>, and <code>scripts\/test-form-v2-pipeline-state.php<\/code> (25 passed, 0 failed).<\/p>\n<p dir=\"auto\">Checked against the issue:<\/p>\n<ul dir=\"auto\">\n<li><strong>import \u2192 validate \u2192 publish \u2192 release \u2192 (activate):<\/strong> one command, one transaction. Activation is refused on production and is #128&#39;s.<\/li>\n<li><strong>Dry run by default, <code>--apply<\/code> to write:<\/strong> yes. The dry run is a rehearsal that gets rolled back.<\/li>\n<li><strong>Idempotent:<\/strong> an unchanged file writes nothing, and unchanged content makes no new release.<\/li>\n<li><strong>Same checks as the screens, refusals printed:<\/strong> it uses the screens&#39; own publishers and the #130 check.<\/li>\n<li><strong>Interview publish, release assembly, single command:<\/strong> all built.<\/li>\n<\/ul>\n<p dir=\"auto\">Still outside the chain, on purpose: packets (<code>import-form-packets.php --publish<\/code>).<\/p>\n"}