@ccoalm/ccl-skills 0.6.2 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/hooks.json +11 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/remind-unverified-cli-flag.sh +309 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_remind_unverified_cli_flag.sh +483 -0
- package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/ccl-skills.ts +5 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/SKILL.md +10 -8
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/mobile-quality-release.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/SKILL.md +16 -17
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/client-routing.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/staged-review-contract.md +195 -7
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/timeout-auth-and-capabilities.md +3 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/claude_review.sh +13 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/codex_review.sh +9 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/kimi_review.sh +9 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/normalize_review_timeout.sh +22 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/opencode_review.sh +9 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/review_gate.py +1540 -129
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_claude_review_probe.sh +8 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_client_compat.py +76 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_gate.sh +1858 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_update_review_plan_intent.sh +789 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/update_review_plan_intent.py +513 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/SKILL.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/architecture-playbook.md +2 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/data-platform-architecture.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/event-driven-architecture.md +14 -11
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/multi-tenant-isolation.md +2 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/SKILL.md +5 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/SKILL.md +2 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/SKILL.md +13 -11
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/SKILL.md +64 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/async-lifecycle-and-performance.md +72 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/runtime-and-project-contract.md +58 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/source-map.md +41 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/verification-diagnostics-and-security.md +63 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/SKILL.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/sli-slo-design.md +25 -9
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/source-register.md +1 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/SKILL.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/promotion-gate-and-review.md +16 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/secret-and-config-management.md +7 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/retry-timeout-circuit-breaker.md +11 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/SKILL.md +8 -10
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/design-routing-and-readiness.md +10 -14
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/verify-developer-experience.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/SKILL.md +135 -86
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/behavioral-aesthetic-logic.md +66 -80
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/delivery-contract.md +275 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-execution-checklist.md +88 -214
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-impl-naming-and-versioning.md +2 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-intake-and-acceptance.md +10 -8
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-system-source-of-truth.md +4 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/external-ui-ux-quality-benchmarks.md +112 -95
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/frontend-code-evidence-map.md +30 -21
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/interaction-design-patterns.md +22 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/layout-recipes-and-screenshot-acceptance.md +20 -17
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/multi-project-token-consistency.md +7 -9
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/multi-stack-strategy.md +14 -10
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/operational-processing-workflows.md +2 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/platform-mobile-patterns.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/product-lifecycle-acceptance-and-iteration.md +9 -6
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/product-surface-patterns.md +3 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/source-map.md +37 -10
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/tokens-and-components.md +7 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/ui-ux-audit.md +8 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/ui-ux-design-development.md +16 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/visual-craft.md +4 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/SKILL.md +5 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/architecture-playbook.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/audit-history-architecture.md +31 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/data-platform-architecture.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/event-driven-architecture.md +7 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/multi-tenant-isolation.md +2 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/notification-architecture.md +28 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/packaging-runtime-readiness.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/replay-comparison-architecture.md +28 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/workflow-state-architecture.md +39 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/SKILL.md +10 -7
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/ai-service-wiring-patterns.md +8 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/audit-history-patterns.md +29 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/background-job-patterns.md +16 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/batch-and-artifact-patterns.md +25 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/notification-patterns.md +40 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/public-api-security-patterns.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/replay-comparison-patterns.md +30 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/state-machine-task-patterns.md +48 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/testing-and-quality-patterns.md +10 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/SKILL.md +2 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/SKILL.md +4 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/coverage-exhaustion-traps.md +45 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/dual-track-review-gate.md +142 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/external-practice-controls.md +21 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/extraction-quickstart.md +11 -9
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/firing-point-placement.md +8 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/parallel-stack-references-pattern.md +5 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/r0-leakage-audit.md +102 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-register.md +69 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-to-skill-extraction.md +10 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/uiux-judgment-extraction.md +6 -6
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/validation-and-landing.md +4 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-ccl-skills.sh +93 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-parallel-stack-parity.sh +119 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/extraction_review_gate.sh +22 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/impact-chain-gate.rb +49 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/obligation-ledger.py +2748 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/register-firing-path-resolution.rb +20 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/shared_git_surface_gate.py +1142 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_parallel_stack_parity.sh +183 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_regressions.sh +19 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_skill_catalog.sh +41 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_ci_checkout_ref_binding.sh +120 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_entrypoint_domain_scan_terms.sh +82 -8
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_extraction_review_gate.sh +336 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_impact_chain_self_adjudication.sh +82 -10
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_obligation_ledger.sh +1416 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_obligation_ledger_repo_audit.sh +57 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_register_firing_path_wiring.sh +141 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_routing_pointer_integrity.sh +3 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_shared_git_surface_gate.sh +1696 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_uiux_delivery_contract.sh +2117 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_uiux_loading_budget.sh +316 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_extraction_review_state.sh +1176 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_skill_cross_refs.sh +31 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/validate-skill.sh +9 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/validate_extraction_review_state.py +980 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/SKILL.md +9 -6
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/SKILL.md +11 -11
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/client-runtime-test-matrices.md +10 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/fitness-functions.md +16 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/scenario-testing.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/test-code-authoring-patterns.md +16 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/SKILL.md +5 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/delivery-face-closeout.md +16 -6
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/self-benchmark-baseline.md +37 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/SKILL.md +7 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/complex-workspace-patterns.md +1 -1
- package/dist/assets/release.json +275 -105
- package/package.json +1 -1
|
@@ -1,108 +1,94 @@
|
|
|
1
|
-
# Behavioral And Aesthetic
|
|
1
|
+
# Behavioral And Aesthetic Judgment
|
|
2
2
|
|
|
3
|
-
Use this
|
|
3
|
+
Use this lens when a design decision depends on attention, perceived control, uncertainty, trust, motivation, fatigue, or visual character. It turns those abstractions into observable hypotheses; it does not replace requirements, interaction mechanics, accessibility, or runtime evidence.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
For theory and evidence boundaries, use `external-ui-ux-quality-benchmarks.md`. For concrete state transitions, error/recovery and feedback, use `interaction-design-patterns.md`. For visual craft, use `visual-craft.md`. Use `tokens-and-components.md` for token, component, theme and platform-component mechanics; use this reference for behavioral and aesthetic judgment.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Judgment method
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
- Concrete visual direction, anti-slop checks, typography, color, motion, and polish rules live in `visual-craft.md`.
|
|
11
|
-
- Token, component, theme, and platform component decisions live in `tokens-and-components.md`.
|
|
12
|
-
- This file decides why a behavior or aesthetic choice should exist and whether it matches user intent, risk, trust, and product emotion.
|
|
9
|
+
Write each important judgment in five parts:
|
|
13
10
|
|
|
14
|
-
|
|
11
|
+
1. **Observation**: what the current source, render, task trace, metric, or user behavior shows.
|
|
12
|
+
2. **Risk**: the concrete search, recall, switching, error, uncertainty, trust, fatigue, or consequence burden.
|
|
13
|
+
3. **Hypothesis**: the layout, state, copy, interaction, or visual change expected to reduce that burden.
|
|
14
|
+
4. **Evidence**: the task, state, render, accessibility check, comparison, or metric that can falsify the hypothesis.
|
|
15
|
+
5. **Boundary**: target users/tasks/platforms covered, unknowns, and when to retest.
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
Example:
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
- What is the user's likely anxiety, doubt, or friction at this moment?
|
|
20
|
-
- What should attract attention first, second, and last?
|
|
21
|
-
- What action should feel obvious without explanation?
|
|
22
|
-
- What should the product make users want to return to?
|
|
19
|
+
> Observation: returning operators open three panels to recover the active item after an error. Risk: they lose task context and repeat work. Hypothesis: keep the active item and progress visible while the error is repaired locally. Evidence: in the failed-and-retry task, draft, selection and progress survive without reopening panels. Boundary: verified for keyboard and pointer flows at the tested sizes; mobile remains pending.
|
|
23
20
|
|
|
24
|
-
|
|
21
|
+
Avoid “intuitive,” “clean,” “delightful,” “lower cognitive load,” or “obvious” as standalone criteria. Name what users can find, understand, do, recover, or distinguish.
|
|
25
22
|
|
|
26
|
-
## Interaction
|
|
23
|
+
## Interaction judgment
|
|
27
24
|
|
|
28
|
-
Use `interaction-design-patterns.md
|
|
25
|
+
Use the canonical loop in `interaction-design-patterns.md`: Discover → Inspect → Act → Confirm → Return.
|
|
29
26
|
|
|
30
|
-
Judgment
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
27
|
+
| Stage | Judgment question | Typical evidence |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
| Discover | Can target users locate the relevant entry from their starting context without irrelevant competition? | Entry task, attention order, navigation/focus path |
|
|
30
|
+
| Inspect | Is the context needed for a safe decision visible at the decision point? | State/source/scope/consequence checks, hidden-context errors |
|
|
31
|
+
| Act | Does prominence match the user's current intent and consequence rather than business preference alone? | Primary-action selection, misclicks, task completion |
|
|
32
|
+
| Confirm | Does feedback/interruption strength match finality, recovery and retry safety? | Event→state→feedback trace, duplicate/retry scenarios |
|
|
33
|
+
| Return | Are prior context, progress, draft, selection and next action preserved? | Modal/route/error/reload recovery tasks |
|
|
37
34
|
|
|
38
35
|
Rules:
|
|
39
36
|
|
|
40
|
-
- Do not
|
|
41
|
-
- Reduce
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
## Behavioral Logic
|
|
47
|
-
|
|
48
|
-
Design for human behavior, not only information display.
|
|
49
|
-
|
|
50
|
-
- **Attention**: use hierarchy, grouping, contrast, motion, and whitespace to guide scanning. Do not compete for attention with equal-weight cards.
|
|
51
|
-
- **Cognitive load**: show the next meaningful step; progressively reveal advanced controls; avoid dumping all fields before intent is clear.
|
|
52
|
-
- **Motivation**: make progress visible. Use draft status, completion, recent activity, reactions, streak-like return cues, or creator feedback only when they match the product's ethics and purpose.
|
|
53
|
-
- **Agency**: users should feel they can edit, undo, retry, filter, mute, leave, or correct important outcomes.
|
|
54
|
-
- **Trust**: show source, status, timestamp, permission, review state, AI caveat, and consequence where doubt is likely.
|
|
55
|
-
- **Habit loop**: entry points, notifications, feed updates, creation prompts, and return states should reinforce a useful loop, not just maximize clicks.
|
|
56
|
-
- **Social proof**: counts, badges, replies, followers, and popularity cues should clarify relevance. Do not use them to fake importance or bury new/quiet content.
|
|
57
|
-
- **Friction**: remove friction for low-risk repeated actions; add deliberate friction for irreversible, public, sensitive, or costly actions.
|
|
37
|
+
- Do not give equal visual weight to actions with different relevance or consequence.
|
|
38
|
+
- Reduce active option search for the current decision, while keeping review/edit/recovery controls reachable when needed.
|
|
39
|
+
- Preserve current object, mode, filters, progress and return context across drawers, dialogs, routes, uploads and generation when the task depends on them.
|
|
40
|
+
- Choose constraint, inline repair, preview, undo, confirmation, retry or restore from consequence and reversibility. Added friction requires a named protective job.
|
|
41
|
+
- Give every asynchronous action acknowledged, pending, final and recovery semantics. The exact timing bar comes from the product/runtime need, not a remembered universal number.
|
|
58
42
|
|
|
59
|
-
##
|
|
43
|
+
## Behavioral variables
|
|
60
44
|
|
|
61
|
-
|
|
45
|
+
Do not assume one universal user behavior. Select variables from current evidence and test the target segment.
|
|
62
46
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
47
|
+
| Variable | Risk to inspect | Design response to test |
|
|
48
|
+
| --- | --- | --- |
|
|
49
|
+
| Scan/search | Users may stop at the first plausible option or miss a low-salience control | Stronger grouping/signifier, reduced competing actions, task-based findability check |
|
|
50
|
+
| Recall | Users must remember hidden state, values or prior steps | Keep context visible, provide history/summary, preserve return state |
|
|
51
|
+
| Repetition/fatigue | Repeated review or entry increases slips and abandonment | Stable placement/order, compact density, progress, shortcuts, safe batch/recovery behavior |
|
|
52
|
+
| Uncertainty | Users cannot tell whether work started, finished, failed or is safe to retry | Explicit state, timestamp/progress, idempotency/retry copy and support path |
|
|
53
|
+
| Agency | Users cannot edit, cancel, undo, retry, leave or correct an outcome | Add the consequence-appropriate control and verify it works |
|
|
54
|
+
| Trust | Source, permission, automation, review status or consequence is unclear | Put the relevant provenance/status/scope near the decision; avoid unverifiable assurance |
|
|
55
|
+
| Motivation | The surface has no meaningful progress, result or return value | Show real progress/outcome and a useful next step; do not manufacture engagement cues |
|
|
56
|
+
| Social influence | Counts/badges may distort relevance or create false authority | Explain meaning, prevent fake precision, compare task decisions with/without the cue |
|
|
67
57
|
|
|
68
|
-
|
|
58
|
+
Instructions and help can be necessary. The defect is requiring users to read hidden or lengthy prose to discover a primary operation, not the mere presence of guidance. Prefer concise, contextual instructions and test whether users can complete the task; redesign a control when explanation is compensating for ambiguous semantics.
|
|
69
59
|
|
|
70
|
-
|
|
60
|
+
Consistency is a strong default because it supports transfer and stable expectations. Deviate only when a concrete task/accessibility gain outweighs that transfer cost, and record the reason. A claimed clarity gain never overrides semantic correctness, accessibility, trust/safety, or specified design-system states.
|
|
71
61
|
|
|
72
|
-
|
|
73
|
-
- **Rhythm**: repeat spacing, type scale, card treatment, and interaction details so the product feels intentional.
|
|
74
|
-
- **Contrast**: create clear focal points. If everything is colorful, raised, bordered, or animated, nothing leads.
|
|
75
|
-
- **Material feel**: shadows, borders, glass, texture, blur, and gradients need a role: depth, grouping, brand warmth, or state. Do not add them to compensate for weak structure.
|
|
76
|
-
- **Content dignity**: posts, comments, creator identity, media, and AI output should feel cared for. Avoid tiny cramped content in consumer surfaces or oversized empty shells in work surfaces.
|
|
77
|
-
- **Delight**: reserve delight for moments that matter: publish success, first useful AI result, meaningful reply, achievement, upload completion, or helpful recovery. Avoid decorative delight during errors, moderation, payment, or permission denial.
|
|
62
|
+
## Aesthetic judgment
|
|
78
63
|
|
|
79
|
-
|
|
64
|
+
Aesthetic choices should reinforce task, hierarchy and product character.
|
|
80
65
|
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
66
|
+
- **Attention order**: name first, second and background elements. Verify the rendered hierarchy with realistic content and relevant states.
|
|
67
|
+
- **Density**: choose from task frequency, content volume, error cost and input mode. Consumer breathing room and operational compactness are starting hypotheses, not product-category laws.
|
|
68
|
+
- **Rhythm**: repeated spacing, alignment, type roles, state treatment and motion should create a learnable visual grammar.
|
|
69
|
+
- **Contrast and material**: color, border, shadow, texture, blur and elevation need a hierarchy, grouping, state or brand job. Decoration cannot repair weak structure.
|
|
70
|
+
- **Mood**: describe the intended quality in task terms such as calm review, focused creation, safe consent or lively discovery, then map it to observable visual decisions.
|
|
71
|
+
- **Content dignity**: give primary content enough space and legibility for its task; avoid both cramped consumer content and oversized empty operational shells.
|
|
72
|
+
- **Delight**: use it for meaningful completion, onboarding or recovery only when it does not obscure status, consequence, accessibility or reduced-motion needs.
|
|
87
73
|
|
|
88
|
-
|
|
74
|
+
If no current product source exists, compare two or three compact visual directions. Hold structure and content constant where possible, state the decision variables, and select against the task/brand criteria rather than personal taste.
|
|
89
75
|
|
|
90
|
-
|
|
76
|
+
## Trust and ethical boundaries
|
|
91
77
|
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
95
|
-
-
|
|
78
|
+
- Do not use urgency, social proof, streaks, notifications, defaults or visual weight to hide cost, permission, risk, alternatives or exit.
|
|
79
|
+
- High-impact actions show consequence before execution and actual outcome afterward.
|
|
80
|
+
- AI/automation output distinguishes draft/candidate, reviewed, accepted and applied states when users may otherwise over-trust it.
|
|
81
|
+
- Popularity, verification, quality and authority are different claims; labels and metrics must not imply one from another.
|
|
82
|
+
- Protective friction remains when it prevents irreversible, public, financial, privacy or safety harm. Nuisance friction is removed only after that distinction is made.
|
|
96
83
|
|
|
97
|
-
## Acceptance
|
|
84
|
+
## Acceptance
|
|
98
85
|
|
|
99
|
-
|
|
86
|
+
Use realistic content and the representative task from `delivery-contract.md`.
|
|
100
87
|
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
- The
|
|
105
|
-
-
|
|
106
|
-
-
|
|
107
|
-
-
|
|
108
|
-
- The result feels product-specific rather than like a generic component demo.
|
|
88
|
+
- Target users can state the screen's purpose, current state and relevant next action without guessing from hidden context.
|
|
89
|
+
- New and returning users can complete or resume the primary task under the tested conditions.
|
|
90
|
+
- Visual prominence matches task relevance and consequence; secondary and exception actions remain findable without competing equally.
|
|
91
|
+
- The state-action-feedback mapping remains understandable in loading, failure, permission, offline/degraded, partial and recovery states that apply.
|
|
92
|
+
- Layout, copy, motion and feedback preserve agency and trust rather than merely looking polished.
|
|
93
|
+
- The chosen visual direction is coherent across representative content, themes, sizes and states, and follows the product/design-system source where specified.
|
|
94
|
+
- Findings name verifier, candidate, evidence layer and boundary. A reviewer feeling, single render or heuristic pass remains hypothesis-grade until the required evidence closes it.
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
# UI/UX Delivery Contract
|
|
2
|
+
|
|
3
|
+
Use this contract for every runtime-visible UI/UX slice. It is the canonical handoff between `product-ui-ux-design`, `testing-strategy`, every changed or claim-bearing producer owner, and every affected client implementation owner. Each skill keeps its own technical rules; this file defines the shared record, stage order, evidence semantics, and completion states.
|
|
4
|
+
|
|
5
|
+
Runtime-visible work includes layout, copy rendered by a client, state, interaction, navigation, tokens/themes, component semantics, accessibility, user-facing loading/empty/error/permission/progress/recovery feedback, and API/event/schema/default changes that alter what a client shows or which action or decision path it offers. A backend-owned value or contract is outside this contract only after an authoritative manifest, contract, package/repo inventory, or release target list establishes the complete consumer universe and every member is checked or proves it cannot render or react to the change. A zero-result search over an author-chosen repo or directory is not absence proof. If the universe or any member is inaccessible or incomplete, record `unknown-consumers`; do not silently classify the change as backend-only.
|
|
6
|
+
|
|
7
|
+
Only a value or contract change proven not to render on or alter any client may leave this contract. Route its backend behavior to the backend owner, its product meaning to the product owner, and its verification to `testing-strategy`, using API/log/output evidence plus the recorded consumer-universe proof. The inventory is routing evidence, not behavior verification. Do not use backend evidence to close an unknown or affected client surface.
|
|
8
|
+
|
|
9
|
+
Classify a consumer as `out-of-scope` only when evidence shows that stack cannot ship the value, or when the user accepts that same specifically named consumer as a current-thread handoff gap. The latter remains `pending + blocked`; scope acceptance neither proves absence nor permits `complete`.
|
|
10
|
+
|
|
11
|
+
The record may live in a plan, evidence file, task/MR description, or another reviewable artifact. A single-turn throwaway edit may use the visible progress record only if no changed file remains at handoff. Persist the record whenever the diff remains, is committed, or is handed to another owner.
|
|
12
|
+
|
|
13
|
+
This record is normalized evidence, not a required response layout. Store each
|
|
14
|
+
fact once and reference it across roles and phases. A handoff leads with the
|
|
15
|
+
decision, changed behavior, observable criteria, evidence level, blocker or
|
|
16
|
+
next action, and a pointer to the record; it does not paste every matrix, repeat
|
|
17
|
+
one evidence boundary under several headings, or substitute process labels for
|
|
18
|
+
task-specific behavior.
|
|
19
|
+
|
|
20
|
+
The execution order is `Design brief → Test Phase 0 → Producer/client execution → Test Phase 1/sufficiency → Design verdict`. Phase 0 chooses the proof before implementation; producer records capture the changed service/config/content/inference candidate and its observations, client records capture platform facts and the producer member/version actually exercised, and Phase 1 cites both sets to decide test sufficiency without copying them; only then does the design owner issue a verdict.
|
|
21
|
+
|
|
22
|
+
## 1. Design brief
|
|
23
|
+
|
|
24
|
+
Before editing a design artifact, UI copy, visual rule, design-system guidance, or code-facing acceptance criterion—or approving such a change—the design owner records enough analysis and planning to make it reviewable. A simple low-risk copy or spacing check may use a short inline record. New/reshaped screens, multi-platform surfaces, user-visible behavior, accessibility-sensitive flows, high-risk actions, branch/MR work, unclear risk, and implementation-driving design require the full Design brief, state/adaptation matrices, observable visual/interaction criteria, rendered/device evidence plan, and named producer/test/client handoff before edit or approval.
|
|
25
|
+
|
|
26
|
+
For runtime work, this draft exists before the first implementation edit. Testing, changed producer, and affected client owners consume it; they do not wait for a supposedly final design checkpoint.
|
|
27
|
+
|
|
28
|
+
Record these fields:
|
|
29
|
+
|
|
30
|
+
| Field | Required content |
|
|
31
|
+
| --- | --- |
|
|
32
|
+
| `slice_id` | Stable identifier for this surface/change. |
|
|
33
|
+
| `candidate_ref` | Mutable planning reference such as worktree/branch plus its current base. It locates work in progress but never binds executed evidence or a verdict. |
|
|
34
|
+
| `surface` | Runtime, framework, platform/host, surface type, and density mode. |
|
|
35
|
+
| `consumer_inventory` | Authoritative source used to establish the complete consumer universe; every member classified as affected, unchanged, out of scope, inaccessible, or unknown. |
|
|
36
|
+
| `trigger_class` | One delivery depth—`copy-only`, `narrow-visible`, `new-or-reshaped-screen`, or `systemic-redesign`—for runtime work, plus zero or more orthogonal work modes: `shared-system`, `source-code-evidence`, `design-to-code`, `audit/review`, `naming-version-sync`, `same-stack-multi-project`, and `multi-stack`. Record each observed basis and the union of references loaded. A source-only audit may omit delivery depth. |
|
|
37
|
+
| `user_and_task` | Target users, representative task, goal, prior knowledge, and use environment relevant to the decision. |
|
|
38
|
+
| `intent_and_risk` | Primary workflow/action, human intent, expected friction, consequence, and trust/safety boundary. |
|
|
39
|
+
| `structure` | Information groups regrouped by user intent and consequence, hierarchy, layout regions, navigation, progressive disclosure, return context, and component semantics. Separate routine context/data from security, recovery, and destructive/danger areas when their consequences differ; do not merely repaint the existing grouping. |
|
|
40
|
+
| `state_matrix` | Applicable initial, empty, loading/pending, success, failure, retry, disabled, permission, offline/degraded, partial, long-content, and interrupted/recovery states. Mark true non-applicable states with a reason. |
|
|
41
|
+
| `adaptation_matrix` | Primary and stress sizes, container/window constraints, text scaling/localization, input modes, collapse rules, safe area/keyboard/orientation where relevant. |
|
|
42
|
+
| `behavior_contract` | Routes, API/write effects, session/auth cleanup, destructive semantics, optimistic reconciliation, duplicate protection, return values, and preserved behavior. |
|
|
43
|
+
| `difference_class` | Each source-to-target difference is `defect-fix`, `design-freedom`, or `behavior-change`; split mixed changes and use the strictest class for an inseparable point. |
|
|
44
|
+
| `criteria` | Observable acceptance conditions, each with an ID, user/task outcome or invariant, and consequence if it fails. When applicable, name separate behavioral logic, aesthetic/visual hierarchy and craft, interaction, and component-semantics criteria; avoid adjectives without an observable consequence. The design brief does not select verifier type, assertion layer, rendered-evidence layer, command, or oracle; Phase 0 owns those choices. |
|
|
45
|
+
| `design_source` | Current product source, approved draft, design system, user-provided target, or source-light hypothesis; name specified states separately from design freedom. Record the source revision/version/content basis and any replacement or review artifact that can change the criteria. Mutable locators remain planning references until covered by an immutable design member below. |
|
|
46
|
+
| `design_record` | Resolvable location for the brief, criteria, source/replacement revisions, and review artifact. It may be mutable during planning; before evidence or a verdict relies on it, every changed or claim-bearing design item must have a keyed immutable member in `candidate_binding_set`. |
|
|
47
|
+
| `reference_surface` | Chosen current or accepted surface used to carry direction plus why it fits this slice; when no redesigned surface exists, say so and name the design reference/spec used instead. |
|
|
48
|
+
| `owners` | Design owner, test owner, a `producer_owner_set` keyed by every changed or claim-bearing backend/config/content/inference member, and a `client_owner_set` keyed by every affected rendered layer/runtime/target/repo, plus unresolved owner gaps. |
|
|
49
|
+
| `evidence_plan` | Planned automated, rendered/device, accessibility, task/user, and production evidence; list known unavailable layers. |
|
|
50
|
+
|
|
51
|
+
The initial record deliberately leaves `assertion_layer`, `rendered_evidence_layer`, verifier type, oracle, exact commands, producer returns, and client entry rules pending. Stage 2 and Stage 3 fill them. Criteria are complete when their observable condition and consequence are known; missing test-owned fields cannot make the brief incomplete. This ordering prevents the old circular wait in which testing required a completed checkpoint while the checkpoint required testing's layer choice.
|
|
52
|
+
|
|
53
|
+
### Trigger depth
|
|
54
|
+
|
|
55
|
+
`new-or-reshaped-screen` and `systemic-redesign` apply when any of these are true:
|
|
56
|
+
|
|
57
|
+
- the request declares redesign, restyle, modernization, or alignment with a new visual direction;
|
|
58
|
+
- layout structure, information grouping, navigation, component semantics, or visual system changes materially;
|
|
59
|
+
- a continuation uses a redesigned surface as the quality reference;
|
|
60
|
+
- multiple surfaces or shared tokens/components change with design-system consequences.
|
|
61
|
+
|
|
62
|
+
Shared token/component sweeps without information-architecture or behavior change may use `shared-system`. A copy or spacing change uses a lighter class only when it changes no structure, state, interaction, navigation, component choice, hierarchy, or behavior and is not presented as a redesign. Record the classification; uncertainty takes the deeper path.
|
|
63
|
+
|
|
64
|
+
For a systemic redesign or a sequence that uses one redesigned screen as the direction for later screens, every screen remains its own full design slice. Re-derive that screen's information architecture by grouping content and actions by user intent and consequence—for example, routine context/data apart from security, recovery, and destructive/danger areas—rather than repainting the existing layout. Re-derive behavior, states, adaptation, criteria, and runtime evidence at the same depth as the first/reference screen; an umbrella brief may share sources, tokens, and cross-surface invariants but cannot replace the per-screen records. Only a pure token/component sweep with no per-screen information-architecture or behavior change may batch implementation, and it still inventories every affected consumer.
|
|
65
|
+
|
|
66
|
+
A bare ownership declaration does not authorize a behavior change. If IA regrouping silently changes routes, writes, semantics, permissions, return behavior, or another preserved contract, that is an implementation defect rather than a design refinement; classify and route the behavior change explicitly.
|
|
67
|
+
|
|
68
|
+
### RED baseline
|
|
69
|
+
|
|
70
|
+
Every `new-or-reshaped-screen`, `systemic-redesign`, and behavior-changing slice records a falsifiable current-state baseline before implementation:
|
|
71
|
+
|
|
72
|
+
- a failing focused assertion when an executable harness fits; or
|
|
73
|
+
- a resolvable before artifact plus a target criterion for visual/layout work; or
|
|
74
|
+
- reproducible construction steps for a synthetic state.
|
|
75
|
+
|
|
76
|
+
The baseline proves the starting condition, not that the proposed design is good. Do not create a fake failing unit test for a visual judgment.
|
|
77
|
+
|
|
78
|
+
### Missed pre-edit record
|
|
79
|
+
|
|
80
|
+
If implementation starts before the required full or lightweight record exists, treat that as a process defect, not permission to write a brief around the result:
|
|
81
|
+
|
|
82
|
+
1. stop further implementation edits and record when/how the omission was discovered;
|
|
83
|
+
2. reconstruct the required record from the request, pre-change source/runtime, and product evidence rather than from the already-written implementation;
|
|
84
|
+
3. obtain Phase 0 and the client entry rule, then audit the whole existing diff against every criterion, preserved behavior, consumer, and evidence obligation;
|
|
85
|
+
4. record deviations and revise or reject the implementation before continuing.
|
|
86
|
+
|
|
87
|
+
Complete this remediation before further implementation, a completion/final claim, commit, push, or an MR-ready claim. A retroactive brief without the diff audit cannot bless the existing implementation.
|
|
88
|
+
|
|
89
|
+
## 2. Test Phase 0 — layer selection
|
|
90
|
+
|
|
91
|
+
`testing-strategy` responds to the design brief with the pre-implementation layer-selection pass below, then owns the separate Phase 1 closeout after producer/client execution.
|
|
92
|
+
|
|
93
|
+
Return a compact record before implementation:
|
|
94
|
+
|
|
95
|
+
| Field | Required content |
|
|
96
|
+
| --- | --- |
|
|
97
|
+
| `assertion_layer` | Unit/component/integration/browser/device/contract/manual-task layer for each criterion. |
|
|
98
|
+
| `rendered_evidence_layer` | Browser, simulator/emulator, real device, host preview, desktop runner, or PTY/terminal capture, including required sizes/themes/input modes. |
|
|
99
|
+
| `cases` | Criterion IDs mapped to happy, boundary, failure, recovery, and accessibility cases. |
|
|
100
|
+
| `command_and_target` | Planned command or interaction, candidate target, fixture/data needs, and expected current result. |
|
|
101
|
+
| `oracle` | What observation makes the case pass or fail; DOM existence alone is not a visual or interaction oracle. |
|
|
102
|
+
| `test_definition_set` | Resolvable Phase 0 mapping plus every harness, assertion/oracle, fixture, config, script, external test artifact, or manual protocol that can change the result. Before execution, each changed or claim-bearing item gets its own immutable test member in `candidate_binding_set`. |
|
|
103
|
+
| `evidence_gap` | Missing harness, environment, data, device, or human judgment with owner and next action. |
|
|
104
|
+
|
|
105
|
+
This Phase 0 response completes the draft's testing fields. Absence of a previously finalized checkpoint does not block Phase 0; absence of the design brief's user/task, states, risks, and criteria does.
|
|
106
|
+
|
|
107
|
+
For a valid `copy-only` slice, Phase 0 uses the lightweight record defined below rather than demanding the full state/adaptation/behavior matrices. It still selects semantic, accessible-name, localization, rendered-extent, and target-render or preview oracles as applicable.
|
|
108
|
+
|
|
109
|
+
## 3. Producer/client execution
|
|
110
|
+
|
|
111
|
+
When the slice changes or relies on a backend, event producer, remote config/CMS, schema/default, prompt/model, or generated-content path, every changed or claim-bearing producer first adds one member to `producer_record_set`. Each member records its owner/repository/runtime target, immutable candidate-binding member, build/schema/config/prompt/model/artifact identity, exact verification command and environment/endpoint version, API/event/log/output observations mapped to criteria, consumer-inventory pointer, coverage boundary, and gaps. Each client execution must name which producer member/version it actually exercised. A render against an old, unknown, or mismatched service/config/model cannot verify the changed producer candidate.
|
|
112
|
+
|
|
113
|
+
Build an owner set from every affected rendered layer, including content embedded in another container:
|
|
114
|
+
|
|
115
|
+
| Rendered layer | Client owner | Required local return beyond the shared record |
|
|
116
|
+
| --- | --- | --- |
|
|
117
|
+
| React web or React content inside Electron/WebView | `web-react-dev` | Browser/server route, viewport/container sizes, themes, input modes, console/network checks, overflow/focus/keyboard evidence. |
|
|
118
|
+
| Flutter, React Native, native Android/iOS, or native host shell | `app-cross-platform-dev` | Build target, simulator/emulator/device, safe area, keyboard, orientation, text scale, touch, lifecycle, and host/content bridge evidence. |
|
|
119
|
+
| WeChat/Alipay/Douyin or another mini-program host/page layer | `miniapp-product-dev` | Host/runtime version, developer-tool or device target, host capability/permission behavior, web-view bridge, package/platform constraints. |
|
|
120
|
+
| Full-screen terminal/TUI or terminal-rendered interface | `terminal-cli-dev` | Real PTY/terminal, dimensions, color depth/fallback, keyboard-only flow, resize, scrollback, selection/copy, long output, streaming/background progress, focus/modal state, and jump/new-output affordance evidence. |
|
|
121
|
+
| Electron/desktop shell or any rendered layer without an installed client owner | Project client conventions | Named surface/runtime plus the exact local convention consulted; otherwise use the fail-closed lookup below. |
|
|
122
|
+
|
|
123
|
+
A composite host has multiple owner-set members: React inside a native WebView uses `web-react-dev` for content and `app-cross-platform-dev` for the native container/bridge. A mini-program `web-view` uses the actual web-content owner plus `miniapp-product-dev`; Electron uses the actual web-content owner plus the installed desktop-shell owner or project client convention. For either host, React content routes to `web-react-dev`; Vue, Svelte, static, vendor, or another renderer routes to its installed owner or the fail-closed project-convention lookup below, never to React by container name alone. A single owner may fill two members only when an explicit project contract assigns both responsibilities and its evidence covers both layers. An unchanged host member still records the integration contract and proof that the change cannot affect it; omitting the member because the code diff sits in another repo is invalid.
|
|
124
|
+
|
|
125
|
+
Before the first implementation edit, every affected member of the client owner set adds a compact `client_entry` acknowledgement to the shared record: a short quote from, or exact identifier for, that owner's visible-UI, page-slice, design-checkpoint, or rendered-evidence rule plus the decision it produced; target surface/runtime; planned run/capture command; and behavior that must remain unchanged. Arbitrary skill text, a file path, runtime name, or vague anchor alone is not evidence of the applied convention. A project-convention owner must quote the specific surface/interaction/evidence convention applied. This is an entry decision, not fabricated execution evidence. Merely listing or naming an owner, including on the copy-only path, does not satisfy this step.
|
|
126
|
+
|
|
127
|
+
For a shared package, first establish the authoritative consumer universe from build/release targets, manifests, contracts, packages/repos, locale/config sources, and import evidence; then inspect every member. Record each as affected, unchanged, out of scope, inaccessible, or unknown with the basis. An incomplete universe or inaccessible member remains `unknown-consumers` and blocks a complete claim. The user may accept a specifically scoped handoff in the current thread, but its terminal state remains `pending + blocked`; acceptance of the handoff is not design acceptance or completion.
|
|
128
|
+
|
|
129
|
+
Before writing `no-installed-owner`, name the runtime/framework and why the installed client owners do not apply, then inspect the current repository's README/CONTRIBUTING, nearest AGENTS/CLAUDE contract, and client/style/design docs for a local convention. Record the locations checked. An incomplete or inaccessible lookup is `owner-lookup-unavailable`, never `no-installed-owner`.
|
|
130
|
+
|
|
131
|
+
Each affected client owner returns one member of a shared `client_record_set`:
|
|
132
|
+
|
|
133
|
+
- the same resolvable quote or exact section/rule identifier plus the implementation decision it shaped;
|
|
134
|
+
- affected files/components and preserved behavior contracts;
|
|
135
|
+
- exact run/capture command plus its keyed immutable candidate-binding member and target surface;
|
|
136
|
+
- review-accessible `artifact_ids` or paths;
|
|
137
|
+
- tested dimensions, states, themes, sizes, input modes, and assistive-technology checks;
|
|
138
|
+
- raw observations mapped to criterion IDs where the client owner can verify them mechanically;
|
|
139
|
+
- coverage boundary: what the gate detects, paths/states scanned, known false negatives, and remaining manual/runtime checks;
|
|
140
|
+
- unresolved product, design, test, platform, environment, or evidence gaps.
|
|
141
|
+
|
|
142
|
+
Prefer an existing route, state catalog, story/preview, fixture, smoke harness, or integration test. Batch planned captures and permission requests so evidence collection does not repeatedly interrupt the operator or create a noisy throwaway workflow that blocks normal work. If a temporary helper script or page is unavoidable, create or edit it once for the batch, reuse it, and remove it before commit and before completion unless the repository intentionally owns that harness. A state catalog or story counts as proof only when its execution is demonstrated; file presence and item counts are source evidence, not test execution.
|
|
143
|
+
|
|
144
|
+
### Candidate binding set
|
|
145
|
+
|
|
146
|
+
The design record/source artifacts, test definitions and executions, producer/client record sets, Test Phase 1, and design verdict use one `candidate_binding_set`, keyed by role owner, layer/runtime target, and repository/artifact. A truly single-member slice may use `candidate_binding` as shorthand. Every changed or claim-bearing design, test, producer, and required client member must resolve to the same logical candidate; a later change to any member invalidates the affected evidence and aggregate verdict.
|
|
147
|
+
|
|
148
|
+
- Design members cover the brief, criteria/behavior contract, and every design-source revision, replacement source, or review artifact that the verdict relies on.
|
|
149
|
+
- Test members cover the Phase 0 criterion mapping, harness/assertion/oracle, fixture/config/script/manual protocol, external test artifact, and each test-owned execution/result. An additional run identifies both its bound definition member and execution member.
|
|
150
|
+
- Producer and client members cover the candidate and runtime facts defined above. A client member also names the bound producer member/version it exercised.
|
|
151
|
+
|
|
152
|
+
Each binding value has a non-empty, exact payload from this closed set:
|
|
153
|
+
|
|
154
|
+
| Binding kind | Exact payload |
|
|
155
|
+
| --- | --- |
|
|
156
|
+
| `commit` | `commit:<full-40-or-64-hex>` |
|
|
157
|
+
| `tree` | `tree:<full-40-or-64-hex>` |
|
|
158
|
+
| `artifact-sha256` | `artifact-sha256:<64-hex>` |
|
|
159
|
+
| `dirty-bundle-v1` | `dirty-bundle-v1:<full-base-commit-hex>:<64-hex-bundle-digest>` |
|
|
160
|
+
|
|
161
|
+
Branches, tags, abbreviated SHAs, empty suffixes, mutable external version labels or artifact paths, and prose such as “current working tree” are locators, not immutable bindings. An external design, review, test, or runtime artifact without a content-addressed immutable ID is covered by an `artifact-sha256` member over the exact reviewed bytes plus its locator. Adding another binding kind changes this contract and requires its parser/oracle, collision and empty-value tests, and all consumer skills to change together.
|
|
162
|
+
|
|
163
|
+
A `commit` or `tree` binding is valid for an executed member only when the command ran from that exact materialized commit/tree and no tracked, untracked, ignored helper, generated file, symlink target, external harness/config, or other candidate input changed the result. For a Git worktree, the relevant checkout must be clean and its full HEAD/tree must equal the binding; `commit:HEAD` written after a run from dirty bytes is invalid. A result-affecting byte inside the checkout but outside/different from that commit/tree must be included in `dirty-bundle-v1`; a result-affecting input outside the checkout must have its own `artifact-sha256` member over the exact bytes. Do not relabel a dirty execution as a clean commit after the fact.
|
|
164
|
+
|
|
165
|
+
A dirty-bundle record also points to a reviewable manifest and the exact command/script used to derive it. The versioned manifest includes the base commit, the byte-exact binary tracked diff, every untracked member, and every result-affecting ignored member, all in sorted path order with path, file mode/type, and raw content or symlink target. Ignored generated files, helpers, fixtures, configs, and caches are not exempt merely because Git omits them; either include their exact bytes in the dirty bundle or bind each as a separate `artifact-sha256` member. Result-affecting external inputs always use a separate content-addressed member and locator. The manifest may exclude only a named non-deliverable proven unable to affect the candidate or result. If the record containing the digest is itself in the bundle, store the binding outside that bundle or define one canonical placeholder for only that field; do not omit the rest of the record or arbitrary files to escape self-reference. In a multi-repo or multi-target slice, preserve one keyed member per design/test/producer/client repository or artifact rather than hashing an unspecified ambient directory.
|
|
166
|
+
|
|
167
|
+
## 4. Test Phase 1 — execution result and sufficiency
|
|
168
|
+
|
|
169
|
+
After producer/client execution, `testing-strategy` consumes the complete design/test/producer/client member and record sets and returns one test-owned closeout:
|
|
170
|
+
|
|
171
|
+
| Field | Required content |
|
|
172
|
+
| --- | --- |
|
|
173
|
+
| `candidate_binding_set` | The same complete keyed design/test/producer/client binding set; `candidate_binding` is only the one-member shorthand. A branch name alone is never exact. |
|
|
174
|
+
| `design_record_ids` | Resolvable pointer per changed or claim-bearing brief/criteria/behavior/source/replacement/review member, with its immutable binding. |
|
|
175
|
+
| `test_record_ids` | Resolvable pointer per Phase 0 mapping, harness/oracle/fixture/config/protocol, external test artifact, and test-owned execution/result member, with immutable bindings. |
|
|
176
|
+
| `producer_record_ids` | Resolvable pointer per changed or claim-bearing producer member, including artifact/version identity, command/environment, API/event/log/output observation, coverage boundary, and gaps. |
|
|
177
|
+
| `client_record_ids` | Resolvable pointer per affected client execution member. Cite its commands, targets, artifacts, tested dimensions, and raw observations instead of copying them. |
|
|
178
|
+
| `additional_test_runs` | Bound definition/execution IDs for any test-owned commands/results/artifacts not already in a producer/client record, or `none` with reason. |
|
|
179
|
+
| `criterion_results` | Result and verifier per criterion, including which producer observation, client observation, or test artifact supports it. |
|
|
180
|
+
| `sufficiency` | `sufficient`, `insufficient`, or `blocked` for the required evidence plan, with the reason. |
|
|
181
|
+
| `coverage_boundary` | Combined detected paths/states/dimensions, known false negatives, and remaining manual/runtime checks. |
|
|
182
|
+
| `gaps` | Unresolved evidence, environment, data, or oracle gap with owner and next action. |
|
|
183
|
+
|
|
184
|
+
Each design, test, producer, and client owner writes its own facts once; Phase 1 owns criterion-level test interpretation, cross-member aggregation, and sufficiency. Missing, mismatched, stale, changed-after-run, or unexercised required design/test/producer/client owner or binding members make sufficiency `blocked`; one passing member cannot mask another. When the same person holds multiple roles, keep the sections in one shared record and reference the role-owned fields rather than duplicate them. A build, lint, type-check, or unit-test pass is not rendered evidence. A hand-authored or echoed transcript is fabricated evidence—the same defect class as fabricated verification output—and blocks acceptance. A screenshot proves only the captured visual state; it does not by itself prove which producer version ran, keyboard behavior, recovery semantics, accessibility, task success, or production behavior. `testing-strategy` does not issue the holistic design verdict.
|
|
185
|
+
|
|
186
|
+
## 5. Design verdict
|
|
187
|
+
|
|
188
|
+
The design owner evaluates the returned evidence against every criterion and records:
|
|
189
|
+
|
|
190
|
+
| Field | Required content |
|
|
191
|
+
| --- | --- |
|
|
192
|
+
| `criterion_results` | `pass`, `fail`, `blocked`, or `not-applicable` per criterion, with verifier and artifact/result pointer. |
|
|
193
|
+
| `verdict` | `candidate`, `accepted`, `rejected`, or `pending`. |
|
|
194
|
+
| `verdict_owner` | User, named independent design owner, or author under the bounded deterministic exception below. |
|
|
195
|
+
| `rejection_basis` | For `rejected`, classify `deterministic-conformance`, `design-judgment`, or `mixed`, naming the failed criterion. `mixed` follows the stricter design-judgment path. |
|
|
196
|
+
| `rationale` | Evidence-backed reason, named divergence, and consequence. |
|
|
197
|
+
| `candidate_binding_set` | Complete immutable keyed design/test/producer/client set defined above; `candidate_binding` is only the one-member shorthand. A mutable branch is only `candidate_ref`. Any covered brief, criteria, source/review artifact, harness/oracle, producer, UI/copy/state, or member mismatch invalidates earlier evidence and verdicts. |
|
|
198
|
+
| `next_state` | `complete`, `pre-runtime-test-ready`, `design-rejected`, or `blocked`, with owner and next action for any open item. |
|
|
199
|
+
|
|
200
|
+
Deterministic checks may close their own criterion without waiting for aesthetic judgment. An author may issue `accepted` only for a low-risk `copy-only`, `narrow-visible`, or current-source conformance slice when every blocking criterion has an independent deterministic oracle, all required runtime evidence is verified, and no criterion needs aesthetic/product judgment. A new/reshaped screen, systemic redesign, cross-surface shared-system direction, brand direction, high-risk semantics, any judgment-bearing criterion, or a prior `design-judgment`/`mixed` rejection requires a user or named independent design owner. Until that owner decides, the author records `candidate`.
|
|
201
|
+
|
|
202
|
+
This bounded deterministic exception intentionally replaces the blanket rule that an author can never accept any slice. It removes an owner wait only when independent oracles leave no design judgment to exercise; it does not turn author opinion into evidence. A prior deterministic-conformance rejection may use the exception only after its criterion-targeted fix binds a new candidate and every invalidated criterion reruns. Any rejection containing design judgment keeps the independent-owner requirement.
|
|
203
|
+
|
|
204
|
+
At a handoff, only these verdict/next-state combinations are valid:
|
|
205
|
+
|
|
206
|
+
| Verdict | Next state | Required condition |
|
|
207
|
+
| --- | --- | --- |
|
|
208
|
+
| `accepted` | `complete` | The bound Phase 1 `sufficiency` is `sufficient` and no required evidence gap remains; every blocking criterion is `pass` or justified `not-applicable`; every required design/test/producer/client owner, record, exercised-version link, and binding-set member is present and verified; the allowed verdict owner accepted. |
|
|
209
|
+
| `rejected` | `design-rejected` | A blocking criterion or design judgment failed; preserve the negative evidence and revise the target. |
|
|
210
|
+
| `pending` | `pre-runtime-test-ready` | The only missing blocking layer is named runtime/rendered execution; lower layers pass, and an executable command/target plus named runtime owner is handed off. |
|
|
211
|
+
| `pending` | `blocked` | A required owner, decision, permission, environment, non-runtime evidence, consumer inventory, or criterion cannot be resolved. |
|
|
212
|
+
| `candidate` | `blocked` | Evidence is ready for a required user/independent design verdict, but that verdict has not arrived; name that owner and review artifact. |
|
|
213
|
+
|
|
214
|
+
All other terminal combinations are invalid. In particular, `accepted + pre-runtime-test-ready`, `accepted + blocked`, `pending + complete`, and `candidate + complete` are contradictions. During active work, omit `next_state` rather than manufacture a terminal combination.
|
|
215
|
+
|
|
216
|
+
Status meanings:
|
|
217
|
+
|
|
218
|
+
- `candidate`: author assessment; useful for review, never final acceptance.
|
|
219
|
+
- `accepted`: required criteria pass on the bound candidate and the required verdict owner accepts the design.
|
|
220
|
+
- `rejected`: a blocking criterion or design verdict failed; the current render is negative evidence, not a baseline to polish into acceptance.
|
|
221
|
+
- `pending`: evidence or verdict has not arrived; silence is not acceptance.
|
|
222
|
+
- `pre-runtime-test-ready`: lower layers are ready and the only missing blocker is named runtime/rendered execution with a named owner and command; it is not design acceptance.
|
|
223
|
+
- `blocked`: an owner, decision, permission, consumer universe, non-runtime evidence, environment without an executable handoff, or required independent verdict is unavailable.
|
|
224
|
+
|
|
225
|
+
A missing or absent design verdict is `pending` and blocks `complete`, MR-ready, merge-ready, and normal MR; it cannot be treated as tacit approval.
|
|
226
|
+
|
|
227
|
+
When a surface is `rejected`, preserve the rejected evidence and its `rejection_basis`. Until a re-rendered revision is `accepted`, rejection blocks `complete`, MR-ready, merge-ready, and every normal or ordinary draft MR; the rejected render or screenshot is negative evidence and cannot be reused as acceptance evidence. A `deterministic-conformance` rejection may be repaired by a targeted change—including a qualifying lightweight copy fix—only when the change addresses the failed criterion, introduces no new design judgment, binds a new candidate, and reruns every invalidated criterion; repeated failure stays blocked and routes through `defect-diagnosis` until its cause is isolated. A `design-judgment` or `mixed` rejection requires a revised design target, fresh baseline, new runtime evidence, and user/named independent design verdict; isolated copy, spacing, or token patches cannot clear it. A clearly labelled review-only draft MR may transport only the revised bound candidate to that named independent owner; it remains `candidate + blocked`, is not a normal handoff or MR-ready claim, and cannot merge. A second design-judgment rejection on the same surface stops implementation churn and returns the direction to that owner.
|
|
228
|
+
|
|
229
|
+
## Evidence semantics
|
|
230
|
+
|
|
231
|
+
Evidence dimensions are claim-matched, not a global ladder; verify every required dimension:
|
|
232
|
+
|
|
233
|
+
1. Intent/source: a rule, design, spec, or decision exists.
|
|
234
|
+
2. Static implementation: relevant code/config/story/test exists.
|
|
235
|
+
3. Automated acceptance: an exact command ran against the candidate and its oracle passed.
|
|
236
|
+
4. Rendered/device runtime: the target surface and required states were inspected on the named runtime.
|
|
237
|
+
5. Representative task/user: target users attempted credible tasks under the recorded protocol.
|
|
238
|
+
6. Production outcome: version-bound field metrics or incidents support the claim.
|
|
239
|
+
|
|
240
|
+
Dimensions do not substitute: production outcomes do not prove conformance; conformance does not prove user success; screenshots do not prove durability or recovery. Multi-dimensional criteria close only when all required dimensions pass. Heuristic review is risk discovery, not acceptance proof. Automated accessibility checks and user evaluation complement standards conformance; neither substitutes for the other. A single participant, single screenshot, single viewport, or single expert review does not justify a population-wide or cross-platform claim.
|
|
241
|
+
|
|
242
|
+
`unavailable-with-owner` and `unavailable-no-owner` are valid rendered-evidence statuses only when the record includes every attempted capture command, its observed failure, the residual risk, and the next unblock action. An unavailable label without an actual attempt record is invalid. Render-layer failures can also be nondeterministic: an earlier per-screen capture may look clean while a later pass exposes the defect, including charset auto-detection that renders clean once and garbled later. An aggregate or final design review therefore re-renders the actual artifact set at review time—even when the candidate binding is unchanged—instead of trusting earlier per-screen captures or a source-level pass.
|
|
243
|
+
|
|
244
|
+
`planned` includes the exact capture command/step and must resolve before a final design verdict, MR-ready claim, or normal MR. The only unresolved-runtime handoff is `pending + pre-runtime-test-ready` with its named owner/command. An unavailable layer closes only as a handoff gap after the user is told the residual risk and explicitly accepts proceeding without that evidence for this specific change in the current thread; `unavailable-no-owner` remains `pending + blocked`.
|
|
245
|
+
|
|
246
|
+
For every deterministic gate, record its coverage boundary. A regex/path scan proves only its declared scan scope. A token reference proves use, not rendered theme correctness. A component test proves its oracle, not that CI executes it. A render proves the captured state, not production durability or recovery.
|
|
247
|
+
|
|
248
|
+
## Design-system and state contracts
|
|
249
|
+
|
|
250
|
+
- Encode stable visual and accessibility invariants in semantic component APIs, tokens, types, and focused tests when the codebase supports them. Prose remains the rationale and boundary, not the only enforcement layer.
|
|
251
|
+
- Keep a previewable state catalog for high-cost loading, empty, failure, permission, offline, partial, recovery, and success states. Pair it with mapping/coverage checks where source inputs can be enumerated.
|
|
252
|
+
- Classify errors by affected scope, recovery path, durability/finality, and retry safety. Choose one primary carrier; do not stack inline, banner, toast, and modal messages without distinct jobs.
|
|
253
|
+
- Preserve stateful workspace cores across transient loading/error/mode changes when remounting would lose draft, focus, selection, scroll, or media state. Verify preservation at runtime.
|
|
254
|
+
- Apply the same token, responsive, accessibility, and state checks to examples, stories, catalogs, and docs that teams use as implementation sources.
|
|
255
|
+
- Before landing executable design guidance that affects multiple client stacks, name every downstream stack owner and route the reusable rule through `skill-extraction-workflow`; mirror its executable form into every affected owner, or record for each stack why its behavior remains unchanged.
|
|
256
|
+
|
|
257
|
+
## Copy-only and source-only paths
|
|
258
|
+
|
|
259
|
+
A runtime copy-only change may use a lightweight record when it stays in the same component, rendering slot, or output field and changes no conditional logic, hierarchy, layout, state, interaction, navigation, behavior, or component semantics. The lightweight record is complete with: `slice_id`, `candidate_ref`, surface and authoritative consumer inventory; before/after copy and classification evidence; semantic intent and risk class; unchanged component/slot/field and behavior proof; the design/test owners, every changed or claim-bearing producer owner, and every affected client owner; and criteria for accessible name, terminology, localization, rendered extent, and target render/preview where applicable. It intentionally omits unrelated full-record matrices.
|
|
260
|
+
|
|
261
|
+
Testing supplies a lightweight Phase 0 for those criteria; each changed producer and affected client owner may begin from that record instead of the full brief. The lightweight design record, test definitions/executions, and producer/client returns still form the complete immutable candidate-binding set and record their own source or command/target, artifacts or observations, criterion links, coverage boundary, and gaps; client returns also record tested locales/sizes and the producer member/version exercised. Phase 1 binds and cites the complete design/test/producer/client record sets. Error, auth, money, destructive-action, permission, legal/compliance, and AI-disclosure copy are not lightweight; route their risk and run the full contract.
|
|
262
|
+
|
|
263
|
+
If later evidence proves the `copy-only` classification wrong, the lightweight record is invalid from that discovery point, and you must apply **Missed pre-edit record** to the existing diff by stopping implementation edits, rebuilding the full Design brief, obtaining full Phase 0 and every affected producer/client owner entry, auditing the whole existing diff against them, then rerunning producer/client execution, Phase 1, and the design verdict. Until that remediation closes, the slice is `pending + blocked`; the old lightweight result cannot support completion.
|
|
264
|
+
|
|
265
|
+
If rendered evidence is not captured for a qualifying copy-only edit, it can close only as `pending + pre-runtime-test-ready` with the named runtime owner/command, or as the same risk-disclosed, specific-change, current-thread user-accepted handoff gap above. It is never `complete` without the required render.
|
|
266
|
+
|
|
267
|
+
Copy acceptance is semantic, not a character-count shortcut: action labels identify the action and object/consequence when context does not; errors state what happened, a safe/useful reason when available, and the next repair action; disabled controls expose a safe reason and enablement condition or are hidden when disclosure is unsafe; success feedback names the completed outcome and useful next step; terminology, tone, accessible naming, localization and rendered extent remain consistent. Platform-standard short dialog labels are valid when the consequence is already unambiguous.
|
|
268
|
+
|
|
269
|
+
Source-only guidance, design-file, or audit work stops before Stage 3 when no runtime implementation is requested. Report recommendations as hypotheses or acceptance criteria and name the missing implementation/runtime evidence. Do not fabricate a client handoff.
|
|
270
|
+
|
|
271
|
+
## Persistence and safety
|
|
272
|
+
|
|
273
|
+
Artifacts must resolve at review time through repo-relative paths, review attachments, or named artifact IDs. Do not use local absolute private paths. Record the command and target with captured output; a pass/fail summary alone is not an inspectable artifact. Use sanitized/test accounts and redact tokens, credentials, PII, private paths, and raw personal data.
|
|
274
|
+
|
|
275
|
+
Any required evidence status other than verified leaves the slice `pre-runtime-test-ready` or `blocked`. A user may accept a gap only after its residual risk is disclosed and only for the specifically named change in the current thread; blanket autonomy, a prior “continue”, or a different slice's acceptance does not convert the gap into `complete`.
|