[{"data":1,"prerenderedAt":311},["ShallowReactive",2],{"navigation":3,"docs-constitution":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":35,"body":92,"description":305,"extension":306,"meta":307,"navigation":308,"path":36,"seo":309,"stem":37,"__hash__":310},"content\u002Fdocs\u002Fconstitution\u002Findex.md",{"type":93,"value":94,"toc":299},"minimark",[95,99,103,108,119,126,130,133,139,152,157,168,173,184,189,200,205,216,220,227,260,267,271,274,277,292,295],[96,97,35],"h1",{"id":98},"constitution",[100,101,102],"p",{},"The constitution is the immutable ruleset for a Forgia project. Every SDD embeds a reference to it, and every agent must comply — no exceptions, no workarounds.",[104,105,107],"h2",{"id":106},"location","Location",[109,110,115],"pre",{"className":111,"code":113,"language":114},[112],"language-text",".forgia\u002Fconstitution.md\n","text",[116,117,113],"code",{"__ignoreMap":118},"",[100,120,121,122,125],{},"Created by ",[116,123,124],{},"forgia init"," with sensible defaults. Customize it before your first FD.",[104,127,129],{"id":128},"what-it-covers","What it covers",[100,131,132],{},"A constitution typically defines:",[100,134,135],{},[136,137,138],"strong",{},"Code style",[140,141,142,146,149],"ul",{},[143,144,145],"li",{},"Formatting rules (line length, indentation, naming conventions)",[143,147,148],{},"Language-specific idioms to use or avoid",[143,150,151],{},"Comment and documentation standards",[100,153,154],{},[136,155,156],{},"Architecture constraints",[140,158,159,162,165],{},[143,160,161],{},"Allowed and disallowed patterns (e.g., no global mutable state)",[143,163,164],{},"Module organization rules",[143,166,167],{},"Dependency management policies",[100,169,170],{},[136,171,172],{},"Security rules",[140,174,175,178,181],{},[143,176,177],{},"No secrets in source code",[143,179,180],{},"Input validation requirements",[143,182,183],{},"Allowed crypto primitives",[100,185,186],{},[136,187,188],{},"Testing requirements",[140,190,191,194,197],{},[143,192,193],{},"Minimum coverage thresholds",[143,195,196],{},"Required test types (unit, integration, E2E)",[143,198,199],{},"Test naming conventions",[100,201,202],{},[136,203,204],{},"Operational rules",[140,206,207,210,213],{},[143,208,209],{},"Logging standards",[143,211,212],{},"Error handling patterns",[143,214,215],{},"Observability requirements",[104,217,219],{"id":218},"guardrails","Guardrails",[100,221,222,223,226],{},"Alongside the constitution, ",[116,224,225],{},".forgia\u002Fguardrails\u002Fdeny.toml"," lists file patterns that agents must never read, write, or execute:",[109,228,232],{"className":229,"code":230,"language":231,"meta":118,"style":118},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[deny]\nread  = [\".env\", \"*.pem\", \"secrets\u002F**\"]\nwrite = [\"go.sum\", \"pnpm-lock.yaml\", \"*.lock\"]\nexec  = [\"rm -rf\", \"DROP TABLE\", \"format C:\"]\n","toml",[116,233,234,242,248,254],{"__ignoreMap":118},[235,236,239],"span",{"class":237,"line":238},"line",1,[235,240,241],{},"[deny]\n",[235,243,245],{"class":237,"line":244},2,[235,246,247],{},"read  = [\".env\", \"*.pem\", \"secrets\u002F**\"]\n",[235,249,251],{"class":237,"line":250},3,[235,252,253],{},"write = [\"go.sum\", \"pnpm-lock.yaml\", \"*.lock\"]\n",[235,255,257],{"class":237,"line":256},4,[235,258,259],{},"exec  = [\"rm -rf\", \"DROP TABLE\", \"format C:\"]\n",[100,261,262,263,266],{},"Both ",[116,264,265],{},"\u002Ffd-review"," and SDD generation check the constitution and deny list automatically.",[104,268,270],{"id":269},"updating-the-constitution","Updating the constitution",[100,272,273],{},"The constitution is not truly immutable in the technical sense — you can edit it. The immutability is a team commitment: the rules apply to everyone, including the humans who wrote them.",[100,275,276],{},"When you update the constitution:",[278,279,280,283,289],"ol",{},[143,281,282],{},"Create an FD documenting the change and the reason",[143,284,285,286],{},"Update ",[116,287,288],{},".forgia\u002Fconstitution.md",[143,290,291],{},"Review open SDDs for compliance with the new rules",[100,293,294],{},"Never update the constitution silently mid-FD. Agents that were given an SDD before the change will not see the updated rules.",[296,297,298],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":118,"searchDepth":244,"depth":244,"links":300},[301,302,303,304],{"id":106,"depth":244,"text":107},{"id":128,"depth":244,"text":129},{"id":218,"depth":244,"text":219},{"id":269,"depth":244,"text":270},"Immutable project rules that every agent must follow, every time.","md",{},{"title":35},{"title":35,"description":305},"yaGOACAfcWlafFm4WAl2Is-p441ssZehuXx9tGPMeF8",1775060659122]