Skip to content

feat(ui): add Storybook design-token contract - #1354

Open
seonghobae wants to merge 19 commits into
developfrom
feat/storybook-token-contract
Open

feat(ui): add Storybook design-token contract#1354
seonghobae wants to merge 19 commits into
developfrom
feat/storybook-token-contract

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Description

This Ready PR is reconciled onto the current protected develop and remains a bounded five-file Storybook/design-token contract slice. Predecessor evidence does not transfer.

  • Protected base: develop@81c105645ca6e680f5f8c15ba9c33b67eb63c48b.
  • Exact current head: 84edbbf152d257cd05777bf0b007fcfec2ac1d18.
  • Head branch: feat/storybook-token-contract.
  • Current restack head is a normal merge of protected develop into the existing feature lineage; no force-push, dummy commit, empty requeue, or product conflict is claimed.
  • Effective diff remains exactly five additive files: three design/doctoring documents plus frontend/src/app/storybook-design-tokens.css and its regression test. There is no package, lockfile, .storybook runtime, database, network, model, or credential delta.

Buyer-visible/design-system outcome

Naruon already has broad UI surfaces, but repeated objects are still reviewed as product pages rather than through a reusable component/design-system contract. This slice establishes a tested Storybook-readable token adapter while keeping production CSS authoritative and preventing documentation-only values from being mistaken for accepted runtime tokens.

Customer next action: do not treat Storybook documentation scales as accepted production tokens. Production CSS remains runtime authority.

Implemented contract

  • frontend/src/app/storybook-design-tokens.css exposes static @tokens categories and presenter hints.
  • Runtime-backed aliases are separated from literal documentation scales marked @status candidate.
  • frontend/src/app/storybook-design-tokens.test.ts locks category coverage, unique token names, mappings, complete alias resolution against globals.css, candidate labeling, and the no-remote-resource boundary.
  • UI/UX and doctoring documents distinguish production CSS authority, candidate scales, future DTCG exchange, Storybook runtime work, component stories, accessibility evidence, and Figma mapping.
  • No Storybook runtime dependency, pnpm lockfile change, .storybook config, DTCG JSON artifact, component story, or Figma mapping is introduced here.

The follow-on dependency slice must pin an exactly compatible Storybook package set for the then-current Next.js/React toolchain, prove browser-test integration, add accessibility/interaction gates, audit or remove candidate scales before product/Figma consumption, and keep production tokens—not documentation CSS—as runtime authority.

Current exact-head verification

Repository-owned pull-request workflows on exact head 84edbbf152d257cd05777bf0b007fcfec2ac1d18 are terminal-success:

  • Application CI — run 32471618625;
  • Build and Publish Docker Images — run 32471618752;
  • SAST Semgrep — run 32471618640;
  • Security Scan — run 32471618596;
  • Bandit Security Scan — run 32471618586;
  • Dependency Review — run 32471618631.

The current formal review inventory contains a Devin COMMENTED review only. Its one current inline note observes that radius aliases resolve through Tailwind @theme inline; that note is informational for this static, non-imported adapter and does not identify a shipped runtime defect. The thread has been resolved after checking the exact token file and globals.css. Dismissed OpenCode REQUEST_CHANGES reviews belong to predecessor heads and are non-passing historical evidence.

Repository protection still requires central contexts including coverage, OpenCode review, Strix, image validation, dependency/security scanners, and related live required workflows on the unchanged head. Repository-owned success alone is not merge authorization, and no qualifying independent non-author current-head approval is present.

Figma / Storybook authority boundary

Fresh design-source inspection on 2026-08-22 found that the repository's design-qa.md points to Figma file 68b5XB58w8nwT2LYOOnikK, while the live file currently exposes only the top-level Source Map page. The repository document still describes additional Foundations, Components, Desktop, Mobile, and QA pages. This PR therefore makes no claim that Figma variables/components are synchronized or that those historical node references are currently authoritative.

Likewise, this slice deliberately does not install a Storybook runtime. It is the static token-contract precursor. Figma ↔ Storybook executable synchronization remains follow-on work under the existing design-sync/product-gap tracking and must use a fresh live Figma file plus an exact-head Storybook build when implemented.

Standards and claim boundary

  • DTCG 2025.10 is used only as the stable Community Group design-token exchange reference; it is not represented as a W3C Recommendation or Standards Track standard.
  • WCAG 2.2 is the accessibility target, but this static token slice does not claim whole-product WCAG conformance or assistive-technology interoperability.
  • Storybook/addon compatibility remains a follow-on executable acceptance question rather than an inference from documentation version ranges.
  • The WCAG doctoring citation is bound to the dated 12 December 2024 W3C Recommendation URL rather than mixing the original 2023 publication date with a mutable latest URL.

Merge gate

Do not merge from predecessor evidence. Merge only if the unchanged exact current head satisfies every live repository/organization required workflow, package/provenance and review-thread rule, has zero valid unresolved findings, and receives the qualifying independent current-head/latest-push non-author APPROVED review required by protected develop.

No self-approval, branch-protection bypass, gate weakening, stale/predecessor/status-only/model-only evidence, or synthetic approval is acceptable. Issue #1371 remains the independent-review-path prerequisite.

Refs #1017, #1350, #1371.


Open in Devin Review

@coderabbitai

coderabbitai Bot commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 58 minutes.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: afe4be7e-2520-4214-8748-74f7560ca485

📥 Commits

Reviewing files that changed from the base of the PR and between f3beb1c and 655c973.

📒 Files selected for processing (5)
  • docs/doctoring/storybook-design-token-contract.md
  • docs/plans/2026-08-15-storybook-design-token-library.md
  • docs/ui-ux/storybook-design-token-contract.md
  • frontend/src/app/storybook-design-tokens.css
  • frontend/src/app/storybook-design-tokens.test.ts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae seonghobae added the documentation Improvements or additions to documentation label Aug 15, 2026 — with ChatGPT Codex Connector

Copy link
Copy Markdown
Contributor Author

