Preserve literal Pi validation commands through task creation

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
DottaandPaperclip committed 2026-10-08 09:41:33 -05:00
1 parent 31d688e389
commit e722b116f1
5 files changed
+40 -6

No files matched your search

@@ -5,6 +5,30 @@ set of release gates. Pi remains a candidate until every required gate passes.
Keep behavioral qualification on the accepted fixtures. Do not expand it to
widgets, images, Cursor or Copilot qualification. The existing draft stack must be reviewed in dependency order.
## Current delivery scope — 2026-10-08
The user narrowed this delivery to normal task completion and interactive
controls. Accounting and the broad release matrix are deferred. The finish line
is one real file edit, successful command validation, registered public download,
Done and a succeeded native run; three follow-up turns with continuity; browser
questions and answers; plan approval; same-turn steering and denial; Stop; and
controller recovery with the original native question and run. Use the retained
`b696e131ae32a82418e570b32f4727b5adb14e49` packages and cloud image, the approved
Sonnet 4.6 fixture and low thinking. No local Docker, provider expansion, image
rebuild, or accounting change is needed for this scope.
The first current-cloud file attempt, `pi-core-0-1791470050`, edited, validated,
published and finished through the real product. Its strict definition-4 grade
is failed: the public task description escaped the unfenced validation command
as Markdown paragraph text; the first Bash invocation had a syntax error, then
Pi repaired it and ran a second command. The exact post-edit and downloaded
bytes match, production copy-back finalized, and the issue/run reached
Done/succeeded. Do not change this grade or count it as qualification. All 41
canonical files (91,468,056 bytes) are retained with archive SHA-256
`065146a206da9f29b50999b5d931b54402edd5d30a516895a7ab8fb95e8a6029`;
independent process and scratch cleanup pass. Definition 5 fences the unchanged
command for literal Markdown paste; the one-command grader stays unchanged.
## Correct cloud memory-read authority — 2026-10-08
Frozen runtime/image `b696e131ae32a82418e570b32f4727b5adb14e49` passes all
@@ -2409,7 +2433,7 @@ Keep rollout held until every release gate is proven.
and supersede once the tested correction is frozen. No workflow edit, lockfile
commit, new model, fallback key, merge or release occurs.
## Remaining work in order
## Broader release follow-ups — deferred for current delivery
1. Cloud memory acceptance is complete for the frozen `b696e131ae32a82418e570b32f4727b5adb14e49`
runtime/image and definition-22 harness `da8d4454ae165b557ff11730e9fe018c9b1cd9b9`.
+5 -2
View File
@@ -391,8 +391,11 @@ requires one native edit lifecycle followed by exactly one successful native
bash execution with the exact nonce-bound byte-validation command as its
projected title and a validation marker. A marker-only echo cannot pass. Final bytes must
match the fixture. The Pi task prompt explicitly forbids additional shell calls,
including metadata commands, and supplies the expected post-edit byte size and
hash for registration. Extra Bash calls fail the unchanged oracle even when the
including metadata commands and repair attempts. It supplies the expected post-edit
byte size and hash for registration. Extended definition 5 places the exact command in a
fenced Bash block so the production Markdown editor preserves its operators and
literal escapes. Definition 4's escaped-paragraph attempt keeps its failed grade.
Extra Bash calls fail the unchanged oracle even when the
edited file and downloadable artifact are correct. Extended definition 4 makes
Pi's artifact title equal the exact filename required by the shared registered
artifact check. Definition 3 attempts retain their original definitions and
+1 -1
View File
@@ -1223,7 +1223,7 @@ export const runnerSuites: readonly RunnerSuiteFixture[] = [
groups: ["native"], profiles: extendedHarnessProfiles, environments: runnerEnvironments,
tasks: [...openRouterBreadthTasks, localIntegrityTasks[1]!, extendedHarnessFileTask],
expectedMatrixSize: 30,
definitionMetadata: { version: 4, qualification: "pending", scheduling: "explicit-only", admission: "host-exact-candidate-and-model", authenticatedDiscoveryDate: "2026-09-28", piFileEvidence: "seed-edit-single-execute-public-download-v2", piFileArtifactTitle: "exact-filename" },
definitionMetadata: { version: 5, qualification: "pending", scheduling: "explicit-only", admission: "host-exact-candidate-and-model", authenticatedDiscoveryDate: "2026-09-28", piFileEvidence: "seed-edit-single-execute-public-download-v2", piFileArtifactTitle: "exact-filename", piFileCommandTransport: "fenced-bash-markdown-paste" },
},
{
id: "instruction-persistence", label: "Instruction Persistence",
+8 -1
View File
@@ -5,7 +5,7 @@ import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
import { tmpdir } from "node:os";
import { dirname, join } from "node:path";
import { describe, expect, it, vi } from "vitest";
import { collectPiFileEvidence, gradePiCopyback, gradePiFileEvidence, piFileContract, seedPiFile } from "./pi-file-evidence.js";
import { collectPiFileEvidence, gradePiCopyback, gradePiFileEvidence, piFileContract, piFilePrompt, seedPiFile } from "./pi-file-evidence.js";
import { canonicalProviderEventsFromAcpxRuntimeEvent, createAcpxToolEventNormalizer } from "../../packages/paperclip-runner/src/provider-events.js";
import { safeAcpxLocations } from "../../packages/paperclip-runner/src/drivers/acpx/safe-locations.js";
import { classifyFailure } from "./failure-classifier.js";
@@ -186,6 +186,13 @@ describe("Pi edit, validation and public artifact oracle", () => {
await expect(validate()).rejects.toMatchObject({ code: 1 });
} finally { await rm(root, { recursive: true, force: true }); }
});
it("pastes the literal validation command as Markdown code instead of escaped paragraph text", () => {
const command = piFileContract("0123456789ab-1").validationCommand;
const fenced = piFilePrompt("0123456789ab-1").match(/\n```bash\n([^\n]+)\n```\n/u);
expect(fenced?.[1]).toBe(command);
expect(fenced?.[1]).toContain("!==");
expect(fenced?.[1]).not.toContain("!\\=\\=");
});
it("changes only Pi file prompts and keeps all four question methods", () => {
const cells = runnerMatrix.filter(c => c.suite.id === "extended-harnesses" && c.task.id === "file-edit-validate");
expect(cells).toHaveLength(6);
+1 -1
View File
@@ -21,7 +21,7 @@ export function piFilePrompt(nonce: string) {
const c = piFileContract(nonce);
return [
`The fixture has already created ${c.filename} in your execution workspace with exactly ${JSON.stringify(c.before)}. Read it, then use your native edit tool once to replace those bytes with exactly ${JSON.stringify(c.after)}. Do not substitute write, bash, or an API for the edit.`,
`Run this exact native bash command exactly once, without an added shell prefix or suffix:\n${c.validationCommand}\nIt independently reads the file, fails on incorrect bytes, and prints the validation marker only after success. This is the only bash call allowed for this task; do not run any other shell commands.`,
`Run this exact native bash command exactly once, without an added shell prefix or suffix:\n\`\`\`bash\n${c.validationCommand}\n\`\`\`\nIt independently reads the file, fails on incorrect bytes, and prints the validation marker only after success. This is the only bash call allowed for this task; do not run any other shell commands.`,
`Deliver the edited text file as a downloadable attachment using the assigned register_deliverable semantic tool, with filename and workspace-relative contentRef ${c.filename}, contentType text/plain, byteSize ${c.byteSize}, sha256 ${c.sha256}, title ${c.filename}, and a fresh idempotencyKey. Use the supplied byteSize and sha256 for the exact validated post-edit bytes; do not run extra commands to obtain metadata. Wait for the real registration receipt. Do not upload a different file or claim publication from a disk path.`,
`After successful validation and registration, call paperclip_finish with reportedWorkDisposition done, summary EXTENDED-FILE-${nonce}, the current completion contract revision and satisfied objective criterion, no remaining work, the actual validation command/result, and the registered artifact reference.`,
`Wait for paperclip_finish to succeed, then emit exactly EXTENDED-FILE-${nonce} as your final response. Do not create unrelated files or work.`,