Skip to content

Commit 2e93ca3

Browse files
committed
Reduced content
1 parent 81a193b commit 2e93ca3

68 files changed

Lines changed: 818 additions & 6602 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Delivery Assurance Standard
2+
3+
Delivery assurance confirms that a customer-owned outcome is safe to adopt. It is a review overlay, not a second delivery guide.
4+
5+
## Record four things
6+
7+
1. **Authorized scope** — the customer tenant, repository, service, or migration wave, and the named customer owner who approved it.
8+
2. **Evidence** — the completed items in the delivery guide's Definition of Done, with links or locations for the evidence.
9+
3. **Open risk** — an unresolved constraint, its control, and the person accountable for it. Record "none" when no material risk remains.
10+
4. **Next decision** — the handover, pilot, rollout, cutover, or follow-up action, with its owner and target date.
11+
12+
## Review principles
13+
14+
- The delivery guide is the canonical source for tasks, acceptance criteria, commands, and troubleshooting. Do not duplicate its checklist here.
15+
- Inspect evidence independently where practical. A completed task is not sufficient when the outcome, scope, or control cannot be demonstrated.
16+
- Use a customer-owned environment whenever authorized. A sample environment is evidence of a pattern, not evidence of customer adoption.
17+
- Keep session guidance exception-only: record controls or risks that are specific to this product, tenant, or migration. Put general coaching and teaching material in facilitator notes, not delivery assurance.
18+
19+
## Completion
20+
21+
The reviewer accepts the outcome when the guide's Definition of Done is evidenced, the four records above are complete, and the customer owner agrees to the next decision.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/* Shared delivery-assurance standard page. */
2+
(function () {
3+
'use strict';
4+
5+
document.addEventListener('DOMContentLoaded', async () => {
6+
const body = document.getElementById('assuranceBody');
7+
if (!body) return;
8+
9+
try {
10+
const response = await fetch('assets/data/delivery-assurance.md', { cache: 'no-cache' });
11+
if (!response.ok) throw new Error('HTTP ' + response.status);
12+
FP.renderMd(await response.text(), body);
13+
} catch (error) {
14+
body.innerHTML = '<p class="text-dim">Could not load the delivery assurance standard.</p>';
15+
}
16+
});
17+
})();