@opencode-agent review current exact head b689a6026e8d0900dc9b992347940ad9f34b0001. Review the complete five-file Storybook/design-token contract and publish a formal GitHub review verdict anchored to this SHA. Verify token alias closure against production CSS, uniqueness/category coverage, no remote resources, standards/version claims, and the explicit no-package/no-lockfile boundary. Current-head workflows are queued and must not be treated as passing until terminal.

Copy link
Copy Markdown
Contributor Author

Exact-current-head read-only review request for b689a6026e8d0900dc9b992347940ad9f34b0001 over develop@c14c4912149e65af520843b1321b654d08469e24.

The candidate now validates every Storybook token alias against globals.css, rejects duplicate token names and remote resources, corrects the community addon's Storybook-major compatibility boundary, and records DTCG 2025.10 plus WCAG 2.2 as follow-on gates. It still adds no dependency or lockfile change and does not claim Storybook runtime, DTCG exchange, Figma mapping, or component accessibility evidence is shipped.

@coderabbitai review
@opencode-agent review
@cwl-noema-review review
@strix review

Review read-only. Do not mutate the branch, synthesize author approval, weaken checks, or merge outside normal protection.

@coderabbitai

coderabbitai Bot commented Aug 15, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

base="c14c4912149e65af520843b1321b654d08469e24"
head="b689a6026e8d0900dc9b992347940ad9f34b0001"

echo "== Checked-out commit =="
git rev-parse HEAD
echo "== Base and head objects =="
git cat-file -t "$base"
git cat-file -t "$head"

echo "== Changed files and status =="
git diff --name-status "$base" "$head"
echo "== Diff statistics =="
git diff --stat "$base" "$head"

echo "== Candidate file locations =="
fd -a '^(storybook-design-tokens(\.test)?\.ts|globals\.css)$' frontend 2>/dev/null || true

echo "== Adapter and test outlines =="
ast-grep outline frontend/src/app/storybook-design-tokens.test.ts --items all 2>/dev/null || true
echo "-- adapter --"
cat -n frontend/src/app/storybook-design-tokens.css 2>/dev/null || true
echo "-- test --"
cat -n frontend/src/app/storybook-design-tokens.test.ts 2>/dev/null || true

echo "== Production CSS token declarations/references =="
rg -n -C2 --glob 'globals.css' '(--[A-Za-z0-9_-]+:|var\(--[A-Za-z0-9_-]+\))' frontend/src 2>/dev/null || true

echo "== Documentation files in exact diff =="
git diff --name-only "$base" "$head" | while IFS= read -r path; do
  case "$path" in
    *.md|*.mdx|*.txt)
      echo "-- $path --"
      git show "$head:$path" | cat -n
      ;;
  esac
done

echo "== Package and lockfile changes =="
git diff --name-only "$base" "$head" | rg '(^|/)(package\.json|pnpm-lock\.yaml|package-lock\.json|yarn\.lock)$' || true

echo "== GitHub PR and exact-head checks =="
gh pr view 1354 --repo ContextualWisdomLab/naruon --json number,headRefOid,baseRefOid,reviewDecision,mergeStateStatus,statusCheckRollup

Length of output: 47346


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Frontend package and test configuration candidates =="
fd -a '^(package\.json|vitest\.config\.(ts|js|mts|mjs|cts|cjs)|vite\.config\.(ts|js|mts|mjs|cts|cjs)|pnpm-workspace\.yaml)$' . \
  -E node_modules -E .git | sort

echo "== Frontend package scripts and Vitest configuration =="
for path in \
  frontend/package.json \
  frontend/vitest.config.ts \
  frontend/vite.config.ts \
  package.json \
  pnpm-workspace.yaml
do
  if [ -f "$path" ]; then
    echo "-- $path --"
    cat -n "$path"
  fi
done

echo "== Test-location and test-pattern references =="
rg -n -C2 --glob '!node_modules/**' \
  '(include|exclude|testMatch|testRegex|vitest|\.test\.(ts|tsx|js|jsx))' \
  frontend package.json pnpm-workspace.yaml 2>/dev/null || true

echo "== Static token-contract evaluation =="
python3 - <<'PY'
from pathlib import Path
import re, sys

adapter = Path("frontend/src/app/storybook-design-tokens.css").read_text()
runtime = Path("frontend/src/app/globals.css").read_text()
categories = [
    "Naruon Colors", "Naruon Sidebar Colors", "Naruon Typography",
    "Naruon Font Sizes", "Naruon Line Heights", "Naruon Spacing",
    "Naruon Radius", "Naruon Elevation",
]
names = re.findall(r"^\s*(--naruon-token-[a-z0-9-]+)\s*:", adapter, re.I | re.M)
aliases = re.findall(
    r"^\s*--naruon-token-[a-z0-9-]+\s*:\s*var\((--[a-z0-9-]+)\)\s*;",
    adapter, re.I | re.M,
)
live = set(re.findall(r"^\s*(--[a-z0-9-]+)\s*:", runtime, re.I | re.M))
remote_patterns = [
    r"`@import`\s+url\(",
    r"url\s*\(\s*[\"']?\s*(?:https?:)?//",
    r"https?://",
]
print(f"token names: {len(names)}; unique: {len(set(names))}")
print(f"category annotations: {[c for c in categories if '`@tokens` ' + c in adapter]}")
print(f"presenter annotations: {len(re.findall(r'`@presenter` ', adapter))}")
print(f"direct aliases: {len(aliases)}; unresolved: {sorted(set(aliases) - live)}")
print(f"remote-pattern matches: {[p for p in remote_patterns if re.search(p, adapter, re.I)]}")
if len(names) != len(set(names)) or set(aliases) - live or any(re.search(p, adapter, re.I) for p in remote_patterns):
    sys.exit(1)
PY

