[{"data":1,"prerenderedAt":4242},["ShallowReactive",2],{"navigation_docs":3,"-developer-experience-guide-troubleshooting":1532,"-developer-experience-guide-troubleshooting-surround":4237},[4,237,583,622,882,972,1060,1194,1528],{"title":5,"path":6,"stem":7,"children":8,"page":84},"Getting Started","/getting-started","01.getting-started",[9,15,226,231],{"title":10,"path":11,"stem":12,"children":13},"Creating Your Account","/getting-started/creating-your-account","01.getting-started/00.creating-your-account/index",[14],{"title":10,"path":11,"stem":12},{"title":16,"order":17,"path":18,"stem":19,"children":20,"page":84},"Admin Onboarding: Getting Started",1,"/getting-started/admin-onboarding-getting-started","01.getting-started/01.admin-onboarding-getting-started",[21,25,29,33,40,44,51,85,134,147,158,162,175,179,188,205,213,219],{"title":22,"path":23,"stem":24},"Setting the Stage: How Predictability becomes Reality in DevStride","/getting-started/admin-onboarding-getting-started/setting-the-stage","01.getting-started/01.admin-onboarding-getting-started/01.setting-the-stage",{"title":26,"path":27,"stem":28},"Admin Onboarding - Getting Started","/getting-started/admin-onboarding-getting-started/admin-onboarding-guide","01.getting-started/01.admin-onboarding-getting-started/02.admin-onboarding-guide",{"title":30,"path":31,"stem":32},"Basic Terms","/getting-started/admin-onboarding-getting-started/basic-terms","01.getting-started/01.admin-onboarding-getting-started/03.basic-terms",{"title":34,"path":35,"stem":36,"children":37},"Setting Up Users and Teams","/getting-started/admin-onboarding-getting-started/setting-up-users-and-teams","01.getting-started/01.admin-onboarding-getting-started/04.setting-up-users-and-teams/index",[38],{"title":39,"path":35,"stem":36},"Admin Onboarding - Setting up Users and Teams",{"title":41,"path":42,"stem":43},"Admin Onboarding - Configuring Your Work Model","/getting-started/admin-onboarding-getting-started/configuring-your-work-model","01.getting-started/01.admin-onboarding-getting-started/05.configuring-your-work-model",{"title":45,"path":46,"stem":47,"children":48},"Map Value: WorkStreams","/getting-started/admin-onboarding-getting-started/map-value-workstreams","01.getting-started/01.admin-onboarding-getting-started/06.map-value-workstreams/index",[49],{"title":50,"path":46,"stem":47},"Admin Onboarding: Understanding Workstreams",{"title":52,"path":53,"stem":54,"children":55,"page":84},"Items","/getting-started/admin-onboarding-getting-started/items","01.getting-started/01.admin-onboarding-getting-started/07.items",[56,60,67,73,80],{"title":57,"path":58,"stem":59},"Setting up Your Item Type Hierarchy","/getting-started/admin-onboarding-getting-started/items/setting-up-item-type-hierarchy","01.getting-started/01.admin-onboarding-getting-started/07.items/01.setting-up-item-type-hierarchy",{"title":61,"path":62,"stem":63,"children":64},"Items: Setting Up Custom Fields","/getting-started/admin-onboarding-getting-started/items/setting-up-custom-fields","01.getting-started/01.admin-onboarding-getting-started/07.items/02.setting-up-custom-fields/index",[65],{"title":66,"path":62,"stem":63},"Admin Onboarding - Setting up Custom Fields",{"title":68,"path":69,"stem":70,"children":71},"Admin Onboarding - Setting up Tags","/getting-started/admin-onboarding-getting-started/items/setting-up-tags","01.getting-started/01.admin-onboarding-getting-started/07.items/03.setting-up-tags/index",[72],{"title":68,"path":69,"stem":70},{"title":74,"path":75,"stem":76,"children":77},"Items: Creating and Managing Forms","/getting-started/admin-onboarding-getting-started/items/creating-and-managing-forms","01.getting-started/01.admin-onboarding-getting-started/07.items/04.creating-and-managing-forms/index",[78],{"title":79,"path":75,"stem":76},"Admin Onboarding - Creating and Managing Forms",{"title":81,"path":82,"stem":83},"Create Items with AI","/getting-started/admin-onboarding-getting-started/items/create-items-with-ai","01.getting-started/01.admin-onboarding-getting-started/07.items/05.create-items-with-ai",false,{"title":86,"path":87,"stem":88,"children":89,"page":84},"Item Workspace Tour","/getting-started/admin-onboarding-getting-started/item-workspace-tour","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour",[90,94,98,102,106,110,114,118,122,126,130],{"title":91,"path":92,"stem":93},"Admin Onboarding - Item Workspace Header","/getting-started/admin-onboarding-getting-started/item-workspace-tour/header","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/01.header",{"title":95,"path":96,"stem":97},"Admin Onboarding - Item Workspace Tabs","/getting-started/admin-onboarding-getting-started/item-workspace-tour/tabs","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/02.tabs",{"title":99,"path":100,"stem":101},"Item Workspace Quick Links","/getting-started/admin-onboarding-getting-started/item-workspace-tour/quick-links","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/03.quick-links",{"title":103,"path":104,"stem":105},"Admin Onboarding - Item Workspace - Right Bar: Team through Status","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-team-through-status","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/04.right-bar-team-through-status",{"title":107,"path":108,"stem":109},"Admin Onboarding - Item Workspace - Right Bar: Point Estimates","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-point-estimates","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/05.right-bar-point-estimates",{"title":111,"path":112,"stem":113},"Admin Onboarding - Item Workspace - Right Bar: Time Estimates","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-time-estimates","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/06.right-bar-time-estimates",{"title":115,"path":116,"stem":117},"Admin Onboarding - Item Workspace -Right Bar: Best Practice time estimates","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-best-practice-time-estimates","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/07.right-bar-best-practice-time-estimates",{"title":119,"path":120,"stem":121},"Admin Onboarding - Item Workspace - Right Bar: Time Spent","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-time-spent","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/08.right-bar-time-spent",{"title":123,"path":124,"stem":125},"Admin Onboarding - Item Workspace - Right Bar: Priority","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-priority","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/09.right-bar-priority",{"title":127,"path":128,"stem":129},"Admin Onboarding - Item Workspace - Right Bar: Start Dates and Due Dates","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-start-dates-and-due-dates","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/10.right-bar-start-dates-and-due-dates",{"title":131,"path":132,"stem":133},"Admin Onboarding - Item Workspace - Right Bar: Progress Tracking","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-progress-tracking","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/11.right-bar-progress-tracking",{"title":135,"path":136,"stem":137,"children":138,"page":84},"Creating and Using Statuses","/getting-started/admin-onboarding-getting-started/creating-and-using-statuses","01.getting-started/01.admin-onboarding-getting-started/09.creating-and-using-statuses",[139,143],{"title":140,"path":141,"stem":142},"Admin Onboarding - Setting Up Workflow Statuses","/getting-started/admin-onboarding-getting-started/creating-and-using-statuses/setting-up-workflow-statuses","01.getting-started/01.admin-onboarding-getting-started/09.creating-and-using-statuses/01.setting-up-workflow-statuses",{"title":144,"path":145,"stem":146},"Admin Onboarding - Create Custom Status Collections","/getting-started/admin-onboarding-getting-started/creating-and-using-statuses/create-custom-status-collections","01.getting-started/01.admin-onboarding-getting-started/09.creating-and-using-statuses/02.create-custom-status-collections",{"title":148,"path":149,"stem":150,"children":151},"Populating and Managing WorkStreams","/getting-started/admin-onboarding-getting-started/populating-and-managing-workstreams","01.getting-started/01.admin-onboarding-getting-started/10.populating-and-managing-workstreams/index",[152,154],{"title":153,"path":149,"stem":150},"Admin Onboarding - Populating and Managing Workstreams",{"title":155,"path":156,"stem":157},"Import Templates","/getting-started/admin-onboarding-getting-started/populating-and-managing-workstreams/import-templates","01.getting-started/01.admin-onboarding-getting-started/10.populating-and-managing-workstreams/01.import-templates",{"title":159,"path":160,"stem":161},"Boards: Managing Workflow and Statuses","/getting-started/admin-onboarding-getting-started/boards-managing-workflow-and-statuses","01.getting-started/01.admin-onboarding-getting-started/11.boards-managing-workflow-and-statuses",{"title":163,"path":164,"stem":165,"children":166,"page":84},"Creating Cadences","/getting-started/admin-onboarding-getting-started/creating-cadences","01.getting-started/01.admin-onboarding-getting-started/12.creating-cadences",[167,171],{"title":168,"path":169,"stem":170},"Admin Onboarding - Organizing the When: Understanding Planning Cadences","/getting-started/admin-onboarding-getting-started/creating-cadences/understanding-planning-cadences","01.getting-started/01.admin-onboarding-getting-started/12.creating-cadences/01.understanding-planning-cadences",{"title":172,"path":173,"stem":174},"Admin Onboarding - Setting Up Cadences and Timeboxes","/getting-started/admin-onboarding-getting-started/creating-cadences/setting-up-cadences-and-timeboxes","01.getting-started/01.admin-onboarding-getting-started/12.creating-cadences/02.setting-up-cadences-and-timeboxes",{"title":176,"path":177,"stem":178},"Track Progress - Gantt Charts","/getting-started/admin-onboarding-getting-started/track-progress-gantt-charts","01.getting-started/01.admin-onboarding-getting-started/13.track-progress-gantt-charts",{"title":180,"path":181,"stem":182,"children":183,"page":84},"Using AI in DevStride","/getting-started/admin-onboarding-getting-started/using-ai-in-devstride","01.getting-started/01.admin-onboarding-getting-started/14.using-ai-in-devstride",[184],{"title":185,"path":186,"stem":187},"Creating Items with AI","/getting-started/admin-onboarding-getting-started/using-ai-in-devstride/create-items-with-ai","01.getting-started/01.admin-onboarding-getting-started/14.using-ai-in-devstride/01.create-items-with-ai",{"title":189,"path":190,"stem":191,"children":192,"page":84},"More on Permissions","/getting-started/admin-onboarding-getting-started/permissions","01.getting-started/01.admin-onboarding-getting-started/15.permissions",[193,197,201],{"title":194,"path":195,"stem":196},"Understanding Permissions","/getting-started/admin-onboarding-getting-started/permissions/understanding-permissions","01.getting-started/01.admin-onboarding-getting-started/15.permissions/01.understanding-permissions",{"title":198,"path":199,"stem":200},"Roles & Permissions","/getting-started/admin-onboarding-getting-started/permissions/roles-and-permissions","01.getting-started/01.admin-onboarding-getting-started/15.permissions/02.roles-and-permissions",{"title":202,"path":203,"stem":204},"Sharing & Access","/getting-started/admin-onboarding-getting-started/permissions/sharing-and-access","01.getting-started/01.admin-onboarding-getting-started/15.permissions/03.sharing-and-access",{"title":206,"path":207,"stem":208,"children":209,"page":84},"API Keys","/getting-started/admin-onboarding-getting-started/api-keys","01.getting-started/01.admin-onboarding-getting-started/16.api-keys",[210],{"title":206,"path":211,"stem":212},"/getting-started/admin-onboarding-getting-started/api-keys/api-keys","01.getting-started/01.admin-onboarding-getting-started/16.api-keys/01.api-keys",{"title":214,"path":215,"stem":216,"children":217},"Pulling it all together: Planned Value to Delivery","/getting-started/admin-onboarding-getting-started/overall-flow-and-best-practices","01.getting-started/01.admin-onboarding-getting-started/17.overall-flow-and-best-practices/index",[218],{"title":214,"path":215,"stem":216},{"title":220,"path":221,"stem":222,"children":223},"Best Practices for Project Management in DevStride","/getting-started/admin-onboarding-getting-started/best-practices-for-project-management","01.getting-started/01.admin-onboarding-getting-started/18.best-practices-for-project-management/index",[224],{"title":225,"path":221,"stem":222},"Handling incomplete items from Sprint to Sprint",{"title":30,"path":227,"stem":228,"children":229},"/getting-started/basic-terms","01.getting-started/02.basic-terms/index",[230],{"title":30,"path":227,"stem":228},{"title":232,"path":233,"stem":234,"children":235},"Keyboard Shortcuts","/getting-started/keyboard-shortcuts","01.getting-started/03.keyboard-shortcuts/index",[236],{"title":232,"path":233,"stem":234},{"title":238,"path":239,"stem":240,"children":241,"page":84},"Major Modules","/major-modules","02.major-modules",[242,300,354,375,441,502,530],{"title":243,"order":244,"path":245,"stem":246,"children":247,"page":84},"Map Value: Workstreams and Work Items",2,"/major-modules/workstreams-and-work-items","02.major-modules/01.workstreams-and-work-items",[248,252,256,259,263,267,271,275,278],{"title":249,"path":250,"stem":251},"Creating Items","/major-modules/workstreams-and-work-items/creating-work-items","02.major-modules/01.workstreams-and-work-items/01.creating-work-items",{"title":253,"path":254,"stem":255},"The Items Table","/major-modules/workstreams-and-work-items/manage-items-table","02.major-modules/01.workstreams-and-work-items/02.manage-items-table",{"title":185,"path":257,"stem":258},"/major-modules/workstreams-and-work-items/ai-item-creation","02.major-modules/01.workstreams-and-work-items/03.ai-item-creation",{"title":260,"path":261,"stem":262},"Shared Lists","/major-modules/workstreams-and-work-items/published-lists","02.major-modules/01.workstreams-and-work-items/04.published-lists",{"title":264,"path":265,"stem":266},"Using the Map","/major-modules/workstreams-and-work-items/using-the-map","02.major-modules/01.workstreams-and-work-items/05.using-the-map",{"title":268,"path":269,"stem":270},"Dependency Graph","/major-modules/workstreams-and-work-items/dependency-graph","02.major-modules/01.workstreams-and-work-items/06.dependency-graph",{"title":272,"path":273,"stem":274},"Workstream & Item Permissions","/major-modules/workstreams-and-work-items/workstream-and-item-permissions","02.major-modules/01.workstreams-and-work-items/07.workstream-and-item-permissions",{"title":155,"path":276,"stem":277},"/major-modules/workstreams-and-work-items/import-templates","02.major-modules/01.workstreams-and-work-items/08.import-templates",{"title":279,"order":280,"path":281,"stem":282,"children":283,"page":84},"Workspace Capabilities",8,"/major-modules/workstreams-and-work-items/workspace-capabilities","02.major-modules/01.workstreams-and-work-items/09.workspace-capabilities",[284,288,292,296],{"title":285,"path":286,"stem":287},"Explore the Workspace","/major-modules/workstreams-and-work-items/workspace-capabilities/explore-the-workspace","02.major-modules/01.workstreams-and-work-items/09.workspace-capabilities/01.explore-the-workspace",{"title":289,"path":290,"stem":291},"Workspace Editor & Collaboration","/major-modules/workstreams-and-work-items/workspace-capabilities/workspace-sidebar","02.major-modules/01.workstreams-and-work-items/09.workspace-capabilities/02.workspace-sidebar",{"title":293,"path":294,"stem":295},"Themes & Appearance","/major-modules/workstreams-and-work-items/workspace-capabilities/themes-and-appearance","02.major-modules/01.workstreams-and-work-items/09.workspace-capabilities/03.themes-and-appearance",{"title":297,"path":298,"stem":299},"Getting Help & Support","/major-modules/workstreams-and-work-items/workspace-capabilities/getting-help-and-support","02.major-modules/01.workstreams-and-work-items/09.workspace-capabilities/04.getting-help-and-support",{"title":301,"order":302,"path":303,"stem":304,"children":305,"page":84},"Plan Delivery: Boards",3,"/major-modules/boards","02.major-modules/02.boards",[306,310,314,318,322,326,330,334,338,342,346,350],{"title":307,"path":308,"stem":309},"How DevStride manages the When: Perpetual vs. Cycle-based Boards","/major-modules/boards/how-devstride-manages-the-when","02.major-modules/02.boards/01.how-devstride-manages-the-when",{"title":311,"path":312,"stem":313},"Working Group Folders: Organizing the Who of the work","/major-modules/boards/working-group-folders","02.major-modules/02.boards/02.working-group-folders",{"title":315,"path":316,"stem":317},"Understanding Board Views","/major-modules/boards/understanding-board-views","02.major-modules/02.boards/03.understanding-board-views",{"title":319,"path":320,"stem":321},"Import Stories and Epics into Boards","/major-modules/boards/import-stories-and-epics-into-boards","02.major-modules/02.boards/04.import-stories-and-epics-into-boards",{"title":323,"path":324,"stem":325},"Adding a Folder","/major-modules/boards/adding-a-folder","02.major-modules/02.boards/05.adding-a-folder",{"title":327,"path":328,"stem":329},"Manage and Edit Dependencies","/major-modules/boards/manage-and-edit-dependencies","02.major-modules/02.boards/06.manage-and-edit-dependencies",{"title":331,"path":332,"stem":333},"Creating Subfolders in DevStride","/major-modules/boards/creating-subfolders-in-devstride","02.major-modules/02.boards/07.creating-subfolders-in-devstride",{"title":335,"path":336,"stem":337},"Setting up and Using Perpetual Boards","/major-modules/boards/setting-up-and-using-perpetual-boards","02.major-modules/02.boards/08.setting-up-and-using-perpetual-boards",{"title":339,"path":340,"stem":341},"Using Cycle Boards","/major-modules/boards/using-cycle-boards","02.major-modules/02.boards/09.using-cycle-boards",{"title":343,"path":344,"stem":345},"Track and Move Work with Board Views","/major-modules/boards/track-and-move-work-with-board-views","02.major-modules/02.boards/10.track-and-move-work-with-board-views",{"title":347,"path":348,"stem":349},"Boards and WIP Limiters","/major-modules/boards/boards-and-wip-limiters","02.major-modules/02.boards/11.boards-and-wip-limiters",{"title":351,"path":352,"stem":353},"Board & Folder Permissions","/major-modules/boards/board-and-folder-permissions","02.major-modules/02.boards/12.board-and-folder-permissions",{"title":355,"path":356,"stem":357,"children":358,"page":84},"Track Progress: Gantts","/major-modules/track-progress-gantts","02.major-modules/03.track-progress-gantts",[359,363,367,371],{"title":360,"path":361,"stem":362},"Track Progress: Setting Up Gantt Charts","/major-modules/track-progress-gantts/setting-up-gantt-charts","02.major-modules/03.track-progress-gantts/01.setting-up-gantt-charts",{"title":364,"path":365,"stem":366},"Viewing Gantt Charts","/major-modules/track-progress-gantts/viewing-gantt-charts","02.major-modules/03.track-progress-gantts/02.viewing-gantt-charts",{"title":368,"path":369,"stem":370},"Using Gantt Charts: Navigating the timeline","/major-modules/track-progress-gantts/navigating-the-timeline","02.major-modules/03.track-progress-gantts/03.navigating-the-timeline",{"title":372,"path":373,"stem":374},"Using Gantt Charts: Navigating the table","/major-modules/track-progress-gantts/navigating-the-table","02.major-modules/03.track-progress-gantts/04.navigating-the-table",{"title":376,"order":377,"path":378,"stem":379,"children":380,"page":84},"Measure Performance: Reports",4,"/major-modules/measure-performance-reports","02.major-modules/04.measure-performance-reports",[381,385,389,393,397,401,405,409,413,417,421,425,429,433,437],{"title":382,"path":383,"stem":384},"Reports Overview","/major-modules/measure-performance-reports/viewing-optimization","02.major-modules/04.measure-performance-reports/01.viewing-optimization",{"title":386,"path":387,"stem":388},"Using AI for powerful reports","/major-modules/measure-performance-reports/using-ai-for-powerful-reports","02.major-modules/04.measure-performance-reports/02.using-ai-for-powerful-reports",{"title":390,"path":391,"stem":392},"Report Customization Options","/major-modules/measure-performance-reports/report-filters-and-options","02.major-modules/04.measure-performance-reports/03.report-filters-and-options",{"title":394,"path":395,"stem":396},"Report: Current Progress","/major-modules/measure-performance-reports/current-progress","02.major-modules/04.measure-performance-reports/04.current-progress",{"title":398,"path":399,"stem":400},"Report: Trending Progress","/major-modules/measure-performance-reports/trending-progress","02.major-modules/04.measure-performance-reports/05.trending-progress",{"title":402,"path":403,"stem":404},"Report: Cycle Time","/major-modules/measure-performance-reports/cycle-time","02.major-modules/04.measure-performance-reports/06.cycle-time",{"title":406,"path":407,"stem":408},"Report: Throughput","/major-modules/measure-performance-reports/throughput","02.major-modules/04.measure-performance-reports/07.throughput",{"title":410,"path":411,"stem":412},"Report: Cumulative Flow","/major-modules/measure-performance-reports/cumulative-flow","02.major-modules/04.measure-performance-reports/08.cumulative-flow",{"title":414,"path":415,"stem":416},"Report: Velocity","/major-modules/measure-performance-reports/velocity","02.major-modules/04.measure-performance-reports/09.velocity",{"title":418,"path":419,"stem":420},"Report: Burn Up","/major-modules/measure-performance-reports/burn-up","02.major-modules/04.measure-performance-reports/10.burn-up",{"title":422,"path":423,"stem":424},"Report: Burn Down","/major-modules/measure-performance-reports/burn-down","02.major-modules/04.measure-performance-reports/11.burn-down",{"title":426,"path":427,"stem":428},"Report: User Time Completed","/major-modules/measure-performance-reports/user-time-completed","02.major-modules/04.measure-performance-reports/12.user-time-completed",{"title":430,"path":431,"stem":432},"Report: Churn","/major-modules/measure-performance-reports/churn","02.major-modules/04.measure-performance-reports/13.churn",{"title":434,"path":435,"stem":436},"Report: Time Allocation Matrix","/major-modules/measure-performance-reports/time-allocation-matrix","02.major-modules/04.measure-performance-reports/14.time-allocation-matrix",{"title":438,"path":439,"stem":440},"Report: Cycle Carry-Forward","/major-modules/measure-performance-reports/cycle-carry-forward","02.major-modules/04.measure-performance-reports/15.cycle-carry-forward",{"title":442,"order":280,"path":443,"stem":444,"children":445,"page":84},"Service Desk","/major-modules/service-desk","02.major-modules/05.service-desk",[446,450,454,458,462,466,470,474,478,482,486,490,494,498],{"title":447,"path":448,"stem":449},"Overview","/major-modules/service-desk/overview","02.major-modules/05.service-desk/01.overview",{"title":451,"path":452,"stem":453},"Enabling Service Desk","/major-modules/service-desk/enabling-service-desk","02.major-modules/05.service-desk/02.enabling-service-desk",{"title":455,"path":456,"stem":457},"Email Channels & Setup","/major-modules/service-desk/email-channels","02.major-modules/05.service-desk/03.email-channels",{"title":459,"path":460,"stem":461},"Requesters & Companies","/major-modules/service-desk/requesters-and-companies","02.major-modules/05.service-desk/04.requesters-and-companies",{"title":463,"path":464,"stem":465},"Customer Support Portal","/major-modules/service-desk/customer-support-portal","02.major-modules/05.service-desk/05.customer-support-portal",{"title":467,"path":468,"stem":469},"Working a Ticket","/major-modules/service-desk/working-a-ticket","02.major-modules/05.service-desk/06.working-a-ticket",{"title":471,"path":472,"stem":473},"Request Forms","/major-modules/service-desk/request-forms","02.major-modules/05.service-desk/07.request-forms",{"title":475,"path":476,"stem":477},"The Suspended Queue","/major-modules/service-desk/suspended-messages","02.major-modules/05.service-desk/08.suspended-messages",{"title":479,"path":480,"stem":481},"Finding & Filtering Tickets","/major-modules/service-desk/finding-and-filtering-tickets","02.major-modules/05.service-desk/09.finding-and-filtering-tickets",{"title":483,"path":484,"stem":485},"Permissions","/major-modules/service-desk/permissions","02.major-modules/05.service-desk/10.permissions",{"title":487,"path":488,"stem":489},"Service Level Agreements (SLA)","/major-modules/service-desk/sla","02.major-modules/05.service-desk/10.sla",{"title":491,"path":492,"stem":493},"Time-Based Ticket Automations","/major-modules/service-desk/time-based-automations","02.major-modules/05.service-desk/11.time-based-automations",{"title":495,"path":496,"stem":497},"Reports","/major-modules/service-desk/reports","02.major-modules/05.service-desk/12.reports",{"title":499,"path":500,"stem":501},"How email replies find their ticket","/major-modules/service-desk/how-email-replies-find-their-ticket","02.major-modules/05.service-desk/13.how-email-replies-find-their-ticket",{"title":503,"path":504,"stem":505,"children":506,"page":84},"Templates","/major-modules/templates","02.major-modules/06.templates",[507,510,514,518,522,526],{"title":447,"path":508,"stem":509},"/major-modules/templates/overview","02.major-modules/06.templates/01.overview",{"title":511,"path":512,"stem":513},"Creating a template","/major-modules/templates/creating-a-template","02.major-modules/06.templates/02.creating-a-template",{"title":515,"path":516,"stem":517},"Variables","/major-modules/templates/variables","02.major-modules/06.templates/03.variables",{"title":519,"path":520,"stem":521},"Applying a template","/major-modules/templates/applying-a-template","02.major-modules/06.templates/04.applying-a-template",{"title":523,"path":524,"stem":525},"Sharing templates","/major-modules/templates/sharing-templates","02.major-modules/06.templates/05.sharing-templates",{"title":527,"path":528,"stem":529},"Template health","/major-modules/templates/template-health","02.major-modules/06.templates/06.template-health",{"title":531,"path":532,"stem":533,"children":534,"page":84},"Knowledge Base","/major-modules/knowledge-base","02.major-modules/07.knowledge-base",[535,539,543,547,551,555,559,563,567,571,575,579],{"title":536,"path":537,"stem":538},"Knowledge Base Overview","/major-modules/knowledge-base/overview","02.major-modules/07.knowledge-base/01.overview",{"title":540,"path":541,"stem":542},"Write and Publish Your First Article","/major-modules/knowledge-base/write-and-publish-your-first-article","02.major-modules/07.knowledge-base/02.write-and-publish-your-first-article",{"title":544,"path":545,"stem":546},"Organizing with Categories","/major-modules/knowledge-base/organizing-with-categories","02.major-modules/07.knowledge-base/03.organizing-with-categories",{"title":548,"path":549,"stem":550},"Who Can See an Article","/major-modules/knowledge-base/who-can-see-an-article","02.major-modules/07.knowledge-base/04.who-can-see-an-article",{"title":552,"path":553,"stem":554},"The Article Lifecycle and URLs","/major-modules/knowledge-base/article-lifecycle-and-urls","02.major-modules/07.knowledge-base/05.article-lifecycle-and-urls",{"title":556,"path":557,"stem":558},"Article History and Restore","/major-modules/knowledge-base/article-history-and-restore","02.major-modules/07.knowledge-base/06.article-history-and-restore",{"title":560,"path":561,"stem":562},"Searching and Browsing","/major-modules/knowledge-base/searching-and-browsing","02.major-modules/07.knowledge-base/07.searching-and-browsing",{"title":564,"path":565,"stem":566},"The Customer Help Center","/major-modules/knowledge-base/the-customer-help-center","02.major-modules/07.knowledge-base/08.the-customer-help-center",{"title":568,"path":569,"stem":570},"Sharing Articles and Categories","/major-modules/knowledge-base/sharing-articles-and-categories","02.major-modules/07.knowledge-base/09.sharing-articles-and-categories",{"title":572,"path":573,"stem":574},"Article Review Comments","/major-modules/knowledge-base/article-review-comments","02.major-modules/07.knowledge-base/10.article-review-comments",{"title":576,"path":577,"stem":578},"Knowledge Base Permissions","/major-modules/knowledge-base/knowledge-base-permissions","02.major-modules/07.knowledge-base/11.knowledge-base-permissions",{"title":580,"path":581,"stem":582},"Customer Comments on Articles","/major-modules/knowledge-base/customer-comments-on-articles","02.major-modules/07.knowledge-base/12.customer-comments-on-articles",{"title":584,"path":585,"stem":586,"children":587,"page":84},"Personal Workspace","/personal-workspace","03.personal-workspace",[588,594,608,619],{"title":589,"path":590,"stem":591,"children":592},"My Work","/personal-workspace/my-work","03.personal-workspace/01.my-work/index",[593],{"title":589,"path":590,"stem":591},{"title":595,"order":596,"path":597,"stem":598,"children":599,"page":84},"Notifications",7,"/personal-workspace/notifications","03.personal-workspace/02.notifications",[600,604],{"title":601,"path":602,"stem":603},"Notifications in DevStride","/personal-workspace/notifications/overview-of-notification-options","03.personal-workspace/02.notifications/01.overview-of-notification-options",{"title":605,"path":606,"stem":607},"Customizing Notification Settings","/personal-workspace/notifications/customizing-notification-settings-for-individuals-and-teams","03.personal-workspace/02.notifications/02.customizing-notification-settings-for-individuals-and-teams",{"title":609,"path":610,"stem":611,"children":612,"page":84},"My Account","/personal-workspace/my-account","03.personal-workspace/03.my-account",[613,616],{"title":447,"path":614,"stem":615},"/personal-workspace/my-account/overview","03.personal-workspace/03.my-account/01.overview",{"title":206,"path":617,"stem":618},"/personal-workspace/my-account/api-keys","03.personal-workspace/03.my-account/02.api-keys",{"title":232,"path":620,"stem":621},"/personal-workspace/keyboard-shortcuts","03.personal-workspace/04.keyboard-shortcuts",{"title":623,"path":624,"stem":625,"children":626,"page":84},"Workspace Administration","/workspace-administration","04.workspace-administration",[627,647,657,790,803],{"title":628,"path":629,"stem":630,"children":631,"page":84},"Manage Items Module","/workspace-administration/manage-items","04.workspace-administration/01.manage-items",[632,635,639,643],{"title":447,"path":633,"stem":634},"/workspace-administration/manage-items/overview","04.workspace-administration/01.manage-items/01.overview",{"title":636,"path":637,"stem":638},"Finding & Filtering Items","/workspace-administration/manage-items/finding-and-filtering-items","04.workspace-administration/01.manage-items/02.finding-and-filtering-items",{"title":640,"path":641,"stem":642},"Creating & Sharing Views","/workspace-administration/manage-items/creating-and-sharing-views","04.workspace-administration/01.manage-items/03.creating-and-sharing-views",{"title":644,"path":645,"stem":646},"Item Hierarchy","/workspace-administration/manage-items/item-hierarchy","04.workspace-administration/01.manage-items/04.item-hierarchy",{"title":648,"order":649,"path":650,"stem":651,"children":652,"page":84},"Automate Workflows",5,"/workspace-administration/automations","04.workspace-administration/02.automations",[653],{"title":654,"path":655,"stem":656},"Setting Up Basic Automations","/workspace-administration/automations/setting-up-basic-automations","04.workspace-administration/02.automations/01.setting-up-basic-automations",{"title":658,"order":659,"path":660,"stem":661,"children":662,"page":84},"Configure Settings",6,"/workspace-administration/settings","04.workspace-administration/03.settings",[663,696,733,742,786],{"title":664,"path":665,"stem":666,"children":667,"page":84},"Organization","/workspace-administration/settings/organization","04.workspace-administration/03.settings/01.organization",[668,672,676,680,684,688,692],{"title":669,"path":670,"stem":671},"Org Configuration","/workspace-administration/settings/organization/org-profile","04.workspace-administration/03.settings/01.organization/01.org-profile",{"title":673,"path":674,"stem":675},"Users, Roles & MFA","/workspace-administration/settings/organization/users-roles-and-mfa","04.workspace-administration/03.settings/01.organization/02.users-roles-and-mfa",{"title":677,"path":678,"stem":679},"Time Tracking Lock & Soft Close","/workspace-administration/settings/organization/time-tracking-lock","04.workspace-administration/03.settings/01.organization/03.time-tracking-lock",{"title":681,"path":682,"stem":683},"Training Sandboxes","/workspace-administration/settings/organization/training-sandboxes","04.workspace-administration/03.settings/01.organization/04.training-sandboxes",{"title":685,"path":686,"stem":687},"Personas","/workspace-administration/settings/organization/personas","04.workspace-administration/03.settings/01.organization/05.personas",{"title":689,"path":690,"stem":691},"Teams","/workspace-administration/settings/organization/teams","04.workspace-administration/03.settings/01.organization/06.teams",{"title":693,"path":694,"stem":695},"Import History","/workspace-administration/settings/organization/import-history","04.workspace-administration/03.settings/01.organization/07.import-history",{"title":697,"path":698,"stem":699,"children":700,"page":84},"Data Model","/workspace-administration/settings/data-model","04.workspace-administration/03.settings/02.data-model",[701,705,709,713,717,721,725,729],{"title":702,"path":703,"stem":704},"Cadences","/workspace-administration/settings/data-model/cadences","04.workspace-administration/03.settings/02.data-model/01.cadences",{"title":706,"path":707,"stem":708},"Item Types","/workspace-administration/settings/data-model/item-types","04.workspace-administration/03.settings/02.data-model/02.item-types",{"title":710,"path":711,"stem":712},"Tags","/workspace-administration/settings/data-model/tags","04.workspace-administration/03.settings/02.data-model/03.tags",{"title":714,"path":715,"stem":716},"Custom Fields","/workspace-administration/settings/data-model/custom-fields","04.workspace-administration/03.settings/02.data-model/04.custom-fields",{"title":718,"path":719,"stem":720},"Priority Levels","/workspace-administration/settings/data-model/priority-levels","04.workspace-administration/03.settings/02.data-model/05.priority-levels",{"title":722,"path":723,"stem":724},"Effort Points and Time Estimation","/workspace-administration/settings/data-model/effort-points-and-time-estimation","04.workspace-administration/03.settings/02.data-model/06.effort-points-and-time-estimation",{"title":726,"path":727,"stem":728},"Statuses and WIP Limiters","/workspace-administration/settings/data-model/statuses-and-wip-limiters","04.workspace-administration/03.settings/02.data-model/07.statuses-and-wip-limiters",{"title":730,"path":731,"stem":732},"Customizing the Item Drawer","/workspace-administration/settings/data-model/customizing-the-item-drawer","04.workspace-administration/03.settings/02.data-model/08.customizing-the-item-drawer",{"title":734,"path":735,"stem":736,"children":737,"page":84},"Forms","/workspace-administration/settings/forms","04.workspace-administration/03.settings/03.forms",[738],{"title":739,"path":740,"stem":741},"Item Request Forms","/workspace-administration/settings/forms/item-request-forms","04.workspace-administration/03.settings/03.forms/item-request-forms",{"title":743,"path":744,"stem":745,"children":746,"page":84},"Integrations","/workspace-administration/settings/integrations","04.workspace-administration/03.settings/04.integrations",[747,751,755,759,763,766,770,774,778,782],{"title":748,"path":749,"stem":750},"GitHub","/workspace-administration/settings/integrations/github","04.workspace-administration/03.settings/04.integrations/01.github",{"title":752,"path":753,"stem":754},"Connect AI & the MCP Server","/workspace-administration/settings/integrations/connect-ai-and-mcp","04.workspace-administration/03.settings/04.integrations/02.connect-ai-and-mcp",{"title":756,"path":757,"stem":758},"Database Access for BI Tools","/workspace-administration/settings/integrations/database-access","04.workspace-administration/03.settings/04.integrations/03.database-access",{"title":760,"path":761,"stem":762},"Jira Integration","/workspace-administration/settings/integrations/jira","04.workspace-administration/03.settings/04.integrations/04.jira",{"title":206,"path":764,"stem":765},"/workspace-administration/settings/integrations/api-keys","04.workspace-administration/03.settings/04.integrations/05.api-keys",{"title":767,"path":768,"stem":769},"Enterprise SSO","/workspace-administration/settings/integrations/enterprise-sso","04.workspace-administration/03.settings/04.integrations/06.enterprise-sso",{"title":771,"path":772,"stem":773},"Microsoft Teams","/workspace-administration/settings/integrations/microsoft-teams","04.workspace-administration/03.settings/04.integrations/07.microsoft-teams",{"title":775,"path":776,"stem":777},"Slack","/workspace-administration/settings/integrations/slack","04.workspace-administration/03.settings/04.integrations/08.slack",{"title":779,"path":780,"stem":781},"Connected Apps","/workspace-administration/settings/integrations/connected-apps","04.workspace-administration/03.settings/04.integrations/09.connected-apps",{"title":783,"path":784,"stem":785},"Azure DevOps Integration","/workspace-administration/settings/integrations/azure-devops","04.workspace-administration/03.settings/04.integrations/10.azure-devops",{"title":787,"path":788,"stem":789},"Subscription & Billing","/workspace-administration/settings/subscription-and-billing","04.workspace-administration/03.settings/05.subscription-and-billing",{"title":483,"path":791,"stem":792,"children":793,"page":84},"/workspace-administration/permissions","04.workspace-administration/04.permissions",[794,797,800],{"title":194,"path":795,"stem":796},"/workspace-administration/permissions/understanding-permissions","04.workspace-administration/04.permissions/01.understanding-permissions",{"title":198,"path":798,"stem":799},"/workspace-administration/permissions/roles-and-permissions","04.workspace-administration/04.permissions/02.roles-and-permissions",{"title":202,"path":801,"stem":802},"/workspace-administration/permissions/sharing-and-access","04.workspace-administration/04.permissions/03.sharing-and-access",{"title":804,"order":805,"path":806,"stem":807,"children":808,"page":84},"Filters",10,"/workspace-administration/filters","04.workspace-administration/05.filters",[809,812,815,819,823,827,831,834,837,841,861],{"title":589,"path":810,"stem":811},"/workspace-administration/filters/my-work","04.workspace-administration/05.filters/01.my-work",{"title":595,"path":813,"stem":814},"/workspace-administration/filters/notifications","04.workspace-administration/05.filters/02.notifications",{"title":816,"path":817,"stem":818},"Workstreams","/workspace-administration/filters/workstreams","04.workspace-administration/05.filters/03.workstreams",{"title":820,"path":821,"stem":822},"Cycles","/workspace-administration/filters/cycles","04.workspace-administration/05.filters/04.cycles",{"title":824,"path":825,"stem":826},"Boards","/workspace-administration/filters/boards","04.workspace-administration/05.filters/05.boards",{"title":828,"path":829,"stem":830},"Gantt","/workspace-administration/filters/gantt","04.workspace-administration/05.filters/06.gantt",{"title":52,"path":832,"stem":833},"/workspace-administration/filters/items","04.workspace-administration/05.filters/07.items",{"title":495,"path":835,"stem":836},"/workspace-administration/filters/reports","04.workspace-administration/05.filters/08.reports",{"title":838,"path":839,"stem":840},"Automations","/workspace-administration/filters/automations","04.workspace-administration/05.filters/09.automations",{"title":842,"path":843,"stem":844,"children":845,"page":84},"Sort ","/workspace-administration/filters/sort","04.workspace-administration/05.filters/10.sort",[846,849,852,855,858],{"title":589,"path":847,"stem":848},"/workspace-administration/filters/sort/my-work","04.workspace-administration/05.filters/10.sort/01.my-work",{"title":816,"path":850,"stem":851},"/workspace-administration/filters/sort/workstreams","04.workspace-administration/05.filters/10.sort/02.workstreams",{"title":820,"path":853,"stem":854},"/workspace-administration/filters/sort/cycles","04.workspace-administration/05.filters/10.sort/03.cycles",{"title":824,"path":856,"stem":857},"/workspace-administration/filters/sort/boards","04.workspace-administration/05.filters/10.sort/04.boards",{"title":52,"path":859,"stem":860},"/workspace-administration/filters/sort/items","04.workspace-administration/05.filters/10.sort/05.items",{"title":862,"path":863,"stem":864,"children":865,"page":84},"Options","/workspace-administration/filters/options","04.workspace-administration/05.filters/11.options",[866,869,872,876,879],{"title":589,"path":867,"stem":868},"/workspace-administration/filters/options/my-work","04.workspace-administration/05.filters/11.options/01.my-work",{"title":816,"path":870,"stem":871},"/workspace-administration/filters/options/workstreams","04.workspace-administration/05.filters/11.options/02.workstreams",{"title":873,"path":874,"stem":875},"Cycle","/workspace-administration/filters/options/cycle","04.workspace-administration/05.filters/11.options/03.cycle",{"title":824,"path":877,"stem":878},"/workspace-administration/filters/options/boards","04.workspace-administration/05.filters/11.options/04.boards",{"title":52,"path":880,"stem":881},"/workspace-administration/filters/options/items","04.workspace-administration/05.filters/11.options/05.items",{"title":883,"path":884,"stem":885,"children":886,"page":84},"Planning Concepts & Use Cases","/planning-concepts-and-use-cases","05.planning-concepts-and-use-cases",[887,943],{"title":888,"order":889,"path":890,"stem":891,"children":892,"page":84},"Understanding Project Planning Tools",9,"/planning-concepts-and-use-cases/project-planning-tools","05.planning-concepts-and-use-cases/01.project-planning-tools",[893,926],{"title":894,"path":895,"stem":896,"children":897,"page":84},"Gantt Charts","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts",[898,902,906,910,914,918,922],{"title":899,"path":900,"stem":901},"Gantt Charts Basics","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/gantt-charts-basics","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/01.gantt-charts-basics",{"title":903,"path":904,"stem":905},"Create New Gantt","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/create-new-gantt","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/02.create-new-gantt",{"title":907,"path":908,"stem":909},"Add to Gantt","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/add-to-gantt","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/03.add-to-gantt",{"title":911,"path":912,"stem":913},"Gantt Charts Toolbar","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/gantt-charts-toolbar","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/04.gantt-charts-toolbar",{"title":915,"path":916,"stem":917},"Scenario Planning","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/scenario-planning","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/05.scenario-planning",{"title":919,"path":920,"stem":921},"Tips for Effective Gantt Chart Planning","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/tips-for-effective-gantt-chart-planning","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/06.tips-for-effective-gantt-chart-planning",{"title":923,"path":924,"stem":925},"Link Mode","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/link-mode","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/07.link-mode",{"title":927,"path":928,"stem":929,"children":930,"page":84},"Kanban Boards","/planning-concepts-and-use-cases/project-planning-tools/kanban-boards","05.planning-concepts-and-use-cases/01.project-planning-tools/kanban-boards",[931,935,939],{"title":932,"path":933,"stem":934},"Setting Up Your Kanban Board","/planning-concepts-and-use-cases/project-planning-tools/kanban-boards/setting-up-your-kanban-board","05.planning-concepts-and-use-cases/01.project-planning-tools/kanban-boards/01.setting-up-your-kanban-board",{"title":936,"path":937,"stem":938},"Using Kanban for Workflow Visualization","/planning-concepts-and-use-cases/project-planning-tools/kanban-boards/using-kanban-for-workflow-visualization","05.planning-concepts-and-use-cases/01.project-planning-tools/kanban-boards/02.using-kanban-for-workflow-visualization",{"title":940,"path":941,"stem":942},"Kanban Best Practices","/planning-concepts-and-use-cases/project-planning-tools/kanban-boards/kanban-best-practices","05.planning-concepts-and-use-cases/01.project-planning-tools/kanban-boards/03.kanban-best-practices",{"title":944,"order":945,"path":946,"stem":947,"children":948,"page":84},"Use Cases",12,"/planning-concepts-and-use-cases/use-cases","05.planning-concepts-and-use-cases/02.use-cases",[949,952,956,960,964,968],{"title":894,"path":950,"stem":951},"/planning-concepts-and-use-cases/use-cases/gantt-charts","05.planning-concepts-and-use-cases/02.use-cases/01.gantt-charts",{"title":953,"path":954,"stem":955},"Plan a Sprint","/planning-concepts-and-use-cases/use-cases/plan-a-sprint","05.planning-concepts-and-use-cases/02.use-cases/02.plan-a-sprint",{"title":957,"path":958,"stem":959},"Conduct a Standup","/planning-concepts-and-use-cases/use-cases/conduct-a-standup","05.planning-concepts-and-use-cases/02.use-cases/03.conduct-a-standup",{"title":961,"path":962,"stem":963},"Manage Cadences","/planning-concepts-and-use-cases/use-cases/manage-cadences","05.planning-concepts-and-use-cases/02.use-cases/04.manage-cadences",{"title":965,"path":966,"stem":967},"Customizing Item Types","/planning-concepts-and-use-cases/use-cases/customizing-item-types","05.planning-concepts-and-use-cases/02.use-cases/05.customizing-item-types",{"title":969,"path":970,"stem":971},"Backlog Refinement","/planning-concepts-and-use-cases/use-cases/backlog-refinement","05.planning-concepts-and-use-cases/02.use-cases/06.backlog-refinement",{"title":973,"path":974,"stem":975,"children":976,"page":84},"Integrations & Extensibility","/integrations-and-extensibility","06.integrations-and-extensibility",[977,1002],{"title":978,"path":979,"stem":980,"children":981,"page":84},"DevStride MCP Server","/integrations-and-extensibility/devstride-mcp-server","06.integrations-and-extensibility/01.devstride-mcp-server",[982,986,990,994,998],{"title":983,"path":984,"stem":985},"What Is the DevStride MCP Server?","/integrations-and-extensibility/devstride-mcp-server/what-is-the-devstride-mcp-server","06.integrations-and-extensibility/01.devstride-mcp-server/01.what-is-the-devstride-mcp-server",{"title":987,"path":988,"stem":989},"Setting Up Your Connection","/integrations-and-extensibility/devstride-mcp-server/setting-up-your-connection","06.integrations-and-extensibility/01.devstride-mcp-server/02.setting-up-your-connection",{"title":991,"path":992,"stem":993},"Doing Real Work with the DevStride MCP Server","/integrations-and-extensibility/devstride-mcp-server/doing-real-work-with-the-devstride-mcp-server","06.integrations-and-extensibility/01.devstride-mcp-server/03.doing-real-work-with-the-devstride-mcp-server",{"title":995,"path":996,"stem":997},"Best Practices & Tips","/integrations-and-extensibility/devstride-mcp-server/best-practices-and-tips","06.integrations-and-extensibility/01.devstride-mcp-server/04.best-practices-and-tips",{"title":999,"path":1000,"stem":1001},"Tool Reference","/integrations-and-extensibility/devstride-mcp-server/tool-reference","06.integrations-and-extensibility/01.devstride-mcp-server/05.tool-reference",{"title":1003,"path":1004,"stem":1005,"children":1006},"Plugins","/integrations-and-extensibility/plugins","06.integrations-and-extensibility/02.plugins/index",[1007,1009],{"title":1008,"path":1004,"stem":1005},"Getting Started With Plugins",{"title":1010,"path":1011,"stem":1012,"children":1013,"page":84},"Weekly Logs","/integrations-and-extensibility/plugins/weekly-logs","06.integrations-and-extensibility/02.plugins/01.weekly-logs",[1014,1017,1021,1025,1029,1033,1037,1041,1044,1048,1052,1056],{"title":447,"path":1015,"stem":1016},"/integrations-and-extensibility/plugins/weekly-logs/overview","06.integrations-and-extensibility/02.plugins/01.weekly-logs/01.overview",{"title":1018,"path":1019,"stem":1020},"Grid","/integrations-and-extensibility/plugins/weekly-logs/grid","06.integrations-and-extensibility/02.plugins/01.weekly-logs/02.grid",{"title":1022,"path":1023,"stem":1024},"Views","/integrations-and-extensibility/plugins/weekly-logs/views","06.integrations-and-extensibility/02.plugins/01.weekly-logs/03.views",{"title":1026,"path":1027,"stem":1028},"Navigation","/integrations-and-extensibility/plugins/weekly-logs/navigation","06.integrations-and-extensibility/02.plugins/01.weekly-logs/04.navigation",{"title":1030,"path":1031,"stem":1032},"Proposed Items","/integrations-and-extensibility/plugins/weekly-logs/proposed-items","06.integrations-and-extensibility/02.plugins/01.weekly-logs/05.proposed-items",{"title":1034,"path":1035,"stem":1036},"Search","/integrations-and-extensibility/plugins/weekly-logs/search","06.integrations-and-extensibility/02.plugins/01.weekly-logs/06.search",{"title":1038,"path":1039,"stem":1040},"Time Logging","/integrations-and-extensibility/plugins/weekly-logs/logging","06.integrations-and-extensibility/02.plugins/01.weekly-logs/07.logging",{"title":804,"path":1042,"stem":1043},"/integrations-and-extensibility/plugins/weekly-logs/filtering","06.integrations-and-extensibility/02.plugins/01.weekly-logs/08.filtering",{"title":1045,"path":1046,"stem":1047},"Team Logs","/integrations-and-extensibility/plugins/weekly-logs/team-logs","06.integrations-and-extensibility/02.plugins/01.weekly-logs/09.team-logs",{"title":1049,"path":1050,"stem":1051},"Organization Switch","/integrations-and-extensibility/plugins/weekly-logs/organization-switch","06.integrations-and-extensibility/02.plugins/01.weekly-logs/10.organization-switch",{"title":1053,"path":1054,"stem":1055},"Export","/integrations-and-extensibility/plugins/weekly-logs/export","06.integrations-and-extensibility/02.plugins/01.weekly-logs/11.export",{"title":1057,"path":1058,"stem":1059},"Meetings","/integrations-and-extensibility/plugins/weekly-logs/meetings","06.integrations-and-extensibility/02.plugins/01.weekly-logs/12.meetings",{"title":1061,"path":1062,"stem":1063,"children":1064,"page":84},"Developer Experience","/developer-experience","07.developer-experience",[1065,1101,1157],{"title":1066,"path":1067,"stem":1068,"children":1069,"page":84},"Developer Guide","/developer-experience/guide","07.developer-experience/00.guide",[1070,1073,1077,1081,1085,1089,1093,1097],{"title":447,"path":1071,"stem":1072},"/developer-experience/guide/overview","07.developer-experience/00.guide/01.overview",{"title":1074,"path":1075,"stem":1076},"Set up your machine","/developer-experience/guide/set-up-your-machine","07.developer-experience/00.guide/02.set-up-your-machine",{"title":1078,"path":1079,"stem":1080},"Credentials and access","/developer-experience/guide/credentials-and-access","07.developer-experience/00.guide/03.credentials-and-access",{"title":1082,"path":1083,"stem":1084},"Plan work","/developer-experience/guide/plan-work","07.developer-experience/00.guide/04.plan-work",{"title":1086,"path":1087,"stem":1088},"Develop","/developer-experience/guide/develop","07.developer-experience/00.guide/05.develop",{"title":1090,"path":1091,"stem":1092},"Release","/developer-experience/guide/release","07.developer-experience/00.guide/06.release",{"title":1094,"path":1095,"stem":1096},"Troubleshooting","/developer-experience/guide/troubleshooting","07.developer-experience/00.guide/07.troubleshooting",{"title":1098,"path":1099,"stem":1100},"For admins: access, keys and stages","/developer-experience/guide/for-admins","07.developer-experience/00.guide/08.for-admins",{"title":1102,"path":1103,"stem":1104,"children":1105,"page":84},"Intro","/developer-experience/intro","07.developer-experience/01.intro",[1106,1110,1113,1117,1121,1125,1129,1133,1137,1141,1145,1149,1153],{"title":1107,"path":1108,"stem":1109},"How DevStride Is Built, and Why","/developer-experience/intro/how-we-build","07.developer-experience/01.intro/00.how-we-build",{"title":5,"path":1111,"stem":1112},"/developer-experience/intro/getting-started","07.developer-experience/01.intro/01.getting-started",{"title":1114,"path":1115,"stem":1116},"Introduction to the ds CLI","/developer-experience/intro/introduction","07.developer-experience/01.intro/02.introduction",{"title":1118,"path":1119,"stem":1120},"Command Reference","/developer-experience/intro/command-reference","07.developer-experience/01.intro/03.command-reference",{"title":1122,"path":1123,"stem":1124},"Local Development","/developer-experience/intro/local-development","07.developer-experience/01.intro/04.local-development",{"title":1126,"path":1127,"stem":1128},"Dockerized Worktree Development","/developer-experience/intro/dockerized-worktree-development","07.developer-experience/01.intro/05.dockerized-worktree-development",{"title":1130,"path":1131,"stem":1132},"Golden Dataset","/developer-experience/intro/golden-dataset","07.developer-experience/01.intro/06.golden-dataset",{"title":1134,"path":1135,"stem":1136},"Deployment","/developer-experience/intro/deployment","07.developer-experience/01.intro/07.deployment",{"title":1138,"path":1139,"stem":1140},"API Development","/developer-experience/intro/api-development","07.developer-experience/01.intro/08.api-development",{"title":1142,"path":1143,"stem":1144},"Stripe Integration","/developer-experience/intro/stripe-integration","07.developer-experience/01.intro/09.stripe-integration",{"title":1146,"path":1147,"stem":1148},"Maintenance & Codebase Checks","/developer-experience/intro/maintenance-and-codebase-checks","07.developer-experience/01.intro/10.maintenance-and-codebase-checks",{"title":1150,"path":1151,"stem":1152},"AI Development","/developer-experience/intro/ai-development","07.developer-experience/01.intro/11.ai-development",{"title":1154,"path":1155,"stem":1156},"Data Conversion Utilities","/developer-experience/intro/data-conversion-utilities","07.developer-experience/01.intro/12.data-conversion-utilities",{"title":1158,"path":1159,"stem":1160,"children":1161,"page":84},"Agentic Skills","/developer-experience/agentic-skills","07.developer-experience/02.agentic-skills",[1162,1166,1170,1174,1178,1182,1186,1190],{"title":1163,"path":1164,"stem":1165},"The Idea Behind the Loop","/developer-experience/agentic-skills/the-idea-behind-the-loop","07.developer-experience/02.agentic-skills/00.the-idea-behind-the-loop",{"title":1167,"path":1168,"stem":1169},"DevStride for Claude Code","/developer-experience/agentic-skills/claude-code-skills-overview","07.developer-experience/02.agentic-skills/01.claude-code-skills-overview",{"title":1171,"path":1172,"stem":1173},"Getting the Skills","/developer-experience/agentic-skills/getting-the-skills","07.developer-experience/02.agentic-skills/02.getting-the-skills",{"title":1175,"path":1176,"stem":1177},"Guided Setup","/developer-experience/agentic-skills/setup-guide","07.developer-experience/02.agentic-skills/03.setup-guide",{"title":1179,"path":1180,"stem":1181},"Skill Audit","/developer-experience/agentic-skills/skill-audit","07.developer-experience/02.agentic-skills/04.skill-audit",{"title":1183,"path":1184,"stem":1185},"The Planning Loop","/developer-experience/agentic-skills/claude-skills-planning-loop","07.developer-experience/02.agentic-skills/05.claude-skills-planning-loop",{"title":1187,"path":1188,"stem":1189},"The Delivery Loop","/developer-experience/agentic-skills/claude-skills-delivery-loop","07.developer-experience/02.agentic-skills/06.claude-skills-delivery-loop",{"title":1191,"path":1192,"stem":1193},"Configuration Reference","/developer-experience/agentic-skills/configuration-reference","07.developer-experience/02.agentic-skills/07.configuration-reference",{"title":1195,"order":1196,"path":1197,"stem":1198,"children":1199,"page":84},"Release Notes",11,"/release-notes","08.release-notes",[1200,1204,1208,1212,1216,1220,1224,1228,1232,1236,1240,1244,1248,1252,1256,1260,1264,1268,1272,1276,1280,1284,1288,1292,1296,1300,1304,1308,1312,1316,1320,1324,1328,1332,1336,1340,1344,1348,1352,1356,1360,1364,1368,1372,1376,1380,1384,1388,1392,1396,1400,1404,1408,1412,1416,1420,1424,1428,1432,1436,1440,1444,1448,1452,1456,1460,1464,1468,1472,1476,1480,1484,1488,1492,1496,1500,1504,1508,1512,1516,1520,1524],{"title":1201,"path":1202,"stem":1203},"2026-10-03","/release-notes/2026-10-03","08.release-notes/82.2026-10-03",{"title":1205,"path":1206,"stem":1207},"2026-09-17","/release-notes/2026-09-17","08.release-notes/81.2026-09-17",{"title":1209,"path":1210,"stem":1211},"2026-09-13","/release-notes/2026-09-13","08.release-notes/80.2026-09-13",{"title":1213,"path":1214,"stem":1215},"2026-09-11","/release-notes/2026-09-11","08.release-notes/79.2026-09-11",{"title":1217,"path":1218,"stem":1219},"2026-09-01","/release-notes/2026-09-01","08.release-notes/78.2026-09-01",{"title":1221,"path":1222,"stem":1223},"2026-08-29","/release-notes/2026-08-29","08.release-notes/77.2026-08-29",{"title":1225,"path":1226,"stem":1227},"2026-08-27","/release-notes/2026-08-27","08.release-notes/76.2026-08-27",{"title":1229,"path":1230,"stem":1231},"2026-08-25","/release-notes/2026-08-25","08.release-notes/75.2026-08-25",{"title":1233,"path":1234,"stem":1235},"2026-08-22","/release-notes/2026-08-22","08.release-notes/74.2026-08-22",{"title":1237,"path":1238,"stem":1239},"2026-08-21","/release-notes/2026-08-21","08.release-notes/73.2026-08-21",{"title":1241,"path":1242,"stem":1243},"2026-08-17","/release-notes/2026-08-17","08.release-notes/72.2026-08-17",{"title":1245,"path":1246,"stem":1247},"2026-08-16","/release-notes/2026-08-16","08.release-notes/71.2026-08-16",{"title":1249,"path":1250,"stem":1251},"2026-08-14","/release-notes/2026-08-14","08.release-notes/70.2026-08-14",{"title":1253,"path":1254,"stem":1255},"2026-08-11","/release-notes/2026-08-11","08.release-notes/69.2026-08-11",{"title":1257,"path":1258,"stem":1259},"2026-08-07","/release-notes/2026-08-07","08.release-notes/68.2026-08-07",{"title":1261,"path":1262,"stem":1263},"2026-08-05","/release-notes/2026-08-05","08.release-notes/67.2026-08-05",{"title":1265,"path":1266,"stem":1267},"2026-08-01","/release-notes/2026-08-01","08.release-notes/66.2026-08-01",{"title":1269,"path":1270,"stem":1271},"2026-07-30","/release-notes/2026-07-30","08.release-notes/65.2026-07-30",{"title":1273,"path":1274,"stem":1275},"2026-07-28","/release-notes/2026-07-28","08.release-notes/64.2026-07-28",{"title":1277,"path":1278,"stem":1279},"2026-07-22","/release-notes/2026-07-22","08.release-notes/63.2026-07-22",{"title":1281,"path":1282,"stem":1283},"2026-07-19","/release-notes/2026-07-19","08.release-notes/62.2026-07-19",{"title":1285,"path":1286,"stem":1287},"2026-07-17","/release-notes/2026-07-17","08.release-notes/61.2026-07-17",{"title":1289,"path":1290,"stem":1291},"2026-07-15","/release-notes/2026-07-15","08.release-notes/60.2026-07-15",{"title":1293,"path":1294,"stem":1295},"2026-07-12","/release-notes/2026-07-12","08.release-notes/59.2026-07-12",{"title":1297,"path":1298,"stem":1299},"2026-07-11","/release-notes/2026-07-11","08.release-notes/58.2026-07-11",{"title":1301,"path":1302,"stem":1303},"2026-07-09","/release-notes/2026-07-09","08.release-notes/57.2026-07-09",{"title":1305,"path":1306,"stem":1307},"2026-07-07","/release-notes/2026-07-07","08.release-notes/56.2026-07-07",{"title":1309,"path":1310,"stem":1311},"2026-07-06","/release-notes/2026-07-06","08.release-notes/55.2026-07-06",{"title":1313,"path":1314,"stem":1315},"2026-07-02","/release-notes/2026-07-02","08.release-notes/54.2026-07-02",{"title":1317,"path":1318,"stem":1319},"2026-06-30","/release-notes/2026-06-30","08.release-notes/53.2026-06-30",{"title":1321,"path":1322,"stem":1323},"2026-06-17","/release-notes/2026-06-17","08.release-notes/52.2026-06-17",{"title":1325,"path":1326,"stem":1327},"2026-06-12","/release-notes/2026-06-12","08.release-notes/51.2026-06-12",{"title":1329,"path":1330,"stem":1331},"2026-05-29","/release-notes/2026-05-29","08.release-notes/50.2026-05-29",{"title":1333,"path":1334,"stem":1335},"2026-05-13","/release-notes/2026-05-13","08.release-notes/49.2026-05-13",{"title":1337,"path":1338,"stem":1339},"2026-04-29","/release-notes/2026-04-29","08.release-notes/48.2026-04-29",{"title":1341,"path":1342,"stem":1343},"2026-04-14","/release-notes/2026-04-14","08.release-notes/47.2026-04-14",{"title":1345,"path":1346,"stem":1347},"2026-04-09","/release-notes/2026-04-09","08.release-notes/46.2026-04-09",{"title":1349,"path":1350,"stem":1351},"2026-03-13","/release-notes/2026-03-13","08.release-notes/45.2026-03-13",{"title":1353,"path":1354,"stem":1355},"2026-02-16","/release-notes/2026-02-16","08.release-notes/44.2026-02-16",{"title":1357,"path":1358,"stem":1359},"2026-02-06","/release-notes/2026-02-06","08.release-notes/43.2026-02-06",{"title":1361,"path":1362,"stem":1363},"2026-01-30","/release-notes/2026-01-30","08.release-notes/42.2026-01-30",{"title":1365,"path":1366,"stem":1367},"2026-01-19","/release-notes/2026-01-19","08.release-notes/41.2026-01-19",{"title":1369,"path":1370,"stem":1371},"2025-09-27","/release-notes/2025-09-27","08.release-notes/40.2025-09-27",{"title":1373,"path":1374,"stem":1375},"2025-07-07","/release-notes/2025-07-07","08.release-notes/39.2025-07-07",{"title":1377,"path":1378,"stem":1379},"2025-06-16","/release-notes/2025-06-16","08.release-notes/38.2025-06-16",{"title":1381,"path":1382,"stem":1383},"2025-05-29","/release-notes/2025-05-29","08.release-notes/37.2025-05-29",{"title":1385,"path":1386,"stem":1387},"2025-04-28","/release-notes/2025-04-28","08.release-notes/36.2025-04-28",{"title":1389,"path":1390,"stem":1391},"2025-03-24","/release-notes/2025-03-24","08.release-notes/35.2025-03-24",{"title":1393,"path":1394,"stem":1395},"2024-12-20","/release-notes/2024-12-20","08.release-notes/34.2024-12-20",{"title":1397,"path":1398,"stem":1399},"2024-10-21","/release-notes/2024-10-21","08.release-notes/33.2024-10-21",{"title":1401,"path":1402,"stem":1403},"2024-10-11","/release-notes/2024-10-11","08.release-notes/32.2024-10-11",{"title":1405,"path":1406,"stem":1407},"2024-09-11","/release-notes/2024-09-11","08.release-notes/31.2024-09-11",{"title":1409,"path":1410,"stem":1411},"2024-08-28","/release-notes/2024-08-28","08.release-notes/30.2024-08-28",{"title":1413,"path":1414,"stem":1415},"2024-07-10","/release-notes/2024-07-10","08.release-notes/29.2024-07-10",{"title":1417,"path":1418,"stem":1419},"2024-06-24","/release-notes/2024-06-24","08.release-notes/28.2024-06-24",{"title":1421,"path":1422,"stem":1423},"2024-05-15","/release-notes/2024-05-15","08.release-notes/27.2024-05-15",{"title":1425,"path":1426,"stem":1427},"2024-04-29","/release-notes/2024-04-29","08.release-notes/26.2024-04-29",{"title":1429,"path":1430,"stem":1431},"2024-03-18","/release-notes/2024-03-18","08.release-notes/25.2024-03-18",{"title":1433,"path":1434,"stem":1435},"2024-03-04","/release-notes/2024-03-04","08.release-notes/24.2024-03-04",{"title":1437,"path":1438,"stem":1439},"2024-02-26","/release-notes/2024-02-26","08.release-notes/23.2024-02-26",{"title":1441,"path":1442,"stem":1443},"2024-01-17","/release-notes/2024-01-17","08.release-notes/22.2024-01-17",{"title":1445,"path":1446,"stem":1447},"2023-12-27","/release-notes/2023-12-27","08.release-notes/21.2023-12-27",{"title":1449,"path":1450,"stem":1451},"2023-11-08","/release-notes/2023-11-08","08.release-notes/20.2023-11-08",{"title":1453,"path":1454,"stem":1455},"2023-10-10","/release-notes/2023-10-10","08.release-notes/19.2023-10-10",{"title":1457,"path":1458,"stem":1459},"2023-09-27","/release-notes/2023-09-27","08.release-notes/18.2023-09-27",{"title":1461,"path":1462,"stem":1463},"2023-09-18","/release-notes/2023-09-18","08.release-notes/17.2023-09-18",{"title":1465,"path":1466,"stem":1467},"2023-09-04","/release-notes/2023-09-04","08.release-notes/16.2023-09-04",{"title":1469,"path":1470,"stem":1471},"2023-08-04","/release-notes/2023-08-04","08.release-notes/15.2023-08-04",{"title":1473,"path":1474,"stem":1475},"2023-07-11","/release-notes/2023-07-11","08.release-notes/14.2023-07-11",{"title":1477,"path":1478,"stem":1479},"2023-06-21","/release-notes/2023-06-21","08.release-notes/13.2023-06-21",{"title":1481,"path":1482,"stem":1483},"2023-05-24","/release-notes/2023-05-24","08.release-notes/12.2023-05-24",{"title":1485,"path":1486,"stem":1487},"2023-04-24","/release-notes/2023-04-24","08.release-notes/11.2023-04-24",{"title":1489,"path":1490,"stem":1491},"2023-04-20","/release-notes/2023-04-20","08.release-notes/10.2023-04-20",{"title":1493,"path":1494,"stem":1495},"2023-03-20","/release-notes/2023-03-20","08.release-notes/09.2023-03-20",{"title":1497,"path":1498,"stem":1499},"2023-02-28","/release-notes/2023-02-28","08.release-notes/08.2023-02-28",{"title":1501,"path":1502,"stem":1503},"2023-01-17","/release-notes/2023-01-17","08.release-notes/07.2023-01-17",{"title":1505,"path":1506,"stem":1507},"2023-01-23","/release-notes/2023-01-23","08.release-notes/06.2023-01-23",{"title":1509,"path":1510,"stem":1511},"2022-12-21","/release-notes/2022-12-21","08.release-notes/05.2022-12-21",{"title":1513,"path":1514,"stem":1515},"2022-12-06","/release-notes/2022-12-06","08.release-notes/04.2022-12-06",{"title":1517,"path":1518,"stem":1519},"2022-11-15","/release-notes/2022-11-15","08.release-notes/03.2022-11-15",{"title":1521,"path":1522,"stem":1523},"2022-11-02","/release-notes/2022-11-02","08.release-notes/02.2022-11-02",{"title":1525,"path":1526,"stem":1527},"2022-10-17","/release-notes/2022-10-17","08.release-notes/01.2022-10-17",{"title":1529,"path":1530,"target":1531},"API","https://api-docs.devstride.com/","_blank",{"id":1533,"title":1094,"body":1534,"description":4230,"extension":4231,"links":4232,"meta":4233,"navigation":4234,"path":1095,"seo":4235,"stem":1096,"__hash__":4236},"docs/07.developer-experience/00.guide/07.troubleshooting.md",{"type":1535,"value":1536,"toc":4209},"minimark",[1537,1541,1558,1587,1705,1709,1714,1751,1756,1763,1772,1777,1850,1857,1871,1874,1907,1910,1914,1953,1957,1960,1964,2000,2003,2007,2070,2074,2101,2104,2107,2111,2197,2233,2246,2249,2253,2310,2314,2317,2328,2337,2433,2444,2464,2509,2525,2528,2532,2564,2568,2571,2578,2582,2685,2691,2846,2853,2858,2862,2901,2905,2915,2919,2925,2928,2932,2976,2980,2986,2990,3007,3013,3016,3020,3032,3040,3044,3050,3075,3079,3099,3110,3113,3117,3124,3130,3134,3137,3141,3164,3167,3171,3186,3212,3216,3219,3223,3275,3278,3282,3297,3301,3307,3311,3314,3352,3355,3359,3371,3375,3378,3382,3397,3400,3404,3422,3426,3429,3449,3453,3584,3587,3619,3635,3642,3646,3689,3693,3699,3703,3728,3731,3735,3750,3754,3776,3780,3856,3865,3868,3877,4029,4032,4048,4189,4197,4205],[1538,1539,1094],"h1",{"id":1540},"troubleshooting",[1542,1543,1544,1545,1549,1550,1553,1554,1557],"p",{},"On this page you find the problem you are looking at, learn why it happens, and fix it. Each entry has the same three parts: ",[1546,1547,1548],"strong",{},"what you see",", ",[1546,1551,1552],{},"why",", and ",[1546,1555,1556],{},"what to do",".",[1542,1559,1560,1567,1568,1571,1572,1575,1576,1579,1580,1583,1584,1557],{},[1546,1561,1562,1563,1557],{},"Start with ",[1564,1565,1566],"code",{},"ds machine ready"," It proves the machine works, one line per proof, and every failing line names its fix. A full run takes a few minutes, because it starts apps and runs a landing check; ",[1564,1569,1570],{},"ds machine ready --quick"," starts no app and calls no model. A line marked ",[1564,1573,1574],{},"held"," (another session or check was using what that proof needed), ",[1564,1577,1578],{},"you"," (a step only you can take) or ",[1564,1581,1582],{},"note"," never stops the verdict being ",[1546,1585,1586],{},"READY",[1588,1589,1590,1598,1604,1610,1616,1622,1632,1638,1644,1650,1656,1662,1668,1674,1687,1693,1699],"ul",{},[1591,1592,1593],"li",{},[1594,1595,1597],"a",{"href":1596},"#your-aws-sign-in-has-lapsed","Your AWS sign-in has lapsed",[1591,1599,1600],{},[1594,1601,1603],{"href":1602},"#docker-is-not-answering","Docker is not answering",[1591,1605,1606],{},[1594,1607,1609],{"href":1608},"#a-credential-is-missing","A credential is missing",[1591,1611,1612],{},[1594,1613,1615],{"href":1614},"#a-checkout-without-its-demo-data","A checkout without its demo data",[1591,1617,1618],{},[1594,1619,1621],{"href":1620},"#aws-refuses-the-agent-machine-identity","AWS refuses the agent machine identity",[1591,1623,1624],{},[1594,1625,1627,1628,1631],{"href":1626},"#another-ds-verify-run-is-going","Another ",[1564,1629,1630],{},"ds verify"," run is going",[1591,1633,1634],{},[1594,1635,1637],{"href":1636},"#a-stopped-setup-or-ready-run-left-a-checkout-reserved","A stopped setup or ready run left a checkout reserved",[1591,1639,1640],{},[1594,1641,1643],{"href":1642},"#setup-will-not-edit-your-shell-startup-file","Setup will not edit your shell startup file",[1591,1645,1646],{},[1594,1647,1649],{"href":1648},"#setup-stopped-a-new-terminal-would-run-another-node","Setup stopped: a new terminal would run another Node",[1591,1651,1652],{},[1594,1653,1655],{"href":1654},"#the-stage-step-is-blocked","The stage step is blocked",[1591,1657,1658],{},[1594,1659,1661],{"href":1660},"#your-stages-database-is-behind-your-code","Your stage's database is behind your code",[1591,1663,1664],{},[1594,1665,1667],{"href":1666},"#claude-in-chrome-is-offered-but-not-enabled","Claude in Chrome is offered but not enabled",[1591,1669,1670],{},[1594,1671,1673],{"href":1672},"#many-tests-time-out-at-once","Many tests time out at once",[1591,1675,1676],{},[1594,1677,1679,1682,1683,1686],{"href":1678},"#ds-pool-or-ds-work-says-you-do-not-hold-the-checkout",[1564,1680,1681],{},"ds pool"," or ",[1564,1684,1685],{},"ds work"," says you do not hold the checkout",[1591,1688,1689],{},[1594,1690,1692],{"href":1691},"#the-merge-guard-refused-a-command","The merge guard refused a command",[1591,1694,1695],{},[1594,1696,1698],{"href":1697},"#when-the-hourly-health-check-reports-a-problem","When the hourly health check reports a problem",[1591,1700,1701],{},[1594,1702,1704],{"href":1703},"#where-the-logs-are","Where the logs are",[1706,1707,1597],"h2",{"id":1708},"your-aws-sign-in-has-lapsed",[1542,1710,1711],{},[1546,1712,1713],{},"What you see",[1588,1715,1716,1723,1733,1745],{},[1591,1717,1718,1719,1722],{},"In a Claude Code or Codex session, the check that runs when a session starts prints one line saying the AWS session for your profile ",[1564,1720,1721],{},"is expired or missing",", with the command to run.",[1591,1724,1725,1726,1729,1730,1557],{},"A ",[1564,1727,1728],{},"ds"," command that needs AWS opens the sign-in in your browser when you run it at a terminal. From an agent's shell, where nobody can finish a sign-in, it stops instead and prints the command to run, ",[1564,1731,1732],{},"aws sso login --profile \u003Cprofile>",[1591,1734,1735,1737,1738,1741,1742,1557],{},[1564,1736,1566],{}," fails a line in its ",[1564,1739,1740],{},"aws"," group, ending ",[1564,1743,1744],{},"sign in: aws sso login --profile \u003Cprofile>",[1591,1746,1747,1750],{},[1564,1748,1749],{},"ds secrets pull"," warns that it could not refresh from AWS, and writes from its local copy instead.",[1542,1752,1753],{},[1546,1754,1755],{},"Why",[1542,1757,1758,1759,1762],{},"On a person's machine, setup writes a self-renewing AWS sign-in (the ",[1564,1760,1761],{},"sso-session"," form of an AWS profile). The AWS command line renews it by itself for as long as your AWS IAM Identity Center session lasts. When that session ends, you sign in once more.",[1542,1764,1765,1766,1769,1770,1557],{},"Agent machines never sign in: they use certificates instead, and a sign-in can never fix a refused certificate. If the message talks about a ",[1546,1767,1768],{},"machine identity",", go to ",[1594,1771,1621],{"href":1620},[1542,1773,1774],{},[1546,1775,1776],{},"What to do",[1778,1779,1780,1847],"ol",{},[1591,1781,1782,1783,1823,1826,1827,1830,1831,1834,1835,1838,1839,1842,1843,1846],{},"Sign in with the profile the message names:",[1784,1785,1790],"pre",{"className":1786,"code":1787,"language":1788,"meta":1789,"style":1789},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","aws sso login --profile \u003Cprofile>\n","bash","",[1564,1791,1792],{"__ignoreMap":1789},[1793,1794,1796,1799,1803,1806,1809,1813,1816,1820],"span",{"class":1795,"line":17},"line",[1793,1797,1740],{"class":1798},"sBMFI",[1793,1800,1802],{"class":1801},"sfazB"," sso",[1793,1804,1805],{"class":1801}," login",[1793,1807,1808],{"class":1801}," --profile",[1793,1810,1812],{"class":1811},"sMK4o"," \u003C",[1793,1814,1815],{"class":1801},"profil",[1793,1817,1819],{"class":1818},"sTEyZ","e",[1793,1821,1822],{"class":1811},">\n",[1824,1825],"br",{},"Setup's profile is ",[1564,1828,1829],{},"devstride-dev"," unless you already had one for the dev account, and setup's block in your shell startup file exports it as ",[1564,1832,1833],{},"DEVSTRIDE_DEV_PROFILE",", so ",[1564,1836,1837],{},"aws sso login --profile \"$DEVSTRIDE_DEV_PROFILE\""," also works. Inside a Claude Code session, type it with a leading ",[1564,1840,1841],{},"!"," (",[1564,1844,1845],{},"! aws sso login --profile \u003Cprofile>",") to run it from the prompt.",[1591,1848,1849],{},"Re-run whatever failed. Nothing retries it for you.",[1542,1851,1852,1853,1856],{},"Always use the command spelled out in full. Some machines have a shell helper called ",[1564,1854,1855],{},"sso","; it exists only where someone pasted it into their shell, and it is never the fix to give anyone.",[1542,1858,1859,1860,1549,1862,1864,1865,1867,1868,1870],{},"A lapsed sign-in blocks only what reaches AWS. The local Docker app, ",[1564,1861,1681],{},[1564,1863,1685],{}," and ",[1564,1866,1630],{}," need no sign-in, and ",[1564,1869,1749],{}," keeps writing from its local copy until you sign in again.",[1542,1872,1873],{},"Two cases a sign-in will not fix:",[1588,1875,1876,1898],{},[1591,1877,1878,1885,1886,1889,1890,1893,1894,1897],{},[1546,1879,1880,1881,1884],{},"The line says the profile ",[1564,1882,1883],{},"is not configured"," at all."," Run ",[1564,1887,1888],{},"./setup"," again: on a person's machine it writes the sign-in session and the dev profile to ",[1564,1891,1892],{},"~/.aws/config",". On an agent machine, run ",[1564,1895,1896],{},"./setup --agent \u003Cname>",", which enrols the machine and writes its profiles.",[1591,1899,1900,1903,1904,1906],{},[1546,1901,1902],{},"Your sign-in lapses about every eight hours."," Your profile is the older form that cannot renew itself. ",[1564,1905,1888],{}," names the one-line change; the repository's README, \"AWS SSO setup\", shows both forms.",[1706,1908,1603],{"id":1909},"docker-is-not-answering",[1542,1911,1912],{},[1546,1913,1713],{},[1588,1915,1916,1926,1934,1947],{},[1591,1917,1918,1919,1922,1923],{},"The local app does not load, and ",[1564,1920,1921],{},"ds pool status"," ends with ",[1564,1924,1925],{},"Docker is not reachable — containers not surveyed.",[1591,1927,1928,1930,1931],{},[1564,1929,1566],{}," fails a checkout's database line, ending ",[1564,1932,1933],{},"is Docker running?",[1591,1935,1936,1937,1939,1940,1943,1944,1557],{},"Tests and ",[1564,1938,1630],{}," cannot reach the test databases. ",[1564,1941,1942],{},"ds verify full"," says the test Postgres ",[1564,1945,1946],{},"is not accepting connections",[1591,1948,1949,1950,1557],{},"Setup waits for Docker Desktop, or blocks with ",[1564,1951,1952],{},"Docker has \u003Cn> CPUs and \u003Cx> GB; the backend tests need at least 4 CPUs and 8 GB — raise them in Docker Desktop: Settings, Resources",[1542,1954,1955],{},[1546,1956,1755],{},[1542,1958,1959],{},"Every checkout's app, its database and its test databases run in Docker. On a person's Mac, setup leaves Docker Desktop's own start-up settings as they are, so after a restart Docker may simply not be running. (On an agent machine, setup makes Docker Desktop start whenever someone signs in to the Mac.) The backend tests need at least 4 CPUs and 8 GB of memory given to Docker, which is why setup checks both.",[1542,1961,1962],{},[1546,1963,1776],{},[1778,1965,1966,1969,1990],{},[1591,1967,1968],{},"Open Docker Desktop and wait until it says it is running. If it shows a welcome screen or asks you to sign in, finish or close it: signing in to Docker is not needed.",[1591,1970,1971,1972,1975,1976,1979,1980,1682,1983,1986,1987,1557],{},"Start the apps again. ",[1564,1973,1974],{},"ds worktree up main"," starts ",[1564,1977,1978],{},"main","'s app. A ",[1564,1981,1982],{},"wt1",[1564,1984,1985],{},"wt2"," app starts when you take that checkout with ",[1564,1988,1989],{},"ds pool checkout",[1591,1991,1992,1993,1996,1997,1999],{},"If setup reported too few CPUs or too little memory: in Docker Desktop, open ",[1546,1994,1995],{},"Settings → Resources"," and give it at least 4 CPUs and 8 GB of memory. Run ",[1564,1998,1888],{}," again; it re-checks Docker's CPUs and memory.",[1706,2001,1609],{"id":2002},"a-credential-is-missing",[1542,2004,2005],{},[1546,2006,1713],{},[1588,2008,2009,2030,2042,2055],{},[1591,2010,2011,2012,1682,2015,2018,2019,1682,2022,2025,2026,2029],{},"A command refuses for want of a key. For example ",[1564,2013,2014],{},"ds seed",[1564,2016,2017],{},"ds neon"," says ",[1564,2020,2021],{},"SEED_TOKEN",[1564,2023,2024],{},"NEON_API_KEY"," ",[1564,2027,2028],{},"is not in the agent credentials file",", and names the file.",[1591,2031,2032,1737,2034,2037,2038,2041],{},[1564,2033,1566],{},[1564,2035,2036],{},"credentials"," group: a checkout's ",[1564,2039,2040],{},".env"," is missing keys the bundles deliver, or the agent credentials file lacks a DevStride key. Each line ends with what to run.",[1591,2043,2044,2045,2047,2048,2051,2052,1557],{},"In its ",[1564,2046,1740],{}," group, the ",[1564,2049,2050],{},"secrets"," line says nothing has been pulled yet, or that a bundle has a newer version: ",[1564,2053,2054],{},"run: ds secrets pull",[1591,2056,2057,2058,2060,2061,2064,2065,1864,2067,2069],{},"At the end of ",[1564,2059,1888],{},", under ",[1546,2062,2063],{},"When you can",", a note says ",[1564,2066,2021],{},[1564,2068,2024],{}," are not on this machine yet.",[1542,2071,2072],{},[1546,2073,1755],{},[1542,2075,2076,2077,2080,2081,2084,2085,2088,2089,2091,2092,2094,2095,2098,2099,1557],{},"Keys are never copied by hand. They live in three bundles in the dev AWS account's Secrets Manager: a ",[1546,2078,2079],{},"shared"," bundle every machine gets, one ",[1546,2082,2083],{},"machine"," bundle with a single machine's own stage settings, and an ",[1546,2086,2087],{},"agent"," bundle with the agents' own service keys. ",[1564,2090,1749],{}," writes the shared and machine bundles into every checkout's ",[1564,2093,2040],{},", and the agent bundle only into ",[1564,2096,2097],{},"~/.config/devstride/agent.env",", never into a ",[1564,2100,2040],{},[1542,2102,2103],{},"A key is missing for one of two reasons: this machine has not pulled since the key was added, or nobody has stored it yet.",[1542,2105,2106],{},"Today's decision (owner, 2026-10-05): the keys are shared, each with full access, to get everything working. Narrower access per person or per machine comes later.",[1542,2108,2109],{},[1546,2110,1776],{},[1778,2112,2113,2143,2155],{},[1591,2114,2115,2116,2118,2119,2134,2136,2137,2139,2140,2142],{},"Pull the latest keys. This needs a working AWS sign-in (see ",[1594,2117,1597],{"href":1596},"):",[1784,2120,2122],{"className":1786,"code":2121,"language":1788,"meta":1789,"style":1789},"ds secrets pull\n",[1564,2123,2124],{"__ignoreMap":1789},[1793,2125,2126,2128,2131],{"class":1795,"line":17},[1793,2127,1728],{"class":1798},[1793,2129,2130],{"class":1801}," secrets",[1793,2132,2133],{"class":1801}," pull\n",[1824,2135],{},"It rewrites every checkout's ",[1564,2138,2040],{}," completely, so never edit a ",[1564,2141,2040],{}," by hand: the next pull overwrites it.",[1591,2144,2145,2146,2148,2149,2151,2152,2154],{},"Prove it with ",[1564,2147,1566],{}," (or ",[1564,2150,1570],{},"). Each ",[1564,2153,2036],{}," line names whatever is still missing.",[1591,2156,2157,2158,2192,2194,2195,1557],{},"If the key is in no bundle yet, the owner creates it with the service, then stores it. The value goes in on stdin, so it never lands in shell history:",[1784,2159,2161],{"className":1786,"code":2160,"language":1788,"meta":1789,"style":1789},"pbpaste | ds secrets set agent \u003CKEY>\n",[1564,2162,2163],{"__ignoreMap":1789},[1793,2164,2165,2168,2171,2174,2176,2179,2182,2184,2187,2190],{"class":1795,"line":17},[1793,2166,2167],{"class":1798},"pbpaste",[1793,2169,2170],{"class":1811}," |",[1793,2172,2173],{"class":1798}," ds",[1793,2175,2130],{"class":1801},[1793,2177,2178],{"class":1801}," set",[1793,2180,2181],{"class":1801}," agent",[1793,2183,1812],{"class":1811},[1793,2185,2186],{"class":1801},"KE",[1793,2188,2189],{"class":1818},"Y",[1793,2191,1822],{"class":1811},[1824,2193],{},"Then every machine runs ",[1564,2196,1749],{},[1542,2198,2199,2025,2202,2204,2205,2208,2209,2204,2211,2213,2214,2218,2219,2221,2222,2225,2226,1682,2229,2232],{},[1546,2200,2201],{},"The Seed and Neon keys.",[1564,2203,2021],{}," (for ",[1564,2206,2207],{},"ds seed deploy",", which redeploys a chosen commit) and ",[1564,2210,2024],{},[1564,2212,2017],{},", which runs the command-line tool of Neon, our Postgres host) are created by an admin, in Seed's and Neon's organisation settings (",[1594,2215,2217],{"href":2216},"/developer-experience/guide/for-admins#the-teams-seed-and-neon-keys","For admins","). Until they exist, those two commands refuse. Your machine's AWS stage also waits on ",[1564,2220,2024],{},", so setup lists the stage under ",[1546,2223,2224],{},"Needs you"," until it arrives; nothing else waits on either key. Seed needs no key for ordinary deploys: a merge to ",[1564,2227,2228],{},"develop",[1564,2230,2231],{},"master"," deploys by itself.",[1542,2234,2235,2236,2238,2239,2242,2243,2245],{},"Every tool's credential (where it comes from, which bundle holds it, who creates and rotates it, how ",[1564,2237,1566],{}," proves it) is in the repository's credentials map, ",[1564,2240,2241],{},".claude/skills/ds-credentials/SKILL.md",". ",[1594,2244,1078],{"href":1079}," walks through it.",[1706,2247,1615],{"id":2248},"a-checkout-without-its-demo-data",[1542,2250,2251],{},[1546,2252,1713],{},[1588,2254,2255,2263,2293,2301],{},[1591,2256,2257,2259,2260,1557],{},[1564,2258,1921],{}," says a checkout's data is ",[1564,2261,2262],{},"not recorded (its data could be anything)",[1591,2264,2057,2265,2060,2267,2269,2270],{},[1564,2266,1888],{},[1546,2268,2063],{},":\n",[1588,2271,2272,2285],{},[1591,2273,2274,2275,2148,2278,2280,2281,2284],{},"a ",[1564,2276,2277],{},"demo-data record for wt1",[1564,2279,1985],{},") line beginning ",[1564,2282,2283],{},"not recorded: its database already exists, so the hourly check leaves its data alone","; or",[1591,2286,2274,2287,2148,2290,2292],{},[1564,2288,2289],{},"demo data in wt1",[1564,2291,1985],{},") line saying why setup left it as it is: another session holds it, it is on a branch, it has uncommitted changes, or it holds organisations besides the demo data.",[1591,2294,2295,2297,2298,1557],{},[1564,2296,1566],{}," fails a checkout's demo sign-in, saying ",[1564,2299,2300],{},"acme.devstride could not sign in",[1591,2302,2303,2306,2307,1557],{},[1564,2304,2305],{},"ds fleet status"," marks the checkout ",[1564,2308,2309],{},"unrecorded",[1542,2311,2312],{},[1546,2313,1755],{},[1542,2315,2316],{},"Setup builds the demo data once, keeps it as the machine's snapshot, and copies it into each checkout. It only replaces a database it knows is safe to replace: in a checkout nobody is using, holding nothing or only the demo data.",[1542,2318,2319,2320,2323,2324,2327],{},"A checkout whose database already existed before setup could record it is ",[1546,2321,2322],{},"not recorded",". Its data could be anything, a customer's organisation copied in by hand for example, so nothing resets it on its own: not setup, not the hourly check (",[1564,2325,2326],{},"ds machine doctor",", which keeps idle checkouts current on an agent machine). It waits until a person has looked.",[1542,2329,2330],{},[1546,2331,2332,2333,1682,2335],{},"What to do, for ",[1564,2334,1982],{},[1564,2336,1985],{},[1778,2338,2339,2342,2427],{},[1591,2340,2341],{},"Check that the checkout really holds nothing but demo data you can lose. A reset replaces its whole database.",[1591,2343,2344,2345,2424,2426],{},"When it is free (nobody holds it, it is not on a branch, it has no uncommitted changes), run the reset that setup printed, under your session's name:",[1784,2346,2348],{"className":1786,"code":2347,"language":1788,"meta":1789,"style":1789},"export DEVSTRIDE_SESSION=\"\u003Cyour name>\"\nds pool checkout wt1 --purpose \"demo data\"\n# in a plain terminal, now run the export DEVSTRIDE_LEASE_TOKEN=… line it printed\nds pool reset wt1\nds pool checkin wt1\n",[1564,2349,2350,2371,2395,2401,2413],{"__ignoreMap":1789},[1793,2351,2352,2356,2359,2362,2365,2368],{"class":1795,"line":17},[1793,2353,2355],{"class":2354},"spNyl","export",[1793,2357,2358],{"class":1818}," DEVSTRIDE_SESSION",[1793,2360,2361],{"class":1811},"=",[1793,2363,2364],{"class":1811},"\"",[1793,2366,2367],{"class":1801},"\u003Cyour name>",[1793,2369,2370],{"class":1811},"\"\n",[1793,2372,2373,2375,2378,2381,2384,2387,2390,2393],{"class":1795,"line":244},[1793,2374,1728],{"class":1798},[1793,2376,2377],{"class":1801}," pool",[1793,2379,2380],{"class":1801}," checkout",[1793,2382,2383],{"class":1801}," wt1",[1793,2385,2386],{"class":1801}," --purpose",[1793,2388,2389],{"class":1811}," \"",[1793,2391,2392],{"class":1801},"demo data",[1793,2394,2370],{"class":1811},[1793,2396,2397],{"class":1795,"line":302},[1793,2398,2400],{"class":2399},"sHwdD","# in a plain terminal, now run the export DEVSTRIDE_LEASE_TOKEN=… line it printed\n",[1793,2402,2403,2405,2407,2410],{"class":1795,"line":377},[1793,2404,1728],{"class":1798},[1793,2406,2377],{"class":1801},[1793,2408,2409],{"class":1801}," reset",[1793,2411,2412],{"class":1801}," wt1\n",[1793,2414,2415,2417,2419,2422],{"class":1795,"line":649},[1793,2416,1728],{"class":1798},[1793,2418,2377],{"class":1801},[1793,2420,2421],{"class":1801}," checkin",[1793,2423,2412],{"class":1801},[1824,2425],{},"The reset copies the snapshot in, re-creates the demo logins and records the checkout as holding demo data, so from then on setup and the hourly check keep it current.",[1591,2428,2429,2430,2432],{},"If setup left it because someone was using it, let that work finish and the checkout be handed back. Then run the reset above, or run ",[1564,2431,1888],{}," again, which fills an empty checkout from the snapshot.",[1542,2434,2435,2436,2438,2439,1682,2441,2443],{},"If the reset says there is no golden template yet, the machine has no snapshot. Run ",[1564,2437,1888],{}," again: it builds one in a free ",[1564,2440,1982],{},[1564,2442,1985],{},", which takes a few minutes.",[1542,2445,2446,2451,2452,2454,2455,2457,2458,2460,2461,2463],{},[1546,2447,2448,2449,1557],{},"For ",[1564,2450,1978],{}," Setup fills ",[1564,2453,1978],{},"'s database only while it holds nothing else and nobody holds ",[1564,2456,1978],{},", and it never moves ",[1564,2459,1978],{},"'s branch or stops its app. When ",[1564,2462,1978],{}," needs the demo organisation back, rebuild just that organisation in place:",[1784,2465,2467],{"className":1786,"code":2466,"language":1788,"meta":1789,"style":1789},"ds worktree cli main golden build     # rebuilds only the Acme demo organisation; other data is untouched\nds worktree cli main golden cognito   # or: only re-create the demo logins\n",[1564,2468,2469,2491],{"__ignoreMap":1789},[1793,2470,2471,2473,2476,2479,2482,2485,2488],{"class":1795,"line":17},[1793,2472,1728],{"class":1798},[1793,2474,2475],{"class":1801}," worktree",[1793,2477,2478],{"class":1801}," cli",[1793,2480,2481],{"class":1801}," main",[1793,2483,2484],{"class":1801}," golden",[1793,2486,2487],{"class":1801}," build",[1793,2489,2490],{"class":2399},"     # rebuilds only the Acme demo organisation; other data is untouched\n",[1793,2492,2493,2495,2497,2499,2501,2503,2506],{"class":1795,"line":244},[1793,2494,1728],{"class":1798},[1793,2496,2475],{"class":1801},[1793,2498,2478],{"class":1801},[1793,2500,2481],{"class":1801},[1793,2502,2484],{"class":1801},[1793,2504,2505],{"class":1801}," cognito",[1793,2507,2508],{"class":2399},"   # or: only re-create the demo logins\n",[1542,2510,2511,2512,2514,2515,2517,2518,2520,2521,2524],{},"This rebuild is what setup, ",[1564,2513,1566],{}," and the hourly check print for ",[1564,2516,1978],{},". A reservation would not do: taking ",[1564,2519,1978],{}," needs ",[1564,2522,2523],{},"--i-know-main-is-free",", and handing it back stops its app.",[1706,2526,1621],{"id":2527},"aws-refuses-the-agent-machine-identity",[1542,2529,2530],{},[1546,2531,1713],{},[1588,2533,2534,2540,2545,2553],{},[1591,2535,2536,2537,2539],{},"The check at session start says the AWS ",[1546,2538,1768],{}," for the profile was refused, and that a login will not fix it, because it is certificate-based.",[1591,2541,2542,2544],{},[1564,2543,1728],{}," stops with the same message instead of opening a sign-in.",[1591,2546,2547,2549,2550,1557],{},[1564,2548,1896],{}," blocks with ",[1564,2551,2552],{},"AWS refused \u003Cname>'s identity (revoked, expired, or its key is gone) — setup never replaces an identity by itself; re-enrol on purpose: ds machine enroll \u003Cname> --force, then run setup again",[1591,2554,2555,2557,2558,2560,2561,1557],{},[1564,2556,1566],{}," fails its ",[1564,2559,1740],{}," lines: the machine's ",[1564,2562,2563],{},"certificate identity was refused or has expired",[1542,2565,2566],{},[1546,2567,1755],{},[1542,2569,2570],{},"An agent machine (one that runs sessions with nobody at the keyboard) cannot sign in through a browser, so it has its own certificates: one for the dev AWS account and one for production. AWS exchanges them for short sessions named after the machine. They last a year.",[1542,2572,2573,2574,2577],{},"AWS refuses them when the machine was revoked (",[1564,2575,2576],{},"ds machine revoke","), when the certificate has expired, or when the machine's key file is gone. No sign-in can fix that, so nothing offers one.",[1542,2579,2580],{},[1546,2581,1776],{},[1778,2583,2584,2587,2640],{},[1591,2585,2586],{},"If the machine was revoked on purpose (retired, lost or stolen), stop here: it should stay shut off.",[1591,2588,2589,2590,2633,2635,2636,2639],{},"Otherwise give it a new identity. This is also the yearly renewal:",[1784,2591,2593],{"className":1786,"code":2592,"language":1788,"meta":1789,"style":1789},"ds machine enroll \u003Cname> --force\n./setup --agent \u003Cname>\n",[1564,2594,2595,2618],{"__ignoreMap":1789},[1793,2596,2597,2599,2602,2605,2607,2610,2612,2615],{"class":1795,"line":17},[1793,2598,1728],{"class":1798},[1793,2600,2601],{"class":1801}," machine",[1793,2603,2604],{"class":1801}," enroll",[1793,2606,1812],{"class":1811},[1793,2608,2609],{"class":1801},"nam",[1793,2611,1819],{"class":1818},[1793,2613,2614],{"class":1811},">",[1793,2616,2617],{"class":1801}," --force\n",[1793,2619,2620,2622,2625,2627,2629,2631],{"class":1795,"line":244},[1793,2621,1888],{"class":1798},[1793,2623,2624],{"class":1801}," --agent",[1793,2626,1812],{"class":1811},[1793,2628,2609],{"class":1801},[1793,2630,1819],{"class":1818},[1793,2632,1822],{"class":1811},[1824,2634],{},"The first command makes new keys, and removes the old certificates and the machine's two AWS profiles. Setup then asks for one AWS approval in the browser, signs and installs the new certificates, and checks that both accounts answer as this machine. ",[1546,2637,2638],{},"The machine has no AWS access from the first command until setup finishes",", so do it while no session needs AWS.",[1591,2641,2642,2643,2675,2677,2678,2681,2682,1557],{},"Check it:",[1784,2644,2646],{"className":1786,"code":2645,"language":1788,"meta":1789,"style":1789},"aws sts get-caller-identity --profile devstride-machine-\u003Cname>-dev\n",[1564,2647,2648],{"__ignoreMap":1789},[1793,2649,2650,2652,2655,2658,2660,2663,2666,2668,2670,2672],{"class":1795,"line":17},[1793,2651,1740],{"class":1798},[1793,2653,2654],{"class":1801}," sts",[1793,2656,2657],{"class":1801}," get-caller-identity",[1793,2659,1808],{"class":1801},[1793,2661,2662],{"class":1801}," devstride-machine-",[1793,2664,2665],{"class":1811},"\u003C",[1793,2667,2609],{"class":1801},[1793,2669,1819],{"class":1818},[1793,2671,2614],{"class":1811},[1793,2673,2674],{"class":1801},"-dev\n",[1824,2676],{},"The ",[1564,2679,2680],{},"Arn"," it prints (the AWS name of the identity in use) ends in ",[1564,2683,2684],{},"assumed-role/devstride-machine-identity/\u003Cname>",[1542,2686,2687,2690],{},[1546,2688,2689],{},"When the approver cannot sign: the administrator route."," The one approval must come from someone whose AWS sign-in can sign with the management account (where the certificate authority lives). If yours cannot, setup says so, and names this route instead:",[1778,2692,2693,2714,2833],{},[1591,2694,2695,2696,1864,2699,2702,2703,2706,2707,1549,2710,2713],{},"Setup has already made the machine's two certificate requests, ",[1564,2697,2698],{},"dev.csr.pem",[1564,2700,2701],{},"prod.csr.pem",", in ",[1564,2704,2705],{},"~/.devstride/machine-identity/\u003Cname>/"," on the agent machine. They hold no secrets: copy them to the administrator. The machine's private keys (",[1564,2708,2709],{},"dev.key",[1564,2711,2712],{},"prod.key",") never leave it.",[1591,2715,2716,2717,2816,2818,2821,2822,2825,2826,2148,2829,2832],{},"The administrator, in their own DevStride checkout and signed in to the management account, signs both:",[1784,2718,2720],{"className":1786,"code":2719,"language":1788,"meta":1789,"style":1789},"ds machine sign \u003Cname> --account dev --csr \u003Cfull path to dev.csr.pem> --out dev.signed.pem\nds machine sign \u003Cname> --account prod --csr \u003Cfull path to prod.csr.pem> --out prod.signed.pem\n",[1564,2721,2722,2773],{"__ignoreMap":1789},[1793,2723,2724,2726,2728,2731,2733,2735,2737,2739,2742,2745,2748,2750,2753,2756,2759,2762,2765,2767,2770],{"class":1795,"line":17},[1793,2725,1728],{"class":1798},[1793,2727,2601],{"class":1801},[1793,2729,2730],{"class":1801}," sign",[1793,2732,1812],{"class":1811},[1793,2734,2609],{"class":1801},[1793,2736,1819],{"class":1818},[1793,2738,2614],{"class":1811},[1793,2740,2741],{"class":1801}," --account",[1793,2743,2744],{"class":1801}," dev",[1793,2746,2747],{"class":1801}," --csr",[1793,2749,1812],{"class":1811},[1793,2751,2752],{"class":1801},"full",[1793,2754,2755],{"class":1801}," path",[1793,2757,2758],{"class":1801}," to",[1793,2760,2761],{"class":1801}," dev.csr.pe",[1793,2763,2764],{"class":1818},"m",[1793,2766,2614],{"class":1811},[1793,2768,2769],{"class":1801}," --out",[1793,2771,2772],{"class":1801}," dev.signed.pem\n",[1793,2774,2775,2777,2779,2781,2783,2785,2787,2789,2791,2794,2796,2798,2800,2802,2804,2807,2809,2811,2813],{"class":1795,"line":244},[1793,2776,1728],{"class":1798},[1793,2778,2601],{"class":1801},[1793,2780,2730],{"class":1801},[1793,2782,1812],{"class":1811},[1793,2784,2609],{"class":1801},[1793,2786,1819],{"class":1818},[1793,2788,2614],{"class":1811},[1793,2790,2741],{"class":1801},[1793,2792,2793],{"class":1801}," prod",[1793,2795,2747],{"class":1801},[1793,2797,1812],{"class":1811},[1793,2799,2752],{"class":1801},[1793,2801,2755],{"class":1801},[1793,2803,2758],{"class":1801},[1793,2805,2806],{"class":1801}," prod.csr.pe",[1793,2808,2764],{"class":1818},[1793,2810,2614],{"class":1811},[1793,2812,2769],{"class":1801},[1793,2814,2815],{"class":1801}," prod.signed.pem\n",[1824,2817],{},[1564,2819,2820],{},"./ds"," runs from the top of the checkout, so give the requests' full paths; the certificates are written to the top of that checkout. It signs with the ",[1564,2823,2824],{},"devstride-mgmt"," profile unless ",[1564,2827,2828],{},"--mgmt-profile",[1564,2830,2831],{},"DEVSTRIDE_MGMT_PROFILE",") names another. The certificate names the machine and account given on the command line, whatever the request says.",[1591,2834,2835,2836,1864,2839,2842,2843,2845],{},"Save the two certificates on the agent machine as ",[1564,2837,2838],{},"~/.devstride/machine-identity/\u003Cname>/dev.signed.pem",[1564,2840,2841],{},"prod.signed.pem",", then run ",[1564,2844,1896],{}," again. It installs them with no sign-in.",[1542,2847,2848,2849,2852],{},"The repository's ",[1564,2850,2851],{},"ds-machine-identity"," skill is the full runbook, including how to revoke a machine.",[1706,2854,1627,2856,1631],{"id":2855},"another-ds-verify-run-is-going",[1564,2857,1630],{},[1542,2859,2860],{},[1546,2861,1713],{},[1588,2863,2864,2876,2886],{},[1591,2865,2866,1682,2869,2871,2872,2875],{},[1564,2867,2868],{},"ds verify land",[1564,2870,1942],{}," waits, and about once a minute prints a line ending ",[1564,2873,2874],{},"— one deep check per machine at a time",", naming the folder, process and start time of the run it is waiting on.",[1591,2877,2878,2881,2882,2885],{},[1564,2879,2880],{},"ds work land"," seems to hang at its local check, which is that same command. Its waiting line goes to ",[1564,2883,2884],{},".ds/work-land.log",", not to the screen.",[1591,2887,2888,2890,2891,2893,2894,2897,2898,1557],{},[1564,2889,1566],{}," marks its landing check ",[1564,2892,1574],{},": ",[1564,2895,2896],{},"another ds verify run is going",", then ",[1564,2899,2900],{},"run ds machine ready again once it has finished",[1542,2902,2903],{},[1546,2904,1755],{},[1542,2906,2907,2908,2910,2911,2914],{},"A machine runs one deep check at a time. Two full test runs on one machine starve each other of CPU, and the timeouts that follow look exactly like broken code. So every ",[1564,2909,1630],{}," run takes a machine-wide lock, ",[1564,2912,2913],{},"~/.cache/devstride/verify.lock",", and the next one waits its turn.",[1542,2916,2917],{},[1546,2918,1776],{},[1542,2920,2921,2922,2924],{},"Wait: your run starts as soon as the other finishes. The waiting line tells you whose run it is. There is nothing to clear by hand: a run that died leaves its lock behind, and the next run reclaims it by itself and says so. For ",[1564,2923,1566],{},", run it again once the other run has finished.",[1706,2926,1637],{"id":2927},"a-stopped-setup-or-ready-run-left-a-checkout-reserved",[1542,2929,2930],{},[1546,2931,1713],{},[1588,2933,2934,2955,2961],{},[1591,2935,2936,2938,2939,2942,2943,1682,2946,2242,2949,2951,2952,1557],{},[1564,2937,1921],{}," shows a checkout held by ",[1564,2940,2941],{},"machine-setup",", with a purpose such as ",[1564,2944,2945],{},"machine setup demo data pid=\u003Cn>",[1564,2947,2948],{},"machine ready pid=\u003Cn>",[1564,2950,1989],{}," on it answers ",[1564,2953,2954],{},"BUSY",[1591,2956,2957,2958],{},"When it was stopped, setup printed ",[1564,2959,2960],{},"Stopped while setup held \u003Ccheckout>: its lease stays, because a copy may still be finishing inside Docker.",[1591,2962,2963,2965,2966,2968,2969,2972,2973,1557],{},[1564,2964,1566],{}," marks that checkout ",[1564,2967,1574],{},", saying it was ",[1564,2970,2971],{},"left by a stopped ./setup or ds machine ready run"," and that ",[1564,2974,2975],{},"the next full ds machine ready or ./setup takes it back",[1542,2977,2978],{},[1546,2979,1755],{},[1542,2981,2982,2983,2985],{},"Setup and ",[1564,2984,1566],{}," reserve a checkout while they copy demo data into it or start its app. If they are stopped part-way (Ctrl-C, a closed terminal), they deliberately keep the reservation: a copy may still be finishing inside Docker, and handing the checkout over then would give someone a database that is still being rewritten.",[1542,2987,2988],{},[1546,2989,1776],{},[1542,2991,2992,2993,2995,2996,2998,2999,3002,3003,3006],{},"Nothing by hand. Once the stopped process has gone, the next full run takes the reservation back and stops any app it left running: ",[1564,2994,1888],{},", a full ",[1564,2997,1566],{}," (not ",[1564,3000,3001],{},"--quick","), or on an agent machine the hourly check. It says ",[1564,3004,3005],{},"took back the reservation a stopped setup run left on \u003Ccheckout>",". Never delete the reservation yourself.",[1542,3008,3009,3010,3012],{},"The hourly check (",[1564,3011,2326],{},") keeps its own reservation the same way when it is stopped part-way. It prints the exact command that frees the checkout sooner, once nothing is running there, and its next scheduled run takes the checkout back anyway.",[1706,3014,1643],{"id":3015},"setup-will-not-edit-your-shell-startup-file",[1542,3017,3018],{},[1546,3019,1713],{},[1542,3021,3022,3024,3025,3028,3029,3031],{},[1564,3023,1888],{}," lists a ",[1564,3026,3027],{},"shell startup files"," line under ",[1546,3030,2224],{},":",[1784,3033,3038],{"className":3034,"code":3036,"language":3037,"meta":1789},[3035],"language-text","setup will not edit \u003Cfile> (it has a \"# >>> devstride machine setup >>>\" or \"# \u003C\u003C\u003C devstride machine setup \u003C\u003C\u003C\" line without its pair, or more than one block) — leave one pair of its marker lines, or none, then run setup again\n","text",[1564,3039,3036],{"__ignoreMap":1789},[1542,3041,3042],{},[1546,3043,1755],{},[1542,3045,3046,3047,3049],{},"Setup keeps its lines (",[1564,3048,1728],{}," on your PATH, Node, this machine's name and AWS profile) in one block between two marker lines in your shell's startup file, and rewrites only what is between them. When a marker is missing, or there are two blocks, it cannot tell where its block ends: pairing a stray start line with a later end line would delete your own lines in between. So it changes nothing and asks you.",[1542,3051,3052,3053,3056,3057,3060,3061,2148,3064,1682,3067,3070,3071,3074],{},"The file depends on your shell: for zsh, ",[1564,3054,3055],{},"~/.zshrc",", plus a second small block in ",[1564,3058,3059],{},"~/.zshenv",", which every zsh reads, scripts included; for bash on a Mac, ",[1564,3062,3063],{},"~/.bash_profile",[1564,3065,3066],{},"~/.bash_login",[1564,3068,3069],{},"~/.profile",", whichever bash reads); for bash on Linux, ",[1564,3072,3073],{},"~/.bashrc",". The message names the file.",[1542,3076,3077],{},[1546,3078,1776],{},[1778,3080,3081,3090,3093],{},[1591,3082,3083,3084,1864,3087,1557],{},"Open the file it names and find the lines ",[1564,3085,3086],{},"# >>> devstride machine setup >>>",[1564,3088,3089],{},"# \u003C\u003C\u003C devstride machine setup \u003C\u003C\u003C",[1591,3091,3092],{},"Leave exactly one start line followed by one end line around setup's lines, or delete setup's lines together with both markers.",[1591,3094,3095,3096,3098],{},"Run ",[1564,3097,1888],{}," again. It rewrites everything between the pair, or adds a fresh block when there is none.",[1542,3100,3101,3102,3105,3106,3109],{},"Before its first change to a startup file, setup keeps a copy of it beside the original with ",[1564,3103,3104],{},".before-devstride-setup"," added, for example ",[1564,3107,3108],{},"~/.zshrc.before-devstride-setup",". Compare against it to tell your own lines from setup's. Keep your own lines outside the block: setup rewrites the block on every run.",[1706,3111,1649],{"id":3112},"setup-stopped-a-new-terminal-would-run-another-node",[1542,3114,3115],{},[1546,3116,1713],{},[1542,3118,3119,3024,3121,3123],{},[1564,3120,1888],{},[1564,3122,3027],{}," line like this:",[1784,3125,3128],{"className":3126,"code":3127,"language":3037,"meta":1789},[3035],"setup's shell blocks would make a new terminal run another node (node: v22.11.0 → v24.3.0); they were taken back out and your startup files are as they were — this is a setup defect: tell the team, with this line\n",[1564,3129,3127],{"__ignoreMap":1789},[1542,3131,3132],{},[1546,3133,1755],{},[1542,3135,3136],{},"After writing its block into your shell's startup files, setup opens a fresh login shell and checks which Node and pnpm it finds. Setup's block must never switch your terminal to a different Node or pnpm than the one it ran before (from nvm, fnm, Homebrew or another version manager), because that could break other projects on your machine. When it would, setup takes its block back out at once, so nothing about your terminal has changed.",[1542,3138,3139],{},[1546,3140,1776],{},[1778,3142,3143,3146,3155],{},[1591,3144,3145],{},"Send the team the line setup printed: it names the Node and pnpm before and after, which is what is needed to fix setup.",[1591,3147,3148,3149,3151,3152,3154],{},"Meanwhile, your terminal is exactly as it was. Everything else setup did stays done; only ",[1564,3150,1728],{}," on your PATH and the machine's name in new terminals are missing. Use ",[1564,3153,2820],{}," from inside a checkout until the fix lands.",[1591,3156,3157,3158,3160,3161,3163],{},"If you want to compare by hand, setup kept a copy of every startup file it touched, ending ",[1564,3159,3104],{}," (for example ",[1564,3162,3108],{},").",[1706,3165,1655],{"id":3166},"the-stage-step-is-blocked",[1542,3168,3169],{},[1546,3170,1713],{},[1542,3172,3173,3175,3176,3178,3179,3181,3182,3185],{},[1564,3174,1888],{}," lists the stage under ",[1546,3177,2224],{},", or ",[1564,3180,1566],{}," fails a ",[1564,3183,3184],{},"stage:"," line. The line says which of these it is:",[1588,3187,3188,3197,3203,3209],{},[1591,3189,3190,3193,3194,3196],{},[1564,3191,3192],{},"this machine has no Neon key",": the team's ",[1564,3195,2024],{}," is not on this machine;",[1591,3198,3199,3202],{},[1564,3200,3201],{},"holds a database but names no stage: a stage made by hand",": this machine had a stage before setup made them;",[1591,3204,3205,3208],{},[1564,3206,3207],{},"could not look at this machine's stage",": the AWS sign-in lapsed or the look failed;",[1591,3210,3211],{},"a failed first deploy, with the deploy's last lines.",[1542,3213,3214],{},[1546,3215,1755],{},[1542,3217,3218],{},"Your stage's database is its own Neon branch, made with the team's Neon key, and its first deploy runs from a pool checkout. Setup builds the stage only when everything it needs is in place, and never rebuilds a stage that already exists.",[1542,3220,3221],{},[1546,3222,1776],{},[1588,3224,3225,3239,3248,3258],{},[1591,3226,3227,3230,3231,3233,3234,1864,3236,3238],{},[1546,3228,3229],{},"No Neon key",": an admin adds it once for the whole team (",[1594,3232,2217],{"href":2216},"). Then run ",[1564,3235,1749],{},[1564,3237,1888],{}," again.",[1591,3240,3241,3244,3245,1557],{},[1546,3242,3243],{},"A stage made by hand",": adopt it once, never rebuilt. Take wt1, then name the stage: ",[1564,3246,3247],{},"ds stage create --stage \u003Cits name> --member wt1",[1591,3249,3250,3253,3254,2842,3256,3238],{},[1546,3251,3252],{},"AWS sign-in lapsed",": see ",[1594,3255,1597],{"href":1596},[1564,3257,1888],{},[1591,3259,3260,3263,3264,3267,3268,3270,3271,3274],{},[1546,3261,3262],{},"A failed first deploy",": read ",[1564,3265,3266],{},".ds/stage-deploy.log"," in the checkout it deployed from (setup names it). Fix what it shows, or send it to the team, then run ",[1564,3269,1888],{}," again: it finishes the stage rather than starting over. ",[1564,3272,3273],{},"ds stage create --member wt1 --dry-run"," shows what is left to do.",[1706,3276,1661],{"id":3277},"your-stages-database-is-behind-your-code",[1542,3279,3280],{},[1546,3281,1713],{},[1542,3283,3284,3286,3287,3289,3290,3293,3294,1557],{},[1564,3285,1566],{}," shows a ",[1564,3288,1582],{}," on ",[1564,3291,3292],{},"stage: database",", for example ",[1564,3295,3296],{},"3 migration(s) behind main's code",[1542,3298,3299],{},[1546,3300,1755],{},[1542,3302,3303,3304,3306],{},"Setup never redeploys your stage because ",[1564,3305,2228],{}," moved on. Your checkouts' code moves forward; the stage's database stays where it was until you migrate it.",[1542,3308,3309],{},[1546,3310,1776],{},[1542,3312,3313],{},"From the checkout whose code you will run against the stage, run the command the note gives, for example:",[1784,3315,3317],{"className":1786,"code":3316,"language":1788,"meta":1789,"style":1789},"DEVSTRIDE_STAGE=\u003Cstage> DEVSTRIDE_REGION=us-east-1 ./ds -b migrations run\n",[1564,3318,3319],{"__ignoreMap":1789},[1793,3320,3321,3324,3327,3330,3332,3335,3337,3340,3343,3346,3349],{"class":1795,"line":17},[1793,3322,3323],{"class":1818},"DEVSTRIDE_STAGE",[1793,3325,3326],{"class":1811},"=\u003C",[1793,3328,3329],{"class":1801},"stage",[1793,3331,2614],{"class":1811},[1793,3333,3334],{"class":1818}," DEVSTRIDE_REGION",[1793,3336,2361],{"class":1811},[1793,3338,3339],{"class":1801},"us-east-1",[1793,3341,3342],{"class":1798}," ./ds",[1793,3344,3345],{"class":1801}," -b",[1793,3347,3348],{"class":1801}," migrations",[1793,3350,3351],{"class":1801}," run\n",[1706,3353,1667],{"id":3354},"claude-in-chrome-is-offered-but-not-enabled",[1542,3356,3357],{},[1546,3358,1713],{},[1542,3360,3361,3362,3364,3365,3367,3368,1557],{},"Setup's ",[1546,3363,2063],{}," list, or a ",[1564,3366,1566],{}," note, says ",[1564,3369,3370],{},"Claude in Chrome is offered but not enabled yet",[1542,3372,3373],{},[1546,3374,1755],{},[1542,3376,3377],{},"Setup asks Chrome to offer the Claude extension, but only you can turn an extension on and sign in to it. Agents do their browser work through it, so until it is enabled they hand browser steps back to you.",[1542,3379,3380],{},[1546,3381,1776],{},[1542,3383,3384,3385,3388,3389,3392,3393,3396],{},"Open Chrome. It shows a notice that a new extension, Claude, was added: click ",[1546,3386,3387],{},"Enable",". Then open the extension and sign in to Claude. If you dismissed the notice, open ",[1564,3390,3391],{},"chrome://extensions"," and switch Claude on there. On an agent machine, do this in its ",[1564,3394,3395],{},"DevStride Agent"," Chrome profile.",[1706,3398,1673],{"id":3399},"many-tests-time-out-at-once",[1542,3401,3402],{},[1546,3403,1713],{},[1542,3405,3406,3407,1682,3410,3413,3414,3417,3418,3421],{},"Dozens of test files fail with ",[1564,3408,3409],{},"Test timed out",[1564,3411,3412],{},"Hook timed out",", or a run takes several times longer than usual. Two signs that the code is not to blame: a ",[1546,3415,3416],{},"different"," set of files fails on each run, and the failing tests were ",[1546,3419,3420],{},"skipped"," with no assertions after a setup step timed out, rather than failing an assertion.",[1542,3423,3424],{},[1546,3425,1755],{},[1542,3427,3428],{},"Three causes look exactly like broken code:",[1778,3430,3431,3437,3443],{},[1591,3432,3433,3436],{},[1546,3434,3435],{},"Another checkout on this machine is running a test suite at the same time."," Each checkout has its own test databases, so the two runs cannot corrupt each other, but they starve each other of CPU.",[1591,3438,3439,3442],{},[1546,3440,3441],{},"This checkout's test databases have degraded",", after a long uptime or a stopped run that left its databases behind.",[1591,3444,3445,3448],{},[1546,3446,3447],{},"The test databases restarted seconds ago"," and Postgres is not accepting connections yet. The failures then cluster at the very start of the run, all in the setup step.",[1542,3450,3451],{},[1546,3452,1776],{},[1778,3454,3455,3473,3522,3581],{},[1591,3456,3457,3458,3461,3462,3465,3466,3468,3469,3472],{},"Rule out the first cause before anything else. Run ",[1564,3459,3460],{},"docker ps"," and look for another checkout's ",[1564,3463,3464],{},"devstride-*-drizzle-tests"," container with a run in progress, and ask the session using it. ",[1564,3467,1630],{}," already runs one deep check per machine; when two runs genuinely must overlap, cap each with ",[1564,3470,3471],{},"--maxWorkers=7",". A high load average alone proves nothing.",[1591,3474,3475,3476,3479,3480],{},"Restart this checkout's two test databases. ",[1564,3477,3478],{},"ds worktree ls"," names the pair:",[1784,3481,3483],{"className":1786,"code":3482,"language":1788,"meta":1789,"style":1789},"docker restart devstride-\u003Cslug>-drizzle-tests devstride-\u003Cslug>-dynamodb-tests\n",[1564,3484,3485],{"__ignoreMap":1789},[1793,3486,3487,3490,3493,3496,3498,3501,3504,3506,3509,3511,3513,3515,3517,3519],{"class":1795,"line":17},[1793,3488,3489],{"class":1798},"docker",[1793,3491,3492],{"class":1801}," restart",[1793,3494,3495],{"class":1801}," devstride-",[1793,3497,2665],{"class":1811},[1793,3499,3500],{"class":1801},"slu",[1793,3502,3503],{"class":1818},"g",[1793,3505,2614],{"class":1811},[1793,3507,3508],{"class":1801},"-drizzle-tests",[1793,3510,3495],{"class":1801},[1793,3512,2665],{"class":1811},[1793,3514,3500],{"class":1801},[1793,3516,3503],{"class":1818},[1793,3518,2614],{"class":1811},[1793,3520,3521],{"class":1801},"-dynamodb-tests\n",[1591,3523,3524,3525],{},"Wait until Postgres answers. Use a readiness check, never a fixed pause:",[1784,3526,3528],{"className":1786,"code":3527,"language":1788,"meta":1789,"style":1789},"until docker exec devstride-\u003Cslug>-drizzle-tests pg_isready -U postgres; do sleep 1; done\n",[1564,3529,3530],{"__ignoreMap":1789},[1793,3531,3532,3536,3539,3542,3544,3546,3548,3550,3552,3554,3557,3560,3563,3566,3569,3572,3576,3578],{"class":1795,"line":17},[1793,3533,3535],{"class":3534},"s7zQu","until",[1793,3537,3538],{"class":1798}," docker",[1793,3540,3541],{"class":1801}," exec",[1793,3543,3495],{"class":1801},[1793,3545,2665],{"class":1811},[1793,3547,3500],{"class":1801},[1793,3549,3503],{"class":1818},[1793,3551,2614],{"class":1811},[1793,3553,3508],{"class":1801},[1793,3555,3556],{"class":1801}," pg_isready",[1793,3558,3559],{"class":1801}," -U",[1793,3561,3562],{"class":1801}," postgres",[1793,3564,3565],{"class":1811},";",[1793,3567,3568],{"class":3534}," do",[1793,3570,3571],{"class":1798}," sleep",[1793,3573,3575],{"class":3574},"sbssI"," 1",[1793,3577,3565],{"class":1811},[1793,3579,3580],{"class":3534}," done\n",[1591,3582,3583],{},"Run again. If it still fails, run the same files on a commit you know was good. Failing the same way there means the environment; passing there means your change.",[1542,3585,3586],{},"Two traps hide the real result:",[1588,3588,3589,3609],{},[1591,3590,3591,3601,3602,3605,3606,1557],{},[1546,3592,3593,3594,1682,3597,3600],{},"Piping a test run through ",[1564,3595,3596],{},"tail",[1564,3598,3599],{},"grep"," reports the pipe's exit code",", so a failed run reads as a success. Write the output to a file instead, from the ",[1564,3603,3604],{},"backend"," folder: ",[1564,3607,3608],{},"pnpm test:suite:ci:non-golden > run.log 2>&1; echo \"GATE_EXIT_CODE=$?\"",[1591,3610,3611,3614,3615,3618],{},[1546,3612,3613],{},"After Docker or the Mac crashes",", the test Postgres may be damaged: for speed it runs without crash-safety flushes. If the suite cannot connect, or reports missing files, remove this checkout's test Postgres with ",[1564,3616,3617],{},"docker rm -f devstride-\u003Cslug>-drizzle-tests","; the next run recreates it.",[1542,3620,3621,3623,3624,2242,3630,3634],{},[1564,3622,2868],{}," already re-runs, once, up to five files that timed out during setup when no test failed. The full procedure, with measured examples, is in the repository's testing guide: ",[1594,3625,3629],{"href":3626,"rel":3627},"https://github.com/devstride/devstride/blob/develop/docs/backend/testing-guide.md#diagnosing-a-mass-test-failure",[3628],"nofollow","Diagnosing a mass test failure",[1594,3631,3633],{"href":3632},"/developer-experience/intro/dockerized-worktree-development#running-tests-per-instance","Running Tests Per Instance"," explains the per-checkout test databases.",[1706,3636,3638,1682,3640,1686],{"id":3637},"ds-pool-or-ds-work-says-you-do-not-hold-the-checkout",[1564,3639,1681],{},[1564,3641,1685],{},[1542,3643,3644],{},[1546,3645,1713],{},[1588,3647,3648,3677],{},[1591,3649,3650,1549,3653,1549,3656,1682,3659,3661,3662,3665,3666,3669,3670,3673,3674,3676],{},[1564,3651,3652],{},"ds pool reset",[1564,3654,3655],{},"ds pool checkin",[1564,3657,3658],{},"ds work start",[1564,3660,2880],{}," refuses, saying the checkout is leased under your session name ",[1564,3663,3664],{},"but by a different session",", that you do ",[1546,3667,3668],{},"not"," hold it, and that a lease taken from a plain terminal needs the ",[1564,3671,3672],{},"DEVSTRIDE_LEASE_TOKEN"," that ",[1564,3675,1989],{}," printed there.",[1591,3678,3679,3680,2018,3682,3685,3686,3688],{},"Or ",[1564,3681,1685],{},[1564,3683,3684],{},"this checkout is not leased to you",", and names the ",[1564,3687,1989],{}," command to run.",[1542,3690,3691],{},[1546,3692,1755],{},[1542,3694,3695,3696,3698],{},"A lease records which session took it, not just the name: two sessions can share one name. A Claude Code or Codex session proves it is the holder with its own session id. A plain terminal has no such id, so ",[1564,3697,1989],{}," handed it a one-time token instead.",[1542,3700,3701],{},[1546,3702,1776],{},[1588,3704,3705,3715,3725],{},[1591,3706,3707,3708,3711,3712,3714],{},"In the plain terminal that took the lease, run the ",[1564,3709,3710],{},"export DEVSTRIDE_LEASE_TOKEN=…"," line ",[1564,3713,1989],{}," printed, then try again. Run later commands in that same terminal.",[1591,3716,3717,3718,3721,3722,3724],{},"If you never took the lease, take it: ",[1564,3719,3720],{},"ds pool checkout \u003Ccheckout> --purpose \u003Citem>",". If that says ",[1564,3723,2954],{},", another session holds it: ask that session, or take another checkout.",[1591,3726,3727],{},"A lease taken before leases recorded their holder is refused by these commands. Hand it back by hand only if you are sure it is yours; otherwise it is the owner's to clear.",[1706,3729,1692],{"id":3730},"the-merge-guard-refused-a-command",[1542,3732,3733],{},[1546,3734,1713],{},[1542,3736,1725,3737,1549,3740,1549,3743,1682,3746,3749],{},[1564,3738,3739],{},"git push",[1564,3741,3742],{},"git merge",[1564,3744,3745],{},"gh pr merge",[1564,3747,3748],{},"gh api"," command is refused before it runs, with a one-sentence reason from the merge guard.",[1542,3751,3752],{},[1546,3753,1755],{},[1542,3755,3756,3757,1682,3759,3761,3762,3764,3765,3768,3769,3771,3772,3775],{},"Every Claude Code and Codex session runs the merge guard before each shell command. It refuses the commands that would skip review: a push to ",[1564,3758,2228],{},[1564,3760,2231],{},", a forced or deleting push to a release branch, a merge into ",[1564,3763,2228],{}," from a branch the ",[1564,3766,3767],{},"merge-path"," rule does not admit, a merge into ",[1564,3770,2231],{}," from anything but a release or hotfix branch, and writes to GitHub's branch rules. ",[1594,3773,1086],{"href":3774},"/developer-experience/guide/develop#the-merge-guard"," has the full list.",[1542,3777,3778],{},[1546,3779,1776],{},[1588,3781,3782,3797],{},[1591,3783,3784,3785,2148,3787,3790,3791,1553,3793,3796],{},"Take the normal route: ",[1564,3786,2880],{},[1564,3788,3789],{},"/devstride:build-item",") for a Story or one-off, a pull request for anything bound for ",[1564,3792,2228],{},[1564,3794,3795],{},"/devstride:release"," for production.",[1591,3798,3799,3800,3845,3847,3848,3851,3852,3855],{},"If you think the refusal is wrong, ask the rule for its verdict and reason:",[1784,3801,3803],{"className":1786,"code":3802,"language":1788,"meta":1789,"style":1789},"ds merge-path check --head \u003Cbranch> --base develop --labels \u003Clabel1,label2>\n",[1564,3804,3805],{"__ignoreMap":1789},[1793,3806,3807,3809,3812,3815,3818,3820,3823,3826,3828,3831,3834,3837,3839,3842],{"class":1795,"line":17},[1793,3808,1728],{"class":1798},[1793,3810,3811],{"class":1801}," merge-path",[1793,3813,3814],{"class":1801}," check",[1793,3816,3817],{"class":1801}," --head",[1793,3819,1812],{"class":1811},[1793,3821,3822],{"class":1801},"branc",[1793,3824,3825],{"class":1818},"h",[1793,3827,2614],{"class":1811},[1793,3829,3830],{"class":1801}," --base",[1793,3832,3833],{"class":1801}," develop",[1793,3835,3836],{"class":1801}," --labels",[1793,3838,1812],{"class":1811},[1793,3840,3841],{"class":1801},"label1,label",[1793,3843,3844],{"class":1811},"2>\n",[1824,3846],{},"If the rule itself is wrong, the fix is the rule (",[1564,3849,3850],{},"mergePath"," in ",[1564,3853,3854],{},".claude/ds-config.json","), never the guard's switch.",[3857,3858,3861,3864],"alert",{"title":3859,"type":3860},"Never switch the guard off to get past a block","danger",[1564,3862,3863],{},"DEVSTRIDE_MERGE_GUARD=0"," turns the guard off. It is never the way past a refusal: the block is the point. Ask the owner.",[1706,3866,1698],{"id":3867},"when-the-hourly-health-check-reports-a-problem",[1542,3869,3870,3871,3873,3874,3876],{},"The health check (",[1564,3872,2326],{},", run hourly on an agent machine and inside every ",[1564,3875,1989],{},") fixes what it may and reports the rest. What its messages mean:",[3878,3879,3880,3893],"table",{},[3881,3882,3883],"thead",{},[3884,3885,3886,3890],"tr",{},[3887,3888,3889],"th",{},"It says",[3887,3891,3892],{},"Do this",[3894,3895,3896,3907,3920,3936,3951,3969,3983,4003,4019],"tbody",{},[3884,3897,3898,3904],{},[3899,3900,3901],"td",{},[1564,3902,3903],{},"on \u003Cbranch>, … — only reported",[3899,3905,3906],{},"A session is working on a branch there. Let it finish and hand the checkout back",[3884,3908,3909,3917],{},[3899,3910,3911,1682,3914],{},[1564,3912,3913],{},"… with uncommitted changes — needs a person",[1564,3915,3916],{},"… local commits on no branch — needs a person",[3899,3918,3919],{},"The checkout has changes or commits that would be lost. Commit them to a branch, stash them or discard them",[3884,3921,3922,3927],{},[3899,3923,3924],{},[1564,3925,3926],{},"… this code lacks — needs a person",[3899,3928,3929,3930,3932,3933],{},"The checkout's database is ahead of its code: it was moved back to older code. Move it forward to ",[1564,3931,2228],{},", or, if it holds only demo data, ",[1564,3934,3935],{},"./ds pool reset \u003Ccheckout>",[3884,3937,3938,3943],{},[3899,3939,3940],{},[1564,3941,3942],{},"newer … available — run: ds secrets pull",[3899,3944,3095,3945,3948,3949,1557],{},[1564,3946,3947],{},"./ds secrets pull"," when no session is relying on the current ",[1564,3950,2040],{},[3884,3952,3953,3958],{},[3899,3954,3955],{},[1564,3956,3957],{},"every .env still holds the agent's credentials … — run: ds secrets pull",[3899,3959,3960,3961,3963,3964,3966,3967],{},"This machine last pulled before agent credentials moved out of ",[1564,3962,2040],{},". One ",[1564,3965,3947],{}," removes them and writes ",[1564,3968,2097],{},[3884,3970,3971,3976],{},[3899,3972,3973],{},[1564,3974,3975],{},"customer data for org … past the 14-day review",[3899,3977,3978,3979,3982],{},"A customer copy is older than 14 days. Drop it with ",[1564,3980,3981],{},"./ds pool release-client \u003Ccheckout>"," once the repro is done; the unattended run does it for you on a checkout nobody holds",[3884,3984,3985,3990],{},[3899,3986,3987],{},[1564,3988,3989],{},"no pool record says this is golden data",[3899,3991,3992,3993,2897,3996,1864,3999,4002],{},"Reset it by hand only if that checkout really holds only demo data: ",[1564,3994,3995],{},"ds pool checkout \u003Ccheckout> --purpose \"demo data\"",[1564,3997,3998],{},"ds pool reset \u003Ccheckout>",[1564,4000,4001],{},"ds pool checkin \u003Ccheckout>",", each with your session's name",[3884,4004,4005,4010],{},[3899,4006,4007],{},[1564,4008,4009],{},"… — run: ds machine setup",[3899,4011,3095,4012,4014,4015,4018],{},[1564,4013,1888],{}," from the main checkout (with ",[1564,4016,4017],{},"--agent \u003Cname>"," on an agent machine)",[3884,4020,4021,4026],{},[3899,4022,4023],{},[1564,4024,4025],{},"held by … — only reported",[3899,4027,4028],{},"Someone holds it. Nothing to do",[1706,4030,1704],{"id":4031},"where-the-logs-are",[1542,4033,4034,4035,4038,4039,4041,4042,4044,4045,1557],{},"Paths starting with ",[1564,4036,4037],{},".ds/"," are inside a checkout. Setup's and ",[1564,4040,1566],{},"'s logs are always in the ",[1546,4043,1978],{}," checkout, ",[1564,4046,4047],{},"~/dev/devstride",[3878,4049,4050,4060],{},[3881,4051,4052],{},[3884,4053,4054,4057],{},[3887,4055,4056],{},"Log",[3887,4058,4059],{},"What writes it",[3894,4061,4062,4079,4089,4098,4111,4126,4141,4153,4167,4179],{},[3884,4063,4064,4070],{},[3899,4065,4066,4069],{},[1564,4067,4068],{},".ds/machine-setup.log"," (main checkout)",[3899,4071,4072,4074,4075,4078],{},[1564,4073,1888],{},": every line it printed. A ",[1564,4076,4077],{},"--dry-run"," writes none",[3884,4080,4081,4086],{},[3899,4082,4083,4069],{},[1564,4084,4085],{},".ds/machine-setup-data.log",[3899,4087,4088],{},"The demo-data build and copies during setup",[3884,4090,4091,4095],{},[3899,4092,4093],{},[1564,4094,3266],{},[3899,4096,4097],{},"Your AWS stage's first deploy, in the checkout it deployed from",[3884,4099,4100,4105],{},[3899,4101,4102,4069],{},[1564,4103,4104],{},".ds/machine-ready.log",[3899,4106,4107,4108,4110],{},"A full ",[1564,4109,1566],{},": the apps it started, the landing check, the Codex checks",[3884,4112,4113,4118],{},[3899,4114,4115],{},[1564,4116,4117],{},".ds/verify-land.log",[3899,4119,4120,4122,4123],{},[1564,4121,2868],{},", in the checkout it ran in, every step's whole output. The receipt is ",[1564,4124,4125],{},".ds/verify-land.json",[3884,4127,4128,4133],{},[3899,4129,4130],{},[1564,4131,4132],{},".ds/verify-full.log",[3899,4134,4135,4137,4138],{},[1564,4136,1942],{},", in the same way. The receipt is ",[1564,4139,4140],{},".ds/verify-full.json",[3884,4142,4143,4147],{},[3899,4144,4145],{},[1564,4146,2884],{},[3899,4148,4149,4150,4152],{},"The local check that ",[1564,4151,2880],{}," ran",[3884,4154,4155,4160],{},[3899,4156,4157],{},[1564,4158,4159],{},".ds/sst-types.log",[3899,4161,4162,4163,4166],{},"Why generating the SST types failed (",[1564,4164,4165],{},"cli/ensure_sst_types.sh",")",[3884,4168,4169,4174],{},[3899,4170,4171],{},[1564,4172,4173],{},"~/.devstride/logs/machine-doctor.log",[3899,4175,4176,4177],{},"The hourly check, ",[1564,4178,2326],{},[3884,4180,4181,4186],{},[3899,4182,4183],{},[1564,4184,4185],{},"~/.cache/devstride/merge-guard.log",[3899,4187,4188],{},"The merge guard, when it could not run and let a command through",[1542,4190,4191,4192,4194,4195,1557],{},"When you ask for help with a failed setup step, send the line setup printed for that step, ",[1564,4193,4068],{},", and for the demo data ",[1564,4196,4085],{},[1542,4198,4199,4202,4203],{},[1546,4200,4201],{},"Next:"," back to the ",[1594,4204,447],{"href":1071},[4206,4207,4208],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":1789,"searchDepth":244,"depth":244,"links":4210},[4211,4212,4213,4214,4215,4216,4218,4219,4220,4221,4222,4223,4224,4225,4227,4228,4229],{"id":1708,"depth":244,"text":1597},{"id":1909,"depth":244,"text":1603},{"id":2002,"depth":244,"text":1609},{"id":2248,"depth":244,"text":1615},{"id":2527,"depth":244,"text":1621},{"id":2855,"depth":244,"text":4217},"Another ds verify run is going",{"id":2927,"depth":244,"text":1637},{"id":3015,"depth":244,"text":1643},{"id":3112,"depth":244,"text":1649},{"id":3166,"depth":244,"text":1655},{"id":3277,"depth":244,"text":1661},{"id":3354,"depth":244,"text":1667},{"id":3399,"depth":244,"text":1673},{"id":3637,"depth":244,"text":4226},"ds pool or ds work says you do not hold the checkout",{"id":3730,"depth":244,"text":1692},{"id":3867,"depth":244,"text":1698},{"id":4031,"depth":244,"text":1704},"What you see, why it happens and what to do, for the problems a DevStride machine or session meets most: sign-ins, Docker, credentials, demo data, machine identities, test runs and the logs to read.","md",null,{},true,{"title":1094,"description":4230},"04mYVBoOgBCZ6tB7xexfHU4E9sV4ye3wSZ7RLQ0_wWI",[4238,4240],{"title":1090,"path":1091,"stem":1092,"description":4239,"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.",{"title":1098,"path":1099,"stem":1100,"description":4241,"children":-1},"What an admin does so a developer can set up their machine: grant and remove GitHub and AWS access with one command, add the team's Seed and Neon keys, and look after each machine's AWS stage.",1791534231812]