콘텐츠로 이동

Roadmap

Image Console release evidence

Image Console release hardening shipped in v5.2.0 and is published behavior. Published registry smoke passed; a live Prompt Guide call and a real provider generation/edit remain unverified. The deterministic local mock loopback flow covers packaged static assets, health, catalog, generation draft validation, rejection before approval, and one approved deterministic local provider execution through installed-bin and one-shot packed-tarball paths. It makes no Prompt Guide/provider-network call, uses isolated temporary HOME, npm cache, provider, and asset roots, reaps child processes, and asserts unchanged repository status. Package contents require the complete Image Console runtime, static, configuration, and cli/lib/image-prompt-contract.d.ts artifacts.

The exact current-source test, audit, package, documentation, packed-smoke, browser-QA, and external-verification receipt is maintained once in the Prompt Guide Image Console integration guide.

Phase 816 - First P17E application: browser evidence and visual evaluators on the Website Console (v5.4.0 post-release)

  • Ran design-ai verify-browser with owner approval against the Audit Checklist of two isolated clones served on loopback: current main and the v5.3.0 code before the #78 fix. The adapter was a scratch Playwright script that is not shipped and adds no dependency. It enforced the loopback network policy, which blocked nothing, used a fixed clock and time zone, and wrote evidence under a scratch HOME.
  • The runtime probes reproduced #78 independently. On v5.3.0 the accessibility probe found 27 unnamed controls, and 11 of the first 25 Tab stops were table selects and textareas without a name. On main both found none. The keyboard probe reads each stop's name from the browser's accessibility tree; a first version read only aria-label, text, and value, which miscounted label-wrapped fields, and its results were discarded. Responsive, reduced-motion, and invalid-import error probes passed. The static page has no loading or repeated-action requirement to observe, so those stay unverified, and the run reads unverified as the contract requires.
  • Applied the visual evaluators to the captured artifacts:
  • screenshot regression between v5.3.0 and main found 0 changed pixels at both viewports, so #78 changed no rendering;
  • responsive overflow found none;
  • brand-token drift failed with 8 off-palette colors: a hardcoded danger button border, and table controls that kept the browser's black text instead of --text.
  • Fixed both: the danger border is the new --danger-border token, and form controls inherit the text color. The Image Console loads the same stylesheet, so the fix covers it too. After the fix, brand-token drift passes with 0 off-palette colors. The regression against main changes only the table control text, by at most 42 in one channel, the exact difference between black and --text.
  • Ran the same adapter against the Image Console, served by the shipped gateway with mock Prompt Guide and a deterministic local provider. Responsive, keyboard, accessibility, reduced-motion, and the empty-required-field error probes passed, and responsive overflow and brand-token drift passed with the fix.

Verified

  • node --test docs/website-console/source-bundle.test.mjs passes 31/31. A new test requires every color literal outside :root to equal a token value, and both fixes. Reverting either fix makes it fail.

This is internal dogfooding on design-ai's own consoles. The adapter and its evidence stay outside the repository. It does not count toward P17 promotion evidence.

Phase 815 - Review comparison v2 and dogfooding fixes release candidate (v5.4.0)

  • Chose a minor release. Review comparisons move to schemaVersion 2, which changes the default output of review-compare, compareReviews(), and design_ai_compare_reviews, but stored v1 comparisons still validate. The SDK types only widen, and no command, SDK export, or MCP tool is added or removed.
  • Aligned the package and Claude plugin manifests at v5.4.0.
  • Converted the post-v5.3.0 work into one release entry: comparison v2, the comparison mismatch message, and the Website Console and Image Console dogfooding fixes. The entry calls out the comparison schema change and the older-reader rejection for consumers.
  • Passed pull-request CI for the exact release candidate.
  • Merged the reviewed candidate after owner approval: sungjin9288/design-ai#85.
  • Created and pushed the annotated v5.4.0 tag on 9e532b3 after approval. npm latest is 5.4.0 with SLSA provenance, the GitHub Release is public, and the publish run's post-publish registry smoke passed. See the external status.
  • Retargeted the Homebrew formula to the v5.4.0 tag tarball. ruby -c and brew style pass, and the temporary-tap --build-from-source --without-node install and brew test both exited 0. Without Homebrew node, the Node-gated assertions were covered by running the installed CLI with the system Node, which reported 5.4.0 and emitted comparison v2.

Verified

  • All 8 audits passed for the v5.4.0 release candidate.
  • npm run release:check passed with 932/932 Node tests, 907 packaged files in the local pack, 0/0 documentation-policy warnings, release self-tests, and installed-bin plus one-shot npm smoke.
  • All 14 stored version 1 artifacts still validate, including both stored review comparisons.

Versions

  • package.json + .claude-plugin/plugin.json: 5.3.0 → 5.4.0.
  • vscode-extension/package.json: remains 0.4.1.

What this enables

  • A fix reviewed with static evidence reads attention-required with a runtime-evidence next step, so the comparison can gate a release without calling the fix a regression.

What's still ahead

  • Real-project runs for P17C and P17E, a live Prompt Guide and provider check, and external pilot participation.

Phase 814 - Website Console comparison validator parity (v5.3.0 post-release)

  • The Console's comparison validator now accepts exactly what the Node contract accepts in two cases where it used to reject valid comparisons:
  • finding ids that are built-in object property names, such as constructor, toString, or __proto__, in either report or both. Its id lookups no longer inherit from Object.prototype.
  • comparisons whose object keys were reordered, for example by jq -S. Key order no longer matters, and array order still does.
  • Checked the scope, approval, and implementation-evidence validators against real artifacts from the Phase 812 run. They already agree with Node: both sides reject reordered keys, because those artifacts bind exact digests. Pilot evidence was checked by reading only.