echo "== Exact diff for review =="
git diff --check c14c4912149e65af520843b1321b654d08469e24 b689a6026e8d0900dc9b992347940ad9f34b0001
git diff --unified=30 c14c4912149e65af520843b1321b654d08469e24 b689a6026e8d0900dc9b992347940ad9f34b0001 -- \
  frontend/src/app/storybook-design-tokens.css \
  frontend/src/app/storybook-design-tokens.test.ts

Length of output: 116142


🤖 web_search executed:

Verify these primary-source claims as of August 2026. Provide official URLs and exact supporting statements: (1) Storybook 10.4 supports Next.js 16.2; (2) storybook-design-token addon v5 supports Storybook 10 and newer and is ESM-only, while v4 targets Storybook 9; (3) Design Tokens Format Module 2025.10 is the first stable DTCG format and its publication date; (4) WCAG 2.2 publication date; (5) Storybook accessibility testing uses axe-core and does not replace manual accessibility testing.

Length of output: 8573


🤖 web_search executed:

Use official primary sources only. Verify each item with its exact URL and quoted supporting text: (1) the Storybook 10.4 release announcement and whether it explicitly claims Next.js 16.2 support; (2) Design Tokens Community Group Design Tokens Format Module 2025.10 status and publication date; (3) WCAG 2.2 status and publication date. If an exact claim cannot be verified, state that clearly.

Length of output: 9627


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Current PR review threads =="
gh api graphql \
  -F owner="ContextualWisdomLab" \
  -F name="naruon" \
  -F number=1354 \
  -f query='
query($owner: String!, $name: String!, $number: Int!) {
  repository(owner: $owner, name: $name) {
    pullRequest(number: $number) {
      headRefOid
      isDraft
      reviewDecision
      reviews(first: 100) {
        nodes { author { login } state commit { oid } submittedAt }
      }
      reviewThreads(first: 100) {
        nodes { isResolved isOutdated comments(first: 1) { nodes { author { login } body path line } } }
      }
    }
  }
}' \
  --jq '.data.repository.pullRequest'

echo "== Current exact-head check summary =="
gh pr view 1354 --repo ContextualWisdomLab/naruon \
  --json headRefOid,mergeStateStatus,reviewDecision,statusCheckRollup \
  --jq '{headRefOid, mergeStateStatus, reviewDecision, checks: [.statusCheckRollup[] | {name, status, conclusion: (.conclusion // .state // "")}]}'

Length of output: 3787


🤖 web_search executed:

Site:designtokens.org/TR/2025.10/format/ identify the document status and publication date for “Design Tokens Format Module 2025.10”. Site:w3.org/TR/WCAG22/ identify the document status and publication date for “Web Content Accessibility Guidelines (WCAG) 2.2”. Return only the exact supporting text and URLs from these primary sources.

Length of output: 10689


@seonghobae Formal review verdict: REQUEST CHANGES for exact head b689a6026e8d0900dc9b992347940ad9f34b0001.

The static implementation is correct within the stated boundary.

  • The diff contains exactly five added files.
  • No package manifest or lockfile changed.
  • storybook-design-tokens.test.ts is discovered by the frontend Vitest configuration.
  • The adapter has 53 unique token names.
  • All eight required categories and presenter hints exist.
  • All 35 direct CSS variable aliases resolve in globals.css.
  • The adapter has no detected remote-resource patterns.
  • git diff --check reports no whitespace errors.
  • The documents correctly state that Storybook runtime, DTCG exchange, Figma mapping, and component accessibility evidence are not shipped.

Please correct these documentation claims before approval:

  1. Correct the Storybook version attribution.
    docs/doctoring/storybook-design-token-contract.md Line 13 and docs/ui-ux/storybook-design-token-contract.md Line 47 state that Storybook 10.4 reports explicit Next.js 16.2 support. The Storybook 10.4 release source does not make that claim. Storybook 10.3 explicitly lists “Next.js 16.2 support.” Update the version reference or use wording that does not attribute the claim to 10.4. Also align docs/plans/2026-08-15-storybook-design-token-library.md Line 24 if necessary.

  2. Correct the DTCG and WCAG source metadata.
    docs/doctoring/storybook-design-token-contract.md Lines 19, 25, and 37 need current source metadata:

    • https://www.designtokens.org/TR/2025.10/format/ currently identifies a Draft Community Group Report dated 30 July 2026. It is not the stable 2025.10 publication. Cite the stable Design Tokens Technical Reports 2025.10 Final Community Group Report, dated 28 October 2025, or cite the DTCG announcement with accurate status wording.
    • The current https://www.w3.org/TR/WCAG22/ identifies WCAG 2.2 as a W3C Recommendation dated 12 December 2024. The APA reference currently uses 5 October 2023. Cite the intended edition consistently.

The required exact-head checks remain queued or in progress. They are not passing evidence. The pull request remains BLOCKED and REVIEW_REQUIRED. No approval is issued.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

Exact-current-head read-only design-system review request for 22d1857e2b489eb332923f781e5163d78bcfbe82 over develop@c14c4912149e65af520843b1321b654d08469e24.

All exact-head repository CI, Docker, dependency, security, Bandit, and Semgrep workflows are terminal-success. Review the production-alias versus @status candidate boundary, complete alias resolution, no-remote-resource test, Storybook 10.5 / @storybook/nextjs-vite follow-on contract, DTCG authority boundary, and WCAG/Figma claim boundaries.

@opencode-agent review
@coderabbitai review
@cwl-noema-review review
@strix review

Review read-only. Do not mutate the branch, synthesize author approval, bypass protection, or merge.

@coderabbitai

coderabbitai Bot commented Aug 15, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

base="c14c4912149e65af520843b1321b654d08469e24"
head="22d1857e2b489eb332923f781e5163d78bcfbe82"
repo="ContextualWisdomLab/naruon"

echo "== Commit identity =="
printf "checked_out="; git rev-parse HEAD
printf "base="; git rev-parse "$base"
printf "head="; git rev-parse "$head"

echo "== Changed files =="
git diff --name-status "$base" "$head"
echo "== Diff check =="
git diff --check "$base" "$head"

