@ryuenn3123/agentic-senior-core 4.3.7 → 4.3.8

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 (39) hide show
  1. package/.agent-context/prompts/bootstrap-design.md +30 -40
  2. package/.agent-context/prompts/init-project.md +0 -2
  3. package/.agent-context/rules/architecture.md +1 -5
  4. package/.agent-context/rules/frontend-architecture.md +1 -1
  5. package/AGENTS.md +3 -2
  6. package/lib/cli/adaptive-context/catalog.mjs +0 -35
  7. package/lib/cli/audits/typography-palette-anti-repeat-audit.mjs +7 -23
  8. package/lib/cli/project-scaffolder/prompt-builders.mjs +13 -14
  9. package/lib/cli/project-scaffolder/storage.mjs +1 -1
  10. package/lib/cli/project-scaffolder/ui-scope-detection.mjs +36 -0
  11. package/lib/cli/project-scaffolder.mjs +1 -3
  12. package/package.json +1 -1
  13. package/scripts/adaptive-context/fixtures.mjs +7 -12
  14. package/scripts/context-triggered-audit.mjs +1 -6
  15. package/scripts/frontend-usability-audit.mjs +2 -7
  16. package/scripts/release-gate/constants.mjs +0 -12
  17. package/scripts/ui-design-judge/constants.mjs +1 -12
  18. package/scripts/ui-design-judge/design-execution-summary.mjs +50 -228
  19. package/scripts/ui-design-judge/prompting.mjs +3 -24
  20. package/scripts/validate/config.mjs +3 -87
  21. package/scripts/validate/file-structure.mjs +0 -3
  22. package/.agent-context/rules/efficiency-vs-hype.md +0 -15
  23. package/.agent-context/rules/git-workflow.md +0 -15
  24. package/.agent-context/rules/naming-conv.md +0 -35
  25. package/lib/cli/project-scaffolder/design-contract/sections/audits.mjs +0 -96
  26. package/lib/cli/project-scaffolder/design-contract/sections/conceptual-anchor.mjs +0 -167
  27. package/lib/cli/project-scaffolder/design-contract/sections/execution-handoff.mjs +0 -211
  28. package/lib/cli/project-scaffolder/design-contract/seed-signals.mjs +0 -79
  29. package/lib/cli/project-scaffolder/design-contract/signal-vocab.mjs +0 -64
  30. package/lib/cli/project-scaffolder/design-contract/validation/anchor-validators.mjs +0 -294
  31. package/lib/cli/project-scaffolder/design-contract/validation/audit-validators.mjs +0 -117
  32. package/lib/cli/project-scaffolder/design-contract/validation/completeness.mjs +0 -121
  33. package/lib/cli/project-scaffolder/design-contract/validation/execution-validators.mjs +0 -328
  34. package/lib/cli/project-scaffolder/design-contract/validation/helpers.mjs +0 -8
  35. package/lib/cli/project-scaffolder/design-contract/validation/research-dossier-validators.mjs +0 -104
  36. package/lib/cli/project-scaffolder/design-contract/validation/structural-validators.mjs +0 -79
  37. package/lib/cli/project-scaffolder/design-contract/validation/system-validators.mjs +0 -256
  38. package/lib/cli/project-scaffolder/design-contract/validation.mjs +0 -74
  39. package/lib/cli/project-scaffolder/design-contract.mjs +0 -470
