Subchapter 27.52
references/phases/workshop/workshop-refresh.mdMarkdown3 KBView on GitHub
Follow the canonical allowed/forbidden contract in
references/vendored/workshop/workshop-invariants.md § 3 for every inner
Design/Estimate run. GCP specifics: Design follows design.md § Inner
workshop reprice and Estimate follows estimate.md § Inner workshop
reprice (both skip state transitions); phases.design/phases.estimate
stay "completed"; current_phase stays "estimate" until
workshop-assemble.md.
When scenarios/ or scenarios/index.json is absent:
inventory_fingerprint = SHA-256 hex of gcp-resource-inventory.json bytes.scenarios/.scenarios/scenario-001.preferences.jsonscenarios/scenario-001.aws-design.jsonscenarios/scenario-001.estimation-infra.jsonscenarios/scenario-001.json (source: "baseline", summary from
estimation-infra including three monthly tiers).scenarios/index.json (baseline / active = scenario-001,
max_scenarios: 5).preferences.workshop exists:
{ "active": true, "last_sheet_at": "<now>", "active_scenario_id": "scenario-001" }workshop.md for the sheet.If fingerprint ≠ index.inventory_fingerprint, STOP:
Inventory changed since baseline. Re-run Discover before workshop reprice.
If generate completed, require re-entry confirm and reset generate to pending.
Apply sheet edits. Set workshop.active: true, workshop.last_sheet_at now.
Leave non-knob fields (including AI/agentic constraints) untouched.
Graviton caveat carry-forward: If the sheet showed a Graviton risk-signal
caveat (any graviton_profile entry with tier in
{incompatible, conditional, unknown}) and the SA set
cpu_architecture to graviton or mixed, set
preferences.workshop.graviton_note to a short string naming the counts, e.g.
"1 incompatible, 0 conditional — graviton applies where tier: ready". Clear
graviton_note when arch is x86 or when no risk-signal tiers exist.
Per Inner runs. Design must follow design.md § Inner workshop reprice
(skip handoff / phase-status). Estimate must follow estimate.md § Inner
workshop reprice. Chat note after Estimate:
“Workshop reprice Estimate complete; returning to workshop loop.”
scenario-00N.scenarios/{id}.*.preferences_subset: differing knob paths vs baseline.workshop.graviton_note is set, append
(caveat: <graviton_note>) to the scenario label and copy the note into
the manifest as graviton_note.recommendation.outcome (v2 decision
fields), copy it into the manifest as
estimation_summary.recommendation_outcome; omit/null otherwise — this
feeds the compare view’s Outcome column and flip callout.workshop.active_scenario_id.Return to workshop.md → workshop-compare.md.