echo "== Package and lockfile changes =="
git diff --name-only "$base" "$head" | rg '(^|/)(package\.json|pnpm-lock\.yaml|package-lock\.json|yarn\.lock)$' || true

echo "== Exact diff =="
git diff --unified=20 "$base" "$head"

echo "== Relevant production CSS files =="
fd -a '^globals\.css$' frontend 2>/dev/null || true
echo "== globals.css token declarations and references =="
rg -n -C2 --glob 'globals.css' '(--[A-Za-z0-9_-]+\s*:|var\(--[A-Za-z0-9_-]+\))' frontend/src 2>/dev/null || true

echo "== Source and test outlines =="
ast-grep outline frontend/src/app/storybook-design-tokens.test.ts --items all 2>/dev/null || true
echo "== Test and adapter contents =="
for p in frontend/src/app/storybook-design-tokens.css frontend/src/app/storybook-design-tokens.test.ts; do
  if [ -f "$p" ]; then
    echo "-- $p --"
    cat -n "$p"
  fi
done

echo "== Frontend test configuration =="
for p in frontend/package.json frontend/vitest.config.ts frontend/vite.config.ts package.json pnpm-workspace.yaml; do
  if [ -f "$p" ]; then
    echo "-- $p --"
    cat -n "$p"
  fi
done

echo "== GitHub exact-head status and review state =="
gh pr view 1354 --repo "$repo" \
  --json headRefOid,baseRefOid,isDraft,mergeStateStatus,reviewDecision,statusCheckRollup \
  --jq '{headRefOid,baseRefOid,isDraft,mergeStateStatus,reviewDecision,checks:[.statusCheckRollup[] | {name,status,conclusion:(.conclusion // .state // "")}]}'

echo "== Review threads =="
gh api graphql \
  -F owner="ContextualWisdomLab" -F name="naruon" -F number=1354 \
  -f query='
query($owner: String!, $name: String!, $number: Int!) {
  repository(owner: $owner, name: $name) {
    pullRequest(number: $number) {
      reviewThreads(first: 100) {
        nodes {
          isResolved
          isOutdated
          comments(first: 1) { nodes { author { login } body path line } }
        }
      }
    }
  }
}' --jq '.data.repository.pullRequest.reviewThreads.nodes'

Length of output: 55275


🏁 Script executed:

#!/bin/bash
set -euo pipefail

python3 - <<'PY'
from pathlib import Path
import re

adapter = Path("frontend/src/app/storybook-design-tokens.css").read_text()
runtime = Path("frontend/src/app/globals.css").read_text()

required_categories = {
    "Naruon Colors",
    "Naruon Sidebar Colors",
    "Naruon Typography",
    "Naruon Candidate Font Sizes",
    "Naruon Candidate Line Heights",
    "Naruon Candidate Spacing",
    "Naruon Radius",
    "Naruon Candidate Elevation",
}
names = re.findall(r"^\s*(--naruon-token-[a-z0-9-]+)\s*:", adapter, re.I | re.M)
aliases = re.findall(
    r"^\s*--naruon-token-[a-z0-9-]+\s*:\s*var\((--[a-z0-9-]+)\)\s*;",
    adapter, re.I | re.M,
)
live = set(re.findall(r"^\s*(--[a-z0-9-]+)\s*:", runtime, re.I | re.M))
blocks = re.findall(
    r"/\*\*\s*\n\s*\*\s*`@tokens` ([^\n]+)\n([\s\S]*?)\*/\s*((?:\s*--naruon-token-[a-z0-9-]+\s*:[^;]+;)+)",
    adapter, re.I | re.M,
)
categories = {name.strip() for name, _, _ in blocks}
literal_categories = [
    name.strip() for name, metadata, declarations in blocks
    if any("var(" not in line for line in declarations.splitlines() if "--naruon-token-" in line)
]
candidate_literals = [
    name.strip() for name, metadata, declarations in blocks
    if any("var(" not in line for line in declarations.splitlines() if "--naruon-token-" in line)
    and re.search(r"`@status`\s+candidate\b", metadata, re.I)
]
remote_patterns = {
    "import-url": r"`@import`\s+url\(",
    "protocol-or-protocol-relative-url": r"url\s*\(\s*[\"']?\s*(?:https?:)?//",
    "http-url": r"https?://",
}

print("token_count=", len(names))
print("unique_token_count=", len(set(names)))
print("categories=", sorted(categories))
print("missing_required_categories=", sorted(required_categories - categories))
print("extra_categories=", sorted(categories - required_categories))
print("alias_count=", len(aliases))
print("unresolved_aliases=", sorted(set(aliases) - live))
print("literal_categories=", literal_categories)
print("candidate_labeled_literal_categories=", candidate_literals)
print("uncategorized_or_unlabeled_literals=", sorted(set(literal_categories) - set(candidate_literals)))
print("presenter_count=", len(re.findall(r"^\s*\*\s*`@presenter`\s+\S+", adapter, re.M)))
print("remote_matches=", [
    name for name, pattern in remote_patterns.items() if re.search(pattern, adapter, re.I)
])
PY

echo "== Documentation claims requiring external validation =="
rg -n -C2 \
  '(Storybook 10\.5|`@storybook/nextjs-vite`|storybook-design-token|DTCG|Design Tokens|WCAG|axe-core|57%)' \
  docs/doctoring/storybook-design-token-contract.md \
  docs/ui-ux/storybook-design-token-contract.md \
  docs/plans/2026-08-15-storybook-design-token-library.md

Length of output: 21730


🤖 web_search executed:

Use official primary sources only. Verify these exact claims and provide the URL plus the exact supporting or contradicting text: (1) At https://www.designtokens.org/TR/2025.10/format/, what is the document status and date? Is it a stable final report? (2) What is the official stable “Design Tokens Technical Reports 2025.10” publication URL, status, and date, if one exists? (3) At https://www.w3.org/TR/WCAG22/, what is the Recommendation publication date shown by the current page? (4) Storybook 10.5 documentation: does the official Vitest addon documentation say Next.js projects must use @storybook/nextjs-vite and recommend a separate project for existing Vitest 4 projects? (5) Official Storybook documentation: does its accessibility testing use axe-core and state that automation finds up to 57% of WCAG issues? (6) Official Storybook source for storybook-design-token version 5 support for Storybook 10+, ESM-only status.