@@ -1,470 +0,0 @@
1
- // @file-size-exception: Structural validation gates expanded size
2
- /**
3
- * Design Intent Contract builder. Composes the structured contract from
4
- * focused section builders living under `design-contract/`. Public exports
5
- * preserve the original surface so callers (project-scaffolder, storage,
6
- * prompt-builders) do not need to change.
7
- *
8
- * Public exports:
9
- * shouldBootstrapDesignDocument
10
- * buildDesignIntentSeedFromSignals
11
- * buildDesignIntentSeed
12
- * validateDesignContractCompleteness (re-exported from validation)
13
- * validateDesignIntentContract (re-exported from validation)
14
- */
15
-
16
- import { toTitleCase } from '../utils.mjs';
17
- import { DESIGN_REQUIRED_SECTIONS } from './constants.mjs';
18
- import {
19
- validateDesignContractCompleteness,
20
- validateDesignIntentContract,
21
- } from './design-contract/validation.mjs';
22
-
23
- import { buildStructureFirstSeedSignals, shouldBootstrapDesignDocument } from './design-contract/seed-signals.mjs';
24
- import { FORBIDDEN_PATTERN_SIGNALS } from './design-contract/signal-vocab.mjs';
25
- import { buildConceptualAnchorSection } from './design-contract/sections/conceptual-anchor.mjs';
26
- import {
27
- buildAccessibilityPolicySection,
28
- buildAiSafeUiAuditSection,
29
- buildMotionPaletteDecisionSection,
30
- buildProductionContentPolicySection,
31
- } from './design-contract/sections/audits.mjs';
32
- import {
33
- buildContextHygieneSection,
34
- buildDesignExecutionHandoffSection,
35
- buildDesignExecutionPolicySection,
36
- buildReviewRubricSection,
37
- } from './design-contract/sections/execution-handoff.mjs';
38
-
39
- export { shouldBootstrapDesignDocument };
40
- export { validateDesignContractCompleteness, validateDesignIntentContract };
41
-
42
- function buildDesignIntentContractObject({
43
- projectName,
44
- projectDescription,
45
- primaryDomain,
46
- features = [],
47
- initContext,
48
- status = 'seed-needs-design-synthesis',
49
- supplementalFields = {},
50
- }) {
51
- const inferredKeywords = buildStructureFirstSeedSignals({
52
- projectName,
53
- projectDescription,
54
- primaryDomain,
55
- features,
56
- supplementalFields,
57
- });
58
-
59
- return {
60
- _gate: {
61
- phase: 'scaffold-only',
62
- instruction: 'DO NOT fill conceptualAnchor, derivedTokenLogic, or any token values until research-design.md Section 3 is complete. Do not simplify or rewrite this scaffold. Fill fields in-place after research.',
63
- blockedFields: [
64
- 'conceptualAnchor.anchorReference',
65
- 'conceptualAnchor.categoryCodes.candidateEntries',
66
- 'derivedTokenLogic.colorDerivationSource',
67
- 'motionPaletteDecision'
68
- ]
69
- },
70
- mode: 'dynamic',
71
- status,
72
- seedPolicy: {
73
- mode: 'structure-first-scaffold',
74
- requiresProjectSpecificRefinement: true,
75
- forbidLiteralCarryoverAsFinalArtDirection: true,
76
- repoEvidenceShouldOverrideSeedTaste: true,
77
- },
78
- project: {
79
- name: projectName,
80
- context: projectDescription,
81
- domain: primaryDomain,
82
- runtimeConstraint: initContext.stackFileName === 'agent-decision-runtime.md'
83
- ? 'agent-recommendation-required'
84
- : toTitleCase(initContext.stackFileName),
85
- architectureConstraint: initContext.blueprintFileName === 'agent-decision-architecture.md'
86
- ? 'agent-recommendation-required'
87
- : toTitleCase(initContext.blueprintFileName),
88
- },
89
- designPhilosophy: inferredKeywords.designPhilosophy,
90
- visualDirection: {
91
- seedMode: 'scaffold-only',
92
- requiresProjectSpecificSynthesis: true,
93
- selectionAuthority: 'agent-llm-after-current-context-repo-evidence-and-live-official-docs',
94
- trendStance: 'current-context-first-not-offline-preset-first',
95
- distinctiveMoves: inferredKeywords.distinctiveMoves,
96
- copiedReferenceAllowed: false,
97
- },
98
- externalResearchIntake: {
99
- userSuppliedResearchPolicy: 'read-as-candidate-evidence-not-final-prescription',
100
- requireSummaryOfUsedSignals: true,
101
- requireFitFiltering: true,
102
- requireOfficialDocsVerificationForTechnologyClaims: true,
103
- sourceFreshnessPolicy: {
104
- mode: 'rolling-current-date',
105
- currentDateAnchor: 'session-current-date',
106
- trendLookbackMonths: 24,
107
- implementationClaimsRequire: 'current-official-docs-or-primary-release-notes',
108
- olderSourcePolicy: 'older sources may support durable principles only when labeled old-timeless; they cannot prove current modernity',
109
- noLiveResearchFallback: 'set sourceFreshnessStatus to pending-live-verification and do not claim current-year modernity',
110
- },
111
- internalVocabularyPolicy: { terms: ['evidence', 'dossier', 'anchor', 'category-code', 'morphology', 'rename-test', 'source-freshness'], rule: 'Use research vocabulary for internal audit only; translate it into product-native language before UI copy, public docs, or user-facing rationale unless the user asks for the research trace.' },
112
- adaptiveUserConceptPolicy: {
113
- userConceptIsFirstClassConstraint: true,
114
- researchRole: 'support-refine-or-challenge-user-concept-with-evidence',
115
- overrideRequires: 'recorded product accessibility technical or evidence conflict',
116
- trendDefaultsCannotOverrideUserConceptSilently: true,
117
- },
118
- requiredEvidenceTableFields: [
119
- 'claim',
120
- 'sourceUrl',
121
- 'sourceType',
122
- 'publishedOrUpdatedAt',
123
- 'fetchedAt',
124
- 'confidence',
125
- 'decisionImpact',
126
- ],
127
- candidateDomains: [
128
- 'visual-direction',
129
- 'motion-and-scroll',
130
- 'ui-primitives-or-rich-media',
131
- 'typography-and-interaction',
132
- ],
133
- finalDecisionAuthority: 'project-fit-accessibility-performance-maintainability-delivery-speed-official-docs',
134
- },
135
- designFlexibilityPolicy: {
136
- mode: 'locked-outcomes-flexible-expression',
137
- contractRole: 'Use docs/DESIGN.md as review invariants and handoff structure, not as a frozen visual recipe unless the user explicitly locks a decision.',
138
- lockedOutcomeTypes: [
139
- 'confirmed-user-goals',
140
- 'repo-evidence-and-runtime-constraints',
141
- 'accessibility-and-production-readiness',
142
- 'forbidden-patterns-and-safety-gates',
143
- 'user-approved-brand-or-continuity-decisions',
144
- ],
145
- flexibleExpressionAxes: [
146
- 'exact-palette-primitives',
147
- 'font-family-selection',
148
- 'radius-shadow-and-surface-treatment',
149
- 'component-kit-theme-mapping',
150
- 'signature-move-implementation',
151
- 'literal-anchor-artifacts',
152
- 'spatial-metaphor-and-place-language',
153
- ],
154
- tokenLockingRule: 'Semantic roles are required, but exact primitive values stay flexible until repo evidence, accessibility validation, implementation constraints, or explicit user approval locks them.',
155
- signatureMovePolicy: 'Record the required experience outcome separately from candidate implementation moves; replace a candidate move when another move better fits the product.',
156
- libraryVisualLanguagePolicy: 'Libraries supply behavior, accessibility, primitives, and delivery speed; they must not dictate final composition, theme, morphology, or visual language.',
157
- literalAnchorPolicy: 'Translate anchors into workflow, hierarchy, density, typography, material behavior, state language, and interaction grammar before requiring literal props, marks, or chrome.',
158
- spatialMetaphorPolicy: 'Do not default anchors to room, darkroom, counting room, control room, war room, studio, lab, cockpit, or command center. Use place metaphors only when the product truly depends on a physical place model.',
159
- externalInspirationPolicy: 'External websites and examples are candidate evidence for constraints, mechanics, and quality bars; do not copy their layout rhythm, palette, component skin, brand posture, or visual metaphor.',
160
- },
161
- conceptualAnchor: buildConceptualAnchorSection(),
162
- researchDossier: {
163
- sourceFreshness: {
164
- status: 'agent-must-complete-before-ui-implementation',
165
- freshnessAnchorDate: 'session-current-date',
166
- rollingLookbackMonths: 24,
167
- officialDocsRequiredFor: [
168
- 'browser-capability',
169
- 'framework-setup',
170
- 'ui-library',
171
- 'animation-library',
172
- '3d-canvas-charting-library',
173
- 'styling-tool',
174
- 'accessibility-claim',
175
- ],
176
- sourceTypePolicy: {
177
- official: 'required for implementation and package/API claims when available',
178
- primary: 'preferred for product/studio/release claims',
179
- industry: 'allowed for trend discovery after fit filtering',
180
- opinion: 'advisory only; cannot lock design decisions alone',
181
- oldTimeless: 'allowed for durable principles only, not current-year modern claims',
182
- repoEvidence: 'highest authority for product constraints',
183
- userProvided: 'candidate evidence and concept constraint, not automatic final prescription',
184
- },
185
- evidenceTableRequiredFields: [
186
- 'claim',
187
- 'sourceUrl',
188
- 'sourceType',
189
- 'publishedOrUpdatedAt',
190
- 'fetchedAt',
191
- 'confidence',
192
- 'decisionImpact',
193
- ],
194
- evidenceTable: [],
195
- },
196
- },
197
- derivedTokenLogic: {
198
- anchorReference: 'agent-defined-anchor-reference',
199
- colorDerivationSource: 'Explain semantic color roles from anchorReference; reject generic palettes without anchor evidence.',
200
- spacingDerivationSource: 'Explain spacing rhythm, density, and exceptions from anchorReference. Spacing grids are layout math, not decorative background lines.',
201
- typographyDerivationSource: 'Explain display, body, metadata, and data roles from anchorReference.',
202
- motionDerivationSource: 'Explain duration, easing, choreography, and reduced-motion from anchorReference.',
203
- colorSpace: 'Prefer OKLCH for newly generated CSS tokens when supported; preserve existing design-system token formats and document fallback color space.',
204
- spatialBaseUnit: 'Name the base spacing unit, major multiples, density exceptions, and optical exceptions before writing spacing values.',
205
- typeScaleMethod: 'Prefer fluid clamp() type scales when supported; name ratio, role contrast, balance/wrap behavior, and numeric typography needs.',
206
- motionBudget: 'Name micro, layout, entrance, easing, stagger, and reduced-motion budgets; prefer transform/opacity for high-frequency motion.',
207
- validationRule: 'Every semantic token role must trace to anchorReference; keep exact primitive values flexible unless locked by repo evidence, accessibility validation, implementation constraints, or explicit user approval.',
208
- tokenContinuityClassification: {
209
- typography: 'pending-research',
210
- palette: 'pending-research',
211
- motion: 'pending-research',
212
- spacing: 'pending-research',
213
- validValues: ['anchor-derived', 'continuity-retained', 'newly-introduced', 'pending-research'],
214
- rule: 'For each token category, classify whether the choice is anchor-derived (causally tied to anchorReference real-world reality), continuity-retained (kept from a previous design iteration without re-derivation), or newly-introduced (fresh choice not tied to anchor). Continuity-retained is acceptable; pretending continuity is derivation is not.',
215
- },
216
- },
217
- motionPaletteDecision: buildMotionPaletteDecisionSection(),
218
- aiSafeUiAudit: buildAiSafeUiAuditSection({ projectName }),
219
- productionContentPolicy: buildProductionContentPolicySection(),
220
- libraryResearchStatus: 'pending-verification',
221
- libraryDecisions: [
222
- {
223
- library: 'agent-defined-or-none',
224
- purpose: 'Select UI-related libraries dynamically from product fit, accessibility, interaction quality, maintenance, and current official docs before imports.',
225
- verifiedAt: null,
226
- sourceUrl: null,
227
- stableVersion: null,
228
- fallbackIfUnavailable: 'Use native CSS, browser APIs, or existing dependencies.',
229
- selectionPolicy: 'Do not default to shadcn, native-only, Tailwind-only, or dependency avoidance by habit; do not avoid them out of guardrail fear when they fit.',
230
- officialScaffolderPolicy: 'For fresh projects, prefer official setup commands when they create the supported project shape; manual assembly requires a documented repo, learning, prototype, or architecture reason.',
231
- frameworkNeutralityPolicy: 'Next.js, Vite, Astro, React Router, SvelteKit, Laravel, and plain HTML are candidates, not defaults or forbidden choices. Compare at least one plausible alternative when no framework is user-constrained, then choose the technology that removes bottlenecks for this project.',
232
- },
233
- ],
234
- mathSystems: {
235
- typographyScaleRatio: inferredKeywords.typographyScaleRatio,
236
- baseGridUnit: inferredKeywords.baseGridUnit,
237
- spacingPattern: inferredKeywords.spacingPattern,
238
- densityMode: inferredKeywords.densityMode,
239
- seedValuesRequireCalibration: true,
240
- },
241
- tokenSystem: {
242
- sourceOfTruth: 'docs/DESIGN.md',
243
- taxonomyOrder: ['primitive', 'semantic', 'component'],
244
- primitiveColorSpace: 'OKLCH',
245
- requireSemanticAliases: true,
246
- semanticAliasesMutableWithoutComponentRewrite: true,
247
- componentTokensConsumeSemantic: true,
248
- forbidDirectComponentPrimitiveBypass: true,
249
- aliasReferenceStyle: 'brace-reference',
250
- fallbackPolicy: {
251
- forbidRawHexOutsidePrimitives: true,
252
- forbidRawSpacingOutsidePrimitives: true,
253
- requireDocumentedExceptionForLegacyBypass: true,
254
- },
255
- tokenLockingPolicy: {
256
- defaultLockState: 'semantic-roles-locked-primitives-flexible',
257
- lockedByDefault: ['semantic-role-purpose', 'accessibility-floor', 'state-role-meaning'],
258
- flexibleByDefault: ['exact-color-values', 'font-family', 'radius-values', 'shadow-values', 'component-skin'],
259
- promotionRule: 'Promote flexible tokens to locked only when user approval, repo evidence, accessibility validation, or implementation constraints require it.',
260
- },
261
- namingConstraints: {
262
- forbidCurlyBracesInNames: true,
263
- forbidDotsInNames: true,
264
- forbidSquareBracketsInNames: true,
265
- },
266
- },
267
- colorTruth: {
268
- format: 'OKLCH',
269
- allowHexDerivatives: true,
270
- requirePerceptualLightnessCurve: true,
271
- paletteRoles: inferredKeywords.paletteRoles,
272
- rolePolicy: 'minimum-semantic-scaffold',
273
- rolesAreMinimumScaffold: true,
274
- rolesMustBeAgentDefined: true,
275
- forbidAutopilotPalettesWithoutEvidence: true,
276
- intent: inferredKeywords.colorIntent,
277
- },
278
- crossViewportAdaptation: {
279
- adaptByRecomposition: true,
280
- touchTargetMinPx: 44,
281
- mutationRules: inferredKeywords.mutationRules,
282
- },
283
- motionSystem: {
284
- allowMeaningfulMotion: true,
285
- purpose: inferredKeywords.motionPurpose,
286
- seedToneLocked: false,
287
- densitySource: 'task-content-brand-device-accessibility',
288
- respectReducedMotion: true,
289
- },
290
- componentMorphology: {
291
- requireStateBehaviorMatrix: true,
292
- preserveIdentityAcrossViewports: true,
293
- seedBehaviorsRequireRefinement: true,
294
- stateKeys: ['default', 'hover', 'focus-visible', 'active', 'disabled', 'loading', 'empty', 'error', 'success', 'transition'],
295
- viewportBehavior: inferredKeywords.componentMorphology,
296
- },
297
- accessibilityPolicy: buildAccessibilityPolicySection(),
298
- designExecutionPolicy: buildDesignExecutionPolicySection(),
299
- designExecutionHandoff: buildDesignExecutionHandoffSection({
300
- projectName,
301
- primaryDomain,
302
- mutationRules: inferredKeywords.mutationRules,
303
- }),
304
- reviewRubric: buildReviewRubricSection(),
305
- contextHygiene: buildContextHygieneSection(),
306
- forbiddenPatterns: [...FORBIDDEN_PATTERN_SIGNALS],
307
- validationHints: [
308
- 'rejectArbitraryHexOnlyPalette',
309
- 'requireViewportMutationRules',
310
- 'requirePerceptualColorRationale',
311
- 'requireTokenLayering',
312
- 'requireTokenAliasingPlan',
313
- 'allowHexDerivatives',
314
- 'requireMotionRationale',
315
- 'requireStateMorphology',
316
- 'requireAccessibilitySplit',
317
- 'requireWcagHardFloor',
318
- 'requireStructuredDesignExecutionPolicy',
319
- 'requireStructuredDesignHandoff',
320
- 'requireVisualResetStrategyWhenZeroBasedRedesignRequested',
321
- 'requireConceptualAnchorWhenNoExternalResearch',
322
- 'requireAgentLedAnchorResearchWhenUserResearchMissing',
323
- 'rejectTimidDashboardAnchor',
324
- 'requireReviewRubric',
325
- 'requireGenericityExplanation',
326
- 'genericityAutoFail',
327
- 'requireSignatureMove',
328
- 'rejectTemplateNeutralLayout',
329
- 'requireAiSafeUiAudit',
330
- 'requireProductionContentPolicy',
331
- 'requireAiColorAudit',
332
- 'rejectAiColorDefaults',
333
- 'requireMotionSpatialCourageAudit',
334
- 'requireExplicit3dCanvasFitDecision',
335
- 'rejectSafetyAsCreativitySubstitute',
336
- 'rejectAiSafeUiTemplateLook',
337
- 'requireThreeProductSpecificSignals',
338
- 'rejectDecorativeBackgroundPatternsWithoutProductFunction',
339
- 'rejectTestingDemoUiCopy',
340
- 'rejectTerminalOnlyUserFlows',
341
- ],
342
- requiredDesignSections: DESIGN_REQUIRED_SECTIONS,
343
- implementation: {
344
- requiredDeliverables: ['docs/DESIGN.md'],
345
- requireDesignRationale: true,
346
- requireDistinctVisualDirection: true,
347
- requireMachineReadableContract: true,
348
- requireViewportMutationRules: true,
349
- requirePurposefulMotionGuidelines: true,
350
- requireRecognizableVisualBet: true,
351
- requireConceptualAnchor: true,
352
- bootstrapPrompt: '.agent-context/prompts/bootstrap-design.md',
353
- autoLoadedRuleFiles: [
354
- '.agent-context/prompts/bootstrap-design.md',
355
- '.agent-context/prompts/research-design.md',
356
- '.agent-context/rules/frontend-architecture.md',
357
- ],
358
- disallowedAutoLoadedRuleFiles: [
359
- '.agent-context/rules/database-design.md',
360
- '.agent-context/rules/docker-runtime.md',
361
- '.agent-context/rules/microservices.md',
362
- ],
363
- },
364
- ...supplementalFields,
365
- };
366
- }
367
-
368
-
369
- /**
370
- * Public schema index. Lists the field and signal names that this aggregator
371
- * is responsible for surfacing, so static validators can confirm the
372
- * aggregator declares the expected design contract surface in a single
373
- * grep-able location even after the implementation was split across
374
- * `design-contract/sections/*` files.
375
- *
376
- * Do not consume this array at runtime. It exists for the validate gate.
377
- */
378
- export const __DESIGN_CONTRACT_SCHEMA_INDEX__ = Object.freeze([
379
- // top-level structural fields
380
- '_gate',
381
- 'phase',
382
- 'instruction',
383
- 'blockedFields',
384
- 'tokenSystem',
385
- 'seedPolicy',
386
- 'structure-first-scaffold',
387
- 'colorTruth',
388
- 'motionPaletteDecision',
389
- 'designFlexibilityPolicy',
390
- 'crossViewportAdaptation',
391
- 'motionSystem',
392
- 'densitySource',
393
- 'seedToneLocked',
394
- 'componentMorphology',
395
- 'seedBehaviorsRequireRefinement',
396
- 'accessibilityPolicy',
397
- 'designExecutionPolicy',
398
- 'designExecutionHandoff',
399
- 'reviewRubric',
400
- 'contextHygiene',
401
- // ai-safe-ui audit fields
402
- 'aiSafeUiAudit',
403
- 'aiColorAudit',
404
- 'motionSpatialCourageAudit',
405
- 'requireAiColorAudit',
406
- 'requireMotionSpatialCourageAudit',
407
- 'requireAiSafeUiAudit',
408
- // genericity drift signals consumed by the rubric
409
- 'ai-color-default-palette-without-product-role-behavior',
410
- 'motion-or-3d-omitted-from-fear-without-fit-analysis',
411
- 'ai-safe-ui-template-look',
412
- 'interchangeable-product-renaming-test-fails',
413
- 'decorative-grid-or-glow-wallpaper-without-product-function',
414
- 'offline-prescribed-style-used-as-final-direction',
415
- 'unresearched-library-or-framework-choice',
416
- 'single-safe-typographic-family-without-role-contrast-or-rationale',
417
- 'modern-library-rejected-from-dependency-fear-without-tradeoff-analysis',
418
- 'component-library-selected-by-habit-without-product-fit',
419
- 'official-docs-backed-modern-library-choice',
420
- // execution policy gates
421
- 'separateRequiredOutcomesFromCandidateMoves',
422
- 'forbidCandidateMovesAsLockedRequirements',
423
- 'seedRefinementRequiredBeforeUiImplementation',
424
- 'requirePerSurfaceMutationOps',
425
- 'forbidUniformSiblingSurfaceTreatment',
426
- 'requireStructuredHandoff',
427
- 'handoffFormatVersion',
428
- 'requireSurfacePlan',
429
- 'requireComponentGraph',
430
- 'requireViewportMutationPlan',
431
- 'requireInteractionStateMatrix',
432
- 'requireContentPriorityMap',
433
- 'forbidScreenshotDependency',
434
- 'semanticReviewFocus',
435
- 'representationStrategy',
436
- // handoff payload fields
437
- 'seedMode',
438
- 'requiresTaskSpecificRefinement',
439
- 'primaryExperienceGoal',
440
- 'surfacePlan',
441
- 'contentPriorityMap',
442
- 'viewportMutationPlan',
443
- 'interactionStateMatrix',
444
- 'taskFlowNarrative',
445
- 'signatureMoveRationale',
446
- 'implementationGuardrails',
447
- 'expressionFlexibility',
448
- // rubric fields
449
- 'genericityAutoFail',
450
- 'genericitySignals',
451
- 'validBoldSignals',
452
- 'mustExplainGenericity',
453
- 'mustSeparateTasteFromFailure',
454
- // accessibility + reference policy
455
- 'hardComplianceFloor',
456
- 'advisoryContrastModel',
457
- 'repoEvidenceOverridesMemory',
458
- 'requireExplicitContinuityApproval',
459
- 'forbidCarryoverWhenUnapproved',
460
- 'approvedExternalConstraintUsage',
461
- 'requireViewportMutationRules',
462
- 'allowHexDerivatives',
463
- 'forbidAutopilotPalettesWithoutEvidence',
464
- 'rolesAreMinimumScaffold',
465
- // policy hooks consumed by tests + downstream tooling
466
- 'literalTranslationPolicy',
467
- 'spatialAutopilotPolicy',
468
- 'externalWebsiteReferencePolicy',
469
- 'manual-framework-scaffold-used-when-official-setup-fits',
470
- ]);