chati-dev 4.2.2 → 4.3.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 (220) hide show
  1. package/README.md +80 -53
  2. package/bin/chati.js +150 -5
  3. package/framework/agents/build/dev.md +509 -76
  4. package/framework/agents/deploy/devops.md +40 -25
  5. package/framework/agents/discover/brief.md +156 -22
  6. package/framework/agents/discover/brownfield-wu.md +24 -14
  7. package/framework/agents/discover/greenfield-wu.md +100 -14
  8. package/framework/agents/plan/architect-data-engineer.md +6 -6
  9. package/framework/agents/plan/architect-system.md +46 -12
  10. package/framework/agents/plan/architect.md +40 -20
  11. package/framework/agents/plan/detail.md +36 -24
  12. package/framework/agents/plan/phases.md +36 -26
  13. package/framework/agents/plan/tasks.md +114 -33
  14. package/framework/agents/plan/ux-brand-architect.md +240 -8
  15. package/framework/agents/plan/ux-component-engineer.md +28 -13
  16. package/framework/agents/plan/ux-researcher.md +7 -6
  17. package/framework/agents/plan/ux.md +55 -22
  18. package/framework/agents/quality/qa-implementation.md +143 -74
  19. package/framework/agents/quality/qa-planning.md +115 -42
  20. package/framework/agents/quality/qa-visual.md +439 -0
  21. package/framework/agents/shared/visualizer.md +128 -0
  22. package/framework/config.yaml +7 -6
  23. package/framework/constitution.md +127 -44
  24. package/framework/context/governance.md +12 -7
  25. package/framework/context/quality.md +6 -5
  26. package/framework/context/root.md +6 -6
  27. package/framework/data/entity-registry.yaml +377 -4
  28. package/framework/data/model-limits.json +19 -0
  29. package/framework/domains/agents/qa-visual.yaml +74 -0
  30. package/framework/domains/constitution.yaml +46 -2
  31. package/framework/domains/workflows/greenfield-fullstack.yaml +2 -2
  32. package/framework/hooks/advance-trigger.js +131 -0
  33. package/framework/hooks/brief-validator.js +83 -0
  34. package/framework/hooks/constitution-guard.js +24 -5
  35. package/framework/hooks/license-guard.js +62 -27
  36. package/framework/hooks/mode-governance.js +13 -2
  37. package/framework/hooks/model-governance.js +1 -0
  38. package/framework/hooks/post-dev.js +207 -0
  39. package/framework/hooks/prism-engine.js +274 -105
  40. package/framework/hooks/reasoning-escalator.js +371 -0
  41. package/framework/hooks/reference-trigger.js +117 -0
  42. package/framework/hooks/session-digest.js +50 -1
  43. package/framework/hooks/settings.json +32 -1
  44. package/framework/hooks/style-guard.js +25 -6
  45. package/framework/hooks/team-quality-gate.js +19 -12
  46. package/framework/hooks/undercover-guard.js +4 -2
  47. package/framework/i18n/en.yaml +3 -3
  48. package/framework/i18n/es.yaml +3 -3
  49. package/framework/i18n/fr.yaml +3 -3
  50. package/framework/i18n/pt.yaml +3 -3
  51. package/framework/intelligence/context-engine.md +4 -5
  52. package/framework/intelligence/decision-engine.md +1 -1
  53. package/framework/intelligence/hooks-performance.md +3 -3
  54. package/framework/migrations/v1.0-to-v1.1.yaml +1 -1
  55. package/framework/migrations/v1.4-to-v2.0.yaml +11 -11
  56. package/framework/migrations/v4.0-to-v4.1.yaml +2 -2
  57. package/framework/migrations/v4.2-to-v4.3.yaml +29 -0
  58. package/framework/orchestrator/chati-router.js +387 -0
  59. package/framework/orchestrator/chati-update.md +40 -40
  60. package/framework/orchestrator/chati.md +294 -94
  61. package/framework/scaffold/motion-premium/README.md +89 -0
  62. package/framework/scaffold/motion-premium/app/globals.css.template +400 -0
  63. package/framework/scaffold/motion-premium/app/layout.tsx.template +110 -0
  64. package/framework/scaffold/motion-premium/components/animation/BackgroundCrossfadeProvider.tsx.template +170 -0
  65. package/framework/scaffold/motion-premium/components/animation/LenisProvider.tsx.template +49 -0
  66. package/framework/scaffold/motion-premium/components/animation/PageTransitionWrapper.tsx.template +83 -0
  67. package/framework/scaffold/motion-premium/components/animation/Preloader.tsx.template +171 -0
  68. package/framework/scaffold/motion-premium/components/ui/Container.tsx.template +69 -0
  69. package/framework/scaffold/motion-premium/components/ui/PageSection.tsx.template +74 -0
  70. package/framework/scaffold/motion-premium/lib/animations/gsap.ts.template +112 -0
  71. package/framework/scaffold/motion-premium/lib/animations/refreshCoordinator.ts.template +75 -0
  72. package/framework/scaffold/motion-premium/lib/animations/tokens.ts.template +119 -0
  73. package/framework/scaffold/motion-premium/lib/animations/useGsapContext.ts.template +92 -0
  74. package/framework/scaffold/motion-premium/lib/animations/useScrollSnapStepper.ts.template +265 -0
  75. package/framework/scaffold/motion-premium/lib/animations/useSmoothScroll.ts.template +67 -0
  76. package/framework/scaffold/motion-premium/lib/brand.ts.template +43 -0
  77. package/framework/scaffold/motion-premium/scaffold.yaml +174 -0
  78. package/framework/scaffold/motion-premium-3d/README.md +80 -0
  79. package/framework/scaffold/motion-premium-3d/app/(3d)/scroll-demo/ScrollDemoCanvas.tsx.template +81 -0
  80. package/framework/scaffold/motion-premium-3d/app/(3d)/scroll-demo/ScrollDemoClient.tsx.template +75 -0
  81. package/framework/scaffold/motion-premium-3d/app/(3d)/scroll-demo/page.tsx.template +26 -0
  82. package/framework/scaffold/motion-premium-3d/components/3d/CameraRig.tsx.template +100 -0
  83. package/framework/scaffold/motion-premium-3d/components/3d/CanvasProvider.tsx.template +85 -0
  84. package/framework/scaffold/motion-premium-3d/components/3d/InvalidateOnScroll.tsx.template +51 -0
  85. package/framework/scaffold/motion-premium-3d/components/3d/MeshCrossfade.tsx.template +79 -0
  86. package/framework/scaffold/motion-premium-3d/components/3d/ScrollCrossfade.tsx.template +88 -0
  87. package/framework/scaffold/motion-premium-3d/components/3d/ScrollScene.tsx.template +121 -0
  88. package/framework/scaffold/motion-premium-3d/components/webgl/SceneFallback.tsx.template +65 -0
  89. package/framework/scaffold/motion-premium-3d/components/webgl/WebGLContext.tsx.template +68 -0
  90. package/framework/scaffold/motion-premium-3d/lib/webgl/detect.ts.template +69 -0
  91. package/framework/scaffold/motion-premium-3d/scaffold.yaml +133 -0
  92. package/framework/schemas/session.schema.json +109 -21
  93. package/framework/scripts/reference-capture.js +430 -0
  94. package/framework/scripts/visual-qa.js +674 -0
  95. package/framework/tasks/orchestrator-handoff.md +1 -1
  96. package/framework/tasks/orchestrator-resume.md +1 -1
  97. package/framework/tasks/orchestrator-route.md +1 -1
  98. package/framework/tasks/orchestrator-status.md +3 -3
  99. package/framework/tasks/qa-planning-gate-define.md +1 -1
  100. package/framework/templates/brandbook-html-tmpl.md +1 -1
  101. package/framework/templates/brandbook-tmpl.yaml +1 -1
  102. package/framework/templates/component-spec-tmpl.yaml +1 -1
  103. package/framework/templates/design-token-tmpl.yaml +1 -1
  104. package/framework/templates/icon-system-tmpl.yaml +1 -1
  105. package/framework/templates/team-planning-tasks.yaml +6 -5
  106. package/framework/workflows/brownfield-discovery.yaml +2 -2
  107. package/framework/workflows/brownfield-fullstack.yaml +15 -11
  108. package/framework/workflows/brownfield-service.yaml +14 -10
  109. package/framework/workflows/brownfield-ui.yaml +15 -11
  110. package/framework/workflows/greenfield-fullstack.yaml +16 -13
  111. package/framework/workflows/quick-flow.yaml +3 -3
  112. package/framework/workflows/standard-flow.yaml +12 -9
  113. package/package.json +10 -5
  114. package/src/autonomy/autonomous-gate.js +1 -0
  115. package/src/autonomy/build-state.js +1 -2
  116. package/src/autonomy/progress-reporter.js +1 -1
  117. package/src/config/agent-customizer.js +11 -3
  118. package/src/config/claude-settings-generator.js +27 -7
  119. package/src/config/context-file-generator.js +41 -21
  120. package/src/config/framework-adapter.js +1 -0
  121. package/src/config/gemini-hooks-generator.js +19 -7
  122. package/src/config/mcp-configs.js +1 -0
  123. package/src/context/layers/l1-global.js +2 -1
  124. package/src/dashboard/data-reader.js +4 -3
  125. package/src/dashboard/layout.js +2 -1
  126. package/src/decision/analyzer.js +6 -30
  127. package/src/decision/engine.js +4 -28
  128. package/src/decision/registry-healer.js +3 -2
  129. package/src/decision/registry-updater.js +23 -14
  130. package/src/extensions/loader.js +2 -8
  131. package/src/gates/g1-planning-complete.js +2 -1
  132. package/src/gates/g2-qa-planning.js +2 -1
  133. package/src/gates/g3-implementation.js +2 -1
  134. package/src/gates/g4-qa-implementation.js +3 -2
  135. package/src/gates/g5-deploy-ready.js +2 -1
  136. package/src/health/engine.js +4 -3
  137. package/src/installer/core.js +422 -81
  138. package/src/installer/preflight.js +131 -0
  139. package/src/installer/provider-overlay.js +3 -3
  140. package/src/installer/scaffold-applier.js +358 -0
  141. package/src/installer/templates.js +46 -29
  142. package/src/installer/validator.js +17 -12
  143. package/src/intelligence/registry-manager.js +22 -29
  144. package/src/intelligence/timeline.js +11 -6
  145. package/src/license/commands.js +1 -1
  146. package/src/license/wait.js +102 -0
  147. package/src/memory/agent-memory.js +81 -0
  148. package/src/memory/dream.js +32 -1
  149. package/src/merger/replace-merger.js +28 -15
  150. package/src/orchestrator/agent-selector.js +2 -1
  151. package/src/orchestrator/cli.js +1869 -71
  152. package/src/orchestrator/doctor.js +270 -0
  153. package/src/orchestrator/handoff-engine.js +4 -3
  154. package/src/orchestrator/index.js +2 -0
  155. package/src/orchestrator/pipeline-manager.js +306 -15
  156. package/src/orchestrator/session-manager.js +331 -6
  157. package/src/tasks/handoff.js +3 -2
  158. package/src/telemetry/config.js +4 -3
  159. package/src/telemetry/schema.js +1 -0
  160. package/src/terminal/collector.js +3 -2
  161. package/src/terminal/index.js +1 -2
  162. package/src/terminal/isolation.js +52 -18
  163. package/src/terminal/prompt-builder.js +42 -25
  164. package/src/terminal/run-parallel.js +1 -1
  165. package/src/terminal/run-team.js +3 -3
  166. package/src/terminal/team-task-list.js +43 -4
  167. package/src/upgrade/backup.js +3 -2
  168. package/src/upgrade/checker.js +3 -2
  169. package/src/upgrade/migrator.js +65 -7
  170. package/src/upgrade/tracked-files-detector.js +86 -0
  171. package/src/upgrade/user-messages.js +94 -0
  172. package/src/utils/config-parser.js +2 -1
  173. package/src/utils/feature-flags.js +2 -1
  174. package/src/utils/flatten-entities.js +69 -0
  175. package/src/utils/framework-dir.js +16 -0
  176. package/src/utils/model-id.js +85 -0
  177. package/src/utils/provider-limits.js +84 -23
  178. package/src/utils/schema-validator.js +1 -1
  179. package/src/wizard/i18n.js +5 -4
  180. package/src/wizard/index.js +14 -0
  181. package/assets/logo - c/303/263pia.png +0 -0
  182. package/assets/logo.svg +0 -42
  183. package/assets/logo2.png +0 -0
  184. package/assets/social-preview.png +0 -0
  185. package/scripts/bundle-framework.js +0 -69
  186. package/scripts/changelog-generator.js +0 -222
  187. package/scripts/codebase-mapper.js +0 -728
  188. package/scripts/commit-message-generator.js +0 -167
  189. package/scripts/coverage-analyzer.js +0 -260
  190. package/scripts/dependency-analyzer.js +0 -280
  191. package/scripts/doctor/checks/agents.js +0 -77
  192. package/scripts/doctor/checks/constitution.js +0 -41
  193. package/scripts/doctor/checks/domain-alignment.js +0 -58
  194. package/scripts/doctor/checks/prism-layers.js +0 -84
  195. package/scripts/doctor/checks/registry.js +0 -55
  196. package/scripts/doctor/checks/schemas.js +0 -61
  197. package/scripts/doctor/fixes/reference-fix.js +0 -100
  198. package/scripts/doctor/fixes/registry-fix.js +0 -56
  199. package/scripts/doctor/index.js +0 -212
  200. package/scripts/framework-analyzer.js +0 -308
  201. package/scripts/generate-constitution-domain.js +0 -253
  202. package/scripts/generate-signing-key.js +0 -33
  203. package/scripts/health-check.js +0 -481
  204. package/scripts/ide-sync.js +0 -326
  205. package/scripts/performance-analyzer.js +0 -325
  206. package/scripts/plan-tracker.js +0 -278
  207. package/scripts/populate-entity-registry.js +0 -481
  208. package/scripts/pr-review.js +0 -317
  209. package/scripts/rollback-manager.js +0 -310
  210. package/scripts/semantic-lint.js +0 -328
  211. package/scripts/sign-manifest.js +0 -53
  212. package/scripts/stuck-detector.js +0 -343
  213. package/scripts/test-quality-assessment.js +0 -257
  214. package/scripts/validate-agents.js +0 -368
  215. package/scripts/validate-package.js +0 -505
  216. package/scripts/validate-tasks.js +0 -465
  217. package/src/autonomy/worktree-manager.js +0 -250
  218. package/src/intelligence/decision-engine.js +0 -256
  219. package/src/intelligence/document-sharder.js +0 -221
  220. package/src/intelligence/elicitation.js +0 -265
