Skip to content

[ordering-review] workshop order graph: 1 confirmed ordering issue, 3 false-positive cycles #3187

Description

@github-actions

Summary

Automated graph-health review of workshop/*.md (96 files, 334 edges/constraints, 56 potential findings, 3 cycles/feedback loops/weird cycles). After manually verifying the cited cycles and a sample of the missing_prerequisite_link findings against the actual file contents, most automated findings turned out to be false positives:

  • The 3 reported cycles / feedback loops / weird cycles (07-your-first-workflow.md07d-confirm-model-access.md, 05-agentic-workflows-intro.md05b-agentic-workflows-security.md, 02a-setup-codespace.mdside-quest-02-01-local-terminal.md) are all mutual "Before You Start" / "Next" back-links between companion pages or parallel setup paths (Codespace vs. local terminal). These are intentional navigation aids, not real ordering bugs.
  • The 48 missing_prerequisite_link findings all stem from one heuristic over-trigger: any page mentioning gh aw compile is flagged for not re-linking back to Step 2/local-terminal setup, even though every core step already chains sequentially from a step that established gh auth/gh aw (Step 6 verifies gh auth status; Steps 7+ list Step 6 or the prior core step in "Before You Start"). Spot-checked 07-your-first-workflow.md, 08-run-your-workflow.md, 09-agentic-editing.md, 16-connect-data-source.md, 05-agentic-workflows-intro.md, 20-persistent-memory.md, 26-manage-costs-and-budgets.md — none is missing a real prerequisite link.

However, manual review surfaced one confirmed, real ordering problem not caught by the heuristic.

Confirmed ordering problem

  • File reviewed: workshop/05-agentic-workflows-intro.md
  • Exact instruction that appears too early: **Activity 1 — identify the parts:** Open any .lock.ymlfile in your repo and find theon: key.
  • Missing prerequisite / dependency: No .lock.yml file exists in the learner's practice repository at this point. The compiled .lock.yml is first produced in 07-your-first-workflow.md via gh aw compile, after installing the gh-aw extension in 06-install-gh-aw.md and authoring a workflow .md in Step 7. Steps 1–4 (01-prerequisites.md, 02a-setup-codespace.md, side-quest-02-01-local-terminal.md, 04-github-actions-intro.md) never create or reference a pre-seeded .lock.yml.
  • Why this could confuse or block a learner: Step 5's Activity 1 tells learners to open "any .lock.yml file in your repo," but at this point in the recommended path the repo contains no workflow files at all (only the default README created in Step 2). A learner following the instruction literally will find no such file and may think they missed a setup step or that their environment is broken.
  • Suggested fix: Either (a) reword Activity 1 to be conceptual/predictive only (e.g., "Imagine a .lock.yml file — where would the on: key come from?") without asking the learner to open a real file, (b) explicitly note the activity is deferred until after Step 7 once a .lock.yml exists, or (c) provide a small inline example .lock.yml snippet on the page itself for the learner to inspect instead of asking them to find one in their own repository.

Mermaid graph

graph TD
  node_001["00 00-welcome.md\nWelcome to our Agent Factory Tour"]
  node_002["01 01-prerequisites.md\nBefore we start"]
  node_003["01-SQ01 side-quest-01-01-terminal-basics.md\nSide Quest: Terminal Basics"]
  node_004["01-SQ02 side-quest-01-02-environment-reference.md\nSide Quest: Environment Reference"]
  node_005["01-SQ03 side-quest-01-03-permission-errors.md\nSide Quest: Permission Errors"]
  node_006["02a 02a-setup-codespace.md\nSet Up a Codespace"]
  node_007["02-SQ01 side-quest-02-01-local-terminal.md\nSide Quest: Set Up Your Local Terminal"]
  node_008["04 04-github-actions-intro.md\nGitHub Actions in 5 Minutes"]
  node_009["05 05-agentic-workflows-intro.md\nWhat Are Agentic Workflows?"]
  node_010["05b 05b-agentic-workflows-security.md\nHow Agentic Workflows Stay Safe"]
  node_011["05c 05c-agentic-workflows-practice.md\nPractice: Recognize Agentic Workflows"]
  node_012["05-SQ01 side-quest-05-01-actions-power-user.md\nSide Quest: Agentic Workflows for GitHub Actions Power Users"]
  node_013["05-SQ02 side-quest-05-02-aw-deep-dive.md\nSide Quest: Classify Agentic vs. Standard Workflows"]
  node_014["05-SQ03 side-quest-05-03-two-file-structure.md\nSide Quest: The Two-File Structure"]
  node_015["06 06-install-gh-aw.md\nInstall the gh-aw CLI Extension"]
  node_016["06-SQ01 side-quest-06-01-install-troubleshooting.md\nSide Quest: Install `gh-aw` Troubleshooting"]
  node_017["06-SQ02 side-quest-06-02-cca-codespace.md\nSide Quest: Use `gh-aw` with the GitHub Copilot Cloud Agent"]
  node_018["06-SQ03 side-quest-06-03-copilot-token.md\nSide Quest: Configure GitHub Copilot Authentication"]
  node_019["06-SQ04 side-quest-06-04-install-local.md\nSide Quest: Install `gh-aw` in a Local Terminal"]
  node_020["07 07-your-first-workflow.md\nWrite Your First Agentic Workflow"]
  node_021["07d 07d-confirm-model-access.md\nConfirm Model Access"]
  node_022["07-SQ01 side-quest-07-01-compile-workflow.md\nSide Quest: Using `gh aw compile` to Catch Errors Early"]
  node_023["08 08-run-your-workflow.md\nRun and Watch Your Workflow"]
  node_024["08b 08b-interpret-your-run.md\nInterpret Your First Run"]
  node_025["08-SQ01 side-quest-08-01-codespaces-actions-write.md\nSide Quest: Fix Codespaces `actions:write` Errors When Running `gh aw run`"]
  node_026["09 09-agentic-editing.md\nRefine, Test, and Improve Your Workflow"]
  node_027["09-SQ01 side-quest-09-01-debug-output.md\nSide Quest: Diagnosing Common Agent Output Patterns"]
  node_028["10-SQ01 side-quest-10-01-agent-brief.md\nSide Quest: Writing a Clear Agent Brief"]
  node_029["10-SQ02 side-quest-10-02-jailbreak-brief.md\nSide Quest: Jailbreaking the Agent Brief"]
  node_030["10-SQ03 side-quest-10-03-skill-dispatcher.md\nSide Quest: How the `agentic-workflows` Skill Dispatcher Works"]
  node_031["11-SQ01 side-quest-11-01-frontmatter-deep-dive.md\nSide Quest: [Frontmatter](https://github.github.com/gh-aw/reference/frontmatter/) Deep Dive — Part A"]
  node_032["11-SQ02 side-quest-11-02-yaml-frontmatter.md\nSide Quest: YAML [Frontmatter](https://github.github.com/gh-aw/reference/frontmatter/) Pitfalls"]
  node_033["11-SQ03 side-quest-11-03-better-prompts.md\nSide Quest: Write Better AI Task Briefs"]
  node_034["11-SQ04 side-quest-11-04-annotated-workflow.md\nSide Quest: Explore and Adapt an Annotated Workflow"]
  node_035["11-SQ05 side-quest-11-05-event-triggers.md\nSide Quest: Event-Driven Triggers in Agentic Workflows"]
  node_036["11-SQ06 side-quest-11-06-anthropic-key.md\nSide Quest: Configure an Anthropic API Key"]
  node_037["11-SQ07 side-quest-11-07-openai-key.md\nSide Quest: Configure an OpenAI API Key"]
  node_038["11-SQ08 side-quest-11-08-frontmatter-tools-outputs.md\nSide Quest: Frontmatter Deep Dive — Part B"]
  node_039["11-SQ09 side-quest-11-09-agent-session-phases.md\nSide Quest: Agent Session Phases Explained"]
  node_040["12-SQ01 side-quest-12-01-iterate-agent-output.md\nSide Quest: Evaluating and Iterating on Agent Output"]
  node_041["13-SQ01 side-quest-13-01-pr-labeler-pattern.md\nSide Quest 13-01: Pattern — Auto-Label PRs by Content"]
  node_042["13-SQ01 side-quest-13-01-schedule-expressions.md\nSide Quest: Fuzzy Schedule Expressions"]
  node_043["13-SQ02 side-quest-13-02-pr-summary-pattern.md\nSide Quest 13-02: Pattern — Generate a PR Summary Comment"]
  node_044["13-SQ03 side-quest-13-03-pr-checklist-pattern.md\nSide Quest 13-03: Pattern — PR Review Checklist"]
  node_045["13-SQ04 side-quest-13-04-token-optimization.md\nSide Quest: Observe and Reduce Token Costs"]
  node_046["14 14-next-steps.md\nWhat's Next? Keep Exploring"]
  node_047["14b 14b-pr-reviewer-workflow.md\nBuild a PR Reviewer with an Agent and Skill"]
  node_048["15 15-conditional-logic.md\nMake Your Workflow Smarter with Conditional Logic"]
  node_049["15-SQ01 side-quest-15-01-expressions-and-contexts.md\nSide Quest: GitHub Actions Expressions and Contexts"]
  node_050["15-SQ02 side-quest-15-02-chaining-conditions.md\nSide Quest: Chaining Conditions — Run an Agent Only When Security Findings Exist"]
  node_051["16 16-connect-data-source.md\nConnect a Live Data Source to Your Workflow"]
  node_052["16-SQ01 side-quest-16-01-github-output.md\nSide Quest: Passing Data Between Steps with $GITHUB_OUTPUT"]
  node_053["16-SQ02 side-quest-16-02-secrets-and-permissions.md\nSide Quest: Storing Credentials with GitHub Secrets"]
  node_054["16-SQ03 side-quest-16-03-token-exfiltration.md\nSide Quest: Token and Secret Exfiltration in Agentic Workflows"]
  node_055["16-SQ04 side-quest-16-04-deterministic-vs-agentic-data-ops.md\nSide Quest: [Deterministic](https://github.github.com/gh-aw/patterns/deterministic-ops/) vs [Agentic](https://github.github.com/gh-aw/introduction/overview/#what-are-agentic-workflows) Data Ops"]
  node_056["16-SQ05 side-quest-16-05-long-lived-credentials.md\nSide Quest: Long-Lived Credential Risks in Agentic Workflows"]
  node_057["17 17-add-mcp-tools.md\nGive Your Agent More Tools with MCP"]
  node_058["17-SQ01 side-quest-17-01-mcp-concepts.md\nSide Quest: How MCP Tool Servers Work"]
  node_059["17-SQ02 side-quest-17-02-security-architecture.md\nSide Quest: Agentic Workflow Security Architecture (Explain Like You're 5)"]
  node_060["17-SQ03 side-quest-17-03-prompt-injection.md\nSide Quest: [Prompt Injection](https://github.github.com/gh-aw/introduction/architecture/#threat-model) Attacks in Agentic Workflows"]
  node_061["17-SQ04 side-quest-17-04-permission-escalation.md\nSide Quest: Permission Escalation in [Agentic Workflows](https://github.github.com/gh-aw/introduction/overview/#what-are-agentic-workflows)"]
  node_062["17-SQ05 side-quest-17-05-supply-chain-mcp.md\nSide Quest: [Supply Chain](https://github.github.com/gh-aw/introduction/architecture/#threat-model) Attacks via MCP Tool Servers"]
  node_063["17-SQ06 side-quest-17-06-output-injection.md\nSide Quest: Output Injection via Safe Outputs"]
  node_064["17-SQ07 side-quest-17-07-repo-poisoning.md\nSide Quest: Repository Poisoning via Agentic Write Access"]
  node_065["18 18-share-and-reuse.md\nShare and Reuse Your Agentic Workflows"]
  node_066["19 19-research-driven-training-node.md\nBuild a Research-Driven Next Training Node"]
  node_067["20 20-persistent-memory.md\nMake Your Workflow Remember Across Runs"]
  node_068["20-SQ01 side-quest-20-01-memory-patterns.md\nSide Quest: Choosing Between [Cache Memory](https://github.github.com/gh-aw/reference/cache-memory/) and [Repo Memory](https://github.github.com/gh-aw/reference/repo-memory/)"]
  node_069["21 21-inline-sub-agents.md\nSplit Complex Workflows with [Inline Sub-Agents](https://github.github.com/gh-aw/reference/inline-sub-agents/)"]
  node_070["21-SQ01 side-quest-21-01-sub-agent-syntax.md\nSide Quest: Sub-Agent Syntax Reference"]
  node_071["22 22-error-handling-and-resilience.md\nMake Your Workflows Resilient to Failure"]
  node_072["22-SQ01 side-quest-22-01-failure-modes.md\nSide Quest: Recognizing Common Agentic Workflow Failure Modes"]
  node_073["23 23-ab-experiments.md\nTest Your Prompt Ideas with [A/B Experiments](https://github.github.com/gh-aw/experimental/experiments/)"]
  node_074["23-SQ01 side-quest-23-01-ab-roundrobin.md\nSide Quest: How A/B Experiment Round-Robin Assignment Works"]
  node_075["24 24-self-hosted-runners.md\nRun Your Agentic Workflow on a Self-Hosted Runner"]
  node_076["24-SQ01 side-quest-24-01-runner-infrastructure.md\nSide Quest: Self-Hosted Runner Infrastructure Deep Dive"]
  node_077["25 25-audit-and-observability.md\nAudit and Monitor Your Agentic Workflows"]
  node_078["25-SQ01 side-quest-25-01-audit-reference.md\nSide Quest: Audit Reference — Artifacts, Firewall Logs, and Report Contents"]
  node_079["26 26-manage-costs-and-budgets.md\nManage Costs and AI Credit Budgets"]
  node_080["26-SQ01 side-quest-26-01-forecast-costs.md\nSide Quest: Project Future AI Credit Costs with `gh aw forecast`"]
  node_081["27 27-evaluate-workflow-quality.md\nVerify Your Workflow Quality with Evals"]
  node_082["28 28-orchestrate-workflows.md\nOrchestrate Multiple Agentic Workflows"]
  node_083["29 29-skills-and-domain-knowledge.md\nTeach Your Agent Domain Knowledge with Skills"]
  node_084["29-SQ01 side-quest-29-01-skill-injection-strategies.md\nSide Quest: Skill Injection Strategies — Hint, Fusion, and Inline"]
  node_085["side-quest-06-03a-copilot-requests-permission side-quest-06-03a-copilot-requests-permission.md\nSide Quest: Method 1 — Copilot Requests Permission"]
  node_086["side-quest-06-03b-copilot-github-token side-quest-06-03b-copilot-github-token.md\nSide Quest: Method 2 — COPILOT_GITHUB_TOKEN Secret"]
  node_087["side-quest-06-03c-copilot-github-token-ui-only side-quest-06-03c-copilot-github-token-ui-only.md\nSide Quest: Method 2 (UI-only) — COPILOT_GITHUB_TOKEN Secret"]
  node_088["side-quest-07d-billing-paths side-quest-07d-billing-paths.md\nSide Quest: Copilot Billing Paths"]
  node_089["side-quest-09-01a-pattern-long-plan-chain side-quest-09-01a-pattern-long-plan-chain.md\nSide Quest 09-01a: Pattern — Long `[plan]` Chains"]
  node_090["side-quest-09-01b-pattern-empty-results side-quest-09-01b-pattern-empty-results.md\nSide Quest 09-01b: Pattern — Empty `[result]` Data"]
  node_091["side-quest-09-01c-pattern-safe-output-blocked side-quest-09-01c-pattern-safe-output-blocked.md\nSide Quest 09-01c: Pattern — [Safe-output](https://github.github.com/gh-aw/reference/safe-outputs/) `limit reached`"]
  node_092["side-quest-09-01d-pattern-permission-denied side-quest-09-01d-pattern-permission-denied.md\nSide Quest 09-01d: Pattern — `permission denied`"]
  node_093["side-quest-09-01e-pattern-done-no-write side-quest-09-01e-pattern-done-no-write.md\nSide Quest 09-01e: Pattern — \"Done\" but Nothing Written"]
  node_094["side-quest-09-01f-debugging-checklist side-quest-09-01f-debugging-checklist.md\nSide Quest 09-01f: Debugging Checklist"]
  node_095["side-quest-11-01b-workflow-structure side-quest-11-01b-workflow-structure.md\nSide Quest: Workflow File Structure at a Glance"]
  node_096["side-quest-enterprise-setup side-quest-enterprise-setup.md\nSide Quest: Enterprise Setup Considerations"]
  node_001 -->|next| node_002
  node_002 -->|next| node_006
  node_006 -->|capability:environment_ready| node_004
  node_006 -->|capability:gh_installed| node_004
  node_006 -->|capability:gh_authenticated| node_004
  node_003 -->|before| node_005
  node_006 -->|next| node_008
  node_007 -->|capability:environment_ready| node_006
  node_007 -->|capability:gh_installed| node_006
  node_007 -->|next| node_008
  node_002 -->|before| node_007
  node_006 -->|capability:environment_ready| node_007
  node_006 -->|capability:gh_installed| node_007
  node_006 -->|capability:gh_authenticated| node_007
  node_008 -->|next| node_009
  node_009 -->|next| node_010
  node_008 -->|before| node_009
  node_010 -->|before| node_009
  node_006 -->|capability:environment_ready| node_009
  node_006 -->|capability:gh_installed| node_009
  node_006 -->|capability:gh_authenticated| node_009
  node_010 -->|next| node_011
  node_009 -->|before| node_010
  node_011 -->|next| node_015
  node_009 -->|before| node_011
  node_008 -->|before| node_012
  node_009 -->|before| node_012
  node_009 -->|before| node_013
  node_009 -->|before| node_014
  node_006 -->|capability:environment_ready| node_014
  node_006 -->|capability:gh_installed| node_014
  node_006 -->|capability:gh_authenticated| node_014
  node_015 -->|next| node_020
  node_006 -->|before| node_015
  node_009 -->|before| node_015
  node_006 -->|capability:environment_ready| node_015
  node_006 -->|capability:gh_installed| node_015
  node_006 -->|capability:gh_authenticated| node_015
  node_006 -->|capability:environment_ready| node_016
  node_006 -->|capability:gh_installed| node_016
  node_006 -->|capability:gh_authenticated| node_016
  node_006 -->|capability:environment_ready| node_017
  node_006 -->|capability:gh_installed| node_017
  node_006 -->|capability:gh_authenticated| node_017
  node_015 -->|before| node_018
  node_006 -->|capability:environment_ready| node_018
  node_006 -->|capability:gh_installed| node_018
  node_006 -->|capability:gh_authenticated| node_018
  node_019 -->|next| node_020
  node_002 -->|before| node_019
  node_009 -->|before| node_019
  node_007 -->|before| node_019
  node_006 -->|capability:environment_ready| node_019
  node_006 -->|capability:gh_installed| node_019
  node_006 -->|capability:gh_authenticated| node_019
  node_020 -->|next| node_021
  node_015 -->|before| node_020
  node_021 -->|before| node_020
  node_006 -->|capability:environment_ready| node_020
  node_006 -->|capability:gh_installed| node_020
  node_006 -->|capability:gh_authenticated| node_020
  node_021 -->|next| node_023
  node_020 -->|before| node_021
  node_006 -->|capability:environment_ready| node_022
  node_006 -->|capability:gh_installed| node_022
  node_006 -->|capability:gh_authenticated| node_022
  node_023 -->|next| node_024
  node_021 -->|before| node_023
  node_006 -->|capability:environment_ready| node_023
  node_006 -->|capability:gh_installed| node_023
  node_006 -->|capability:gh_authenticated| node_023
  node_024 -->|next| node_026
  node_023 -->|before| node_024
  node_006 -->|capability:environment_ready| node_024
  node_006 -->|capability:gh_installed| node_024
  node_006 -->|capability:gh_authenticated| node_024
  node_023 -->|before| node_025
  node_006 -->|capability:environment_ready| node_025
  node_006 -->|capability:gh_installed| node_025
  node_006 -->|capability:gh_authenticated| node_025
  node_026 -->|next| node_046
  node_024 -->|before| node_026
  node_006 -->|capability:environment_ready| node_026
  node_006 -->|capability:gh_installed| node_026
  node_006 -->|capability:gh_authenticated| node_026
  node_024 -->|before| node_027
  node_006 -->|before| node_028
  node_024 -->|before| node_028
  node_007 -->|before| node_028
  node_026 -->|before| node_029
  node_028 -->|before| node_029
  node_020 -->|before| node_030
  node_006 -->|capability:environment_ready| node_030
  node_006 -->|capability:gh_installed| node_030
  node_006 -->|capability:gh_authenticated| node_030
  node_031 -->|next| node_038
  node_020 -->|before| node_031
  node_006 -->|capability:environment_ready| node_031
  node_006 -->|capability:gh_installed| node_031
  node_006 -->|capability:gh_authenticated| node_031
  node_020 -->|before| node_033
  node_026 -->|before| node_033
  node_020 -->|before| node_034
  node_006 -->|capability:environment_ready| node_034
  node_006 -->|capability:gh_installed| node_034
  node_006 -->|capability:gh_authenticated| node_034
  node_006 -->|capability:environment_ready| node_035
  node_006 -->|capability:gh_installed| node_035
  node_006 -->|capability:gh_authenticated| node_035
  node_006 -->|capability:environment_ready| node_036
  node_006 -->|capability:gh_installed| node_036
  node_006 -->|capability:gh_authenticated| node_036
  node_015 -->|before| node_037
  node_004 -->|before| node_037
  node_031 -->|before| node_037
  node_006 -->|capability:environment_ready| node_037
  node_006 -->|capability:gh_installed| node_037
  node_006 -->|capability:gh_authenticated| node_037
  node_031 -->|before| node_038
  node_006 -->|capability:environment_ready| node_038
  node_006 -->|capability:gh_installed| node_038
  node_006 -->|capability:gh_authenticated| node_038
  node_009 -->|before| node_039
  node_015 -->|before| node_039
  node_006 -->|capability:environment_ready| node_039
  node_006 -->|capability:gh_installed| node_039
  node_006 -->|capability:gh_authenticated| node_039
  node_026 -->|before| node_040
  node_006 -->|capability:environment_ready| node_040
  node_006 -->|capability:gh_installed| node_040
  node_006 -->|capability:gh_authenticated| node_040
  node_047 -->|before| node_041
  node_006 -->|capability:environment_ready| node_041
  node_006 -->|capability:gh_installed| node_041
  node_006 -->|capability:gh_authenticated| node_041
  node_026 -->|before| node_042
  node_006 -->|capability:environment_ready| node_042
  node_006 -->|capability:gh_installed| node_042
  node_006 -->|capability:gh_authenticated| node_042
  node_047 -->|before| node_043
  node_006 -->|capability:environment_ready| node_043
  node_006 -->|capability:gh_installed| node_043
  node_006 -->|capability:gh_authenticated| node_043
  node_047 -->|before| node_044
  node_006 -->|capability:environment_ready| node_044
  node_006 -->|capability:gh_installed| node_044
  node_006 -->|capability:gh_authenticated| node_044
  node_047 -->|before| node_045
  node_077 -->|before| node_045
  node_079 -->|before| node_045
  node_006 -->|capability:environment_ready| node_045
  node_006 -->|capability:gh_installed| node_045
  node_006 -->|capability:gh_authenticated| node_045
  node_046 -->|next| node_047
  node_026 -->|before| node_046
  node_047 -->|next| node_048
  node_026 -->|before| node_047
  node_006 -->|capability:environment_ready| node_047
  node_006 -->|capability:gh_installed| node_047
  node_006 -->|capability:gh_authenticated| node_047
  node_048 -->|next| node_051
  node_020 -->|before| node_048
  node_026 -->|before| node_048
  node_006 -->|capability:environment_ready| node_048
  node_006 -->|capability:gh_installed| node_048
  node_006 -->|capability:gh_authenticated| node_048
  node_049 -->|next| node_051
  node_048 -->|before| node_049
  node_048 -->|before| node_050
  node_006 -->|capability:environment_ready| node_050
  node_006 -->|capability:gh_installed| node_050
  node_006 -->|capability:gh_authenticated| node_050
  node_051 -->|next| node_057
  node_015 -->|before| node_051
  node_020 -->|before| node_051
  node_026 -->|before| node_051
  node_006 -->|capability:environment_ready| node_051
  node_006 -->|capability:gh_installed| node_051
  node_006 -->|capability:gh_authenticated| node_051
  node_051 -->|before| node_053
  node_020 -->|before| node_054
  node_051 -->|before| node_054
  node_051 -->|before| node_055
  node_051 -->|before| node_056
  node_053 -->|before| node_056
  node_057 -->|next| node_065
  node_015 -->|before| node_057
  node_020 -->|before| node_057
  node_006 -->|capability:environment_ready| node_057
  node_006 -->|capability:gh_installed| node_057
  node_006 -->|capability:gh_authenticated| node_057
  node_057 -->|before| node_058
  node_006 -->|capability:environment_ready| node_058
  node_006 -->|capability:gh_installed| node_058
  node_006 -->|capability:gh_authenticated| node_058
  node_009 -->|before| node_059
  node_020 -->|before| node_059
  node_057 -->|before| node_059
  node_057 -->|before| node_061
  node_058 -->|before| node_062
  node_062 -->|before| node_063
  node_057 -->|before| node_064
  node_065 -->|next| node_066
  node_026 -->|before| node_065
  node_006 -->|capability:environment_ready| node_065
  node_006 -->|capability:gh_installed| node_065
  node_006 -->|capability:gh_authenticated| node_065
  node_066 -->|next| node_067
  node_065 -->|before| node_066
  node_006 -->|capability:environment_ready| node_066
  node_006 -->|capability:gh_installed| node_066
  node_006 -->|capability:gh_authenticated| node_066
  node_067 -->|next| node_069
  node_020 -->|before| node_067
  node_057 -->|before| node_067
  node_038 -->|before| node_067
  node_006 -->|capability:environment_ready| node_067
  node_006 -->|capability:gh_installed| node_067
  node_006 -->|capability:gh_authenticated| node_067
  node_020 -->|before| node_068
  node_067 -->|before| node_068
  node_069 -->|next| node_071
  node_020 -->|before| node_069
  node_022 -->|before| node_069
  node_006 -->|capability:environment_ready| node_069
  node_006 -->|capability:gh_installed| node_069
  node_006 -->|capability:gh_authenticated| node_069
  node_069 -->|before| node_070
  node_022 -->|before| node_070
  node_006 -->|capability:environment_ready| node_070
  node_006 -->|capability:gh_installed| node_070
  node_006 -->|capability:gh_authenticated| node_070
  node_071 -->|next| node_073
  node_026 -->|before| node_071
  node_006 -->|capability:environment_ready| node_071
  node_006 -->|capability:gh_installed| node_071
  node_006 -->|capability:gh_authenticated| node_071
  node_026 -->|before| node_072
  node_071 -->|before| node_072
  node_073 -->|next| node_075
  node_020 -->|before| node_073
  node_022 -->|before| node_073
  node_006 -->|capability:environment_ready| node_073
  node_006 -->|capability:gh_installed| node_073
  node_006 -->|capability:gh_authenticated| node_073
  node_075 -->|next| node_077
  node_026 -->|before| node_075
  node_096 -->|before| node_075
  node_006 -->|capability:environment_ready| node_075
  node_006 -->|capability:gh_installed| node_075
  node_006 -->|capability:gh_authenticated| node_075
  node_075 -->|before| node_076
  node_077 -->|next| node_079
  node_015 -->|before| node_077
  node_026 -->|before| node_077
  node_006 -->|capability:environment_ready| node_077
  node_006 -->|capability:gh_installed| node_077
  node_006 -->|capability:gh_authenticated| node_077
  node_015 -->|before| node_078
  node_077 -->|before| node_078
  node_006 -->|capability:environment_ready| node_078
  node_006 -->|capability:gh_installed| node_078
  node_006 -->|capability:gh_authenticated| node_078
  node_077 -->|before| node_079
  node_006 -->|capability:environment_ready| node_079
  node_006 -->|capability:gh_installed| node_079
  node_006 -->|capability:gh_authenticated| node_079
  node_006 -->|capability:environment_ready| node_080
  node_006 -->|capability:gh_installed| node_080
  node_006 -->|capability:gh_authenticated| node_080
  node_081 -->|next| node_082
  node_023 -->|before| node_081
  node_073 -->|before| node_081
  node_079 -->|before| node_081
  node_006 -->|capability:environment_ready| node_081
  node_006 -->|capability:gh_installed| node_081
  node_006 -->|capability:gh_authenticated| node_081
  node_082 -->|next| node_083
  node_047 -->|before| node_082
  node_081 -->|before| node_082
  node_022 -->|before| node_082
  node_006 -->|capability:environment_ready| node_082
  node_006 -->|capability:gh_installed| node_082
Loading

Ordering constraints (334 total, generated)

The full generated constraint list is large (334 edges across 96 pages). The constraints relevant to the confirmed problem and to the reviewed cycle nodes are excerpted below; the complete list was reviewed in full during this pass.

- 04-github-actions-intro.md must come before 05-agentic-workflows-intro.md (next-step link)
- 05-agentic-workflows-intro.md must come before 05b-agentic-workflows-security.md (next-step link + "Before You Start" back-reference — mutual link, reviewed as false-positive cycle)
- 06-install-gh-aw.md must come before 07-your-first-workflow.md (capability:gh_authenticated — gh auth verified in Step 6)
- 07-your-first-workflow.md must come before 07d-confirm-model-access.md (next-step link + "Before You Start" back-reference — mutual link, reviewed as false-positive cycle)
- 07-your-first-workflow.md must come before 16-connect-data-source.md (capability:gh_authenticated — .lock.yml first produced here)
- 02a-setup-codespace.md and side-quest-02-01-local-terminal.md mutually satisfy capability:environment_ready / gh_installed / gh_authenticated for each other (parallel alternative setup paths, reviewed as false-positive cycle)

Confirmed cycles, feedback loops, and weird cycles

All 3 reported instances were manually reviewed and found to be false positives (intentional companion-page or parallel-path back-links, not real ordering bugs):

  • Cycle/feedback loop/weird cycle: 07-your-first-workflow.md07d-confirm-model-access.md (edge types: before, next) — 07d is an error-recovery companion page for Step 7's model-access check; the "Before You Start" back-link is intentional so learners can jump straight back after fixing access.
  • Cycle/feedback loop/weird cycle: 05-agentic-workflows-intro.md05b-agentic-workflows-security.md (edge types: before, next) — sequential pages with a normal "you've read the prior page" back-reference, not a real dependency loop.
  • Cycle/feedback loop/weird cycle: 02a-setup-codespace.mdside-quest-02-01-local-terminal.md (edge types: capability:environment_ready, capability:gh_authenticated, capability:gh_installed) — these are two mutually-exclusive alternative setup paths (Codespace vs. local machine), each recommending the other as a fallback; not a real ordering violation.

Ready for resolution

This issue is ready for an agent to resolve: reword or relocate the "Activity 1" .lock.yml exercise in workshop/05-agentic-workflows-intro.md so it does not ask learners to open a file that does not exist yet, run npx --yes markdownlint-cli2 "**/*.md" afterward, and confirm no other workshop step references a .lock.yml file before Step 7 creates one.

Generated by 🧭 Workshop Order Review · copilot · auto · 146.8 AIC · ⌖ 13.3 AIC · ⊞ 7.5K ·

  • expires on Sep 11, 2026, 6:53 PM UTC

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions