|
1 | | -# Coach Guide: Activity S00 — Environment Setup |
| 1 | +# Activity S00 — Environment Setup — Delivery Assurance |
2 | 2 |
|
3 | | -## Objectives |
| 3 | +This is a concise review overlay. Apply the [Delivery Assurance Standard](../../../DELIVERY_ASSURANCE.md); the paired `README.md` is the canonical source for tasks, evidence, commands, and Definition of Done. |
4 | 4 |
|
5 | | -- Facilitate a GHAS configuration and ownership record in `modules/ghas/resources/ghas-governance-practice.template.md`, not merely a completed setup. |
6 | | -- Help the delivery team select a real repository or service, or explicitly use Juice Shop as the fallback practice target. |
7 | | -- Ensure the baseline records scope and criticality, enabled and missing GHAS capabilities, and the repository or service owner, security partner, and delivery team. |
8 | | -- Ensure the baseline records least privilege, human accountability for approval and merge, and normal GHAS and PR validation for agent-originated changes. |
9 | | -- Ensure the GHAS target repository is created in a participant/team/organizer-owned org, not a Microsoft-provided shared repo. |
10 | | -- Verify GHAS enablement, access, `gh` authentication, branch creation, and the Codespaces or local environment; validate Juice Shop on port 3000 when used as the fallback. |
11 | | -- Surface access and licensing blockers early, assign each an owner and target date, and apply fallback paths before Activity S01. |
| 5 | +## Assurance record |
12 | 6 |
|
13 | | ---- |
| 7 | +- **Authorized scope:** record the customer target and approving owner. |
| 8 | +- **Evidence:** inspect the completed Definition of Done in `README.md`; link or attach the evidence. |
| 9 | +- **Open risk:** record the unresolved risk and accountable owner, or `none`. |
| 10 | +- **Next decision:** record the handover, pilot, rollout, cutover, or follow-up action with owner and date. |
14 | 11 |
|
15 | | -## Facilitation Hints |
| 12 | +## Session-specific reviewer focus |
16 | 13 |
|
17 | | -- Push Codespaces first. If local setup consumes more than 10 minutes, redirect to Codespaces. |
18 | | -- Start with the GHAS configuration and ownership record. Ask which real repository or service is in scope, why its criticality matters, and whether Juice Shop is only the fallback practice target. |
19 | | -- Ask for a show-of-hands check after the first 10 minutes: successful commands and a completed record with named owners. |
20 | | -- Pair any blocked participant with a working neighbor; one blocker should not stall the group. |
21 | | -- Start by having the responsible participant, team lead, or organizer run: |
22 | | - `./setup.sh provision ghas-00 --org <org>` or `./setup.ps1 provision ghas-00 -Org <org>`. |
23 | | -- Verify that Codespaces is enabled for the org before the event starts (org Settings → Codespaces → Allow for all members). If not enabled, participants see no Codespace option. |
24 | | -- If Copilot is not yet licensed for all participants, pair them so every team still practices the Copilot-assisted review loop in S01–S06. |
25 | | -- Confirm GHAS is enabled on the provisioned org repo (Settings → Code security and analysis). CodeQL, secret scanning, Dependabot alerts, and push protection must all be on — S01–S06 depend on them. |
26 | | -- Confirm the repository access list includes every participant or team that needs to push a branch. The script creates/configures the repo; it does not guess workshop roster membership. |
27 | | -- Do not accept a feature toggle or a running storefront as completion by itself. Validate that enabled and missing GHAS capabilities, accountable roles, agentic delivery principles, and blocker ownership and dates are recorded in the baseline. |
28 | | -- When discussing agentic delivery, keep the scope to the documented principles: least privilege; humans remain accountable for approval and merge; and agent-originated changes receive normal GHAS and PR validation. |
29 | | - |
30 | | ---- |
31 | | - |
32 | | -## Common Blockers & Fixes |
33 | | - |
34 | | -| Symptom | Cause | Fix | |
35 | | -|---|---|---| |
36 | | -| `gh auth status` fails | Not logged in | Run `gh auth login` again; choose HTTPS | |
37 | | -| Codespace build times out | Network / quota | Retry once; fall back to local clone | |
38 | | -| `npm start` fails | Node deps not installed | Run `npm install` from the Juice Shop repo root first, then `npm start` | |
39 | | -| Port 3000 not accessible in Codespace | Port not forwarded | Open Ports tab in VS Code; forward port 3000 manually if needed | |
40 | | -| Branch push rejected | Branch protection misconfigured | Check that push protection only blocks `main`, not participant branches | |
41 | | -| Org repo not accessible | Participant not added to repo/org | Add participant or team under repo Settings → Collaborators and teams; or provide read-only clone baseline | |
42 | | -| Codespaces option missing | Codespaces not enabled for org | Enable under org Settings → Codespaces before the event | |
43 | | -| Juice Shop shows only `Cannot GET /` | App started from wrong directory or partial install | Ensure the participant is in the provisioned Juice Shop repo root and rerun `npm install && npm start` | |
44 | | -| GHAS setup script warns on feature enablement | Missing license or insufficient admin permission | Have an org owner or repo admin enable the feature manually in Settings → Code security and analysis | |
45 | | - |
46 | | ---- |
47 | | - |
48 | | -## Success Check |
49 | | - |
50 | | -Before releasing the group to Activity S01, validate the following evidence with the |
51 | | -delivery team: |
52 | | - |
53 | | -- [ ] A real repository or service is selected, or Juice Shop is recorded as the fallback practice target |
54 | | -- [ ] `modules/ghas/resources/ghas-governance-practice.template.md` records the in-scope repository or service and its criticality |
55 | | -- [ ] Enabled and missing GHAS capabilities are recorded |
56 | | -- [ ] The repository or service owner, security partner, and delivery team are recorded as accountable roles |
57 | | -- [ ] The GHAS configuration and ownership record includes least privilege, human accountability for approval and merge, and normal GHAS and PR validation for agent-originated changes |
58 | | -- [ ] Access or licensing blockers are recorded with an owner and target date |
59 | | -- [ ] The target repository is accessible, GHAS enablement is verified or recorded as missing, and the working branch is pushed |
60 | | -- [ ] The delivery environment is usable: `gh auth status` and `gh repo view` succeed, and Juice Shop loads on port 3000 when using the fallback |
61 | | - |
62 | | ---- |
63 | | - |
64 | | -## Access-Blocked Fallback |
65 | | - |
66 | | -If a participant cannot reach the full environment, apply the smallest unblock: |
67 | | - |
68 | | -1. Codespaces quota: Use a local clone with Node.js installed, or request org Codespaces billing before the event. |
69 | | -2. Org access: Coach adds participant to the repo or org team, or provides a pre-cloned repo baseline branch via `git bundle`. |
70 | | -3. Juice Shop unavailable (Docker blocked locally, Codespace quota exhausted): |
71 | | - - Participants can still complete S01–S06 review steps by reading the pre-populated alert corpus in the Security tab — no live app required for the code-review loop. |
72 | | - - Coach provides a pre-scanned results packet: export of CodeQL SARIF results + Dependabot alert JSON + secret scanning summary so participants can proceed with the analysis tasks even without a running app. |
73 | | - - For fixes: participants write and submit PRs; CodeQL runs on the PR branch in GitHub Actions and validates the fix without needing a local running instance. |
74 | | -4. GitHub Actions / CodeQL not running: Coach triggers a manual workflow run (`gh workflow run codeql.yml`) or shares pre-generated SARIF results for the alert-reading portion. |
75 | | - |
76 | | -## Useful references for coaching |
77 | | - |
78 | | -- [Codespaces quickstart](https://docs.github.com/en/codespaces/getting-started/quickstart), [GitHub CLI manual](https://cli.github.com/manual/). |
| 14 | +- No additional assurance exception: review the delivery guide’s Definition of Done. |
0 commit comments