@@ -0,0 +1,133 @@
1
+ # Scaffold Premium 3D — motion-premium-3d v1.0.0
2
+ #
3
+ # Extends motion-premium with React Three Fiber + Three.js templates for
4
+ # premium scroll-driven 3D experiences (camera rigs tied to ScrollTrigger
5
+ # scrub, scene crossfades, mesh animation, particle systems, WebGL
6
+ # fallback). Ship as a SEPARATE preset (ADR-3D-01) — 2D projects pay zero
7
+ # bundle cost; 3D projects apply motion-premium first, then this layer.
8
+ #
9
+ # Contract: files[] target paths are disjoint from motion-premium (checked
10
+ # at CI via scaffold-applier test in P9). The two presets compose without
11
+ # conflict on the scaffold-applier's already-exists skip guard.
12
+
13
+ id: motion-premium-3d
14
+ version: 1.0.0
15
+ description: "R3F + Three.js scroll-driven 3D layer for premium sites. Extends motion-premium. Separate bundle — apply only when 3D is in scope."
16
+
17
+ framework:
18
+ chati_dev: ">=4.3.0"
19
+
20
+ stack:
21
+ build_tools: ["nextjs"]
22
+ tailwind: ">=4.0.0"
23
+ typescript: ">=5.0.0"
24
+ node: ">=22.0.0"
25
+ react: ">=18.0.0"
26
+ # Peer deps pinned by MINOR (ADR-3D-06). Bumping policy: every two minor
27
+ # bumps from Three.js, update the tested matrix + re-validate templates.
28
+ three: "^0.160.0"
29
+ "@react-three/fiber": "^8.15.0"
30
+ "@react-three/drei": "^9.92.0"
31
+ # gsap + ScrollTrigger imported directly by ScrollScene.tsx and
32
+ # InvalidateOnScroll.tsx. motion-premium-3d composes on top of motion-premium
33
+ # but also declares the dep so a standalone apply (no motion-premium first)
34
+ # still has an accurate peer-dep surface.
35
+ gsap: "^3.12.5"
36
+
37
+ # Inherits motion-premium's brand placeholders — at apply time the loader
38
+ # resolves identically (brand.ts > brandbook.md > interactive). SceneFallback
39
+ # uses PRIMARY_HEX for the fallback background, hence the dependency here.
40
+ placeholders:
41
+ PRIMARY_HEX:
42
+ source: brand.colors.primary
43
+ default: "#7C3AED"
44
+ type: hex
45
+ BG_DEEP_HEX:
46
+ source: brand.colors.bgDeep
47
+ default: "#0A0A0F"
48
+ type: hex
49
+
50
+ brand_sources:
51
+ - path: lib/brand.ts
52
+ type: typescript
53
+ description: "Preferred: brand tokens shared with motion-premium"
54
+ - path: artifacts/4-UX/brandbook.md
55
+ type: markdown
56
+ description: "UX-authored brandbook"
57
+ - type: interactive
58
+ prompt: true
59
+ description: "Fallback: ask user for each placeholder"
60
+
61
+ # Files ship in phases P2-P5 of the workstream (see
62
+ # .planning/motion-premium-3d-v1.md). P1 landed the skeleton; P2 adds
63
+ # the WebGL detection + fallback trio; P3-P5 add the 3D canvas,
64
+ # scroll-scene, and demo templates.
65
+ files:
66
+ - source: lib/webgl/detect.ts.template
67
+ target: lib/webgl/detect.ts
68
+ phase: webgl
69
+ override: none
70
+ notes: "Pure client-side detector. WebGL2 > WebGL1 > reduced-motion opt-out. Scaffold-owned — the cleanup + reduced-motion coordination (ADR-3D-08) is invariant."
71
+ - source: components/webgl/WebGLContext.tsx.template
72
+ target: components/webgl/WebGLContext.tsx
73
+ phase: webgl
74
+ override: none
75
+ notes: "React context owning the one-shot detect result. useWebGLReady() hook exposed for consumer short-circuiting. Do not modify — all 3D templates rely on this shape."
76
+ - source: components/webgl/SceneFallback.tsx.template
77
+ target: components/webgl/SceneFallback.tsx
78
+ phase: webgl
79
+ override: partial
80
+ notes: "Rendered when WebGL is unavailable. Gradient uses brand placeholders. Extend with children (headline/CTA) — do not remove the role/aria-label contract."
81
+ - source: components/3d/CanvasProvider.tsx.template
82
+ target: components/3d/CanvasProvider.tsx
83
+ phase: canvas
84
+ override: none
85
+ notes: "Sole <Canvas> mount. frameloop=demand + WebGL gate + retina-aware DPR. Scaffold-owned — the single-RAF invariant depends on not patching this."
86
+ - source: components/3d/InvalidateOnScroll.tsx.template
87
+ target: components/3d/InvalidateOnScroll.tsx
88
+ phase: canvas
89
+ override: none
90
+ notes: "Bridges gsap.ticker -> R3F invalidate(). Must mount inside <Canvas>. Scaffold-owned — removing this re-fragments the RAF budget across Lenis/GSAP/R3F."
91
+ - source: components/3d/ScrollScene.tsx.template
92
+ target: components/3d/ScrollScene.tsx
93
+ phase: scroll-scene
94
+ override: none
95
+ notes: "Pinned section with ScrollTrigger-driven progress ref. Scaffold-owned — progress is read by CameraRig/ScrollCrossfade/MeshCrossfade inside <Canvas>."
96
+ - source: components/3d/CameraRig.tsx.template
97
+ target: components/3d/CameraRig.tsx
98
+ phase: scroll-scene
99
+ override: partial
100
+ notes: "Keyframe-driven camera interpolation. User supplies keyframes[] via props. Per-segment easing supported. Internal lerp uses reusable Vector3 scratch (zero per-frame alloc)."
101
+ - source: components/3d/ScrollCrossfade.tsx.template
102
+ target: components/3d/ScrollCrossfade.tsx
103
+ phase: scroll-scene
104
+ override: partial
105
+ notes: "Multi-group scene crossfade. stops[] + optional at[] for uneven spacing. Best-effort material.opacity cascade with visibility short-circuit for GPU skip."
106
+ - source: components/3d/MeshCrossfade.tsx.template
107
+ target: components/3d/MeshCrossfade.tsx
108
+ phase: scroll-scene
109
+ override: partial
110
+ notes: "Single-slot mesh variant swapping with hysteresis (default 2 percent). Use when inactive variants should NOT be instantiated."
111
+ - source: app/(3d)/scroll-demo/page.tsx.template
112
+ target: app/(3d)/scroll-demo/page.tsx
113
+ phase: demo
114
+ override: partial
115
+ notes: "Route-group entry. Server Component — metadata + Client wrapper. URL stays at /scroll-demo; drop app/(3d)/ folder to remove. User replaces content for production."
116
+ - source: app/(3d)/scroll-demo/ScrollDemoClient.tsx.template
117
+ target: app/(3d)/scroll-demo/ScrollDemoClient.tsx
118
+ phase: demo
119
+ override: partial
120
+ notes: "Client wrapper: WebGLProvider, ScrollScene, ScrollSceneContext. Dynamic-imports ScrollDemoCanvas with ssr:false. User customises overlay HTML + section length."
121
+ - source: app/(3d)/scroll-demo/ScrollDemoCanvas.tsx.template
122
+ target: app/(3d)/scroll-demo/ScrollDemoCanvas.tsx
123
+ phase: demo
124
+ override: partial
125
+ notes: "Canvas subtree: CanvasProvider + InvalidateOnScroll + CameraRig + MeshCrossfade + Preload. The 600KB 3D bundle is isolated behind this file's dynamic boundary."
126
+
127
+ principles:
128
+ - "Single RAF via frameloop=demand (ADR-3D-03) — Lenis drives GSAP drives invalidate()"
129
+ - "Canvas mounts client-only via next/dynamic({ ssr: false }) (ADR-3D-04)"
130
+ - "WebGL detection + SceneFallback graceful degrade (ADR-3D-05)"
131
+ - "Reduced-motion non-negotiable — prefers-reduced-motion=reduce renders fallback, never the canvas (ADR-3D-08)"
132
+ - "Disjoint file targets from motion-premium — scaffold-applier enforces the invariant"
133
+ - "R3F (not vanilla Three.js) for composability with React 19 (ADR-3D-02)"
@@ -3,8 +3,59 @@
3
3
  "title": "chati.dev Session",
