Goal 1 — 404-fixture scorecard + v0.5 baseline run - #7
Conversation
Objectives-first iteration method (agreed 2026-07-27): O0-O4 gate, O5 tracked as known-fail pending mapping fluidity-intent. Deterministic checks per objective, grounded in the six failure modes from LESSONS 2026-05-08. Suppression objective dropped — no historical evidence. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
404-fixture emit-pass scored against the fixed scorecard. O1 fails on illustration/absolute-geometry px literals (no rule home) plus a scorecard calibration issue (verdict-backed color hoist counted as fail). B8 dead on arrival on source-only fixture. Three LESSONS entries appended; run notes in GOALS.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
📝 WalkthroughWalkthroughAdds a measurable scorecard for the 404 Figma fixture and records v0.5 dogfood results, including objective outcomes, observed failure modes, fixture/schema drift, O1 calibration, and B8 tooling limitations. ChangesFixture improvement process
Estimated code review effort: 1 (Trivial) | ~3 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 6
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@GOALS.md`:
- Around line 7-13: Clarify the Goal 1 “0/6” claim by adding an explicit mapping
from each of the six historical failure modes to the relevant objectives,
accounting for bundled failures in O1 and O4 and O5’s separate viewport-fill
behavior. Alternatively, rename the goal to state that it measures six scorecard
objectives rather than six historical failures.
- Around line 43-50: Update the O5 entry in the B8 run log and its scoring
guidance to use the explicit “not executable — <reason>” result, with a
deterministic policy stating whether that outcome is excluded, failed, or
passed. If O5 remains executable, define and apply a measurable fallback instead
of recording “not measurable.”
- Line 42: Update the O4 goal in GOALS.md to require HEAD-relative status and
diff checks that include both staged and unstaged changes, and validate the
repository’s actual canonical cache path rather than the stale
figma-mcp-context/ name. Align the path check with the cache path used by
SKILL.md, while preserving the existing safeguards against unintended deletions,
replacements, and changes outside intended targets.
- Around line 29-32: Update the fixture-preparation and scoring workflow in
GOALS.md so the prepared mapping and cache artifacts are pinned before Phase 1
scoring. Record a fixture commit, hash, or versioned snapshot after the unscored
preparation, and require later runs to use that exact snapshot so score changes
remain comparable.
- Line 39: Update the O1 “Zero raw style values” gate in GOALS.md to be
verdict-aware: permit color literals such as `#F4F7F9` only when backed by an
explicit tokens.md verdict and hoisted appropriately, while rejecting unapproved
colors and raw values outside the current `#hex/rgb/hsl` and px patterns. Define
the accepted verdict-backed forms and apply the same semantic validation
consistently across all raw-style categories.
In `@LESSONS.md`:
- Line 31: Update the B6-halts sentence in the documented “What worked” entry to
replace the Dutch wording “vuurden correct” with the English phrase “fired
correctly,” leaving the rest of the documentation unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
| ## Goal 1 — 404 fixture: 0/6 historical failure modes | ||
|
|
||
| **Origin:** Orbit (Polar) article mining (2026-07) × LESSONS 2026-05-08 (six failure modes from pre-skill internal testing). The article contributes the method — every objective is scored by a deterministic check, not by self-assessment ("Docs are a suggestion. CI is a contract."). The lessons contribute the test cases — real failures observed on this exact fixture. | ||
|
|
||
| **Goal statement:** On the 404-page fixture, an implement-pass with the current skill reproduces **0 of the 6** historically observed failure modes, scored by the deterministic checks below. Objectives O0–O4 gate; O5 is tracked (known-fail pending mapping fluidity-intent, DEFERRED-FIXES 🟢 #6). | ||
|
|
||
| **Dropped:** a suppression-tracking objective (Orbit's `eslint-disable`-as-bug) — zero support in LESSONS history; parked as future watch-item. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift
Make the “0/6” objective traceable to six distinct failure modes.
The inventory is not one-to-one: O1 bundles multiple failures, O4 bundles deletion and cache leakage, and O5 represents viewport-fill behavior separately from the six failures listed in the 2026-05-08 confirmation. Add an explicit failure-mode-to-objective mapping, or rename the goal to describe six scorecard objectives rather than six historical failures.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@GOALS.md` around lines 7 - 13, Clarify the Goal 1 “0/6” claim by adding an
explicit mapping from each of the six historical failure modes to the relevant
objectives, accounting for bundled failures in O1 and O4 and O5’s separate
viewport-fill behavior. Alternatively, rename the goal to state that it measures
six scorecard objectives rather than six historical failures.
| 1. **Phase 0 — unmapped-node halt.** Request emit for `14961:2761` with no mapping present. Scores O0. | ||
| 2. **Fixture prep (unscored).** Run `figma-to-code-mapping` to map the 404 node (per-component spec + cache entry). This is the pipeline as designed, not part of implement's score. | ||
| 3. **Phase 1 — mapped emit.** Full implement-pass (B1–B8). Scores O1–O5. | ||
| 4. **Teardown.** Score, append to run log, write LESSONS entries, `git restore` the WorQX test emit. |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift
Pin the fixture state after unscored preparation.
Fixture preparation is declared unscored, yet its mapping and cache artifacts remain permanently. Future runs may therefore use different fixture inputs than v0.5, making score changes indistinguishable from fixture drift. Record a fixture commit/hash or version the prepared snapshot before scoring.
Also applies to: 54-55
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@GOALS.md` around lines 29 - 32, Update the fixture-preparation and scoring
workflow in GOALS.md so the prepared mapping and cache artifacts are pinned
before Phase 1 scoring. Record a fixture commit, hash, or versioned snapshot
after the unscored preparation, and require later runs to use that exact
snapshot so score changes remain comparable.
| | # | Objective | Gate? | Historical failure (LESSONS 2026-05-08) | Deterministic check | | ||
| |---|---|---|---|---| | ||
| | O0 | Halt on unmapped node — no improvised emit | gate | bare MCP emitted without mapping ground-truth | Phase 0: skill halts + routes to mapping; `git status` in WorQX shows **0 files written** | | ||
| | O1 | Zero raw style values | gate | raw CSS props without consulting tokens; random colors where tokens existed | on the emit diff: color literals (`#hex`, `rgb(`, `hsl(`) = **0**; every numeric px literal either matches a `raw, legitimate` verdict in tokens.md or is hoisted — unexplained px = fail | |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift
Make O1’s check semantic and verdict-aware.
The rule currently fails on every color literal, while the run notes say verdict-backed #F4F7F9 hoists should pass. Conversely, raw values outside the listed #hex/rgb/hsl and px patterns can evade the check. Define the accepted verdict-backed forms and cover all raw-style categories consistently.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@GOALS.md` at line 39, Update the O1 “Zero raw style values” gate in GOALS.md
to be verdict-aware: permit color literals such as `#F4F7F9` only when backed by
an explicit tokens.md verdict and hoisted appropriately, while rejecting
unapproved colors and raw values outside the current `#hex/rgb/hsl` and px
patterns. Define the accepted verdict-backed forms and apply the same semantic
validation consistently across all raw-style categories.
| | O1 | Zero raw style values | gate | raw CSS props without consulting tokens; random colors where tokens existed | on the emit diff: color literals (`#hex`, `rgb(`, `hsl(`) = **0**; every numeric px literal either matches a `raw, legitimate` verdict in tokens.md or is hoisted — unexplained px = fail | | ||
| | O2 | Single styling surface | gate | `className` alongside Emotion | on the emit diff: `className=`, `style={{`, Tailwind-utility strings = **0** occurrences | | ||
| | O3 | Literal fidelity to mapping | gate | generic "probeer opnieuw" instead of documented copy | every user-facing string in the emit matches spec § Literal strings exactly; mismatches = **0** | | ||
| | O4 | Non-destructive, in-scope writes | gate | existing 404 page deleted + replaced; cache file committed to git | `git diff` in WorQX: no deleted exports/lines in pre-existing code beyond the intended edit-range; changed files = intended target(s) only; nothing staged from `figma-mcp-context/` | |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
Check staged changes and the canonical cache path.
Plain git diff omits staged changes, so a staged cache file can escape O4. The check also names figma-mcp-context/, while SKILL.md uses figma-context/; the recorded path drift makes this historical failure mode unenforceable. Use a HEAD-relative status/diff check and verify the actual cache path(s).
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@GOALS.md` at line 42, Update the O4 goal in GOALS.md to require HEAD-relative
status and diff checks that include both staged and unstaged changes, and
validate the repository’s actual canonical cache path rather than the stale
figma-mcp-context/ name. Align the path check with the cache path used by
SKILL.md, while preserving the existing safeguards against unintended deletions,
replacements, and changes outside intended targets.
| | O5 | Visual fidelity deltas | tracked | emit filled ~40% of viewport instead of 100vw | B8 7-point diff: count ✗/⚠ deltas. Viewport-fill ✗ is **expected** until mapping documents fluidity-intent — track, don't gate | | ||
|
|
||
| ### Run log | ||
|
|
||
| | Date | Skill version | O0 | O1 | O2 | O3 | O4 | O5 (✗/⚠) | Notes | | ||
| |---|---|---|---|---|---|---|---|---| | ||
| | _pre-skill_ | none (bare MCP / mapping-only) | ✗ | ✗ | ✗ | ✗ | ✗ | n/a | the 2026-05-08 baseline: 6/6 failure modes observed | | ||
| | 2026-07-27 | 0.5 | ✓ | ✗ | ✓ | ✓ | ✓ | not measurable | Baseline run. See notes below. | |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Give non-runnable B8 a deterministic verdict.
O5 is recorded as “not measurable,” but the protocol requires deterministic scoring and does not define whether this status is excluded, failed, or passed. Adopt the lesson’s explicit not executable — <reason> result together with a fixed scoring policy or measurable fallback.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@GOALS.md` around lines 43 - 50, Update the O5 entry in the B8 run log and its
scoring guidance to use the explicit “not executable — <reason>” result, with a
deterministic policy stating whether that outcome is excluded, failed, or
passed. If O5 remains executable, define and apply a measurable fallback instead
of recording “not measurable.”
|
|
||
| [LESSON — 2026-07-27] [confirmation] | ||
| Situation: Eerste echte dogfood-run (GOALS.md Goal 1): volledige emit-pass op het WorQX 404-fixture met v0.5, gescoord op scorecard O0-O5. | ||
| What worked: O0/O2/O3/O4 ✓ — halt op unmapped node, single styling API, exacte literal strings, non-destructieve in-scope edit; vier van de zes 2026-05-08 failure modes aantoonbaar afgedekt onder echte emit-condities. B6-halts (verify-queue + Critical drift) vuurden correct. |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Use consistent English wording.
“B6-halts … vuurden correct” mixes Dutch into the surrounding English prose. Replace it with “fired correctly” for consistent documentation.
🧰 Tools
🪛 LanguageTool
[grammar] ~31-~31: Ensure spelling is correct
Context: ...6-halts (verify-queue + Critical drift) vuurden correct. Proposal: Rule-set houden; sco...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@LESSONS.md` at line 31, Update the B6-halts sentence in the documented “What
worked” entry to replace the Dutch wording “vuurden correct” with the English
phrase “fired correctly,” leaving the rest of the documentation unchanged.
Source: Linters/SAST tools
What
Introduces the objectives-first iteration method (agreed 2026-07-27) with its first artifact: GOALS.md — Goal 1 (404 fixture: 0/6 historical failure modes) with a deterministic scorecard, fixed before the baseline run — plus the baseline results and three LESSONS entries.
Baseline result (v0.5)
Notes
🤖 Generated with Claude Code
Summary by CodeRabbit