refactor(migrate): canonical workshop invariants + estimate pricing-mode, vendored (merge after #152-#154) - #157
Merged
icarthick merged 1 commit intoJul 20, 2026
Conversation
This was referenced Jul 20, 2026
…ode, vendored Merge-last PR: built from awslabs#152 + awslabs#153 + awslabs#154 (plus awslabs#148 via awslabs#152's lineage). After those merge, three near-identical copies of the workshop contract and the estimate Step 0 pricing-mode block would exist -- the exact drift pattern that produced the cached_stale enum bug and the vendored-edited-instead-of-canonical arm64 rates. - skills/shared/workshop/workshop-invariants.md (canonical): frozen discovery + fingerprint, checkpoint state semantics incl. the warm-start rule, the inner-runs allowed/forbidden contract, scenario store rules (max-5 warn-and-name eviction, working-tree==active, estimation_summary core fields), region honesty, and the calculator link procedure. Vendored into all three skills; gcp gains a references/vendored tree (now 4 skills under shared:check). - skills/shared/estimate/pricing-mode.md (canonical Step 0): cache staleness, MCP retry ladder, display modes, and the 5-rung pricing hierarchy incl. the estimated rung. heroku + vercel cost engines now execute the vendored copy as Step 0 instead of restating it; vercel keeps its skill-specific Step 0a-workshop knobs section. - Skill workshop files keep knobs/artifact names/engine refreshes and defer to the invariants file for every invariant (workshop.md hard rules note the canonical wins on disagreement; refresh inner-runs and 6b calculator sections are pointers with skill-specific lines only). - READMEs unioned across the three branches; canonical estimation-infra schema takes the workshop-metadata side + shared:sync. Validated: shared:check green across 4 vendored trees, fixtures-check green (123 json / 8 asserters / 10 seeds), all three workshop asserters PASS on the merged tree, frontmatter validation green, full mise build green.
icarthick
force-pushed
the
feat/workshop-shared-contract
branch
from
July 20, 2026 18:42
dfcd533 to
4dff728
Compare
Merged
4 tasks
5 tasks
icarthick
added a commit
that referenced
this pull request
Jul 23, 2026
Per product decision, remove the vercel-to-aws migration skill entirely. This is a forward-removal (not a git-revert): vercel landed via shared/cross-skill commits (#153/#157/#162/#155/#152/#176) that also carried heroku/gcp/sidebar work, so reverting those merge commits was not viable. Removed: - skills/vercel-to-aws/ (full skill, 57 files incl. its references/vendored/ copies) - fixtures/vercel-capture/ + fixtures/vercel-workshop/ (replay fixture sets) - Orphaned vercel report validator + its test + golden fixtures (lived at plugin level, not under the skill dir): scripts/validate-assessment-report.py, tests/test_validate_assessment_report.py, fixtures/assessment-report-{reference,stub}.html, fixtures/tier1-signals-reference.json (vercel prescan fixture, no consumers) - Deregistered from all 3 plugin manifests (.claude/.codex/.cursor-plugin): dropped vercel/next-js/nextjs/opennext keywords, the 'Vercel' mentions in descriptions, and the codex 'Assess my Vercel migration' example prompt - Stripped vercel from both READMEs (intro bullets, triggers, Vercel→AWS mapping table, trigger-table row, requirement bullet, DSL-architecture section: 'five skills'→'four', removed the resumability-ledger note) + fixtures/README registry line - Dropped vercel asserter entries from tools/run-asserters.py (10→6 asserters) - Stripped stale vercel cross-refs: heroku SKILL.md workshop-arch note, gcp schema-workshop-scenarios arch-defaults line, canonical workshop-invariants {SKILL_LABEL}/{INVENTORY} placeholders (shared:sync propagated to vendored copies) PRESERVED (heroku + gcp depend on these — #157's shared architecture): canonical skills/shared/workshop/workshop-invariants.md + skills/shared/estimate/pricing-mode.md and their heroku/gcp vendored copies. shared:check drops 4→3 trees cleanly (the sync tool auto-discovers consumers). Left legit non-skill refs: gcp's vercel.json detection signal, 'Vercel AI SDK' framework name, historical PR-context notes. Verified: shared:check OK (3 trees byte-identical), fixtures:assert 6/6, all validators green (heroku/gcp/agent-advisor), dprint + markdownlint clean, full mise run build green.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
skills/sharedfiles, vendored into the skills and guarded byshared:checkbyte-identity.Motivation: once #152–#154 land, the plugin carries three near-identical copies of the workshop contract and three copies of the Step 0 pricing-mode block. That drift pattern has already bitten twice: the
cached_staleenum existed in specs but not the schema, and the arm64 Fargate/EC2 rates were edited in a vendored copy instead of canonical. Copies that must agree need a single source with a byte-identity check —shared:syncalready provides it.Changes
skills/shared/workshop/workshop-invariants.md(canonical)The cross-skill workshop contract: frozen discovery + fingerprint abort rule; checkpoint state semantics (never
current_phase, deferred advance, the warm-start don't-recompute rule); the inner-runs allowed/forbidden table; scenario-store rules (max-5 with warn-and-name eviction, working-tree == active,estimation_summarycore fields incl.calculator_url); region honesty; the shareable-calculator-link procedure. Vendored into all three skills — gcp gains areferences/vendored/tree, soshared:checknow guards 4 skills.skills/shared/estimate/pricing-mode.md(canonical Step 0)Cache staleness check, MCP retry ladder, pricing-mode display strings, and the 5-rung pricing hierarchy including the
estimatedrung. The heroku and vercel cost engines now execute the vendored copy as their Step 0 instead of restating it (vercel keeps its skill-specificStep 0a-workshopknobs section). gcp's differently-structured estimate prose is out of scope, noted for a future pass.Skill files
Keep only what's genuinely skill-specific (knobs, artifact names, vercel's Recommend refresh, gcp's Graviton evidence gate) and defer to the invariants file for everything invariant, with an explicit "the canonical file wins on disagreement" note.
Cross-branch reconciliation
READMEs unioned (Heroku live-discovery section + Vercel requirements + all three fixture registry lines); canonical
estimation-infra.schema.jsontakes the workshop-metadata side; vendored copies synced.Relationship to other PRs
dfcd533) plus two merge commits are new here.Test plan
shared:checkgreen across all 4 vendored treesfixtures:checkgreen on the merged tree (123 JSON, 8 asserters, 10 phase-status seeds)mise run buildgreen