@design-intelligence/ghost 0.21.0 → 0.22.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.
Files changed (125) hide show
  1. package/README.md +47 -33
  2. package/dist/commands/fingerprint-commands.d.ts.map +1 -1
  3. package/dist/commands/fingerprint-commands.js +1 -6
  4. package/dist/commands/fingerprint-commands.js.map +1 -1
  5. package/dist/commands/gather-command.d.ts.map +1 -1
  6. package/dist/commands/gather-command.js +26 -30
  7. package/dist/commands/gather-command.js.map +1 -1
  8. package/dist/commands/init-command.d.ts.map +1 -1
  9. package/dist/commands/init-command.js +1 -6
  10. package/dist/commands/init-command.js.map +1 -1
  11. package/dist/commands/pull-command.d.ts.map +1 -1
  12. package/dist/commands/pull-command.js +12 -19
  13. package/dist/commands/pull-command.js.map +1 -1
  14. package/dist/commands/pulse-command.js +1 -10
  15. package/dist/commands/pulse-command.js.map +1 -1
  16. package/dist/ghost-core/catalog/assemble.d.ts +0 -4
  17. package/dist/ghost-core/catalog/assemble.d.ts.map +1 -1
  18. package/dist/ghost-core/catalog/assemble.js +0 -10
  19. package/dist/ghost-core/catalog/assemble.js.map +1 -1
  20. package/dist/ghost-core/catalog/index.d.ts +1 -1
  21. package/dist/ghost-core/catalog/index.d.ts.map +1 -1
  22. package/dist/ghost-core/catalog/index.js +1 -1
  23. package/dist/ghost-core/catalog/index.js.map +1 -1
  24. package/dist/ghost-core/catalog/menu.d.ts +1 -11
  25. package/dist/ghost-core/catalog/menu.d.ts.map +1 -1
  26. package/dist/ghost-core/catalog/menu.js +1 -6
  27. package/dist/ghost-core/catalog/menu.js.map +1 -1
  28. package/dist/ghost-core/catalog/types.d.ts +0 -6
  29. package/dist/ghost-core/catalog/types.d.ts.map +1 -1
  30. package/dist/ghost-core/glossary.d.ts +0 -13
  31. package/dist/ghost-core/glossary.d.ts.map +1 -1
  32. package/dist/ghost-core/glossary.js +0 -7
  33. package/dist/ghost-core/glossary.js.map +1 -1
  34. package/dist/ghost-core/index.d.ts +2 -2
  35. package/dist/ghost-core/index.d.ts.map +1 -1
  36. package/dist/ghost-core/index.js +1 -1
  37. package/dist/ghost-core/index.js.map +1 -1
  38. package/dist/ghost-core/package-manifest.d.ts +7 -0
  39. package/dist/ghost-core/package-manifest.d.ts.map +1 -1
  40. package/dist/ghost-core/package-manifest.js +10 -0
  41. package/dist/ghost-core/package-manifest.js.map +1 -1
  42. package/dist/init-payloads/median/median-tells.md +25 -25
  43. package/dist/init-payloads/skeleton/brand.md +22 -0
  44. package/dist/init-payloads/skeleton/context.conversation.md +24 -0
  45. package/dist/init-payloads/skeleton/foundation.color.md +39 -0
  46. package/dist/init-payloads/skeleton/foundation.composition.md +30 -0
  47. package/dist/init-payloads/skeleton/foundation.controls.md +29 -0
  48. package/dist/init-payloads/skeleton/foundation.layout.md +45 -0
  49. package/dist/init-payloads/skeleton/foundation.motion.md +34 -0
  50. package/dist/init-payloads/skeleton/foundation.type.md +44 -0
  51. package/dist/init-payloads/skeleton/foundation.voice.md +29 -0
  52. package/dist/init-payloads/skeleton/glossary.md +27 -32
  53. package/dist/init-payloads/vessel-light/anti-goal.tells.md +5 -4
  54. package/dist/init-payloads/vessel-light/checks/shape-matches-job.md +43 -0
  55. package/dist/init-payloads/vessel-light/glossary.md +0 -1
  56. package/dist/init-payloads/vessel-light/grammar.color-roles.md +2 -2
  57. package/dist/init-payloads/vessel-light/grammar.deletion.md +35 -0
  58. package/dist/init-payloads/vessel-light/grammar.hierarchy.md +13 -3
  59. package/dist/init-payloads/vessel-light/grammar.job.md +54 -0
  60. package/dist/init-payloads/vessel-light/index.md +20 -24
  61. package/dist/init-payloads/vessel-light/manifest.yml +1 -0
  62. package/dist/init-payloads/vessel-light/materials/primitives.css +15 -52
  63. package/dist/init-payloads/vessel-light/materials/ref/composition.editorial.html +12 -7
  64. package/dist/init-payloads/vessel-light/materials/ref/composition.overlay.html +8 -2
  65. package/dist/init-payloads/vessel-light/materials/ref/composition.table.html +3 -3
  66. package/dist/init-payloads/vessel-light/materials/tokens.css +27 -78
  67. package/dist/init-payloads/vessel-light/signature.temperature.md +7 -0
  68. package/dist/init-payloads/vessel-light/signature.type.md +6 -5
  69. package/dist/observability-events.d.ts +0 -3
  70. package/dist/observability-events.d.ts.map +1 -1
  71. package/dist/observability-events.js.map +1 -1
  72. package/dist/review/resolve.d.ts +1 -2
  73. package/dist/review/resolve.d.ts.map +1 -1
  74. package/dist/review/resolve.js +4 -5
  75. package/dist/review/resolve.js.map +1 -1
  76. package/dist/review/review-packet.d.ts +0 -1
  77. package/dist/review/review-packet.d.ts.map +1 -1
  78. package/dist/review/review-packet.js +0 -19
  79. package/dist/review/review-packet.js.map +1 -1
  80. package/dist/scan/check-files.d.ts.map +1 -1
  81. package/dist/scan/check-files.js +0 -15
  82. package/dist/scan/check-files.js.map +1 -1
  83. package/dist/scan/check-scaffold.js +2 -2
  84. package/dist/scan/check-scaffold.js.map +1 -1
  85. package/dist/scan/fingerprint-package-lint.d.ts +8 -0
  86. package/dist/scan/fingerprint-package-lint.d.ts.map +1 -0
  87. package/dist/scan/fingerprint-package-lint.js +284 -0
  88. package/dist/scan/fingerprint-package-lint.js.map +1 -0
  89. package/dist/scan/fingerprint-package-loader.d.ts.map +1 -1
  90. package/dist/scan/fingerprint-package-loader.js +2 -29
  91. package/dist/scan/fingerprint-package-loader.js.map +1 -1
  92. package/dist/scan/fingerprint-package.d.ts +9 -7
  93. package/dist/scan/fingerprint-package.d.ts.map +1 -1
  94. package/dist/scan/fingerprint-package.js +18 -231
  95. package/dist/scan/fingerprint-package.js.map +1 -1
  96. package/dist/scan/node-files.d.ts.map +1 -1
  97. package/dist/scan/node-files.js +1 -3
  98. package/dist/scan/node-files.js.map +1 -1
  99. package/dist/scan/templates.d.ts.map +1 -1
  100. package/dist/scan/templates.js +43 -35
  101. package/dist/scan/templates.js.map +1 -1
  102. package/dist/skill-bundle/SKILL.md +15 -13
  103. package/dist/skill-bundle/references/adapting-a-starter.md +62 -60
  104. package/dist/skill-bundle/references/authoring-scenarios.md +6 -8
  105. package/dist/skill-bundle/references/brief.md +5 -6
  106. package/dist/skill-bundle/references/capture.md +47 -36
  107. package/dist/skill-bundle/references/concrete-tiers.md +95 -0
  108. package/dist/skill-bundle/references/recall.md +6 -12
  109. package/dist/skill-bundle/references/schema.md +15 -24
  110. package/dist/skill-bundle/references/self-check.md +2 -2
  111. package/dist/skill-bundle/references/steering-audit.md +7 -10
  112. package/package.json +1 -1
  113. package/dist/init-payloads/skeleton/grammar.color-roles.md +0 -26
  114. package/dist/init-payloads/skeleton/grammar.conversation.md +0 -23
  115. package/dist/init-payloads/skeleton/grammar.hierarchy.md +0 -39
  116. package/dist/init-payloads/skeleton/grammar.motion.md +0 -24
  117. package/dist/init-payloads/skeleton/grammar.rhythm.md +0 -23
  118. package/dist/init-payloads/skeleton/grammar.surfaces.md +0 -26
  119. package/dist/init-payloads/skeleton/index.md +0 -27
  120. package/dist/init-payloads/skeleton/signature.palette.md +0 -24
  121. package/dist/init-payloads/skeleton/signature.shape.md +0 -19
  122. package/dist/init-payloads/skeleton/signature.temperature.md +0 -20
  123. package/dist/init-payloads/skeleton/signature.type.md +0 -22
  124. package/dist/skill-bundle/references/wild.md +0 -30
  125. /package/dist/init-payloads/median/{anti-goal.median.md → cliche.median.md} +0 -0