Length of output: 13217


@seonghobae Formal review verdict: REQUEST CHANGES for exact head 22d1857e2b489eb332923f781e5163d78bcfbe82.

The static token contract is correct.

  • The diff adds exactly five files.
  • No package manifest or lockfile changed.
  • git diff --check reports no errors.
  • The adapter has 53 unique token names.
  • All eight required categories and eight presenter annotations exist.
  • All 35 direct aliases resolve against frontend/src/app/globals.css.
  • All literal-value categories declare @status candidate.
  • The adapter contains no detected remote-resource pattern.
  • The documentation keeps Storybook runtime, DTCG exchange, Figma mapping, component stories, and accessibility evidence outside this shipped slice.
  • The @storybook/nextjs-vite, Vitest 4 separate-project, storybook-design-token v5, DTCG authority, and Storybook a11y boundaries are documented correctly.

One documentation correction is still required.

  1. Correct the WCAG 2.2 reference in docs/doctoring/storybook-design-token-contract.md Line 66.
    The linked current Recommendation, https://www.w3.org/TR/WCAG22/, identifies WCAG 2.2 as dated 12 December 2024. The APA entry uses 5 October 2023. Update the entry to the current Recommendation date, or cite a dated historical edition that supports the 2023 date.

The DTCG reference is now consistent with the Final Community Group Report dated 28 October 2025. The report states that it is stable and not on the W3C Standards Track.

The GitHub status snapshot does not yet support the terminal-success assertion. coverage-source-tree is QUEUED, and metadata-only gate evaluation is IN_PROGRESS. The PR remains BLOCKED and REVIEW_REQUIRED. No approval is issued.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@github-actions

github-actions Bot commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

PR governance metadata gate is not ready for 655c97376d0c5ad4560f96973663d55add76d082:

  • Required check strix is FAILURE on the current head.

Copy link
Copy Markdown
Contributor Author

@opencode-agent review
@cwl-noema-review review
@strix review

Review exact head 3cc9716232a53dca07b94f610e14816070f1f842 over protected develop@bc98789521d21271e84789888413c182aa111b4d read-only. All six repository Application CI, container, Bandit, dependency, Security Scan, and Semgrep workflows are terminal-success on this head; no inline thread exists. Verify the five-file design-token contract, production-alias closure, candidate-value separation, unique token/category coverage, no remote resource, no manifest/lockfile/runtime-Storybook claim, and APA 7 standards/version boundaries. Submit an exact-head formal verdict only. Do not mutate the branch, transfer predecessor evidence, synthesize author approval, weaken protection, or merge.

Copy link
Copy Markdown
Contributor Author

Exact-current-head design-system review request for 3cc9716232a53dca07b94f610e14816070f1f842 over protected develop@bc98789521d21271e84789888413c182aa111b4d.

The protected-base diff is still the five declared additive Storybook/token-contract files. Application CI, container build, dependency review, Bandit, Security Scan, and Semgrep are terminal-success; no review submission or inline thread exists on this head.

Review the production-token authority versus candidate-scale boundary, alias resolution, no-remote-resource contract, DTCG/Figma separation, and next-slice Storybook compatibility plan.

@opencode-agent review
@cwl-noema-review review
@coderabbitai review
@strix review

Read-only review. Do not update the branch, change the reviewer or credential chain, promote candidate tokens, add dependencies, weaken checks, synthesize author approval, or merge.

@coderabbitai

coderabbitai Bot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

base="bc98789521d21271e84789888413c182aa111b4d"
head="3cc9716232a53dca07b94f610e14816070f1f842"
repo="ContextualWisdomLab/naruon"

echo "== Commit identity =="
printf "checked_out="; git rev-parse HEAD
printf "base="; git rev-parse "$base"
printf "head="; git rev-parse "$head"

echo "== Changed files =="
git diff --name-status "$base" "$head"
echo "== Diff check =="
git diff --check "$base" "$head"
echo "== Manifest and lockfile changes =="
git diff --name-only "$base" "$head" |
  rg '(^|/)(package\.json|pnpm-lock\.yaml|package-lock\.json|yarn\.lock)$' || true

echo "== Relevant file map =="
fd -a '^(storybook-design-tokens(\.test)?\.ts|globals\.css)$' frontend 2>/dev/null || true
echo "== Test outline =="
ast-grep outline frontend/src/app/storybook-design-tokens.test.ts --items all 2>/dev/null || true

echo "== Adapter, test, and relevant documentation =="
for path in \
  frontend/src/app/storybook-design-tokens.css \
  frontend/src/app/storybook-design-tokens.test.ts \
  docs/doctoring/storybook-design-token-contract.md \
  docs/ui-ux/storybook-design-token-contract.md \
  docs/plans/2026-08-15-storybook-design-token-library.md
do
  if git cat-file -e "$head:$path" 2>/dev/null; then
    echo "-- $path --"
    git show "$head:$path" | cat -n
  fi
done

echo "== Static token-contract evaluation =="
HEAD_SHA="$head" python3 - <<'PY'
from pathlib import Path
import re, subprocess, os, sys

head = os.environ["HEAD_SHA"]
def show(path):
    return subprocess.check_output(["git", "show", f"{head}:{path}"], text=True)