Verified

  • node --test docs/website-console/*.test.mjs passes 36/36. A new test checks the special ids in the baseline only, the candidate only, and both, and checks reordered keys and that a reordered transition array is still rejected. Reverting either fix, or comparing keys unsorted, makes it fail.

Phase 813 - Review comparison v2: an unconfirmed lens is not a regression (v5.3.0 post-release)

  • New review comparisons are design-ai-review-comparison v2. A lens that failed or warned in the baseline and is unverified in the candidate now records unconfirmed instead of evidence-lost, and the comparison reads attention-required instead of regressed. Losing a pass is still evidence-lost and still regressed. An unconfirmed lens never lets a comparison read improved or unchanged.
  • Stored v1 comparisons keep their original derivation. The validator derives lens changes by the comparison's own schema version, so a v1 that says evidence-lost and regressed still validates, and a relabeled version is rejected.
  • Applied the same rule in the Website Console's comparison validator, allowed comparison v1 or v2 in project snapshots, widened the SDK types, and updated the comparison guides in English and Korean and the SDK reference. The compact summary keeps its v1 shape and reports the full artifact as v2.
  • Re-ran the Phase 812 case: the same 29-finding fix now reads attention-required, with 29 uncertain findings and two unconfirmed lenses.
  • When the only open item is an unconfirmed lens, the next action asks for runtime evidence for that lens instead of pointing at findings that do not exist.
  • An independent read-only review found no blocking defect. It ran 64 exhaustive and 2,400 randomized checks with no disagreement between the Node contract and the Console copy.

Release note obligations

  • Readers older than this change reject comparison v2 and any project snapshot that references one. The compact summary keeps schemaVersion: 1, but its lensTransitions[].change can now be unconfirmed and representation.fullArtifactSchemaVersion can be 2.

Known gaps, unchanged here

  • The Console copy rejects valid comparisons whose finding ids are built-in object property names, or whose JSON keys were reordered. The Node contract accepts both. Both gaps predate comparison v2, and Phase 814 closes them.
  • A lens that moves from unverified to fail or warning with no finding still reads unchanged. Static reports that fail always carry a confirmed finding, which reads regressed.

Verified

  • Comparison, Website Console, and project-snapshot tests cover v2 derivation, stored v1 validation, relabeling, and unsupported versions. Seven sabotage runs across the Node contract and the Console copy each made a test fail.

This changes the default comparison output. It ships in the next minor release with a release note; nothing is published here.

Phase 812 - First P17F application: the review-to-snapshot chain on design-ai's own fix (v5.3.0 post-release)

  • Ran the full chain with the shipped CLI against an isolated clone of this repository at e8c90f0, the commit before the Website Console fix in #78: review, handoff, receipt, intake, scope proposal, owner-approved scope, implementation, implementation evidence, comparison, and two project snapshots. Nothing was pushed, and this checkout was not touched.
  • The baseline review of the rendered Audit Checklist reproduced the Phase 810 findings: 28 accessibility p1 and 1 interface-copy p1. The fix was applied as #78's exact diff, and the candidate was re-rendered from the clone's source and matched the stored capture by digest.
  • Built a two-snapshot chain: a scoped snapshot with the owner's accepted scope decision, followed by an implemented snapshot whose decision stays pending. Both verify against the artifact bytes, the chain is linear, and a read-only restore plan is produced. Changing one byte of an artifact, or removing one, reports drift.
  • Fixed one defect the run exposed: a comparison rejected for a different subject or context did not say which field differed. The error now names each differing field, such as subject.source.

Found, not yet fixed

  • Comparison counts fail -> unverified as evidence-lost, the same as pass -> unverified, so the overall status is regressed. Removing all 29 confirmed p1 defects therefore read as regressed with 29 uncertain findings. The accessibility and interface-copy lenses never pass statically, so every fix to them reads this way. Changing the derivation would invalidate stored v1 comparisons, which project snapshots re-validate. It needs a comparison schema version 2, which Phase 813 adds.

Verified

  • node --test cli/lib/review-comparison.test.mjs passes 8/8. Making the field naming report no field makes it fail.
  • Implementation evidence stays attention-required, because responsive layout and screen reader output were not observed.

This is internal dogfooding on design-ai's own repository. It is not an independent pilot and does not count toward P17 promotion evidence.

Phase 811 - Dogfood the lenses on the running Image Console (v5.3.0 post-release)

  • Ran the Image Console gateway locally with mock Prompt Guide, a deterministic local provider adapter, and a scratchpad HOME. No network call was made, and no asset was written to the user's home directory. The full flow was exercised: compose, approve, generate, and the edit tab with a stored asset.
  • Inspected the initial page and the rendered draft-validated, generated, and edit-with-asset states. None had a confirmed finding: every control already had a label, and the live status and error regions were in place.
  • Applied the interface copy contract by review where static inspection stops, and fixed the two gaps it found:
  • error recovery: a missing required field produced only the transient native validation bubble. The error region now lists the missing fields by label (for example Fill in Purpose, Stored source asset to compose the draft.), marks them aria-invalid, and clears the mark as the user types. Native validation and focus movement are kept.
  • purpose and clarity: the completion status showed only a UUID. It now says the image was saved as a draft asset and that it can be selected under Edit an asset.
  • Added behavioral tests in the Image Console harness. Reverting any of the three new pieces of logic makes them fail. Checked in the browser that a composed draft clears the error, with no application console errors.

Verified

  • Image Console tests pass 14/14. The full release gate result is recorded in the pull request.
  • The page's Content Security Policy (connect-src 'self') blocked an attempt to post page snapshots to another local port. The rendered states were collected without weakening it.

This is internal dogfooding. A live Prompt Guide call and real provider generation/edit remain unverified.

Phase 810 - Dogfood the interface-copy and accessibility lenses on the Website Console (v5.3.0 post-release)

  • Ran design-ai inspect on the rendered DOM of all nine Website Console sections, captured from a local preview. The static index.html is only a shell, and the Image Console's static markup had no confirmed findings.
  • Fixed every confirmed defect the lenses found in design-ai's own UI:
  • interface-copy p1: the Import JSON button's aria-label did not contain its visible label (WCAG 2.5.3). It now starts with Import JSON:.
  • accessibility p1: the visually hidden file input was unnamed but still in the tab order. It is now named and removed from the tab order, and the Import JSON button still opens it.
  • accessibility p1: 27 Audit Checklist controls and 10 MCP Readiness status selects sat in table cells without names. Each now carries its row label, such as Visual Design status.
  • Re-inspected all nine sections after the fix: no confirmed findings remain. Checked in the browser that status changes and import still work, with no console errors.
  • Added a Console regression test. Reverting any of the three fixes makes it fail.

Verified

  • All nine rendered sections report zero confirmed findings after the fix. The interface-copy and accessibility lenses stay unverified, because static inspection never passes them.
  • The Website Console source tests pass 28/28. The full release gate result is recorded in the pull request.

This is internal dogfooding of design-ai's own UI. External product copy reviewed with the lens remains unverified and is not claimed here.

Phase 809 - Interface copy lens and P17 foundations release candidate (v5.3.0)

  • Chose a minor release. Quality reports move to schemaVersion 2 with the interface-copy lens, but every reader still accepts version 1. The SDK types only widen, and no command, SDK export, or MCP tool is added or removed.
  • Aligned the package and Claude plugin manifests at v5.3.0.
  • Converted the post-v5.2.0 work into one release entry: P17C through P17F, the ninth lens, and the status-document corrections. The entry calls out the schemaVersion change for consumers.
  • Passed pull-request CI for the exact release candidate.
  • Merged the reviewed candidate after owner approval: sungjin9288/design-ai#76.
  • Created and pushed the annotated v5.3.0 tag on a9567eb after approval. npm latest is 5.3.0 with SLSA provenance, the GitHub Release is public, and the publish run's post-publish registry smoke passed. See the external status.
  • Retargeted the Homebrew formula to the v5.3.0 tag tarball. ruby -c and brew style pass.
  • Ran the temporary-tap --build-from-source --without-node install and brew test for v5.3.0; both exited 0. Without Homebrew node, the Node-gated assertions were covered by running the installed CLI with the system Node, which reported 5.3.0.

Verified

  • All 8 audits passed for the v5.3.0 release candidate.
  • npm run release:check passed with 924/924 Node tests, 907 packaged files in the local pack, 0/0 documentation-policy warnings, release self-tests, and installed-bin plus one-shot npm smoke.
  • All 14 stored version 1 artifacts still validate with the version 2 contract.

Versions

  • package.json + .claude-plugin/plugin.json: 5.2.0 → 5.3.0.
  • vscode-extension/package.json: remains 0.4.1.

What this enables

  • One canonical review now covers interface copy alongside interaction craft, without breaking stored evidence.
  • The P17 contracts and libraries can be applied to real projects and later promoted to public commands one at a time.

What's still ahead

  • Real-project runs for P17C, P17E, and P17F, a live Prompt Guide and provider check, and external pilot participation.

Phase 808 - Interface copy as the ninth quality-report lens (v5.2.0 post-release)

  • Promoted the P17D interface copy lens into the design-quality report. Quality report schemaVersion 2 adds interface-copy after the eight interaction-craft lenses. inspect, review, the SDK, and MCP now emit version 2.
  • Kept version 1 valid in the CLI contract, Website Console, and smoke assertions, so stored reports and the handoffs, receipts, comparisons, pilot evidence, and snapshots that embed them keep verifying. A review comparison requires both reports to share a schema version and refuses a mixed pair instead of failing on a missing lens.
  • Added static interface-copy checks for generic control labels, visible labels missing from aria-label (WCAG 2.5.3), and mixed Korean registers. Clean copy stays unverified; a p1 finding fails the lens and p2 or p3 findings warn.
  • Narrowed the 음슴체 rule in both register classifiers after the specialization benchmark flagged the noun 작업함 as a sentence ending.
  • Addressed all 12 issues from an independent review. Among them:
  • the benchmark smoke still required schemaVersion 1;
  • label-in-name required a prefix where WCAG 2.5.3 requires containment;
  • HTML entities were not decoded before comparing;
  • Korean status cells, headlines, quotes, and footers produced false register findings;
  • a copy-targeted product-pack criterion could crash the inspector;
  • string schema versions were accepted.

Eleven sabotage runs against the new rules each made the tests fail. - [x] Released the public contract change as v5.3.0 with a CHANGELOG entry and a registry smoke against the published package.

Verified

  • All 14 stored quality reports and the artifacts that embed them under evidence/ and examples/benchmarks/ validate with the new contract.
  • npm test, the eight strict audits, skill contracts, the interface copy contract, release metadata, and the review, smoke, package, and registry self-tests pass. The full release gate result is recorded in the pull request.

A live provider call, external pilot participation, and published-package registry smoke of version 2 output remain unverified and are not claimed here.

Phase 807 - P17F project continuity snapshots (v5.2.0 post-release)

  • Added the design-ai-project-snapshot v1 contract. It is a small index of exact artifact byte digests, derived cross-artifact links and stage, one self-declared owner decision, and a predecessor digest. It embeds no artifact bodies and keeps no history database.
  • Added buildProjectSnapshot, verifyProjectSnapshot, and inspectProjectSnapshotChain. Broken links reject a snapshot, and drift is reported rather than thrown. A clean linear chain yields a read-only restore plan.
  • Addressed all 12 issues from an independent review, including acceptance of blocked or foreign pilot evidence, unchecked successor rules during chain inspection, and unconstrained links and identity fields.
  • Record consecutive snapshots for one real project.
  • Decide whether to promote snapshots to a CLI, SDK, or MCP capability under the P17 selection rule.

Verified

  • 9 new Node tests pass inside npm test against a real review-to-pilot chain in a temporary Git checkout. Sixteen sabotage runs each made the suite fail. The full release gate result is recorded in the pull request.
  • No CLI, SDK, MCP, Website Console, existing artifact contract, or version change.

A real project's snapshot history, external pilot participation, and a live provider call remain unverified and are not claimed here.

Phase 806 - P17E visual evaluator contract and reference evaluators (v5.2.0 post-release)

  • Added the design-ai-visual-evaluation v1 contract and schema. Every evaluation records the evaluator version, capture tool, viewport, source digest, threshold, artifact digests, and uncertainty. Missing or invalid evidence stays unverified, and a pass must follow from the recorded measurement. No aggregate score exists.
  • Added deterministic, zero-dependency reference evaluators for screenshot regression, visual diff, responsive overflow, and brand-token drift. They read only regular files inside one evidence directory, with a bounded PNG codec and CIE76 color distance.
  • Addressed all 12 issues from an independent review, including forged measurements, single-pixel changes hidden by rounding, unbounded PNG decompression, and colors that could not be evaluated.
  • Run the evaluators against artifacts from a real approved adapter that also emits layout and computed-style files.
  • Decide whether to promote them to a CLI, SDK, or MCP capability under the P17 selection rule.

Verified

  • 14 new Node tests pass inside npm test. Fifteen sabotage runs each made the suite fail. The full release gate result is recorded in the pull request.
  • No CLI, SDK, MCP, Website Console, browser-verification sidecar, or version change. The package exports map still exposes only ./sdk.

Real adapter artifacts, external pilot participation, and a live provider call remain unverified and are not claimed here.

Phase 805 - P17D interface copy lens contract and fixtures (v5.2.0 post-release)

  • Added the interface copy contract in knowledge/patterns/interface-copy.md. It defines eight criteria: purpose, clarity, concision, conversational fit, error recovery, accessibility, localization, and Korean honorific consistency. It also defines seven surfaces with required parts and a primary control, a finding format, and a rule that no readability score stands in for the user goal or evidence.
  • Added 14 Korean and English before/after fixtures, one aligned pair per surface, and tools/audit/interface-copy-contract.py, which validates them against the contract tables. npm run content:check and npm run content:self-test run inside release:self-test.
  • Applied the lens in the ux-audit and website-improvement playbooks as a knowledge-backed review step, not a new command.
  • Addressed all 12 issues from an independent review. Surface rules, typed conveyed facts, part-bound findings, clause-level Korean register checks, and English-fragment detection are now mechanical rather than only documented.
  • Promote the lens to a ninth design-quality report lens across the schema, SDK, MCP, Website Console, comparison, and smoke contracts, in a separate public-contract change.

Verified

  • npm run content:check passes 14 fixtures and 38 findings. The self-test passes 20 register cases and rejects 30 named mutations. Six sabotage runs against the validator each made the suite fail. Skill contracts, the eight strict audits, and the release metadata guard pass. The full release gate result is recorded in the pull request.
  • No CLI, SDK, MCP, Website Console runtime, quality-report schema, or version change.

Real product copy reviewed with this lens, external pilot participation, and a live provider call remain unverified and are not claimed here.

Phase 804 - P17C design-system skill compiler and status truth alignment (v5.2.0 post-release)

  • Added the clone-only P17C compiler in tools/ds_skill/. It runs five digest-bound stages: scope, facts, contract, generate, and verify. Scope is persisted before any source is read. The generated project-local skill uses only verified components, props, tokens, and icons, each with its source line.
  • verify runs six checks: digest chain, source re-extraction, fact anchors, provenance, rendered-from-contract, and the repository Agent Skills contract. Source must reproduce the facts, and every generated file must equal a fresh render of the contract, independent of provenance hashes.
  • Fixed all ten defects from an independent review of the first version, each with a regression case. They included directory deletion through a tampered skill name, missing source re-reads, vocabulary-scan gaps, comment and string text parsed as exports, and unescaped consumer text.
  • Added a synthetic design-system and consumer fixture pair with 20 fixture and mutation cases, wired as npm run ds-skill:self-test into release:self-test, local CI Python compilation, and the CI compile step. Twelve sabotage runs against the checks and readers each made the suite fail.
  • Corrected status documents that still described v5.1.0 as current or the Image Console as unreleased, and the stale claim that no embedding retrieval ships (v4.57.0 added an opt-in local rerank).
  • Apply the compiler to one real design system and consuming repository after the owner declares both roots and approves the scope.

Verified

  • npm run ds-skill:self-test passes 20 cases; npm run release:metadata passes. The full release gate result is recorded in the pull request.
  • No CLI, SDK, MCP, Website Console, package-content, or version change: the compiler lives outside the npm files allowlist.

A real design-system run, a live Prompt Guide call, a real provider generation/edit, and external pilot participation remain unverified and are not claimed here.

Phase 803 - Audit harness decomposition and P17B completion (v5.2.0 post-release)

  • Published v5.2.0 to npm with SLSA provenance and a GitHub Release, then verified the published package with npm run registry:smoke after the publish workflow's own post-publish smoke failed on registry propagation timing; widened that retry window from 113 seconds to ten minutes.
  • Verified the Homebrew formula against the published tag with brew style, a temporary-tap source install, and brew test.
  • Shared the three smoke subprocess runners and 58 byte-identical CLI assertions between package and registry smoke, leaving 18 look-alike assertions in place because the same dependency name resolves to a different module per executable.
  • Split the smoke self-test monoliths into named phases: package-smoke run_self_test 7,244 to 828 lines, smoke_assertions 5,217 to 732, registry-smoke 2,496 to 496 and smoke_registry_package 1,143 to 431.
  • Replaced the 869-line 223-operand runbook condition with a table that names the failing field, and the 193 repeated release-policy drift cases with a data table verified by assertion-multiset comparison, a dead-row guard, and a mutation test.
  • Completed P17B: pilot, install, help, search, and route domains extracted, and the 17 self-test phases moved into six themed modules. package-smoke.py 19,336 to 11,702 lines with the 722-command packed sequence hash unchanged.
  • Extracted the Website Console view model from app.js (3,851 to 2,514 lines) and archived the roadmap and changelog ledgers.

Verified

  • npm run release:check exit 0 at every commit: 891/891 Node tests, 8/8 strict audits, 0/0 documentation-policy warnings, and packed installed-bin plus one-shot npm tarball smoke. The package-content count rose from the 884 files published as v5.2.0 to 893, which is the nine new smoke_domains modules; tools/audit/ ships with the package.
  • The packed smoke command sequence is byte-identical across the decomposition: 722 commands, normalized SHA-256 4be88619c31932dc1cadc27595f3748d0a109b66af5a24991c30ba3092ab87df.
  • npm run registry:smoke passed against the published @design-ai/cli@5.2.0.

A live Prompt Guide call, a real provider generation/edit, and external pilot participation remain unverified and are not claimed here.

Phase 802 - Product completion design and Image Console correctness

  • Established the overall completion plan, domain ownership, state lifetimes, and evidence-gated P17 follow-up sequence.
  • Reconciled EN/KO architecture with thin skill dispatchers and existing opt-in embedding retrieval.
  • Contained provider stdin failures, bound edit approval to the original asset snapshot, and prevented stale job responses from replacing newer UI state.
  • Added regression tests for each reproduced failure.
  • Complete browser generation/edit QA and the full local release gate; the canonical Image Console guide owns the latest measurement.

The baseline PR #62 CI passed at dc329273ab26ce4ae428f4827fbfeac79eb2461e. This working-tree hardening requires its own verification; no new merge, tag, publication, live provider result, or external participation is claimed.

Phase 801 - Image Console release integration (v5.2.0)

  • Chose a backward-compatible minor release because the Image Console and prompt-generation workflow are additive and keep the existing CLI, SDK, MCP, learning, and approval boundaries intact.
  • Aligned the package and Claude plugin manifests at v5.2.0.
  • Converted the accumulated Image Console, skill-contract, smoke-domain, external-pilot, and documentation work into one release entry.
  • Added a release-metadata transition guard that keeps checking the canonical Image Console receipt after the changelog moves from Unreleased to v5.2.0.
  • Completed local release and browser verification without a Prompt Guide or provider-network call.
  • Pass pull-request CI at dc329273ab26ce4ae428f4827fbfeac79eb2461e.
  • Merge the exact reviewed release candidate after owner approval.
  • Run a controlled live Prompt Guide and real provider generation/edit check when server-only configuration is available.
  • Create and push the v5.2.0 tag only after merge approval; then verify npm, GitHub Release, public registry smoke, docs, and any Homebrew follow-up.

Verified

  • All 8 audits passed for the v5.2.0 release candidate.
  • npm run release:check passed with 891/891 Node tests, 884 package files, 0/0 documentation-policy warnings, release self-tests, and packed installed-bin plus one-shot npm smoke.
  • Browser QA passed at desktop and mobile widths with keyboard navigation, visible focus, 44 px targets, reduced motion, WCAG 2.1 AA contrast, no horizontal overflow, and clean console output before the expected missing-provider error.

Versions

  • package.json + .claude-plugin/plugin.json: 5.1.0 → 5.2.0.
  • vscode-extension/package.json: remains 0.4.1.

What this enables

  • The complete approval-gated Image Console can be reviewed and installed under one candidate identity without representing its mock proof as a live provider result or a published package.
  • The same PR can prove that release-facing documentation, package contents, smoke contracts, and browser evidence describe the same source tree.

What's still ahead

  • Fresh CI for subsequent source changes, reviewer approval, merge, controlled live integration when credentials exist, tag workflows, npm/GitHub publication, public registry smoke, and post-publish distribution verification.

Phase 800 - Implementation-evidence smoke domain extraction (P17B.5)

  • Materialized and verified the exact P17B.4 dirty baseline at 695721ba102d3d2f2c2bd0224e862fb0d0198b70 before editing; the pre-edit 716-command packed smoke passed in 581.77 seconds.
  • Moved only the P11 implementation-evidence assertion into a focused domain while preserving its smoke_assertions import name, exact AST digest, and all seven SystemExit failure expressions.
  • Added a focused package adapter, pure request fixture builder, and separate installed-bin and one-shot npm P11 phase authorities without moving real command execution or the stable wrapper guards out of package-smoke.py.
  • Added an independently runnable contract self-test for the AST snapshot, positive and existing failure fixtures, phase-sequence negatives, and unsupported executors, then wired it into release:self-test.
  • Kept all five new modules below 400 lines and every new or moved function at or below 79 lines; P12 pilot, Website Console runtime, SDK smoke, registry runtime, lifecycle coverage, dependencies, migrations, and package 5.1.0 are unchanged.
  • Preserved the 4387-byte registry Website Console fixture and the exact 716-command normalized sequence SHA-256 0654a8730d42526860bb1d00c16f1c828395ffd0aca448a1f137fcb30fd24a46.
  • Passed the full release gate: 832 Node tests, eight strict audits, 861 packaged files, 0/0 documentation warnings, release self-tests, and actual packed installed-bin plus one-shot npm smoke in 680.33 seconds.
  • Extract pilot contracts after review and implementation evidence remain stable.
  • Extract install/help/search/route lifecycle contracts last.

Boundary

  • P17B.5 changes only P11 smoke-test organization. It adds no dependency, migration, product-runtime change, CLI/SDK/MCP/Website Console API, package version, P16 state, external write, commit, push, publish, or deploy.

Phase 799 - Review smoke domain extraction (P17B.4)

  • Used committed clean P17B.3 baseline 695721ba102d3d2f2c2bd0224e862fb0d0198b70 before source edits.
  • Moved only inspect, review comparison, P6 review, P7 handoff, P8 receipt, P9 intake, P10 scope proposal/approval, and browser-review assertions into focused modules while keeping stable smoke entry points and real command execution local.
  • Preserved the nine moved callable ASTs (including review_workflow_digest) and assertion failure-message behavior, the npm 5.1.0 package version, SDK smoke bytes, P16 evidence digest, registry fixture digest, and normalized packed command sequence.
  • Added the narrow P6-P10 phase authority for installed-bin and one-shot npm paths; focused negative cases reject missing, duplicate, reordered, and unknown phases without a generic command facade.
  • Kept all new modules below 400 lines and each new or moved function at or below 200 lines; P11/P12, learning proposal review, product runtime, SDK smoke, and install/search/show/route lifecycle remain untouched.
  • Passed the full release gate: 832 Node tests, eight strict audits, 858 packaged files, documentation policy, release self-tests, and packed installed-bin/one-shot npm smoke with a disposable local npm cache.

Boundary

  • P17B.4 changes only review-smoke organization. It adds no dependency, migration, product-runtime change, CLI/SDK/MCP API, external write, commit, push, publish, or deploy.

Phase 798 - Learning smoke domain extraction (P17B.3)

  • Applied and verified the sealed P17B.2 dirty baseline before editing.
  • Split learning smoke ownership into direct profile, transfer, relevance/eval, agent-backlog, skill-proposal report/review, and skill-proposal apply-plan imports while leaving command execution in the stable entry points.
  • Grouped backlog and apply-plan validation by contract responsibility instead of positional argument bags or mechanically split condition ranges; retained the original public failure messages.
  • Delivered 30 new learning modules below 400 lines. The largest is 394 lines, the largest new-module function is 173 lines, and the largest added entry-point scenario helper is 184 lines. The entrypoints are now 12,655 / 20,228 / 7,311 lines (smoke_assertions.py / package-smoke.py / registry-smoke.py).
  • Preserved the actual 716-command packed-smoke sequence and normalized SHA-256 0654a8730d42526860bb1d00c16f1c828395ffd0aca448a1f137fcb30fd24a46.
  • Preserved the 4387-byte registry Website Console fixture, npm 5.1.0, and the immutable P16 program digest.
  • Passed focused self-tests, F821 and syntax checks, 832 Node tests, eight strict audits, the 845-file package-content check, documentation policy, release self-tests, and packed smoke.
  • Extracted the review domain in Phase 799.
  • Extracted implementation-evidence after review remained stable in Phase 800.
  • Extract pilot contracts after review and evidence remain stable.
  • Extract install/help/search/route lifecycle contracts last.

Boundary

  • P17B.3 changes only smoke-test architecture and verification. It adds no CLI, SDK, MCP, Website Console runtime, public API, package version, dependency, migration, P16 state, external write, commit, push, merge, publish, or deploy.
  • JSON, Markdown, human output, patch, template, sidecar, workspace fixture, command coverage, and negative failure contracts remain authoritative.

Phase 797 - Website Console smoke domain extraction (P17B.2)

  • Recorded the pre-extraction smoke harness sizes and focused self-test times.
  • Moved 42 Website Console contract constants into smoke_domains/site_contracts.py and eight shared command, MCP probe, and repair validators into smoke_domains/site_validators.py.
  • Preserved stable callable names, execution paths, and focused self-test paths for smoke_assertions.py, local package-smoke, and registry-smoke.
  • Added a byte-stable contract snapshot plus positive and negative fixtures in a separate, independently runnable self-test wired through smoke:site-contracts:self-test and the release self-test chain.
  • Proved exact parity with the pre-extraction values and command rewrite order.
  • Delivered 17 new modules and 64 extracted functions; all new files remain below 400 lines, the largest file is 354 lines, and the largest extracted function is 163 lines. The entrypoints are 12,655 / 24,494 / 9,078 lines (smoke_assertions.py / package-smoke.py / registry-smoke.py).
  • Preserved the exact 716-command packed-smoke sequence and normalized SHA-256 before and after extraction; recorded 1,444.11-second and 914.29-second local wall-clock observations.
  • Moved Website Console JSON and Markdown fixtures into focused smoke-domain modules, including package-smoke intake/evidence/warning payload fixtures.
  • Moved Website Console assertion groups into focused responsibility modules imported directly by smoke_assertions.py without changing failure messages.
  • Added one explicit ordered Website Console runner plan shared by installed-bin and one-shot npm executors; their command factories and coverage remain separate.
  • Ran the full release evidence gate for the delivered source snapshot: 832 Node tests, eight strict audits, package contents, documentation policy, release self-tests, and packed smoke all passed.
  • Extracted the learning profile and skill proposals domain in Phase 798; review, evidence, pilot, and lifecycle domains remain separate follow-up work.

Boundary

  • P17B.2 changes only smoke-test architecture and release verification. It adds no CLI, SDK, MCP, Website Console, package-version, publication, or P16 state change.
  • The original smoke entry points, command sequence, JSON contracts, local versus registry coverage, and failure messages remain authoritative.

Phase 796 - Skill contract and core hardening

  • Audited the 21-skill inventory against the Agent Skills specification, repository manifests, progressive-disclosure structure, and durable guidance.
  • Compared current open-source design-agent patterns and recorded explicit ADAPT, DEFER, and REJECT decisions in the P17 hardening plan.
  • Added one shared Markdown frontmatter helper and preserved the existing knowledge frontmatter audit behavior.
  • Added a deterministic skill contract gate for metadata, activation wording, playbook linkage and sections, line budgets, manifest parity, and unstable capability or pricing claims.
  • Standardized all 21 skill dispatchers with an explicit Use when condition and one direct executable-playbook handoff.
  • Replaced guessed Figma and collaboration MCP operation names with active tool-schema detection, and removed dated capability and fixed-price guidance.
  • Connected isolated negative fixtures and the complete 21-skill check to release:self-test.
  • Re-ran the complete release gate: 832/832 tests, eight strict audits, 794 packaged files, zero documentation warnings, and installed-bin plus one-shot package smoke passed.
  • Split the Website Console, learning, review, and lifecycle smoke domains from the monolithic package-smoke harness without changing command order or contract output.

Boundary

  • P17A adds no CLI command, SDK export, MCP tool, Website Console stage, package version, npm publication, target-repository mutation, or external write.
  • P16 recruitment and the P14 three-slot baseline remain unchanged; this internal hardening creates no external participation or adoption evidence.
  • Source-grounded design-system compilation, interface content quality, objective visual evaluators, and project continuity remain separately gated follow-up phases.

Phase 795 - External marketing pilot operations readiness

  • Defined one P16 operator flow from private invitation through Issue Form review, separate consent, bounded execution, feedback, publication, and close-out.
  • Limited the first active slot to one public marketing page and one real CTA or core flow with a safe local run or preview.
  • Added five mutually exclusive candidate lifecycle labels and documented the transition rule without treating intake metadata as consent.
  • Added a Korean-first direct invitation, one-reminder cadence, Day 14 public fallback, Day 28 blocked close-out, and an anonymous aggregate status record.
  • Added a Markdown hypothesis template with seven fixed problem keys, three required evidence sources, two-distinct-owner repetition, and one-capability tie-breaking rules.
  • Added deterministic operation checks that reject missing status labels, weakened owner independence, personal contact data, premature activity, a changed Issue Form link, or any byte drift in the P14 program baseline.
  • Merged PR #58 after required CI run 29503138956, passed main audit run 29503275956 and Pages run 29503275933, then verified the deployed P16 guide, issue #56, and five lifecycle labels at desktop and mobile widths.
  • Recorded source digests, local gates, Real-CI, public browser checks, and the remaining zero-participation boundary in the P16 readiness record.
  • Send the first private invitation set after the maintainer supplies a private list of three to five trusted project owners.
  • Start the first pilot only after a qualifying Issue Form and separate owner consent exist.

Boundary

  • P16 repository preparation creates no candidate, consent, participant, external result, feedback, repeated problem, or adoption evidence.
  • @design-ai/cli stays at v5.1.0; no CLI command, SDK export, MCP tool, version bump, or npm publication is part of this phase.
  • The P14 three-slot baseline remains byte-identical with three awaiting-owner slots and zero participation.
  • If recruitment reaches Day 28 without a candidate, record external participation as blocked and add no capability from invented evidence.

Phase 794 - External pilot recruitment activation

  • Defined the P15 funnel from public recruitment through candidate intake, separate consent, pilot execution, and evidence completion.
  • Added one privacy-safe GitHub Issue Form covering the three prepared pilot segments without requesting private source, credentials, personal contact data, analytics exports, local paths, or customer data.
  • Required owner authority, intake-only, separate-consent, private-artifact, and separately gated action acknowledgements.
  • Added deterministic form and chooser validation, including rejection tests for missing consent language, prohibited local-path requests, and mandatory public project references.
  • Connected the validator to release:self-test and required PR audit paths.
  • Created external-pilot and pilot:intake repository labels with an explicit no-consent intake boundary.
  • Merged PR #55, rendered the Issue Form from the default branch, published recruitment issue #56, and verified the linked P15 plan on GitHub Pages.
  • Recorded successful main Audit run 29498762177, Pages run 29498762066, the default-branch form source digest, and the live rendered surfaces in evidence/p15/recruitment-launch.md.

Boundary

  • A submitted issue is candidate intake only and authorizes no target action.
  • The P14 launch inventory remains at three awaiting-owner slots with zero participants, targets, consent records, measurements, feedback, or adoption.
  • Product capability selection still requires the same problem in two completed, independent pilot records from distinct owners.

Phase 793 - Public Pages proof and external pilot launch framework

  • Fixed the GitHub Pages project-path drift in English and Korean alternate links without changing local preview routing.
  • Mirrored the combined multilingual sitemap at each locale root through a safe MkDocs post-build hook and added path-boundary unit coverage.
  • Passed PR #51 required CI run 29492331845 and GitHub Pages deployment run 29492452008.
  • Verified public English desktop and Korean mobile views with no horizontal overflow, zero console warnings or errors, correct language links, and working skip-link focus.
  • Reverified the nested external-pilot document in both locales at 390 pixels after PR #53: language-root sitemap discovery, contextual navigation, no horizontal overflow, and zero console warnings or errors.
  • Verified both public sitemap paths return 200 with byte-identical SHA-256 3c8737fc5b8801eab0fbdae7f27517406e12bbf615c03569c4735e41e3aa1215.
  • Prepared three external pilot slots for a marketing site, app workflow, and Korean commerce or fintech interface.
  • Added recruitment, owner-consent, measurement, data-boundary, and stop-condition templates plus a checker that rejects invented consent or measurements.

Boundary

  • The three slots have no identified participant, target repository, consent, result, feedback, or adoption evidence.
  • A real project gets a separate source-linked evidence directory only after its owner records authority and consent.
  • Another product capability remains blocked until the same problem appears in two independent pilot records from distinct project owners.

Phase 792 - Public release and internal homepage pilot complete (v5.1.0)

  • Chose a backward-compatible minor release: the P6-P13 surfaces are additive and preserve the existing CLI, SDK, MCP, learning-write, and permission contracts.
  • Aligned package and Claude plugin manifests at v5.1.0.
  • Converted the accumulated P6-P13 changelog into the v5.1.0 release entry.
  • Corrected P13 completion evidence to PR #47, main commit 83479b2, 832 tests, real VS Code e2e, and successful GitHub Pages deployment.
  • Passed the exact-tree release gate, PR #48 required CI, main Audit run 29485559867, and Docs run 29485559848.
  • Published the v5.1.0 tag through npm Trusted Publishing run 29485715200 and GitHub Release run 29485715193.
  • Refreshed the Homebrew formula against the published tag archive and passed Ruby syntax, Homebrew style, temporary-tap source install, and formula test.
  • Run the documentation homepage through baseline, approved implementation, candidate, browser, and exact review-comparison evidence.
  • Prepared three consent-gated external pilot slots in Phase 793 without claiming adoption before another project owner actually participates.

Verified

  • The exact release tree passed 832 tests. All 8 audits passed, along with package smoke, PR #48 CI, main-branch audit, real VS Code e2e, documentation build, and Pages deployment.
  • npm latest resolves to @design-ai/cli@5.1.0 with SLSA provenance and public registry smoke. GitHub Release v5.1.0 is public with a digest-attested package asset. The Homebrew source archive SHA-256 is 66bf42c34ad1bf65f7db0a644353094a5fba715720f108549f69b3f0580b22b1.
  • The documentation homepage internal pilot resolves both confirmed P1 findings, adds no persistent, introduced, or uncertain finding, and preserves its local multilingual sitemap warning. The Phase 793 deployed follow-up closes the public 404 with zero console issues and two byte-identical 200 sitemap responses.

Versions

  • package.json + .claude-plugin/plugin.json: 5.0.0 → 5.1.0.
  • vscode-extension/package.json: remains 0.4.1.

What this enables

  • Users can install the complete review-to-verified-iteration workflow instead of depending on unreleased main-branch source.
  • Real homepage and external pilots can run against one public package identity.

What's still ahead

  • Real owner participation in the prepared consent-gated slots. A prepared slot is not adoption evidence.

Phase 791 - Verified design iteration (merged in PR #47)

  • Added one exact-source design-ai-review-comparison v1 contract with all eight lens transitions and resolved, persistent, introduced, and uncertain finding decisions.
  • Added CLI review-compare, typed SDK compareReviews(), in-process MCP design_ai_compare_reviews, and Website Console full-artifact import, restore, render, and original-byte export.
  • Kept a missing finding uncertain until its candidate lens passes and rejected subject, review-context, finding-lens, source, and derived-decision drift.
  • Added compact output that omits only repeated source bodies while preserving references, SHA-256 digests, byte counts, decisions, approvals, and boundaries.
  • Added package-content, installed-bin, one-shot npm exec, SDK import, MCP, and shared Console contract coverage.
  • Verified Website Console at 1440px and 390px with no horizontal overflow, zero console warnings or errors, a working keyboard skip link, 44px minimum visible navigation height, and exact import/export SHA-256 parity.
  • Passed npm run release:check with 832 tests, all 8 strict audits, 774 packaged files, a 0/0 documentation warning policy, SDK import smoke, and installed-bin plus one-shot comparison smoke.
  • Started a fresh stdio MCP process, found design_ai_compare_reviews in the 29-tool inventory, and returned a 3,934-byte compact artifact with matching source hashes and unchanged permission and claim boundaries.
  • PR #47 passed required CI, was squash-merged as 83479b2, and passed the main-branch audit, real VS Code e2e, documentation build, and Pages deployment.

Phase 790 - Real pilot evidence (implemented, local verification complete)

  • Added strict pilot-record and derived pilot-evidence v1 contracts over exact P11 implementation evidence, original P6 workflow, and operator record sources.
  • Added CLI review-pilot, typed SDK recordPilotEvidence(), in-process MCP design_ai_review_pilot, and Website Console exact import/export and stage restore.
  • Added derived first-value, finding-decision, approval-friction, implementation, unresolved-risk, and four-class claim inventories.
  • Kept identity, feedback authenticity, external adoption, production quality, business outcomes, repository mutation, network calls, and release writes outside the read-only evidence boundary.
  • Added installed-bin and one-shot npm exec package smoke over all three exact sources with unchanged-input and unchanged-target assertions.
  • Completed one consented Website Console dogfood chain with a 14-second first useful artifact, one accepted finding, complete P11 evidence, and no unresolved implementation risk.
  • Passed the full local release gate with 815 tests, all 8 strict audits, warning-free docs, 766 packaged files, and installed-bin plus one-shot package smoke.
  • Verified desktop and mobile layout, keyboard focus restoration, 44-pixel targets, reduced-motion detection, clean console output, and an exact 416,114-byte Website Console import/export round trip.
  • Published the internal case with real, synthetic, inferred, and unverified claims kept separate.
  • Added opt-in compact MCP output and passed a fresh stdio process proof: the 452,923-byte full response remains an explicit limit error, while the 4,021-byte summary preserves all three source hashes, byte counts, measures, issues, claims, next action, and safety boundaries.

Phase 789 - Implementation evidence (implemented, unreleased)

  • Added exact-source implementation-evidence request and result v1 contracts.
  • Added read-only Git baseline comparison, approved selector matching, explicit pre-existing-change handling, and regular non-symlink evidence-file hashing.
  • Added CLI review-evidence and in-process MCP design_ai_review_evidence; SDK remains unchanged because local filesystem and Git access are explicit operator boundaries.
  • Kept test execution, source reads, mutation, commit, push, deployment, network calls, migration execution, and external writes outside the operation.
  • Added Website Console import, original-byte export, forged-contract rejection, compact evidence rendering, and evidence -> approval -> proposal -> intake restoration.
  • npm run release:check passes with 805 tests, all 8 strict audits, 757 packaged files, a 0/0 documentation warning policy, and installed-bin plus one-shot npm exec package smoke.
  • A fresh MCP process calls design_ai_review_evidence, hashes only the two declared verification artifacts, executes no verification command itself, and preserves unverified browser, responsive, and accessibility proof as warnings.
  • Website Console evidence import, exact-byte export, clear-to-approval restore, and responsive rendering pass at 1440px and 390px with matching SHA-256, 44px minimum visible button targets, no horizontal overflow, and no console warnings or errors.
  • PR #45 passed required CI run 29424169441 before merge.

Phase 788 - Implementation scope approval (implemented, unreleased)

  • Added exact-source design-ai-implementation-scope-request, proposal, and approval v1 contracts with derived repository baseline, selector, ownership, verification, risk, and gate validation.
  • Added review-scope and review-scope-approve CLI commands, two typed SDK exports, and two in-process MCP tools without adding a production dependency.
  • Kept proposal and approval operations read-only; approval authorizes only listed source reads and target-file changes while commit, push, deployment, migration execution, and external writes remain separately gated.
  • Added Website Console exact import/export, forged-artifact rejection, compact scope rendering, and approval -> proposal -> intake restore behavior.
  • Added installed-bin, one-shot npm exec, SDK import, MCP, package-content, and browser contract coverage.
  • npm run release:check passes with 795 tests, 8 strict audits, 749 packaged files, a 0/0 documentation warning policy, and package smoke.
  • A fresh MCP process creates and approves the exact scope while preserving false performed-action flags and the separate commit, push, and external-write gates.
  • Website Console approval import, original-byte export, clear-to-proposal restore, and responsive rendering pass at 1440px and 390px with matching SHA-256, 44px minimum button height, no horizontal overflow, and no console warnings or errors.
  • PR #44 passed required CI run 29418999657 before merge.

Phase 787 - Target repository intake (implemented, unreleased)

Grounds a validated review handoff in the exact local repository that would receive implementation, without reading application source or authorizing edits.

Delivered

  • Added CLI design-ai review-intake and MCP design_ai_review_intake over one shared read-only operation.
  • Added design-ai-target-repo-intake v1 with receipt digest linkage, declared and resolved target identity, bounded root project metadata, and local Git evidence.
  • Required exact consumer and path matches before inspection; rejected symbolic links without running Git through them.
  • Reported remote drift as blocked and existing worktree changes or detached HEAD as attention states without filtering target files.
  • Added Website Console intake-first validation, rendering, exact JSON export, independent clear, and earlier-evidence restoration.
  • Expanded the source capability contract to 24 MCP tools while keeping the SDK at 16 exports and retaining exactly three opt-in learning-profile write tools.
  • Added help, Console, package-content, installed-bin, one-shot npm exec, and shared smoke coverage.

Boundary

  • CLI reads one explicit receipt file and the receipt-declared local target. MCP reads one explicit absolute receipt path and inspects the same declared target path, avoiding oversized receipt transfer through the tool call.
  • Inspection is limited to root package.json, supported lockfile and index.html existence, plus local Git metadata and status.
  • No application source is read. No preview, dependency install, network request, target mutation, implementation, commit, push, or deployment is performed.
  • SDK remains unchanged because repository filesystem access is not part of its curated source-string surface.

Verification target

  • Focused contract, CLI, MCP, capability, Console, Git-boundary, help, and smoke self-tests pass.
  • npm run release:check passes with 778 tests, 8 strict audits, 739 packaged files, a 0/0 documentation warning policy, and installed-bin plus one-shot target-intake smoke.
  • Website Console intake import, exact JSON export, clear, and receipt restore pass at 1440px and 390px with matching SHA-256, 44px minimum visible button targets, no horizontal overflow, and no console warnings or errors.
  • A fresh Codex process called design_ai_review_intake through the configured local MCP server and returned exact path and remote matches, read-only mode, and false mutation, application-source-read, and implementation flags.
  • PR #43 passed required CI run 29413686416 before merge.

Phase 786 - Consumer validation receipt (implemented, unreleased)

Lets the named receiving agent prove that it revalidated the exact handoff bytes without turning contract validation into an identity, acceptance, or implementation claim.

Delivered

  • Added CLI design-ai review-handoff-verify, SDK verifyReviewHandoff(), and MCP design_ai_verify_review_handoff over one shared validator.
  • Added design-ai-review-handoff-receipt v1 with exact handoff source, byte count, SHA-256 digest, parsed value, evidence summary, unchanged approvals, and pending target-repository intake.
  • Required the self-declared consumer to match the named handoff recipient and rejected source, digest, evidence, approval, or boundary drift.
  • Added Website Console receipt-first import, nested handoff restoration, original-byte export, clear-to-handoff behavior, and responsive receipt rendering.
  • Expanded the source capability contract to 23 MCP tools and 16 SDK exports while retaining exactly three opt-in learning-profile write tools.
  • Added help, SDK, MCP, Console, package-content, installed-bin, one-shot npm exec, and shared smoke coverage.

Boundary

  • Contract validation does not verify consumer identity, transport, receipt by an external system, acceptance, target-repository intake, implementation, or delivery.
  • CLI reads one explicit regular JSON file. SDK and MCP receive the exact source string. The operation writes nothing and makes no external request.
  • The receipt leaves implementation unauthorized and carries every remaining approval forward unchanged.

Verification target

  • Focused contract, CLI, SDK, MCP, capability, Console, and smoke self-tests pass.
  • npm run release:check passes with 767 tests, 8 strict audits, 734 packaged files, SDK import smoke, and installed-bin plus one-shot receipt smoke.
  • Website Console receipt import, export, clear, and handoff restore pass at 1440px and 390px with exact exported SHA-256, 44px minimum visible button targets, no horizontal overflow, and no console warnings or errors.
  • A fresh Codex process calls design_ai_verify_review_handoff through the configured local MCP server and returns the bounded receipt.
  • Fresh Claude MCP invocation remains blocked before tool execution because the organization has disabled Claude Code subscription access. The configured server itself reports connected; no Claude receipt claim is made.
  • PR #42 passed required CI run 29408587642 before merge.

Phase 785 - Review evidence handoff (implemented, unreleased)

Turns one canonical review session into a portable contract another agent can validate without claiming that the handoff was transported, accepted, or implemented.

Delivered

  • Added CLI design-ai review-handoff, SDK reviewHandoff(), and MCP design_ai_review_handoff over one shared operation.
  • Preserved exact workflow, quality-report, and browser-verification source strings with byte counts, SHA-256 digests, parsed values, and explicit references.
  • Required optional quality and browser evidence as a pair, then verified semantic report identity, browser source digest, and declared viewport coverage.
  • Added named recipient, not-delivered, pending consumer validation, prepared implementation handoff, and unchanged remaining approval gates.
  • Added Website Console handoff import, full revalidation, original-byte export, and responsive handoff-stage rendering.
  • Expanded the source capability contract to 22 MCP tools and 15 SDK exports while retaining exactly three opt-in learning-profile write tools.
  • Added installed-bin, one-shot npm exec, SDK import, Console, help, package-content, and shared drift assertion coverage.

Boundary

  • The CLI reads explicit regular JSON files. SDK and MCP receive exact source strings.
  • The operation writes no local file, sends no transport, invokes no model, inspects or mutates no target repository, starts no implementation, and makes no external request.
  • A prepared handoff remains unaccepted until the named consumer validates it and obtains its remaining approvals.

Verification target

  • Focused core, CLI, SDK, MCP, Console, help, capability, and smoke assertion tests pass.
  • npm run release:check passes with 760 tests, 8 strict audits, 728 packaged files, SDK import smoke, installed-bin and one-shot handoff smoke, and a 0/0 documentation warning policy.
  • PR #41 passed required CI run 29405311672 before merge.

Phase 784 - Canonical review workflow (implemented, unreleased)

Turns one existing HTML artifact into a single linked review session instead of asking users and agents to carry context between separate planning and inspection commands.

Delivered

  • Added CLI design-ai review, SDK reviewHtml(), and MCP design_ai_review_html over one shared operation.
  • Preserved the nested design-ai-start and design-ai-quality-report contracts and linked them with exact source identity plus plan, design-contract, and report SHA-256 digests.
  • Added the ordered plan, static-review, browser-verification, and implementation-handoff stages with one pending human decision.
  • Added Website Console workflow import, original-byte export, nested artifact rendering, and a responsive semantic review timeline.
  • Expanded the source capability contract to 21 MCP tools and 14 SDK exports while retaining exactly three opt-in learning-profile write tools.
  • Added installed-bin, one-shot npm exec, SDK import, Console, help, package-content, and drift assertion coverage.

Boundary

  • The CLI reads one explicit regular HTML file. SDK and MCP receive source text.
  • The workflow runs no browser or script, writes no evidence, mutates no target repository, calls no external service, and records no learning signal.
  • Declared repository, URL, and screenshot references remain uninspected plan context.
  • Browser verification remains not-run; implementation remains not-started until their separate approval-gated workflows produce evidence.

Verification target

  • Focused core, CLI, SDK, MCP, Console, help, and smoke assertion tests pass.
  • npm run release:check passes with 749 tests, 8 strict audits, 722 packaged files, a 0/0 documentation warning policy, SDK import smoke, and installed-bin plus one-shot review smoke.
  • PR #40 passed required CI before merge.

Phase 783 - Product specialization benchmark and adoption proof (implemented, unreleased)

Turns the specialization thesis into a repeatable local regression suite without using a numeric quality score or overstating synthetic evidence as customer adoption.

Delivered

  • Added CLI-only design-ai benchmark [case-id] [--strict] [--json] and --list over one versioned packaged suite.
  • Covered new design, existing-product refactor, Korean product UX, and multi-agent handoff with four synthetic fixtures and public case studies.
  • Added strict validators for start and design-artifact payloads, then reused the canonical quality-report validator for inspected fixture evidence.
  • Compared exact finding-id sets as false negatives, false positives, and uncertainty regressions instead of calculating an aggregate score.
  • Added SHA-256 identity for the suite, fixture inputs, generated contracts, transfer envelopes, and case studies.
  • Required every case study to keep Source, Change, Verification, Permission boundary, Remaining risk, and Claim boundary sections.
  • Added installed-bin and one-shot npm exec package smoke assertions for 4/4 passing cases and the read-only boundary.

Boundary

  • Every case is marked synthetic-fixture with adoptionClaim: none; no customer use, production outcome, or first-value time is claimed.
  • The runner reads packaged fixtures and corpus files only. It writes no file, opens no browser, executes no fixture code, mutates no target repository, and makes no external request.
  • Multi-agent coverage uses local transfer envelopes with sender, recipient, artifact kind/version, SHA-256, and consumer validation. It does not claim a real transport or model invocation.
  • Target-repository edits, publication, deployment, and real-user evidence collection remain separate approval-gated work.

Verification target

  • Unit, CLI, contract, help, dispatch, package-content, and shared smoke assertion tests pass.
  • Package contents include the runner, validators, suite, five HTML fixtures, and four case studies.
  • npm run release:check passed with 736 tests, 8 strict audits, 715 packaged files, a 0/0 documentation warning policy, and benchmark smoke through installed-bin plus one-shot npm exec paths.
  • PR #39 passed audits and size budget, docs policy, package integrity, and unit tests before merge.

Phase 782 - Korean product packs and Website Console quality review (implemented, unreleased)

Turns Korean fintech, commerce, SaaS, content, and game knowledge into explicit, versioned review contracts and gives operators a human-readable quality evidence surface in Website Console.

Delivered

  • Added five opt-in product review packs across CLI, SDK, and MCP with revisioned criteria, benchmarks, false-positive notes, and mobile plus desktop coverage.
  • Added deterministic phone, password-autocomplete, and marketing-consent checks while leaving wrapping, density, payment, probability, and runtime accessibility unverified.
  • Added Website Console quality and browser-sidecar import, validation, digest linkage, viewport coverage, and unchanged JSON export.

Boundary

  • Locale never selects a product pack implicitly.
  • Static evidence never upgrades browser or scenario criteria.
  • Website Console keeps quality and browser evidence as separate immutable contracts.

Verification target

  • npm run release:check passed with 722 tests, 8 strict audits, and installed-bin plus one-shot package smoke coverage.
  • Pull request #38 passed CI and merged as 7c45776d5b4dad5f8dadf1f900bfc7c530ae218a.

Phase 781 - Approval-gated browser verification runner (implemented, unreleased)

Adds runtime evidence without weakening the read-only static inspector or adding a browser dependency to the core package.

Delivered

  • Added design-ai verify-browser as a CLI-only operation over one canonical P2 quality report, one loopback preview URL, one target root, one user-supplied adapter, and one explicit approval reference.
  • Added a versioned design-ai-browser-verification sidecar contract for run metadata, boundary, viewports, seven required probe categories, artifact-linked findings, and a derived summary.
  • Required responsive passes to include screenshots and accessibility passes to include accessibility output; missing adapters, probes, JSON, and artifacts remain unverified.
  • Linked non-passing runtime probes to related unverified source-report finding IDs and compared the source-report digest after adapter exit.
  • Added focused parser, approval, loopback, adapter-failure, pass/fail normalization, source digest, and boundary-violation tests plus package-content guards.

Boundary

  • The runner starts only with --yes and a non-empty --approval-ref and confines its own writes to ~/.design-ai/evidence/browser/.
  • It accepts loopback URLs only, runs the adapter from the evidence directory with a minimal environment, and does not install browser or accessibility packages.
  • A post-run P2 report digest mismatch creates a boundary-violation artifact and rejects the run. Mutation restored before adapter exit remains unverified.
  • SDK and MCP inventories stay unchanged. Browser process execution remains an explicit CLI boundary, and the user-supplied adapter must be trusted separately.
  • The sidecar distinguishes runner checks from adapter attestations. Post-run source-report digest match and evidence location are verified; restored intermediate source mutation, adapter target-repository mutation, and external writes remain unverified.
  • Adapter execution currently requires macOS or Linux so timeout handling can terminate the full POSIX process group.

Verification target

  • Focused browser contract, runner, CLI parser, help, dispatch, package-content, and shared smoke assertion tests pass.
  • npm run release:check passed with 706 tests, 8 strict audits, 682 packaged files, warning-free docs, and functional browser verification smoke through installed-bin plus one-shot npm exec paths.
  • Pull-request CI evidence will be recorded before merge.

Phase 780 - Read-only static HTML quality engine (implemented, unreleased)

Turns one explicit HTML source into the canonical evidence-backed quality report without executing the page or changing the selected file.

Delivered

  • Added design-ai inspect <source.html> --brief text with explicit file selection, regular-file and 1 MB guards, symlink rejection, Markdown output, and canonical JSON output.
  • Added one dependency-free static analyzer for document language, supported control and button names, image alternatives, and the mobile viewport contract.
  • Added SDK inspectHtml() and MCP design_ai_inspect_html; both inspect supplied strings and call the same pure operation as the CLI adapter.
  • Preserved all eight quality lenses, concrete locations, Before/After/Why, evidence, verification steps, and separate confirmed/unverified counts.
  • Expanded the source capability contract to 20 MCP tools and 13 SDK exports at the P2 boundary, while retaining exactly three opt-in learning-profile write tools.
  • Added installed-bin, one-shot npm exec, and post-publish registry smoke contracts that assert the selected source bytes remain unchanged.

Boundary

  • The CLI reads one operator-selected .html or .htm file. It does not follow symbolic links, recursively scan a repository, resolve linked resources, execute scripts, open a browser, or write evidence.
  • SDK and MCP receive source text and a display reference; neither reads a target path.
  • Static success does not become a passing runtime claim. Interaction, interruption, motion, performance, keyboard, accessibility-tree, and rendered responsive behavior remain unverified.
  • Target-repository mutation, browser verification, publication, and deployment remain explicit approval gates.

Verification target

  • Focused contract, analyzer, CLI, SDK, MCP, help, dispatch, and capability-manifest tests pass.
  • npm run release:check passed with 694 tests, 8 strict audits, 676 packaged files, warning-free docs, and installed-bin plus one-shot npm exec smoke coverage.
  • Pull request #36 passed audits and size budget, package integrity, documentation policy, and CLI plus VS Code library unit-test checks in GitHub Actions run 29319044947.

Earlier phases

Phases 1-779, covering every release up to and including v5.0.0, moved to the roadmap archive.