import fs from "node:fs"; const D = "d2/"; const chk = fs.readFileSync("d2-check.txt", "utf8").trim(); const fence = "```"; const body = `Row 64 D2 (mos-0863 D2, mos-0864): one managed coder session per harness on a scratch root, with the two bundle manifests below. Setup. The scratch root is \`/mnt/storage/scratch/sage-r64/d2\`, built from \`packages/business/examples/mosaic-stack.example.json\` at 6b6567b8b plus the plug-in keys (mos-0847). The edits: \`plugins.harness [pi, claude-code]\`, provider \`your-provider\` to \`anthropic\`, coder vars harness and thinking medium, the /home/you token paths to stand-in files with far dates, botIds 1..n, base URLs to 127.0.0.1:9, and the project root to a scratch repo on main. The eight skills were installed and activated there with \`scripts/skill.sh\` from the landed tree. Nothing under ~/.mosaic-dev was touched. The driver uses the real launcher, host and harness modules from a worktree at 6b6567b8b. Scripts and logs are in \`agents/sage/work/queue-64/d2/\`. Claude Code, run rc13bcd555652. One short turn. The coder was asked to list the skill names in its Skills section and replied \`ms-unslop, ms-sdlc, ms-file-read, ms-file-write\`. Then it was stopped (ended: stopped). Pi, run r3455505dd5da. Launch only, no turn. The runner claimed coder and exited 0 on stop. There was no model turn because this host has no credential pi reads: pi takes ANTHROPIC_API_KEY or ANTHROPIC_OAUTH_TOKEN, and the host's one managed credential is CLAUDE_CODE_OAUTH_TOKEN. That gap goes to Mos. Check (\`d2-check.mjs\`). Each manifest lists the coder's four skills in role order. Every file sha256 equals the landed \`skills/\` file. Each file appears byte for byte after its \`\` marker in prompt.md, under \`## Skills\`. No credential value appears in either manifest or prompt. ${fence} ${chk} ${fence}
manifest-claude-code.json ${fence}json ${fs.readFileSync(D + "manifest-claude-code.json", "utf8").trim()} ${fence}
manifest-pi.json ${fence}json ${fs.readFileSync(D + "manifest-pi.json", "utf8").trim()} ${fence}
Sage`; fs.writeFileSync("d2-comment.json", JSON.stringify({ body }));