sinapse-ai 9.4.0 → 9.5.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/.claude/CLAUDE.md +10 -4
- package/.claude/hooks/enforce-architecture-first.py +197 -197
- package/.claude/hooks/enforce-git-push-authority.sh +25 -4
- package/.claude/hooks/mind-clone-governance.py +193 -193
- package/.claude/hooks/read-protection.py +152 -152
- package/.claude/hooks/sql-governance.py +183 -183
- package/.claude/hooks/verify-packages.cjs +83 -0
- package/.claude/hooks/write-path-validation.py +195 -195
- package/.claude/rules/hook-governance.md +1 -0
- package/.claude/rules/mandatory-delegation.md +24 -0
- package/.claude/rules/project-intelligence.md +63 -0
- package/.claude/rules/response-format.md +4 -0
- package/.claude/rules/safe-collaboration.md +4 -2
- package/.claude/rules/security-data-protection.md +18 -0
- package/.claude/rules/squad-awareness.md +93 -67
- package/.claude/rules/token-economy.md +148 -0
- package/.codex/agents/analyst.md +90 -0
- package/.codex/agents/architect.md +78 -0
- package/.codex/agents/data-engineer.md +38 -0
- package/.codex/agents/developer.md +97 -0
- package/.codex/agents/devops.md +121 -0
- package/.codex/agents/product-lead.md +27 -0
- package/.codex/agents/project-lead.md +28 -0
- package/.codex/agents/quality-gate.md +89 -0
- package/.codex/agents/sprint-lead.md +28 -0
- package/.codex/agents/squad-creator.md +58 -0
- package/.codex/agents/ux-design-expert.md +28 -0
- package/.sinapse-ai/core/code-intel/registry-syncer.js +56 -3
- package/.sinapse-ai/core/doctor/checks/agent-memory.js +5 -1
- package/.sinapse-ai/core/doctor/checks/claude-md.js +4 -1
- package/.sinapse-ai/core/doctor/checks/code-intel.js +5 -1
- package/.sinapse-ai/core/doctor/checks/commands-count.js +4 -1
- package/.sinapse-ai/core/doctor/checks/constitution-consistency.js +4 -1
- package/.sinapse-ai/core/doctor/checks/core-config.js +4 -1
- package/.sinapse-ai/core/doctor/checks/entity-registry.js +6 -1
- package/.sinapse-ai/core/doctor/checks/git-hooks.js +5 -1
- package/.sinapse-ai/core/doctor/checks/graph-dashboard.js +4 -1
- package/.sinapse-ai/core/doctor/checks/hooks-claude-count.js +5 -1
- package/.sinapse-ai/core/doctor/checks/ide-sync.js +4 -1
- package/.sinapse-ai/core/doctor/checks/node-version.js +4 -1
- package/.sinapse-ai/core/doctor/checks/npm-packages.js +4 -1
- package/.sinapse-ai/core/doctor/checks/rules-files.js +4 -1
- package/.sinapse-ai/core/doctor/checks/settings-json.js +4 -1
- package/.sinapse-ai/core/doctor/checks/skills-count.js +4 -1
- package/.sinapse-ai/core/doctor/index.js +157 -50
- package/.sinapse-ai/core/ids/registry-updater.js +6 -1
- package/.sinapse-ai/core/logger/index.js +319 -0
- package/.sinapse-ai/core/orchestration/terminal-spawner.js +2 -2
- package/.sinapse-ai/core/telemetry/index.js +247 -0
- package/.sinapse-ai/data/entity-registry.yaml +1384 -944
- package/.sinapse-ai/development/agents/architect.md +5 -0
- package/.sinapse-ai/development/agents/data-engineer.md +38 -0
- package/.sinapse-ai/development/agents/developer.md +28 -0
- package/.sinapse-ai/development/agents/devops.md +4 -0
- package/.sinapse-ai/development/agents/product-lead.md +27 -0
- package/.sinapse-ai/development/agents/project-lead.md +28 -0
- package/.sinapse-ai/development/agents/quality-gate.md +4 -0
- package/.sinapse-ai/development/agents/sprint-lead/MEMORY.md +8 -0
- package/.sinapse-ai/development/agents/sprint-lead.md +28 -0
- package/.sinapse-ai/development/agents/squad-creator.md +58 -0
- package/.sinapse-ai/development/agents/ux-design-expert.md +28 -0
- package/.sinapse-ai/development/knowledge-base/agent-communication-protocol.md +127 -0
- package/.sinapse-ai/development/knowledge-base/database-scaling-patterns.md +374 -0
- package/.sinapse-ai/development/knowledge-base/environment-deployment-patterns.md +353 -0
- package/.sinapse-ai/development/knowledge-base/gotchas-patterns.md +224 -0
- package/.sinapse-ai/development/knowledge-base/infrastructure-decision-framework.md +221 -0
- package/.sinapse-ai/development/knowledge-base/security-pre-deploy-checklist.md +410 -0
- package/.sinapse-ai/development/knowledge-base/software-architecture-patterns.md +299 -0
- package/.sinapse-ai/development/knowledge-base/token-economy-guide.md +198 -0
- package/.sinapse-ai/development/scripts/populate-entity-registry.js +5 -1
- package/.sinapse-ai/development/skills/captcha-handler.md +82 -0
- package/.sinapse-ai/development/skills/chrome-brain.md +81 -0
- package/.sinapse-ai/development/skills/deploy-readiness.md +93 -0
- package/.sinapse-ai/development/skills/model-router.md +92 -0
- package/.sinapse-ai/development/skills/sinapse-methodology.md +175 -0
- package/.sinapse-ai/development/skills/story-fast-track.md +71 -0
- package/.sinapse-ai/development/tasks/dev-develop-story.md +10 -0
- package/.sinapse-ai/development/tasks/environment-promotion-pipeline.md +582 -0
- package/.sinapse-ai/development/tasks/generate-agent-handoff.md +223 -0
- package/.sinapse-ai/development/tasks/infrastructure-assessment.md +432 -0
- package/.sinapse-ai/development/tasks/load-testing-setup.md +611 -0
- package/.sinapse-ai/development/tasks/observability-blueprint.md +562 -0
- package/.sinapse-ai/development/templates/legal/breach-notification-tmpl.md +113 -0
- package/.sinapse-ai/development/templates/legal/privacy-policy-tmpl.md +93 -0
- package/.sinapse-ai/development/templates/legal/terms-of-service-tmpl.md +85 -0
- package/.sinapse-ai/development/templates/service-template/README.md.hbs +159 -159
- package/.sinapse-ai/development/templates/service-template/__tests__/index.test.ts.hbs +238 -238
- package/.sinapse-ai/development/templates/service-template/client.ts.hbs +404 -404
- package/.sinapse-ai/development/templates/service-template/errors.ts.hbs +183 -183
- package/.sinapse-ai/development/templates/service-template/index.ts.hbs +121 -121
- package/.sinapse-ai/development/templates/service-template/package.json.hbs +88 -88
- package/.sinapse-ai/development/templates/service-template/types.ts.hbs +146 -146
- package/.sinapse-ai/development/templates/squad-template/LICENSE +22 -22
- package/.sinapse-ai/development/workflows/story-development-cycle.yaml +40 -1
- package/.sinapse-ai/hooks/ids-post-commit.js +22 -0
- package/.sinapse-ai/infrastructure/contracts/compatibility/README.md +42 -0
- package/.sinapse-ai/infrastructure/contracts/compatibility/sinapse-current.yaml +35 -0
- package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -127
- package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -71
- package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -51
- package/.sinapse-ai/infrastructure/scripts/pr-review-ai.js +16 -13
- package/.sinapse-ai/infrastructure/scripts/setup-project-infra.js +128 -0
- package/.sinapse-ai/infrastructure/scripts/test-discovery.js +8 -3
- package/.sinapse-ai/infrastructure/scripts/validate-manifest-parity.js +380 -0
- package/.sinapse-ai/infrastructure/scripts/validate-parity.js +76 -25
- package/.sinapse-ai/infrastructure/templates/coderabbit.yaml.template +280 -280
- package/.sinapse-ai/infrastructure/templates/config/env.example +16 -0
- package/.sinapse-ai/infrastructure/templates/config/gitignore-additions.tmpl +59 -0
- package/.sinapse-ai/infrastructure/templates/github/CODEOWNERS.template +12 -0
- package/.sinapse-ai/infrastructure/templates/github/PULL_REQUEST_TEMPLATE.md +29 -0
- package/.sinapse-ai/infrastructure/templates/github/ci-template.yml +77 -0
- package/.sinapse-ai/infrastructure/templates/github/issue-templates/bug_report.md +34 -0
- package/.sinapse-ai/infrastructure/templates/github/issue-templates/feature_request.md +19 -0
- package/.sinapse-ai/infrastructure/templates/github-workflows/ci.yml.template +170 -170
- package/.sinapse-ai/infrastructure/templates/github-workflows/pr-automation.yml.template +331 -331
- package/.sinapse-ai/infrastructure/templates/github-workflows/release.yml.template +197 -197
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +19 -19
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-node.tmpl +86 -86
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-python.tmpl +146 -146
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-sinapse-base.tmpl +64 -64
- package/.sinapse-ai/infrastructure/templates/sinapse-sync.yaml.template +183 -183
- package/.sinapse-ai/install-manifest.yaml +275 -140
- package/.sinapse-ai/local-config.yaml.template +65 -65
- package/.sinapse-ai/monitor/hooks/lib/__init__.py +2 -2
- package/.sinapse-ai/monitor/hooks/lib/enrich.py +59 -59
- package/.sinapse-ai/monitor/hooks/lib/send_event.py +48 -48
- package/.sinapse-ai/monitor/hooks/notification.py +30 -30
- package/.sinapse-ai/monitor/hooks/post_tool_use.py +46 -46
- package/.sinapse-ai/monitor/hooks/pre_compact.py +30 -30
- package/.sinapse-ai/monitor/hooks/pre_tool_use.py +41 -41
- package/.sinapse-ai/monitor/hooks/stop.py +30 -30
- package/.sinapse-ai/monitor/hooks/subagent_stop.py +30 -30
- package/.sinapse-ai/monitor/hooks/user_prompt_submit.py +39 -39
- package/.sinapse-ai/product/templates/adr.hbs +126 -126
- package/.sinapse-ai/product/templates/dbdr.hbs +242 -242
- package/.sinapse-ai/product/templates/epic.hbs +213 -213
- package/.sinapse-ai/product/templates/pmdr.hbs +187 -187
- package/.sinapse-ai/product/templates/prd-v2.0.hbs +217 -217
- package/.sinapse-ai/product/templates/prd.hbs +202 -202
- package/.sinapse-ai/product/templates/story-tmpl.yaml +59 -0
- package/.sinapse-ai/product/templates/story.hbs +264 -264
- package/.sinapse-ai/product/templates/task.hbs +171 -171
- package/.sinapse-ai/product/templates/tmpl-comment-on-examples.sql +159 -159
- package/.sinapse-ai/product/templates/tmpl-migration-script.sql +92 -92
- package/.sinapse-ai/product/templates/tmpl-rls-granular-policies.sql +105 -105
- package/.sinapse-ai/product/templates/tmpl-rls-kiss-policy.sql +11 -11
- package/.sinapse-ai/product/templates/tmpl-rls-roles.sql +136 -136
- package/.sinapse-ai/product/templates/tmpl-rls-simple.sql +78 -78
- package/.sinapse-ai/product/templates/tmpl-rls-tenant.sql +153 -153
- package/.sinapse-ai/product/templates/tmpl-rollback-script.sql +78 -78
- package/.sinapse-ai/product/templates/tmpl-seed-data.sql +141 -141
- package/.sinapse-ai/product/templates/tmpl-smoke-test.sql +17 -17
- package/.sinapse-ai/product/templates/tmpl-staging-copy-merge.sql +140 -140
- package/.sinapse-ai/product/templates/tmpl-stored-proc.sql +141 -141
- package/.sinapse-ai/product/templates/tmpl-trigger.sql +153 -153
- package/.sinapse-ai/product/templates/tmpl-view-materialized.sql +134 -134
- package/.sinapse-ai/product/templates/tmpl-view.sql +178 -178
- package/.sinapse-ai/scripts/diagnostics/health-dashboard/package-lock.json +427 -355
- package/LICENSE +34 -34
- package/README.en.md +167 -20
- package/README.md +190 -22
- package/bin/cli.js +510 -196
- package/bin/postinstall.js +564 -0
- package/bin/sinapse-cli +283 -283
- package/bin/sinapse-graph.js +9 -0
- package/bin/sinapse-init.js +36 -4
- package/bin/sinapse-minimal.js +20 -9
- package/bin/sinapse.js +202 -122
- package/bin/utils/deprecation-warning.js +46 -0
- package/bin/utils/pre-push-safety.js +14 -0
- package/docs/TELEMETRY.md +131 -0
- package/docs/chrome-brain-upgrade-plan.md +624 -0
- package/docs/framework/orqx-plan.md +1 -1
- package/docs/installation/chrome-brain.md +17 -7
- package/docs/mega-upgrade-orchestration-plan.md +71 -0
- package/docs/pt/contributing.md +20 -0
- package/docs/research-synthesis-for-upgrade.md +511 -0
- package/docs/security-audit-report.md +306 -0
- package/package.json +20 -8
- package/packages/installer/src/config/configure-environment.js +19 -44
- package/packages/installer/src/detection/detect-project-type.js +181 -63
- package/packages/installer/src/installer/manifest-signature.js +32 -17
- package/packages/installer/src/wizard/i18n.js +12 -0
- package/packages/installer/src/wizard/ide-config-generator.js +8 -39
- package/packages/installer/src/wizard/index.js +119 -14
- package/packages/installer/src/wizard/questions.js +2 -3
- package/packages/installer/tests/integration/environment-configuration.test.js +7 -5
- package/packages/installer/tests/unit/detection/detect-project-type.test.js +138 -1
- package/packages/installer/tests/unit/doctor/doctor-orchestrator.test.js +3 -3
- package/packages/sinapse-install/bin/edmcp.js +0 -0
- package/packages/sinapse-install/bin/sinapse-install.js +0 -0
- package/packages/sinapse-pro-cli/bin/sinapse-pro.js +0 -0
- package/scripts/check-markdown-links.py +353 -353
- package/scripts/coverage-report-summary.js +169 -0
- package/scripts/generate-install-manifest.js +6 -2
- package/scripts/release-readiness.js +169 -0
- package/scripts/test-install-matrix-local.sh +153 -0
- package/scripts/validate-install-docs.js +394 -0
- package/scripts/validate-no-external-refs.js +376 -0
- package/scripts/validate-squad-orqx.js +302 -0
- package/scripts/validate-story-meta.js +263 -0
- package/squads/claude-code-mastery/CHANGELOG.md +1 -1
- package/squads/claude-code-mastery/README.md +2 -2
- package/squads/claude-code-mastery/squad.yaml +1 -1
- package/squads/squad-artdir/README.md +90 -0
- package/squads/squad-artdir/agents/accessibility-guardian.md +184 -0
- package/squads/squad-artdir/agents/artdir-orqx.md +145 -0
- package/squads/squad-artdir/agents/color-psychologist.md +166 -0
- package/squads/squad-artdir/agents/cro-persuasion.md +161 -0
- package/squads/squad-artdir/agents/design-system-architect.md +100 -0
- package/squads/squad-artdir/agents/ia-architect.md +169 -0
- package/squads/squad-artdir/agents/interaction-designer.md +162 -0
- package/squads/squad-artdir/agents/layout-engineer.md +163 -0
- package/squads/squad-artdir/agents/motion-architect.md +185 -0
- package/squads/squad-artdir/agents/platform-aesthetic-director.md +84 -0
- package/squads/squad-artdir/agents/premium-packaging-strategist.md +107 -0
- package/squads/squad-artdir/agents/product-surface-director.md +86 -0
- package/squads/squad-artdir/agents/type-systemist.md +138 -0
- package/squads/squad-artdir/agents/visual-strategist.md +127 -0
- package/squads/squad-artdir/checklists/seven-pillars-validation-checklist.md +172 -0
- package/squads/squad-artdir/knowledge-base/case-nyo-ia-reference.md +289 -0
- package/squads/squad-artdir/knowledge-base/deliverables-templates.md +457 -0
- package/squads/squad-artdir/knowledge-base/motion-technique-catalog.md +247 -0
- package/squads/squad-artdir/knowledge-base/premium-packaging-principles.md +133 -0
- package/squads/squad-artdir/knowledge-base/psychological-toolkit.md +229 -0
- package/squads/squad-artdir/knowledge-base/saas-art-direction-canon.md +242 -0
- package/squads/squad-artdir/knowledge-base/seven-pillars-framework.md +289 -0
- package/squads/squad-artdir/knowledge-base/ten-pillars-framework.md +221 -0
- package/squads/squad-artdir/package.json +20 -0
- package/squads/squad-artdir/squad.yaml +271 -0
- package/squads/squad-artdir/tasks/audit-conversion.md +97 -0
- package/squads/squad-artdir/tasks/audit-drift-multi-surface.md +55 -0
- package/squads/squad-artdir/tasks/consult-saas-canon.md +54 -0
- package/squads/squad-artdir/tasks/create-art-direction-brief.md +110 -0
- package/squads/squad-artdir/tasks/create-premium-packaging-brief.md +61 -0
- package/squads/squad-artdir/tasks/create-wireflow.md +84 -0
- package/squads/squad-artdir/tasks/design-color-system.md +81 -0
- package/squads/squad-artdir/tasks/design-product-surface.md +60 -0
- package/squads/squad-artdir/tasks/design-token-system.md +58 -0
- package/squads/squad-artdir/tasks/diagnose-visual-language.md +92 -0
- package/squads/squad-artdir/tasks/first-5-minutes-choreography.md +65 -0
- package/squads/squad-artdir/tasks/specify-motion-system.md +84 -0
- package/squads/squad-artdir/tasks/validate-against-pillars.md +143 -0
- package/squads/squad-artdir/templates/art-direction-brief-template.md +215 -0
- package/squads/squad-artdir/workflows/conversion-audit-cycle.yaml +78 -0
- package/squads/squad-artdir/workflows/full-art-direction-cycle.yaml +98 -0
- package/squads/squad-artdir/workflows/saas-platform-art-direction-cycle.yaml +174 -0
- package/squads/squad-brand/knowledge-base/ai-visual-generation-canon.md +234 -0
- package/squads/squad-brand/squad.yaml +20 -6
- package/squads/squad-claude/knowledge-base/context-window-optimization.md +1 -1
- package/squads/squad-claude/knowledge-base/swarm-orchestration-patterns.md +2 -2
- package/squads/squad-content/knowledge-base/ai-native-content-loop.md +220 -0
- package/squads/squad-content/knowledge-base/signal-intelligence-v2.md +234 -0
- package/squads/squad-content/knowledge-base/task-ownership-map.md +235 -0
- package/squads/squad-content/squad.yaml +187 -27
- package/squads/squad-copy/knowledge-base/ai-copy-human-loop-canon.md +235 -0
- package/squads/squad-copy/squad.yaml +19 -4
- package/squads/squad-design/knowledge-base/cross-surface-token-canon.md +209 -0
- package/squads/squad-design/squad.yaml +19 -4
- package/.sinapse-ai/core/registry/service-registry.json +0 -6346
- package/.sinapse-ai/data/registry-update-log.jsonl +0 -1323
- package/.sinapse-ai/manifests/agents.csv +0 -29
- package/.sinapse-ai/manifests/tasks.csv +0 -204
- package/.sinapse-ai/manifests/workers.csv +0 -196
- package/squads/squad-growth/tasks/calculate-sample-size.md +0 -121
- package/squads/squad-paidmedia/tasks/calculate-sample-size.md +0 -57
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# Knowledge Base: Cross-Surface Token Canon
|
|
2
|
+
|
|
3
|
+
> **Status:** Canon — canonical source of truth for how `squad-design` (Nexus) and `squad-artdir` (Atlas) share responsibility for tokens that cross surfaces.
|
|
4
|
+
> **Version:** 1.0 (shipped with squad-design v2.0.0)
|
|
5
|
+
> **Contracts with:** `squads/squad-artdir/agents/design-system-architect.md` (Atlas)
|
|
6
|
+
> **Depends on:** `design-token-architecture.md` (this squad)
|
|
7
|
+
|
|
8
|
+
## Why this doc exists
|
|
9
|
+
|
|
10
|
+
Until squad-design v2.0.0, "design tokens" in SINAPSE lived in two places without a clear boundary:
|
|
11
|
+
|
|
12
|
+
1. `squad-design/knowledge-base/design-token-architecture.md` — a generic three-tier taxonomy (primitive → semantic → component) useful for a single product surface.
|
|
13
|
+
2. `squad-artdir` v2.0 introduced **Atlas** (`design-system-architect`), whose Pilar 9 is multi-surface design system architecture — brand, marketing, product, email, docs, PDF, mobile.
|
|
14
|
+
|
|
15
|
+
Both were correct in isolation but the **boundary** between them was undefined. Product teams building a SaaS (marketing page + logged-in product + transactional email) did not know which squad to ask when a token decision spanned those surfaces, which led to ad-hoc token drift — the exact failure mode Atlas was created to prevent.
|
|
16
|
+
|
|
17
|
+
This canon makes the boundary explicit and sets the handoff contract.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 1. Token tiers (recap — single surface)
|
|
22
|
+
|
|
23
|
+
The existing `design-token-architecture.md` three-tier model still holds for **a single surface**:
|
|
24
|
+
|
|
25
|
+
| Tier | Name | Role | Example |
|
|
26
|
+
|------|------|------|---------|
|
|
27
|
+
| L1 | Primitive | Raw design value | `color.blue.500: #3B82F6` |
|
|
28
|
+
| L2 | Semantic | Intent mapping | `color.action.primary: {color.blue.500}` |
|
|
29
|
+
| L3 | Component | Component-specific | `button.primary.bg: {color.action.primary}` |
|
|
30
|
+
|
|
31
|
+
Rules: L3 → L2 → L1. L3 → L1 is forbidden. L1 → L1 is forbidden. These rules are enforced by Nexus (squad-design) inside any single surface's design system.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 2. The cross-surface problem (why L1-L2-L3 is insufficient alone)
|
|
36
|
+
|
|
37
|
+
A modern product runs on **multiple surfaces**, and each surface has different rendering constraints:
|
|
38
|
+
|
|
39
|
+
| Surface | Constraint | Example mismatch |
|
|
40
|
+
|---------|-----------|------------------|
|
|
41
|
+
| Brand identity | Canonical — no rendering | "#3B82F6 is our blue" |
|
|
42
|
+
| Marketing site | Full CSS, modern browsers | `color-mix()`, `clamp()`, container queries |
|
|
43
|
+
| Product UI | Full CSS but component contracts matter | `--button-primary-bg` token must exist |
|
|
44
|
+
| Transactional email | Inline CSS, no `:root`, no custom props | `style="background:#3B82F6"` — no reference |
|
|
45
|
+
| Documentation | Often a 3rd-party theme (Docusaurus, Mintlify) | Limited override surface |
|
|
46
|
+
| Billing / invoice PDF | Print CSS or server-rendered PDF | No JS, muted color profile, CMYK concerns |
|
|
47
|
+
| Mobile apps (iOS/Android) | Native token maps (XML, Swift) | No CSS variables at all |
|
|
48
|
+
|
|
49
|
+
Primitive `color.blue.500: #3B82F6` is stable across all surfaces. Semantic `color.action.primary` is stable. But **component** `button.primary.bg` CAN NOT be the same token on email (no custom props) vs web product (full CSS) vs mobile (`UIColor`). Something has to translate. That translation layer is what Atlas calls a **surface dialect**.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 3. Surface dialects (what Atlas owns)
|
|
54
|
+
|
|
55
|
+
A **surface dialect** is a surface-specific translation of the canonical token tree into whatever that surface can actually consume.
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
Brand canon (Meridian)
|
|
59
|
+
│
|
|
60
|
+
▼
|
|
61
|
+
Token canon (Atlas) — versioned semver, single source of truth
|
|
62
|
+
│
|
|
63
|
+
┌────┴────────┬──────────────┬──────────────┬──────────────┐
|
|
64
|
+
▼ ▼ ▼ ▼ ▼
|
|
65
|
+
Marketing Product UI Transactional PDF Mobile
|
|
66
|
+
dialect dialect email dialect dialect dialects
|
|
67
|
+
(Nexus (Nexus (Atlas — (Atlas — (Atlas —
|
|
68
|
+
owns) owns) specialized) print) native)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Atlas owns:
|
|
72
|
+
- The canonical root (what the token values ARE)
|
|
73
|
+
- The dialect definitions for surfaces that Nexus does not work on (email, PDF, mobile)
|
|
74
|
+
- Semver versioning of the canonical token tree
|
|
75
|
+
- Cross-surface drift audits
|
|
76
|
+
- Breaking-change migration guides
|
|
77
|
+
|
|
78
|
+
Nexus (squad-design) owns:
|
|
79
|
+
- The component-level token usage on **web surfaces** (marketing + product UI)
|
|
80
|
+
- The three-tier (L1/L2/L3) enforcement inside those surfaces
|
|
81
|
+
- The component → token binding (which component reads which semantic token)
|
|
82
|
+
- The design-to-code pipeline on the web surfaces
|
|
83
|
+
|
|
84
|
+
## 4. Ownership diff matrix (authoritative)
|
|
85
|
+
|
|
86
|
+
| Decision | Owner | Rationale |
|
|
87
|
+
|----------|-------|-----------|
|
|
88
|
+
| "What's our brand blue?" | Meridian (squad-brand) | Brand-level decision, upstream of both |
|
|
89
|
+
| "What's the canonical hex for `color.action.primary`?" | Atlas | Canonical root — single source of truth |
|
|
90
|
+
| "How is `color.action.primary` represented in a transactional email?" | Atlas | Email dialect — email cannot reference a CSS variable |
|
|
91
|
+
| "How is `color.action.primary` represented in a PDF invoice?" | Atlas | PDF dialect — print-safe color profile |
|
|
92
|
+
| "How is `color.action.primary` bound to `Button` component on the product UI?" | Nexus | Component binding inside web product surface |
|
|
93
|
+
| "What is `spacing.md` on marketing site?" | Nexus | Marketing surface = web, Nexus domain |
|
|
94
|
+
| "What is `spacing.md` on mobile (iOS/Android)?" | Atlas | Mobile is a surface Nexus does not work on |
|
|
95
|
+
| "We need a `button.destructive` variant" | Nexus | Component-level addition inside web surface |
|
|
96
|
+
| "We need to change `color.action.primary` from blue to teal" | Atlas | Canonical root change — requires semver major bump + migration guide |
|
|
97
|
+
| "We found that marketing and product UI render `color.bg.subtle` slightly differently" | Atlas | Cross-surface drift audit, Atlas domain |
|
|
98
|
+
| "Tailwind theme config for our marketing site" | Nexus | Web-surface token pipeline |
|
|
99
|
+
| "Figma Variables that mirror the design tokens" | Nexus + Atlas (joint) | Figma lives on the boundary — nexus for day-to-day, Atlas for canonical publishes |
|
|
100
|
+
|
|
101
|
+
**Rule of thumb:**
|
|
102
|
+
- If the question is "single web surface, single component" → Nexus.
|
|
103
|
+
- If the question is "canonical root, multi-surface, versioning, or non-web surface" → Atlas.
|
|
104
|
+
|
|
105
|
+
## 5. Immutable vs surface-adapted tokens
|
|
106
|
+
|
|
107
|
+
Not every token can or should be identical across all surfaces. The canon distinguishes three classes:
|
|
108
|
+
|
|
109
|
+
| Class | Description | Example | Who decides |
|
|
110
|
+
|-------|------------|---------|-------------|
|
|
111
|
+
| **Immutable** | MUST be byte-identical across every surface | Brand primary color hex, logo colors, brand gradient stops | Meridian → Atlas |
|
|
112
|
+
| **Semantically stable** | Meaning stays constant, rendering adapts per surface | `spacing.md` (web: 16px, mobile: 16pt, PDF: 12pt, email: 16px inline) | Atlas |
|
|
113
|
+
| **Surface-local** | Only exists on one surface, no cross-surface meaning | `card.hover.shadow` (web only), `email.footer.divider.color` (email only) | Nexus (if web) / Atlas (if non-web) |
|
|
114
|
+
|
|
115
|
+
**Immutable tokens are non-negotiable.** If a dialect cannot render the immutable token (e.g. email cannot render a 3-stop gradient), the dialect MUST document the fallback and the fallback is itself immutable. Surface owners cannot unilaterally pick their own fallback.
|
|
116
|
+
|
|
117
|
+
**Semantically stable tokens** are where most of the day-to-day work happens. The meaning (`spacing.md = one comfortable unit`) is shared; the value differs per surface constraint.
|
|
118
|
+
|
|
119
|
+
**Surface-local tokens** are small and should be kept small — aggressive growth of surface-local tokens is a smell that the semantic layer is too thin.
|
|
120
|
+
|
|
121
|
+
## 6. Versioning contract
|
|
122
|
+
|
|
123
|
+
Atlas owns semver on the canonical token tree.
|
|
124
|
+
|
|
125
|
+
| Change type | Semver | Who approves | Example |
|
|
126
|
+
|------------|--------|-------------|---------|
|
|
127
|
+
| Add a new token (no break) | **MINOR** | Atlas alone | Add `color.action.tertiary` |
|
|
128
|
+
| Change a value without changing the name | **MINOR** (if immutable class: **MAJOR**) | Atlas alone | Shift `color.border.subtle` one step lighter |
|
|
129
|
+
| Rename a token | **MAJOR** | Atlas + Nexus + Meridian | Rename `color.action.primary` → `color.intent.primary` |
|
|
130
|
+
| Remove a token | **MAJOR** | Atlas + Nexus + Meridian | Drop `color.action.tertiary` |
|
|
131
|
+
| Change the canonical hex of an immutable | **MAJOR** | Atlas + Meridian | Brand rebrand |
|
|
132
|
+
|
|
133
|
+
Every MAJOR bump MUST ship with:
|
|
134
|
+
1. A migration guide (`CHANGELOG.md` entry with before/after per affected surface)
|
|
135
|
+
2. Deprecation warnings on the old token for ≥1 minor cycle before the MAJOR cuts it
|
|
136
|
+
3. A drift audit run after the MAJOR lands on all surfaces
|
|
137
|
+
|
|
138
|
+
Nexus MUST consume canonical token tree by exact version, never "latest". `squad-design` tokens in a given project pin to a specific Atlas token tree version.
|
|
139
|
+
|
|
140
|
+
## 7. Handoff protocol — Nexus ↔ Atlas
|
|
141
|
+
|
|
142
|
+
### 7.1 When Nexus needs to request a token change
|
|
143
|
+
|
|
144
|
+
1. Nexus opens a request describing: the component use case, the surface(s) affected, why existing tokens are insufficient.
|
|
145
|
+
2. Atlas assesses: does this need a new semantic token, or does an existing semantic cover it?
|
|
146
|
+
3. If NEW: Atlas creates the canonical token (L2 semantic), publishes a MINOR bump, and defines the dialect for each surface.
|
|
147
|
+
4. Nexus binds the new semantic into the component library.
|
|
148
|
+
|
|
149
|
+
### 7.2 When Atlas needs Nexus to adapt to a canonical change
|
|
150
|
+
|
|
151
|
+
1. Atlas announces the upcoming canonical change with a proposed semver bump.
|
|
152
|
+
2. Nexus reviews impact on web surface components.
|
|
153
|
+
3. If MAJOR: migration guide is co-authored before the bump lands.
|
|
154
|
+
4. Nexus migrates component bindings on the release boundary.
|
|
155
|
+
|
|
156
|
+
### 7.3 When Meridian (brand) changes the brand canon
|
|
157
|
+
|
|
158
|
+
1. Meridian publishes the brand change (brand guidelines update).
|
|
159
|
+
2. Atlas absorbs the change, decides which tokens become immutable vs re-derived, publishes a MAJOR bump.
|
|
160
|
+
3. Nexus cascades into web surface components.
|
|
161
|
+
4. All three sign off on the migration guide before ship.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## 8. What goes in Nexus KBs vs Atlas KBs
|
|
166
|
+
|
|
167
|
+
To avoid duplication going forward:
|
|
168
|
+
|
|
169
|
+
**Nexus (squad-design) KBs cover:**
|
|
170
|
+
- Single-surface token architecture (L1/L2/L3 — `design-token-architecture.md`)
|
|
171
|
+
- Component → token bindings
|
|
172
|
+
- Web-surface token export pipelines (CSS variables, Tailwind, Figma Variables sync)
|
|
173
|
+
- Design-to-code pipeline on web
|
|
174
|
+
- Component library patterns
|
|
175
|
+
|
|
176
|
+
**Atlas (squad-artdir) KBs cover:**
|
|
177
|
+
- Multi-surface canon
|
|
178
|
+
- Surface dialects (email, PDF, mobile)
|
|
179
|
+
- Semver and versioning strategy
|
|
180
|
+
- Drift audits
|
|
181
|
+
- Migration guides
|
|
182
|
+
- Cross-surface enforcement automation
|
|
183
|
+
|
|
184
|
+
**This KB (cross-surface-token-canon.md)** is the only doc that sits on the boundary and is co-authored / co-owned. If its content changes, both Nexus and Atlas orchestrators must agree.
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## 9. Anti-patterns (forbidden)
|
|
189
|
+
|
|
190
|
+
- **Nexus unilaterally defining an "email variant"** of a component → email is Atlas territory, request a dialect.
|
|
191
|
+
- **Atlas designing component APIs** → component APIs are Nexus territory on web surfaces.
|
|
192
|
+
- **Any agent hard-coding a hex value inside a component file** → always bind through the token tree.
|
|
193
|
+
- **Skipping semver because "it's just a small value tweak"** → immutable-class values need MAJOR, always.
|
|
194
|
+
- **Creating a new surface-local token when a semantic already covers the intent** → surface-local should be rare and justified.
|
|
195
|
+
- **Copy-pasting tokens across surfaces instead of going through the dialect** → defeats the single source of truth.
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## 10. Reference index
|
|
200
|
+
|
|
201
|
+
- `design-token-architecture.md` — L1/L2/L3 taxonomy (this squad)
|
|
202
|
+
- `design-to-code-pipeline.md` — how Nexus exports tokens to web (this squad)
|
|
203
|
+
- `squads/squad-artdir/agents/design-system-architect.md` — Atlas persona
|
|
204
|
+
- `squads/squad-artdir/knowledge-base/` — Atlas's full KB set (multi-surface, dialects, drift audits)
|
|
205
|
+
- `squads/squad-brand/knowledge-base/` — Meridian's upstream brand canon
|
|
206
|
+
|
|
207
|
+
## Change log
|
|
208
|
+
|
|
209
|
+
- **2026-04-12 (v1.0)** — Created as part of squad-design v2.0.0 / fw-v2.2. Establishes the Nexus ↔ Atlas boundary, the ownership diff matrix, the immutable-vs-adapted token classes, and the semver handoff contract.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: squad-design
|
|
2
|
-
version: "
|
|
2
|
+
version: "2.0.0"
|
|
3
3
|
slashPrefix: SINAPSE
|
|
4
4
|
author: Caio Imori
|
|
5
5
|
license: UNLICENSED
|
|
@@ -11,17 +11,32 @@ description: >
|
|
|
11
11
|
|
|
12
12
|
metadata:
|
|
13
13
|
created: "2026-03-12"
|
|
14
|
+
last_updated: "2026-04-12"
|
|
14
15
|
author: "Sinapse"
|
|
15
16
|
tier: 2
|
|
16
|
-
total_files:
|
|
17
|
-
agents:
|
|
17
|
+
total_files: 152
|
|
18
|
+
agents: 15
|
|
18
19
|
tasks: 101
|
|
19
20
|
workflows: 6
|
|
20
|
-
knowledge_bases:
|
|
21
|
+
knowledge_bases: 19
|
|
21
22
|
checklists: 3
|
|
22
23
|
templates: 7
|
|
23
24
|
preferences: 1
|
|
24
25
|
|
|
26
|
+
changelog:
|
|
27
|
+
- version: "2.0.0"
|
|
28
|
+
date: "2026-04-12"
|
|
29
|
+
story: fw-v2.2
|
|
30
|
+
epic: EPIC-framework-upgrade-v2
|
|
31
|
+
highlights:
|
|
32
|
+
- "Shipped cross-surface-token-canon.md KB — canonical contract between Nexus (squad-design) and Atlas (squad-artdir) covering token tiers, surface dialects, ownership diff matrix, immutable vs surface-adapted classes, and semver handoff protocol."
|
|
33
|
+
- "Reconciled squad.yaml counts to disk reality (agents 8->15, knowledge_bases 13->19, total_files 140->152) — prior drift was from 7 dx-* specialists + nano-banana-generator + 6 new KBs added during the epoch between v1.0 and v2.0."
|
|
34
|
+
- "Explicitly deferred to follow-up story: full dx-* persona refinement pass (AC2 of fw-v2.2) and design-to-code-pipeline.md deep refresh (AC4 of fw-v2.2) — scope-cut per epic guidance 'qualidade > quantidade'."
|
|
35
|
+
breaking_changes: []
|
|
36
|
+
deferred_to_follow_up:
|
|
37
|
+
- "AC2 — 6 dx-* agent persona refinement pass (Operating Principles + Refuses To sections + archetype clarification)"
|
|
38
|
+
- "AC4 — design-to-code-pipeline.md full refresh (current version still valid)"
|
|
39
|
+
|
|
25
40
|
quality_standards:
|
|
26
41
|
reference_authors:
|
|
27
42
|
- Don Norman (design of everyday things, affordances, mental models)
|