adapter = show("frontend/src/app/storybook-design-tokens.css")
runtime = show("frontend/src/app/globals.css")
required = {
    "Naruon Colors", "Naruon Sidebar Colors", "Naruon Typography",
    "Naruon Candidate Font Sizes", "Naruon Candidate Line Heights",
    "Naruon Candidate Spacing", "Naruon Radius", "Naruon Candidate Elevation",
}
names = re.findall(r"^\s*(--naruon-token-[a-z0-9-]+)\s*:", adapter, re.I | re.M)
aliases = re.findall(r"^\s*--naruon-token-[a-z0-9-]+\s*:\s*var\((--[a-z0-9-]+)\)\s*;", adapter, re.I | re.M)
live = set(re.findall(r"^\s*(--[a-z0-9-]+)\s*:", runtime, re.I | re.M))
blocks = re.findall(r"/\*\*\s*\n\s*\*\s*`@tokens` ([^\n]+)\n([\s\S]*?)\*/\s*((?:\s*--naruon-token-[a-z0-9-]+\s*:[^;]+;)+)", adapter, re.I | re.M)
categories = {name.strip() for name, _, _ in blocks}
literal = [name.strip() for name, meta, decl in blocks if any("var(" not in x for x in decl.splitlines() if "--naruon-token-" in x)]
candidate = [name.strip() for name, meta, decl in blocks if any("var(" not in x for x in decl.splitlines() if "--naruon-token-" in x) and re.search(r"`@status`\s+candidate\b", meta, re.I)]
remote = [p for p in [r"`@import`\s+url\(", r"url\s*\(\s*[\"']?\s*(?:https?:)?//", r"https?://"] if re.search(p, adapter, re.I)]
print("token_count=", len(names))
print("unique_token_count=", len(set(names)))
print("missing_categories=", sorted(required - categories))
print("unresolved_aliases=", sorted(set(aliases) - live))
print("literal_categories=", literal)
print("literal_categories_without_candidate_status=", sorted(set(literal) - set(candidate)))
print("presenter_count=", len(re.findall(r"^\s*\*\s*`@presenter`\s+\S+", adapter, re.M)))
print("remote_patterns=", remote)
if len(names) != len(set(names)) or required - categories or set(aliases) - live or set(literal) - set(candidate) or remote:
    sys.exit(1)
PY

echo "== Exact-head pull request state and reviews =="
gh pr view 1354 --repo "$repo" \
  --json headRefOid,baseRefOid,isDraft,mergeStateStatus,reviewDecision,statusCheckRollup \
  --jq '{headRefOid,baseRefOid,isDraft,mergeStateStatus,reviewDecision,checks:[.statusCheckRollup[]|{name,status,conclusion:(.conclusion // .state // "")}]}'

gh api graphql \
  -F owner="ContextualWisdomLab" -F name="naruon" -F number=1354 \
  -f query='
query($owner: String!, $name: String!, $number: Int!) {
  repository(owner: $owner, name: $name) {
    pullRequest(number: $number) {
      reviewThreads(first: 100) {
        nodes {
          isResolved
          isOutdated
          comments(first: 1) { nodes { author { login } body path line } }
        }
      }
      reviews(first: 100) {
        nodes { author { login } state commit { oid } submittedAt }
      }
    }
  }
}' --jq '.data.repository.pullRequest'

Length of output: 36503


🤖 web_search executed:

Use only official primary sources. For https://www.designtokens.org/TR/2025.10/format/, provide its current exact document status and date. Identify the official URL, status, and date for the stable final “Design Tokens Technical Reports 2025.10” publication, if available. For https://www.w3.org/TR/WCAG22/, provide the exact Recommendation date currently displayed.

Length of output: 7132


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head="3cc9716232a53dca07b94f610e14816070f1f842"
repo="ContextualWisdomLab/naruon"

echo "== Static contract =="
git show "$head:frontend/src/app/storybook-design-tokens.css" |
  python3 -c '
import re, sys
s=sys.stdin.read()
names=re.findall(r"^\s*(--naruon-token-[a-z0-9-]+)\s*:", s, re.I|re.M)
blocks=re.findall(r"/\*\*\s*\n\s*\*\s*`@tokens` ([^\n]+)\n([\s\S]*?)\*/\s*((?:\s*--naruon-token-[a-z0-9-]+\s*:[^;]+;)+)", s, re.I|re.M)
literal=[n.strip() for n,m,d in blocks if any("var(" not in x for x in d.splitlines() if "--naruon-token-" in x)]
candidate=[n.strip() for n,m,d in blocks if any("var(" not in x for x in d.splitlines() if "--naruon-token-" in x) and re.search(r"`@status`\s+candidate\b",m,re.I)]
print("tokens",len(names),"unique",len(set(names)))
print("categories",len(blocks),"presenters",len(re.findall(r"^\s*\*\s*`@presenter`\s+\S+",s,re.M)))
print("literal_without_candidate",sorted(set(literal)-set(candidate)))
print("remote",bool(re.search(r"`@import`\s+url\(|url\s*\(\s*[\"'\''']?\s*(?:https?:)?//|https?://",s,re.I)))
'

echo "== Alias closure =="
python3 - "$head" <<'PY'
import re, subprocess, sys
head=sys.argv[1]
get=lambda p: subprocess.check_output(["git","show",f"{head}:{p}"],text=True)
a=get("frontend/src/app/storybook-design-tokens.css")
g=get("frontend/src/app/globals.css")
aliases=set(re.findall(r"^\s*--naruon-token-[a-z0-9-]+\s*:\s*var\((--[a-z0-9-]+)\)\s*;",a,re.I|re.M))
live=set(re.findall(r"^\s*(--[a-z0-9-]+)\s*:",g,re.I|re.M))
print("aliases",len(aliases),"unresolved",sorted(aliases-live))
PY

echo "== Pull request exact-head status =="
gh pr view 1354 --repo "$repo" --json headRefOid,baseRefOid,mergeStateStatus,reviewDecision,statusCheckRollup \
  --jq '{headRefOid,baseRefOid,mergeStateStatus,reviewDecision,checks:[.statusCheckRollup[]|{name,status,conclusion:(.conclusion // .state // "")}]}'