4
4
  "description": "Schema for .chati/session.yaml - runtime state tracking",
5
5
  "type": "object",
6
- "required": ["project", "current_agent", "language", "execution_mode"],
6
+ "required": ["schema_version", "version", "project", "current_agent", "language", "execution_mode"],
7
7
  "properties": {
8
+ "schema_version": {
9
+ "type": "string",
10
+ "pattern": "^\\d+\\.\\d+$",
11
+ "description": "Session schema version (current: 1.2). migrateSession() handles v0 → v1.2 additively."
12
+ },
13
+ "version": {
14
+ "type": "string",
15
+ "description": "Legacy framework-version marker on the session object (distinct from schema_version). Kept for backwards compatibility."
16
+ },
17
+ "mode": {
18
+ "enum": ["discover", "plan", "build", "validate", "deploy", "completed"],
19
+ "default": "discover",
20
+ "description": "Flat pipeline macro-phase (mirrors project.state). Read by prism-engine and mode-governance hooks."
21
+ },
22
+ "project_type": {
23
+ "enum": ["greenfield", "brownfield"],
24
+ "default": "greenfield",
25
+ "description": "Flat copy of project.type — kept for hook convenience."
26
+ },
27
+ "started_at": {
28
+ "type": ["string", "null"],
29
+ "format": "date-time",
30
+ "description": "ISO timestamp of session creation. Consulted by reasoning-escalator for the deliberate-tier plan freshness check."
31
+ },
32
+ "pipeline_position": {
33
+ "type": "integer",
34
+ "minimum": 0,
35
+ "default": 0,
36
+ "description": "0-indexed position in the AGENT_PIPELINE array. Advanced by recordAgentCompletion."
37
+ },
38
+ "completed_agents": {
39
+ "type": "array",
40
+ "items": { "type": "string" },
41
+ "default": [],
42
+ "description": "History of completed agent names in order. Used by advance-trigger to gate re-entry and by the /chati next routing logic."
43
+ },
44
+ "agent_results": {
45
+ "type": "object",
46
+ "default": {},
47
+ "description": "Per-agent score history keyed by agent name. Populated by recordAgentCompletion.",
48
+ "patternProperties": {
49
+ "^[a-z][a-z0-9-]*$": {
50
+ "type": "object",
51
+ "properties": {
52
+ "score": { "type": "number", "minimum": 0, "maximum": 100 },
53
+ "verdict": { "enum": ["APPROVED", "REVIEW", "NEEDS_WORK", "PASS", "FAIL", null] },
54
+ "completed_at": { "type": ["string", "null"], "format": "date-time" }
55
+ }
56
+ }
57
+ }
58
+ },
8
59
  "project": {
9
60
  "type": "object",
10
61
  "required": ["name", "type", "state"],
@@ -19,32 +70,12 @@
19
70
  "default": "interactive",
20
71
  "description": "interactive = agent-driven guided mode; autonomous = Ralph Wiggum mode (Dev agent)"
21
72
  },
22
- "execution_profile": {
23
- "type": "string",
24
- "enum": ["explore", "guided", "autonomous"],
25
- "default": "guided",
26
- "description": "Current execution profile governing confirmation requirements"
27
- },
28
73
  "providers_enabled": {
29
74
  "type": "array",
30
75
  "items": { "type": "string" },
31
76
  "default": ["claude"],
32
77
  "description": "List of enabled CLI providers"
33
78
  },
34
- "profile_transitions": {
35
- "type": "array",
36
- "items": {
37
- "type": "object",
38
- "properties": {
39
- "from": { "type": "string" },
40
- "to": { "type": "string" },
41
- "reason": { "type": "string" },
42
- "timestamp": { "type": "string", "format": "date-time" }
43
- }
44
- },
45
- "default": [],
46
- "description": "History of execution profile changes"
47
- },
48
79
  "current_agent": {
49
80
  "type": "string",
50
81
  "description": "Currently active agent name"
@@ -300,6 +331,63 @@
300
331
  }
301
332
  }
