Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d1ff6934c6 | |||
| ccbccb02ac | |||
| 574e6cb189 | |||
| 358aa62c3a |
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"phase": 0,
|
"phase": 2,
|
||||||
"stage": "complete",
|
"stage": "complete",
|
||||||
"milestone": "v1.22",
|
"milestone": "v1.22",
|
||||||
"phase_role": "pre_execution",
|
"phase_role": "execution",
|
||||||
"attempts": 0,
|
"attempts": 0,
|
||||||
"updated_at": "2026-08-11T14:40:00Z",
|
"updated_at": "2026-08-11T14:50:00Z",
|
||||||
"milestone_complete": false,
|
"milestone_complete": false,
|
||||||
"tag": "v1.21.0",
|
"tag": "v1.21.2",
|
||||||
"requirements": ["REQ-254","REQ-255","REQ-256","REQ-257","REQ-258","REQ-259","REQ-260","REQ-261","REQ-262"],
|
"requirements": ["REQ-257","REQ-258"],
|
||||||
"notes": "v1.22 P0 complete. Tag v1.21.0. Merged phase/00 -> milestone/v1.22-deck-layout-fix. Release creation failed (local-only fallback). Phase branch deleted. Proceeding to P1 (theme CSS)."
|
"notes": "v1.22 P2 complete. Tag v1.21.2. render_deck.sh deleted, CLI versions pinned, 2x scale + transparent bg added. 4 render tests + 1 no-forge test pass. Proceeding to P3 (mermaid re-layout)."
|
||||||
}
|
}
|
||||||
@@ -84,8 +84,7 @@ CHROME_PATH=/root/.cache/ms-playwright/chromium-1217/chrome-linux64/chrome \
|
|||||||
|
|
||||||
HTML export inlines images as base64 data URIs. PPTX export requires
|
HTML export inlines images as base64 data URIs. PPTX export requires
|
||||||
`--allow-local-files` so the local PNG diagrams are embedded in the file.
|
`--allow-local-files` so the local PNG diagrams are embedded in the file.
|
||||||
The render + commit + attach pipeline is automated by `scripts/render_deck.sh`
|
The render + commit + attach pipeline is automated by `scripts/render_slides.sh`.
|
||||||
and `scripts/render_slides.sh`.
|
|
||||||
|
|
||||||
### Step 4 — Talking points (presenter cues)
|
### Step 4 — Talking points (presenter cues)
|
||||||
|
|
||||||
|
|||||||
@@ -1,19 +1,11 @@
|
|||||||
%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#1B1B1B", "primaryBorderColor": "#D6002A", "primaryTextColor": "#fff", "secondaryColor": "#fff", "secondaryBorderColor": "#D6002A", "secondaryTextColor": "#1B1B1B", "tertiaryColor": "#F0F0F0", "clusterBkg": "#F0F0F0", "lineColor": "#1B1B1B", "fontFamily": "\"Akkurat Pro\", \"Helvetica Neue\", \"Arial\", sans-serif"}}}%%
|
%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#1B1B1B", "primaryBorderColor": "#D6002A", "primaryTextColor": "#fff", "secondaryColor": "#fff", "secondaryBorderColor": "#D6002A", "secondaryTextColor": "#1B1B1B", "tertiaryColor": "#F0F0F0", "clusterBkg": "#F0F0F0", "lineColor": "#1B1B1B", "fontFamily": "\"Akkurat Pro\", \"Helvetica Neue\", \"Arial\", sans-serif"}}}%%
|
||||||
|
|
||||||
flowchart LR
|
flowchart TB
|
||||||
A["Contract"] --> B["Resolver"]
|
A["Contract → Resolver → Adapter"] --> D["Checkov (static code)"]
|
||||||
B --> C["Adapter"]
|
D --> E["Terraform plan"]
|
||||||
C --> D["Checkov<br/>(static code)"]
|
E --> F["Wiz (on plan) → Confidence signal → Stage gate"]
|
||||||
D --> E["Terraform<br/>plan"]
|
F --> I["Apply → Evidence + Ledger"]
|
||||||
E --> F["Wiz<br/>(on plan)"]
|
|
||||||
F --> G["Confidence<br/>signal"]
|
|
||||||
G --> H{"Stage<br/>gate"}
|
|
||||||
H -->|"dev: autonomous"| I["Apply"]
|
|
||||||
H -->|"qa/prod/dr: attested"| I
|
|
||||||
I --> J["Evidence +<br/>Ledger"]
|
|
||||||
classDef accent fill:#1B1B1B,color:#fff,stroke:#D6002A,stroke-width:2px
|
classDef accent fill:#1B1B1B,color:#fff,stroke:#D6002A,stroke-width:2px
|
||||||
classDef supporting fill:#fff,color:#1B1B1B,stroke:#D6002A,stroke-width:1px
|
classDef supporting fill:#fff,color:#1B1B1B,stroke:#D6002A,stroke-width:1px
|
||||||
classDef decision fill:#D6002A,color:#fff,stroke:#1B1B1B,stroke-width:2px
|
class D,E,F accent
|
||||||
class D,E,F,G,J accent
|
class A,I supporting
|
||||||
class H decision
|
|
||||||
class A,B,C,I supporting
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 36 KiB |
@@ -102,7 +102,7 @@ Every hour a developer spends writing, deploying, fixing, or remediating infrast
|
|||||||
|
|
||||||
**How intent becomes verified infrastructure — fail-fast policy scanning before the plan, runtime scanning after it.**
|
**How intent becomes verified infrastructure — fail-fast policy scanning before the plan, runtime scanning after it.**
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
- **Contract → resolver → adapter → Checkov on static code (before plan) → terraform plan → Wiz on the plan → confidence signal → stage gate → apply → evidence + ledger**
|
- **Contract → resolver → adapter → Checkov on static code (before plan) → terraform plan → Wiz on the plan → confidence signal → stage gate → apply → evidence + ledger**
|
||||||
- **Fail-fast, quick feedback** — Checkov runs on the authored Terraform code before `terraform plan` so developers get immediate policy feedback
|
- **Fail-fast, quick feedback** — Checkov runs on the authored Terraform code before `terraform plan` so developers get immediate policy feedback
|
||||||
@@ -152,7 +152,7 @@ Separation-of-duties on prod: the approver cannot be the same person who built t
|
|||||||
|
|
||||||
**Every metric in this deck is traceable to a real emitted signal — the live-ops dashboard makes operations visible in PowerBI.**
|
**Every metric in this deck is traceable to a real emitted signal — the live-ops dashboard makes operations visible in PowerBI.**
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
- **Platform components → CloudEvents envelope → event log + decision ledger + run records → collector → cold store → PowerBI views → live ops dashboard**
|
- **Platform components → CloudEvents envelope → event log + decision ledger + run records → collector → cold store → PowerBI views → live ops dashboard**
|
||||||
- **The live ops dashboard (PowerBI)** surfaces the four CTO-grade metrics (Lead Time, Vulnerability Count, MTTR, Cloud Spend) alongside trust metrics (Decision Ledger coverage, Attestation coverage) and efficiency metrics (touchless resolution, escalation frequency)
|
- **The live ops dashboard (PowerBI)** surfaces the four CTO-grade metrics (Lead Time, Vulnerability Count, MTTR, Cloud Spend) alongside trust metrics (Decision Ledger coverage, Attestation coverage) and efficiency metrics (touchless resolution, escalation frequency)
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# scripts/render_deck.sh — render a Marp deck to HTML + PPTX, commit both to git.
|
|
||||||
# REQ-228 (v1.18): PPTX is now a first-class committed artifact + release attachment.
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
# bash scripts/render_deck.sh <deck-name>
|
|
||||||
# bash scripts/render_deck.sh nova-autonomous-cloud-delivery
|
|
||||||
#
|
|
||||||
# Renders:
|
|
||||||
# docs/presentations/<deck-name>-marp.md → docs/presentations/<deck-name>.html (committed)
|
|
||||||
# → docs/presentations/<deck-name>.pptx (committed, binary)
|
|
||||||
#
|
|
||||||
# The PPTX is also attached to the current phase's Gitea release via
|
|
||||||
# scripts/attach_release_asset.py (call separately after ship, or this script
|
|
||||||
# will invoke it if NOVA_GITEA_RELEASE_ID is set).
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
DECK="${1:?Usage: render_deck.sh <deck-name>}"
|
|
||||||
cd "$(git rev-parse --show-toplevel)"
|
|
||||||
|
|
||||||
SRC="docs/presentations/${DECK}-marp.md"
|
|
||||||
HTML="docs/presentations/${DECK}.html"
|
|
||||||
PPTX="docs/presentations/${DECK}.pptx"
|
|
||||||
|
|
||||||
if [ ! -f "$SRC" ]; then
|
|
||||||
echo "ERROR: source deck $SRC not found" >&2; exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
CHROME=""
|
|
||||||
for c in \
|
|
||||||
/root/.cache/ms-playwright/chromium-1217/chrome-linux64/chrome \
|
|
||||||
/usr/bin/chromium \
|
|
||||||
/usr/bin/chromium-browser \
|
|
||||||
/usr/bin/google-chrome; do
|
|
||||||
if [ -x "$c" ]; then CHROME="$c"; break; fi
|
|
||||||
done
|
|
||||||
if [ -z "$CHROME" ]; then
|
|
||||||
echo "WARNING: no Chrome/Chromium found — skipping render (HTML/PPTX will need manual re-render)" >&2
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
export CHROME_PATH="$CHROME"
|
|
||||||
|
|
||||||
echo "Rendering HTML → $HTML"
|
|
||||||
npx --yes @marp-team/marp-cli@latest --allow-local-files "$SRC" -o "$HTML" 2>&1 | tail -3
|
|
||||||
|
|
||||||
echo "Rendering PPTX → $PPTX"
|
|
||||||
npx --yes @marp-team/marp-cli@latest --allow-local-files "$SRC" -o "$PPTX" 2>&1 | tail -3
|
|
||||||
|
|
||||||
git add "$HTML" "$PPTX"
|
|
||||||
echo "Staged $HTML + $PPTX for commit."
|
|
||||||
|
|
||||||
if [ -n "${NOVA_GITEA_RELEASE_ID:-}" ]; then
|
|
||||||
echo "Attaching PPTX to Gitea release $NOVA_GITEA_RELEASE_ID..."
|
|
||||||
python3 scripts/attach_release_asset.py "$PPTX" "$NOVA_GITEA_RELEASE_ID" || \
|
|
||||||
echo "WARNING: attach failed — PPTX is still committed; attach manually."
|
|
||||||
fi
|
|
||||||
@@ -41,16 +41,18 @@ if [ -z "$CHROME" ]; then
|
|||||||
fi
|
fi
|
||||||
export CHROME_PATH="$CHROME"
|
export CHROME_PATH="$CHROME"
|
||||||
|
|
||||||
# --- Step 1: render mermaid diagrams (S&P-themed) ---
|
# --- Step 1: render mermaid diagrams (S&P-themed, 2x scale, transparent bg) ---
|
||||||
echo "=== Step 1: Rendering mermaid diagrams (S&P theme: $THEME_JSON) ==="
|
# REQ-258: -s 2 (2x scale) + -b transparent (transparent background) per README spec.
|
||||||
|
echo "=== Step 1: Rendering mermaid diagrams (S&P theme: $THEME_JSON, 2x, transparent) ==="
|
||||||
if [ -d "$MMD_DIR" ]; then
|
if [ -d "$MMD_DIR" ]; then
|
||||||
for mmd in "$MMD_DIR"/*.mmd; do
|
for mmd in "$MMD_DIR"/*.mmd; do
|
||||||
name="$(basename "$mmd" .mmd)"
|
name="$(basename "$mmd" .mmd)"
|
||||||
png="$PNG_DIR/$name.png"
|
png="$PNG_DIR/$name.png"
|
||||||
echo " $name.mmd → $name.png"
|
echo " $name.mmd → $name.png"
|
||||||
npx --yes @mermaid-js/mermaid-cli \
|
npx --yes @mermaid-js/mermaid-cli@11.16.0 \
|
||||||
--configFile "$THEME_JSON" \
|
--configFile "$THEME_JSON" \
|
||||||
--puppeteerConfigFile "$PUPPETEER_CFG" \
|
--puppeteerConfigFile "$PUPPETEER_CFG" \
|
||||||
|
-s 2 -b transparent \
|
||||||
--input "$mmd" \
|
--input "$mmd" \
|
||||||
--output "$png" 2>&1 | grep -v "^$" || true
|
--output "$png" 2>&1 | grep -v "^$" || true
|
||||||
done
|
done
|
||||||
@@ -61,13 +63,14 @@ fi
|
|||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# --- Step 2: render Marp deck (S&P-themed) ---
|
# --- Step 2: render Marp deck (S&P-themed) ---
|
||||||
|
# REQ-257: pinned marp-cli version (v4.5.0) to prevent boilerplate-CSS drift.
|
||||||
echo "=== Step 2: Rendering Marp deck → HTML + PPTX ==="
|
echo "=== Step 2: Rendering Marp deck → HTML + PPTX ==="
|
||||||
echo " Theme: $THEME_CSS"
|
echo " Theme: $THEME_CSS"
|
||||||
echo " HTML → $HTML"
|
echo " HTML → $HTML"
|
||||||
npx --yes @marp-team/marp-cli@latest --allow-local-files --theme "$THEME_CSS" "$SRC" -o "$HTML" 2>&1 | tail -3
|
npx --yes @marp-team/marp-cli@4.5.0 --allow-local-files --theme "$THEME_CSS" "$SRC" -o "$HTML" 2>&1 | tail -3
|
||||||
|
|
||||||
echo " PPTX → $PPTX"
|
echo " PPTX → $PPTX"
|
||||||
npx --yes @marp-team/marp-cli@latest --allow-local-files --theme "$THEME_CSS" "$SRC" -o "$PPTX" 2>&1 | tail -3
|
npx --yes @marp-team/marp-cli@4.5.0 --allow-local-files --theme "$THEME_CSS" "$SRC" -o "$PPTX" 2>&1 | tail -3
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# --- Step 3: stage ---
|
# --- Step 3: stage ---
|
||||||
|
|||||||
@@ -117,7 +117,6 @@ EXCLUDE_SCRIPTS=(
|
|||||||
sync_workflows.py
|
sync_workflows.py
|
||||||
attach_release_asset.py
|
attach_release_asset.py
|
||||||
check_north_star_diff.sh
|
check_north_star_diff.sh
|
||||||
render_deck.sh
|
|
||||||
render_slides.sh
|
render_slides.sh
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ _EXCLUDE_SCRIPTS = {
|
|||||||
"untag_acdl_keys.py", "seed_uptime_monitors.py",
|
"untag_acdl_keys.py", "seed_uptime_monitors.py",
|
||||||
"push_consumer_image.py", "sync_workflows.py",
|
"push_consumer_image.py", "sync_workflows.py",
|
||||||
"attach_release_asset.py", "check_north_star_diff.sh",
|
"attach_release_asset.py", "check_north_star_diff.sh",
|
||||||
"render_deck.sh", "render_slides.sh",
|
"render_slides.sh",
|
||||||
}
|
}
|
||||||
|
|
||||||
# Synced top-level files (not in any excluded dir).
|
# Synced top-level files (not in any excluded dir).
|
||||||
|
|||||||
Reference in New Issue
Block a user