echo "== Pull request review state =="
gh api graphql -F owner="ContextualWisdomLab" -F name="naruon" -F number=1354 -f query='
query($owner: String!, $name: String!, $number: Int!) {
  repository(owner: $owner, name: $name) {
    pullRequest(number: $number) {
      reviewThreads(first: 100) { nodes { isResolved isOutdated } }
      reviews(first: 100) { nodes { author { login } state commit { oid } } }
    }
  }
}' --jq '.data.repository.pullRequest'

Length of output: 2713


🤖 web_search executed:

Use the official W3C source only. At https://www.w3.org/TR/WCAG22/, provide the exact publication date and status currently displayed for Web Content Accessibility Guidelines (WCAG) 2.2.

Length of output: 5523


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head="3cc9716232a53dca07b94f610e14816070f1f842"
repo="ContextualWisdomLab/naruon"

echo "== Static contract and alias closure =="
python3 - "$head" <<'PY'
import re
import subprocess
import sys

head = sys.argv[1]
def show(path):
    return subprocess.check_output(["git", "show", f"{head}:{path}"], text=True)

adapter = show("frontend/src/app/storybook-design-tokens.css")
runtime = show("frontend/src/app/globals.css")
required = {
    "Naruon Colors", "Naruon Sidebar Colors", "Naruon Typography",
    "Naruon Candidate Font Sizes", "Naruon Candidate Line Heights",
    "Naruon Candidate Spacing", "Naruon Radius", "Naruon Candidate Elevation",
}
names = re.findall(r"^\s*(--naruon-token-[a-z0-9-]+)\s*:", adapter, re.I | re.M)
aliases = set(re.findall(
    r"^\s*--naruon-token-[a-z0-9-]+\s*:\s*var\((--[a-z0-9-]+)\)\s*;",
    adapter, re.I | re.M,
))
live = set(re.findall(r"^\s*(--[a-z0-9-]+)\s*:", runtime, re.I | re.M))
blocks = re.findall(
    r"/\*\*\s*\n\s*\*\s*`@tokens` ([^\n]+)\n([\s\S]*?)\*/\s*((?:\s*--naruon-token-[a-z0-9-]+\s*:[^;]+;)+)",
    adapter, re.I | re.M,
)
categories = {name.strip() for name, _, _ in blocks}
literal = [
    name.strip() for name, _, declarations in blocks
    if any("var(" not in line for line in declarations.splitlines()
           if "--naruon-token-" in line)
]
candidate = [
    name.strip() for name, metadata, declarations in blocks
    if any("var(" not in line for line in declarations.splitlines()
           if "--naruon-token-" in line)
    and re.search(r"`@status`\s+candidate\b", metadata, re.I)
]
remote = bool(re.search(
    r"`@import`\s+url\(|url\s*\(\s*[\"']?\s*(?:https?:)?//|https?://",
    adapter, re.I,
))
print("tokens=", len(names), "unique=", len(set(names)))
print("missing_categories=", sorted(required - categories))
print("presenters=", len(re.findall(r"^\s*\*\s*`@presenter`\s+\S+", adapter, re.M)))
print("aliases=", len(aliases), "unresolved=", sorted(aliases - live))
print("literal_categories_without_candidate_status=", sorted(set(literal) - set(candidate)))
print("has_remote_resource_pattern=", remote)
PY

echo "== Exact-head pull request status =="
gh pr view 1354 --repo "$repo" \
  --json headRefOid,baseRefOid,mergeStateStatus,reviewDecision,statusCheckRollup \
  --jq '{headRefOid,baseRefOid,mergeStateStatus,reviewDecision,checks:[.statusCheckRollup[]|{name,status,conclusion:(.conclusion // .state // "")}]}'

echo "== Exact-head review state =="
gh api graphql \
  -F owner="ContextualWisdomLab" -F name="naruon" -F number=1354 \
  -f query='
query($owner: String!, $name: String!, $number: Int!) {
  repository(owner: $owner, name: $name) {
    pullRequest(number: $number) {
      reviewThreads(first: 100) { nodes { isResolved isOutdated } }
      reviews(first: 100) { nodes { author { login } state commit { oid } } }
    }
  }
}' --jq '.data.repository.pullRequest'

Length of output: 6852


@seonghobae Formal review verdict: REQUEST CHANGES for exact head 3cc9716232a53dca07b94f610e14816070f1f842 over develop@bc98789521d21271e84789888413c182aa111b4d.

The static design-token contract is correct within the declared boundary.

  • The diff contains exactly five added files.
  • No package manifest or lockfile changed.
  • git diff --check reported no whitespace errors.
  • The adapter has 53 unique token names.
  • All eight required categories and eight presenter annotations exist.
  • All 35 runtime aliases resolve against frontend/src/app/globals.css.
  • Every literal-value category has @status candidate.
  • The adapter has no detected remote-resource pattern.
  • The documentation keeps Storybook runtime, DTCG exchange, Figma mapping, and component stories outside this shipped slice.
  • The DTCG reference correctly describes the 2025.10 Final Community Group Report as stable and not on the W3C Standards Track.
  • No review submission or inline review thread exists on this exact head.

One documentation correction is required.

  1. Correct the WCAG 2.2 APA reference in docs/doctoring/storybook-design-token-contract.md Line 66.
    The linked current URL, https://www.w3.org/TR/WCAG22/, identifies WCAG 2.2 as a W3C Recommendation dated 12 December 2024. The entry uses 5 October 2023. Update the entry to use the current Recommendation date, or link to the dated 2023 Recommendation edition.

The exact-head status remains incomplete. metadata-only gate evaluation is IN_PROGRESS. This is not terminal-success evidence. The pull request remains BLOCKED and REVIEW_REQUIRED. No approval is issued.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

Exact-head semantic review requested for the bounded Storybook/design-token contract. Repository-native application, container, dependency, Bandit, security, and Semgrep workflows are terminal-success on 3cc9716232a53dca07b94f610e14816070f1f842; the runtime Storybook installation remains explicitly out of scope.

@opencode-agent
@cwl-noema-review

@cursor

