Priority and bounded outcome — PM review 2026-10-01
P0 control correctness, based on the September 24 reproduction already recorded here: an empty preflight plan exposes merge/report-complete permissions without a current verifier identity. This is an operational permission-contract defect, independent of new reader breadth or qualified-corpus completion.
Implement the selected planning-only completion semantics deliberately across runtime, schemas, projections and consumers, preserving predecessor compatibility. Acceptance must demonstrate that an empty plan cannot confer publication/merge/completion authority, while the existing verify-required and human-review routes remain intact. This triage changes priority only; it does not claim a new reproduction, fix or verifier clearance.
Found by a positive schema round-trip while implementing #545. Deferred from this implementation pass; this issue owns the operational meaning of a completed planning result, not a new release gate.
Problem
On main 42818ec25b06cf39d5c95024e2ba7884bffa4166, build_preflight_result(workspace=...) with no changed files returns control.state: complete with the shared complete permission vector, including update_pr, merge and report_complete. It publishes no verified current-control identity. The model allows this completed-plan case, while PreflightResultV3's generated schema unconditionally constrains control.permissions.update_pr to false. A valid runtime empty-plan response therefore fails its published schema.
#545's successor preflight schema will reflect the existing model's conditional constraint so current payloads validate, leaving frozen predecessor files and runtime permissions unchanged. The deeper product question remains: a coding agent reading a planning envelope can mistake completion of planning for authority over an evaluated change, despite the documentation saying preflight is only a routing/projection surface.
Required implementation
Reconcile completed-plan semantics with the canonical current-control boundary. Specify whether an empty plan should use a planning-only result or an exact verification route; do not mint a release verdict, receipt or merge authority from absence of planned edits. Apply one decision consistently across model validators, generated schemas, CLI/MCP projections, instructions and consumer tests. Preserve explicit predecessor compatibility.
Acceptance
Boundaries
No current-control reader or release decision changes in #545. This follow-up needs a deliberate compatibility decision, rather than silently reusing the shared complete label with different permission semantics. No release qualification is claimed from an empty-plan test.
Refs #545, #552, #572.
Priority and bounded outcome — PM review 2026-10-01
P0 control correctness, based on the September 24 reproduction already recorded here: an empty preflight plan exposes merge/report-complete permissions without a current verifier identity. This is an operational permission-contract defect, independent of new reader breadth or qualified-corpus completion.
Implement the selected planning-only completion semantics deliberately across runtime, schemas, projections and consumers, preserving predecessor compatibility. Acceptance must demonstrate that an empty plan cannot confer publication/merge/completion authority, while the existing verify-required and human-review routes remain intact. This triage changes priority only; it does not claim a new reproduction, fix or verifier clearance.
Found by a positive schema round-trip while implementing #545. Deferred from this implementation pass; this issue owns the operational meaning of a completed planning result, not a new release gate.
Problem
On main
42818ec25b06cf39d5c95024e2ba7884bffa4166,build_preflight_result(workspace=...)with no changed files returnscontrol.state: completewith the shared complete permission vector, includingupdate_pr,mergeandreport_complete. It publishes no verified current-control identity. The model allows this completed-plan case, whilePreflightResultV3's generated schema unconditionally constrainscontrol.permissions.update_prto false. A valid runtime empty-plan response therefore fails its published schema.#545's successor preflight schema will reflect the existing model's conditional constraint so current payloads validate, leaving frozen predecessor files and runtime permissions unchanged. The deeper product question remains: a coding agent reading a planning envelope can mistake completion of planning for authority over an evaluated change, despite the documentation saying preflight is only a routing/projection surface.
Required implementation
Reconcile completed-plan semantics with the canonical current-control boundary. Specify whether an empty plan should use a planning-only result or an exact verification route; do not mint a release verdict, receipt or merge authority from absence of planned edits. Apply one decision consistently across model validators, generated schemas, CLI/MCP projections, instructions and consumer tests. Preserve explicit predecessor compatibility.
Acceptance
Boundaries
No current-control reader or release decision changes in #545. This follow-up needs a deliberate compatibility decision, rather than silently reusing the shared
completelabel with different permission semantics. No release qualification is claimed from an empty-plan test.Refs #545, #552, #572.