[{"data":1,"prerenderedAt":3212},["ShallowReactive",2],{"navigation_docs":3,"-developer-experience-guide-develop":1536,"-developer-experience-guide-develop-surround":3207},[4,237,583,622,886,976,1064,1198,1532],{"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,794,807],{"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,700,737,746,790],{"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,696],{"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},"Formatting Rules","/workspace-administration/settings/organization/formatting-rules","04.workspace-administration/03.settings/01.organization/08.formatting-rules",{"title":701,"path":702,"stem":703,"children":704,"page":84},"Data Model","/workspace-administration/settings/data-model","04.workspace-administration/03.settings/02.data-model",[705,709,713,717,721,725,729,733],{"title":706,"path":707,"stem":708},"Cadences","/workspace-administration/settings/data-model/cadences","04.workspace-administration/03.settings/02.data-model/01.cadences",{"title":710,"path":711,"stem":712},"Item Types","/workspace-administration/settings/data-model/item-types","04.workspace-administration/03.settings/02.data-model/02.item-types",{"title":714,"path":715,"stem":716},"Tags","/workspace-administration/settings/data-model/tags","04.workspace-administration/03.settings/02.data-model/03.tags",{"title":718,"path":719,"stem":720},"Custom Fields","/workspace-administration/settings/data-model/custom-fields","04.workspace-administration/03.settings/02.data-model/04.custom-fields",{"title":722,"path":723,"stem":724},"Priority Levels","/workspace-administration/settings/data-model/priority-levels","04.workspace-administration/03.settings/02.data-model/05.priority-levels",{"title":726,"path":727,"stem":728},"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":730,"path":731,"stem":732},"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":734,"path":735,"stem":736},"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":738,"path":739,"stem":740,"children":741,"page":84},"Forms","/workspace-administration/settings/forms","04.workspace-administration/03.settings/03.forms",[742],{"title":743,"path":744,"stem":745},"Item Request Forms","/workspace-administration/settings/forms/item-request-forms","04.workspace-administration/03.settings/03.forms/item-request-forms",{"title":747,"path":748,"stem":749,"children":750,"page":84},"Integrations","/workspace-administration/settings/integrations","04.workspace-administration/03.settings/04.integrations",[751,755,759,763,767,770,774,778,782,786],{"title":752,"path":753,"stem":754},"GitHub","/workspace-administration/settings/integrations/github","04.workspace-administration/03.settings/04.integrations/01.github",{"title":756,"path":757,"stem":758},"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":760,"path":761,"stem":762},"Database Access for BI Tools","/workspace-administration/settings/integrations/database-access","04.workspace-administration/03.settings/04.integrations/03.database-access",{"title":764,"path":765,"stem":766},"Jira Integration","/workspace-administration/settings/integrations/jira","04.workspace-administration/03.settings/04.integrations/04.jira",{"title":206,"path":768,"stem":769},"/workspace-administration/settings/integrations/api-keys","04.workspace-administration/03.settings/04.integrations/05.api-keys",{"title":771,"path":772,"stem":773},"Enterprise SSO","/workspace-administration/settings/integrations/enterprise-sso","04.workspace-administration/03.settings/04.integrations/06.enterprise-sso",{"title":775,"path":776,"stem":777},"Microsoft Teams","/workspace-administration/settings/integrations/microsoft-teams","04.workspace-administration/03.settings/04.integrations/07.microsoft-teams",{"title":779,"path":780,"stem":781},"Slack","/workspace-administration/settings/integrations/slack","04.workspace-administration/03.settings/04.integrations/08.slack",{"title":783,"path":784,"stem":785},"Connected Apps","/workspace-administration/settings/integrations/connected-apps","04.workspace-administration/03.settings/04.integrations/09.connected-apps",{"title":787,"path":788,"stem":789},"Azure DevOps Integration","/workspace-administration/settings/integrations/azure-devops","04.workspace-administration/03.settings/04.integrations/10.azure-devops",{"title":791,"path":792,"stem":793},"Subscription & Billing","/workspace-administration/settings/subscription-and-billing","04.workspace-administration/03.settings/05.subscription-and-billing",{"title":483,"path":795,"stem":796,"children":797,"page":84},"/workspace-administration/permissions","04.workspace-administration/04.permissions",[798,801,804],{"title":194,"path":799,"stem":800},"/workspace-administration/permissions/understanding-permissions","04.workspace-administration/04.permissions/01.understanding-permissions",{"title":198,"path":802,"stem":803},"/workspace-administration/permissions/roles-and-permissions","04.workspace-administration/04.permissions/02.roles-and-permissions",{"title":202,"path":805,"stem":806},"/workspace-administration/permissions/sharing-and-access","04.workspace-administration/04.permissions/03.sharing-and-access",{"title":808,"order":809,"path":810,"stem":811,"children":812,"page":84},"Filters",10,"/workspace-administration/filters","04.workspace-administration/05.filters",[813,816,819,823,827,831,835,838,841,845,865],{"title":589,"path":814,"stem":815},"/workspace-administration/filters/my-work","04.workspace-administration/05.filters/01.my-work",{"title":595,"path":817,"stem":818},"/workspace-administration/filters/notifications","04.workspace-administration/05.filters/02.notifications",{"title":820,"path":821,"stem":822},"Workstreams","/workspace-administration/filters/workstreams","04.workspace-administration/05.filters/03.workstreams",{"title":824,"path":825,"stem":826},"Cycles","/workspace-administration/filters/cycles","04.workspace-administration/05.filters/04.cycles",{"title":828,"path":829,"stem":830},"Boards","/workspace-administration/filters/boards","04.workspace-administration/05.filters/05.boards",{"title":832,"path":833,"stem":834},"Gantt","/workspace-administration/filters/gantt","04.workspace-administration/05.filters/06.gantt",{"title":52,"path":836,"stem":837},"/workspace-administration/filters/items","04.workspace-administration/05.filters/07.items",{"title":495,"path":839,"stem":840},"/workspace-administration/filters/reports","04.workspace-administration/05.filters/08.reports",{"title":842,"path":843,"stem":844},"Automations","/workspace-administration/filters/automations","04.workspace-administration/05.filters/09.automations",{"title":846,"path":847,"stem":848,"children":849,"page":84},"Sort ","/workspace-administration/filters/sort","04.workspace-administration/05.filters/10.sort",[850,853,856,859,862],{"title":589,"path":851,"stem":852},"/workspace-administration/filters/sort/my-work","04.workspace-administration/05.filters/10.sort/01.my-work",{"title":820,"path":854,"stem":855},"/workspace-administration/filters/sort/workstreams","04.workspace-administration/05.filters/10.sort/02.workstreams",{"title":824,"path":857,"stem":858},"/workspace-administration/filters/sort/cycles","04.workspace-administration/05.filters/10.sort/03.cycles",{"title":828,"path":860,"stem":861},"/workspace-administration/filters/sort/boards","04.workspace-administration/05.filters/10.sort/04.boards",{"title":52,"path":863,"stem":864},"/workspace-administration/filters/sort/items","04.workspace-administration/05.filters/10.sort/05.items",{"title":866,"path":867,"stem":868,"children":869,"page":84},"Options","/workspace-administration/filters/options","04.workspace-administration/05.filters/11.options",[870,873,876,880,883],{"title":589,"path":871,"stem":872},"/workspace-administration/filters/options/my-work","04.workspace-administration/05.filters/11.options/01.my-work",{"title":820,"path":874,"stem":875},"/workspace-administration/filters/options/workstreams","04.workspace-administration/05.filters/11.options/02.workstreams",{"title":877,"path":878,"stem":879},"Cycle","/workspace-administration/filters/options/cycle","04.workspace-administration/05.filters/11.options/03.cycle",{"title":828,"path":881,"stem":882},"/workspace-administration/filters/options/boards","04.workspace-administration/05.filters/11.options/04.boards",{"title":52,"path":884,"stem":885},"/workspace-administration/filters/options/items","04.workspace-administration/05.filters/11.options/05.items",{"title":887,"path":888,"stem":889,"children":890,"page":84},"Planning Concepts & Use Cases","/planning-concepts-and-use-cases","05.planning-concepts-and-use-cases",[891,947],{"title":892,"order":893,"path":894,"stem":895,"children":896,"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",[897,930],{"title":898,"path":899,"stem":900,"children":901,"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",[902,906,910,914,918,922,926],{"title":903,"path":904,"stem":905},"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":907,"path":908,"stem":909},"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":911,"path":912,"stem":913},"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":915,"path":916,"stem":917},"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":919,"path":920,"stem":921},"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":923,"path":924,"stem":925},"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":927,"path":928,"stem":929},"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":931,"path":932,"stem":933,"children":934,"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",[935,939,943],{"title":936,"path":937,"stem":938},"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":940,"path":941,"stem":942},"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":944,"path":945,"stem":946},"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":948,"order":949,"path":950,"stem":951,"children":952,"page":84},"Use Cases",12,"/planning-concepts-and-use-cases/use-cases","05.planning-concepts-and-use-cases/02.use-cases",[953,956,960,964,968,972],{"title":898,"path":954,"stem":955},"/planning-concepts-and-use-cases/use-cases/gantt-charts","05.planning-concepts-and-use-cases/02.use-cases/01.gantt-charts",{"title":957,"path":958,"stem":959},"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":961,"path":962,"stem":963},"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":965,"path":966,"stem":967},"Manage Cadences","/planning-concepts-and-use-cases/use-cases/manage-cadences","05.planning-concepts-and-use-cases/02.use-cases/04.manage-cadences",{"title":969,"path":970,"stem":971},"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":973,"path":974,"stem":975},"Backlog Refinement","/planning-concepts-and-use-cases/use-cases/backlog-refinement","05.planning-concepts-and-use-cases/02.use-cases/06.backlog-refinement",{"title":977,"path":978,"stem":979,"children":980,"page":84},"Integrations & Extensibility","/integrations-and-extensibility","06.integrations-and-extensibility",[981,1006],{"title":982,"path":983,"stem":984,"children":985,"page":84},"DevStride MCP Server","/integrations-and-extensibility/devstride-mcp-server","06.integrations-and-extensibility/01.devstride-mcp-server",[986,990,994,998,1002],{"title":987,"path":988,"stem":989},"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":991,"path":992,"stem":993},"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":995,"path":996,"stem":997},"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":999,"path":1000,"stem":1001},"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":1003,"path":1004,"stem":1005},"Tool Reference","/integrations-and-extensibility/devstride-mcp-server/tool-reference","06.integrations-and-extensibility/01.devstride-mcp-server/05.tool-reference",{"title":1007,"path":1008,"stem":1009,"children":1010},"Plugins","/integrations-and-extensibility/plugins","06.integrations-and-extensibility/02.plugins/index",[1011,1013],{"title":1012,"path":1008,"stem":1009},"Getting Started With Plugins",{"title":1014,"path":1015,"stem":1016,"children":1017,"page":84},"Weekly Logs","/integrations-and-extensibility/plugins/weekly-logs","06.integrations-and-extensibility/02.plugins/01.weekly-logs",[1018,1021,1025,1029,1033,1037,1041,1045,1048,1052,1056,1060],{"title":447,"path":1019,"stem":1020},"/integrations-and-extensibility/plugins/weekly-logs/overview","06.integrations-and-extensibility/02.plugins/01.weekly-logs/01.overview",{"title":1022,"path":1023,"stem":1024},"Grid","/integrations-and-extensibility/plugins/weekly-logs/grid","06.integrations-and-extensibility/02.plugins/01.weekly-logs/02.grid",{"title":1026,"path":1027,"stem":1028},"Views","/integrations-and-extensibility/plugins/weekly-logs/views","06.integrations-and-extensibility/02.plugins/01.weekly-logs/03.views",{"title":1030,"path":1031,"stem":1032},"Navigation","/integrations-and-extensibility/plugins/weekly-logs/navigation","06.integrations-and-extensibility/02.plugins/01.weekly-logs/04.navigation",{"title":1034,"path":1035,"stem":1036},"Proposed Items","/integrations-and-extensibility/plugins/weekly-logs/proposed-items","06.integrations-and-extensibility/02.plugins/01.weekly-logs/05.proposed-items",{"title":1038,"path":1039,"stem":1040},"Search","/integrations-and-extensibility/plugins/weekly-logs/search","06.integrations-and-extensibility/02.plugins/01.weekly-logs/06.search",{"title":1042,"path":1043,"stem":1044},"Time Logging","/integrations-and-extensibility/plugins/weekly-logs/logging","06.integrations-and-extensibility/02.plugins/01.weekly-logs/07.logging",{"title":808,"path":1046,"stem":1047},"/integrations-and-extensibility/plugins/weekly-logs/filtering","06.integrations-and-extensibility/02.plugins/01.weekly-logs/08.filtering",{"title":1049,"path":1050,"stem":1051},"Team Logs","/integrations-and-extensibility/plugins/weekly-logs/team-logs","06.integrations-and-extensibility/02.plugins/01.weekly-logs/09.team-logs",{"title":1053,"path":1054,"stem":1055},"Organization Switch","/integrations-and-extensibility/plugins/weekly-logs/organization-switch","06.integrations-and-extensibility/02.plugins/01.weekly-logs/10.organization-switch",{"title":1057,"path":1058,"stem":1059},"Export","/integrations-and-extensibility/plugins/weekly-logs/export","06.integrations-and-extensibility/02.plugins/01.weekly-logs/11.export",{"title":1061,"path":1062,"stem":1063},"Meetings","/integrations-and-extensibility/plugins/weekly-logs/meetings","06.integrations-and-extensibility/02.plugins/01.weekly-logs/12.meetings",{"title":1065,"path":1066,"stem":1067,"children":1068,"page":84},"Developer Experience","/developer-experience","07.developer-experience",[1069,1105,1161],{"title":1070,"path":1071,"stem":1072,"children":1073,"page":84},"Developer Guide","/developer-experience/guide","07.developer-experience/00.guide",[1074,1077,1081,1085,1089,1093,1097,1101],{"title":447,"path":1075,"stem":1076},"/developer-experience/guide/overview","07.developer-experience/00.guide/01.overview",{"title":1078,"path":1079,"stem":1080},"Set up your machine","/developer-experience/guide/set-up-your-machine","07.developer-experience/00.guide/02.set-up-your-machine",{"title":1082,"path":1083,"stem":1084},"Credentials and access","/developer-experience/guide/credentials-and-access","07.developer-experience/00.guide/03.credentials-and-access",{"title":1086,"path":1087,"stem":1088},"Plan work","/developer-experience/guide/plan-work","07.developer-experience/00.guide/04.plan-work",{"title":1090,"path":1091,"stem":1092},"Develop","/developer-experience/guide/develop","07.developer-experience/00.guide/05.develop",{"title":1094,"path":1095,"stem":1096},"Release","/developer-experience/guide/release","07.developer-experience/00.guide/06.release",{"title":1098,"path":1099,"stem":1100},"Troubleshooting","/developer-experience/guide/troubleshooting","07.developer-experience/00.guide/07.troubleshooting",{"title":1102,"path":1103,"stem":1104},"For admins: access, keys and stages","/developer-experience/guide/for-admins","07.developer-experience/00.guide/08.for-admins",{"title":1106,"path":1107,"stem":1108,"children":1109,"page":84},"Intro","/developer-experience/intro","07.developer-experience/01.intro",[1110,1114,1117,1121,1125,1129,1133,1137,1141,1145,1149,1153,1157],{"title":1111,"path":1112,"stem":1113},"How DevStride Is Built, and Why","/developer-experience/intro/how-we-build","07.developer-experience/01.intro/00.how-we-build",{"title":5,"path":1115,"stem":1116},"/developer-experience/intro/getting-started","07.developer-experience/01.intro/01.getting-started",{"title":1118,"path":1119,"stem":1120},"Introduction to the ds CLI","/developer-experience/intro/introduction","07.developer-experience/01.intro/02.introduction",{"title":1122,"path":1123,"stem":1124},"Command Reference","/developer-experience/intro/command-reference","07.developer-experience/01.intro/03.command-reference",{"title":1126,"path":1127,"stem":1128},"Local Development","/developer-experience/intro/local-development","07.developer-experience/01.intro/04.local-development",{"title":1130,"path":1131,"stem":1132},"Dockerized Worktree Development","/developer-experience/intro/dockerized-worktree-development","07.developer-experience/01.intro/05.dockerized-worktree-development",{"title":1134,"path":1135,"stem":1136},"Golden Dataset","/developer-experience/intro/golden-dataset","07.developer-experience/01.intro/06.golden-dataset",{"title":1138,"path":1139,"stem":1140},"Deployment","/developer-experience/intro/deployment","07.developer-experience/01.intro/07.deployment",{"title":1142,"path":1143,"stem":1144},"API Development","/developer-experience/intro/api-development","07.developer-experience/01.intro/08.api-development",{"title":1146,"path":1147,"stem":1148},"Stripe Integration","/developer-experience/intro/stripe-integration","07.developer-experience/01.intro/09.stripe-integration",{"title":1150,"path":1151,"stem":1152},"Maintenance & Codebase Checks","/developer-experience/intro/maintenance-and-codebase-checks","07.developer-experience/01.intro/10.maintenance-and-codebase-checks",{"title":1154,"path":1155,"stem":1156},"AI Development","/developer-experience/intro/ai-development","07.developer-experience/01.intro/11.ai-development",{"title":1158,"path":1159,"stem":1160},"Data Conversion Utilities","/developer-experience/intro/data-conversion-utilities","07.developer-experience/01.intro/12.data-conversion-utilities",{"title":1162,"path":1163,"stem":1164,"children":1165,"page":84},"Agentic Skills","/developer-experience/agentic-skills","07.developer-experience/02.agentic-skills",[1166,1170,1174,1178,1182,1186,1190,1194],{"title":1167,"path":1168,"stem":1169},"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":1171,"path":1172,"stem":1173},"DevStride for Claude Code","/developer-experience/agentic-skills/claude-code-skills-overview","07.developer-experience/02.agentic-skills/01.claude-code-skills-overview",{"title":1175,"path":1176,"stem":1177},"Getting the Skills","/developer-experience/agentic-skills/getting-the-skills","07.developer-experience/02.agentic-skills/02.getting-the-skills",{"title":1179,"path":1180,"stem":1181},"Guided Setup","/developer-experience/agentic-skills/setup-guide","07.developer-experience/02.agentic-skills/03.setup-guide",{"title":1183,"path":1184,"stem":1185},"Skill Audit","/developer-experience/agentic-skills/skill-audit","07.developer-experience/02.agentic-skills/04.skill-audit",{"title":1187,"path":1188,"stem":1189},"The Planning Loop","/developer-experience/agentic-skills/claude-skills-planning-loop","07.developer-experience/02.agentic-skills/05.claude-skills-planning-loop",{"title":1191,"path":1192,"stem":1193},"The Delivery Loop","/developer-experience/agentic-skills/claude-skills-delivery-loop","07.developer-experience/02.agentic-skills/06.claude-skills-delivery-loop",{"title":1195,"path":1196,"stem":1197},"Configuration Reference","/developer-experience/agentic-skills/configuration-reference","07.developer-experience/02.agentic-skills/07.configuration-reference",{"title":1199,"order":1200,"path":1201,"stem":1202,"children":1203,"page":84},"Release Notes",11,"/release-notes","08.release-notes",[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,1528],{"title":1205,"path":1206,"stem":1207},"2026-10-03","/release-notes/2026-10-03","08.release-notes/82.2026-10-03",{"title":1209,"path":1210,"stem":1211},"2026-09-17","/release-notes/2026-09-17","08.release-notes/81.2026-09-17",{"title":1213,"path":1214,"stem":1215},"2026-09-13","/release-notes/2026-09-13","08.release-notes/80.2026-09-13",{"title":1217,"path":1218,"stem":1219},"2026-09-11","/release-notes/2026-09-11","08.release-notes/79.2026-09-11",{"title":1221,"path":1222,"stem":1223},"2026-09-01","/release-notes/2026-09-01","08.release-notes/78.2026-09-01",{"title":1225,"path":1226,"stem":1227},"2026-08-29","/release-notes/2026-08-29","08.release-notes/77.2026-08-29",{"title":1229,"path":1230,"stem":1231},"2026-08-27","/release-notes/2026-08-27","08.release-notes/76.2026-08-27",{"title":1233,"path":1234,"stem":1235},"2026-08-25","/release-notes/2026-08-25","08.release-notes/75.2026-08-25",{"title":1237,"path":1238,"stem":1239},"2026-08-22","/release-notes/2026-08-22","08.release-notes/74.2026-08-22",{"title":1241,"path":1242,"stem":1243},"2026-08-21","/release-notes/2026-08-21","08.release-notes/73.2026-08-21",{"title":1245,"path":1246,"stem":1247},"2026-08-17","/release-notes/2026-08-17","08.release-notes/72.2026-08-17",{"title":1249,"path":1250,"stem":1251},"2026-08-16","/release-notes/2026-08-16","08.release-notes/71.2026-08-16",{"title":1253,"path":1254,"stem":1255},"2026-08-14","/release-notes/2026-08-14","08.release-notes/70.2026-08-14",{"title":1257,"path":1258,"stem":1259},"2026-08-11","/release-notes/2026-08-11","08.release-notes/69.2026-08-11",{"title":1261,"path":1262,"stem":1263},"2026-08-07","/release-notes/2026-08-07","08.release-notes/68.2026-08-07",{"title":1265,"path":1266,"stem":1267},"2026-08-05","/release-notes/2026-08-05","08.release-notes/67.2026-08-05",{"title":1269,"path":1270,"stem":1271},"2026-08-01","/release-notes/2026-08-01","08.release-notes/66.2026-08-01",{"title":1273,"path":1274,"stem":1275},"2026-07-30","/release-notes/2026-07-30","08.release-notes/65.2026-07-30",{"title":1277,"path":1278,"stem":1279},"2026-07-28","/release-notes/2026-07-28","08.release-notes/64.2026-07-28",{"title":1281,"path":1282,"stem":1283},"2026-07-22","/release-notes/2026-07-22","08.release-notes/63.2026-07-22",{"title":1285,"path":1286,"stem":1287},"2026-07-19","/release-notes/2026-07-19","08.release-notes/62.2026-07-19",{"title":1289,"path":1290,"stem":1291},"2026-07-17","/release-notes/2026-07-17","08.release-notes/61.2026-07-17",{"title":1293,"path":1294,"stem":1295},"2026-07-15","/release-notes/2026-07-15","08.release-notes/60.2026-07-15",{"title":1297,"path":1298,"stem":1299},"2026-07-12","/release-notes/2026-07-12","08.release-notes/59.2026-07-12",{"title":1301,"path":1302,"stem":1303},"2026-07-11","/release-notes/2026-07-11","08.release-notes/58.2026-07-11",{"title":1305,"path":1306,"stem":1307},"2026-07-09","/release-notes/2026-07-09","08.release-notes/57.2026-07-09",{"title":1309,"path":1310,"stem":1311},"2026-07-07","/release-notes/2026-07-07","08.release-notes/56.2026-07-07",{"title":1313,"path":1314,"stem":1315},"2026-07-06","/release-notes/2026-07-06","08.release-notes/55.2026-07-06",{"title":1317,"path":1318,"stem":1319},"2026-07-02","/release-notes/2026-07-02","08.release-notes/54.2026-07-02",{"title":1321,"path":1322,"stem":1323},"2026-06-30","/release-notes/2026-06-30","08.release-notes/53.2026-06-30",{"title":1325,"path":1326,"stem":1327},"2026-06-17","/release-notes/2026-06-17","08.release-notes/52.2026-06-17",{"title":1329,"path":1330,"stem":1331},"2026-06-12","/release-notes/2026-06-12","08.release-notes/51.2026-06-12",{"title":1333,"path":1334,"stem":1335},"2026-05-29","/release-notes/2026-05-29","08.release-notes/50.2026-05-29",{"title":1337,"path":1338,"stem":1339},"2026-05-13","/release-notes/2026-05-13","08.release-notes/49.2026-05-13",{"title":1341,"path":1342,"stem":1343},"2026-04-29","/release-notes/2026-04-29","08.release-notes/48.2026-04-29",{"title":1345,"path":1346,"stem":1347},"2026-04-14","/release-notes/2026-04-14","08.release-notes/47.2026-04-14",{"title":1349,"path":1350,"stem":1351},"2026-04-09","/release-notes/2026-04-09","08.release-notes/46.2026-04-09",{"title":1353,"path":1354,"stem":1355},"2026-03-13","/release-notes/2026-03-13","08.release-notes/45.2026-03-13",{"title":1357,"path":1358,"stem":1359},"2026-02-16","/release-notes/2026-02-16","08.release-notes/44.2026-02-16",{"title":1361,"path":1362,"stem":1363},"2026-02-06","/release-notes/2026-02-06","08.release-notes/43.2026-02-06",{"title":1365,"path":1366,"stem":1367},"2026-01-30","/release-notes/2026-01-30","08.release-notes/42.2026-01-30",{"title":1369,"path":1370,"stem":1371},"2026-01-19","/release-notes/2026-01-19","08.release-notes/41.2026-01-19",{"title":1373,"path":1374,"stem":1375},"2025-09-27","/release-notes/2025-09-27","08.release-notes/40.2025-09-27",{"title":1377,"path":1378,"stem":1379},"2025-07-07","/release-notes/2025-07-07","08.release-notes/39.2025-07-07",{"title":1381,"path":1382,"stem":1383},"2025-06-16","/release-notes/2025-06-16","08.release-notes/38.2025-06-16",{"title":1385,"path":1386,"stem":1387},"2025-05-29","/release-notes/2025-05-29","08.release-notes/37.2025-05-29",{"title":1389,"path":1390,"stem":1391},"2025-04-28","/release-notes/2025-04-28","08.release-notes/36.2025-04-28",{"title":1393,"path":1394,"stem":1395},"2025-03-24","/release-notes/2025-03-24","08.release-notes/35.2025-03-24",{"title":1397,"path":1398,"stem":1399},"2024-12-20","/release-notes/2024-12-20","08.release-notes/34.2024-12-20",{"title":1401,"path":1402,"stem":1403},"2024-10-21","/release-notes/2024-10-21","08.release-notes/33.2024-10-21",{"title":1405,"path":1406,"stem":1407},"2024-10-11","/release-notes/2024-10-11","08.release-notes/32.2024-10-11",{"title":1409,"path":1410,"stem":1411},"2024-09-11","/release-notes/2024-09-11","08.release-notes/31.2024-09-11",{"title":1413,"path":1414,"stem":1415},"2024-08-28","/release-notes/2024-08-28","08.release-notes/30.2024-08-28",{"title":1417,"path":1418,"stem":1419},"2024-07-10","/release-notes/2024-07-10","08.release-notes/29.2024-07-10",{"title":1421,"path":1422,"stem":1423},"2024-06-24","/release-notes/2024-06-24","08.release-notes/28.2024-06-24",{"title":1425,"path":1426,"stem":1427},"2024-05-15","/release-notes/2024-05-15","08.release-notes/27.2024-05-15",{"title":1429,"path":1430,"stem":1431},"2024-04-29","/release-notes/2024-04-29","08.release-notes/26.2024-04-29",{"title":1433,"path":1434,"stem":1435},"2024-03-18","/release-notes/2024-03-18","08.release-notes/25.2024-03-18",{"title":1437,"path":1438,"stem":1439},"2024-03-04","/release-notes/2024-03-04","08.release-notes/24.2024-03-04",{"title":1441,"path":1442,"stem":1443},"2024-02-26","/release-notes/2024-02-26","08.release-notes/23.2024-02-26",{"title":1445,"path":1446,"stem":1447},"2024-01-17","/release-notes/2024-01-17","08.release-notes/22.2024-01-17",{"title":1449,"path":1450,"stem":1451},"2023-12-27","/release-notes/2023-12-27","08.release-notes/21.2023-12-27",{"title":1453,"path":1454,"stem":1455},"2023-11-08","/release-notes/2023-11-08","08.release-notes/20.2023-11-08",{"title":1457,"path":1458,"stem":1459},"2023-10-10","/release-notes/2023-10-10","08.release-notes/19.2023-10-10",{"title":1461,"path":1462,"stem":1463},"2023-09-27","/release-notes/2023-09-27","08.release-notes/18.2023-09-27",{"title":1465,"path":1466,"stem":1467},"2023-09-18","/release-notes/2023-09-18","08.release-notes/17.2023-09-18",{"title":1469,"path":1470,"stem":1471},"2023-09-04","/release-notes/2023-09-04","08.release-notes/16.2023-09-04",{"title":1473,"path":1474,"stem":1475},"2023-08-04","/release-notes/2023-08-04","08.release-notes/15.2023-08-04",{"title":1477,"path":1478,"stem":1479},"2023-07-11","/release-notes/2023-07-11","08.release-notes/14.2023-07-11",{"title":1481,"path":1482,"stem":1483},"2023-06-21","/release-notes/2023-06-21","08.release-notes/13.2023-06-21",{"title":1485,"path":1486,"stem":1487},"2023-05-24","/release-notes/2023-05-24","08.release-notes/12.2023-05-24",{"title":1489,"path":1490,"stem":1491},"2023-04-24","/release-notes/2023-04-24","08.release-notes/11.2023-04-24",{"title":1493,"path":1494,"stem":1495},"2023-04-20","/release-notes/2023-04-20","08.release-notes/10.2023-04-20",{"title":1497,"path":1498,"stem":1499},"2023-03-20","/release-notes/2023-03-20","08.release-notes/09.2023-03-20",{"title":1501,"path":1502,"stem":1503},"2023-02-28","/release-notes/2023-02-28","08.release-notes/08.2023-02-28",{"title":1505,"path":1506,"stem":1507},"2023-01-17","/release-notes/2023-01-17","08.release-notes/07.2023-01-17",{"title":1509,"path":1510,"stem":1511},"2023-01-23","/release-notes/2023-01-23","08.release-notes/06.2023-01-23",{"title":1513,"path":1514,"stem":1515},"2022-12-21","/release-notes/2022-12-21","08.release-notes/05.2022-12-21",{"title":1517,"path":1518,"stem":1519},"2022-12-06","/release-notes/2022-12-06","08.release-notes/04.2022-12-06",{"title":1521,"path":1522,"stem":1523},"2022-11-15","/release-notes/2022-11-15","08.release-notes/03.2022-11-15",{"title":1525,"path":1526,"stem":1527},"2022-11-02","/release-notes/2022-11-02","08.release-notes/02.2022-11-02",{"title":1529,"path":1530,"stem":1531},"2022-10-17","/release-notes/2022-10-17","08.release-notes/01.2022-10-17",{"title":1533,"path":1534,"target":1535},"API","https://api-docs.devstride.com/","_blank",{"id":1537,"title":1090,"body":1538,"description":3200,"extension":3201,"links":3202,"meta":3203,"navigation":3204,"path":1091,"seo":3205,"stem":1092,"__hash__":3206},"docs/07.developer-experience/00.guide/05.develop.md",{"type":1539,"value":1540,"toc":3179},"minimark",[1541,1545,1549,1569,1572,1600,1605,1636,1642,1646,1649,1716,1730,1736,1739,1910,1916,1979,1993,2011,2026,2032,2039,2043,2051,2095,2104,2126,2133,2137,2142,2154,2162,2165,2170,2173,2179,2196,2200,2203,2220,2223,2297,2300,2308,2312,2336,2352,2370,2376,2393,2403,2419,2448,2454,2482,2508,2511,2529,2533,2536,2551,2554,2575,2596,2599,2619,2632,2658,2662,2672,2675,2680,2694,2697,2700,2703,2716,2719,2737,2745,2765,2768,2809,2815,2819,2822,2838,2853,2857,2866,2924,2934,2938,2941,2990,2993,3000,3016,3020,3065,3069,3113,3118,3122,3168,3175],[1542,1543,1090],"h1",{"id":1544},"develop",[1546,1547,1548],"p",{},"On this page you take one item from the plan to a merge. You reserve a checkout, start the item on the branch it belongs to, build and try it against demo data, check it on your own machine, and land it.",[1546,1550,1551,1552,1555,1556,1560,1561,1563,1564,1568],{},"It assumes two things: ",[1553,1554,1078],"a",{"href":1079}," ended with the one-word verdict ",[1557,1558,1559],"strong",{},"READY",", and the item already exists in DevStride (",[1553,1562,1086],{"href":1087}," covers making it). Item numbers below are written ",[1565,1566,1567],"code",{},"I#####",": use the real number from DevStride.",[1546,1570,1571],{},"There are two ways to drive the work, and both follow the same rules:",[1573,1574,1575,1586],"ul",{},[1576,1577,1578,1581,1582,1585],"li",{},[1557,1579,1580],{},"An agent does it."," A Claude Code session runs the DevStride plugin's ",[1565,1583,1584],{},"/devstride:build-item",". It picks the item, builds it, reviews it, checks it and merges it.",[1576,1587,1588,1591,1592,1595,1596,1599],{},[1557,1589,1590],{},"You do it, or Codex does."," You write the change yourself, and two commands, ",[1565,1593,1594],{},"ds work start"," and ",[1565,1597,1598],{},"ds work land",", put it on the right branch and check it before it merges. Codex (OpenAI's command-line coding agent) uses the same two commands.",[1601,1602,1604],"h2",{"id":1603},"how-work-flows-in-one-minute","How work flows, in one minute",[1573,1606,1607,1615,1624,1630],{},[1576,1608,1609,1614],{},[1557,1610,1611,1613],{},[1565,1612,1544],{}," is effectively production."," It is released to customers several times a day, so nothing merges into it until it is finished and fully reviewed.",[1576,1616,1617,1620,1621,1623],{},[1557,1618,1619],{},"So work collects somewhere else first."," A Story under an Epic (the group of Stories that is released together) lands on that Epic's own branch, where unfinished work is allowed. A one-off item (one with no Epic above it) lands on a shared branch called the support train. The whole Epic, or the whole train, later goes to ",[1565,1622,1544],{}," in one reviewed pull request.",[1576,1625,1626,1629],{},[1557,1627,1628],{},"A Story gets no pull request of its own",", and neither does a one-off on the train. Each is checked on your machine instead, then merged onto its branch. This is called fast develop mode. The full review and the cloud checks (CI) run once, on the Epic's pull request, or the train's.",[1576,1631,1632,1635],{},[1557,1633,1634],{},"Review comes before CI, and CI runs once",", on the code that was actually reviewed.",[1546,1637,1638,1639,1641],{},"The rest of this page walks those rules in order. ",[1553,1640,1111],{"href":1112}," explains the reasoning behind each one.",[1601,1643,1645],{"id":1644},"_1-take-a-checkout","1. Take a checkout",[1546,1647,1648],{},"Each machine has exactly three copies of the repository, called checkouts. Each has its own copy of the app and its own database in Docker, so several sessions can work side by side.",[1650,1651,1652,1668],"table",{},[1653,1654,1655],"thead",{},[1656,1657,1658,1662,1665],"tr",{},[1659,1660,1661],"th",{},"Checkout",[1659,1663,1664],{},"Folder",[1659,1666,1667],{},"Who works there",[1669,1670,1671,1687,1702],"tbody",{},[1656,1672,1673,1679,1684],{},[1674,1675,1676],"td",{},[1565,1677,1678],{},"main",[1674,1680,1681],{},[1565,1682,1683],{},"~/dev/devstride",[1674,1685,1686],{},"The person at the machine",[1656,1688,1689,1694,1699],{},[1674,1690,1691],{},[1565,1692,1693],{},"wt1",[1674,1695,1696],{},[1565,1697,1698],{},"~/dev/devstride/.worktrees/wt1",[1674,1700,1701],{},"Agent sessions",[1656,1703,1704,1709,1714],{},[1674,1705,1706],{},[1565,1707,1708],{},"wt2",[1674,1710,1711],{},[1565,1712,1713],{},"~/dev/devstride/.worktrees/wt2",[1674,1715,1701],{},[1546,1717,1718,1721,1722,1725,1726,1729],{},[1557,1719,1720],{},"Never make another copy"," (",[1565,1723,1724],{},"git worktree add",", ",[1565,1727,1728],{},"ds worktree create",") unless the owner asks for one. When all three are busy, wait, or ask the session that holds one. Extra copies were made \"to be safe\" in the past, and nobody ever cleaned them up.",[1546,1731,1732,1735],{},[1557,1733,1734],{},"You take a checkout with a lease."," A lease is a small file in the checkout's own git folder that records who holds it and why. It never shows up as a change in your work. You hold it until you hand the checkout back.",[1546,1737,1738],{},"Why a lease rather than a quick look: a clean folder does not mean nobody is using it. A release can sit in one for hours, another session may be running tests there, and two sessions can both see \"clean\" before either one switches branch. Only one session can create the lease file, so only one can win.",[1740,1741,1742,1791,1819],"ol",{},[1576,1743,1744,1745,1748,1749,1595,1752,1755,1756],{},"Name your session once per terminal (or add ",[1565,1746,1747],{},"--session \u003Cname>"," to every ",[1565,1750,1751],{},"ds pool",[1565,1753,1754],{},"ds work"," command):",[1757,1758,1763],"pre",{"className":1759,"code":1760,"language":1761,"meta":1762,"style":1762},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export DEVSTRIDE_SESSION=\"\u003Cyour name>\"\n","bash","",[1565,1764,1765],{"__ignoreMap":1762},[1766,1767,1769,1773,1777,1781,1784,1788],"span",{"class":1768,"line":17},"line",[1766,1770,1772],{"class":1771},"spNyl","export",[1766,1774,1776],{"class":1775},"sTEyZ"," DEVSTRIDE_SESSION",[1766,1778,1780],{"class":1779},"sMK4o","=",[1766,1782,1783],{"class":1779},"\"",[1766,1785,1787],{"class":1786},"sfazB","\u003Cyour name>",[1766,1789,1790],{"class":1779},"\"\n",[1576,1792,1793,1794,1811,1814,1815,1818],{},"See who holds what:",[1757,1795,1797],{"className":1759,"code":1796,"language":1761,"meta":1762,"style":1762},"ds pool status\n",[1565,1798,1799],{"__ignoreMap":1762},[1766,1800,1801,1805,1808],{"class":1768,"line":17},[1766,1802,1804],{"class":1803},"sBMFI","ds",[1766,1806,1807],{"class":1786}," pool",[1766,1809,1810],{"class":1786}," status\n",[1812,1813],"br",{},"It shows each checkout's holder, purpose and start time (a lease more than 24 hours old is marked ",[1557,1816,1817],{},"STALE","; clearing one is the owner's call), the branch it is on, and what data it holds.",[1576,1820,1821,1822,1824,1825,1827,1828,1854,1856,1857,1859,1860,1862,1863,1865,1866,1868,1869,1872,1873,1875,1876,1878,1879,1881,1882,1885,1886,1907,1909],{},"Take a checkout. A person takes ",[1565,1823,1678],{},". The extra flag is there to keep agents out of ",[1565,1826,1678],{},", which belongs to the person at the machine:",[1757,1829,1831],{"className":1759,"code":1830,"language":1761,"meta":1762,"style":1762},"ds pool checkout main --purpose I##### --i-know-main-is-free\n",[1565,1832,1833],{"__ignoreMap":1762},[1766,1834,1835,1837,1839,1842,1845,1848,1851],{"class":1768,"line":17},[1766,1836,1804],{"class":1803},[1766,1838,1807],{"class":1786},[1766,1840,1841],{"class":1786}," checkout",[1766,1843,1844],{"class":1786}," main",[1766,1846,1847],{"class":1786}," --purpose",[1766,1849,1850],{"class":1786}," I#####",[1766,1852,1853],{"class":1786}," --i-know-main-is-free\n",[1812,1855],{},"You can edit files in ",[1565,1858,1678],{}," without a lease. The lease matters for ",[1565,1861,1754],{},", which only runs in a checkout you hold. Take it while ",[1565,1864,1678],{}," is clean and on ",[1565,1867,1544],{},", before you start the item (see ",[1565,1870,1871],{},"IN USE"," below).",[1812,1874],{},"An agent session takes ",[1565,1877,1693],{}," or ",[1565,1880,1708],{}," itself, from inside the session (",[1565,1883,1884],{},"AGENTS.md",", the rules every agent reads, tells it to):",[1757,1887,1889],{"className":1759,"code":1888,"language":1761,"meta":1762,"style":1762},"ds pool checkout wt1 --purpose I#####\n",[1565,1890,1891],{"__ignoreMap":1762},[1766,1892,1893,1895,1897,1899,1902,1904],{"class":1768,"line":17},[1766,1894,1804],{"class":1803},[1766,1896,1807],{"class":1786},[1766,1898,1841],{"class":1786},[1766,1900,1901],{"class":1786}," wt1",[1766,1903,1847],{"class":1786},[1766,1905,1906],{"class":1786}," I#####\n",[1812,1908],{},"Let the agent take its own lease. A lease belongs to the session that took it, so one you take from your terminal is not the agent's.",[1546,1911,1912,1915],{},[1565,1913,1914],{},"ds pool checkout"," prints exactly one outcome:",[1650,1917,1918,1931],{},[1653,1919,1920],{},[1656,1921,1922,1925,1928],{},[1659,1923,1924],{},"Outcome",[1659,1926,1927],{},"What it means",[1659,1929,1930],{},"What to do",[1669,1932,1933,1950,1967],{},[1656,1934,1935,1940,1943],{},[1674,1936,1937],{},[1565,1938,1939],{},"LEASED",[1674,1941,1942],{},"The checkout is yours.",[1674,1944,1945,1946,1949],{},"Carry on. Running ",[1565,1947,1948],{},"checkout"," again on a checkout you already hold changes nothing and says so.",[1656,1951,1952,1957,1964],{},[1674,1953,1954],{},[1565,1955,1956],{},"BUSY",[1674,1958,1959,1960,1963],{},"Another session holds it. The line names that session and its purpose, and says you do ",[1557,1961,1962],{},"not"," hold it, even when the other session uses your name.",[1674,1965,1966],{},"Take another checkout, or ask that session. Never delete someone else's lease.",[1656,1968,1969,1973,1976],{},[1674,1970,1971],{},[1565,1972,1871],{},[1674,1974,1975],{},"Nobody holds a lease, but the checkout has uncommitted changes or is on someone's branch, so a session from before leases existed may be working there. Your lease has already been released.",[1674,1977,1978],{},"Take another checkout.",[1546,1980,1981,1595,1983,1985,1986,1988,1989,1992],{},[1565,1982,1956],{},[1565,1984,1871],{}," exit with code 2. A checkout must be clean, and on ",[1565,1987,1544],{}," or detached (on no branch at all), before you can lease it. That is the state ",[1565,1990,1991],{},"ds pool checkin"," leaves it in.",[1546,1994,1995,1998,1999,2001,2002,2005,2006,1595,2008,2010],{},[1557,1996,1997],{},"From a plain terminal",", one that is not a Claude Code or Codex session, ",[1565,2000,1948],{}," also prints an ",[1565,2003,2004],{},"export DEVSTRIDE_LEASE_TOKEN=…"," line. Run it in that terminal. Later ",[1565,2007,1751],{},[1565,2009,1754],{}," commands use the token to prove they come from the session that took the lease; without it they are refused as someone else. Claude Code and Codex sessions need no token: each command in an agent session carries that session's own id.",[1546,2012,2013,1725,2016,2018,2019,2021,2022,2025],{},[1557,2014,2015],{},"Before it hands the checkout over",[1565,2017,1914],{}," brings it up to date. It moves a parked checkout to the latest ",[1565,2020,1544],{},", reinstalls dependencies, and brings its demo data up to date. It reports anything it may not fix itself, such as newer secrets (run ",[1565,2023,2024],{},"ds secrets pull"," for those). Then it starts the checkout's app.",[1546,2027,2028,2031],{},[1557,2029,2030],{},"While you hold it, switch branches freely."," The lease, not the branch, makes the checkout yours.",[1546,2033,2034,2038],{},[1553,2035,2037],{"href":2036},"/developer-experience/intro/dockerized-worktree-development#the-checkout-pool","The checkout pool"," covers the rest: customer copies, cloud mode and every flag.",[1601,2040,2042],{"id":2041},"_2-know-where-the-work-lands","2. Know where the work lands",[1546,2044,2045,2046,1595,2048,2050],{},"You never work out the target branch by hand: ",[1565,2047,1584],{},[1565,2049,1594],{}," both compute it from the item's place in DevStride, and a test holds the two to the same answer. This is the rule they follow:",[1740,2052,2053,2066,2079],{},[1576,2054,2055,2058,2059,2062,2063,2065],{},[1557,2056,2057],{},"The item has an Epic above it."," It lands on the nearest Epic's integration branch (the branch the Epic's Stories collect on). That branch is named ",[1565,2060,2061],{},"\u003Cyou>/\u003CYY-MM-DD>/epic-\u003CI#####>-\u003Cslug>",", and is created from ",[1565,2064,1544],{}," the first time one of the Epic's Stories starts.",[1576,2067,2068,2071,2072,2075,2076,2078],{},[1557,2069,2070],{},"No Epic above it (a one-off)."," It lands on the support train, ",[1565,2073,2074],{},"train/support",". Every release first merges the train into ",[1565,2077,1544],{}," through its own reviewed pull request.",[1576,2080,2081,2084,2085,1725,2088,2091,2092,2094],{},[1557,2082,2083],{},"A one-off that changes deploy configuration or database migrations"," (anything under ",[1565,2086,2087],{},"stacks/",[1565,2089,2090],{},"sst.config.ts",", or the migrations folder) never rides the train. It goes to ",[1565,2093,1544],{}," by its own pull request instead. Why: the train reaches production soon after it merges, and such a change deserves its own cloud checks and an earlier deploy to the shared development environment.",[1546,2096,2097,2098,1878,2100,2103],{},"Nothing lands on ",[1565,2099,1544],{},[1565,2101,2102],{},"master"," directly.",[1546,2105,2106,2109,2110,2113,2114,2117,2118,2121,2122,2125],{},[1557,2107,2108],{},"Branch names."," A feature branch is ",[1565,2111,2112],{},"\u003Cyou>/\u003CYY-MM-DD>/\u003CI#####>-\u003Cslug>",", for example ",[1565,2115,2116],{},"jane/26-10-06/I#####-retry-failed-export",". ",[1565,2119,2120],{},"\u003Cyou>"," is the first word of your ",[1565,2123,2124],{},"git config user.name",", lowercased. The date puts the year first so branches sort by date in any plain listing. Some older branches put the month first; they are mistakes, not a pattern to copy. The tools name branches for you.",[1546,2127,2128,2132],{},[1553,2129,2131],{"href":2130},"/developer-experience/agentic-skills/claude-skills-delivery-loop#where-work-lands","Where work lands"," has the full rule.",[1601,2134,2136],{"id":2135},"_3-start-the-item","3. Start the item",[2138,2139,2141],"h3",{"id":2140},"with-an-agent","With an agent",[1546,2143,2144,2145,1878,2147,2149,2150,2153],{},"Open a Claude Code session in ",[1565,2146,1693],{},[1565,2148,1708],{}," (for example ",[1565,2151,2152],{},"cd ~/dev/devstride/.worktrees/wt1 && claude","). The session takes that checkout's lease before it builds. Build one named item:",[1757,2155,2160],{"className":2156,"code":2158,"language":2159,"meta":1762},[2157],"language-text","/devstride:build-item I#####\n","text",[1565,2161,2158],{"__ignoreMap":1762},[1546,2163,2164],{},"Or pass a plan's top item, and it builds the next unblocked item under it (the highest-priority one whose blockers are all Done):",[1757,2166,2168],{"className":2167,"code":2158,"language":2159,"meta":1762},[2157],[1565,2169,2158],{"__ignoreMap":1762},[1546,2171,2172],{},"Once you trust one pass, let it walk the whole plan, one item after another:",[1757,2174,2177],{"className":2175,"code":2176,"language":2159,"meta":1762},[2157],"/loop /devstride:build-item I#####\n",[1565,2178,2176],{"__ignoreMap":1762},[1546,2180,2181,2184,2185,2188,2189,2192,2193,2195],{},[1565,2182,2183],{},"build-item"," fetches the latest code, picks the item, moves it to In Progress, branches, builds, runs its risk check, runs the local checks, merges, and records on the item what actually shipped. ",[1557,2186,2187],{},"Its DevStride changes are live",": status changes, comments and dates reach your real organization straight away. If this session was just used for planning, run ",[1565,2190,2191],{},"/clear"," first: the plugin keeps planning and building in separate sessions. ",[1553,2194,1191],{"href":1192}," describes every step.",[2138,2197,2199],{"id":2198},"by-hand-or-in-codex","By hand, or in Codex",[1546,2201,2202],{},"In the checkout you leased, with a clean tree:",[1757,2204,2206],{"className":1759,"code":2205,"language":1761,"meta":1762,"style":1762},"ds work start I#####\n",[1565,2207,2208],{"__ignoreMap":1762},[1766,2209,2210,2212,2215,2218],{"class":1768,"line":17},[1766,2211,1804],{"class":1803},[1766,2213,2214],{"class":1786}," work",[1766,2216,2217],{"class":1786}," start",[1766,2219,1906],{"class":1786},[1546,2221,2222],{},"It reads the item and everything above it from DevStride, picks the target by the rule in step 2, creates the Epic's branch on GitHub if it does not exist yet, and cuts your feature branch from a fresh copy of the target. It prints the branch it made, the target it chose and why. It needs no AWS sign-in: it reads DevStride with the agents' own key.",[1650,2224,2225,2235],{},[1653,2226,2227],{},[1656,2228,2229,2232],{},[1659,2230,2231],{},"Option",[1659,2233,2234],{},"Use it when",[1669,2236,2237,2247,2257,2267,2280],{},[1656,2238,2239,2244],{},[1674,2240,2241],{},[1565,2242,2243],{},"--dry-run",[1674,2245,2246],{},"You want to see the branch and target first. Nothing changes.",[1656,2248,2249,2254],{},[1674,2250,2251],{},[1565,2252,2253],{},"--slug \u003Ckebab-case>",[1674,2255,2256],{},"You want a different name after the item number. By default it comes from the item's title.",[1656,2258,2259,2264],{},[1674,2260,2261],{},[1565,2262,2263],{},"--one-off",[1674,2265,2266],{},"The item sits under an Epic but is really a one-off (an inbound request filed there). It goes to the support train, never to that Epic's branch.",[1656,2268,2269,2274],{},[1674,2270,2271],{},[1565,2272,2273],{},"--infra",[1674,2275,2276,2277,2279],{},"The one-off changes deploy configuration or migrations. The branch is cut from ",[1565,2278,1544],{},", to ship by its own pull request (step 6).",[1656,2281,2282,2287],{},[1674,2283,2284],{},[1565,2285,2286],{},"--target \u003Cbranch>",[1674,2288,2289,2292,2293,2296],{},[1565,2290,2291],{},"start"," stopped and asked: for example, the Epic already has an integration branch from before the ",[1565,2294,2295],{},"epic-"," naming.",[1546,2298,2299],{},"It starts only a Story or a Defect, one at a time, and refuses a checkout you have not leased.",[1546,2301,2302,2307],{},[1557,2303,2304,2306],{},[1565,2305,1754],{}," never changes the DevStride item."," Move it to In Progress yourself when you start, and record on it what you shipped.",[1601,2309,2311],{"id":2310},"_4-build-and-try-it","4. Build and try it",[1546,2313,2314,2317,2318,2321,2322,2324,2325,2328,2329,2332,2333,2335],{},[1557,2315,2316],{},"The app."," Each checkout's app runs that checkout's code in Docker. ",[1565,2319,2320],{},"ds worktree ls"," prints each checkout's address; ",[1565,2323,1678],{}," is at ",[1565,2326,2327],{},"http://localhost:8080",". No AWS sign-in is needed for any of it. After the Mac restarts, start Docker Desktop, then ",[1565,2330,2331],{},"ds worktree up main"," starts ",[1565,2334,1678],{},"'s app again.",[1546,2337,2338,2339,2342,2343,2346,2347,2351],{},"Docker is the local path. When you need the real AWS services (queues, events, email, file storage), run a checkout against your machine's own AWS stage, which setup built: ",[1565,2340,2341],{},"ds pool cloud wt1"," runs wt1's code against it, and ",[1565,2344,2345],{},"ds pool cloud wt1 --off"," goes back to Docker. One checkout per machine at a time. ",[1553,2348,2350],{"href":2349},"/developer-experience/guide/set-up-your-machine#your-aws-stage","Your AWS stage"," explains it.",[1546,2353,2354,2357,2358,2361,2362,2365,2366,2369],{},[1557,2355,2356],{},"Demo data."," Every checkout's database holds the Acme demo organization (the golden dataset), which setup built once and copied into each checkout. Sign in with the username ",[1565,2359,2360],{},"acme.devstride"," (a username, not an email) and the password ",[1565,2363,2364],{},"Demo@123",". The same password works for the other demo people, such as ",[1565,2367,2368],{},"alex.rte",".",[1546,2371,2372,2375],{},[1557,2373,2374],{},"Reset the demo data in seconds."," In a checkout you hold:",[1757,2377,2379],{"className":1759,"code":2378,"language":1761,"meta":1762,"style":1762},"ds pool reset wt1\n",[1565,2380,2381],{"__ignoreMap":1762},[1766,2382,2383,2385,2387,2390],{"class":1768,"line":17},[1766,2384,1804],{"class":1803},[1766,2386,1807],{"class":1786},[1766,2388,2389],{"class":1786}," reset",[1766,2391,2392],{"class":1786}," wt1\n",[1546,2394,2395,2396,2400,2401,2369],{},"It copies the machine's demo-data snapshot over the checkout's database and re-creates the demo logins. If your branch adds migrations the snapshot lacks, it runs them and checks each one landed. If your branch is ",[2397,2398,2399],"em",{},"behind"," the snapshot, it refuses, because nothing moves a database backwards. Why: a full rebuild of the demo data takes minutes; a reset takes seconds. If the demo data itself is wrong, fix the generator rather than the rows; see ",[1553,2402,1134],{"href":1135},[1546,2404,2405,2408,2409,2149,2412,2415,2416,2418],{},[1557,2406,2407],{},"Database changes."," After you add a migration, apply it to your checkout's own database with ",[1565,2410,2411],{},"ds worktree cli \u003Ccheckout> migrations run",[1565,2413,2414],{},"ds worktree cli wt1 migrations run","). Every migration must be safe to run twice and safe while old and new code run side by side; ",[1565,2417,1884],{},", \"Migration Safety\", has the rules.",[1546,2420,2421,2424,2425,2428,2429,1725,2432,2435,2436,2439,2440,1878,2442,2444,2445,2369],{},[1557,2422,2423],{},"Generated types."," The backend type-check needs the types that SST (the framework that deploys the backend to AWS) generates, which live in ",[1565,2426,2427],{},".sst/types"," and are never committed. Each checkout makes its own: ",[1565,2430,2431],{},"ds verify land",[1565,2433,2434],{},"ds verify full",", the pre-push hook and setup all run ",[1565,2437,2438],{},"cli/ensure_sst_types.sh"," first, which regenerates them in about five seconds, with no AWS sign-in, whenever they are missing or were made from different stack files. After you change ",[1565,2441,2087],{},[1565,2443,2090],{},", the next of those runs catches up; to do it now, run ",[1565,2446,2447],{},"sh cli/ensure_sst_types.sh",[1546,2449,2450,2453],{},[1557,2451,2452],{},"Run one test"," with Vitest, the test runner, from the repository's top folder:",[1757,2455,2457],{"className":1759,"code":2456,"language":1761,"meta":1762,"style":1762},"pnpm --dir backend exec vitest run tests/suits/path/to/test.spec.ts\n",[1565,2458,2459],{"__ignoreMap":1762},[1766,2460,2461,2464,2467,2470,2473,2476,2479],{"class":1768,"line":17},[1766,2462,2463],{"class":1803},"pnpm",[1766,2465,2466],{"class":1786}," --dir",[1766,2468,2469],{"class":1786}," backend",[1766,2471,2472],{"class":1786}," exec",[1766,2474,2475],{"class":1786}," vitest",[1766,2477,2478],{"class":1786}," run",[1766,2480,2481],{"class":1786}," tests/suits/path/to/test.spec.ts\n",[2483,2484,2487,2488,2491,2492,2495,2496,2499,2500,2503,2504,2507],"alert",{"title":2485,"type":2486},"Never run one test with pnpm test","warning","The backend's ",[1565,2489,2490],{},"test"," script has no ",[1565,2493,2494],{},"--run",", so ",[1565,2497,2498],{},"pnpm test -- \u003Cpath>"," does not run one file. It starts the whole suite in watch mode and never exits, with no output at all, which looks like a slow test rather than a wrong command. Always include ",[1565,2501,2502],{},"vitest run",", and use ",[1565,2505,2506],{},"--dir backend"," from the top folder: there is no vitest configuration at the top level.",[1546,2509,2510],{},"Tests run against this checkout's own test databases in Docker. Never run two test runs against the same checkout at once: they corrupt each other's databases, so the second one is stopped.",[1546,2512,2513,2516,2517,2520,2521,2524,2525,2528],{},[1557,2514,2515],{},"Changed an API route?"," Regenerate the API client and the MCP files on the host, never through ",[1565,2518,2519],{},"ds worktree cli",", and check the generated files rather than the exit code. ",[1553,2522,1142],{"href":2523},"/developer-experience/intro/api-development#run-the-generators-on-the-host-and-check-the-files"," explains why; the repository's ",[1565,2526,2527],{},"ds-api-regen"," skill has the commands.",[1601,2530,2532],{"id":2531},"_5-check-it-locally","5. Check it locally",[1546,2534,2535],{},"Before anything lands, it passes the landing check:",[1757,2537,2539],{"className":1759,"code":2538,"language":1761,"meta":1762,"style":1762},"ds verify land\n",[1565,2540,2541],{"__ignoreMap":1762},[1766,2542,2543,2545,2548],{"class":1768,"line":17},[1766,2544,1804],{"class":1803},[1766,2546,2547],{"class":1786}," verify",[1766,2549,2550],{"class":1786}," land\n",[1546,2552,2553],{},"For the files your change touches, it:",[1740,2555,2556,2559,2562,2565,2568],{},[1576,2557,2558],{},"installs dependencies exactly as the lockfile pins them;",[1576,2560,2561],{},"makes the generated types, then runs every type-check;",[1576,2563,2564],{},"runs eslint (the frontend's linter) on the frontend files you changed. Errors fail the run; formatting is fixed in place, so commit what it changes;",[1576,2566,2567],{},"runs every backend and frontend test whose imports reach a file you changed. A change to something broad, such as the test harness or the lockfile, runs the whole backend suite instead and says why;",[1576,2569,2570,2571,2574],{},"runs the checks of the MCP server (DevStride's connection for AI agents) when ",[1565,2572,2573],{},"packages/mcp"," changed, and the extra checks a changed path triggers (for example the golden-dataset assertions when the generator changes).",[1546,2576,2577,2578,1878,2581,2584,2585,2588,2589,2117,2592,2595],{},"It prints one ",[1565,2579,2580],{},"PASS",[1565,2582,2583],{},"FAIL"," line per step and stops at the first failure. Its whole output goes to ",[1565,2586,2587],{},".ds/verify-land.log"," in the checkout, and a receipt to ",[1565,2590,2591],{},".ds/verify-land.json",[1565,2593,2594],{},"ds verify land --dry-run"," lists the steps without running them.",[1546,2597,2598],{},"What it needs, and what it does not:",[1573,2600,2601,2610,2616],{},[1576,2602,2603,2606,2607],{},[1557,2604,2605],{},"This checkout's test databases in Docker",", so Docker must be running. ",[1557,2608,2609],{},"No AWS sign-in.",[1576,2611,2612,2615],{},[1557,2613,2614],{},"One deep check per machine at a time."," A second run waits, and says whose run it is waiting on. Why: two full test runs on one machine starve each other of CPU, and their timeouts look exactly like broken code. A run that died leaves a lock the next run reclaims by itself.",[1576,2617,2618],{},"It leaves four CPU cores free for the rest of the machine. When the only failures are up to five test files that timed out while setting up, with no test failing, it runs just those files once more and says so.",[1546,2620,2621,2622,2624,2625,2627,2628,2631],{},"By default it compares your branch with the target ",[1565,2623,1594],{}," recorded, otherwise with whichever of ",[1565,2626,1544],{},", the support train and the Epic branches your branch is closest to. ",[1565,2629,2630],{},"--base \u003Cref>"," sets it explicitly.",[1546,2633,2634,2638,2639,2642,2643,2646,2647,2649,2650,2652,2653,2369],{},[1557,2635,2636],{},[1565,2637,2434],{}," is the bigger check: on this machine, everything cloud CI runs on a release, including the whole backend suite and the UI build. It takes about half an hour. With ",[1565,2640,2641],{},"--post"," it records its result as the ",[1565,2644,2645],{},"local-ci"," status on the exact commit it checked, and ",[1565,2648,1544],{}," will not accept a pull request without a green one. The loop runs it on each pull request into ",[1565,2651,1544],{}," before that pull request is marked ready; you rarely run it for a single Story. See ",[1553,2654,2656],{"href":2655},"/developer-experience/intro/deployment#local-ci-the-required-check-on-develop",[1565,2657,2645],{},[1601,2659,2661],{"id":2660},"_6-land-it","6. Land it",[1546,2663,2664,2665,2668,2669,2671],{},"A Story on an Epic branch, or a one-off on the support train, gets ",[1557,2666,2667],{},"no pull request of its own",". Once its checks pass, it is merged onto its target on your machine and pushed. The full review and CI are not skipped: they move to the release unit's pull request (the Epic's pull request into ",[1565,2670,1544],{},", or the train's at the next release), where they run once over the whole batch. This is fast develop mode.",[2138,2673,2141],{"id":2674},"with-an-agent-1",[1546,2676,2677,2679],{},[1565,2678,2183],{}," lands the item itself. Before it merges one, it needs:",[1573,2681,2682,2685,2688],{},[1576,2683,2684],{},"a completed risk check of the change by Claude;",[1576,2686,2687],{},"an extra, focused check whenever the change touches sign-in or permissions, a database migration, anything that cannot be undone, or a contract a deployed service depends on. That one is never skipped;",[1576,2689,2690,2691,2693],{},"a green landing check (",[1565,2692,2431],{},").",[1546,2695,2696],{},"Then it merges the item's branch onto the target with a merge commit, pushes, and deletes the item's branch.",[2138,2698,2199],{"id":2699},"by-hand-or-in-codex-1",[1546,2701,2702],{},"On your feature branch, with everything committed:",[1757,2704,2706],{"className":1759,"code":2705,"language":1761,"meta":1762,"style":1762},"ds work land\n",[1565,2707,2708],{"__ignoreMap":1762},[1766,2709,2710,2712,2714],{"class":1768,"line":17},[1766,2711,1804],{"class":1803},[1766,2713,2214],{"class":1786},[1766,2715,2550],{"class":1786},[1546,2717,2718],{},"It:",[1740,2720,2721,2724,2734],{},[1576,2722,2723],{},"brings the target's newer work into your branch, so the check covers what will actually land;",[1576,2725,2726,2727,2729,2730,2733],{},"runs ",[1565,2728,2431],{}," against the target. Its output goes to ",[1565,2731,2732],{},".ds/work-land.log","; a failure lands nothing;",[1576,2735,2736],{},"merges your branch onto the target and pushes. If another session landed first, it tries once more.",[1546,2738,2739,2740,1725,2742,2744],{},"It never pushes to ",[1565,2741,1544],{},[1565,2743,2102],{}," or any other protected branch, and never forces a push. When it finishes, it says when the item ships:",[1573,2746,2747,2756],{},[1576,2748,2749,2752,2753,2755],{},[1557,2750,2751],{},"A Story"," ships when its Epic merges to ",[1565,2754,1544],{},", and is Done then.",[1576,2757,2758,2761,2762,2764],{},[1557,2759,2760],{},"A one-off on the train"," ships with the next release, and is Done only when the release carries the train into ",[1565,2763,1544],{},". The release marks it Done.",[1546,2766,2767],{},"Two refusals to know about:",[1573,2769,2770,2782],{},[1576,2771,2772,2775,2776,2778,2779,2369],{},[1557,2773,2774],{},"A one-off that touches deploy configuration or migrations is refused before anything merges onto the train."," The message gives the exact commands to move your branch onto ",[1565,2777,1544],{}," and open its own pull request. Next time, start such a change with ",[1565,2780,2781],{},"ds work start \u003CI#####> --infra",[1576,2783,2784,2789,2790,2792,2793,2796,2797,2799,2800,2117,2803,2806,2807,2369],{},[1557,2785,2786,2787],{},"A branch started with ",[1565,2788,2273],{}," is never landed by ",[1565,2791,1598],{},". Open its pull request with ",[1565,2794,2795],{},"/devstride:pr"," in Claude Code (it opens a draft and runs the full review), then add the label that lets it into ",[1565,2798,1544],{},": ",[1565,2801,2802],{},"gh pr edit \u003Cnumber> --add-label merge-path-override",[1565,2804,2805],{},"ds merge-path check --head \u003Cbranch> --base develop"," tells you beforehand whether a branch may open a pull request into ",[1565,2808,1544],{},[1546,2810,2811,2814],{},[1565,2812,2813],{},"--no-verify"," skips the landing check, with a warning. It is refused for the support train, because nothing else checks that code before the train's pull request.",[1601,2816,2818],{"id":2817},"_7-hand-the-checkout-back","7. Hand the checkout back",[1546,2820,2821],{},"When your work has landed or been handed over, stop every process you started in the checkout (test runs, dev servers, watchers), then:",[1757,2823,2825],{"className":1759,"code":2824,"language":1761,"meta":1762,"style":1762},"ds pool checkin wt1\n",[1565,2826,2827],{"__ignoreMap":1762},[1766,2828,2829,2831,2833,2836],{"class":1768,"line":17},[1766,2830,1804],{"class":1803},[1766,2832,1807],{"class":1786},[1766,2834,2835],{"class":1786}," checkin",[1766,2837,2392],{"class":1786},[1546,2839,2840,2841,2843,2844,2846,2847,2849,2850,2852],{},"It refuses unless you hold the lease and the tree is clean. It stops the checkout's app (its test databases keep running), leaves it detached at a freshly fetched ",[1565,2842,1544],{},", and removes the lease. Its data is kept. Handing ",[1565,2845,1678],{}," back stops ",[1565,2848,1678],{},"'s app too; ",[1565,2851,2331],{}," starts it again.",[1601,2854,2856],{"id":2855},"after-you-land-review-then-ci-once","After you land: review, then CI, once",[1546,2858,2859,2860,2862,2863,2865],{},"When an Epic's last Story has landed, the Epic is release-ready. In this repository its pull request into ",[1565,2861,1544],{}," waits for the owner to cut it; ",[1553,2864,1094],{"href":1095}," covers that step and the release to production. What happens on every pull request is the same:",[1740,2867,2868,2881,2890,2896,2902],{},[1576,2869,2870,2873,2874,2876,2877,2880],{},[1557,2871,2872],{},"It opens as a draft, and CI does not run on drafts."," ",[1565,2875,2795],{}," opens it that way. A pull request a person opens straight to ready fails the ",[1565,2878,2879],{},"ci-policy"," check (the check that enforces drafts first).",[1576,2882,2883,2886,2887,2889],{},[1557,2884,2885],{},"Reviewers run first."," Two run on every pull request, at full depth: an adversarial Claude pass and Codex's command-line reviewer. GitHub Copilot joins only on pull requests into ",[1565,2888,2102],{}," (the release, or a hotfix). It is asked once, on the final version, and again only if a fix answers one of its own findings.",[1576,2891,2892,2895],{},[1557,2893,2894],{},"Every finding is fixed, answered or dismissed"," with a written reason. Two rounds is the normal target; a confirmed serious problem keeps opening rounds until one finds nothing.",[1576,2897,2898,2901],{},[1557,2899,2900],{},"The pull request is marked ready, which starts CI once",", on exactly the code that was reviewed. Pushing or editing it after that starts CI again, so finish the title and description first.",[1576,2903,2904,2873,2909,2912,2913,2915,2916,2117,2919,2921,2922,2369],{},[1557,2905,2906,2907,2369],{},"Two checks do the real work on a pull request into ",[1565,2908,1544],{},[1565,2910,2911],{},"merge-path"," admits only an Epic branch, the train, a release or hotfix branch, a sync from ",[1565,2914,2102],{}," or a Dependabot update, unless the pull request carries ",[1565,2917,2918],{},"merge-path-override",[1565,2920,2645],{}," is the full local check from step 5. The heaviest cloud checks (the backend suite, the linters and the UI tests) report skipped there and run once per release, on the pull request into ",[1565,2923,2102],{},[1546,2925,2926,2927,2930,2931,2933],{},"Because fast develop mode skips the per-Story pull request, the Epic's pull request is the ",[1557,2928,2929],{},"first"," time any outside reviewer or CI sees that code, so it is reviewed in full, every Story included. ",[1553,2932,1191],{"href":1192}," has the mechanics.",[1601,2935,2937],{"id":2936},"the-merge-guard","The merge guard",[1546,2939,2940],{},"Every Claude Code and Codex session in the repository runs a small check before each shell command. It refuses the commands that would skip the flow above:",[1573,2942,2943,2951,2958,2969,2984],{},[1576,2944,2945,2946,1878,2948,2950],{},"a push to ",[1565,2947,1544],{},[1565,2949,2102],{},", in any form;",[1576,2952,2953,2954,2957],{},"a forced or deleting push to a protected branch, such as a ",[1565,2955,2956],{},"release/*"," branch;",[1576,2959,2960,2963,2964,1878,2966,2968],{},[1565,2961,2962],{},"git merge"," while you are on ",[1565,2965,1544],{},[1565,2967,2102],{},";",[1576,2970,2971,2974,2975,2977,2978,2980,2981,2983],{},[1565,2972,2973],{},"gh pr merge"," into ",[1565,2976,1544],{}," unless the ",[1565,2979,2911],{}," rule admits the branch, and into ",[1565,2982,2102],{}," unless it is a release or hotfix branch;",[1576,2985,2986,2989],{},[1565,2987,2988],{},"gh api"," writes to GitHub's branch rules.",[1546,2991,2992],{},"When a session starts, the same check prints a short banner: the checkout you hold, where your branch lands, and any open release.",[1546,2994,2995,2996,2999],{},"It is a speed bump, not a lock. It fails open: when it cannot run (no Python, a command it cannot read), the command goes through and the reason is written to ",[1565,2997,2998],{},"~/.cache/devstride/merge-guard.log",". It only sees the command line, so a script or GitHub's web page gets past it. The real boundary is on GitHub: the required checks and branch rules.",[2483,3001,3004,3007,3008,3011,3012,3015],{"title":3002,"type":3003},"Never switch the guard off to get past a block","danger",[1565,3005,3006],{},"DEVSTRIDE_MERGE_GUARD=0"," turns the guard off, and is never the way past a refusal: the block is the point. Ask the owner. If you think a refusal is wrong, ",[1565,3009,3010],{},"ds merge-path check"," explains the rule's verdict. ",[1553,3013,2937],{"href":3014},"/developer-experience/intro/ai-development#the-merge-guard"," has the full list.",[1601,3017,3019],{"id":3018},"what-you-should-see","What you should see",[1573,3021,3022,3034,3044,3051,3058],{},[1576,3023,3024,3026,3027,3029,3030,3033],{},[1565,3025,1914],{}," printed ",[1565,3028,1939],{},", and ",[1565,3031,3032],{},"ds pool status"," shows the checkout as yours.",[1576,3035,3036,3038,3039,3041,3042,2369],{},[1565,3037,1594],{}," (or ",[1565,3040,2183],{},") named your feature branch and its target: the Epic's branch or ",[1565,3043,2074],{},[1576,3045,3046,3026,3048,3050],{},[1565,3047,2431],{},[1565,3049,2580],{}," for every step.",[1576,3052,3053,3038,3055,3057],{},[1565,3054,1598],{},[1565,3056,2183],{},") said the item landed, and when it ships.",[1576,3059,3060,3062,3063,2369],{},[1565,3061,1991],{}," handed the checkout back, clean and parked at ",[1565,3064,1544],{},[1601,3066,3068],{"id":3067},"when-something-goes-wrong","When something goes wrong",[1573,3070,3071,3077,3086,3093,3100],{},[1576,3072,3073,3074,2369],{},"A lease you hold is refused as someone else's: see ",[1553,3075,1098],{"href":3076},"/developer-experience/guide/troubleshooting#ds-pool-or-ds-work-says-you-do-not-hold-the-checkout",[1576,3078,3079,3081,3082,2369],{},[1565,3080,2431],{}," keeps waiting: ",[1553,3083,3085],{"href":3084},"/developer-experience/guide/troubleshooting#another-ds-verify-run-is-going","Another ds verify run is going",[1576,3087,3088,3089,2369],{},"Dozens of tests time out at once: ",[1553,3090,3092],{"href":3091},"/developer-experience/guide/troubleshooting#many-tests-time-out-at-once","Many tests time out at once",[1576,3094,3095,3096,2369],{},"The app or the tests cannot reach Docker: ",[1553,3097,3099],{"href":3098},"/developer-experience/guide/troubleshooting#docker-is-not-answering","Docker is not answering",[1576,3101,3102,3103,3105,3106,2799,3109,2369],{},"The demo login fails, or ",[1565,3104,3032],{}," says a checkout's data is ",[1565,3107,3108],{},"not recorded",[1553,3110,3112],{"href":3111},"/developer-experience/guide/troubleshooting#a-checkout-without-its-demo-data","A checkout without its demo data",[1546,3114,3115,3116,2369],{},"For everything else, start at ",[1553,3117,1098],{"href":1099},[1601,3119,3121],{"id":3120},"reference","Reference",[1573,3123,3124,3132,3137,3142,3147],{},[1576,3125,3126,3128,3129,3131],{},[1553,3127,1191],{"href":1192},": what ",[1565,3130,2183],{}," does at each step, and the pull-request path",[1576,3133,3134,3136],{},[1553,3135,1130],{"href":1131},": the local Docker stack, the checkout pool and per-checkout test databases",[1576,3138,3139,3141],{},[1553,3140,1126],{"href":1127},": running a checkout against a cloud stage, migrations and data commands",[1576,3143,3144,3146],{},[1553,3145,1134],{"href":1135},": the demo organization, its logins and how to rebuild it",[1576,3148,3149,3151,3152,1725,3157,1595,3162],{},[1553,3150,1122],{"href":1123},": every flag of ",[1553,3153,3155],{"href":3154},"/developer-experience/intro/command-reference#ds-pool",[1565,3156,1751],{},[1553,3158,3160],{"href":3159},"/developer-experience/intro/command-reference#ds-work",[1565,3161,1754],{},[1553,3163,3165],{"href":3164},"/developer-experience/intro/command-reference#ds-verify",[1565,3166,3167],{},"ds verify",[1546,3169,3170,2873,3173],{},[1557,3171,3172],{},"Next:",[1553,3174,1094],{"href":1095},[3176,3177,3178],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":1762,"searchDepth":244,"depth":244,"links":3180},[3181,3182,3183,3184,3188,3189,3190,3194,3195,3196,3197,3198,3199],{"id":1603,"depth":244,"text":1604},{"id":1644,"depth":244,"text":1645},{"id":2041,"depth":244,"text":2042},{"id":2135,"depth":244,"text":2136,"children":3185},[3186,3187],{"id":2140,"depth":302,"text":2141},{"id":2198,"depth":302,"text":2199},{"id":2310,"depth":244,"text":2311},{"id":2531,"depth":244,"text":2532},{"id":2660,"depth":244,"text":2661,"children":3191},[3192,3193],{"id":2674,"depth":302,"text":2141},{"id":2699,"depth":302,"text":2199},{"id":2817,"depth":244,"text":2818},{"id":2855,"depth":244,"text":2856},{"id":2936,"depth":244,"text":2937},{"id":3018,"depth":244,"text":3019},{"id":3067,"depth":244,"text":3068},{"id":3120,"depth":244,"text":3121},"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.","md",null,{},true,{"title":1090,"description":3200},"Ll7drv11Vr1RW61cbNTQUu8NUbqIEkdkQslyzqltsbk",[3208,3210],{"title":1086,"path":1087,"stem":1088,"description":3209,"children":-1},"Turn a piece of work into a DevStride plan the delivery loop can build one item at a time: how work is organized here, dependency links, delivery profiles, and the planning commands.",{"title":1094,"path":1095,"stem":1096,"description":3211,"children":-1},"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.",1791593687729]