[{"data":1,"prerenderedAt":3042},["ShallowReactive",2],{"navigation_docs":3,"-developer-experience-guide-release":1532,"-developer-experience-guide-release-surround":3037},[4,237,583,622,882,972,1060,1194,1528],{"title":5,"path":6,"stem":7,"children":8,"page":84},"Getting Started","/getting-started","01.getting-started",[9,15,226,231],{"title":10,"path":11,"stem":12,"children":13},"Creating Your Account","/getting-started/creating-your-account","01.getting-started/00.creating-your-account/index",[14],{"title":10,"path":11,"stem":12},{"title":16,"order":17,"path":18,"stem":19,"children":20,"page":84},"Admin Onboarding: Getting Started",1,"/getting-started/admin-onboarding-getting-started","01.getting-started/01.admin-onboarding-getting-started",[21,25,29,33,40,44,51,85,134,147,158,162,175,179,188,205,213,219],{"title":22,"path":23,"stem":24},"Setting the Stage: How Predictability becomes Reality in DevStride","/getting-started/admin-onboarding-getting-started/setting-the-stage","01.getting-started/01.admin-onboarding-getting-started/01.setting-the-stage",{"title":26,"path":27,"stem":28},"Admin Onboarding - Getting Started","/getting-started/admin-onboarding-getting-started/admin-onboarding-guide","01.getting-started/01.admin-onboarding-getting-started/02.admin-onboarding-guide",{"title":30,"path":31,"stem":32},"Basic Terms","/getting-started/admin-onboarding-getting-started/basic-terms","01.getting-started/01.admin-onboarding-getting-started/03.basic-terms",{"title":34,"path":35,"stem":36,"children":37},"Setting Up Users and Teams","/getting-started/admin-onboarding-getting-started/setting-up-users-and-teams","01.getting-started/01.admin-onboarding-getting-started/04.setting-up-users-and-teams/index",[38],{"title":39,"path":35,"stem":36},"Admin Onboarding - Setting up Users and Teams",{"title":41,"path":42,"stem":43},"Admin Onboarding - Configuring Your Work Model","/getting-started/admin-onboarding-getting-started/configuring-your-work-model","01.getting-started/01.admin-onboarding-getting-started/05.configuring-your-work-model",{"title":45,"path":46,"stem":47,"children":48},"Map Value: WorkStreams","/getting-started/admin-onboarding-getting-started/map-value-workstreams","01.getting-started/01.admin-onboarding-getting-started/06.map-value-workstreams/index",[49],{"title":50,"path":46,"stem":47},"Admin Onboarding: Understanding Workstreams",{"title":52,"path":53,"stem":54,"children":55,"page":84},"Items","/getting-started/admin-onboarding-getting-started/items","01.getting-started/01.admin-onboarding-getting-started/07.items",[56,60,67,73,80],{"title":57,"path":58,"stem":59},"Setting up Your Item Type Hierarchy","/getting-started/admin-onboarding-getting-started/items/setting-up-item-type-hierarchy","01.getting-started/01.admin-onboarding-getting-started/07.items/01.setting-up-item-type-hierarchy",{"title":61,"path":62,"stem":63,"children":64},"Items: Setting Up Custom Fields","/getting-started/admin-onboarding-getting-started/items/setting-up-custom-fields","01.getting-started/01.admin-onboarding-getting-started/07.items/02.setting-up-custom-fields/index",[65],{"title":66,"path":62,"stem":63},"Admin Onboarding - Setting up Custom Fields",{"title":68,"path":69,"stem":70,"children":71},"Admin Onboarding - Setting up Tags","/getting-started/admin-onboarding-getting-started/items/setting-up-tags","01.getting-started/01.admin-onboarding-getting-started/07.items/03.setting-up-tags/index",[72],{"title":68,"path":69,"stem":70},{"title":74,"path":75,"stem":76,"children":77},"Items: Creating and Managing Forms","/getting-started/admin-onboarding-getting-started/items/creating-and-managing-forms","01.getting-started/01.admin-onboarding-getting-started/07.items/04.creating-and-managing-forms/index",[78],{"title":79,"path":75,"stem":76},"Admin Onboarding - Creating and Managing Forms",{"title":81,"path":82,"stem":83},"Create Items with AI","/getting-started/admin-onboarding-getting-started/items/create-items-with-ai","01.getting-started/01.admin-onboarding-getting-started/07.items/05.create-items-with-ai",false,{"title":86,"path":87,"stem":88,"children":89,"page":84},"Item Workspace Tour","/getting-started/admin-onboarding-getting-started/item-workspace-tour","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour",[90,94,98,102,106,110,114,118,122,126,130],{"title":91,"path":92,"stem":93},"Admin Onboarding - Item Workspace Header","/getting-started/admin-onboarding-getting-started/item-workspace-tour/header","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/01.header",{"title":95,"path":96,"stem":97},"Admin Onboarding - Item Workspace Tabs","/getting-started/admin-onboarding-getting-started/item-workspace-tour/tabs","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/02.tabs",{"title":99,"path":100,"stem":101},"Item Workspace Quick Links","/getting-started/admin-onboarding-getting-started/item-workspace-tour/quick-links","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/03.quick-links",{"title":103,"path":104,"stem":105},"Admin Onboarding - Item Workspace - Right Bar: Team through Status","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-team-through-status","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/04.right-bar-team-through-status",{"title":107,"path":108,"stem":109},"Admin Onboarding - Item Workspace - Right Bar: Point Estimates","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-point-estimates","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/05.right-bar-point-estimates",{"title":111,"path":112,"stem":113},"Admin Onboarding - Item Workspace - Right Bar: Time Estimates","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-time-estimates","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/06.right-bar-time-estimates",{"title":115,"path":116,"stem":117},"Admin Onboarding - Item Workspace -Right Bar: Best Practice time estimates","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-best-practice-time-estimates","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/07.right-bar-best-practice-time-estimates",{"title":119,"path":120,"stem":121},"Admin Onboarding - Item Workspace - Right Bar: Time Spent","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-time-spent","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/08.right-bar-time-spent",{"title":123,"path":124,"stem":125},"Admin Onboarding - Item Workspace - Right Bar: Priority","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-priority","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/09.right-bar-priority",{"title":127,"path":128,"stem":129},"Admin Onboarding - Item Workspace - Right Bar: Start Dates and Due Dates","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-start-dates-and-due-dates","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/10.right-bar-start-dates-and-due-dates",{"title":131,"path":132,"stem":133},"Admin Onboarding - Item Workspace - Right Bar: Progress Tracking","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-progress-tracking","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/11.right-bar-progress-tracking",{"title":135,"path":136,"stem":137,"children":138,"page":84},"Creating and Using Statuses","/getting-started/admin-onboarding-getting-started/creating-and-using-statuses","01.getting-started/01.admin-onboarding-getting-started/09.creating-and-using-statuses",[139,143],{"title":140,"path":141,"stem":142},"Admin Onboarding - Setting Up Workflow Statuses","/getting-started/admin-onboarding-getting-started/creating-and-using-statuses/setting-up-workflow-statuses","01.getting-started/01.admin-onboarding-getting-started/09.creating-and-using-statuses/01.setting-up-workflow-statuses",{"title":144,"path":145,"stem":146},"Admin Onboarding - Create Custom Status Collections","/getting-started/admin-onboarding-getting-started/creating-and-using-statuses/create-custom-status-collections","01.getting-started/01.admin-onboarding-getting-started/09.creating-and-using-statuses/02.create-custom-status-collections",{"title":148,"path":149,"stem":150,"children":151},"Populating and Managing WorkStreams","/getting-started/admin-onboarding-getting-started/populating-and-managing-workstreams","01.getting-started/01.admin-onboarding-getting-started/10.populating-and-managing-workstreams/index",[152,154],{"title":153,"path":149,"stem":150},"Admin Onboarding - Populating and Managing Workstreams",{"title":155,"path":156,"stem":157},"Import Templates","/getting-started/admin-onboarding-getting-started/populating-and-managing-workstreams/import-templates","01.getting-started/01.admin-onboarding-getting-started/10.populating-and-managing-workstreams/01.import-templates",{"title":159,"path":160,"stem":161},"Boards: Managing Workflow and Statuses","/getting-started/admin-onboarding-getting-started/boards-managing-workflow-and-statuses","01.getting-started/01.admin-onboarding-getting-started/11.boards-managing-workflow-and-statuses",{"title":163,"path":164,"stem":165,"children":166,"page":84},"Creating Cadences","/getting-started/admin-onboarding-getting-started/creating-cadences","01.getting-started/01.admin-onboarding-getting-started/12.creating-cadences",[167,171],{"title":168,"path":169,"stem":170},"Admin Onboarding - Organizing the When: Understanding Planning Cadences","/getting-started/admin-onboarding-getting-started/creating-cadences/understanding-planning-cadences","01.getting-started/01.admin-onboarding-getting-started/12.creating-cadences/01.understanding-planning-cadences",{"title":172,"path":173,"stem":174},"Admin Onboarding - Setting Up Cadences and Timeboxes","/getting-started/admin-onboarding-getting-started/creating-cadences/setting-up-cadences-and-timeboxes","01.getting-started/01.admin-onboarding-getting-started/12.creating-cadences/02.setting-up-cadences-and-timeboxes",{"title":176,"path":177,"stem":178},"Track Progress - Gantt Charts","/getting-started/admin-onboarding-getting-started/track-progress-gantt-charts","01.getting-started/01.admin-onboarding-getting-started/13.track-progress-gantt-charts",{"title":180,"path":181,"stem":182,"children":183,"page":84},"Using AI in DevStride","/getting-started/admin-onboarding-getting-started/using-ai-in-devstride","01.getting-started/01.admin-onboarding-getting-started/14.using-ai-in-devstride",[184],{"title":185,"path":186,"stem":187},"Creating Items with AI","/getting-started/admin-onboarding-getting-started/using-ai-in-devstride/create-items-with-ai","01.getting-started/01.admin-onboarding-getting-started/14.using-ai-in-devstride/01.create-items-with-ai",{"title":189,"path":190,"stem":191,"children":192,"page":84},"More on Permissions","/getting-started/admin-onboarding-getting-started/permissions","01.getting-started/01.admin-onboarding-getting-started/15.permissions",[193,197,201],{"title":194,"path":195,"stem":196},"Understanding Permissions","/getting-started/admin-onboarding-getting-started/permissions/understanding-permissions","01.getting-started/01.admin-onboarding-getting-started/15.permissions/01.understanding-permissions",{"title":198,"path":199,"stem":200},"Roles & Permissions","/getting-started/admin-onboarding-getting-started/permissions/roles-and-permissions","01.getting-started/01.admin-onboarding-getting-started/15.permissions/02.roles-and-permissions",{"title":202,"path":203,"stem":204},"Sharing & Access","/getting-started/admin-onboarding-getting-started/permissions/sharing-and-access","01.getting-started/01.admin-onboarding-getting-started/15.permissions/03.sharing-and-access",{"title":206,"path":207,"stem":208,"children":209,"page":84},"API Keys","/getting-started/admin-onboarding-getting-started/api-keys","01.getting-started/01.admin-onboarding-getting-started/16.api-keys",[210],{"title":206,"path":211,"stem":212},"/getting-started/admin-onboarding-getting-started/api-keys/api-keys","01.getting-started/01.admin-onboarding-getting-started/16.api-keys/01.api-keys",{"title":214,"path":215,"stem":216,"children":217},"Pulling it all together: Planned Value to Delivery","/getting-started/admin-onboarding-getting-started/overall-flow-and-best-practices","01.getting-started/01.admin-onboarding-getting-started/17.overall-flow-and-best-practices/index",[218],{"title":214,"path":215,"stem":216},{"title":220,"path":221,"stem":222,"children":223},"Best Practices for Project Management in DevStride","/getting-started/admin-onboarding-getting-started/best-practices-for-project-management","01.getting-started/01.admin-onboarding-getting-started/18.best-practices-for-project-management/index",[224],{"title":225,"path":221,"stem":222},"Handling incomplete items from Sprint to Sprint",{"title":30,"path":227,"stem":228,"children":229},"/getting-started/basic-terms","01.getting-started/02.basic-terms/index",[230],{"title":30,"path":227,"stem":228},{"title":232,"path":233,"stem":234,"children":235},"Keyboard Shortcuts","/getting-started/keyboard-shortcuts","01.getting-started/03.keyboard-shortcuts/index",[236],{"title":232,"path":233,"stem":234},{"title":238,"path":239,"stem":240,"children":241,"page":84},"Major Modules","/major-modules","02.major-modules",[242,300,354,375,441,502,530],{"title":243,"order":244,"path":245,"stem":246,"children":247,"page":84},"Map Value: Workstreams and Work Items",2,"/major-modules/workstreams-and-work-items","02.major-modules/01.workstreams-and-work-items",[248,252,256,259,263,267,271,275,278],{"title":249,"path":250,"stem":251},"Creating Items","/major-modules/workstreams-and-work-items/creating-work-items","02.major-modules/01.workstreams-and-work-items/01.creating-work-items",{"title":253,"path":254,"stem":255},"The Items Table","/major-modules/workstreams-and-work-items/manage-items-table","02.major-modules/01.workstreams-and-work-items/02.manage-items-table",{"title":185,"path":257,"stem":258},"/major-modules/workstreams-and-work-items/ai-item-creation","02.major-modules/01.workstreams-and-work-items/03.ai-item-creation",{"title":260,"path":261,"stem":262},"Shared Lists","/major-modules/workstreams-and-work-items/published-lists","02.major-modules/01.workstreams-and-work-items/04.published-lists",{"title":264,"path":265,"stem":266},"Using the Map","/major-modules/workstreams-and-work-items/using-the-map","02.major-modules/01.workstreams-and-work-items/05.using-the-map",{"title":268,"path":269,"stem":270},"Dependency Graph","/major-modules/workstreams-and-work-items/dependency-graph","02.major-modules/01.workstreams-and-work-items/06.dependency-graph",{"title":272,"path":273,"stem":274},"Workstream & Item Permissions","/major-modules/workstreams-and-work-items/workstream-and-item-permissions","02.major-modules/01.workstreams-and-work-items/07.workstream-and-item-permissions",{"title":155,"path":276,"stem":277},"/major-modules/workstreams-and-work-items/import-templates","02.major-modules/01.workstreams-and-work-items/08.import-templates",{"title":279,"order":280,"path":281,"stem":282,"children":283,"page":84},"Workspace Capabilities",8,"/major-modules/workstreams-and-work-items/workspace-capabilities","02.major-modules/01.workstreams-and-work-items/09.workspace-capabilities",[284,288,292,296],{"title":285,"path":286,"stem":287},"Explore the Workspace","/major-modules/workstreams-and-work-items/workspace-capabilities/explore-the-workspace","02.major-modules/01.workstreams-and-work-items/09.workspace-capabilities/01.explore-the-workspace",{"title":289,"path":290,"stem":291},"Workspace Editor & Collaboration","/major-modules/workstreams-and-work-items/workspace-capabilities/workspace-sidebar","02.major-modules/01.workstreams-and-work-items/09.workspace-capabilities/02.workspace-sidebar",{"title":293,"path":294,"stem":295},"Themes & Appearance","/major-modules/workstreams-and-work-items/workspace-capabilities/themes-and-appearance","02.major-modules/01.workstreams-and-work-items/09.workspace-capabilities/03.themes-and-appearance",{"title":297,"path":298,"stem":299},"Getting Help & Support","/major-modules/workstreams-and-work-items/workspace-capabilities/getting-help-and-support","02.major-modules/01.workstreams-and-work-items/09.workspace-capabilities/04.getting-help-and-support",{"title":301,"order":302,"path":303,"stem":304,"children":305,"page":84},"Plan Delivery: Boards",3,"/major-modules/boards","02.major-modules/02.boards",[306,310,314,318,322,326,330,334,338,342,346,350],{"title":307,"path":308,"stem":309},"How DevStride manages the When: Perpetual vs. Cycle-based Boards","/major-modules/boards/how-devstride-manages-the-when","02.major-modules/02.boards/01.how-devstride-manages-the-when",{"title":311,"path":312,"stem":313},"Working Group Folders: Organizing the Who of the work","/major-modules/boards/working-group-folders","02.major-modules/02.boards/02.working-group-folders",{"title":315,"path":316,"stem":317},"Understanding Board Views","/major-modules/boards/understanding-board-views","02.major-modules/02.boards/03.understanding-board-views",{"title":319,"path":320,"stem":321},"Import Stories and Epics into Boards","/major-modules/boards/import-stories-and-epics-into-boards","02.major-modules/02.boards/04.import-stories-and-epics-into-boards",{"title":323,"path":324,"stem":325},"Adding a Folder","/major-modules/boards/adding-a-folder","02.major-modules/02.boards/05.adding-a-folder",{"title":327,"path":328,"stem":329},"Manage and Edit Dependencies","/major-modules/boards/manage-and-edit-dependencies","02.major-modules/02.boards/06.manage-and-edit-dependencies",{"title":331,"path":332,"stem":333},"Creating Subfolders in DevStride","/major-modules/boards/creating-subfolders-in-devstride","02.major-modules/02.boards/07.creating-subfolders-in-devstride",{"title":335,"path":336,"stem":337},"Setting up and Using Perpetual Boards","/major-modules/boards/setting-up-and-using-perpetual-boards","02.major-modules/02.boards/08.setting-up-and-using-perpetual-boards",{"title":339,"path":340,"stem":341},"Using Cycle Boards","/major-modules/boards/using-cycle-boards","02.major-modules/02.boards/09.using-cycle-boards",{"title":343,"path":344,"stem":345},"Track and Move Work with Board Views","/major-modules/boards/track-and-move-work-with-board-views","02.major-modules/02.boards/10.track-and-move-work-with-board-views",{"title":347,"path":348,"stem":349},"Boards and WIP Limiters","/major-modules/boards/boards-and-wip-limiters","02.major-modules/02.boards/11.boards-and-wip-limiters",{"title":351,"path":352,"stem":353},"Board & Folder Permissions","/major-modules/boards/board-and-folder-permissions","02.major-modules/02.boards/12.board-and-folder-permissions",{"title":355,"path":356,"stem":357,"children":358,"page":84},"Track Progress: Gantts","/major-modules/track-progress-gantts","02.major-modules/03.track-progress-gantts",[359,363,367,371],{"title":360,"path":361,"stem":362},"Track Progress: Setting Up Gantt Charts","/major-modules/track-progress-gantts/setting-up-gantt-charts","02.major-modules/03.track-progress-gantts/01.setting-up-gantt-charts",{"title":364,"path":365,"stem":366},"Viewing Gantt Charts","/major-modules/track-progress-gantts/viewing-gantt-charts","02.major-modules/03.track-progress-gantts/02.viewing-gantt-charts",{"title":368,"path":369,"stem":370},"Using Gantt Charts: Navigating the timeline","/major-modules/track-progress-gantts/navigating-the-timeline","02.major-modules/03.track-progress-gantts/03.navigating-the-timeline",{"title":372,"path":373,"stem":374},"Using Gantt Charts: Navigating the table","/major-modules/track-progress-gantts/navigating-the-table","02.major-modules/03.track-progress-gantts/04.navigating-the-table",{"title":376,"order":377,"path":378,"stem":379,"children":380,"page":84},"Measure Performance: Reports",4,"/major-modules/measure-performance-reports","02.major-modules/04.measure-performance-reports",[381,385,389,393,397,401,405,409,413,417,421,425,429,433,437],{"title":382,"path":383,"stem":384},"Reports Overview","/major-modules/measure-performance-reports/viewing-optimization","02.major-modules/04.measure-performance-reports/01.viewing-optimization",{"title":386,"path":387,"stem":388},"Using AI for powerful reports","/major-modules/measure-performance-reports/using-ai-for-powerful-reports","02.major-modules/04.measure-performance-reports/02.using-ai-for-powerful-reports",{"title":390,"path":391,"stem":392},"Report Customization Options","/major-modules/measure-performance-reports/report-filters-and-options","02.major-modules/04.measure-performance-reports/03.report-filters-and-options",{"title":394,"path":395,"stem":396},"Report: Current Progress","/major-modules/measure-performance-reports/current-progress","02.major-modules/04.measure-performance-reports/04.current-progress",{"title":398,"path":399,"stem":400},"Report: Trending Progress","/major-modules/measure-performance-reports/trending-progress","02.major-modules/04.measure-performance-reports/05.trending-progress",{"title":402,"path":403,"stem":404},"Report: Cycle Time","/major-modules/measure-performance-reports/cycle-time","02.major-modules/04.measure-performance-reports/06.cycle-time",{"title":406,"path":407,"stem":408},"Report: Throughput","/major-modules/measure-performance-reports/throughput","02.major-modules/04.measure-performance-reports/07.throughput",{"title":410,"path":411,"stem":412},"Report: Cumulative Flow","/major-modules/measure-performance-reports/cumulative-flow","02.major-modules/04.measure-performance-reports/08.cumulative-flow",{"title":414,"path":415,"stem":416},"Report: Velocity","/major-modules/measure-performance-reports/velocity","02.major-modules/04.measure-performance-reports/09.velocity",{"title":418,"path":419,"stem":420},"Report: Burn Up","/major-modules/measure-performance-reports/burn-up","02.major-modules/04.measure-performance-reports/10.burn-up",{"title":422,"path":423,"stem":424},"Report: Burn Down","/major-modules/measure-performance-reports/burn-down","02.major-modules/04.measure-performance-reports/11.burn-down",{"title":426,"path":427,"stem":428},"Report: User Time Completed","/major-modules/measure-performance-reports/user-time-completed","02.major-modules/04.measure-performance-reports/12.user-time-completed",{"title":430,"path":431,"stem":432},"Report: Churn","/major-modules/measure-performance-reports/churn","02.major-modules/04.measure-performance-reports/13.churn",{"title":434,"path":435,"stem":436},"Report: Time Allocation Matrix","/major-modules/measure-performance-reports/time-allocation-matrix","02.major-modules/04.measure-performance-reports/14.time-allocation-matrix",{"title":438,"path":439,"stem":440},"Report: Cycle Carry-Forward","/major-modules/measure-performance-reports/cycle-carry-forward","02.major-modules/04.measure-performance-reports/15.cycle-carry-forward",{"title":442,"order":280,"path":443,"stem":444,"children":445,"page":84},"Service Desk","/major-modules/service-desk","02.major-modules/05.service-desk",[446,450,454,458,462,466,470,474,478,482,486,490,494,498],{"title":447,"path":448,"stem":449},"Overview","/major-modules/service-desk/overview","02.major-modules/05.service-desk/01.overview",{"title":451,"path":452,"stem":453},"Enabling Service Desk","/major-modules/service-desk/enabling-service-desk","02.major-modules/05.service-desk/02.enabling-service-desk",{"title":455,"path":456,"stem":457},"Email Channels & Setup","/major-modules/service-desk/email-channels","02.major-modules/05.service-desk/03.email-channels",{"title":459,"path":460,"stem":461},"Requesters & Companies","/major-modules/service-desk/requesters-and-companies","02.major-modules/05.service-desk/04.requesters-and-companies",{"title":463,"path":464,"stem":465},"Customer Support Portal","/major-modules/service-desk/customer-support-portal","02.major-modules/05.service-desk/05.customer-support-portal",{"title":467,"path":468,"stem":469},"Working a Ticket","/major-modules/service-desk/working-a-ticket","02.major-modules/05.service-desk/06.working-a-ticket",{"title":471,"path":472,"stem":473},"Request Forms","/major-modules/service-desk/request-forms","02.major-modules/05.service-desk/07.request-forms",{"title":475,"path":476,"stem":477},"The Suspended Queue","/major-modules/service-desk/suspended-messages","02.major-modules/05.service-desk/08.suspended-messages",{"title":479,"path":480,"stem":481},"Finding & Filtering Tickets","/major-modules/service-desk/finding-and-filtering-tickets","02.major-modules/05.service-desk/09.finding-and-filtering-tickets",{"title":483,"path":484,"stem":485},"Permissions","/major-modules/service-desk/permissions","02.major-modules/05.service-desk/10.permissions",{"title":487,"path":488,"stem":489},"Service Level Agreements (SLA)","/major-modules/service-desk/sla","02.major-modules/05.service-desk/10.sla",{"title":491,"path":492,"stem":493},"Time-Based Ticket Automations","/major-modules/service-desk/time-based-automations","02.major-modules/05.service-desk/11.time-based-automations",{"title":495,"path":496,"stem":497},"Reports","/major-modules/service-desk/reports","02.major-modules/05.service-desk/12.reports",{"title":499,"path":500,"stem":501},"How email replies find their ticket","/major-modules/service-desk/how-email-replies-find-their-ticket","02.major-modules/05.service-desk/13.how-email-replies-find-their-ticket",{"title":503,"path":504,"stem":505,"children":506,"page":84},"Templates","/major-modules/templates","02.major-modules/06.templates",[507,510,514,518,522,526],{"title":447,"path":508,"stem":509},"/major-modules/templates/overview","02.major-modules/06.templates/01.overview",{"title":511,"path":512,"stem":513},"Creating a template","/major-modules/templates/creating-a-template","02.major-modules/06.templates/02.creating-a-template",{"title":515,"path":516,"stem":517},"Variables","/major-modules/templates/variables","02.major-modules/06.templates/03.variables",{"title":519,"path":520,"stem":521},"Applying a template","/major-modules/templates/applying-a-template","02.major-modules/06.templates/04.applying-a-template",{"title":523,"path":524,"stem":525},"Sharing templates","/major-modules/templates/sharing-templates","02.major-modules/06.templates/05.sharing-templates",{"title":527,"path":528,"stem":529},"Template health","/major-modules/templates/template-health","02.major-modules/06.templates/06.template-health",{"title":531,"path":532,"stem":533,"children":534,"page":84},"Knowledge Base","/major-modules/knowledge-base","02.major-modules/07.knowledge-base",[535,539,543,547,551,555,559,563,567,571,575,579],{"title":536,"path":537,"stem":538},"Knowledge Base Overview","/major-modules/knowledge-base/overview","02.major-modules/07.knowledge-base/01.overview",{"title":540,"path":541,"stem":542},"Write and Publish Your First Article","/major-modules/knowledge-base/write-and-publish-your-first-article","02.major-modules/07.knowledge-base/02.write-and-publish-your-first-article",{"title":544,"path":545,"stem":546},"Organizing with Categories","/major-modules/knowledge-base/organizing-with-categories","02.major-modules/07.knowledge-base/03.organizing-with-categories",{"title":548,"path":549,"stem":550},"Who Can See an Article","/major-modules/knowledge-base/who-can-see-an-article","02.major-modules/07.knowledge-base/04.who-can-see-an-article",{"title":552,"path":553,"stem":554},"The Article Lifecycle and URLs","/major-modules/knowledge-base/article-lifecycle-and-urls","02.major-modules/07.knowledge-base/05.article-lifecycle-and-urls",{"title":556,"path":557,"stem":558},"Article History and Restore","/major-modules/knowledge-base/article-history-and-restore","02.major-modules/07.knowledge-base/06.article-history-and-restore",{"title":560,"path":561,"stem":562},"Searching and Browsing","/major-modules/knowledge-base/searching-and-browsing","02.major-modules/07.knowledge-base/07.searching-and-browsing",{"title":564,"path":565,"stem":566},"The Customer Help Center","/major-modules/knowledge-base/the-customer-help-center","02.major-modules/07.knowledge-base/08.the-customer-help-center",{"title":568,"path":569,"stem":570},"Sharing Articles and Categories","/major-modules/knowledge-base/sharing-articles-and-categories","02.major-modules/07.knowledge-base/09.sharing-articles-and-categories",{"title":572,"path":573,"stem":574},"Article Review Comments","/major-modules/knowledge-base/article-review-comments","02.major-modules/07.knowledge-base/10.article-review-comments",{"title":576,"path":577,"stem":578},"Knowledge Base Permissions","/major-modules/knowledge-base/knowledge-base-permissions","02.major-modules/07.knowledge-base/11.knowledge-base-permissions",{"title":580,"path":581,"stem":582},"Customer Comments on Articles","/major-modules/knowledge-base/customer-comments-on-articles","02.major-modules/07.knowledge-base/12.customer-comments-on-articles",{"title":584,"path":585,"stem":586,"children":587,"page":84},"Personal Workspace","/personal-workspace","03.personal-workspace",[588,594,608,619],{"title":589,"path":590,"stem":591,"children":592},"My Work","/personal-workspace/my-work","03.personal-workspace/01.my-work/index",[593],{"title":589,"path":590,"stem":591},{"title":595,"order":596,"path":597,"stem":598,"children":599,"page":84},"Notifications",7,"/personal-workspace/notifications","03.personal-workspace/02.notifications",[600,604],{"title":601,"path":602,"stem":603},"Notifications in DevStride","/personal-workspace/notifications/overview-of-notification-options","03.personal-workspace/02.notifications/01.overview-of-notification-options",{"title":605,"path":606,"stem":607},"Customizing Notification Settings","/personal-workspace/notifications/customizing-notification-settings-for-individuals-and-teams","03.personal-workspace/02.notifications/02.customizing-notification-settings-for-individuals-and-teams",{"title":609,"path":610,"stem":611,"children":612,"page":84},"My Account","/personal-workspace/my-account","03.personal-workspace/03.my-account",[613,616],{"title":447,"path":614,"stem":615},"/personal-workspace/my-account/overview","03.personal-workspace/03.my-account/01.overview",{"title":206,"path":617,"stem":618},"/personal-workspace/my-account/api-keys","03.personal-workspace/03.my-account/02.api-keys",{"title":232,"path":620,"stem":621},"/personal-workspace/keyboard-shortcuts","03.personal-workspace/04.keyboard-shortcuts",{"title":623,"path":624,"stem":625,"children":626,"page":84},"Workspace Administration","/workspace-administration","04.workspace-administration",[627,647,657,790,803],{"title":628,"path":629,"stem":630,"children":631,"page":84},"Manage Items Module","/workspace-administration/manage-items","04.workspace-administration/01.manage-items",[632,635,639,643],{"title":447,"path":633,"stem":634},"/workspace-administration/manage-items/overview","04.workspace-administration/01.manage-items/01.overview",{"title":636,"path":637,"stem":638},"Finding & Filtering Items","/workspace-administration/manage-items/finding-and-filtering-items","04.workspace-administration/01.manage-items/02.finding-and-filtering-items",{"title":640,"path":641,"stem":642},"Creating & Sharing Views","/workspace-administration/manage-items/creating-and-sharing-views","04.workspace-administration/01.manage-items/03.creating-and-sharing-views",{"title":644,"path":645,"stem":646},"Item Hierarchy","/workspace-administration/manage-items/item-hierarchy","04.workspace-administration/01.manage-items/04.item-hierarchy",{"title":648,"order":649,"path":650,"stem":651,"children":652,"page":84},"Automate Workflows",5,"/workspace-administration/automations","04.workspace-administration/02.automations",[653],{"title":654,"path":655,"stem":656},"Setting Up Basic Automations","/workspace-administration/automations/setting-up-basic-automations","04.workspace-administration/02.automations/01.setting-up-basic-automations",{"title":658,"order":659,"path":660,"stem":661,"children":662,"page":84},"Configure Settings",6,"/workspace-administration/settings","04.workspace-administration/03.settings",[663,696,733,742,786],{"title":664,"path":665,"stem":666,"children":667,"page":84},"Organization","/workspace-administration/settings/organization","04.workspace-administration/03.settings/01.organization",[668,672,676,680,684,688,692],{"title":669,"path":670,"stem":671},"Org Configuration","/workspace-administration/settings/organization/org-profile","04.workspace-administration/03.settings/01.organization/01.org-profile",{"title":673,"path":674,"stem":675},"Users, Roles & MFA","/workspace-administration/settings/organization/users-roles-and-mfa","04.workspace-administration/03.settings/01.organization/02.users-roles-and-mfa",{"title":677,"path":678,"stem":679},"Time Tracking Lock & Soft Close","/workspace-administration/settings/organization/time-tracking-lock","04.workspace-administration/03.settings/01.organization/03.time-tracking-lock",{"title":681,"path":682,"stem":683},"Training Sandboxes","/workspace-administration/settings/organization/training-sandboxes","04.workspace-administration/03.settings/01.organization/04.training-sandboxes",{"title":685,"path":686,"stem":687},"Personas","/workspace-administration/settings/organization/personas","04.workspace-administration/03.settings/01.organization/05.personas",{"title":689,"path":690,"stem":691},"Teams","/workspace-administration/settings/organization/teams","04.workspace-administration/03.settings/01.organization/06.teams",{"title":693,"path":694,"stem":695},"Import History","/workspace-administration/settings/organization/import-history","04.workspace-administration/03.settings/01.organization/07.import-history",{"title":697,"path":698,"stem":699,"children":700,"page":84},"Data Model","/workspace-administration/settings/data-model","04.workspace-administration/03.settings/02.data-model",[701,705,709,713,717,721,725,729],{"title":702,"path":703,"stem":704},"Cadences","/workspace-administration/settings/data-model/cadences","04.workspace-administration/03.settings/02.data-model/01.cadences",{"title":706,"path":707,"stem":708},"Item Types","/workspace-administration/settings/data-model/item-types","04.workspace-administration/03.settings/02.data-model/02.item-types",{"title":710,"path":711,"stem":712},"Tags","/workspace-administration/settings/data-model/tags","04.workspace-administration/03.settings/02.data-model/03.tags",{"title":714,"path":715,"stem":716},"Custom Fields","/workspace-administration/settings/data-model/custom-fields","04.workspace-administration/03.settings/02.data-model/04.custom-fields",{"title":718,"path":719,"stem":720},"Priority Levels","/workspace-administration/settings/data-model/priority-levels","04.workspace-administration/03.settings/02.data-model/05.priority-levels",{"title":722,"path":723,"stem":724},"Effort Points and Time Estimation","/workspace-administration/settings/data-model/effort-points-and-time-estimation","04.workspace-administration/03.settings/02.data-model/06.effort-points-and-time-estimation",{"title":726,"path":727,"stem":728},"Statuses and WIP Limiters","/workspace-administration/settings/data-model/statuses-and-wip-limiters","04.workspace-administration/03.settings/02.data-model/07.statuses-and-wip-limiters",{"title":730,"path":731,"stem":732},"Customizing the Item Drawer","/workspace-administration/settings/data-model/customizing-the-item-drawer","04.workspace-administration/03.settings/02.data-model/08.customizing-the-item-drawer",{"title":734,"path":735,"stem":736,"children":737,"page":84},"Forms","/workspace-administration/settings/forms","04.workspace-administration/03.settings/03.forms",[738],{"title":739,"path":740,"stem":741},"Item Request Forms","/workspace-administration/settings/forms/item-request-forms","04.workspace-administration/03.settings/03.forms/item-request-forms",{"title":743,"path":744,"stem":745,"children":746,"page":84},"Integrations","/workspace-administration/settings/integrations","04.workspace-administration/03.settings/04.integrations",[747,751,755,759,763,766,770,774,778,782],{"title":748,"path":749,"stem":750},"GitHub","/workspace-administration/settings/integrations/github","04.workspace-administration/03.settings/04.integrations/01.github",{"title":752,"path":753,"stem":754},"Connect AI & the MCP Server","/workspace-administration/settings/integrations/connect-ai-and-mcp","04.workspace-administration/03.settings/04.integrations/02.connect-ai-and-mcp",{"title":756,"path":757,"stem":758},"Database Access for BI Tools","/workspace-administration/settings/integrations/database-access","04.workspace-administration/03.settings/04.integrations/03.database-access",{"title":760,"path":761,"stem":762},"Jira Integration","/workspace-administration/settings/integrations/jira","04.workspace-administration/03.settings/04.integrations/04.jira",{"title":206,"path":764,"stem":765},"/workspace-administration/settings/integrations/api-keys","04.workspace-administration/03.settings/04.integrations/05.api-keys",{"title":767,"path":768,"stem":769},"Enterprise SSO","/workspace-administration/settings/integrations/enterprise-sso","04.workspace-administration/03.settings/04.integrations/06.enterprise-sso",{"title":771,"path":772,"stem":773},"Microsoft Teams","/workspace-administration/settings/integrations/microsoft-teams","04.workspace-administration/03.settings/04.integrations/07.microsoft-teams",{"title":775,"path":776,"stem":777},"Slack","/workspace-administration/settings/integrations/slack","04.workspace-administration/03.settings/04.integrations/08.slack",{"title":779,"path":780,"stem":781},"Connected Apps","/workspace-administration/settings/integrations/connected-apps","04.workspace-administration/03.settings/04.integrations/09.connected-apps",{"title":783,"path":784,"stem":785},"Azure DevOps Integration","/workspace-administration/settings/integrations/azure-devops","04.workspace-administration/03.settings/04.integrations/10.azure-devops",{"title":787,"path":788,"stem":789},"Subscription & Billing","/workspace-administration/settings/subscription-and-billing","04.workspace-administration/03.settings/05.subscription-and-billing",{"title":483,"path":791,"stem":792,"children":793,"page":84},"/workspace-administration/permissions","04.workspace-administration/04.permissions",[794,797,800],{"title":194,"path":795,"stem":796},"/workspace-administration/permissions/understanding-permissions","04.workspace-administration/04.permissions/01.understanding-permissions",{"title":198,"path":798,"stem":799},"/workspace-administration/permissions/roles-and-permissions","04.workspace-administration/04.permissions/02.roles-and-permissions",{"title":202,"path":801,"stem":802},"/workspace-administration/permissions/sharing-and-access","04.workspace-administration/04.permissions/03.sharing-and-access",{"title":804,"order":805,"path":806,"stem":807,"children":808,"page":84},"Filters",10,"/workspace-administration/filters","04.workspace-administration/05.filters",[809,812,815,819,823,827,831,834,837,841,861],{"title":589,"path":810,"stem":811},"/workspace-administration/filters/my-work","04.workspace-administration/05.filters/01.my-work",{"title":595,"path":813,"stem":814},"/workspace-administration/filters/notifications","04.workspace-administration/05.filters/02.notifications",{"title":816,"path":817,"stem":818},"Workstreams","/workspace-administration/filters/workstreams","04.workspace-administration/05.filters/03.workstreams",{"title":820,"path":821,"stem":822},"Cycles","/workspace-administration/filters/cycles","04.workspace-administration/05.filters/04.cycles",{"title":824,"path":825,"stem":826},"Boards","/workspace-administration/filters/boards","04.workspace-administration/05.filters/05.boards",{"title":828,"path":829,"stem":830},"Gantt","/workspace-administration/filters/gantt","04.workspace-administration/05.filters/06.gantt",{"title":52,"path":832,"stem":833},"/workspace-administration/filters/items","04.workspace-administration/05.filters/07.items",{"title":495,"path":835,"stem":836},"/workspace-administration/filters/reports","04.workspace-administration/05.filters/08.reports",{"title":838,"path":839,"stem":840},"Automations","/workspace-administration/filters/automations","04.workspace-administration/05.filters/09.automations",{"title":842,"path":843,"stem":844,"children":845,"page":84},"Sort ","/workspace-administration/filters/sort","04.workspace-administration/05.filters/10.sort",[846,849,852,855,858],{"title":589,"path":847,"stem":848},"/workspace-administration/filters/sort/my-work","04.workspace-administration/05.filters/10.sort/01.my-work",{"title":816,"path":850,"stem":851},"/workspace-administration/filters/sort/workstreams","04.workspace-administration/05.filters/10.sort/02.workstreams",{"title":820,"path":853,"stem":854},"/workspace-administration/filters/sort/cycles","04.workspace-administration/05.filters/10.sort/03.cycles",{"title":824,"path":856,"stem":857},"/workspace-administration/filters/sort/boards","04.workspace-administration/05.filters/10.sort/04.boards",{"title":52,"path":859,"stem":860},"/workspace-administration/filters/sort/items","04.workspace-administration/05.filters/10.sort/05.items",{"title":862,"path":863,"stem":864,"children":865,"page":84},"Options","/workspace-administration/filters/options","04.workspace-administration/05.filters/11.options",[866,869,872,876,879],{"title":589,"path":867,"stem":868},"/workspace-administration/filters/options/my-work","04.workspace-administration/05.filters/11.options/01.my-work",{"title":816,"path":870,"stem":871},"/workspace-administration/filters/options/workstreams","04.workspace-administration/05.filters/11.options/02.workstreams",{"title":873,"path":874,"stem":875},"Cycle","/workspace-administration/filters/options/cycle","04.workspace-administration/05.filters/11.options/03.cycle",{"title":824,"path":877,"stem":878},"/workspace-administration/filters/options/boards","04.workspace-administration/05.filters/11.options/04.boards",{"title":52,"path":880,"stem":881},"/workspace-administration/filters/options/items","04.workspace-administration/05.filters/11.options/05.items",{"title":883,"path":884,"stem":885,"children":886,"page":84},"Planning Concepts & Use Cases","/planning-concepts-and-use-cases","05.planning-concepts-and-use-cases",[887,943],{"title":888,"order":889,"path":890,"stem":891,"children":892,"page":84},"Understanding Project Planning Tools",9,"/planning-concepts-and-use-cases/project-planning-tools","05.planning-concepts-and-use-cases/01.project-planning-tools",[893,926],{"title":894,"path":895,"stem":896,"children":897,"page":84},"Gantt Charts","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts",[898,902,906,910,914,918,922],{"title":899,"path":900,"stem":901},"Gantt Charts Basics","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/gantt-charts-basics","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/01.gantt-charts-basics",{"title":903,"path":904,"stem":905},"Create New Gantt","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/create-new-gantt","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/02.create-new-gantt",{"title":907,"path":908,"stem":909},"Add to Gantt","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/add-to-gantt","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/03.add-to-gantt",{"title":911,"path":912,"stem":913},"Gantt Charts Toolbar","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/gantt-charts-toolbar","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/04.gantt-charts-toolbar",{"title":915,"path":916,"stem":917},"Scenario Planning","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/scenario-planning","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/05.scenario-planning",{"title":919,"path":920,"stem":921},"Tips for Effective Gantt Chart Planning","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/tips-for-effective-gantt-chart-planning","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/06.tips-for-effective-gantt-chart-planning",{"title":923,"path":924,"stem":925},"Link Mode","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/link-mode","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/07.link-mode",{"title":927,"path":928,"stem":929,"children":930,"page":84},"Kanban Boards","/planning-concepts-and-use-cases/project-planning-tools/kanban-boards","05.planning-concepts-and-use-cases/01.project-planning-tools/kanban-boards",[931,935,939],{"title":932,"path":933,"stem":934},"Setting Up Your Kanban Board","/planning-concepts-and-use-cases/project-planning-tools/kanban-boards/setting-up-your-kanban-board","05.planning-concepts-and-use-cases/01.project-planning-tools/kanban-boards/01.setting-up-your-kanban-board",{"title":936,"path":937,"stem":938},"Using Kanban for Workflow Visualization","/planning-concepts-and-use-cases/project-planning-tools/kanban-boards/using-kanban-for-workflow-visualization","05.planning-concepts-and-use-cases/01.project-planning-tools/kanban-boards/02.using-kanban-for-workflow-visualization",{"title":940,"path":941,"stem":942},"Kanban Best Practices","/planning-concepts-and-use-cases/project-planning-tools/kanban-boards/kanban-best-practices","05.planning-concepts-and-use-cases/01.project-planning-tools/kanban-boards/03.kanban-best-practices",{"title":944,"order":945,"path":946,"stem":947,"children":948,"page":84},"Use Cases",12,"/planning-concepts-and-use-cases/use-cases","05.planning-concepts-and-use-cases/02.use-cases",[949,952,956,960,964,968],{"title":894,"path":950,"stem":951},"/planning-concepts-and-use-cases/use-cases/gantt-charts","05.planning-concepts-and-use-cases/02.use-cases/01.gantt-charts",{"title":953,"path":954,"stem":955},"Plan a Sprint","/planning-concepts-and-use-cases/use-cases/plan-a-sprint","05.planning-concepts-and-use-cases/02.use-cases/02.plan-a-sprint",{"title":957,"path":958,"stem":959},"Conduct a Standup","/planning-concepts-and-use-cases/use-cases/conduct-a-standup","05.planning-concepts-and-use-cases/02.use-cases/03.conduct-a-standup",{"title":961,"path":962,"stem":963},"Manage Cadences","/planning-concepts-and-use-cases/use-cases/manage-cadences","05.planning-concepts-and-use-cases/02.use-cases/04.manage-cadences",{"title":965,"path":966,"stem":967},"Customizing Item Types","/planning-concepts-and-use-cases/use-cases/customizing-item-types","05.planning-concepts-and-use-cases/02.use-cases/05.customizing-item-types",{"title":969,"path":970,"stem":971},"Backlog Refinement","/planning-concepts-and-use-cases/use-cases/backlog-refinement","05.planning-concepts-and-use-cases/02.use-cases/06.backlog-refinement",{"title":973,"path":974,"stem":975,"children":976,"page":84},"Integrations & Extensibility","/integrations-and-extensibility","06.integrations-and-extensibility",[977,1002],{"title":978,"path":979,"stem":980,"children":981,"page":84},"DevStride MCP Server","/integrations-and-extensibility/devstride-mcp-server","06.integrations-and-extensibility/01.devstride-mcp-server",[982,986,990,994,998],{"title":983,"path":984,"stem":985},"What Is the DevStride MCP Server?","/integrations-and-extensibility/devstride-mcp-server/what-is-the-devstride-mcp-server","06.integrations-and-extensibility/01.devstride-mcp-server/01.what-is-the-devstride-mcp-server",{"title":987,"path":988,"stem":989},"Setting Up Your Connection","/integrations-and-extensibility/devstride-mcp-server/setting-up-your-connection","06.integrations-and-extensibility/01.devstride-mcp-server/02.setting-up-your-connection",{"title":991,"path":992,"stem":993},"Doing Real Work with the DevStride MCP Server","/integrations-and-extensibility/devstride-mcp-server/doing-real-work-with-the-devstride-mcp-server","06.integrations-and-extensibility/01.devstride-mcp-server/03.doing-real-work-with-the-devstride-mcp-server",{"title":995,"path":996,"stem":997},"Best Practices & Tips","/integrations-and-extensibility/devstride-mcp-server/best-practices-and-tips","06.integrations-and-extensibility/01.devstride-mcp-server/04.best-practices-and-tips",{"title":999,"path":1000,"stem":1001},"Tool Reference","/integrations-and-extensibility/devstride-mcp-server/tool-reference","06.integrations-and-extensibility/01.devstride-mcp-server/05.tool-reference",{"title":1003,"path":1004,"stem":1005,"children":1006},"Plugins","/integrations-and-extensibility/plugins","06.integrations-and-extensibility/02.plugins/index",[1007,1009],{"title":1008,"path":1004,"stem":1005},"Getting Started With Plugins",{"title":1010,"path":1011,"stem":1012,"children":1013,"page":84},"Weekly Logs","/integrations-and-extensibility/plugins/weekly-logs","06.integrations-and-extensibility/02.plugins/01.weekly-logs",[1014,1017,1021,1025,1029,1033,1037,1041,1044,1048,1052,1056],{"title":447,"path":1015,"stem":1016},"/integrations-and-extensibility/plugins/weekly-logs/overview","06.integrations-and-extensibility/02.plugins/01.weekly-logs/01.overview",{"title":1018,"path":1019,"stem":1020},"Grid","/integrations-and-extensibility/plugins/weekly-logs/grid","06.integrations-and-extensibility/02.plugins/01.weekly-logs/02.grid",{"title":1022,"path":1023,"stem":1024},"Views","/integrations-and-extensibility/plugins/weekly-logs/views","06.integrations-and-extensibility/02.plugins/01.weekly-logs/03.views",{"title":1026,"path":1027,"stem":1028},"Navigation","/integrations-and-extensibility/plugins/weekly-logs/navigation","06.integrations-and-extensibility/02.plugins/01.weekly-logs/04.navigation",{"title":1030,"path":1031,"stem":1032},"Proposed Items","/integrations-and-extensibility/plugins/weekly-logs/proposed-items","06.integrations-and-extensibility/02.plugins/01.weekly-logs/05.proposed-items",{"title":1034,"path":1035,"stem":1036},"Search","/integrations-and-extensibility/plugins/weekly-logs/search","06.integrations-and-extensibility/02.plugins/01.weekly-logs/06.search",{"title":1038,"path":1039,"stem":1040},"Time Logging","/integrations-and-extensibility/plugins/weekly-logs/logging","06.integrations-and-extensibility/02.plugins/01.weekly-logs/07.logging",{"title":804,"path":1042,"stem":1043},"/integrations-and-extensibility/plugins/weekly-logs/filtering","06.integrations-and-extensibility/02.plugins/01.weekly-logs/08.filtering",{"title":1045,"path":1046,"stem":1047},"Team Logs","/integrations-and-extensibility/plugins/weekly-logs/team-logs","06.integrations-and-extensibility/02.plugins/01.weekly-logs/09.team-logs",{"title":1049,"path":1050,"stem":1051},"Organization Switch","/integrations-and-extensibility/plugins/weekly-logs/organization-switch","06.integrations-and-extensibility/02.plugins/01.weekly-logs/10.organization-switch",{"title":1053,"path":1054,"stem":1055},"Export","/integrations-and-extensibility/plugins/weekly-logs/export","06.integrations-and-extensibility/02.plugins/01.weekly-logs/11.export",{"title":1057,"path":1058,"stem":1059},"Meetings","/integrations-and-extensibility/plugins/weekly-logs/meetings","06.integrations-and-extensibility/02.plugins/01.weekly-logs/12.meetings",{"title":1061,"path":1062,"stem":1063,"children":1064,"page":84},"Developer Experience","/developer-experience","07.developer-experience",[1065,1101,1157],{"title":1066,"path":1067,"stem":1068,"children":1069,"page":84},"Developer Guide","/developer-experience/guide","07.developer-experience/00.guide",[1070,1073,1077,1081,1085,1089,1093,1097],{"title":447,"path":1071,"stem":1072},"/developer-experience/guide/overview","07.developer-experience/00.guide/01.overview",{"title":1074,"path":1075,"stem":1076},"Set up your machine","/developer-experience/guide/set-up-your-machine","07.developer-experience/00.guide/02.set-up-your-machine",{"title":1078,"path":1079,"stem":1080},"Credentials and access","/developer-experience/guide/credentials-and-access","07.developer-experience/00.guide/03.credentials-and-access",{"title":1082,"path":1083,"stem":1084},"Plan work","/developer-experience/guide/plan-work","07.developer-experience/00.guide/04.plan-work",{"title":1086,"path":1087,"stem":1088},"Develop","/developer-experience/guide/develop","07.developer-experience/00.guide/05.develop",{"title":1090,"path":1091,"stem":1092},"Release","/developer-experience/guide/release","07.developer-experience/00.guide/06.release",{"title":1094,"path":1095,"stem":1096},"Troubleshooting","/developer-experience/guide/troubleshooting","07.developer-experience/00.guide/07.troubleshooting",{"title":1098,"path":1099,"stem":1100},"For admins: access, keys and stages","/developer-experience/guide/for-admins","07.developer-experience/00.guide/08.for-admins",{"title":1102,"path":1103,"stem":1104,"children":1105,"page":84},"Intro","/developer-experience/intro","07.developer-experience/01.intro",[1106,1110,1113,1117,1121,1125,1129,1133,1137,1141,1145,1149,1153],{"title":1107,"path":1108,"stem":1109},"How DevStride Is Built, and Why","/developer-experience/intro/how-we-build","07.developer-experience/01.intro/00.how-we-build",{"title":5,"path":1111,"stem":1112},"/developer-experience/intro/getting-started","07.developer-experience/01.intro/01.getting-started",{"title":1114,"path":1115,"stem":1116},"Introduction to the ds CLI","/developer-experience/intro/introduction","07.developer-experience/01.intro/02.introduction",{"title":1118,"path":1119,"stem":1120},"Command Reference","/developer-experience/intro/command-reference","07.developer-experience/01.intro/03.command-reference",{"title":1122,"path":1123,"stem":1124},"Local Development","/developer-experience/intro/local-development","07.developer-experience/01.intro/04.local-development",{"title":1126,"path":1127,"stem":1128},"Dockerized Worktree Development","/developer-experience/intro/dockerized-worktree-development","07.developer-experience/01.intro/05.dockerized-worktree-development",{"title":1130,"path":1131,"stem":1132},"Golden Dataset","/developer-experience/intro/golden-dataset","07.developer-experience/01.intro/06.golden-dataset",{"title":1134,"path":1135,"stem":1136},"Deployment","/developer-experience/intro/deployment","07.developer-experience/01.intro/07.deployment",{"title":1138,"path":1139,"stem":1140},"API Development","/developer-experience/intro/api-development","07.developer-experience/01.intro/08.api-development",{"title":1142,"path":1143,"stem":1144},"Stripe Integration","/developer-experience/intro/stripe-integration","07.developer-experience/01.intro/09.stripe-integration",{"title":1146,"path":1147,"stem":1148},"Maintenance & Codebase Checks","/developer-experience/intro/maintenance-and-codebase-checks","07.developer-experience/01.intro/10.maintenance-and-codebase-checks",{"title":1150,"path":1151,"stem":1152},"AI Development","/developer-experience/intro/ai-development","07.developer-experience/01.intro/11.ai-development",{"title":1154,"path":1155,"stem":1156},"Data Conversion Utilities","/developer-experience/intro/data-conversion-utilities","07.developer-experience/01.intro/12.data-conversion-utilities",{"title":1158,"path":1159,"stem":1160,"children":1161,"page":84},"Agentic Skills","/developer-experience/agentic-skills","07.developer-experience/02.agentic-skills",[1162,1166,1170,1174,1178,1182,1186,1190],{"title":1163,"path":1164,"stem":1165},"The Idea Behind the Loop","/developer-experience/agentic-skills/the-idea-behind-the-loop","07.developer-experience/02.agentic-skills/00.the-idea-behind-the-loop",{"title":1167,"path":1168,"stem":1169},"DevStride for Claude Code","/developer-experience/agentic-skills/claude-code-skills-overview","07.developer-experience/02.agentic-skills/01.claude-code-skills-overview",{"title":1171,"path":1172,"stem":1173},"Getting the Skills","/developer-experience/agentic-skills/getting-the-skills","07.developer-experience/02.agentic-skills/02.getting-the-skills",{"title":1175,"path":1176,"stem":1177},"Guided Setup","/developer-experience/agentic-skills/setup-guide","07.developer-experience/02.agentic-skills/03.setup-guide",{"title":1179,"path":1180,"stem":1181},"Skill Audit","/developer-experience/agentic-skills/skill-audit","07.developer-experience/02.agentic-skills/04.skill-audit",{"title":1183,"path":1184,"stem":1185},"The Planning Loop","/developer-experience/agentic-skills/claude-skills-planning-loop","07.developer-experience/02.agentic-skills/05.claude-skills-planning-loop",{"title":1187,"path":1188,"stem":1189},"The Delivery Loop","/developer-experience/agentic-skills/claude-skills-delivery-loop","07.developer-experience/02.agentic-skills/06.claude-skills-delivery-loop",{"title":1191,"path":1192,"stem":1193},"Configuration Reference","/developer-experience/agentic-skills/configuration-reference","07.developer-experience/02.agentic-skills/07.configuration-reference",{"title":1195,"order":1196,"path":1197,"stem":1198,"children":1199,"page":84},"Release Notes",11,"/release-notes","08.release-notes",[1200,1204,1208,1212,1216,1220,1224,1228,1232,1236,1240,1244,1248,1252,1256,1260,1264,1268,1272,1276,1280,1284,1288,1292,1296,1300,1304,1308,1312,1316,1320,1324,1328,1332,1336,1340,1344,1348,1352,1356,1360,1364,1368,1372,1376,1380,1384,1388,1392,1396,1400,1404,1408,1412,1416,1420,1424,1428,1432,1436,1440,1444,1448,1452,1456,1460,1464,1468,1472,1476,1480,1484,1488,1492,1496,1500,1504,1508,1512,1516,1520,1524],{"title":1201,"path":1202,"stem":1203},"2026-10-03","/release-notes/2026-10-03","08.release-notes/82.2026-10-03",{"title":1205,"path":1206,"stem":1207},"2026-09-17","/release-notes/2026-09-17","08.release-notes/81.2026-09-17",{"title":1209,"path":1210,"stem":1211},"2026-09-13","/release-notes/2026-09-13","08.release-notes/80.2026-09-13",{"title":1213,"path":1214,"stem":1215},"2026-09-11","/release-notes/2026-09-11","08.release-notes/79.2026-09-11",{"title":1217,"path":1218,"stem":1219},"2026-09-01","/release-notes/2026-09-01","08.release-notes/78.2026-09-01",{"title":1221,"path":1222,"stem":1223},"2026-08-29","/release-notes/2026-08-29","08.release-notes/77.2026-08-29",{"title":1225,"path":1226,"stem":1227},"2026-08-27","/release-notes/2026-08-27","08.release-notes/76.2026-08-27",{"title":1229,"path":1230,"stem":1231},"2026-08-25","/release-notes/2026-08-25","08.release-notes/75.2026-08-25",{"title":1233,"path":1234,"stem":1235},"2026-08-22","/release-notes/2026-08-22","08.release-notes/74.2026-08-22",{"title":1237,"path":1238,"stem":1239},"2026-08-21","/release-notes/2026-08-21","08.release-notes/73.2026-08-21",{"title":1241,"path":1242,"stem":1243},"2026-08-17","/release-notes/2026-08-17","08.release-notes/72.2026-08-17",{"title":1245,"path":1246,"stem":1247},"2026-08-16","/release-notes/2026-08-16","08.release-notes/71.2026-08-16",{"title":1249,"path":1250,"stem":1251},"2026-08-14","/release-notes/2026-08-14","08.release-notes/70.2026-08-14",{"title":1253,"path":1254,"stem":1255},"2026-08-11","/release-notes/2026-08-11","08.release-notes/69.2026-08-11",{"title":1257,"path":1258,"stem":1259},"2026-08-07","/release-notes/2026-08-07","08.release-notes/68.2026-08-07",{"title":1261,"path":1262,"stem":1263},"2026-08-05","/release-notes/2026-08-05","08.release-notes/67.2026-08-05",{"title":1265,"path":1266,"stem":1267},"2026-08-01","/release-notes/2026-08-01","08.release-notes/66.2026-08-01",{"title":1269,"path":1270,"stem":1271},"2026-07-30","/release-notes/2026-07-30","08.release-notes/65.2026-07-30",{"title":1273,"path":1274,"stem":1275},"2026-07-28","/release-notes/2026-07-28","08.release-notes/64.2026-07-28",{"title":1277,"path":1278,"stem":1279},"2026-07-22","/release-notes/2026-07-22","08.release-notes/63.2026-07-22",{"title":1281,"path":1282,"stem":1283},"2026-07-19","/release-notes/2026-07-19","08.release-notes/62.2026-07-19",{"title":1285,"path":1286,"stem":1287},"2026-07-17","/release-notes/2026-07-17","08.release-notes/61.2026-07-17",{"title":1289,"path":1290,"stem":1291},"2026-07-15","/release-notes/2026-07-15","08.release-notes/60.2026-07-15",{"title":1293,"path":1294,"stem":1295},"2026-07-12","/release-notes/2026-07-12","08.release-notes/59.2026-07-12",{"title":1297,"path":1298,"stem":1299},"2026-07-11","/release-notes/2026-07-11","08.release-notes/58.2026-07-11",{"title":1301,"path":1302,"stem":1303},"2026-07-09","/release-notes/2026-07-09","08.release-notes/57.2026-07-09",{"title":1305,"path":1306,"stem":1307},"2026-07-07","/release-notes/2026-07-07","08.release-notes/56.2026-07-07",{"title":1309,"path":1310,"stem":1311},"2026-07-06","/release-notes/2026-07-06","08.release-notes/55.2026-07-06",{"title":1313,"path":1314,"stem":1315},"2026-07-02","/release-notes/2026-07-02","08.release-notes/54.2026-07-02",{"title":1317,"path":1318,"stem":1319},"2026-06-30","/release-notes/2026-06-30","08.release-notes/53.2026-06-30",{"title":1321,"path":1322,"stem":1323},"2026-06-17","/release-notes/2026-06-17","08.release-notes/52.2026-06-17",{"title":1325,"path":1326,"stem":1327},"2026-06-12","/release-notes/2026-06-12","08.release-notes/51.2026-06-12",{"title":1329,"path":1330,"stem":1331},"2026-05-29","/release-notes/2026-05-29","08.release-notes/50.2026-05-29",{"title":1333,"path":1334,"stem":1335},"2026-05-13","/release-notes/2026-05-13","08.release-notes/49.2026-05-13",{"title":1337,"path":1338,"stem":1339},"2026-04-29","/release-notes/2026-04-29","08.release-notes/48.2026-04-29",{"title":1341,"path":1342,"stem":1343},"2026-04-14","/release-notes/2026-04-14","08.release-notes/47.2026-04-14",{"title":1345,"path":1346,"stem":1347},"2026-04-09","/release-notes/2026-04-09","08.release-notes/46.2026-04-09",{"title":1349,"path":1350,"stem":1351},"2026-03-13","/release-notes/2026-03-13","08.release-notes/45.2026-03-13",{"title":1353,"path":1354,"stem":1355},"2026-02-16","/release-notes/2026-02-16","08.release-notes/44.2026-02-16",{"title":1357,"path":1358,"stem":1359},"2026-02-06","/release-notes/2026-02-06","08.release-notes/43.2026-02-06",{"title":1361,"path":1362,"stem":1363},"2026-01-30","/release-notes/2026-01-30","08.release-notes/42.2026-01-30",{"title":1365,"path":1366,"stem":1367},"2026-01-19","/release-notes/2026-01-19","08.release-notes/41.2026-01-19",{"title":1369,"path":1370,"stem":1371},"2025-09-27","/release-notes/2025-09-27","08.release-notes/40.2025-09-27",{"title":1373,"path":1374,"stem":1375},"2025-07-07","/release-notes/2025-07-07","08.release-notes/39.2025-07-07",{"title":1377,"path":1378,"stem":1379},"2025-06-16","/release-notes/2025-06-16","08.release-notes/38.2025-06-16",{"title":1381,"path":1382,"stem":1383},"2025-05-29","/release-notes/2025-05-29","08.release-notes/37.2025-05-29",{"title":1385,"path":1386,"stem":1387},"2025-04-28","/release-notes/2025-04-28","08.release-notes/36.2025-04-28",{"title":1389,"path":1390,"stem":1391},"2025-03-24","/release-notes/2025-03-24","08.release-notes/35.2025-03-24",{"title":1393,"path":1394,"stem":1395},"2024-12-20","/release-notes/2024-12-20","08.release-notes/34.2024-12-20",{"title":1397,"path":1398,"stem":1399},"2024-10-21","/release-notes/2024-10-21","08.release-notes/33.2024-10-21",{"title":1401,"path":1402,"stem":1403},"2024-10-11","/release-notes/2024-10-11","08.release-notes/32.2024-10-11",{"title":1405,"path":1406,"stem":1407},"2024-09-11","/release-notes/2024-09-11","08.release-notes/31.2024-09-11",{"title":1409,"path":1410,"stem":1411},"2024-08-28","/release-notes/2024-08-28","08.release-notes/30.2024-08-28",{"title":1413,"path":1414,"stem":1415},"2024-07-10","/release-notes/2024-07-10","08.release-notes/29.2024-07-10",{"title":1417,"path":1418,"stem":1419},"2024-06-24","/release-notes/2024-06-24","08.release-notes/28.2024-06-24",{"title":1421,"path":1422,"stem":1423},"2024-05-15","/release-notes/2024-05-15","08.release-notes/27.2024-05-15",{"title":1425,"path":1426,"stem":1427},"2024-04-29","/release-notes/2024-04-29","08.release-notes/26.2024-04-29",{"title":1429,"path":1430,"stem":1431},"2024-03-18","/release-notes/2024-03-18","08.release-notes/25.2024-03-18",{"title":1433,"path":1434,"stem":1435},"2024-03-04","/release-notes/2024-03-04","08.release-notes/24.2024-03-04",{"title":1437,"path":1438,"stem":1439},"2024-02-26","/release-notes/2024-02-26","08.release-notes/23.2024-02-26",{"title":1441,"path":1442,"stem":1443},"2024-01-17","/release-notes/2024-01-17","08.release-notes/22.2024-01-17",{"title":1445,"path":1446,"stem":1447},"2023-12-27","/release-notes/2023-12-27","08.release-notes/21.2023-12-27",{"title":1449,"path":1450,"stem":1451},"2023-11-08","/release-notes/2023-11-08","08.release-notes/20.2023-11-08",{"title":1453,"path":1454,"stem":1455},"2023-10-10","/release-notes/2023-10-10","08.release-notes/19.2023-10-10",{"title":1457,"path":1458,"stem":1459},"2023-09-27","/release-notes/2023-09-27","08.release-notes/18.2023-09-27",{"title":1461,"path":1462,"stem":1463},"2023-09-18","/release-notes/2023-09-18","08.release-notes/17.2023-09-18",{"title":1465,"path":1466,"stem":1467},"2023-09-04","/release-notes/2023-09-04","08.release-notes/16.2023-09-04",{"title":1469,"path":1470,"stem":1471},"2023-08-04","/release-notes/2023-08-04","08.release-notes/15.2023-08-04",{"title":1473,"path":1474,"stem":1475},"2023-07-11","/release-notes/2023-07-11","08.release-notes/14.2023-07-11",{"title":1477,"path":1478,"stem":1479},"2023-06-21","/release-notes/2023-06-21","08.release-notes/13.2023-06-21",{"title":1481,"path":1482,"stem":1483},"2023-05-24","/release-notes/2023-05-24","08.release-notes/12.2023-05-24",{"title":1485,"path":1486,"stem":1487},"2023-04-24","/release-notes/2023-04-24","08.release-notes/11.2023-04-24",{"title":1489,"path":1490,"stem":1491},"2023-04-20","/release-notes/2023-04-20","08.release-notes/10.2023-04-20",{"title":1493,"path":1494,"stem":1495},"2023-03-20","/release-notes/2023-03-20","08.release-notes/09.2023-03-20",{"title":1497,"path":1498,"stem":1499},"2023-02-28","/release-notes/2023-02-28","08.release-notes/08.2023-02-28",{"title":1501,"path":1502,"stem":1503},"2023-01-17","/release-notes/2023-01-17","08.release-notes/07.2023-01-17",{"title":1505,"path":1506,"stem":1507},"2023-01-23","/release-notes/2023-01-23","08.release-notes/06.2023-01-23",{"title":1509,"path":1510,"stem":1511},"2022-12-21","/release-notes/2022-12-21","08.release-notes/05.2022-12-21",{"title":1513,"path":1514,"stem":1515},"2022-12-06","/release-notes/2022-12-06","08.release-notes/04.2022-12-06",{"title":1517,"path":1518,"stem":1519},"2022-11-15","/release-notes/2022-11-15","08.release-notes/03.2022-11-15",{"title":1521,"path":1522,"stem":1523},"2022-11-02","/release-notes/2022-11-02","08.release-notes/02.2022-11-02",{"title":1525,"path":1526,"stem":1527},"2022-10-17","/release-notes/2022-10-17","08.release-notes/01.2022-10-17",{"title":1529,"path":1530,"target":1531},"API","https://api-docs.devstride.com/","_blank",{"id":1533,"title":1090,"body":1534,"description":3030,"extension":3031,"links":3032,"meta":3033,"navigation":3034,"path":1091,"seo":3035,"stem":1092,"__hash__":3036},"docs/07.developer-experience/00.guide/06.release.md",{"type":1535,"value":1536,"toc":3009},"minimark",[1537,1541,1553,1561,1573,1582,1615,1620,1624,1634,1643,1649,1663,1818,1824,1829,1847,1857,1865,1943,1955,1966,2002,2013,2074,2084,2088,2117,2162,2172,2216,2222,2225,2238,2244,2404,2426,2438,2442,2459,2465,2469,2484,2487,2509,2512,2515,2577,2580,2583,2631,2638,2642,2659,2697,2710,2722,2725,2732,2738,2814,2843,2858,2870,2874,2915,2919,2992,2997,3005],[1538,1539,1090],"h1",{"id":1540},"release",[1542,1543,1544,1545,1549,1550,1552],"p",{},"On this page you will follow finished work the rest of the way: from an Epic's branch or the support train into ",[1546,1547,1548],"code",{},"develop",", from ",[1546,1551,1548],{}," into a production release, and then check that production is running it and is healthy.",[1554,1555,1557,1558,1560],"h2",{"id":1556},"why-develop-is-treated-as-production","Why ",[1546,1559,1548],{}," is treated as production",[1542,1562,1563,1565,1566,1569,1570,1572],{},[1546,1564,1548],{}," is cut into a production release several times a day, and merging a release into ",[1546,1567,1568],{},"master"," deploys production automatically. Whatever is on ",[1546,1571,1548],{}," when the next release is cut goes to customers, usually within hours. There is no quiet period in which to finish or tidy something up.",[1542,1574,1575,1576,1578,1579,1581],{},"So nothing merges into ",[1546,1577,1548],{}," unless it is complete and safe to go live that afternoon. That is why Stories collect on their Epic's own branch, where they are allowed to be unfinished, and only a finished, fully reviewed Epic merges into ",[1546,1580,1548],{},". Before an Epic merges:",[1583,1584,1585,1593,1599,1605],"ul",{},[1586,1587,1588,1592],"li",{},[1589,1590,1591],"strong",{},"Nothing it deploys may point at something missing."," A stack that names a handler, file or resource that does not exist fails the deploy and blocks the pipeline for everyone, not just the author.",[1586,1594,1595,1598],{},[1589,1596,1597],{},"New infrastructure that costs money or changes behaviour is agreed with the owner first"," (the owner is the person who decides what reaches production). It is never a note someone finds later in production or in a bill.",[1586,1600,1601,1604],{},[1589,1602,1603],{},"Every change a user can see is safe to be live at once",", and you can say who it reaches on day one and what, if anything, gates it.",[1586,1606,1607,1610,1611,1614],{},[1589,1608,1609],{},"Database migrations are safe while old and new code run side by side",", because a deploy rolls out gradually. ",[1612,1613,1134],"a",{"href":1135}," explains how Seed (the hosted service that deploys this application) runs them.",[1542,1616,1617,1619],{},[1612,1618,1107],{"href":1108}," tells the story behind these rules.",[1554,1621,1623],{"id":1622},"the-path-at-a-glance","The path at a glance",[1625,1626,1632],"pre",{"className":1627,"code":1629,"language":1630,"meta":1631},[1628],"language-text","Story    ─ merge ─▶ its Epic's branch ─ Epic release pull request ─▶ develop\nOne-off  ─ merge ─▶ train/support     ─ train pull request, at each release ─▶ develop\ndevelop  ─ cut ──▶ release/YY-MM-DD   ─ release pull request + owner's yes ─▶ master\n","text","",[1546,1633,1629],{"__ignoreMap":1631},[1542,1635,1636,1637,1639,1640,1642],{},"Seed deploys every merge into ",[1546,1638,1548],{}," to the dev stage (a stage is a separate, fully deployed copy of the application), and every merge into ",[1546,1641,1568],{}," to production.",[1554,1644,1646,1647],{"id":1645},"release-an-epic-into-develop","Release an Epic into ",[1546,1648,1548],{},[1542,1650,1651,1652,1655,1656,1659,1660,1662],{},"An Epic's Stories merge onto its integration branch (named ",[1546,1653,1654],{},"\u003Cyou>/\u003CYY-MM-DD>/epic-\u003CI#####>-\u003Cslug>",", where ",[1546,1657,1658],{},"I#####"," is the Epic's item number) without pull requests of their own; ",[1612,1661,1086],{"href":1087}," covers that part. When the last one lands:",[1664,1665,1666,1684,1693,1710,1719,1787,1809],"ol",{},[1586,1667,1668,1671,1672,1675,1676,1679,1680,1683],{},[1589,1669,1670],{},"The loop reports the Epic release-ready, and stops."," In this repository ",[1546,1673,1674],{},"epicIntegrationBranches.autoRelease"," is ",[1546,1677,1678],{},"false"," in ",[1546,1681,1682],{},".claude/ds-config.json",", by the owner's decision, so a finished Epic waits until the owner says to release it.",[1586,1685,1686,1689,1690,1692],{},[1589,1687,1688],{},"It brings the Epic's branch up to date."," It merges the latest ",[1546,1691,1548],{}," into the branch: a merge, never a rebase, because the branch's commits are already shared on GitHub.",[1586,1694,1695,1701,1702,1705,1706,1709],{},[1589,1696,1697,1698,1700],{},"It opens the Epic's release pull request into ",[1546,1699,1548],{}," as a draft",", through ",[1546,1703,1704],{},"/devstride:pr",". The description leads with the Epic and lists its Stories. While a pull request is a draft, CI (the automated checks GitHub runs) waits, apart from a few cheap policy checks such as ",[1546,1707,1708],{},"merge-path"," (below).",[1586,1711,1712,1715,1716,1718],{},[1589,1713,1714],{},"Everything gets a full review."," Claude's adversarial review (one that sets out to find what is wrong) and the Codex command-line reviewer (a second, independent reviewer that runs on the same machine) go over the whole Epic's changes, every Story included. It is the first full review any of this code has had, because each Story merged after only a short risk check (the quick review a Story gets before it merges). Copilot (GitHub's own AI reviewer, billed per review) does not review pull requests into ",[1546,1717,1548],{},"; it first sees this code on the production release. Every finding is checked, then fixed or dismissed with a reason, and every review thread is answered and resolved. Two rounds is the normal target; a confirmed serious problem keeps review going until a round finds none.",[1586,1720,1721,1728,1729,1757,1760,1761,1764,1765,1768,1769,1772,1773,1775,1776,1779,1780,1782,1783,1786],{},[1589,1722,1723,1724,1727],{},"The full local check posts ",[1546,1725,1726],{},"local-ci","."," Before the pull request is marked ready, this runs on the machine:",[1625,1730,1734],{"className":1731,"code":1732,"language":1733,"meta":1631,"style":1631},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ds verify full --post --adopt-release\n","bash",[1546,1735,1736],{"__ignoreMap":1631},[1737,1738,1740,1744,1748,1751,1754],"span",{"class":1739,"line":17},"line",[1737,1741,1743],{"class":1742},"sBMFI","ds",[1737,1745,1747],{"class":1746},"sfazB"," verify",[1737,1749,1750],{"class":1746}," full",[1737,1752,1753],{"class":1746}," --post",[1737,1755,1756],{"class":1746}," --adopt-release\n",[1758,1759],"br",{},"It is the local copy of everything cloud CI runs on a release, and takes about half an hour: an install of exactly the dependency versions in the lockfile, every type-check, the frontend linter (errors only), the tests of the MCP server (",[1546,1762,1763],{},"packages/mcp",", the tool server that lets AI agents work with DevStride) and of the frontend, the UI build and the customer portal's size budget, the whole backend test suite apart from the golden dataset's own tests (the golden dataset is the generated demo data), and any check the changed paths trigger. A change to ",[1546,1766,1767],{},"stacks/**"," or deploy configuration, for example, also runs the ",[1546,1770,1771],{},"infra-synthesis"," check, because Seed deploys ",[1546,1774,1548],{}," on every merge and a broken stack would break the shared dev deploy. With ",[1546,1777,1778],{},"--post"," it marks the pull request's head commit (the latest commit on its branch) ",[1546,1781,1726],{}," pending while it runs, then success or failure. It refuses to start on a tree with uncommitted changes, and if the head commit or the files change during the run it posts no result at all. (",[1546,1784,1785],{},"--adopt-release"," only matters for the sync after a release, below.)",[1586,1788,1789,1792,1793,1795,1796,1799,1800,1802,1803,1806,1807,1727],{},[1589,1790,1791],{},"Marking the pull request ready starts cloud CI, once",", on the reviewed code. On a pull request into ",[1546,1794,1548],{}," that is a short list: ",[1546,1797,1798],{},"ci-policy"," (which checks the draft-first convention), the MCP tests when ",[1546,1801,1763],{}," changed, and the backend's quick gate job. The backend test suite, the linters and the UI tests report ",[1589,1804,1805],{},"skipped"," here, which still satisfies them; they run on the release into ",[1546,1808,1568],{},[1586,1810,1811,1814,1815,1817],{},[1589,1812,1813],{},"It merges."," The Epic's branch is deleted, and the release pull request is linked back onto the Epic and its Stories. Seed deploys ",[1546,1816,1548],{}," to the dev stage.",[1819,1820,1823],"alert",{"title":1821,"type":1822},"Leave a ready pull request alone","warning","Once a pull request is marked ready, do not push to it and do not edit its title or description: either one starts its checks again, and a test run already in progress starts over. Finish the wording while it is still a draft.",[1825,1826,1828],"h3",{"id":1827},"what-you-should-see","What you should see",[1542,1830,1831,1832,1834,1835,1837,1838,1840,1841,1843,1844,1846],{},"On the Epic's release pull request: ",[1546,1833,1708],{}," green from the moment it opens (it runs on drafts); the pull request a draft until review settles; ",[1546,1836,1726],{}," green before it is marked ready; then Backend Tests, the linters and the UI tests skipped. ",[1546,1839,1548],{}," requires ",[1546,1842,1708],{}," and ",[1546,1845,1726],{}," before anything merges.",[1554,1848,1850,1851,1853,1854,1856],{"id":1849},"which-branches-may-merge-into-develop-the-merge-path-check","Which branches may merge into ",[1546,1852,1548],{},": the ",[1546,1855,1708],{}," check",[1542,1858,1859,1861,1862,1864],{},[1546,1860,1548],{}," reaches production at the next release, so only branches that have been through a full review may merge into it. The required ",[1546,1863,1708],{}," check admits these heads, and nothing else:",[1866,1867,1868,1881],"table",{},[1869,1870,1871],"thead",{},[1872,1873,1874,1878],"tr",{},[1875,1876,1877],"th",{},"Head branch",[1875,1879,1880],{},"What it is",[1882,1883,1884,1894,1905,1913,1923,1933],"tbody",{},[1872,1885,1886,1891],{},[1887,1888,1889],"td",{},[1546,1890,1654],{},[1887,1892,1893],{},"an Epic's integration branch",[1872,1895,1896,1902],{},[1887,1897,1898,1901],{},[1546,1899,1900],{},"train/support",", or the snapshot a release cuts from it",[1887,1903,1904],{},"the support train (below)",[1872,1906,1907,1910],{},[1887,1908,1909],{},"a master-into-develop sync branch",[1887,1911,1912],{},"the close-out of a release, below",[1872,1914,1915,1920],{},[1887,1916,1917],{},[1546,1918,1919],{},"release/…",[1887,1921,1922],{},"a release branch",[1872,1924,1925,1930],{},[1887,1926,1927],{},[1546,1928,1929],{},"\u003Cyou>/hotfix/…",[1887,1931,1932],{},"a hotfix branch",[1872,1934,1935,1940],{},[1887,1936,1937],{},[1546,1938,1939],{},"dependabot/…",[1887,1941,1942],{},"a Dependabot dependency update",[1542,1944,1945,1946,1679,1949,1951,1952,1954],{},"The rules are ",[1546,1947,1948],{},"mergePath.allowedHeadPatterns",[1546,1950,1682],{},". The check runs on drafts too, and reads its rules from ",[1546,1953,1548],{}," itself, so a pull request cannot loosen its own gate.",[1542,1956,1957,1958,1961,1962,1965],{},"Any other head fails unless the pull request carries the ",[1546,1959,1960],{},"merge-path-override"," label. That is for a change that must ship on its own pull request (deploy configuration or migrations, below) or an Epic branch named before the ",[1546,1963,1964],{},"epic-"," marker existed. Nothing adds the label for you:",[1625,1967,1969],{"className":1731,"code":1968,"language":1733,"meta":1631,"style":1631},"gh pr edit \u003Cnumber> --add-label merge-path-override\n",[1546,1970,1971],{"__ignoreMap":1631},[1737,1972,1973,1976,1979,1982,1986,1989,1993,1996,1999],{"class":1739,"line":17},[1737,1974,1975],{"class":1742},"gh",[1737,1977,1978],{"class":1746}," pr",[1737,1980,1981],{"class":1746}," edit",[1737,1983,1985],{"class":1984},"sMK4o"," \u003C",[1737,1987,1988],{"class":1746},"numbe",[1737,1990,1992],{"class":1991},"sTEyZ","r",[1737,1994,1995],{"class":1984},">",[1737,1997,1998],{"class":1746}," --add-label",[1737,2000,2001],{"class":1746}," merge-path-override\n",[1542,2003,2004,2005,2008,2009,2012],{},"To know before you open the pull request, run the same checker locally. It prints ",[1546,2006,2007],{},"ALLOWED"," or ",[1546,2010,2011],{},"BLOCKED"," with the reason:",[1625,2014,2016],{"className":1731,"code":2015,"language":1733,"meta":1631,"style":1631},"ds merge-path check --head \u003Cbranch> --base develop\nds merge-path check --head \u003Cbranch> --base develop --labels merge-path-override\n",[1546,2017,2018,2046],{"__ignoreMap":1631},[1737,2019,2020,2022,2025,2027,2030,2032,2035,2038,2040,2043],{"class":1739,"line":17},[1737,2021,1743],{"class":1742},[1737,2023,2024],{"class":1746}," merge-path",[1737,2026,1856],{"class":1746},[1737,2028,2029],{"class":1746}," --head",[1737,2031,1985],{"class":1984},[1737,2033,2034],{"class":1746},"branc",[1737,2036,2037],{"class":1991},"h",[1737,2039,1995],{"class":1984},[1737,2041,2042],{"class":1746}," --base",[1737,2044,2045],{"class":1746}," develop\n",[1737,2047,2048,2050,2052,2054,2056,2058,2060,2062,2064,2066,2069,2072],{"class":1739,"line":244},[1737,2049,1743],{"class":1742},[1737,2051,2024],{"class":1746},[1737,2053,1856],{"class":1746},[1737,2055,2029],{"class":1746},[1737,2057,1985],{"class":1984},[1737,2059,2034],{"class":1746},[1737,2061,2037],{"class":1991},[1737,2063,1995],{"class":1984},[1737,2065,2042],{"class":1746},[1737,2067,2068],{"class":1746}," develop",[1737,2070,2071],{"class":1746}," --labels",[1737,2073,2001],{"class":1746},[1542,2075,2076,2077,1727],{},"See ",[1612,2078,2080,2081],{"href":2079},"/developer-experience/intro/command-reference#ds-merge-path","Command Reference: ",[1546,2082,2083],{},"ds merge-path",[1554,2085,2087],{"id":2086},"one-offs-ride-the-support-train","One-offs ride the support train",[1542,2089,2090,2091,2008,2094,2097,2098,2101,2102,2105,2106,2109,2110,2113,2114,2116],{},"A one-off is a Story or Defect outside any plan, usually made with ",[1546,2092,2093],{},"/devstride:create-story",[1546,2095,2096],{},"/devstride:create-defect",": it has no ",[1546,2099,2100],{},"[N]"," number and no dependency links. Even when it is filed under an Epic, it never goes on that Epic's branch (with ",[1546,2103,2104],{},"ds work start",", pass ",[1546,2107,2108],{},"--one-off"," for one filed under an Epic). It does not get a pull request of its own. After a short risk check and a green ",[1546,2111,2112],{},"ds verify land"," (the landing check every item passes), it merges onto the support train, the long-lived branch ",[1546,2115,1900],{},". Then:",[1664,2118,2119,2125,2144,2150],{},[1586,2120,2121,2124],{},[1589,2122,2123],{},"It stays open, not Done",", with a comment saying it ships with the next release.",[1586,2126,2127,2133,2134,2137,2138,2140,2141,2143],{},[1589,2128,2129,2130,2132],{},"At the start of every release, the train goes into ",[1546,2131,1548],{}," first."," ",[1546,2135,2136],{},"/devstride:release"," takes a snapshot of the train (the live train keeps accepting one-offs) and opens a pull request from it into ",[1546,2139,1548],{},". That pull request gets the full Claude and Codex review over the whole train, the ",[1546,2142,1726],{}," check and one CI run: the one-offs' first full review. It merges before the release is cut.",[1586,2145,2146,2149],{},[1589,2147,2148],{},"Every one-off it carried is marked Done",", with a comment naming the release.",[1586,2151,2152,2157,2158,2161],{},[1589,2153,2154,2155],{},"The train is brought up to date with ",[1546,2156,1548],{}," straight after its pull request merges, and again when the release closes out. The release does this for you; ",[1546,2159,2160],{},"ds work train rotate"," does it by hand once a release has carried everything on the train.",[1542,2163,2164,2165,2168,2169,2171],{},"To see what is waiting, run ",[1546,2166,2167],{},"ds work train status",". It lists the one-offs on the train that have not reached ",[1546,2170,1548],{}," yet, and changes nothing.",[1542,2173,2174,2177,2178,2181,2182,2185,2186,2189,2190,2192,2193,2196,2197,2199,2200,2202,2203,2206,2207,2209,2210,2212,2213,2215],{},[1589,2175,2176],{},"Deploy configuration and migrations never ride the train."," A one-off that changes ",[1546,2179,2180],{},"stacks/",", ",[1546,2183,2184],{},"sst.config.ts"," or the database migrations under ",[1546,2187,2188],{},"backend/src/libs/infrastructure/database/migrations/"," would reach production soon after the train merges. Instead it ships to ",[1546,2191,1548],{}," by its own pull request, so the dev stage deploys it before any release carries it. The delivery loop routes such a change this way by itself; by hand, start it with ",[1546,2194,2195],{},"ds work start \u003CI#####> --infra"," and open its pull request with ",[1546,2198,1704],{},". Either way, nothing adds the ",[1546,2201,1960],{}," label for you: add it with ",[1546,2204,2205],{},"gh pr edit \u003Cnumber> --add-label merge-path-override",". The pull request then gets the full review and ",[1546,2208,1726],{}," like any other pull request into ",[1546,2211,1548],{},". ",[1612,2214,1086],{"href":1087}," has the commands in context.",[1554,2217,2219,2220],{"id":2218},"promote-to-production-devstriderelease","Promote to production: ",[1546,2221,2136],{},[1542,2223,2224],{},"The owner decides when to release. Running the command prepares a release; it never counts as permission to deploy.",[1542,2226,2227,2228,2008,2231,2234,2235,2237],{},"Run it from a leased ",[1546,2229,2230],{},"wt1",[1546,2232,2233],{},"wt2"," checkout (see ",[1612,2236,1086],{"href":1087},"), never the main checkout, and keep the lease until the release's very last step hands the checkout back.",[1625,2239,2242],{"className":2240,"code":2241,"language":1630,"meta":1631},[1628],"/devstride:release\n",[1546,2243,2241],{"__ignoreMap":1631},[1664,2245,2246,2257,2265,2277,2302,2311,2324,2333,2343,2349,2355,2369,2383],{},[1586,2247,2248,2251,2252,1843,2254,2256],{},[1589,2249,2250],{},"It reads what is happening first."," It fetches, reads what other people and sessions landed on ",[1546,2253,1548],{},[1546,2255,1568],{}," in the last few hours, and says so if another session seems to be active.",[1586,2258,2259,2264],{},[1589,2260,2261,2262],{},"It merges the support train into ",[1546,2263,1548],{},", as above.",[1586,2266,2267,2270,2271,2273,2274,2276],{},[1589,2268,2269],{},"It works out what ships",": the Epics and items in ",[1546,2272,1548],{}," that are not yet in ",[1546,2275,1568],{},", and which of them a user would notice.",[1586,2278,2279,2133,2282,2285,2286,2288,2289,2181,2292,2295,2296,2298,2299,2301],{},[1589,2280,2281],{},"It cuts the release branch",[1546,2283,2284],{},"release/YY-MM-DD"," from ",[1546,2287,1548],{}," (with ",[1546,2290,2291],{},"-2",[1546,2293,2294],{},"-3"," added when a release is re-cut), and opens the release pull request from it into ",[1546,2297,1568],{}," as a draft. ",[1546,2300,1548],{}," keeps accepting merges meanwhile; they ship in the next release.",[1586,2303,2304,2307,2308,2310],{},[1589,2305,2306],{},"Full review of the release."," Claude and Codex, plus Copilot, which reviews only pull requests into ",[1546,2309,1568],{},". Copilot is asked once, on the final reviewed version, and again only after a fix that answered one of its findings.",[1586,2312,2313,2316,2317,2320,2321,2323],{},[1589,2314,2315],{},"Release-only local checks."," The full golden dataset suite runs, and so does the golden source readiness check, ",[1546,2318,2319],{},"ds golden release check",": the release will not go ahead without a prepared, certified copy of the demo dataset for exactly the code being released. The ",[1612,2322,1130],{"href":1131}," page explains the golden source.",[1586,2325,2326,2329,2330,2332],{},[1589,2327,2328],{},"Cloud CI runs once",", when the pull request is marked ready: the backend test suite, the linters and the UI tests. The push to ",[1546,2331,1568],{}," that lands the release reuses this green run when the code is identical, so the suite does not run twice.",[1586,2334,2335,2338,2339,2342],{},[1589,2336,2337],{},"It stops and asks the owner."," The summary leads with READY or BLOCKED and lists every change in plain words, each local check's result, the documentation plan, whether a release note will be written, and what merging triggers, quoted from ",[1546,2340,2341],{},"release.autoDeployOnMerge",": \"Merging to master auto-deploys production via SEED (seed.run) — no manual deploy step.\"",[1586,2344,2345,2348],{},[1589,2346,2347],{},"It merges only on the owner's explicit yes",", with a merge commit.",[1586,2350,2351,2354],{},[1589,2352,2353],{},"After the deploy, it checks production."," Production has no address that reports which version it runs, so the release first asks the owner to confirm the deploy has finished. Then it runs the post-deploy check, below. FAIL stops the release and puts a rollback decision to the owner; nothing public is written about a release that might be rolled back.",[1586,2356,2357,2360,2361,2364,2365,2368],{},[1589,2358,2359],{},"It updates the documentation."," The repository's ",[1546,2362,2363],{},"ds-update-docs"," skill brings docs.devstride.com in line with what shipped, by default, only once the deploy is confirmed live and healthy. Add ",[1546,2366,2367],{},"no docs"," to the command to skip it.",[1586,2370,2371,2374,2375,2378,2379,2382],{},[1589,2372,2373],{},"It writes a release note only when asked",": ",[1546,2376,2377],{},"/devstride:release --release-notes"," publishes one after the deploy is confirmed, and ",[1546,2380,2381],{},"--release-notes draft"," leaves it for the owner to read first. Nothing in the loop decides on its own that a release deserves a note; the owner does.",[1586,2384,2385,2388,2389,2391,2392,2394,2395,2397,2398,2400,2401,2403],{},[1589,2386,2387],{},"It closes out."," It syncs ",[1546,2390,1568],{}," back into ",[1546,2393,1548],{}," by its own pull request, so fixes made on the release branch reach ",[1546,2396,1548],{},"; that pull request's ",[1546,2399,1726],{}," reuses the release's green cloud run in seconds when the code is identical (",[1546,2402,1785],{},"). It deletes the release branch once both branches contain it, and brings the support train up to date.",[1542,2405,2406,2409,2410,2413,2414,2416,2417,2419,2420,2422,2423,2425],{},[1589,2407,2408],{},"A release branch is protected."," Fixes found during review are new commits on it, never a rebase or force-push; GitHub refuses a force-push to any ",[1546,2411,2412],{},"release/*"," branch. A fix that touches deploy configuration or migrations is refused there: merge it into ",[1546,2415,1548],{}," through a normal pull request, abandon the release branch, and run ",[1546,2418,2136],{}," again to re-cut. If a hotfix reaches ",[1546,2421,1568],{}," while a release is open, the release merges ",[1546,2424,1568],{}," into its branch and reviews it again, and asks the owner again.",[1542,2427,2428,2432,2433,2437],{},[1612,2429,2431],{"href":2430},"/developer-experience/agentic-skills/claude-skills-delivery-loop#production-release","The Delivery Loop: Production release"," has the full mechanics, and ",[1612,2434,2436],{"href":2435},"/developer-experience/agentic-skills/configuration-reference#production-release","Configuration Reference: Production release"," has the settings.",[1554,2439,2441],{"id":2440},"how-seed-deploys","How Seed deploys",[1542,2443,2444,2445,2447,2448,2451,2452,2454,2455,2458],{},"Seed (seed.run), a hosted deploy service, deploys this application. A merge into ",[1546,2446,1548],{}," deploys the ",[1546,2449,2450],{},"dev"," stage (app.devstride.dev), and a merge into ",[1546,2453,1568],{}," deploys production, the ",[1546,2456,2457],{},"prod"," stage (app.devstride.com). GitHub Actions deploy nothing, and there is no deploy step to run by hand: merging is the deploy.",[1542,2460,2461,2462,2464],{},"During each deploy Seed runs the additive migrations before the new code goes live and the tightening ones after it. ",[1612,2463,1134],{"href":1135}," explains this and the checks that run in GitHub Actions. An ordinary production deploy took about seventeen minutes from start to finish when it was measured.",[1554,2466,2468],{"id":2467},"is-this-commit-live","Is this commit live?",[1542,2470,2471,2472,2008,2474,2476,2477,2480,2481,2483],{},"Seed writes a GitHub deployment record for every commit it deploys, under the environment ",[1546,2473,2457],{},[1546,2475,2450],{},", created by its own GitHub account, ",[1546,2478,2479],{},"seed-deploy[bot]",". Read those records with ",[1546,2482,1975],{},", the GitHub command-line tool; it needs to be signed in.",[1542,2485,2486],{},"To see which commit production is running, run this from the repository's root:",[1625,2488,2490],{"className":1731,"code":2489,"language":1733,"meta":1631,"style":1631},"REPO=devstride/devstride bash .github/scripts/resolve-live-production-sha.sh\n",[1546,2491,2492],{"__ignoreMap":1631},[1737,2493,2494,2497,2500,2503,2506],{"class":1739,"line":17},[1737,2495,2496],{"class":1991},"REPO",[1737,2498,2499],{"class":1984},"=",[1737,2501,2502],{"class":1746},"devstride/devstride",[1737,2504,2505],{"class":1742}," bash",[1737,2507,2508],{"class":1746}," .github/scripts/resolve-live-production-sha.sh\n",[1542,2510,2511],{},"It prints the full commit id. It trusts only records made by Seed's own account whose newest status is a success, so a record anyone else wrote cannot fool it. It exits with status 1 when it finds no deployment Seed proved successful, and 2 when GitHub's API failed or was rate-limited. In both cases the answer is \"unknown\", never \"not live\".",[1542,2513,2514],{},"To check that your change is part of what production runs:",[1625,2516,2518],{"className":1731,"code":2517,"language":1733,"meta":1631,"style":1631},"git fetch origin master\ngit merge-base --is-ancestor \u003Cyour commit> \u003Cthe commit it printed>\n",[1546,2519,2520,2534],{"__ignoreMap":1631},[1737,2521,2522,2525,2528,2531],{"class":1739,"line":17},[1737,2523,2524],{"class":1742},"git",[1737,2526,2527],{"class":1746}," fetch",[1737,2529,2530],{"class":1746}," origin",[1737,2532,2533],{"class":1746}," master\n",[1737,2535,2536,2538,2541,2544,2546,2549,2552,2555,2557,2559,2562,2565,2568,2571,2574],{"class":1739,"line":244},[1737,2537,2524],{"class":1742},[1737,2539,2540],{"class":1746}," merge-base",[1737,2542,2543],{"class":1746}," --is-ancestor",[1737,2545,1985],{"class":1984},[1737,2547,2548],{"class":1746},"your",[1737,2550,2551],{"class":1746}," commi",[1737,2553,2554],{"class":1991},"t",[1737,2556,1995],{"class":1984},[1737,2558,1985],{"class":1984},[1737,2560,2561],{"class":1746},"the",[1737,2563,2564],{"class":1746}," commit",[1737,2566,2567],{"class":1746}," it",[1737,2569,2570],{"class":1746}," printe",[1737,2572,2573],{"class":1991},"d",[1737,2575,2576],{"class":1984},">\n",[1542,2578,2579],{},"Exit status 0 means production's commit contains yours.",[1542,2581,2582],{},"To see the latest deploys of a stage, newest first:",[1625,2584,2586],{"className":1731,"code":2585,"language":1733,"meta":1631,"style":1631},"gh api --paginate 'repos/devstride/devstride/deployments?environment=prod&per_page=100' \\\n  --jq '.[] | select(.creator.login==\"seed-deploy[bot]\") | [.sha[0:9], .created_at] | @tsv' | head -5\n",[1546,2587,2588,2610],{"__ignoreMap":1631},[1737,2589,2590,2592,2595,2598,2601,2604,2607],{"class":1739,"line":17},[1737,2591,1975],{"class":1742},[1737,2593,2594],{"class":1746}," api",[1737,2596,2597],{"class":1746}," --paginate",[1737,2599,2600],{"class":1984}," '",[1737,2602,2603],{"class":1746},"repos/devstride/devstride/deployments?environment=prod&per_page=100",[1737,2605,2606],{"class":1984},"'",[1737,2608,2609],{"class":1991}," \\\n",[1737,2611,2612,2615,2617,2620,2622,2625,2628],{"class":1739,"line":244},[1737,2613,2614],{"class":1746},"  --jq",[1737,2616,2600],{"class":1984},[1737,2618,2619],{"class":1746},".[] | select(.creator.login==\"seed-deploy[bot]\") | [.sha[0:9], .created_at] | @tsv",[1737,2621,2606],{"class":1984},[1737,2623,2624],{"class":1984}," |",[1737,2626,2627],{"class":1742}," head",[1737,2629,2630],{"class":1746}," -5\n",[1542,2632,2633,2634,2637],{},"Use ",[1546,2635,2636],{},"environment=dev"," for the dev stage. Each line is a commit Seed started deploying and when it started. A record on its own does not prove the deploy finished; for production, the script above checks that.",[1554,2639,2641],{"id":2640},"the-post-deploy-check","The post-deploy check",[1542,2643,2644,2645,2647,2648,2651,2652,2654,2655,2658],{},"After the owner confirms the deploy, ",[1546,2646,2136],{}," runs the repository's post-deploy check, the ",[1546,2649,2650],{},"ds-post-deploy-release-check"," skill (named in ",[1546,2653,1682],{}," as ",[1546,2656,2657],{},"release.postDeployCheckSkill","). It does three things:",[1664,2660,2661,2685,2691],{},[1586,2662,2663,2666,2667,2670,2671,2682,2684],{},[1589,2664,2665],{},"It checks production's health, without changing anything",", through the ",[1546,2668,2669],{},"ds-post-deploy-health"," skill:",[1583,2672,2673,2676,2679],{},[1586,2674,2675],{},"it confirms from Seed's deployment record that production is running the merge commit, waiting up to 25 minutes for a deploy that is still rolling out;",[1586,2677,2678],{},"it waits until at least 15 minutes after the rollout finished, so alarms have had time to fire;",[1586,2680,2681],{},"it looks for any alarm that went off after the deploy started, even one that has since recovered; any dead-letter queue (where messages land after processing fails) that grew compared with just before the deploy; API server errors above the level that trips their alarm; problems on the inbound email path; and any web-app file the deploy meant to upload that is missing from the site's storage bucket.",[1758,2683],{},"Alarms too slow to fire inside that window are listed as not covered, never counted as passed. Problems that were already there before the deploy are listed separately, so they are seen but do not fail the check.",[1586,2686,2687,2690],{},[1589,2688,2689],{},"It publishes the golden source"," (the canonical copy of the demo dataset that training sandboxes and stage refreshes clone from) for the release that is now live, and reads it back to prove it is current.",[1586,2692,2693,2696],{},[1589,2694,2695],{},"It removes the local resources the release created",", such as its test containers.",[1542,2698,2699,2700,2181,2703,2008,2706,2709],{},"Its first line is exactly one of ",[1546,2701,2702],{},"POST-DEPLOY HEALTH: PASS",[1546,2704,2705],{},"POST-DEPLOY HEALTH: FAIL",[1546,2707,2708],{},"POST-DEPLOY HEALTH: NOT RUN",", followed by the evidence, each line naming the command that produced it. PASS lets the release go on to documentation. FAIL stops it for the owner's rollback decision; a failure only in publishing the golden source is repaired and retried instead, and never calls for rolling the application back. NOT RUN means the check could not be done, for example because a sign-in was missing or a service could not be reached, and the owner is asked whether to proceed. Missing credentials are never a PASS.",[1542,2711,2712,2713,2715,2716,2718,2719,2721],{},"You can also run the health check by hand after any production deploy: ask Claude Code to run the ",[1546,2714,2669],{}," skill for the merge commit. It needs a valid AWS sign-in to the production account and a signed-in ",[1546,2717,1975],{},"; ",[1612,2720,1078],{"href":1079}," covers both.",[1542,2723,2724],{},"An alarm that fires soon after a deploy is not proof the deploy caused it. Before blaming the release, look at when the alarm's underlying metric first went over its threshold; it may have started before the deploy.",[1554,2726,2728,2729],{"id":2727},"a-deliberate-redeploy-ds-seed-deploy","A deliberate redeploy: ",[1546,2730,2731],{},"ds seed deploy",[1542,2733,2734,2735,2737],{},"Normal releases never need a deploy command, because merging is what deploys. For a deliberate redeploy of a chosen commit, ",[1546,2736,2731],{}," asks Seed to deploy it to a stage:",[1625,2739,2741],{"className":1731,"code":2740,"language":1733,"meta":1631,"style":1631},"ds seed deploy --stage \u003Cstage> --commit \u003Ccommit id>\nds seed deploy --stage \u003Cstage> --commit \u003Ccommit id> --force\n",[1546,2742,2743,2781],{"__ignoreMap":1631},[1737,2744,2745,2747,2750,2753,2756,2758,2761,2764,2766,2769,2771,2774,2777,2779],{"class":1739,"line":17},[1737,2746,1743],{"class":1742},[1737,2748,2749],{"class":1746}," seed",[1737,2751,2752],{"class":1746}," deploy",[1737,2754,2755],{"class":1746}," --stage",[1737,2757,1985],{"class":1984},[1737,2759,2760],{"class":1746},"stag",[1737,2762,2763],{"class":1991},"e",[1737,2765,1995],{"class":1984},[1737,2767,2768],{"class":1746}," --commit",[1737,2770,1985],{"class":1984},[1737,2772,2773],{"class":1746},"commit",[1737,2775,2776],{"class":1746}," i",[1737,2778,2573],{"class":1991},[1737,2780,2576],{"class":1984},[1737,2782,2783,2785,2787,2789,2791,2793,2795,2797,2799,2801,2803,2805,2807,2809,2811],{"class":1739,"line":244},[1737,2784,1743],{"class":1742},[1737,2786,2749],{"class":1746},[1737,2788,2752],{"class":1746},[1737,2790,2755],{"class":1746},[1737,2792,1985],{"class":1984},[1737,2794,2760],{"class":1746},[1737,2796,2763],{"class":1991},[1737,2798,1995],{"class":1984},[1737,2800,2768],{"class":1746},[1737,2802,1985],{"class":1984},[1737,2804,2773],{"class":1746},[1737,2806,2776],{"class":1746},[1737,2808,2573],{"class":1991},[1737,2810,1995],{"class":1984},[1737,2812,2813],{"class":1746}," --force\n",[1542,2815,2816,2819,2820,1843,2823,2826,2827,2830,2831,2834,2835,2838,2839,2842],{},[1546,2817,2818],{},"--force"," deploys even when Seed finds no changes. The command sends the same request as Seed's own command-line tool, for DevStride's Seed organization and app (",[1546,2821,2822],{},"--org",[1546,2824,2825],{},"--app"," default to ",[1546,2828,2829],{},"devstride","). It needs no AWS sign-in. It uses the team's shared Seed token, ",[1546,2832,2833],{},"SEED_TOKEN",", from your machine's agent credentials file (",[1546,2836,2837],{},"~/.config/devstride/agent.env",", written by ",[1546,2840,2841],{},"ds secrets pull","), and never prints it.",[1819,2844,2847,2848,2850,2851,2854,2855,2857],{"title":2845,"type":2846},"This token can deploy production","danger","The Seed token is shared and has full access: the owner's decision of 2026-10-05, until narrower keys come later. ",[1546,2849,2731],{}," does not guard any stage. ",[1546,2852,2853],{},"--stage prod"," starts deploying that commit to production straight away, without any of the review, CI or owner approval a release goes through. Never run it against ",[1546,2856,2457],{}," without the owner's explicit yes for that specific deploy.",[1542,2859,2860,2861,2864,2865,2212,2867,2869],{},"If the token has not been added yet, the command refuses and explains how to add it: the owner makes a token in Seed's organization settings and stores it with ",[1546,2862,2863],{},"pbpaste | ds secrets set agent SEED_TOKEN",", and each machine then runs ",[1546,2866,2841],{},[1612,2868,1078],{"href":1079}," has the full map of keys.",[1554,2871,2873],{"id":2872},"hotfixes","Hotfixes",[1542,2875,2876,2877,2879,2880,2883,2884,2887,2888,2890,2891,2893,2894,2896,2897,2899,2900,2902,2903,2905,2906,2908,2909,2911,2912,2914],{},"A hotfix is an urgent fix that must reach production without the unreleased work on ",[1546,2878,1548],{},". Run ",[1546,2881,2882],{},"/devstride:branch-hotfix I#####-\u003Cshort-slug>"," on a clean tree: it reminds you to stop any running dev server, cuts ",[1546,2885,2886],{},"\u003Cyou>/hotfix/\u003CYY-MM-DD>/I#####-\u003Cshort-slug>"," from a freshly pulled ",[1546,2889,1568],{},", pushes it, and resets this checkout's local database so it matches production's older code. Build the fix, then open its pull request into ",[1546,2892,1568],{}," with ",[1546,2895,1704],{},". It gets the draft-first treatment, with Claude, Codex and Copilot reviewing, then CI, including the backend test suite, because this code has not been tested before. Open it only against ",[1546,2898,1568],{},", never against ",[1546,2901,1548],{}," as well: a branch open against both can hide a failing check. ",[1546,2904,1704],{}," stops when the pull request is reviewed and green; it does not merge it. Merging into ",[1546,2907,1568],{}," deploys production, so that merge is the owner's call. If a release is open when the hotfix lands, the release merges it into its own branch and reviews it again. Like everything on ",[1546,2910,1568],{},", the hotfix comes back to ",[1546,2913,1548],{}," through the master-into-develop sync at the end of each release.",[1554,2916,2918],{"id":2917},"when-something-goes-wrong","When something goes wrong",[1583,2920,2921,2935,2950,2959,2973],{},[1586,2922,2923,2928,2929,2932,2933,1727],{},[1589,2924,2925,2927],{},[1546,2926,1708],{}," is red."," Run ",[1546,2930,2931],{},"ds merge-path check --head \u003Cbranch> --base develop"," for the reason. A one-off belongs on the train, and only an infrastructure one-off or an old-style Epic branch should carry ",[1546,2934,1960],{},[1586,2936,2937,2942,2943,2946,2947,1727],{},[1589,2938,2939,2941],{},[1546,2940,1726],{}," is missing, failed, or stuck at pending."," Re-run ",[1546,2944,2945],{},"ds verify full --post"," on a clean tree at the pull request's head; a run whose head or files changed part-way posts nothing, so its pending mark stays until a later run replaces it. It needs this checkout's test containers, and only one runs per machine at a time. The full log is ",[1546,2948,2949],{},".ds/verify-full.log",[1586,2951,2952,2955,2956,2958],{},[1589,2953,2954],{},"A fix on a release branch is refused."," It touches deploy configuration or migrations. Merge it into ",[1546,2957,1548],{}," by a normal pull request, abandon the release branch and re-cut.",[1586,2960,2961,2964,2965,2968,2969,2972],{},[1589,2962,2963],{},"The post-deploy check says FAIL."," The owner decides whether to roll back. To triage an alarm without changing anything, paste the alert to the ",[1546,2966,2967],{},"ds-alarm"," skill; ",[1546,2970,2971],{},"ds-incident-response"," is the full on-call protocol.",[1586,2974,2975,2978,2979,2982,2983,2987,2988,2991],{},[1589,2976,2977],{},"The post-deploy check says NOT RUN."," Usually a sign-in: the message names the command to run, either an AWS sign-in that reaches the production account (",[1546,2980,2981],{},"aws sso login --profile \u003Cprofile>","; see ",[1612,2984,2986],{"href":2985},"/developer-experience/guide/troubleshooting#your-aws-sign-in-has-lapsed","Your AWS sign-in has lapsed",") or ",[1546,2989,2990],{},"gh auth login",". Run it, then run the check again. A deploy still rolling out after 25 minutes is also NOT RUN: check again once it finishes.",[1542,2993,2994,2995,1727],{},"Anything else: ",[1612,2996,1094],{"href":1095},[1542,2998,2999,2133,3002,3004],{},[1589,3000,3001],{},"Next:",[1612,3003,1094],{"href":1095},", for when a step on any page does not go as described.",[3006,3007,3008],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":1631,"searchDepth":244,"depth":244,"links":3010},[3011,3013,3014,3018,3020,3021,3023,3024,3025,3026,3028,3029],{"id":1556,"depth":244,"text":3012},"Why develop is treated as production",{"id":1622,"depth":244,"text":1623},{"id":1645,"depth":244,"text":3015,"children":3016},"Release an Epic into develop",[3017],{"id":1827,"depth":302,"text":1828},{"id":1849,"depth":244,"text":3019},"Which branches may merge into develop: the merge-path check",{"id":2086,"depth":244,"text":2087},{"id":2218,"depth":244,"text":3022},"Promote to production: /devstride:release",{"id":2440,"depth":244,"text":2441},{"id":2467,"depth":244,"text":2468},{"id":2640,"depth":244,"text":2641},{"id":2727,"depth":244,"text":3027},"A deliberate redeploy: ds seed deploy",{"id":2872,"depth":244,"text":2873},{"id":2917,"depth":244,"text":2918},"How finished work reaches develop and then production: an Epic's release pull request, the support train, /devstride:release, Seed's deploys, the post-deploy check, and how to tell whether a commit is live.","md",null,{},true,{"title":1090,"description":3030},"9uH8hpfzhWlrYzOhwoLkhuXrOO3m5jpauTHzWif_3Ao",[3038,3040],{"title":1086,"path":1087,"stem":1088,"description":3039,"children":-1},"From a READY machine to a story merged onto its target: take a checkout, start the item on the right branch, build and try it, check it locally, and land it.",{"title":1094,"path":1095,"stem":1096,"description":3041,"children":-1},"What you see, why it happens and what to do, for the problems a DevStride machine or session meets most: sign-ins, Docker, credentials, demo data, machine identities, test runs and the logs to read.",1791534232163]