@@ -6,19 +6,12 @@ import { carriesConcreteMaterial, extractSkeletonSections, } from "../node/steer
6
6
  */
7
7
  export function assembleCatalog(input) {
8
8
  const nodes = new Map();
9
- const wildKinds = new Set(input.wildKinds ?? []);
10
- const guardKinds = new Set(input.guardKinds ?? []);
11
9
  for (const placed of input.placedNodes ?? []) {
12
10
  const fm = placed.doc.frontmatter;
13
11
  const concrete = carriesConcreteMaterial({
14
12
  materials: fm.materials,
15
13
  body: placed.doc.body,
16
14
  });
17
- const posture = placed.kind !== undefined && wildKinds.has(placed.kind)
18
- ? "wild"
19
- : placed.kind !== undefined && guardKinds.has(placed.kind)
20
- ? "guard"
21
- : "steady";
22
15
  nodes.set(placed.id, {
23
16
  id: placed.id,
24
17
  ...(placed.kind !== undefined ? { kind: placed.kind } : {}),
@@ -27,9 +20,6 @@ export function assembleCatalog(input) {
27
20
  ...(fm.materials !== undefined ? { materials: fm.materials } : {}),
28
21
  concrete,
29
22
  hasSkeleton: extractSkeletonSections(placed.doc.body).length > 0,
30
- posture,
31
- ...(posture === "wild" ? { wild: true } : {}),
32
- ...(posture === "guard" ? { guard: true } : {}),
33
23
  body: placed.doc.body,
34
24
  });
35
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"assemble.js","sourceRoot":"","sources":["../../../src/ghost-core/catalog/assemble.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AA2B7B;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAEnD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;QAClC,MAAM,QAAQ,GAAG,uBAAuB,CAAC;YACvC,SAAS,EAAE,EAAE,CAAC,SAAS;YACvB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI;SACtB,CAAC,CAAC;QACH,MAAM,OAAO,GACX,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YACrD,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBACxD,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,QAAQ,CAAC;QACjB,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE;YACnB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,EAAE;YAC5D,GAAG,CAAC,EAAE,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,GAAG,CAAC,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,QAAQ;YACR,WAAW,EAAE,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAChE,OAAO;YACP,GAAG,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI;SACtB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"assemble.js","sourceRoot":"","sources":["../../../src/ghost-core/catalog/assemble.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAuB7B;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;IAElD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;QAClC,MAAM,QAAQ,GAAG,uBAAuB,CAAC;YACvC,SAAS,EAAE,EAAE,CAAC,SAAS;YACvB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI;SACtB,CAAC,CAAC;QACH,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE;YACnB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,EAAE;YAC5D,GAAG,CAAC,EAAE,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,GAAG,CAAC,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,QAAQ;YACR,WAAW,EAAE,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAChE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI;SACtB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC"}
@@ -5,6 +5,6 @@
5
5
  */
6
6
  export { type AssembleCatalogInput, assembleCatalog, type PlacedNode, } from "./assemble.js";
7
7
  export { closestIds } from "./closest.js";
8
- export { type BuildCatalogMenuOptions, buildCatalogMenu, type CatalogMenuEntry, } from "./menu.js";
8
+ export { buildCatalogMenu, type CatalogMenuEntry } from "./menu.js";
9
9
  export type { GhostCatalog, GhostCatalogNode } from "./types.js";
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ghost-core/catalog/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,oBAAoB,EACzB,eAAe,EACf,KAAK,UAAU,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACL,KAAK,uBAAuB,EAC5B,gBAAgB,EAChB,KAAK,gBAAgB,GACtB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ghost-core/catalog/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,oBAAoB,EACzB,eAAe,EACf,KAAK,UAAU,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACpE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -5,5 +5,5 @@
5
5
  */
6
6
  export { assembleCatalog, } from "./assemble.js";
7
7
  export { closestIds } from "./closest.js";
8
- export { buildCatalogMenu, } from "./menu.js";
8
+ export { buildCatalogMenu } from "./menu.js";
9
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ghost-core/catalog/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,eAAe,GAEhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAEL,gBAAgB,GAEjB,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ghost-core/catalog/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,eAAe,GAEhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAyB,MAAM,WAAW,CAAC"}
@@ -1,8 +1,4 @@
1
1
  import type { GhostCatalog } from "./types.js";
2
- export interface BuildCatalogMenuOptions {
3
- /** Include kinds that declare `posture: wild`; default menus omit them. */
4
- includeWild?: boolean;
5
- }
6
2
  /**
7
3
  * One entry in the gather menu: a node presented as `id` + `kind` +
8
4
  * `description` — the retrieval payload the agent selects against. The agent
@@ -20,17 +16,11 @@ export interface CatalogMenuEntry {
20
16
  concrete: boolean;
21
17
  /** True when this entry includes a Skeleton section. */
22
18
  hasSkeleton?: true;
23
- /** Consumption posture for this menu entry. */
24
- posture: "steady" | "wild" | "guard";
25
- /** True when this entry pushes past the fingerprint rather than conforming to it. */
26
- wild?: true;
27
- /** True when this entry is review-critical guard posture. */
28
- guard?: true;
29
19
  }
30
20
  /**
31
21
  * Build the gather menu: every authored node, with its kind and description,
32
22
  * sorted by id for stable output. A flat catalog — no anchor, no hierarchy;
33
23
  * the agent selects from it.
34
24
  */
35
- export declare function buildCatalogMenu(catalog: GhostCatalog, options?: BuildCatalogMenuOptions): CatalogMenuEntry[];
25
+ export declare function buildCatalogMenu(catalog: GhostCatalog): CatalogMenuEntry[];
36
26
  //# sourceMappingURL=menu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../../src/ghost-core/catalog/menu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,uBAAuB;IACtC,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,QAAQ,EAAE,OAAO,CAAC;IAClB,wDAAwD;IACxD,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,+CAA+C;IAC/C,OAAO,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACrC,qFAAqF;IACrF,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,6DAA6D;IAC7D,KAAK,CAAC,EAAE,IAAI,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE,uBAA4B,GACpC,gBAAgB,EAAE,CAqBpB"}
1
+ {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../../src/ghost-core/catalog/menu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,QAAQ,EAAE,OAAO,CAAC;IAClB,wDAAwD;IACxD,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,gBAAgB,EAAE,CAiB1E"}
@@ -3,11 +3,9 @@
3
3
  * sorted by id for stable output. A flat catalog — no anchor, no hierarchy;
4
4
  * the agent selects from it.
5
5
  */
6
- export function buildCatalogMenu(catalog, options = {}) {
6
+ export function buildCatalogMenu(catalog) {
7
7
  const entries = [];
8
8
  for (const node of catalog.nodes.values()) {
9
- if (node.wild && !options.includeWild)
10
- continue;
11
9
  entries.push({
12
10
  id: node.id,
13
11
  ...(node.kind !== undefined ? { kind: node.kind } : {}),
@@ -17,9 +15,6 @@ export function buildCatalogMenu(catalog, options = {}) {
17
15
  : {}),
18
16
  concrete: node.concrete,
19
17
  ...(node.hasSkeleton ? { hasSkeleton: true } : {}),
20
- posture: node.posture,
21
- ...(node.wild ? { wild: true } : {}),
22
- ...(node.guard ? { guard: true } : {}),
23
18
  });
24
19
  }
25
20
  return entries.sort((a, b) => a.id.localeCompare(b.id));
@@ -1 +1 @@
1
- {"version":3,"file":"menu.js","sourceRoot":"","sources":["../../../src/ghost-core/catalog/menu.ts"],"names":[],"mappings":"AAgCA;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAqB,EACrB,UAAmC,EAAE;IAErC,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW;YAAE,SAAS;QAChD,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gBAC3D,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;gBACtC,CAAC,CAAC,EAAE,CAAC;YACP,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"menu.js","sourceRoot":"","sources":["../../../src/ghost-core/catalog/menu.ts"],"names":[],"mappings":"AAqBA;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAqB;IACpD,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gBAC3D,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;gBACtC,CAAC,CAAC,EAAE,CAAC;YACP,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC"}
@@ -18,12 +18,6 @@ export interface GhostCatalogNode {
18
18
  concrete: boolean;
19
19
  /** True when the node declares a `## Skeleton` section. */
20
20
  hasSkeleton: boolean;
21
- /** Consumption posture derived from the node's glossary kind. */
22
- posture: "steady" | "wild" | "guard";
23
- /** True when the node's declared kind has `posture: wild` in the glossary. */
24
- wild?: true;
25
- /** True when the node's declared kind has `posture: guard` in the glossary. */
26
- guard?: true;
27
21
  body: string;
28
22
  }
29
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ghost-core/catalog/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,gFAAgF;IAChF,QAAQ,EAAE,OAAO,CAAC;IAClB,2DAA2D;IAC3D,WAAW,EAAE,OAAO,CAAC;IACrB,iEAAiE;IACjE,OAAO,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACrC,8EAA8E;IAC9E,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,+EAA+E;IAC/E,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACtC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ghost-core/catalog/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,gFAAgF;IAChF,QAAQ,EAAE,OAAO,CAAC;IAClB,2DAA2D;IAC3D,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACtC"}
@@ -1,24 +1,11 @@
1
1
  import { z } from "zod";
2
- export declare const GhostGlossaryKindPostureSchema: z.ZodEnum<{
3
- steady: "steady";
4
- wild: "wild";
5
- guard: "guard";
6
- }>;
7
- export type GhostGlossaryKindPosture = z.infer<typeof GhostGlossaryKindPostureSchema>;
8
2
  export declare const GhostGlossaryFrontmatterSchema: z.ZodObject<{
9
3
  kinds: z.ZodArray<z.ZodObject<{
10
4
  name: z.ZodString;
11
- posture: z.ZodDefault<z.ZodEnum<{
12
- steady: "steady";
13
- wild: "wild";
14
- guard: "guard";
15
- }>>;
16
5
  }, z.core.$loose>>;
17
6
  }, z.core.$loose>;
18
7
  export interface GhostGlossaryKind {
19
8
  name: string;
20
- /** Consumption posture for nodes of this kind. */
21
- posture: GhostGlossaryKindPosture;
22
9
  /** Prose purpose/normative weight for this kind, parsed from its section. */
23
10
  purpose: string;
24
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"glossary.d.ts","sourceRoot":"","sources":["../../src/ghost-core/glossary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,8BAA8B;;;;EAIzC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAC5C,OAAO,8BAA8B,CACtC,CAAC;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;iBAW3B,CAAC;AAEjB,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,OAAO,EAAE,wBAAwB,CAAC;IAClC,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,iBAAiB,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,QAAQ,EAAE,qBAAqB,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,GAC/C;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEzC,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,wBAAwB,CAiCnE"}
1
+ {"version":3,"file":"glossary.d.ts","sourceRoot":"","sources":["../../src/ghost-core/glossary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,8BAA8B;;;;iBAU3B,CAAC;AAEjB,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,iBAAiB,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,QAAQ,EAAE,qBAAqB,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,GAC/C;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEzC,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,wBAAwB,CAgCnE"}
@@ -1,16 +1,10 @@
1
1
  import { z } from "zod";
2
2
  import { splitMarkdownFrontmatter } from "./markdown.js";
3
- export const GhostGlossaryKindPostureSchema = z.enum([
4
- "steady",
5
- "wild",
6
- "guard",
7
- ]);
8
3
  export const GhostGlossaryFrontmatterSchema = z
9
4
  .object({
10
5
  kinds: z.array(z
11
6
  .object({
12
7
  name: z.string().min(1),
13
- posture: GhostGlossaryKindPostureSchema.default("steady"),
14
8
  })
15
9
  .passthrough()),
16
10
  })
@@ -34,7 +28,6 @@ export function parseGlossary(raw) {
34
28
  const sections = parseMarkdownSections(normalizedBody);
35
29
  const kinds = result.data.kinds.map((kind) => ({
36
30
  name: kind.name,
37
- posture: kind.posture,
38
31
  purpose: sections.get(normalizeHeading(kind.name)) ?? "",
39
32
  }));
40
33
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"glossary.js","sourceRoot":"","sources":["../../src/ghost-core/glossary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glossary.js","sourceRoot":"","sources":["../../src/ghost-core/glossary.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- export { type AssembleCatalogInput, assembleCatalog, type BuildCatalogMenuOptions, buildCatalogMenu, type CatalogMenuEntry, closestIds, type GhostCatalog, type GhostCatalogNode, type PlacedNode, } from "./catalog/index.js";
1
+ export { type AssembleCatalogInput, assembleCatalog, buildCatalogMenu, type CatalogMenuEntry, closestIds, type GhostCatalog, type GhostCatalogNode, type PlacedNode, } from "./catalog/index.js";
2
2
  export { GHOST_CHECK_SCHEMA, GHOST_CHECK_SEVERITIES, type GhostCheckDocument, type GhostCheckFrontmatter, type GhostCheckLintIssue, type GhostCheckLintReport, type GhostCheckLintSeverity, type GhostCheckMarkdownSeverity, lintGhostCheck, loadGhostCheck, type ParsedCheckMarkdown, type ParsedSourceRef, parseCheckMarkdown, parseSourceRef, sliceNodeSection, } from "./check/index.js";
3
3
  export { EXIT, UsageError } from "./errors.js";
4
4
  export { hasGlobMagic, matchesGlob, normalizeGlobPath } from "./glob.js";
5
- export { type GhostGlossaryDocument, GhostGlossaryFrontmatterSchema, type GhostGlossaryKind, type GhostGlossaryKindPosture, GhostGlossaryKindPostureSchema, type GhostGlossaryParseResult, parseGlossary, } from "./glossary.js";
5
+ export { type GhostGlossaryDocument, GhostGlossaryFrontmatterSchema, type GhostGlossaryKind, type GhostGlossaryParseResult, parseGlossary, } from "./glossary.js";
6
6
  export { type ExpandedLocalMaterialLocator, expandLocalMaterialLocator, listBundledMaterialFiles, type MaterialTransportOptions, type MaterialTransportResult, materialLocatorClaimsPath, resolveLocalMaterialLocator, type TransportedMaterial, type TransportedMaterialTier, transportMaterials, } from "./material-transport.js";
7
7
  export { type ClassifiedGhostMaterialLocator, classifyMaterialLocator, type GhostMaterialLocatorKind, validateMaterialLocator, } from "./materials.js";
8
8
  export { carriesConcreteMaterial, extractSkeletonFences, extractSkeletonSections, type FencedBlock, GHOST_NODE_SCHEMA, type GhostNodeDocument, type GhostNodeFrontmatter, GhostNodeFrontmatterSchema, type GhostNodeLintIssue, type GhostNodeLintReport, type GhostNodeLintSeverity, lintGhostNode, NodeIdSchema, NodeRefSchema, type ParseNodeResult, parseNode, type SkeletonSection, serializeNode, stripSkeletonSections, } from "./node/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ghost-core/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,oBAAoB,EACzB,eAAe,EACf,KAAK,uBAAuB,EAC5B,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,UAAU,EACV,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,UAAU,GAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,cAAc,EACd,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEzE,OAAO,EACL,KAAK,qBAAqB,EAC1B,8BAA8B,EAC9B,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,8BAA8B,EAC9B,KAAK,wBAAwB,EAC7B,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,4BAA4B,EACjC,0BAA0B,EAC1B,wBAAwB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,yBAAyB,EACzB,2BAA2B,EAC3B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,KAAK,8BAA8B,EACnC,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,WAAW,EAChB,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,0BAA0B,EAC1B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,aAAa,EACb,YAAY,EACZ,aAAa,EACb,KAAK,eAAe,EACpB,SAAS,EACT,KAAK,eAAe,EACpB,aAAa,EACb,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EACL,gCAAgC,EAChC,qCAAqC,GACtC,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ghost-core/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,oBAAoB,EACzB,eAAe,EACf,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,UAAU,EACV,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,UAAU,GAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,cAAc,EACd,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEzE,OAAO,EACL,KAAK,qBAAqB,EAC1B,8BAA8B,EAC9B,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,4BAA4B,EACjC,0BAA0B,EAC1B,wBAAwB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,yBAAyB,EACzB,2BAA2B,EAC3B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,KAAK,8BAA8B,EACnC,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,WAAW,EAChB,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,0BAA0B,EAC1B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,aAAa,EACb,YAAY,EACZ,aAAa,EACb,KAAK,eAAe,EACpB,SAAS,EACT,KAAK,eAAe,EACpB,aAAa,EACb,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EACL,gCAAgC,EAChC,qCAAqC,GACtC,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC"}
@@ -8,7 +8,7 @@ export { EXIT, UsageError } from "./errors.js";
8
8
  // --- Glob matching (repo-relative locators) ---
9
9
  export { hasGlobMagic, matchesGlob, normalizeGlobPath } from "./glob.js";
10
10
  // --- Glossary (reserved fingerprint vocabulary slot) ---
11
- export { GhostGlossaryFrontmatterSchema, GhostGlossaryKindPostureSchema, parseGlossary, } from "./glossary.js";
11
+ export { GhostGlossaryFrontmatterSchema, parseGlossary, } from "./glossary.js";
12
12
  export { expandLocalMaterialLocator, listBundledMaterialFiles, materialLocatorClaimsPath, resolveLocalMaterialLocator, transportMaterials, } from "./material-transport.js";
13
13
  // --- Materials (node locators) ---
14
14
  export { classifyMaterialLocator, validateMaterialLocator, } from "./materials.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ghost-core/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B,wDAAwD;AACxD,OAAO,EAEL,eAAe,EAEf,gBAAgB,EAEhB,UAAU,GAIX,MAAM,oBAAoB,CAAC;AAC5B,oEAAoE;AACpE,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EAOtB,cAAc,EACd,cAAc,EAGd,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,iCAAiC;AACjC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/C,iDAAiD;AACjD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACzE,0DAA0D;AAC1D,OAAO,EAEL,8BAA8B,EAG9B,8BAA8B,EAE9B,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,0BAA0B,EAC1B,wBAAwB,EAGxB,yBAAyB,EACzB,2BAA2B,EAG3B,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,oCAAoC;AACpC,OAAO,EAEL,uBAAuB,EAEvB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,4DAA4D;AAC5D,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EAEvB,iBAAiB,EAGjB,0BAA0B,EAI1B,aAAa,EACb,YAAY,EACZ,aAAa,EAEb,SAAS,EAET,aAAa,EACb,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,gCAAgC,EAChC,qCAAqC,GACtC,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ghost-core/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B,wDAAwD;AACxD,OAAO,EAEL,eAAe,EACf,gBAAgB,EAEhB,UAAU,GAIX,MAAM,oBAAoB,CAAC;AAC5B,oEAAoE;AACpE,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EAOtB,cAAc,EACd,cAAc,EAGd,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,iCAAiC;AACjC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/C,iDAAiD;AACjD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACzE,0DAA0D;AAC1D,OAAO,EAEL,8BAA8B,EAG9B,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,0BAA0B,EAC1B,wBAAwB,EAGxB,yBAAyB,EACzB,2BAA2B,EAG3B,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,oCAAoC;AACpC,OAAO,EAEL,uBAAuB,EAEvB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,4DAA4D;AAC5D,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EAEvB,iBAAiB,EAGjB,0BAA0B,EAI1B,aAAa,EACb,YAAY,EACZ,aAAa,EAEb,SAAS,EAET,aAAa,EACb,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,gCAAgC,EAChC,qCAAqC,GACtC,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC"}
@@ -4,9 +4,16 @@ export declare const GHOST_FINGERPRINT_PACKAGE_SCHEMA: "ghost.fingerprint-packag
4
4
  export declare const GhostFingerprintPackageManifestSchema: z.ZodObject<{
5
5
  schema: z.ZodLiteral<"ghost.fingerprint-package/v1">;
6
6
  id: z.ZodString;
7
+ cover: z.ZodOptional<z.ZodString>;
7
8
  }, z.core.$strict>;
8
9
  export interface GhostFingerprintPackageManifest {
9
10
  schema: typeof GHOST_FINGERPRINT_PACKAGE_SCHEMA;
10
11
  id: string;
12
+ /**
13
+ * Optional id of the cover node: the one node gather inlines above the menu on
14
+ * every invocation. Guaranteed presence for content selection cannot retrieve
15
+ * — essence, temperature, brand-level refusals.
16
+ */
17
+ cover?: string;
11
18
  }
12
19
  //# sourceMappingURL=package-manifest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"package-manifest.d.ts","sourceRoot":"","sources":["../../src/ghost-core/package-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gCAAgC,EAC3C,8BAAuC,CAAC;AAU1C,oDAAoD;AACpD,eAAO,MAAM,qCAAqC;;;kBAKvC,CAAC;AAEZ,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,OAAO,gCAAgC,CAAC;IAChD,EAAE,EAAE,MAAM,CAAC;CACZ"}
1
+ {"version":3,"file":"package-manifest.d.ts","sourceRoot":"","sources":["../../src/ghost-core/package-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gCAAgC,EAC3C,8BAAuC,CAAC;AAe1C,oDAAoD;AACpD,eAAO,MAAM,qCAAqC;;;;kBAWvC,CAAC;AAEZ,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,OAAO,gCAAgC,CAAC;IAChD,EAAE,EAAE,MAAM,CAAC;IACX;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -4,11 +4,21 @@ const SlugIdSchema = z
4
4
  .string()
5
5
  .min(1)
6
6
  .regex(/^[a-z0-9][a-z0-9._-]*$/, "id must be a lowercase slug (a-z, 0-9, '.', '_', '-')");
7
+ const NodeIdSchema = z
8
+ .string()
9
+ .min(1)
10
+ .regex(/^[a-z0-9][a-z0-9./_-]*$/, "cover must be a node id");
7
11
  /** `manifest.yml` — anchors a `.ghost/` package. */
8
12
  export const GhostFingerprintPackageManifestSchema = z
9
13
  .object({
10
14
  schema: z.literal(GHOST_FINGERPRINT_PACKAGE_SCHEMA),
11
15
  id: SlugIdSchema,
16
+ /**
17
+ * Optional id of the cover node: the one node gather inlines above the menu
18
+ * on every invocation. Guaranteed presence for content selection cannot
19
+ * retrieve — essence, temperature, brand-level refusals.
20
+ */
21
+ cover: NodeIdSchema.optional(),
12
22
  })
13
23
  .strict();
14
24
  //# sourceMappingURL=package-manifest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"package-manifest.js","sourceRoot":"","sources":["../../src/ghost-core/package-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gCAAgC,GAC3C,8BAAuC,CAAC;AAE1C,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,KAAK,CACJ,wBAAwB,EACxB,uDAAuD,CACxD,CAAC;AAEJ,oDAAoD;AACpD,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC;KACnD,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,gCAAgC,CAAC;IACnD,EAAE,EAAE,YAAY;CACjB,CAAC;KACD,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"package-manifest.js","sourceRoot":"","sources":["../../src/ghost-core/package-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gCAAgC,GAC3C,8BAAuC,CAAC;AAE1C,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,KAAK,CACJ,wBAAwB,EACxB,uDAAuD,CACxD,CAAC;AAEJ,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,KAAK,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CAAC;AAE/D,oDAAoD;AACpD,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC;KACnD,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,gCAAgC,CAAC;IACnD,EAAE,EAAE,YAAY;IAChB;;;;OAIG;IACH,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE;CAC/B,CAAC;KACD,MAAM,EAAE,CAAC"}
@@ -3,45 +3,45 @@ name: Median tells
3
3
  description: Flags the measured defaults of unsteered generation, the deterministic floor, and current model-signature tells — hover-lift, default accents, unprompted dark theme, gradient text, contrast, frequency tells, and per-model signatures.
4
4
  severity: high
5
5
  references:
6
- - anti-goal.median > Hover-lift
7
- - anti-goal.median > Indigo accent
8
- - anti-goal.median > Dark theme
9
- - anti-goal.median > Gradients
10
- - anti-goal.median > Glassmorphism
11
- - anti-goal.median > Side-stripe
12
- - anti-goal.median > Cream surface
13
- - anti-goal.median > Chat bubbles
14
- - anti-goal.median > Stock copy
15
- - anti-goal.median > Celebration
16
- - anti-goal.median > Hero metric
17
- - anti-goal.median > Eyebrow kicker
6
+ - cliche.median > Hover-lift
7
+ - cliche.median > Indigo accent
8
+ - cliche.median > Dark theme
9
+ - cliche.median > Gradients
10
+ - cliche.median > Glassmorphism
11
+ - cliche.median > Side-stripe
12
+ - cliche.median > Cream surface
13
+ - cliche.median > Chat bubbles
14
+ - cliche.median > Stock copy
15
+ - cliche.median > Celebration
16
+ - cliche.median > Hero metric
17
+ - cliche.median > Eyebrow kicker
18
18
  ---
19
19
 
20
20
  These flags target the measured convergence patterns of unsteered model
21
21
  generation, the deterministic floor the median node licenses, and tells
22
22
  specific to individual models. Each is mechanically detectable in a diff.
23
- Pruning a rule from `anti-goal.median` orphans its paired reference here —
23
+ Pruning a rule from `cliche.median` orphans its paired reference here —
24
24
  `ghost validate` warns; delete the flag and its reference together.
25
25
 
26
26
  Flag `transform` with `translateY` inside a `:hover` rule on cards,
27
27
  buttons, or list items, especially paired with a shadow increase. Hover
28
28
  confirmation in this fingerprint is color and background change, not lift.
29
- (`anti-goal.median > Hover-lift`)
29
+ (`cliche.median > Hover-lift`)
30
30
 
31
31
  Flag accent values in the indigo/blue/purple default family (`#4f46e5`,
32
32
  `#6366f1`, `#2563eb`, `#3b82f6`, `#8b5cf6`, and close neighbors)
33
33
  unless the diff shows the user asked for them. They are model defaults, not
34
- palette members. (`anti-goal.median > Indigo accent`)
34
+ palette members. (`cliche.median > Indigo accent`)
35
35
 
36
36
  Flag whole-page dark backgrounds when the ask did not request dark mode.
37
37
  Dark surfaces are a declared brand choice or an explicit theme, never an
38
- unprompted default. (`anti-goal.median > Dark theme`)
38
+ unprompted default. (`cliche.median > Dark theme`)
39
39
 
40
40
  Flag `linear-gradient` or `radial-gradient` as page or section
41
- backgrounds, and gradient-filled buttons. (`anti-goal.median > Gradients`)
41
+ backgrounds, and gradient-filled buttons. (`cliche.median > Gradients`)
42
42
 
43
43
  Flag `backdrop-filter: blur` used for glassmorphism cards.
44
- (`anti-goal.median > Glassmorphism`)
44
+ (`cliche.median > Glassmorphism`)
45
45
 
46
46
  Flag `background-clip: text` (with or without the `-webkit-` prefix)
47
47
  paired with a gradient. Emphasis comes from weight or size in a single
@@ -49,14 +49,14 @@ solid color.
49
49
 
50
50
  Flag a thick colored border on one side of an element (`border-left` or a
51
51
  `border-l-*` utility at 2px or more in a non-neutral color) while the
52
- other sides stay thin. (`anti-goal.median > Side-stripe`)
52
+ other sides stay thin. (`cliche.median > Side-stripe`)
53
53
 
54
54
  Flag warm off-white page backgrounds in the cream/sand/beige band, and token
55
55
  names like `--cream`, `--sand`, `--parchment`, `--linen` introduced
56
- by the diff. (`anti-goal.median > Cream surface`)
56
+ by the diff. (`cliche.median > Cream surface`)
57
57
 
58
58
  Flag assistant messages rendered as bubbles with initials-circle avatars.
59
- (`anti-goal.median > Chat bubbles`)
59
+ (`cliche.median > Chat bubbles`)
60
60
 
61
61
  Flag emoji used as icons or imagery in interface chrome. Text labels carry
62
62
  meaning.
@@ -64,16 +64,16 @@ meaning.
64
64
  Flag stock template copy in headings: "Simple, transparent pricing",
65
65
  "Welcome back", and interchangeable-with-a-competitor phrasing. Recommend
66
66
  copy that states what this product specifically does.
67
- (`anti-goal.median > Stock copy`)
67
+ (`cliche.median > Stock copy`)
68
68
 
69
69
  Flag exclamation-marked success copy, confetti language, and celebratory UI
70
70
  ("You did it!", "Awesome!"). Confirmation is quiet and factual.
71
- (`anti-goal.median > Celebration`)
71
+ (`cliche.median > Celebration`)
72
72
 
73
73
  Flag the hero-metric template — a big number, small label, and supporting
74
74
  stats as default proof — unless the metric shows real user data. Recommend
75
75
  evidence specific to the product, or nothing.
76
- (`anti-goal.median > Hero metric`)
76
+ (`cliche.median > Hero metric`)
77
77
 
78
78
  Deterministic floor — licensed by the median node, verified here, never
79
79
  steered in prose:
@@ -95,7 +95,7 @@ Frequency tells — the crime is repetition, not the move (advisory):
95
95
 
96
96
  Flag three or more uppercase, tracked eyebrow kickers above section headings
97
97
  in one page. One named kicker is voice; a kicker on every section is model
98
- grammar. (`anti-goal.median > Eyebrow kicker`)
98
+ grammar. (`cliche.median > Eyebrow kicker`)
99
99
 
100
100
  Flag five or more em-dashes in body copy in one view.
101
101
 
@@ -0,0 +1,22 @@
1
+ ---
2
+ description: "The brand on one page — always in context; what this brand is, how it feels, and what only it refuses."
3
+ ---
4
+
5
+ This cover is unwritten. It is the one page always in an agent's context, so
6
+ it carries only what cannot be retrieved by task: what this brand is about,
7
+ in one paragraph, in the brand's own voice. The temperature its words and
8
+ motion share. And the refusals only this brand makes — not generic don'ts
9
+ (those live in each foundation's misuse list, and the model's cliches live
10
+ in the cliche nodes), but the lines this brand alone draws.
11
+
12
+ Until a human writes it, the working stance is: quiet, precise, content
13
+ first, decoration never. Treat that as provisional and say so in your
14
+ report.
15
+
16
+ One test admits a sentence to this page: where would a violation show? In a
17
+ single element, it belongs in that element's chapter. In a single view, it
18
+ belongs in the composition foundation. Only across the whole body of work —
19
+ temperature, density, restraint — it belongs here.
20
+
21
+ The budget is one screen. When this page is real, delete every sentence of
22
+ scaffolding above — including this one.
@@ -0,0 +1,24 @@
1
+ ---
2
+ description: "AI conversation threads — assistant text on the page surface, compact user turns, collapsed tool calls, one structured prompt input. Read only for chat threads, agent consoles, and prompt composers."
3
+ ---
4
+
5
+ In this context: AI conversation threads, agent consoles, review assistants,
6
+ and prompt composers. Elsewhere, the defaults hold.
7
+
8
+ Conversation UI is not chat cosplay. The assistant speaks on the page
9
+ surface as plain text: no bubble, no border, no fill. Wrapping assistant
10
+ messages in cards makes the system look defensive and wastes density —
11
+ hierarchy comes from prose, spacing, and type.
12
+
13
+ User turns are compact muted surfaces aligned right. They mark authorship
14
+ without turning the thread into alternating balloons.
15
+
16
+ Tool calls are operational evidence. Collapse them to a labeled one-line
17
+ summary with status; expand only when the user asks, then show mono content
18
+ inside the disclosed area.
19
+
20
+ The prompt input is one bordered surface. The textarea stays empty of
21
+ controls so writing remains the focus; attachments, model choice, and send
22
+ live in a single row below it. There is one primary send action — stop and
23
+ send are mutually exclusive states of the same action area, never two
24
+ competing primaries.
@@ -0,0 +1,39 @@
1
+ ---
2
+ description: "Color — the role system, status meanings, expression rules, and misuse; palette values are an open question. Read before choosing any color."
3
+ ---
4
+
5
+ ## Usage
6
+
7
+ Color is assigned by role, not by taste. The roles are the source of truth;
8
+ raw color values are implementation detail, never product language. If a
9
+ container needs a color, it first needs a role: `background`, `foreground`,
10
+ `card`, `popover`, `primary`, `secondary`, `muted`, `accent`, `border`,
11
+ `input`, `ring`, and the status roles.
12
+
13
+ The status roles — destructive, success, warning, info — exist only when
14
+ meaning demands them. Destructive means destructive or error. Success means
15
+ success. None of them are brand accents.
16
+
17
+ One view does not perform a color palette. If a status color is present, the
18
+ rest of the view stays on the base roles. Richness beyond this comes from a
19
+ closed expression set (`--expression-*`), used at the volume the situation
20
+ allows — a marketing page may turn it up; a settings form stays quiet.
21
+
22
+ ## Palette
23
+
24
+ Open — ask the human; do not freehand. The fixed relationship: a quiet base
25
+ spine is the default atmosphere in every medium, and a closed expression set
26
+ supplies the rest, its volume set by situation, never by taste. The open
27
+ question: what is this brand's base spine, and what are the named hues of
28
+ its expression set — how many, and which? When the human answers, restate
29
+ this section as the brand's current answer and record the values where your
30
+ materials live. Until then, proceed with a quiet provisional spine and label
31
+ it provisional.
32
+
33
+ ## Misuse
34
+
35
+ - Status colors never moonlight as atmosphere, in any context.
36
+ - Expression never touches what you click. Buttons, inputs, and links stay
37
+ on the base roles everywhere. A colored control is a different design
38
+ system.
39
+ - No one-off hex values. If a color has no role, it has no place.
@@ -0,0 +1,30 @@
1
+ ---
2
+ description: "Composition — how a view is assembled: one focal point, one primary action, actions land last, separation escalates. Read before assembling any view."
3
+ ---
4
+
5
+ ## Usage
6
+
7
+ Composition is the layer above layout: layout gives the stacks and gaps;
8
+ composition decides what dominates, what recedes, and what comes last.
9
+
10
+ Every view has exactly one focal point — one element at the largest scale.
11
+ If two elements compete for primacy, demote or delete one; never resolve
12
+ the tie by making both big.
13
+
14
+ One primary action per view: the action the view exists to complete.
15
+ Everything else steps down the control ladder (see the controls
16
+ foundation). If two buttons both look primary, the composition failed.
17
+
18
+ Actions land last. Calls to action render at the end of reading order —
19
+ the user reads, then decides.
20
+
21
+ Separation escalates: whitespace first, then a divider, then a container —
22
+ in that order, never skipping a step.
23
+
24
+ ## Misuse
25
+
26
+ - Never fake a focal point with decoration. Primacy comes from scale,
27
+ position, and space.
28
+ - Never promote a second action to primary because something wants
29
+ emphasis; step the other one down instead.
30
+ - Never separate with a container when whitespace would do.
@@ -0,0 +1,29 @@
1
+ ---
2
+ description: "Controls — the five-rung emphasis ladder, quiet fields, and misuse. Read for any view with actions or inputs."
3
+ ---
4
+
5
+ ## Usage
6
+
7
+ The control emphasis ladder is exactly five rungs: primary, secondary,
8
+ outline, ghost, link. Primary is for the action the screen exists to
9
+ complete; everything else steps down the ladder. How many primaries a view
10
+ may hold is a composition rule — see the composition foundation: one.
11
+
12
+ Destructive is a meaning, not a rung. It is rare, it names the destructive
13
+ act directly, and it is never borrowed for urgency, emphasis, or brand heat.
14
+
15
+ Fields are quiet until active: hairline border, muted placeholder, clear
16
+ label, and a focus ring when the user engages. The ring is guidance, not
17
+ decoration. Errors state facts next to the field that caused them — never
18
+ hidden in modals, toasts, or generic banners when the user needs to fix one
19
+ input.
20
+
21
+ Controls take the control radius; see the layout foundation for the two
22
+ radius roles.
23
+
24
+ ## Misuse
25
+
26
+ - Never two competing primary buttons.
27
+ - Never destructive styling as attention-getting.
28
+ - Never expression color on a control — what you click stays on the base
29
+ roles everywhere.