fix: improve apply-patch add-file guidance

This commit is contained in:
Codex
2026-06-03 09:30:10 +00:00
parent 4dd75fff29
commit 1de0e08ae7
2 changed files with 70 additions and 1 deletions
@@ -905,6 +905,24 @@ export async function runSshArgvGuidanceContract(): Promise<JsonRecord> {
assertCondition(addBeforeFailedUpdateV2.files.hwpod?.includes("device-pod-cli.mjs"), "v2 should preserve an earlier Add File from a large patch when a later hunk misses", addBeforeFailedUpdateV2);
assertCondition(addBeforeFailedUpdateV2.files["scripts/artifact-publish.mjs"] === "actual artifact line\n", "v2 must leave the failed later file unchanged", addBeforeFailedUpdateV2);
const addFileWithHunkMarkerV2 = await applyPatchV2FixtureAttempt([
"*** Begin Patch",
"*** Add File: bad-add.txt",
"@@",
"+content",
"*** End Patch",
"",
].join("\n"), {}, { stderrOutput: true });
assertCondition(addFileWithHunkMarkerV2.exitCode === 1 && addFileWithHunkMarkerV2.error === null, "v2 CLI path should return a visible parse error for Add File @@ misuse", addFileWithHunkMarkerV2);
assertCondition(addFileWithHunkMarkerV2.stdout === "", "v2 Add File parse failures should keep Codex-style empty stdout", addFileWithHunkMarkerV2);
assertCondition(
addFileWithHunkMarkerV2.stderr.includes("remove @@ for Add File")
&& addFileWithHunkMarkerV2.stderr.includes("prefix every content line with +"),
"v2 Add File @@ misuse should tell agents exactly how to repair the patch",
addFileWithHunkMarkerV2.stderr,
);
assertCondition(!addFileWithHunkMarkerV2.commands.some((command) => command.startsWith("write-b64") || command.startsWith("delete")), "v2 Add File parse failures must not touch remote files", addFileWithHunkMarkerV2.commands);
const sequentialCompoundV2 = await applyPatchV2Fixture([
"*** Begin Patch",
"*** Update File: sequence.txt",