Understand the milestone lifecycle, saved evidence, and decisions that need your approval.
The router selects work from saved project state. You control the scope,
approval gates, and unresolved decisions. Each phase leaves a reviewable file
for the next phase.
Phase outputs
Phase
What happens
What you review
Inspect
Map existing code and audit documentation claims
Codebase evidence and documentation conflicts
Define
Record the outcome, users, criteria, constraints, and vetoes
intent/INTENT.md and intent playback
Research
Investigate open questions; record skipped dimensions
Map criteria to tasks, dependencies, and verification
plan/PLAN.md and the wave summary
Build
Implement tasks, verify isolated patches, and review waves
Task logs, escalations, and wave reviews
Ship
Check final criteria, archive, and integrate
Final review and shipment approval
Paths in this table are relative to .project/. Programs also use
a charter and a roadmap above the milestone loop.
Start from the actual project
For an existing repository, inspection runs before definition. Documentation
conflicts need your ruling: fix the documentation, fix the code, or accept the
drift. Inspection does not resolve the conflict for you.For a new project, definition starts with the intended result. State what is in
scope and what is excluded. Vetoes remain binding during research, planning,
and implementation.
Choose a lane
The quick lane applies to at most two deliverable tasks in one wave with no
open questions or cross-wave risk, as defined in the
full guide.
It may skip research and decision work using settled inputs. If the plan
outgrows that contract, it returns to the standard lane and research.The standard lane gathers evidence before planning. Program milestones derive
their scope from the approved roadmap and revisit research when questions remain.
Approve a concrete artifact
A handoff names the outcome, links the review file, and states the next action.
Read that file before approving. Plan approval creates a checkpoint before
build begins. Final-review patch selection also needs your approval before
patch planning starts. A discussion answer does not approve a plan or advance
a phase.
How build verifies work
Task contracts name allowed files, acceptance criteria, interfaces, and a Verify
command. The orchestrator checks those briefs before dispatch. Parallel tasks
use isolated named branches and worktrees; a serial dispatch works on the
bound milestone branch. Task landing stays serial.The orchestrator reruns each task’s Verify against its isolated patch. Wave
review uses that recorded evidence. The project Verify runs at ship through
the final-review runtime. A wave advances only after all its tasks and its
wave review pass.For the full agent contract, read
WORKFLOW.md.
Was this page helpful?
⌘I
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Open GSD","colors":{"primary":"#949497","light":"#323740","dark":"#d5d5d4"},"logo":{"light":"https://media.brand.dev/55b6b02b-70aa-4b85-b00a-938bc425bdfa.png","dark":"https://media.brand.dev/55b6b02b-70aa-4b85-b00a-938bc425bdfa.png"},"favicon":"https://mintcdn.com/opengsd/dHtgIVuuqddmZMpb/favicon.svg?fit=max\u0026auto=format\u0026n=dHtgIVuuqddmZMpb\u0026q=85\u0026s=10b9194af7431484feea5399d7772c96","navbar":{"primary":{"type":"github","href":"https://github.com/open-gsd"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"opengsd","hasAudioNarration":false,"actualSubdomain":"opengsd","customDomains":["docs.opengsd.net"],"gitSource":{"type":"github","owner":"open-gsd","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"}},"buildId":"6aaace7590893fd9dca19a47","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"GSD Core","count":21},{"language":"default","tag":"GSD Browser","count":15},{"language":"default","tag":"GSD Pi","count":15},{"language":"default","tag":"GSD Path","count":13},{"language":"default","tag":"Core Concepts","count":11},{"language":"default","tag":"Guides","count":10},{"language":"default","tag":"Command Reference","count":9},{"language":"default","tag":"Get Started","count":9},{"language":"default","tag":"Get started","count":9},{"language":"default","tag":"GSD Loop","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"path/workflow","slug":"/path/workflow","pageMetadata":{"title":"Phases and approvals","description":"Understand the milestone lifecycle, saved evidence, and decisions that need your approval.","href":"/path/workflow"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Understand the milestone lifecycle, saved evidence, and decisions that need your approval.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Heading,Table}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`The router selects work from saved project state. You control the scope,\napproval gates, and unresolved decisions. Each phase leaves a reviewable file\nfor the next phase.`}),`\n`,_jsx(Heading,{level:`2`,id:`phase-outputs`,children:`Phase outputs`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Phase`}),_jsx(_components.th,{children:`What happens`}),_jsx(_components.th,{children:`What you review`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Inspect`}),_jsx(_components.td,{children:`Map existing code and audit documentation claims`}),_jsx(_components.td,{children:`Codebase evidence and documentation conflicts`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Define`}),_jsx(_components.td,{children:`Record the outcome, users, criteria, constraints, and vetoes`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`intent/INTENT.md`}),` and intent playback`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Research`}),_jsx(_components.td,{children:`Investigate open questions; record skipped dimensions`}),_jsx(_components.td,{children:`Evidence files and the research manifest`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Decide`}),_jsx(_components.td,{children:`Turn cited evidence into decisions`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`research/SYNTHESIS.md`}),`; unresolved `,_jsx(_components.code,{children:`NEEDS-USER`}),` choices`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Plan`}),_jsx(_components.td,{children:`Map criteria to tasks, dependencies, and verification`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`plan/PLAN.md`}),` and the wave summary`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Build`}),_jsx(_components.td,{children:`Implement tasks, verify isolated patches, and review waves`}),_jsx(_components.td,{children:`Task logs, escalations, and wave reviews`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Ship`}),_jsx(_components.td,{children:`Check final criteria, archive, and integrate`}),_jsx(_components.td,{children:`Final review and shipment approval`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Paths in this table are relative to `,_jsx(_components.code,{children:`.project/`}),`. `,_jsx(_components.a,{href:`/path/programs`,children:`Programs`}),` also use\na charter and a roadmap above the milestone loop.`]}),`\n`,_jsx(Heading,{level:`2`,id:`start-from-the-actual-project`,children:`Start from the actual project`}),`\n`,_jsx(_components.p,{children:`For an existing repository, inspection runs before definition. Documentation\nconflicts need your ruling: fix the documentation, fix the code, or accept the\ndrift. Inspection does not resolve the conflict for you.`}),`\n`,_jsx(_components.p,{children:`For a new project, definition starts with the intended result. State what is in\nscope and what is excluded. Vetoes remain binding during research, planning,\nand implementation.`}),`\n`,_jsx(Heading,{level:`2`,id:`choose-a-lane`,children:`Choose a lane`}),`\n`,_jsxs(_components.p,{children:[`The quick lane applies to at most two deliverable tasks in one wave with no\nopen questions or cross-wave risk, as defined in the\n`,_jsx(_components.a,{href:`https://github.com/open-gsd/gsd-path/blob/main/FULL.md#quick-lane`,children:`full guide`}),`.\nIt may skip research and decision work using settled inputs. If the plan\noutgrows that contract, it returns to the standard lane and research.`]}),`\n`,_jsx(_components.p,{children:`The standard lane gathers evidence before planning. Program milestones derive\ntheir scope from the approved roadmap and revisit research when questions remain.`}),`\n`,_jsx(Heading,{level:`2`,id:`approve-a-concrete-artifact`,children:`Approve a concrete artifact`}),`\n`,_jsx(_components.p,{children:`A handoff names the outcome, links the review file, and states the next action.\nRead that file before approving. Plan approval creates a checkpoint before\nbuild begins. Final-review patch selection also needs your approval before\npatch planning starts. A discussion answer does not approve a plan or advance\na phase.`}),`\n`,_jsx(Heading,{level:`2`,id:`how-build-verifies-work`,children:`How build verifies work`}),`\n`,_jsx(_components.p,{children:`Task contracts name allowed files, acceptance criteria, interfaces, and a Verify\ncommand. The orchestrator checks those briefs before dispatch. Parallel tasks\nuse isolated named branches and worktrees; a serial dispatch works on the\nbound milestone branch. Task landing stays serial.`}),`\n`,_jsx(_components.p,{children:`The orchestrator reruns each task’s Verify against its isolated patch. Wave\nreview uses that recorded evidence. The project Verify runs at ship through\nthe final-review runtime. A wave advances only after all its tasks and its\nwave review pass.`}),`\n`,_jsxs(_components.p,{children:[`For the full agent contract, read\n`,_jsx(_components.a,{href:`https://github.com/open-gsd/gsd-path/blob/main/WORKFLOW.md`,children:`WORKFLOW.md`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Phases and approvals","description":"Understand the milestone lifecycle, saved evidence, and decisions that need your approval.","href":"/path/workflow"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Phase outputs","slug":"phase-outputs","depth":2,"children":[]},{"title":"Start from the actual project","slug":"start-from-the-actual-project","depth":2,"children":[]},{"title":"Choose a lane","slug":"choose-a-lane","depth":2,"children":[]},{"title":"Approve a concrete artifact","slug":"approve-a-concrete-artifact","depth":2,"children":[]},{"title":"How build verifies work","slug":"how-build-verifies-work","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"opengsd","siteName":"Open GSD","title":"Phases and approvals - Open GSD","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-16T15:05:34.051Z","originalFileLocation":"path/workflow.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Understand the milestone lifecycle, saved evidence, and decisions that need your approval.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Open GSD\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/opengsd/Ca9UZRHkIIHONFxp/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/opengsd/Ca9UZRHkIIHONFxp/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/opengsd/Ca9UZRHkIIHONFxp/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/opengsd/Ca9UZRHkIIHONFxp/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/opengsd/Ca9UZRHkIIHONFxp/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/opengsd/Ca9UZRHkIIHONFxp/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/opengsd/Ca9UZRHkIIHONFxp/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/opengsd/Ca9UZRHkIIHONFxp/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/opengsd/Ca9UZRHkIIHONFxp/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Phases and approvals - Open GSD\">\u003cmeta data-mint-head property=\"og:description\" content=\"Understand the milestone lifecycle, saved evidence, and decisions that need your approval.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Open GSD\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.opengsd.net/path/workflow\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://opengsd.mintlify.site/_mintlify/api/og/v2?division=Run+a+project\u0026amp;title=Phases+and+approvals\u0026amp;description=Understand+the+milestone+lifecycle%2C+saved+evidence%2C+and+decisions+that+need+your+approval.\u0026amp;theme=bd5b2daf081b510c8845a800\u0026amp;signature=31f3fffa68a09adf5ec038b56f289e778bb837a7e1ddba02341fbcf3a7cb166b\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Phases and approvals - Open GSD\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Understand the milestone lifecycle, saved evidence, and decisions that need your approval.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://opengsd.mintlify.site/_mintlify/api/og/v2?division=Run+a+project\u0026amp;title=Phases+and+approvals\u0026amp;description=Understand+the+milestone+lifecycle%2C+saved+evidence%2C+and+decisions+that+need+your+approval.\u0026amp;theme=bd5b2daf081b510c8845a800\u0026amp;signature=31f3fffa68a09adf5ec038b56f289e778bb837a7e1ddba02341fbcf3a7cb166b\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/opengsd/Ca9UZRHkIIHONFxp/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Open GSD\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#949497\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.opengsd.net/path/workflow\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/path/workflow.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.opengsd.net/#organization\",\"name\":\"Open GSD\",\"url\":\"https://docs.opengsd.net\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://media.brand.dev/55b6b02b-70aa-4b85-b00a-938bc425bdfa.png\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.opengsd.net#website\",\"name\":\"Open GSD\",\"url\":\"https://docs.opengsd.net\",\"publisher\":{\"@id\":\"https://docs.opengsd.net/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.opengsd.net/path/workflow#webpage\",\"url\":\"https://docs.opengsd.net/path/workflow\",\"name\":\"Phases and approvals\",\"description\":\"Understand the milestone lifecycle, saved evidence, and decisions that need your approval.\",\"dateModified\":\"2026-09-16T15:05:34.051Z\",\"isPartOf\":{\"@id\":\"https://docs.opengsd.net#website\"},\"breadcrumb\":{\"@id\":\"https://docs.opengsd.net/path/workflow#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.opengsd.net/path/workflow#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Open GSD\",\"item\":\"https://docs.opengsd.net\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Phases and approvals\",\"item\":\"https://docs.opengsd.net/path/workflow\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.opengsd.net/path/workflow#article\",\"headline\":\"Phases and approvals\",\"name\":\"Phases and approvals\",\"description\":\"Understand the milestone lifecycle, saved evidence, and decisions that need your approval.\",\"url\":\"https://docs.opengsd.net/path/workflow\",\"mainEntityOfPage\":{\"@id\":\"https://docs.opengsd.net/path/workflow#webpage\"},\"dateModified\":\"2026-09-16T15:05:34.051Z\",\"publisher\":{\"@id\":\"https://docs.opengsd.net/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.opengsd.net#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Open GSD\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Open GSD\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/path/workflow.md","siteName":"Open GSD","nav":{"global":null,"tabs":[{"tab":"GSD Core","pages":[{"title":"GSD Core","href":"/core/introduction"}]},{"tab":"GSD Pi","pages":[{"title":"GSD Pi","href":"/pi/introduction"}]},{"tab":"GSD Browser","pages":[{"title":"GSD Browser","href":"/browser/introduction"}]},{"tab":"GSD Path","groups":[{"group":"Get started","pages":[{"title":"GSD Path","sidebarTitle":"Introduction","href":"/path/introduction"},{"title":"Quickstart","href":"/path/quickstart"},{"title":"Installation","description":"Choose global or project-local skills and install the project contracts your pipeline needs.","href":"/path/installation"}]},{"group":"Run a project","pages":[{"title":"Phases and approvals","href":"/path/workflow"},{"title":"Multi-milestone programs","description":"Use a charter and roadmap to deliver a larger outcome through approved milestones.","href":"/path/programs"},{"title":"Shipping and integration","href":"/path/shipping"},{"title":"Resume, discuss, and recover","href":"/path/recovery"}]},{"group":"Maintain your setup","pages":[{"title":"Update an installation","href":"/path/updating"},{"title":"Guard hooks","href":"/path/guard-hooks"},{"title":"Move from GSD Core","href":"/path/migration"}]},{"group":"Reference","pages":[{"title":"Skill reference","href":"/path/reference/skills"},{"title":"Supported hosts","href":"/path/reference/hosts"},{"title":"Project artifacts","href":"/path/reference/artifacts"}]}]},{"tab":"GSD Graph","pages":[{"title":"GSD Graph","href":"/graph/introduction"}]},{"tab":"GSD Loop","pages":[{"title":"GSD Loop","href":"/loop/introduction"}]}]},"basePath":"","title":"Phases and approvals - Open GSD","buildId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","deploymentId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","dynamics":[],"chunks":[]}