[{"data":1,"prerenderedAt":344},["ShallowReactive",2],{"navigation":3,"docs-sdd":90},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","\u002Fdocs","docs",[9,12,34,40,58,76],{"title":10,"path":6,"stem":11},"Overview","docs\u002Findex",{"title":13,"path":14,"stem":15,"children":16},"CLI Reference","\u002Fdocs\u002Fcli","docs\u002Fcli\u002Findex",[17,18,22,26,30],{"title":13,"path":14,"stem":15},{"title":19,"path":20,"stem":21},"doctor","\u002Fdocs\u002Fcli\u002Fdoctor","docs\u002Fcli\u002Fdoctor",{"title":23,"path":24,"stem":25},"exec","\u002Fdocs\u002Fcli\u002Fexec","docs\u002Fcli\u002Fexec",{"title":27,"path":28,"stem":29},"init","\u002Fdocs\u002Fcli\u002Finit","docs\u002Fcli\u002Finit",{"title":31,"path":32,"stem":33},"status","\u002Fdocs\u002Fcli\u002Fstatus","docs\u002Fcli\u002Fstatus",{"title":35,"path":36,"stem":37,"children":38},"Constitution","\u002Fdocs\u002Fconstitution","docs\u002Fconstitution\u002Findex",[39],{"title":35,"path":36,"stem":37},{"title":41,"path":42,"stem":43,"children":44},"FD Guide","\u002Fdocs\u002Ffd","docs\u002Ffd\u002Findex",[45,46,50,54],{"title":41,"path":42,"stem":43},{"title":47,"path":48,"stem":49},"Closing","\u002Fdocs\u002Ffd\u002Fclosing","docs\u002Ffd\u002Fclosing",{"title":51,"path":52,"stem":53},"Creating","\u002Fdocs\u002Ffd\u002Fcreating","docs\u002Ffd\u002Fcreating",{"title":55,"path":56,"stem":57},"Reviewing","\u002Fdocs\u002Ffd\u002Freviewing","docs\u002Ffd\u002Freviewing",{"title":59,"path":60,"stem":61,"children":62},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002Fgetting-started\u002Findex",[63,64,68,72],{"title":59,"path":60,"stem":61},{"title":65,"path":66,"stem":67},"First Feature","\u002Fdocs\u002Fgetting-started\u002Ffirst-feature","docs\u002Fgetting-started\u002Ffirst-feature",{"title":69,"path":70,"stem":71},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002Fgetting-started\u002Finstallation",{"title":73,"path":74,"stem":75},"Feature Lifecycle","\u002Fdocs\u002Fgetting-started\u002Flifecycle","docs\u002Fgetting-started\u002Flifecycle",{"title":77,"path":78,"stem":79,"children":80},"SDD Guide","\u002Fdocs\u002Fsdd","docs\u002Fsdd\u002Findex",[81,82,86],{"title":77,"path":78,"stem":79},{"title":83,"path":84,"stem":85},"Executing","\u002Fdocs\u002Fsdd\u002Fexecuting","docs\u002Fsdd\u002Fexecuting",{"title":87,"path":88,"stem":89},"Generating","\u002Fdocs\u002Fsdd\u002Fgenerating","docs\u002Fsdd\u002Fgenerating",{"id":91,"title":92,"body":93,"description":338,"extension":339,"meta":340,"navigation":341,"path":78,"seo":342,"stem":79,"__hash__":343},"content\u002Fdocs\u002Fsdd\u002Findex.md","Spec-Driven Development",{"type":94,"value":95,"toc":330},"minimark",[96,101,123,134,139,249,253,259,291,295,298,302,305,308,312],[97,98,100],"h1",{"id":99},"spec-driven-development-sdd","Spec-Driven Development (SDD)",[102,103,104,105,109,110,114,115,118,119,122],"p",{},"An SDD (Spec-Driven Development spec) is an ",[106,107,108],"strong",{},"agent-ready execution contract",". Where an FD answers ",[111,112,113],"em",{},"what"," and ",[111,116,117],{},"why",", an SDD answers ",[111,120,121],{},"how"," — with enough precision that an AI agent can implement the component autonomously.",[124,125,130],"pre",{"className":126,"code":128,"language":129},[127],"language-text","FD answers: WHAT needs to be built, and WHY\nSDD answers: HOW an agent should build one specific component\n","text",[131,132,128],"code",{"__ignoreMap":133},"",[135,136,138],"h2",{"id":137},"what-an-sdd-contains","What an SDD contains",[140,141,142,155],"table",{},[143,144,145],"thead",{},[146,147,148,152],"tr",{},[149,150,151],"th",{},"Section",[149,153,154],{},"Purpose",[156,157,158,169,179,189,199,209,219,229,239],"tbody",{},[146,159,160,166],{},[161,162,163],"td",{},[106,164,165],{},"Scope",[161,167,168],{},"Exactly what this SDD covers — and what it does not",[146,170,171,176],{},[161,172,173],{},[106,174,175],{},"Interfaces",[161,177,178],{},"Inputs, outputs, protocols this component must satisfy",[146,180,181,186],{},[161,182,183],{},[106,184,185],{},"Constraints",[161,187,188],{},"Language, framework, versions, security rules, denied patterns",[146,190,191,196],{},[161,192,193],{},[106,194,195],{},"Best Practices",[161,197,198],{},"Style and architecture conventions from the dev-guide",[146,200,201,206],{},[161,202,203],{},[106,204,205],{},"Test Requirements",[161,207,208],{},"What must be tested and at what level",[146,210,211,216],{},[161,212,213],{},[106,214,215],{},"Acceptance Criteria",[161,217,218],{},"Verifiable conditions for \"done\"",[146,220,221,226],{},[161,222,223],{},[106,224,225],{},"Context",[161,227,228],{},"Files to read, existing code to understand before starting",[146,230,231,236],{},[161,232,233],{},[106,234,235],{},"Constitution Check",[161,237,238],{},"Pre-filled compliance checklist",[146,240,241,246],{},[161,242,243],{},[106,244,245],{},"Work Log",[161,247,248],{},"Filled by the agent: executor, decisions, output, retrospective",[135,250,252],{"id":251},"sdd-lifecycle","SDD lifecycle",[124,254,257],{"className":255,"code":256,"language":129},[127],"planned → assigned → in-progress → done\n",[131,258,256],{"__ignoreMap":133},[260,261,262,273,279,285],"ul",{},[263,264,265,268,269,272],"li",{},[106,266,267],{},"planned",": generated by ",[131,270,271],{},"\u002Ffd-sdd",", not yet assigned",[263,274,275,278],{},[106,276,277],{},"assigned",": an agent is designated but hasn't started",[263,280,281,284],{},[106,282,283],{},"in-progress",": agent is executing",[263,286,287,290],{},[106,288,289],{},"done",": implementation complete, Work Log filled",[135,292,294],{"id":293},"one-sdd-per-component","One SDD per component",[102,296,297],{},"Each SDD covers exactly one component, service, or module. Isolation is intentional — it allows parallel execution and clear ownership. SDDs within the same FD define their interfaces explicitly so agents produce compatible code without reading each other's SDDs.",[135,299,301],{"id":300},"the-integration-wiring-sdd","The integration wiring SDD",[102,303,304],{},"Every FD ends with an integration wiring SDD. Its job: wire everything together, trace the startup path from entry point to leaves, and run an end-to-end test covering the full user-facing flow.",[102,306,307],{},"Without this SDD, individual components may work in isolation but never connect.",[135,309,311],{"id":310},"pages","Pages",[260,313,314,324],{},[263,315,316,320,321,323],{},[317,318,319],"a",{"href":88},"Generating SDDs"," — ",[131,322,271],{}," from an approved FD",[263,325,326,329],{},[317,327,328],{"href":84},"Executing SDDs"," — assigning to agents and running",{"title":133,"searchDepth":331,"depth":331,"links":332},2,[333,334,335,336,337],{"id":137,"depth":331,"text":138},{"id":251,"depth":331,"text":252},{"id":293,"depth":331,"text":294},{"id":300,"depth":331,"text":301},{"id":310,"depth":331,"text":311},"What an SDD is, how it's structured, and how it fits in the Forgia workflow.","md",{},{"title":77},{"title":92,"description":338},"a2Q5-VUCaEyBeR4zEWRm5o5OlX0xdraQa-lan6xQe4c",1775060659124]