docs/build.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
* docs/assets/data/dependency-graph.json — prereq graph (nodes + edges)
1313
* docs/assets/data/challenges/<id>/README.md — delivery guide copy
1414
* docs/assets/data/challenges/<id>/COACH.md — coach guide copy
15+
* docs/assets/data/delivery-assurance.md — shared assurance standard
1516
* docs/resources/<moduleId>/... — module resource files
1617
*
1718
* Validation (exits non-zero on errors):
@@ -79,6 +80,7 @@ const ROOT = path.resolve(__dirname, '..');
7980
const MODULES_DIR = path.join(ROOT, 'modules');
8081
const OUT_DATA_DIR = path.join(__dirname, 'assets', 'data');
8182
const OUT_GUIDES_DIR = path.join(OUT_DATA_DIR, 'challenges');
83+
const ASSURANCE_STANDARD_PATH = path.join(ROOT, 'modules', 'DELIVERY_ASSURANCE.md');
8284
const OUT_RESOURCES_DIR = path.join(__dirname, 'resources');
8385
const OUTCOMES_PATH = path.join(ROOT, 'outcomes.json');
8486
const CURRENT_SOURCE_REPO = 'microsoft/frontier-agentic-devops-rvas';
@@ -251,6 +253,9 @@ function validateLocalSourceAttribution(meta, metaPath) {
251253
function rewriteResourceLinksForPages(text, moduleId) {
252254
const moduleResources = `resources/${moduleId}/`;
253255
return text.replace(
256+
/(\]\()(?:\.\.\/)+DELIVERY_ASSURANCE\.md/g,
257+
'$1delivery-assurance.html',
258+
).replace(
254259
/(\]\()(https:\/\/microsoft\.github\.io\/resources\/|(?:\.\.\/)+[Rr]esources\/|\/[Rr]esources\/|(?:\.\/)?[Rr]esources\/)/g,
255260
`$1${moduleResources}`,
256261
).replace(
@@ -401,6 +406,8 @@ function main() {
401406
fs.rmSync(OUT_RESOURCES_DIR, { recursive: true, force: true });
402407
fs.rmSync(OUT_GUIDES_DIR, { recursive: true, force: true });
403408
fs.mkdirSync(OUT_RESOURCES_DIR, { recursive: true });
409+
fs.mkdirSync(OUT_DATA_DIR, { recursive: true });
410+
fs.copyFileSync(ASSURANCE_STANDARD_PATH, path.join(OUT_DATA_DIR, 'delivery-assurance.md'));
404411

405412
/* ── 1. Collect all challenges from all modules ── */
406413
for (const [moduleId, moduleCfg] of Object.entries(MODULE_CONFIG)) {

docs/challenge.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ <h1 id="challengeTitle">Loading…</h1>
7777
<!-- Coach warning banner (shown only in coach view) -->
7878
<div class="coach-flag" role="alert" aria-live="polite">
7979
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 2l3 7h7l-5.5 4 2 7L12 16l-6.5 4 2-7L2 9h7z"/></svg>
80-
Delivery assurance view — implementation controls, evidence expectations, and verification. Keep this out of the delivery-team room.
80+
Delivery assurance view — reviewer controls and evidence expectations. <a href="delivery-assurance.html">Read the shared standard.</a>
8181
</div>
8282

8383
<!-- Rendered Markdown guide -->

docs/delivery-assurance.html

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<!doctype html>
2+
<html lang="en" data-theme="light">
3+
<head>
4+
<meta charset="utf-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1" />
6+
<title>Delivery Assurance Standard — Agentic DevOps</title>
7+
<meta name="description" content="The shared delivery assurance standard for Agentic DevOps work packages." />
8+
<link rel="preconnect" href="https://fonts.googleapis.com" />
9+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
10+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Outfit:wght@500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
11+
<link rel="stylesheet" href="assets/css/styles.css" />
12+
<link rel="stylesheet" href="assets/css/shell.css" />
13+
<link rel="icon" href="assets/img/logo-mark-white.png" />
14+
<script src="assets/js/marked.min.js"></script>
15+
</head>
16+
<body>
17+
<header class="nav" role="banner">
18+
<div class="nav-inner">
19+
<a class="brand" href="index.html" aria-label="RVAS — Agentic DevOps">
20+
<img src="assets/img/logo-full.png" alt="RVAP" class="rvap-nav-logo" height="32">
21+
</a>
22+
<nav class="nav-links" aria-label="Primary">
23+
<a href="index.html">Home</a>
24+
<a href="catalog.html">Catalog</a>
25+
</nav>
26+
</div>
27+
</header>
28+
<main id="mainContent">
29+
<section class="ch-detail-hero">
30+
<div class="wrap">
31+
<nav class="breadcrumbs" aria-label="Breadcrumb"><a href="index.html">Home</a><span></span><span>Delivery assurance</span></nav>
32+
<h1>Delivery Assurance Standard</h1>
33+
<p>Shared controls for every customer delivery work package.</p>
34+
</div>
35+
</section>
36+
<section class="section-tight">
37+
<div class="wrap">
38+
<article class="guide-body" id="assuranceBody" aria-live="polite">
39+
<p class="text-dim">Loading standard…</p>
40+
</article>
41+
</div>
42+
</section>
43+
</main>
44+
<script src="assets/js/core.js"></script>
45+
<script src="assets/js/delivery-assurance.js"></script>
46+
<script src="assets/js/shell.js"></script>
47+
</body>
48+
</html>

modules/DELIVERY_ASSURANCE.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Delivery Assurance Standard
2+
3+
Delivery assurance confirms that a customer-owned outcome is safe to adopt. It is a review overlay, not a second delivery guide.
4+
5+
## Record four things
6+
7+
1. **Authorized scope** — the customer tenant, repository, service, or migration wave, and the named customer owner who approved it.
8+
2. **Evidence** — the completed items in the delivery guide's Definition of Done, with links or locations for the evidence.
9+
3. **Open risk** — an unresolved constraint, its control, and the person accountable for it. Record "none" when no material risk remains.
10+
4. **Next decision** — the handover, pilot, rollout, cutover, or follow-up action, with its owner and target date.
11+
12+
## Review principles
13+
14+
- The delivery guide is the canonical source for tasks, acceptance criteria, commands, and troubleshooting. Do not duplicate its checklist here.
15+
- Inspect evidence independently where practical. A completed task is not sufficient when the outcome, scope, or control cannot be demonstrated.
16+
- Use a customer-owned environment whenever authorized. A sample environment is evidence of a pattern, not evidence of customer adoption.
17+
- Keep session guidance exception-only: record controls or risks that are specific to this product, tenant, or migration. Put general coaching and teaching material in facilitator notes, not delivery assurance.
18+
19+
## Completion
20+
21+
The reviewer accepts the outcome when the guide's Definition of Done is evidenced, the four records above are complete, and the customer owner agrees to the next decision.
Lines changed: 9 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,14 @@
1-
# Coach Guide: Activity S00 — Environment Setup
1+
# Activity S00 — Environment Setup — Delivery Assurance
22

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.
44

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
126

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.
1411

15-
## Facilitation Hints
12+
## Session-specific reviewer focus
1613

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

Comments
 (0)