[{"data":1,"prerenderedAt":194},["ShallowReactive",2],{"\u002Fdocs\u002Fcore-concepts\u002Flayer-3":3},{"id":4,"title":5,"body":6,"description":186,"extension":187,"meta":188,"navigation":189,"path":190,"seo":191,"stem":192,"__hash__":193},"docs\u002Fdocs\u002Fcore-concepts\u002Flayer-3.md","Layer 3: Artifact Handoff",{"type":7,"value":8,"toc":179},"minimark",[9,13,18,21,34,38,46,56,118,122,125,147,159,163],[10,11,12],"p",{},"Layer 3 is how CAF moves work from one phase to the next — through a Markdown file in\nyour repo, not through conversation context that disappears once the agent's session\nends.",[14,15,17],"h2",{"id":16},"why-markdown-not-chat-context","Why Markdown, not chat context",[10,19,20],{},"Chat context is ephemeral: once an agent session ends or restarts, all the nuance\nbehind its decisions goes with it. A Markdown artifact in the repo:",[22,23,24,28,31],"ul",{},[25,26,27],"li",{},"Survives across sessions — the next phase's agent (even run days later) can still\nread the previous phase's decisions",[25,29,30],{},"Can be reviewed by a human at any time, like reading a regular document",[25,32,33],{},"Gets version-controlled in git, giving you a full audit trail per ticket",[14,35,37],{"id":36},"per-ticket-file-structure","Per-ticket file structure",[10,39,40,41,45],{},"Every ticket gets its own folder under ",[42,43,44],"code",{},".ai\u002Ftasks\u002F\u003Cticket-id>\u002F",":",[47,48,53],"pre",{"className":49,"code":51,"language":52},[50],"language-text",".ai\u002Ftasks\u002F\u003Cticket-id>\u002F\n  plan.md\n  implementation-notes.md\n  verify-report.md\n","text",[42,54,51],{"__ignoreMap":55},"",[57,58,59,75],"table",{},[60,61,62],"thead",{},[63,64,65,69,72],"tr",{},[66,67,68],"th",{},"File",[66,70,71],{},"Written by",[66,73,74],{},"Contents",[76,77,78,92,105],"tbody",{},[63,79,80,86,89],{},[81,82,83],"td",{},[42,84,85],{},"plan.md",[81,87,88],{},"Planner",[81,90,91],{},"The work plan and steps to be taken",[63,93,94,99,102],{},[81,95,96],{},[42,97,98],{},"implementation-notes.md",[81,100,101],{},"Implementer",[81,103,104],{},"Changes made and the reasoning behind them",[63,106,107,112,115],{},[81,108,109],{},[42,110,111],{},"verify-report.md",[81,113,114],{},"Verifier",[81,116,117],{},"Lint, test results, and automated review findings",[14,119,121],{"id":120},"the-read-write-loop-between-phases","The read-write loop between phases",[10,123,124],{},"Every phase follows the same pattern:",[126,127,128,141,144],"ol",{},[25,129,130,131,136,137],{},"Read the previous phase's artifact (if any) + context from\n",[132,133,135],"a",{"href":134},"\u002Fdocs\u002Fcore-concepts\u002Flayer-1","Layer 1"," + its own role definition from\n",[132,138,140],{"href":139},"\u002Fdocs\u002Fcore-concepts\u002Flayer-2","Layer 2",[25,142,143],{},"Do the work within that phase's scope",[25,145,146],{},"Write its output as a new artifact before the phase ends",[10,148,149,150,154,155,158],{},"The human Reviewer reads the whole chain of artifacts — not just the code diff — to\nunderstand ",[151,152,153],"em",{},"why"," a decision was made, not just ",[151,156,157],{},"what"," changed.",[14,160,162],{"id":161},"relationship-to-other-layers","Relationship to other layers",[10,164,165,166,170,171,173,174,178],{},"The artifact format is determined by ",[167,168,169],"strong",{},"Layer 2: Agent Definitions",".\n",[42,172,111],{},", produced in this layer, feeds into\n",[132,175,177],{"href":176},"\u002Fdocs\u002Fcore-concepts\u002Flayer-4","Layer 4: Quality Gates",".",{"title":55,"searchDepth":180,"depth":180,"links":181},2,[182,183,184,185],{"id":16,"depth":180,"text":17},{"id":36,"depth":180,"text":37},{"id":120,"depth":180,"text":121},{"id":161,"depth":180,"text":162},"Why CAF stores every phase's output as a Markdown file in your repo, not in chat context.","md",{},true,"\u002Fdocs\u002Fcore-concepts\u002Flayer-3",{"title":5,"description":186},"docs\u002Fcore-concepts\u002Flayer-3","cKdAG2MxvuSZKKBCK4No398kfaegOf9zaXKakm75qEQ",1787621083752]