302
333
  },
334
+ "scaffold_candidates": {
335
+ "type": "array",
336
+ "default": [],
337
+ "description": "Scaffold presets eligible for this project (Fase 10 auto-gate). Written by discovery agents (e.g. greenfield-wu) when stack answer matches a preset's trigger conditions.",
338
+ "items": { "type": "string" }
339
+ },
340
+ "scaffold_signals": {
341
+ "type": "object",
342
+ "default": {},
343
+ "description": "Per-preset confidence signals collected during planning (Fase 10 auto-gate). Keys are preset ids (e.g. 'motion_premium', using underscore to avoid YAML dash quoting).",
344
+ "patternProperties": {
345
+ "^[a-z][a-z0-9_]*$": {
346
+ "type": "object",
347
+ "properties": {
348
+ "confidence": { "type": "number", "minimum": 0, "maximum": 1, "description": "0.0 - 1.0. Gate fires at >= 0.7." },
349
+ "evidence": { "type": "array", "items": { "type": "string" }, "description": "Short strings naming the matches (e.g. 'GSAP ScrollTrigger', 'Lenis smooth-scroll')." },
350
+ "source_agent": { "type": "string", "description": "Agent that wrote this signal (e.g. 'ux-brand-architect')." },
351
+ "updated_at": { "type": "string", "format": "date-time" }
352
+ }
353
+ }
354
+ }
355
+ },
356
+ "scaffold_applied": {
357
+ "type": "array",
358
+ "default": [],
359
+ "description": "Presets that have been applied via the auto-gate decision dispatcher (Fase 10). Prevents double-apply if advance is re-run.",
360
+ "items": { "type": "string" }
361
+ },
362
+ "active_model": {
363
+ "type": ["string", "null"],
364
+ "default": null,
365
+ "description": "Normalized Claude model key (Article XII v2 / context-window-detection v1). Output of parseClaudeModelId — e.g. 'opus', 'opus[1m]', 'sonnet', 'haiku'. Written at /chati boot; drives context-limit resolution in hooks. Null = unknown (detection chain falls through to provider default)."
366
+ },
367
+ "active_provider": {
368
+ "type": ["string", "null"],
369
+ "enum": ["claude", "gemini", "codex", null],
370
+ "default": null,
371
+ "description": "Active CLI provider. Redundant with providers_enabled[0] but flat for hook convenience."
372
+ },
373
+ "context_tokens_used": {
374
+ "type": "integer",
375
+ "minimum": 0,
376
+ "default": 0,
377
+ "description": "Cumulative rolling estimate of tokens consumed in this session, character-based (1 token ≈ 4 chars). Updated by prism-engine on every UserPromptSubmit. Replaces turn-count as the primary metric for bracket determination."
378
+ },
379
+ "context_window_tokens": {
380
+ "type": ["integer", "null"],
381
+ "minimum": 1,
382
+ "default": null,
383
+ "description": "Cached window size resolved from active_model + active_provider. Lets hooks compute remaining% without re-loading model-limits.json."
384
+ },
385
+ "context_last_bracket": {
386
+ "type": ["string", "null"],
387
+ "enum": ["FRESH", "MODERATE", "DEPLETED", "CRITICAL", null],
388
+ "default": null,
389
+ "description": "Last computed bracket. Surfaced in /chati status and telemetry."
390
+ },
303
391
  "decision_trail": {
304
392
  "type": "array",
305
393
  "default": [],