@3fn/core 13.0.0 → 14.0.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/.kiro/agents/ada-prompt.md +80 -132
- package/.kiro/agents/ada-prompt.md.attribution.json +45 -0
- package/.kiro/agents/ada.json +44 -59
- package/.kiro/agents/ada.json.attribution.json +13 -0
- package/.kiro/agents/data-prompt.md +83 -74
- package/.kiro/agents/data-prompt.md.attribution.json +53 -0
- package/.kiro/agents/data.json +31 -38
- package/.kiro/agents/data.json.attribution.json +13 -0
- package/.kiro/agents/kenya-prompt.md +83 -72
- package/.kiro/agents/kenya-prompt.md.attribution.json +53 -0
- package/.kiro/agents/kenya.json +27 -35
- package/.kiro/agents/kenya.json.attribution.json +13 -0
- package/.kiro/agents/leonardo-prompt.md +176 -234
- package/.kiro/agents/leonardo-prompt.md.attribution.json +45 -0
- package/.kiro/agents/leonardo.json +28 -36
- package/.kiro/agents/leonardo.json.attribution.json +13 -0
- package/.kiro/agents/lina-prompt.md +110 -151
- package/.kiro/agents/lina-prompt.md.attribution.json +53 -0
- package/.kiro/agents/lina.json +46 -59
- package/.kiro/agents/lina.json.attribution.json +13 -0
- package/.kiro/agents/sparky-prompt.md +89 -72
- package/.kiro/agents/sparky-prompt.md.attribution.json +53 -0
- package/.kiro/agents/sparky.json +37 -37
- package/.kiro/agents/sparky.json.attribution.json +13 -0
- package/.kiro/agents/stacy-prompt.md +74 -48
- package/.kiro/agents/stacy-prompt.md.attribution.json +45 -0
- package/.kiro/agents/stacy.json +28 -30
- package/.kiro/agents/stacy.json.attribution.json +13 -0
- package/.kiro/agents/thurgood-prompt.md +94 -138
- package/.kiro/agents/thurgood-prompt.md.attribution.json +45 -0
- package/.kiro/agents/thurgood.json +31 -35
- package/.kiro/agents/thurgood.json.attribution.json +13 -0
- package/.kiro/steering/AI-Collaboration-Principles.md +3 -3
- package/.kiro/steering/Civitas-System-Overview.md +5 -5
- package/.kiro/steering/DesignerPunk-Systems-Overview.md +6 -6
- package/.kiro/steering/Task-Completion-Protocol.md +98 -17
- package/.kiro/steering/core-goals.md +3 -3
- package/.kiro/steering/personal-note.md +1 -1
- package/.kiro/steering/start-up-tasks.md +14 -3
- package/application-mcp-server/src/index.ts +26 -0
- package/dist/ComponentTokens.android.kt +1 -1
- package/dist/ComponentTokens.ios.swift +1 -1
- package/dist/ComponentTokens.web.css +1 -1
- package/dist/DesignTokens.android.kt +1 -1
- package/dist/DesignTokens.dtcg.json +8 -5
- package/dist/DesignTokens.figma.json +2 -2
- package/dist/DesignTokens.ios.swift +1 -1
- package/dist/DesignTokens.web.css +1 -1
- package/dist/android/DesignTokens.android.kt +1 -1
- package/dist/blend/OklchBlendCalculator.js +1 -0
- package/dist/blend/ThemeAwareBlendUtilities.web.d.ts +13 -2
- package/dist/blend/ThemeAwareBlendUtilities.web.js +6 -1
- package/dist/browser/designerpunk.esm.js +22 -81
- package/dist/browser/designerpunk.esm.min.js +29 -32
- package/dist/browser/designerpunk.umd.js +22 -81
- package/dist/browser/designerpunk.umd.min.js +42 -45
- package/dist/browser/tokens.css +1 -1
- package/dist/components/core/Avatar-Base/platforms/web/Avatar.web.js +24 -5
- package/dist/components/core/Button-CTA/examples/BasicUsage.d.ts +16 -28
- package/dist/components/core/Button-CTA/examples/BasicUsage.js +18 -43
- package/dist/components/core/Button-CTA/platforms/web/ButtonCTA.web.d.ts +3 -15
- package/dist/components/core/Button-CTA/platforms/web/ButtonCTA.web.js +9 -58
- package/dist/components/core/Button-CTA/types.d.ts +0 -24
- package/dist/components/core/Button-CTA/types.js +6 -0
- package/dist/components/core/Input-Text-Base/types.d.ts +13 -1
- package/dist/components/core/Input-Text-Password/platforms/web/InputTextPassword.web.js +11 -2
- package/dist/generators/DTCGFormatGenerator.js +8 -0
- package/dist/integration/BuildErrorHandler.js +2 -2
- package/dist/ios/DesignTokens.ios.swift +1 -1
- package/dist/mcp/application-mcp.js +24 -0
- package/dist/mcp/docs-mcp.js +130 -15
- package/dist/mcp/product-mcp.js +25 -0
- package/dist/tokens/OpacityTokens.js +1 -1
- package/dist/tokens/semantic/BlendTokens.d.ts +10 -3
- package/dist/tokens/semantic/BlendTokens.js +17 -5
- package/dist/tokens/semantic/OpacityTokens.d.ts +4 -4
- package/dist/tokens/semantic/OpacityTokens.js +4 -4
- package/dist/types/ComponentTypes.d.ts +1 -1
- package/dist/types/generated/TokenTypes.d.ts +1 -1
- package/dist/types/generated/TokenTypes.js +1 -1
- package/dist/validators/StemmaTokenUsageValidator.js +3 -2
- package/dist/web/DesignTokens.web.css +1 -1
- package/governance/Component-Development-Guide.md +22 -12
- package/governance/Component-Development-Standards.md +2 -2
- package/governance/Component-Family-Avatar.md +0 -1
- package/governance/Component-Family-Badge.md +0 -1
- package/governance/Component-Family-Button.md +4 -17
- package/governance/Component-Family-Chip.md +0 -1
- package/governance/Component-Family-Container.md +0 -1
- package/governance/Component-Family-Data-Display.md +1 -2
- package/governance/Component-Family-Divider.md +1 -2
- package/governance/Component-Family-Form-Inputs.md +5 -5
- package/governance/Component-Family-Icon.md +1 -2
- package/governance/Component-Family-Loading.md +1 -2
- package/governance/Component-Family-Modal.md +1 -2
- package/governance/Component-Family-Navigation.md +0 -1
- package/governance/Component-Family-Progress.md +0 -1
- package/governance/Component-Inheritance-Structures.md +195 -76
- package/governance/Component-MCP-Document-Template.md +6 -5
- package/governance/Component-Primitive-vs-Semantic-Philosophy.md +1 -1
- package/governance/Component-Quick-Reference.md +33 -33
- package/governance/Component-Readiness-Status.md +54 -38
- package/governance/Component-Templates.md +32 -36
- package/governance/Contract-System-Reference.md +6 -6
- package/governance/MCP-Integration-Guide.md +1 -1
- package/governance/Process-Cross-Reference-Standards.md +31 -13
- package/governance/Process-Development-Workflow.md +49 -59
- package/governance/Process-File-Organization.md +24 -24
- package/governance/Process-Hook-Operations.md +19 -7
- package/governance/Process-Orchestration-Model-Selection.md +92 -0
- package/governance/Process-Spec-Planning.md +91 -39
- package/governance/Process-Task-Type-Definitions.md +80 -4
- package/governance/Product-Handoff-Protocol.md +2 -0
- package/governance/Rosetta-System-Architecture.md +6 -6
- package/governance/Test-Behavioral-Contract-Validation.md +38 -31
- package/governance/Test-Failure-Audit-Methodology.md +1 -1
- package/governance/Token-Family-Accessibility.md +1 -2
- package/governance/Token-Family-Blend.md +18 -16
- package/governance/Token-Family-Blur.md +0 -1
- package/governance/Token-Family-Border.md +1 -2
- package/governance/Token-Family-Color.md +0 -1
- package/governance/Token-Family-Glow.md +1 -2
- package/governance/Token-Family-Layering.md +0 -1
- package/governance/Token-Family-Motion.md +1 -2
- package/governance/Token-Family-Opacity.md +0 -1
- package/governance/Token-Family-Radius.md +1 -2
- package/governance/Token-Family-Responsive.md +1 -2
- package/governance/Token-Family-Shadow.md +1 -2
- package/governance/Token-Family-Sizing.md +0 -1
- package/governance/Token-Family-Spacing.md +1 -2
- package/governance/Token-Family-Typography.md +1 -2
- package/governance/Token-Governance.md +8 -8
- package/governance/Token-Quick-Reference.md +21 -21
- package/governance/Token-Resolution-Patterns.md +1 -1
- package/governance/Token-Semantic-Structure.md +1 -1
- package/governance/Web-Authoring-Standards.md +5 -5
- package/governance/browser-distribution-guide.md +1 -4
- package/governance/classification-map.md +368 -0
- package/governance/completion-documentation-guide.md +11 -8
- package/governance/component-meta-authoring-guide.md +1 -1
- package/governance/cross-platform-vs-platform-specific-decision-framework.md +1 -1
- package/governance/platform-implementation-guidelines.md +1 -1
- package/governance/release-management-system.md +2 -2
- package/governance/rosetta-system-principles.md +8 -6
- package/governance/stemma-system-principles.md +18 -17
- package/mcp-server/src/index.ts +24 -6
- package/mcp-server/src/indexer/DocumentIndexer.ts +119 -9
- package/mcp-server/src/indexer/__tests__/bare-id-crossrefs.test.ts +250 -0
- package/mcp-server/src/indexer/cross-ref-parser.ts +29 -1
- package/mcp-server/src/indexer/index-health.ts +27 -2
- package/mcp-server/src/query/__tests__/find-docs-calibration.test.ts +11 -26
- package/mcp-server/src/relocation-integrity-gate/__tests__/relocation-integrity-gate.test.ts +72 -5
- package/mcp-server/src/relocation-integrity-gate/relocation-integrity-gate.ts +81 -24
- package/mcp-server/src/tools/list-cross-references.ts +2 -2
- package/package.json +23 -21
- package/src/__tests__/browser-distribution/css-bundling.test.ts +6 -4
- package/src/__tests__/console-allowlist.json +14 -0
- package/src/__tests__/console-fail-setup.ts +169 -0
- package/src/__tests__/integration/Spec107-DesignLanguageContext.test.ts +16 -0
- package/src/__tests__/stemma-system/behavioral-contract-validation.test.ts +70 -17
- package/src/__tests__/stemma-system/contract-catalog-name-validation.test.ts +28 -0
- package/src/__tests__/stemma-system/form-inputs-contracts.test.ts +223 -16
- package/src/__tests__/stemma-system/input-text-native-base-call-alignment.test.ts +298 -0
- package/src/blend/OklchBlendCalculator.ts +3 -0
- package/src/blend/ThemeAwareBlendUtilities.android.kt +3 -0
- package/src/blend/ThemeAwareBlendUtilities.ios.swift +3 -0
- package/src/blend/ThemeAwareBlendUtilities.web.ts +9 -1
- package/src/blend/__tests__/InteractionStateAudit.test.ts +12 -9
- package/src/build/errors/__tests__/ErrorHandler.integration.test.ts +8 -0
- package/src/build/errors/__tests__/ErrorHandler.test.ts +5 -0
- package/src/build/workflow/__tests__/CICDIntegration.test.ts +12 -1
- package/src/cli/__tests__/init.test.ts +45 -11
- package/src/components/core/Avatar-Base/Avatar-Base.schema.yaml +1 -1
- package/src/components/core/Avatar-Base/__tests__/Avatar.accessibility.test.ts +121 -7
- package/src/components/core/Avatar-Base/__tests__/Avatar.image.test.ts +3 -0
- package/src/components/core/Avatar-Base/__tests__/Avatar.test.ts +15 -6
- package/src/components/core/Avatar-Base/contracts.yaml +11 -1
- package/src/components/core/Avatar-Base/platforms/web/Avatar.web.ts +24 -5
- package/src/components/core/Badge-Count-Base/contracts.yaml +1 -1
- package/src/components/core/Badge-Label-Base/contracts.yaml +1 -1
- package/src/components/core/Button-CTA/Button-CTA.schema.yaml +2 -12
- package/src/components/core/Button-CTA/README.md +3 -6
- package/src/components/core/Button-CTA/__tests__/ButtonCTA.test.ts +35 -89
- package/src/components/core/Button-CTA/__tests__/setup.test.ts +0 -2
- package/src/components/core/Button-CTA/__tests__/test-utils.ts +0 -2
- package/src/components/core/Button-CTA/contracts.yaml +6 -29
- package/src/components/core/Button-CTA/examples/BasicUsage.html +2 -14
- package/src/components/core/Button-CTA/examples/BasicUsage.tsx +17 -44
- package/src/components/core/Button-CTA/platforms/android/ButtonCTA.android.kt +12 -20
- package/src/components/core/Button-CTA/platforms/ios/ButtonCTA.ios.swift +12 -51
- package/src/components/core/Button-CTA/platforms/web/ButtonCTA.web.css +2 -26
- package/src/components/core/Button-CTA/platforms/web/ButtonCTA.web.ts +18 -71
- package/src/components/core/Button-CTA/types.ts +10 -28
- package/src/components/core/Chip-Base/__tests__/ChipBase.test.ts +13 -0
- package/src/components/core/Chip-Filter/__tests__/ChipFilter.test.ts +13 -0
- package/src/components/core/Chip-Input/__tests__/ChipInput.test.ts +13 -0
- package/src/components/core/Input-Text-Base/Input-Text-Base.schema.yaml +30 -2
- package/src/components/core/Input-Text-Base/README.md +25 -2
- package/src/components/core/Input-Text-Base/__tests__/focusIndicators.test.ts +16 -15
- package/src/components/core/Input-Text-Base/contracts.yaml +90 -0
- package/src/components/core/Input-Text-Base/platforms/android/InputTextBase.android.kt +26 -12
- package/src/components/core/Input-Text-Base/platforms/ios/InputTextBase.ios.swift +195 -59
- package/src/components/core/Input-Text-Base/types.ts +13 -1
- package/src/components/core/Input-Text-Email/Input-Text-Email.schema.yaml +5 -1
- package/src/components/core/Input-Text-Email/README.md +8 -7
- package/src/components/core/Input-Text-Email/platforms/android/InputTextEmail.android.kt +1 -4
- package/src/components/core/Input-Text-Email/platforms/ios/InputTextEmail.ios.swift +2 -16
- package/src/components/core/Input-Text-Password/Input-Text-Password.schema.yaml +10 -3
- package/src/components/core/Input-Text-Password/README.md +9 -8
- package/src/components/core/Input-Text-Password/contracts.yaml +5 -0
- package/src/components/core/Input-Text-Password/platforms/android/InputTextPassword.android.kt +17 -7
- package/src/components/core/Input-Text-Password/platforms/ios/InputTextPassword.ios.swift +22 -20
- package/src/components/core/Input-Text-Password/platforms/web/InputTextPassword.web.ts +11 -2
- package/src/components/core/Input-Text-PhoneNumber/Input-Text-PhoneNumber.schema.yaml +5 -1
- package/src/components/core/Input-Text-PhoneNumber/README.md +9 -8
- package/src/components/core/Input-Text-PhoneNumber/platforms/android/InputTextPhoneNumber.android.kt +2 -5
- package/src/components/core/Input-Text-PhoneNumber/platforms/ios/InputTextPhoneNumber.ios.swift +3 -17
- package/src/components/core/Nav-Header-App/contracts.yaml +1 -1
- package/src/components/core/Nav-SegmentedChoice-Base/contracts.yaml +1 -1
- package/src/components/core/Progress-Indicator-Connector-Base/contracts.yaml +1 -1
- package/src/components/core/Progress-Indicator-Label-Base/contracts.yaml +1 -1
- package/src/components/core/Progress-Indicator-Node-Base/contracts.yaml +1 -1
- package/src/components/core/Progress-Stepper-Base/__tests__/StepperBase.test.ts +5 -2
- package/src/components/core/Progress-Stepper-Detailed/__tests__/StepperDetailed.test.ts +5 -2
- package/src/generators/DTCGFormatGenerator.ts +6 -0
- package/src/generators/__tests__/DTCGConfigOptions.test.ts +14 -5
- package/src/integration/BuildErrorHandler.ts +2 -2
- package/src/tokens/OpacityTokens.ts +1 -1
- package/src/tokens/__tests__/OpacityTokens.test.ts +3 -1
- package/src/tokens/semantic/BlendTokens.ts +26 -5
- package/src/tokens/semantic/OpacityTokens.ts +4 -4
- package/src/tools/release/__tests__/ReleasePipeline.test.ts +1 -1
- package/src/types/ComponentTypes.ts +1 -1
- package/src/types/generated/TokenTypes.ts +1 -1
- package/src/validators/StemmaTokenUsageValidator.ts +3 -2
- package/token-index/semantics.yaml +1 -2
|
@@ -69,7 +69,7 @@ Type primitives are specialized components within a family that provide opiniona
|
|
|
69
69
|
|
|
70
70
|
For detailed Container-Card-Base documentation including props mapping, interactive behavior, and usage examples:
|
|
71
71
|
```
|
|
72
|
-
get_section({ path: "
|
|
72
|
+
get_section({ path: "component-family-container", heading: "Container-Card-Base" })
|
|
73
73
|
```
|
|
74
74
|
|
|
75
75
|
## Naming Convention
|
|
@@ -156,22 +156,22 @@ Returns metadata and outline (~200 tokens) to understand document structure befo
|
|
|
156
156
|
|
|
157
157
|
```
|
|
158
158
|
// Understand Form Inputs family structure
|
|
159
|
-
get_document_summary({ path: "
|
|
159
|
+
get_document_summary({ path: "component-family-form-inputs" })
|
|
160
160
|
|
|
161
161
|
// Understand Button family structure
|
|
162
|
-
get_document_summary({ path: "
|
|
162
|
+
get_document_summary({ path: "component-family-button" })
|
|
163
163
|
|
|
164
164
|
// Understand Container family structure
|
|
165
|
-
get_document_summary({ path: "
|
|
165
|
+
get_document_summary({ path: "component-family-container" })
|
|
166
166
|
|
|
167
167
|
// Understand Icon family structure
|
|
168
|
-
get_document_summary({ path: "
|
|
168
|
+
get_document_summary({ path: "component-family-icon" })
|
|
169
169
|
|
|
170
170
|
// Understand Chip family structure
|
|
171
|
-
get_document_summary({ path: "
|
|
171
|
+
get_document_summary({ path: "component-family-chip" })
|
|
172
172
|
|
|
173
173
|
// Get Container-Card-Base type primitive details
|
|
174
|
-
get_section({ path: "
|
|
174
|
+
get_section({ path: "component-family-container", heading: "Container-Card-Base" })
|
|
175
175
|
```
|
|
176
176
|
|
|
177
177
|
**Returns**: Document metadata (purpose, layer, relevant tasks) plus section outline with headings.
|
|
@@ -182,37 +182,37 @@ Returns targeted content (~500-2,000 tokens) for specific information needs:
|
|
|
182
182
|
|
|
183
183
|
```
|
|
184
184
|
// Get component behavioral contracts
|
|
185
|
-
get_section({ path: "
|
|
185
|
+
get_section({ path: "component-family-form-inputs", heading: "Behavioral Contracts" })
|
|
186
186
|
|
|
187
187
|
// Get contract system conventions (taxonomy, naming, format)
|
|
188
|
-
get_section({ path: "
|
|
189
|
-
get_section({ path: "
|
|
190
|
-
get_section({ path: "
|
|
188
|
+
get_section({ path: "contract-system-reference", heading: "Taxonomy" })
|
|
189
|
+
get_section({ path: "contract-system-reference", heading: "Naming Convention" })
|
|
190
|
+
get_section({ path: "contract-system-reference", heading: "Canonical Format" })
|
|
191
191
|
|
|
192
192
|
// Get inheritance structure
|
|
193
|
-
get_section({ path: "
|
|
193
|
+
get_section({ path: "component-family-button", heading: "Inheritance Structure" })
|
|
194
194
|
|
|
195
195
|
// Get token dependencies
|
|
196
|
-
get_section({ path: "
|
|
196
|
+
get_section({ path: "component-family-container", heading: "Token Dependencies" })
|
|
197
197
|
|
|
198
198
|
// Get usage guidelines
|
|
199
|
-
get_section({ path: "
|
|
199
|
+
get_section({ path: "component-family-icon", heading: "Usage Guidelines" })
|
|
200
200
|
|
|
201
201
|
// Get Chip family behavioral contracts
|
|
202
|
-
get_section({ path: "
|
|
202
|
+
get_section({ path: "component-family-chip", heading: "Behavioral Contracts" })
|
|
203
203
|
|
|
204
204
|
// Get cross-platform notes
|
|
205
|
-
get_section({ path: "
|
|
205
|
+
get_section({ path: "component-family-form-inputs", heading: "Cross-Platform Notes" })
|
|
206
206
|
|
|
207
207
|
// Get radio component details
|
|
208
|
-
get_section({ path: "
|
|
209
|
-
get_section({ path: "
|
|
208
|
+
get_section({ path: "component-family-form-inputs", heading: "Input-Radio-Base" })
|
|
209
|
+
get_section({ path: "component-family-form-inputs", heading: "Input-Radio-Set" })
|
|
210
210
|
|
|
211
211
|
// Get component schema definitions
|
|
212
|
-
get_section({ path: "
|
|
212
|
+
get_section({ path: "component-family-button", heading: "Component Schemas" })
|
|
213
213
|
|
|
214
214
|
// Get placeholder family planned characteristics
|
|
215
|
-
get_section({ path: "
|
|
215
|
+
get_section({ path: "component-family-modal", heading: "Planned Characteristics" })
|
|
216
216
|
```
|
|
217
217
|
|
|
218
218
|
**Returns**: Section content with parent heading context for document location.
|
|
@@ -223,10 +223,10 @@ Returns complete content (~2,000-10,000 tokens) when comprehensive reference is
|
|
|
223
223
|
|
|
224
224
|
```
|
|
225
225
|
// Full Form Inputs family reference
|
|
226
|
-
get_document_full({ path: "
|
|
226
|
+
get_document_full({ path: "component-family-form-inputs" })
|
|
227
227
|
|
|
228
228
|
// Full Button family reference
|
|
229
|
-
get_document_full({ path: "
|
|
229
|
+
get_document_full({ path: "component-family-button" })
|
|
230
230
|
```
|
|
231
231
|
|
|
232
232
|
**Use sparingly**: Only when you need complete component family documentation.
|
|
@@ -241,10 +241,10 @@ find_docs({ concept: "form inputs" }) // discover by concept/keyword
|
|
|
241
241
|
find_docs({ list: true }) // full catalog, paginated
|
|
242
242
|
|
|
243
243
|
// List cross-references in a document
|
|
244
|
-
list_cross_references({ path: "
|
|
244
|
+
list_cross_references({ path: "component-family-form-inputs" })
|
|
245
245
|
|
|
246
246
|
// Validate document metadata schema
|
|
247
|
-
validate_metadata({ path: "
|
|
247
|
+
validate_metadata({ path: "component-family-button" })
|
|
248
248
|
|
|
249
249
|
// Check documentation index health
|
|
250
250
|
get_index_health()
|
|
@@ -270,30 +270,30 @@ rebuild_index()
|
|
|
270
270
|
**Example: Building a Login Form:**
|
|
271
271
|
```
|
|
272
272
|
// Step 1: Get Form Inputs overview
|
|
273
|
-
get_document_summary({ path: "
|
|
273
|
+
get_document_summary({ path: "component-family-form-inputs" })
|
|
274
274
|
|
|
275
275
|
// Step 2: Get specific component contracts
|
|
276
|
-
get_section({ path: "
|
|
277
|
-
get_section({ path: "
|
|
276
|
+
get_section({ path: "component-family-form-inputs", heading: "Input-Text-Email" })
|
|
277
|
+
get_section({ path: "component-family-form-inputs", heading: "Input-Text-Password" })
|
|
278
278
|
|
|
279
279
|
// Step 3: Get button for submit action
|
|
280
|
-
get_section({ path: "
|
|
280
|
+
get_section({ path: "component-family-button", heading: "Button-CTA" })
|
|
281
281
|
|
|
282
282
|
// Step 4: Get container for layout
|
|
283
|
-
get_section({ path: "
|
|
283
|
+
get_section({ path: "component-family-container", heading: "Container-Base" })
|
|
284
284
|
```
|
|
285
285
|
|
|
286
286
|
**Example: Building a Survey with Radio Groups:**
|
|
287
287
|
```
|
|
288
288
|
// Step 1: Get radio component details
|
|
289
|
-
get_section({ path: "
|
|
290
|
-
get_section({ path: "
|
|
289
|
+
get_section({ path: "component-family-form-inputs", heading: "Input-Radio-Base" })
|
|
290
|
+
get_section({ path: "component-family-form-inputs", heading: "Input-Radio-Set" })
|
|
291
291
|
|
|
292
292
|
// Step 2: Get container for section layout
|
|
293
|
-
get_section({ path: "
|
|
293
|
+
get_section({ path: "component-family-container", heading: "Container-Base" })
|
|
294
294
|
|
|
295
295
|
// Step 3: Get button for submit
|
|
296
|
-
get_section({ path: "
|
|
296
|
+
get_section({ path: "component-family-button", heading: "Button-CTA" })
|
|
297
297
|
```
|
|
298
298
|
|
|
299
299
|
## Related Documentation
|
|
@@ -13,7 +13,7 @@ description: Readiness status definitions, usage recommendations, and transition
|
|
|
13
13
|
**Scope**: cross-project
|
|
14
14
|
**Layer**: 2
|
|
15
15
|
**Relevant Tasks**: component-development, architecture, spec-planning
|
|
16
|
-
**Last Reviewed**: 2026-
|
|
16
|
+
**Last Reviewed**: 2026-07-09
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
@@ -520,7 +520,7 @@ metadata:
|
|
|
520
520
|
**Query component readiness**:
|
|
521
521
|
```
|
|
522
522
|
get_section({
|
|
523
|
-
path: "
|
|
523
|
+
path: "component-family-form-inputs",
|
|
524
524
|
heading: "Component Readiness"
|
|
525
525
|
})
|
|
526
526
|
```
|
|
@@ -544,54 +544,70 @@ get_section({
|
|
|
544
544
|
| Component Family | Shared Need/Purpose | Status | MCP Document Path |
|
|
545
545
|
|------------------|---------------------|--------|-------------------|
|
|
546
546
|
| Buttons | User interaction and actions | 🟢 | `.kiro/steering/Component-Family-Button.md` |
|
|
547
|
-
| Form Inputs | Data collection and validation |
|
|
548
|
-
| Containers | Layout and content organization |
|
|
549
|
-
| Icons | Visual communication |
|
|
547
|
+
| Form Inputs | Data collection and validation | 🟡 | `.kiro/steering/Component-Family-Form-Inputs.md` |
|
|
548
|
+
| Containers | Layout and content organization | 🟡 | `.kiro/steering/Component-Family-Container.md` |
|
|
549
|
+
| Icons | Visual communication | 🟡 | `.kiro/steering/Component-Family-Icon.md` |
|
|
550
|
+
| Avatars | Identity representation | 🟡 | `.kiro/steering/Component-Family-Avatar.md` |
|
|
551
|
+
| Badges & Tags | Status and labeling | 🟡 | `.kiro/steering/Component-Family-Badge.md` |
|
|
552
|
+
| Chips | Selection, filtering, and input tokens | 🟡 | `.kiro/steering/Component-Family-Chip.md` |
|
|
553
|
+
| Navigation | Wayfinding | 🟡 | `.kiro/steering/Component-Family-Navigation.md` |
|
|
554
|
+
| Progress Indicators | Progress and step indication | 🟡 | `.kiro/steering/Component-Family-Progress.md` |
|
|
550
555
|
| Modals | Overlay interactions | 🔴 | `.kiro/steering/Component-Family-Modal.md` |
|
|
551
|
-
| Avatars | Identity representation | 🔴 | `.kiro/steering/Component-Family-Avatar.md` |
|
|
552
|
-
| Badges & Tags | Status and labeling | 🔴 | `.kiro/steering/Component-Family-Badge.md` |
|
|
553
556
|
| Data Displays | Information presentation | 🔴 | `.kiro/steering/Component-Family-Data-Display.md` |
|
|
554
557
|
| Dividers | Visual separation | 🔴 | `.kiro/steering/Component-Family-Divider.md` |
|
|
555
558
|
| Loading | Progress indication | 🔴 | `.kiro/steering/Component-Family-Loading.md` |
|
|
556
|
-
| Navigation | Wayfinding | 🔴 | `.kiro/steering/Component-Family-Navigation.md` |
|
|
557
559
|
```
|
|
558
560
|
|
|
561
|
+
> **🟡 in this table = "shipping, web production-ready, iOS/Android scaffold"** — the family has usable web implementations but has not reached the strict all-platform 🟢 bar. Per-component per-platform detail is in the Individual Component Status table below. Buttons is 🟢 only because it contains all-platform-production components (Button-VerticalList-Item/Set); its CTA/Icon members are themselves web-ready/mobile-scaffold. 🔴 families are genuine placeholders (no components ship).
|
|
562
|
+
|
|
559
563
|
---
|
|
560
564
|
|
|
561
565
|
## Individual Component Status
|
|
562
566
|
|
|
563
567
|
This section lists all implemented components with their readiness status and implementation paths. Used by extraction workflows to check component existence and status.
|
|
564
568
|
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
|
572
|
-
|
|
573
|
-
|
|
|
574
|
-
|
|
|
575
|
-
|
|
|
576
|
-
|
|
|
577
|
-
|
|
|
578
|
-
|
|
|
579
|
-
|
|
|
580
|
-
|
|
|
581
|
-
|
|
|
582
|
-
|
|
|
583
|
-
|
|
|
584
|
-
|
|
|
585
|
-
|
|
|
586
|
-
|
|
|
587
|
-
|
|
|
588
|
-
|
|
|
589
|
-
|
|
|
590
|
-
|
|
|
591
|
-
|
|
|
592
|
-
|
|
|
593
|
-
|
|
|
594
|
-
|
|
|
569
|
+
**Per-platform status convention**: readiness is tracked per platform (web / iOS / Android). The **Status** column carries a single roll-up indicator; the **Platform Readiness** column shows the honest per-platform breakdown so no component's mobile immaturity is hidden behind a green light.
|
|
570
|
+
|
|
571
|
+
- 🟢 **Production Ready** — production-ready across ALL declared platforms (web, iOS, Android), per the strict definition above. Currently only Button-VerticalList-Item and Button-VerticalList-Set meet this bar.
|
|
572
|
+
- 🟡 **Web-ready, mobile-scaffold** — web is production-ready (implemented, tested, documented) but iOS and Android are scaffold (structure present, not test-covered). Safe to consume on web; treat mobile as not-yet-ready.
|
|
573
|
+
- 🟡 **Scaffold (all platforms)** — structure present on all platforms but none production-ready; intentional for permissive/internal primitives (noted inline).
|
|
574
|
+
|
|
575
|
+
| Component | Family | Status | Platform Readiness (web / iOS / Android) | Implementation Path |
|
|
576
|
+
|-----------|--------|--------|------------------------------------------|---------------------|
|
|
577
|
+
| Avatar-Base | Avatar | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Avatar-Base/` |
|
|
578
|
+
| Badge-Count-Base | Badge | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Badge-Count-Base/` |
|
|
579
|
+
| Badge-Count-Notification | Badge | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Badge-Count-Notification/` |
|
|
580
|
+
| Badge-Label-Base | Badge | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Badge-Label-Base/` |
|
|
581
|
+
| Button-CTA | Button | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Button-CTA/` |
|
|
582
|
+
| Button-Icon | Button | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Button-Icon/` |
|
|
583
|
+
| Button-VerticalList-Item | Button | 🟢 | 🟢 / 🟢 / 🟢 | `src/components/core/Button-VerticalList-Item/` |
|
|
584
|
+
| Button-VerticalList-Set | Button | 🟢 | 🟢 / 🟢 / 🟢 | `src/components/core/Button-VerticalList-Set/` |
|
|
585
|
+
| Chip-Base | Chip | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Chip-Base/` |
|
|
586
|
+
| Chip-Filter | Chip | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Chip-Filter/` |
|
|
587
|
+
| Chip-Input | Chip | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Chip-Input/` |
|
|
588
|
+
| Container-Base | Container | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Container-Base/` |
|
|
589
|
+
| Container-Card-Base | Container | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Container-Card-Base/` |
|
|
590
|
+
| Icon-Base | Icon | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Icon-Base/` |
|
|
591
|
+
| Input-Checkbox-Base | Form Inputs | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Input-Checkbox-Base/` |
|
|
592
|
+
| Input-Checkbox-Legal | Form Inputs | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Input-Checkbox-Legal/` |
|
|
593
|
+
| Input-Radio-Base | Form Inputs | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Input-Radio-Base/` |
|
|
594
|
+
| Input-Radio-Set | Form Inputs | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Input-Radio-Set/` |
|
|
595
|
+
| Input-Text-Base | Form Inputs | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Input-Text-Base/` |
|
|
596
|
+
| Input-Text-Email | Form Inputs | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Input-Text-Email/` |
|
|
597
|
+
| Input-Text-Password | Form Inputs | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Input-Text-Password/` |
|
|
598
|
+
| Input-Text-PhoneNumber | Form Inputs | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Input-Text-PhoneNumber/` |
|
|
599
|
+
| Nav-Header-Page | Navigation | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Nav-Header-Page/` |
|
|
600
|
+
| Nav-SegmentedChoice-Base | Navigation | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Nav-SegmentedChoice-Base/` |
|
|
601
|
+
| Nav-TabBar-Base | Navigation | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Nav-TabBar-Base/` |
|
|
602
|
+
| Nav-Header-App | Navigation | 🟡 | scaffold / scaffold / scaffold — permissive scaffold by design | `src/components/core/Nav-Header-App/` |
|
|
603
|
+
| Nav-Header-Base | Navigation | 🟡 | scaffold / scaffold / scaffold — internal-only primitive | `src/components/core/Nav-Header-Base/` |
|
|
604
|
+
| Progress-Bar-Base | Progress Indicators | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Progress-Bar-Base/` |
|
|
605
|
+
| Progress-Indicator-Node-Base | Progress Indicators | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Progress-Indicator-Node-Base/` |
|
|
606
|
+
| Progress-Pagination-Base | Progress Indicators | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Progress-Pagination-Base/` |
|
|
607
|
+
| Progress-Stepper-Base | Progress Indicators | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Progress-Stepper-Base/` |
|
|
608
|
+
| Progress-Stepper-Detailed | Progress Indicators | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Progress-Stepper-Detailed/` |
|
|
609
|
+
| Progress-Indicator-Connector-Base | Progress Indicators | 🟡 | scaffold / scaffold / scaffold | `src/components/core/Progress-Indicator-Connector-Base/` |
|
|
610
|
+
| Progress-Indicator-Label-Base | Progress Indicators | 🟡 | scaffold / scaffold / scaffold | `src/components/core/Progress-Indicator-Label-Base/` |
|
|
595
611
|
|
|
596
612
|
**Usage:**
|
|
597
613
|
|
|
@@ -12,7 +12,7 @@ aliases: how do i scaffold a new component, scaffold a new component template, n
|
|
|
12
12
|
**Scope**: cross-project
|
|
13
13
|
**Layer**: 2
|
|
14
14
|
**Relevant Tasks**: component-development, architecture, spec-planning
|
|
15
|
-
**Last Reviewed**: 2026-
|
|
15
|
+
**Last Reviewed**: 2026-07-15
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
@@ -412,14 +412,6 @@ properties:
|
|
|
412
412
|
- secondary: [description]
|
|
413
413
|
- tertiary: [description]
|
|
414
414
|
|
|
415
|
-
# State properties
|
|
416
|
-
disabled:
|
|
417
|
-
type: boolean
|
|
418
|
-
required: false
|
|
419
|
-
default: false
|
|
420
|
-
description: |
|
|
421
|
-
When true, component is non-interactive with disabled visual styling.
|
|
422
|
-
|
|
423
415
|
# Callback properties
|
|
424
416
|
[callbackProp]:
|
|
425
417
|
type: "() => void"
|
|
@@ -709,14 +701,12 @@ focusable:
|
|
|
709
701
|
behavior: |
|
|
710
702
|
Component can receive focus via Tab key navigation.
|
|
711
703
|
Focus state is visually indicated with a focus ring.
|
|
712
|
-
Focus is managed appropriately when disabled state changes.
|
|
713
704
|
wcag: "2.1.1 Keyboard, 2.4.7 Focus Visible"
|
|
714
705
|
platforms: [web, ios, android]
|
|
715
706
|
validation: |
|
|
716
707
|
- Tab key moves focus to component
|
|
717
708
|
- Focus state is visually distinct with focus ring
|
|
718
709
|
- Focus ring meets 3:1 contrast ratio
|
|
719
|
-
- Disabled components are not focusable
|
|
720
710
|
```
|
|
721
711
|
|
|
722
712
|
#### Pressable Contract
|
|
@@ -726,7 +716,7 @@ pressable:
|
|
|
726
716
|
description: Responds to press/click events
|
|
727
717
|
behavior: |
|
|
728
718
|
Component responds to click, tap, Enter key, and Space key.
|
|
729
|
-
Press triggers the callback
|
|
719
|
+
Press triggers the callback.
|
|
730
720
|
Platform-appropriate feedback is provided during press.
|
|
731
721
|
wcag: "2.1.1 Keyboard"
|
|
732
722
|
platforms: [web, ios, android]
|
|
@@ -734,7 +724,6 @@ pressable:
|
|
|
734
724
|
- Click/tap triggers callback
|
|
735
725
|
- Enter key triggers callback
|
|
736
726
|
- Space key triggers callback
|
|
737
|
-
- Callback not called when disabled
|
|
738
727
|
```
|
|
739
728
|
|
|
740
729
|
#### Hoverable Contract
|
|
@@ -745,14 +734,12 @@ hoverable:
|
|
|
745
734
|
behavior: |
|
|
746
735
|
On pointer devices, component shows visual feedback when mouse
|
|
747
736
|
hovers over the component. Uses blend.hoverDarker token.
|
|
748
|
-
Hover state not shown when disabled.
|
|
749
737
|
wcag: "1.4.13 Content on Hover or Focus"
|
|
750
738
|
platforms: [web, ios, android]
|
|
751
739
|
validation: |
|
|
752
740
|
- Visual feedback shown on mouse enter
|
|
753
741
|
- Visual feedback removed on mouse leave
|
|
754
742
|
- Hover uses blend.hoverDarker token
|
|
755
|
-
- Hover state not shown when disabled
|
|
756
743
|
- iOS: Only on macOS/iPadOS with pointer
|
|
757
744
|
- Android: Only on desktop/ChromeOS with pointer
|
|
758
745
|
```
|
|
@@ -761,28 +748,38 @@ hoverable:
|
|
|
761
748
|
|
|
762
749
|
### Contract Category 2: State Contracts
|
|
763
750
|
|
|
764
|
-
#### Disabled
|
|
751
|
+
#### No Disabled States — Standardized Exclusion
|
|
752
|
+
|
|
753
|
+
**DesignerPunk components MUST NOT declare a disabled-state contract.** Per the
|
|
754
|
+
2026-07-15 adjudication (`.kiro/issues/button-cta-disabled-state-adjudication.md`),
|
|
755
|
+
the no-disabled-states philosophy now holds corpus-wide with zero exceptions —
|
|
756
|
+
Button-CTA was the last remaining component with a live `disabled_state`
|
|
757
|
+
contract, and it has been removed in favor of the standardized exclusion below.
|
|
758
|
+
|
|
759
|
+
If an action is temporarily unavailable, use one of these alternatives instead:
|
|
760
|
+
|
|
761
|
+
- **`state_loading`** — the action is in-flight (async operation running).
|
|
762
|
+
- **Validate-on-press / validate-on-blur** — the action is available but the
|
|
763
|
+
current input is invalid; surface the error rather than disabling the trigger.
|
|
764
|
+
- **Do not render the component** — if an action is genuinely unavailable
|
|
765
|
+
(no valid path forward), omit the component entirely rather than rendering
|
|
766
|
+
it in a disabled state.
|
|
767
|
+
|
|
768
|
+
Every component's `contracts.yaml` MUST carry the standardized exclusion block
|
|
769
|
+
(mirrored corpus-wide, e.g. `src/components/core/Button-CTA/contracts.yaml`):
|
|
765
770
|
|
|
766
771
|
```yaml
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
- Cannot receive focus
|
|
772
|
-
- Cannot be interacted with
|
|
773
|
-
- Uses desaturated colors (blend.disabledDesaturate)
|
|
774
|
-
- Shows cursor: not-allowed (web)
|
|
775
|
-
- Communicates disabled state to assistive technology
|
|
776
|
-
wcag: "4.1.2 Name, Role, Value"
|
|
777
|
-
platforms: [web, ios, android]
|
|
778
|
-
validation: |
|
|
779
|
-
- Component cannot receive focus when disabled
|
|
780
|
-
- Interactions do not trigger callbacks when disabled
|
|
781
|
-
- Visual styling indicates disabled state
|
|
782
|
-
- aria-disabled="true" set (web)
|
|
783
|
-
- Disabled state announced to screen readers
|
|
772
|
+
excludes:
|
|
773
|
+
state_disabled:
|
|
774
|
+
reason: "DesignerPunk does not support disabled states for usability and accessibility reasons. If an action is unavailable, the component should not be rendered."
|
|
775
|
+
category: state
|
|
784
776
|
```
|
|
785
777
|
|
|
778
|
+
Do not scaffold a `disabled` prop, a `disabled_state` contract, or any
|
|
779
|
+
disabled-specific validation steps in new components. For the full rationale,
|
|
780
|
+
see the exclusion reason above and the 2026-07-15 adjudication ruling
|
|
781
|
+
(`.kiro/issues/button-cta-disabled-state-adjudication.md`).
|
|
782
|
+
|
|
786
783
|
#### Error State Contract
|
|
787
784
|
|
|
788
785
|
```yaml
|
|
@@ -830,7 +827,7 @@ loading_state:
|
|
|
830
827
|
behavior: |
|
|
831
828
|
When in loading state, component:
|
|
832
829
|
- Shows loading spinner or indicator
|
|
833
|
-
- Prevents interaction
|
|
830
|
+
- Prevents interaction while the async operation is in-flight
|
|
834
831
|
- Maintains dimensions to prevent layout shift
|
|
835
832
|
- Communicates loading state to assistive technology
|
|
836
833
|
wcag: "4.1.3 Status Messages"
|
|
@@ -947,7 +944,6 @@ pressed_state:
|
|
|
947
944
|
- Visual feedback shown during press
|
|
948
945
|
- Feedback uses blend.pressedDarker token
|
|
949
946
|
- Platform-appropriate animation/effect applied
|
|
950
|
-
- Pressed state not shown when disabled
|
|
951
947
|
```
|
|
952
948
|
|
|
953
949
|
#### Gradient Glow Contract
|
|
@@ -1084,7 +1080,7 @@ renders_svg:
|
|
|
1084
1080
|
| Keyboard navigation | focusable, focus_ring |
|
|
1085
1081
|
| Click/tap interaction | pressable, pressed_state |
|
|
1086
1082
|
| Mouse hover feedback | hoverable |
|
|
1087
|
-
|
|
|
1083
|
+
| Action temporarily unavailable | state_loading (in-flight), validates_on_blur (invalid input), or do not render (no valid path) — never a disabled-state contract; see "No Disabled States — Standardized Exclusion" |
|
|
1088
1084
|
| Error handling | error_state, validates_on_blur |
|
|
1089
1085
|
| Success feedback | success_state |
|
|
1090
1086
|
| Loading indication | loading_state |
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
id: contract-system-reference
|
|
3
3
|
inclusion: manual
|
|
4
4
|
name: Contract-System-Reference
|
|
5
|
-
description: Uniform behavioral contract system reference — 10-category taxonomy with definitions, concept catalog with all
|
|
5
|
+
description: Uniform behavioral contract system reference — 10-category taxonomy with definitions, concept catalog with all 137 concepts, {category}_{concept} naming convention, canonical contracts.yaml format, exclusion format, inheritance and composition patterns, classification rules. Load when creating or modifying component contracts, auditing contract coverage, or building contract-consuming systems.
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Contract System Reference
|
|
@@ -46,9 +46,9 @@ This document is the authoritative reference for contract conventions. For the d
|
|
|
46
46
|
|
|
47
47
|
## Concept Catalog
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
137 concepts across 10 categories. Originally 116, derived from the 29 deployed contracts.yaml files in the Spec 078 audit; grown since through governed additions (`gradient_glow` ballot measure, Spec 088 Nav-Header concepts, Spec 090 Progress-Bar-Base concepts, `readonly` ballot measure 2026-07-15).
|
|
50
50
|
|
|
51
|
-
*Adjudicated 2026-07-03 (Lina):
|
|
51
|
+
*Adjudicated 2026-07-03 (Lina): 137 counted empirically from the per-category lists below (26+6+7+17+19+6+1+16+10+29), which are the enforced source of truth via `src/__tests__/stemma-system/contract-catalog-name-validation.test.ts`; the stale "117" figures dated from the last full-sweep update (gradient_glow, 2026-03-18), while only this section's rolling "Updated:" line had tracked subsequent additions to 136. state grew to 16 via the 2026-07-15 readonly ballot.*
|
|
52
52
|
|
|
53
53
|
### accessibility (26)
|
|
54
54
|
|
|
@@ -78,9 +78,9 @@ This document is the authoritative reference for contract conventions. For the d
|
|
|
78
78
|
|
|
79
79
|
`virtualization`
|
|
80
80
|
|
|
81
|
-
### state (
|
|
81
|
+
### state (16)
|
|
82
82
|
|
|
83
|
-
`binary_derivation` · `checked` · `connector_derivation` · `controlled` · `disabled` · `error` · `indeterminate` · `loading` · `mode_driven` · `priority_derivation` · `selected` · `selected_styling` · `styling` · `success` · `visual_driven`
|
|
83
|
+
`binary_derivation` · `checked` · `connector_derivation` · `controlled` · `disabled` · `error` · `indeterminate` · `loading` · `mode_driven` · `priority_derivation` · `readonly` · `selected` · `selected_styling` · `styling` · `success` · `visual_driven`
|
|
84
84
|
|
|
85
85
|
### validation (10)
|
|
86
86
|
|
|
@@ -110,7 +110,7 @@ All contract names follow `{category}_{concept}` in `snake_case`. No `supports_`
|
|
|
110
110
|
| Checkmark animation | `animation_checkmark` |
|
|
111
111
|
| Circular shape | `visual_circular_shape` |
|
|
112
112
|
|
|
113
|
-
The Concept Catalog above lists all
|
|
113
|
+
The Concept Catalog above lists all 137 concepts. For the historical migration mapping (113 source names → 104 canonical names, pre-Task 2.1), see `.kiro/specs/063-uniform-contract-system/findings/canonical-name-mapping.md`.
|
|
114
114
|
|
|
115
115
|
---
|
|
116
116
|
|
|
@@ -151,7 +151,7 @@ Both `find_docs` and keyworded `find_components` emit a three-layer confidence s
|
|
|
151
151
|
|
|
152
152
|
**Token exemption:** token tools perform structured predicate retrieval with no relevance ranking — the three-layer model does not apply. Trigger: if a token tool is introduced with open-ended intent input and ranked output, it inherits this model. Bright line: predicate filter → no tier; relevance ranking → tier required.
|
|
153
153
|
|
|
154
|
-
**119 Decision 4a cross-reference:** the agent-side certainty-calibration protocol that consumes a `partial` (propose best-fit + confidence + rationale → human go/no-go, with the proposal required to carry its own uncertainty) is captured in `.kiro/specs/119-
|
|
154
|
+
**119 Decision 4a cross-reference:** the agent-side certainty-calibration protocol that consumes a `partial` (propose best-fit + confidence + rationale → human go/no-go, with the proposal required to carry its own uncertainty) is captured in `.kiro/specs/119-agent-experience-architecture/design-outline.md` under Decision 4a. 121 emits the signal; 119 defines what the agent does with a `partial`.
|
|
155
155
|
|
|
156
156
|
---
|
|
157
157
|
|
|
@@ -8,7 +8,7 @@ description: Cross-reference standards for documentation — formatting rules, c
|
|
|
8
8
|
# Process-Cross-Reference-Standards
|
|
9
9
|
|
|
10
10
|
**Date**: 2026-01-03
|
|
11
|
-
**Last Reviewed**: 2026-
|
|
11
|
+
**Last Reviewed**: 2026-07-09
|
|
12
12
|
**Purpose**: Comprehensive guide for creating and maintaining cross-references in documentation
|
|
13
13
|
**Organization**: process-standard
|
|
14
14
|
**Scope**: cross-project
|
|
@@ -34,7 +34,7 @@ Cross-references MUST be used in the following documentation types:
|
|
|
34
34
|
- **Completion Documents**: Task completion documentation in `.kiro/specs/[spec-name]/completion/`
|
|
35
35
|
- **README Files**: Project and directory README files that provide navigation and context
|
|
36
36
|
- **Overview Documents**: Master documents that map components to their documentation (e.g., `docs/token-system-overview.md`)
|
|
37
|
-
- **Process Documentation**: Standards and methodology documents in `.kiro/steering/` and `docs/processes/`
|
|
37
|
+
- **Process Documentation**: Standards and methodology documents in the MCP-served governance corpus (`governance/`), the always-loaded identity docs (`.kiro/steering/`), and `docs/processes/`
|
|
38
38
|
|
|
39
39
|
**Rationale**: These are documentation artifacts where cross-references add value by helping readers discover related information and navigate between connected concepts.
|
|
40
40
|
|
|
@@ -113,11 +113,25 @@ export const TypographyTokens = {
|
|
|
113
113
|
|
|
114
114
|
## How to Format Cross-References
|
|
115
115
|
|
|
116
|
-
Cross-references should follow consistent formatting patterns to ensure clarity and maintainability.
|
|
116
|
+
Cross-references should follow consistent formatting patterns to ensure clarity and maintainability. **Which pattern applies depends on what you are linking to** — there are two reference classes:
|
|
117
|
+
|
|
118
|
+
### Two Reference Classes (pick by target)
|
|
119
|
+
|
|
120
|
+
| Target | How to reference | Example |
|
|
121
|
+
|--------|------------------|---------|
|
|
122
|
+
| **Governance corpus** — an MCP-served doc under `governance/` that carries an `id:` | **Bare-`id`** markdown link: `[Human Label](<doc-id>)` — the target's `id`, no path, no `.md`. Bare-id links are validated against the served index (Spec 119-B OB-1): a target that is not MCP-served will be dropped from cross-ref enumeration and flagged unresolved | `[Token Governance](token-governance)` |
|
|
123
|
+
| **The 9 identity docs** under `.kiro/steering/` — always-loaded, NEVER MCP-served (Spec 119-A: identity refs never take the MCP round-trip; they carry `id:` for the uniqueness guard, not for resolution) | **Relative path** markdown link, like other non-id-indexed repo files (amended 2026-08-02, Civitas health-check follow-up #4 — the prior bare-id clause implied MCP resolvability these docs deliberately do not have) | `[Core Goals](../.kiro/steering/core-goals.md)` |
|
|
124
|
+
| **Spec-local / repo-file** — spec artifacts (requirements/design/tasks/completion docs, spec guides), READMEs, and other repo files that are **not** `id`-indexed | **Relative path** markdown link (see "Relative Path Usage" below) | `[Design Decisions](../design.md#design-decisions)` |
|
|
125
|
+
|
|
126
|
+
**Why the split.** Spec 119-A gave every doc in the MCP-served corpus a stable, relocation-independent `id` and made bare-`id` the addressing form (226 intra-corpus refs migrated). An `id`-addressed link survives file moves because the `id` — not the path — is the address. Spec artifacts and loose repo files carry no `id`, so relative paths remain their correct form.
|
|
127
|
+
|
|
128
|
+
**The addressing grammar is owned elsewhere — do not re-derive it here.** The canonical source for the `id` form, the composite `docid#sectionid` section grammar, kebab-case filenames, and `aliases` is [Steering Addressing Conventions](steering-addressing-conventions). This document governs cross-reference *practice* (when to link, link-text quality, anti-patterns, maintenance); it defers the *grammar* to that doc so the two never drift.
|
|
129
|
+
|
|
130
|
+
> **Tooling caveat (119-B OB-1).** Bare-`id` cross-refs **resolve** correctly (resolver strategy-1), but the cross-reference *parser* still only enumerates `.md`-suffixed targets, so `list_cross_references` and the `crossReferences` map currently under-count bare-`id` links. Enumeration parity is deferred to 119-B OB-1. Until then, do not treat an empty `list_cross_references` result as proof a doc has no inbound links.
|
|
117
131
|
|
|
118
132
|
### Relative Path Usage
|
|
119
133
|
|
|
120
|
-
|
|
134
|
+
For **spec-local and repo-file references** (the second class above), use relative paths from the current document location. Relative paths ensure these links remain valid when viewed across different contexts. (For steering/governance-corpus targets, use the bare-`id` form instead — see the table above.)
|
|
121
135
|
|
|
122
136
|
**Pattern**: Use `../` to navigate up directories and `./` for same-directory references
|
|
123
137
|
|
|
@@ -483,7 +497,7 @@ where properties are separated by concern.
|
|
|
483
497
|
|
|
484
498
|
## Related Guides
|
|
485
499
|
|
|
486
|
-
- [Compositional Color Guide](https://github.com/3fn/
|
|
500
|
+
- [Compositional Color Guide](https://github.com/3fn/DesignerPunk/blob/main/.kiro/specs/typography-token-expansion/compositional-color-guide.md)
|
|
487
501
|
- [Strategic Flexibility Guide](/Users/peter/.kiro/specs/typography-token-expansion/strategic-flexibility-guide.md)
|
|
488
502
|
- [Inline Emphasis Guide](/.kiro/specs/typography-token-expansion/inline-emphasis-guide.md)
|
|
489
503
|
```
|
|
@@ -611,7 +625,7 @@ Strategic Flexibility Guide.
|
|
|
611
625
|
|
|
612
626
|
When files are moved during organization:
|
|
613
627
|
|
|
614
|
-
1. Update
|
|
628
|
+
1. **Bare-`id` references to steering/governance-corpus docs need no update** — the `id` is the address, so it survives the move (this move-resilience is the reason 119-A adopted `id`-addressing). Update the *relative-path* references (spec-local / repo-file links) to reflect new locations.
|
|
615
629
|
2. Verify bidirectional links remain consistent
|
|
616
630
|
3. Test navigation by clicking links in rendered markdown
|
|
617
631
|
4. Document any broken links and fix them immediately
|
|
@@ -621,10 +635,12 @@ When files are moved during organization:
|
|
|
621
635
|
Periodically validate cross-reference integrity:
|
|
622
636
|
|
|
623
637
|
- Verify all links resolve to existing documents
|
|
624
|
-
- Check that relative paths are correct from document location
|
|
638
|
+
- Check that relative paths are correct from document location (bare-`id` links resolve by `id`, not path, so there is no path to verify — confirm the `id` exists)
|
|
625
639
|
- Confirm section anchors exist in target documents
|
|
626
640
|
- Test navigation efficiency (related docs reachable in 2 clicks or less)
|
|
627
641
|
|
|
642
|
+
> **Caveat (119-B OB-1):** automated link-graph tooling built on `list_cross_references` currently under-counts bare-`id` links (the parser enumerates only `.md`-suffixed targets). Until OB-1 lands, supplement automated enumeration with a text search for bare-`id` targets when auditing a doc's inbound/outbound links.
|
|
643
|
+
|
|
628
644
|
### Navigation as Aid, Not Dependency
|
|
629
645
|
|
|
630
646
|
Cross-references should be navigation aids, not content dependencies:
|
|
@@ -654,12 +670,14 @@ Cross-references should be navigation aids, not content dependencies:
|
|
|
654
670
|
|
|
655
671
|
## Related Documentation
|
|
656
672
|
|
|
657
|
-
-
|
|
658
|
-
-
|
|
659
|
-
-
|
|
673
|
+
- [Steering Addressing Conventions](steering-addressing-conventions) - **Canonical** `id` / `docid#sectionid` grammar, filename and `aliases` conventions (this doc defers the grammar there)
|
|
674
|
+
- [Process File Organization](process-file-organization) - Metadata and directory structure
|
|
675
|
+
- [Completion Documentation Guide](completion-documentation-guide) - Completion doc cross-reference patterns
|
|
676
|
+
- [Process Development Workflow](process-development-workflow) - Task completion workflow
|
|
660
677
|
|
|
661
|
-
**MCP Queries
|
|
678
|
+
**MCP Queries** (bare-`id` in the `path` argument — the resolver addresses by `id`):
|
|
662
679
|
```
|
|
663
|
-
get_section({ path: "
|
|
664
|
-
|
|
680
|
+
get_section({ path: "steering-addressing-conventions", heading: "Convention 2: Composite `docid#sectionid` Addressing Grammar" })
|
|
681
|
+
get_section({ path: "process-file-organization", heading: "Required Metadata Fields" })
|
|
682
|
+
get_document_full({ path: "completion-documentation-guide" })
|
|
665
683
|
```
|