cursor Bot commented Aug 17, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@seonghobae
seonghobae enabled auto-merge (squash) August 18, 2026 00:03

Copy link
Copy Markdown
Contributor Author

@opencode-agent review

Review exact current head 952a6645eb860d4e618aa2c5f2deca62d396417c under the repaired central coverage toolchain now integrated on protected .github/main@092df969f71c7afc56dd9ab2662b016ad40696c8 via .github#1116. Treat all predecessor-head review/check evidence as historical; preserve the Storybook/design-token authority boundary and do not promote candidate-only token values to production design authority.

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

OpenCode cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head 952a6645eb860d4e618aa2c5f2deca62d396417c.

  • Head SHA: 952a6645eb860d4e618aa2c5f2deca62d396417c

  • Workflow run: 32123653704

  • Workflow attempt: 1

Coverage evidence

Coverage evidence job did not run or did not publish coverage evidence.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Docs (3 files)"]
  S1 --> I1["operator or user guidance"]
  I1 --> R1["Review risk: Docs (3 files)"]
  R1 --> V1["docs review"]
  Evidence --> S2["Frontend (2 files)"]
  S2 --> I2["browser runtime and bundle"]
  I2 --> R2["Review risk: Frontend (2 files)"]
  R2 --> V2["frontend tests"]
Loading

@opencode-agent

opencode-agent Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: 3a59542d268c069a5b00851ce922fcae8722f3e7
  • Workflow run: 32418989285
  • Workflow attempt: 1
  • Gate result: REQUEST_CHANGES (approval step)

Pull request overview

OpenCode cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head 3a59542d268c069a5b00851ce922fcae8722f3e7.

  • Head SHA: 3a59542d268c069a5b00851ce922fcae8722f3e7

  • Workflow run: 32418989285

  • Workflow attempt: 1

Coverage evidence

Coverage evidence job did not run or did not publish coverage evidence.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Docs (3 files)"]
  S1 --> I1["operator or user guidance"]
  I1 --> R1["Review risk: Docs (3 files)"]
  R1 --> V1["docs review"]
  Evidence --> S2["Frontend (2 files)"]
  S2 --> I2["browser runtime and bundle"]
  I2 --> R2["Review risk: Frontend (2 files)"]
  R2 --> V2["frontend tests"]
Loading

@opencode-agent
opencode-agent Bot disabled auto-merge August 18, 2026 10:48

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@seonghobae
seonghobae enabled auto-merge (squash) August 20, 2026 12:10

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

OpenCode cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head 3a59542d268c069a5b00851ce922fcae8722f3e7.

  • Head SHA: 3a59542d268c069a5b00851ce922fcae8722f3e7

  • Workflow run: 32418989285

  • Workflow attempt: 1

Coverage evidence

Coverage evidence job did not run or did not publish coverage evidence.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Docs (3 files)"]
  S1 --> I1["operator or user guidance"]
  I1 --> R1["Review risk: Docs (3 files)"]
  R1 --> V1["docs review"]
  Evidence --> S2["Frontend (2 files)"]
  S2 --> I2["browser runtime and bundle"]
  I2 --> R2["Review risk: Frontend (2 files)"]
  R2 --> V2["frontend tests"]
Loading

@opencode-agent
opencode-agent Bot disabled auto-merge August 21, 2026 08:17
@seonghobae
seonghobae enabled auto-merge (squash) August 21, 2026 08:42
@seonghobae

Copy link
Copy Markdown
Contributor Author

Current-head review disposition

Restacked the Storybook design-token contract onto exact develop@81c105645ca6e680f5f8c15ba9c33b67eb63c48b; current head is 84edbbf152d257cd05777bf0b007fcfec2ac1d18.

No current substantive review finding was present. Focused verification after restack: pnpm exec vitest run src/app/storybook-design-tokens.test.ts — 6 passed; git diff --check passed. Normal current-head Checks and review evidence remain required; no force merge.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

Open in Devin Review

Comment thread frontend/src/app/storybook-design-tokens.css
@opencode-agent
opencode-agent Bot disabled auto-merge August 21, 2026 11:46
@seonghobae

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review Please independently review exact current head 84edbbf152d257cd05777bf0b007fcfec2ac1d18 against protected develop@81c105645ca6e680f5f8c15ba9c33b67eb63c48b. Read the complete Storybook/design-token diff, token import/consumption path, CSS alias semantics, accessibility and interaction tests, and current frontend checks. Do not reuse predecessor-head REQUEST_CHANGES evidence. Report source-backed findings with path:line and explicit verdict; this request is not an approval.

@seonghobae
seonghobae dismissed stale reviews from opencode-agent[bot] and opencode-agent[bot] August 22, 2026 07:42

Stale review: cited a coverage-evidence/required-check failure on an earlier commit; current head has been verified (gh pr checks) to pass coverage-evidence and all other non-metadata-gate required checks, with no current-head review from this reviewer. Dismissing as superseded per AGENTS.md stale-review guidance.

@opencode-agent opencode-agent Bot added area: api API, protocol, event, or external contract area: ui-ux Frontend, interaction, design, or user experience priority: medium Normal-priority or P2 work status: needs-review Open pull request requiring current-head review or checks type: feature New or expanded product capability labels Aug 22, 2026
@coderabbitai

coderabbitai Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

An error occurred during the review process. Please try again later.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

1 similar comment
@coderabbitai

coderabbitai Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

An error occurred during the review process. Please try again later.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Current-head review disposition

  • Exact head: 84edbbf1
  • The remaining design-token observation is informational and does not affect the current product surface: the token stylesheet is not imported at runtime, while the existing globals theme remains the runtime source of truth. A runtime import should be added only together with a token contract test for the consuming surface.

The informational thread is being resolved after this disposition; no approval or check is being fabricated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: api API, protocol, event, or external contract area: ui-ux Frontend, interaction, design, or user experience documentation Improvements or additions to documentation priority: medium Normal-priority or P2 work product-gap status: needs-review Open pull request requiring current-head review or checks type: feature New or expanded product capability

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant