forgedock 1.0.17 → 1.0.19

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 (134) hide show
  1. package/README.md +34 -1
  2. package/bin/cross-publish.mjs +344 -0
  3. package/bin/forgedock.mjs +229 -17
  4. package/commands/autopilot.md +77 -0
  5. package/commands/design-bench.md +176 -0
  6. package/commands/design-render-critique-loop.md +103 -0
  7. package/commands/design.md +259 -0
  8. package/commands/issue.md +7 -3
  9. package/commands/orchestrate.md +121 -0
  10. package/commands/{resume.md → pipeline-resume.md} +4 -4
  11. package/commands/{status.md → pipeline-status.md} +1 -1
  12. package/commands/qa-sweep.md +37 -2
  13. package/commands/quality-gate.md +57 -0
  14. package/commands/review-pr-staging.md +158 -2
  15. package/commands/test-gate.md +929 -0
  16. package/commands/work-on/build/implement.md +5 -3
  17. package/commands/work-on.md +53 -3
  18. package/docs/CI.md +177 -0
  19. package/docs/FORGE-PROTOCOL.md +324 -0
  20. package/docs/articles/b-vs-c-baseline.md +210 -0
  21. package/docs/articles/full-abc-benchmark.md +205 -0
  22. package/docs/articles/selective-spec-loading-token-savings.md +140 -0
  23. package/docs/design/abc-benchmark.md +195 -0
  24. package/docs/design/design-architect-rationale.md +123 -0
  25. package/docs/design/design-memory.md +61 -0
  26. package/docs/design/design-spec-schema.md +248 -0
  27. package/docs/design/design-system-lint.md +150 -0
  28. package/docs/design/divergent-generation.md +106 -0
  29. package/docs/design/effects-appropriateness.md +133 -0
  30. package/docs/design/fixtures/briefs/README.md +47 -0
  31. package/docs/design/fixtures/briefs/cadence.md +39 -0
  32. package/docs/design/fixtures/briefs/plume.md +39 -0
  33. package/docs/design/fixtures/briefs/slipstream.md +39 -0
  34. package/docs/design/fixtures/briefs/tender.md +39 -0
  35. package/docs/design/fixtures/briefs/voltage.md +39 -0
  36. package/docs/design/fixtures/runs/b-vs-c-baseline/cadence/arm-b/run-1.html +364 -0
  37. package/docs/design/fixtures/runs/b-vs-c-baseline/cadence/arm-b/run-2.html +420 -0
  38. package/docs/design/fixtures/runs/b-vs-c-baseline/cadence/arm-b/run-3.html +506 -0
  39. package/docs/design/fixtures/runs/b-vs-c-baseline/plume/arm-b/run-1.html +611 -0
  40. package/docs/design/fixtures/runs/b-vs-c-baseline/plume/arm-b/run-2.html +594 -0
  41. package/docs/design/fixtures/runs/b-vs-c-baseline/plume/arm-b/run-3.html +817 -0
  42. package/docs/design/fixtures/runs/b-vs-c-baseline/runs.json +175 -0
  43. package/docs/design/fixtures/runs/b-vs-c-baseline/scorecard.json +138 -0
  44. package/docs/design/fixtures/runs/b-vs-c-baseline/slipstream/arm-b/run-1.html +373 -0
  45. package/docs/design/fixtures/runs/b-vs-c-baseline/slipstream/arm-b/run-2.html +398 -0
  46. package/docs/design/fixtures/runs/b-vs-c-baseline/slipstream/arm-b/run-3.html +595 -0
  47. package/docs/design/fixtures/runs/b-vs-c-baseline/tender/arm-b/run-1.html +531 -0
  48. package/docs/design/fixtures/runs/b-vs-c-baseline/tender/arm-b/run-2.html +565 -0
  49. package/docs/design/fixtures/runs/b-vs-c-baseline/tender/arm-b/run-3.html +674 -0
  50. package/docs/design/fixtures/runs/b-vs-c-baseline/voltage/arm-b/run-1.html +388 -0
  51. package/docs/design/fixtures/runs/b-vs-c-baseline/voltage/arm-b/run-2.html +463 -0
  52. package/docs/design/fixtures/runs/b-vs-c-baseline/voltage/arm-b/run-3.html +568 -0
  53. package/docs/design/fixtures/runs/full-abc/cadence/arm-a/run-1.html +562 -0
  54. package/docs/design/fixtures/runs/full-abc/cadence/arm-a/run-2.html +618 -0
  55. package/docs/design/fixtures/runs/full-abc/cadence/arm-a/run-3.html +618 -0
  56. package/docs/design/fixtures/runs/full-abc/cadence/arm-b/run-1.html +364 -0
  57. package/docs/design/fixtures/runs/full-abc/cadence/arm-b/run-2.html +420 -0
  58. package/docs/design/fixtures/runs/full-abc/cadence/arm-b/run-3.html +506 -0
  59. package/docs/design/fixtures/runs/full-abc/plume/arm-a/run-1.html +527 -0
  60. package/docs/design/fixtures/runs/full-abc/plume/arm-a/run-2.html +445 -0
  61. package/docs/design/fixtures/runs/full-abc/plume/arm-a/run-3.html +483 -0
  62. package/docs/design/fixtures/runs/full-abc/plume/arm-b/run-1.html +611 -0
  63. package/docs/design/fixtures/runs/full-abc/plume/arm-b/run-2.html +594 -0
  64. package/docs/design/fixtures/runs/full-abc/plume/arm-b/run-3.html +817 -0
  65. package/docs/design/fixtures/runs/full-abc/runs.json +190 -0
  66. package/docs/design/fixtures/runs/full-abc/scorecard.json +144 -0
  67. package/docs/design/fixtures/runs/full-abc/slipstream/arm-a/run-1.html +496 -0
  68. package/docs/design/fixtures/runs/full-abc/slipstream/arm-a/run-2.html +447 -0
  69. package/docs/design/fixtures/runs/full-abc/slipstream/arm-a/run-3.html +564 -0
  70. package/docs/design/fixtures/runs/full-abc/slipstream/arm-b/run-1.html +373 -0
  71. package/docs/design/fixtures/runs/full-abc/slipstream/arm-b/run-2.html +398 -0
  72. package/docs/design/fixtures/runs/full-abc/slipstream/arm-b/run-3.html +595 -0
  73. package/docs/design/fixtures/runs/full-abc/tender/arm-a/run-1.html +622 -0
  74. package/docs/design/fixtures/runs/full-abc/tender/arm-a/run-2.html +475 -0
  75. package/docs/design/fixtures/runs/full-abc/tender/arm-a/run-3.html +660 -0
  76. package/docs/design/fixtures/runs/full-abc/tender/arm-b/run-1.html +531 -0
  77. package/docs/design/fixtures/runs/full-abc/tender/arm-b/run-2.html +565 -0
  78. package/docs/design/fixtures/runs/full-abc/tender/arm-b/run-3.html +674 -0
  79. package/docs/design/fixtures/runs/full-abc/voltage/arm-a/run-1.html +525 -0
  80. package/docs/design/fixtures/runs/full-abc/voltage/arm-a/run-2.html +446 -0
  81. package/docs/design/fixtures/runs/full-abc/voltage/arm-a/run-3.html +463 -0
  82. package/docs/design/fixtures/runs/full-abc/voltage/arm-b/run-1.html +388 -0
  83. package/docs/design/fixtures/runs/full-abc/voltage/arm-b/run-2.html +463 -0
  84. package/docs/design/fixtures/runs/full-abc/voltage/arm-b/run-3.html +568 -0
  85. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-a/run-1.html +1068 -0
  86. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-a/run-2.html +1423 -0
  87. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-a/run-3.html +1245 -0
  88. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-b/run-1.html +305 -0
  89. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-b/run-2.html +327 -0
  90. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-b/run-3.html +428 -0
  91. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-a/run-1.html +1270 -0
  92. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-a/run-2.html +1172 -0
  93. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-a/run-3.html +1532 -0
  94. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-b/run-1.html +315 -0
  95. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-b/run-2.html +342 -0
  96. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-b/run-3.html +353 -0
  97. package/docs/design/fixtures/runs/full-abc-opus/runs.json +190 -0
  98. package/docs/design/fixtures/runs/full-abc-opus/scorecard.json +144 -0
  99. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-a/run-1.html +345 -0
  100. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-a/run-2.html +396 -0
  101. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-a/run-3.html +502 -0
  102. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-b/run-1.html +408 -0
  103. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-b/run-2.html +446 -0
  104. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-b/run-3.html +496 -0
  105. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-a/run-1.html +813 -0
  106. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-a/run-2.html +711 -0
  107. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-a/run-3.html +721 -0
  108. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-b/run-1.html +280 -0
  109. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-b/run-2.html +291 -0
  110. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-b/run-3.html +366 -0
  111. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-a/run-1.html +1010 -0
  112. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-a/run-2.html +836 -0
  113. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-a/run-3.html +930 -0
  114. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-b/run-1.html +407 -0
  115. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-b/run-2.html +396 -0
  116. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-b/run-3.html +529 -0
  117. package/docs/design/foundations/brutalist.css +294 -0
  118. package/docs/design/foundations/editorial.css +300 -0
  119. package/docs/design/foundations/minimal-luxury.css +295 -0
  120. package/docs/design/foundations/technical.css +293 -0
  121. package/docs/design/foundations/warm-photo.css +299 -0
  122. package/docs/design/reference-corpus.md +1726 -0
  123. package/docs/design/render-critique-loop.md +57 -0
  124. package/docs/spec-graph-schema.md +397 -0
  125. package/package.json +1 -1
  126. package/scripts/bench-scorecard.mjs +239 -0
  127. package/scripts/build-spec-graph.mjs +509 -0
  128. package/scripts/check-native-conflicts.sh +200 -0
  129. package/scripts/classify-lane.sh +0 -7
  130. package/scripts/design-system-lint.mjs +993 -0
  131. package/scripts/graph-query.sh +486 -0
  132. package/scripts/transition-label.sh +10 -2
  133. package/scripts/validate-spec-graph.sh +423 -0
  134. package/templates/workflows/forgedock-review.yml +96 -0
@@ -0,0 +1,299 @@
1
+ /*
2
+ * warm-photo.css — Foundation for the warm-photographic archetype
3
+ *
4
+ * Archetype ID: warm-photographic
5
+ * Craft profile (reference-corpus.md):
6
+ * radius system: soft — 12px card / 8px input / 6px button
7
+ * button style: rounded; warm-tinted shadow; soft fill matching photo palette
8
+ * divider style: photo-edge bleed or subtle warm-tinted rule
9
+ * icon treatment: warm-tinted circles; 24px; soft drop shadow
10
+ *
11
+ * Override --color-accent (and related tokens) via a :root block in the
12
+ * generated page to brand this foundation without touching the file.
13
+ *
14
+ * Issue: #1048 — custom CSS component library per archetype
15
+ */
16
+
17
+ /* --- 1. Design Tokens --- */
18
+
19
+ :root {
20
+ /* Accent — override per brand */
21
+ --color-accent: #e07b4f; /* warm terracotta default */
22
+ --color-accent-subtle: rgba(224, 123, 79, 0.10);
23
+ --color-accent-hover: rgba(224, 123, 79, 0.18);
24
+
25
+ /* Surface palette — warm, human, approachable */
26
+ --color-bg: #fdfaf7; /* warm white */
27
+ --color-bg-raised: #f7f1ea;
28
+ --color-bg-sunken: #f0e6d8;
29
+ --color-fg: #1e1510;
30
+ --color-fg-muted: #6b4f3a;
31
+ --color-fg-faint: #aa8a78;
32
+ --color-border: rgba(120, 80, 50, 0.12);
33
+ --color-border-strong: rgba(120, 80, 50, 0.22);
34
+
35
+ /* Code surface */
36
+ --code-bg: rgba(120, 80, 50, 0.06);
37
+
38
+ /* Radius system — soft, at least 3 distinct values (N13 compliance) */
39
+ --radius-sm: 4px; /* micro elements */
40
+ --radius-btn: 6px; /* button */
41
+ --radius-input: 8px; /* input */
42
+ --radius-card: 12px; /* card */
43
+ --radius-circle: 9999px; /* icon circles + pill badges */
44
+
45
+ /* Shadow tokens — warm, soft, diffuse */
46
+ --shadow-card: 0 1px 4px rgba(120, 80, 50, 0.08),
47
+ 0 0 0 1px rgba(120, 80, 50, 0.08);
48
+ --shadow-card-hover: 0 8px 28px rgba(120, 80, 50, 0.14),
49
+ 0 0 0 1px rgba(120, 80, 50, 0.10);
50
+ --shadow-btn: 0 2px 8px rgba(224, 123, 79, 0.28);
51
+ --shadow-btn-hover: 0 4px 16px rgba(224, 123, 79, 0.36);
52
+ --shadow-icon: 0 2px 8px rgba(120, 80, 50, 0.20);
53
+ --shadow-elevated: 0 12px 40px rgba(120, 80, 50, 0.16);
54
+
55
+ /* Transition — warm, gentle */
56
+ --transition-fast: 160ms cubic-bezier(0.4, 0, 0.2, 1);
57
+ --transition-base: 260ms cubic-bezier(0.4, 0, 0.2, 1);
58
+ --transition-slow: 400ms cubic-bezier(0.4, 0, 0.2, 1);
59
+
60
+ /* Spacing scale */
61
+ --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px;
62
+ --space-6:24px; --space-8:32px; --space-12:48px; --space-16:64px; --space-24:96px;
63
+
64
+ /* Icon sizing — warm circles, 24px (craft profile) */
65
+ --icon-feature: 24px;
66
+ --icon-nav: 18px;
67
+ --icon-inline: 16px;
68
+ }
69
+
70
+ /* --- 2. Element Overrides (N18 compliance) --- */
71
+
72
+ /* Custom selection — warm accent tint */
73
+ ::selection {
74
+ background: var(--color-accent-subtle);
75
+ color: var(--color-fg);
76
+ }
77
+
78
+ /* Custom focus ring — warm accent (N18, N15 compliance) */
79
+ :focus-visible {
80
+ outline: 2px solid var(--color-accent);
81
+ outline-offset: 3px;
82
+ }
83
+
84
+ /* Custom scrollbar — warm, thin */
85
+ ::-webkit-scrollbar { width: 6px; height: 6px; }
86
+ ::-webkit-scrollbar-track { background: var(--color-bg-raised); }
87
+ ::-webkit-scrollbar-thumb {
88
+ background: var(--color-border-strong);
89
+ border-radius: var(--radius-circle);
90
+ }
91
+ ::-webkit-scrollbar-thumb:hover { background: var(--color-accent); }
92
+
93
+ /* Code blocks — warm, inline */
94
+ code, kbd {
95
+ background: var(--code-bg);
96
+ border-radius: var(--radius-sm);
97
+ padding: 2px 6px;
98
+ font-size: 0.875em;
99
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
100
+ }
101
+
102
+ /* Links — warm animated underline (N17 compliance) */
103
+ a:not([class]) {
104
+ color: var(--color-accent);
105
+ text-decoration: underline;
106
+ text-decoration-color: transparent;
107
+ text-underline-offset: 3px;
108
+ text-decoration-thickness: 1px;
109
+ transition: text-decoration-color var(--transition-fast);
110
+ }
111
+ a:not([class]):hover {
112
+ text-decoration-color: var(--color-accent);
113
+ }
114
+
115
+ /* --- 3. Component Classes --- */
116
+
117
+ /* --- Button --- */
118
+
119
+ .btn {
120
+ display: inline-flex;
121
+ align-items: center;
122
+ gap: var(--space-2);
123
+ padding: 11px 22px;
124
+ border-radius: var(--radius-btn); /* 6px — soft, rounded */
125
+ font-size: 0.9375rem;
126
+ font-weight: 500;
127
+ line-height: 1;
128
+ letter-spacing: 0.01em;
129
+ cursor: pointer;
130
+ white-space: nowrap;
131
+ transition: box-shadow var(--transition-fast),
132
+ transform var(--transition-fast),
133
+ background-color var(--transition-fast);
134
+ /* Warm-tinted shadow + soft fill — craft profile */
135
+ background-color: var(--color-accent);
136
+ color: #ffffff;
137
+ border: none;
138
+ box-shadow: var(--shadow-btn);
139
+ }
140
+
141
+ .btn:hover {
142
+ box-shadow: var(--shadow-btn-hover);
143
+ transform: translateY(-1px);
144
+ background-color: color-mix(in srgb, var(--color-accent) 90%, #000);
145
+ }
146
+
147
+ .btn:active {
148
+ transform: translateY(0px);
149
+ box-shadow: 0 1px 3px rgba(224, 123, 79, 0.16);
150
+ }
151
+
152
+ .btn:focus-visible {
153
+ outline: 2px solid var(--color-accent);
154
+ outline-offset: 3px;
155
+ }
156
+
157
+ /* Ghost / soft fill variant */
158
+ .btn-ghost {
159
+ background-color: var(--color-accent-subtle);
160
+ color: var(--color-accent);
161
+ border: none;
162
+ box-shadow: none;
163
+ }
164
+
165
+ .btn-ghost:hover {
166
+ background-color: var(--color-accent-hover);
167
+ transform: translateY(-1px);
168
+ box-shadow: 0 2px 8px rgba(224, 123, 79, 0.16);
169
+ }
170
+
171
+ .btn-ghost:active {
172
+ transform: translateY(0px);
173
+ box-shadow: none;
174
+ }
175
+
176
+ /* --- Card --- */
177
+
178
+ .card {
179
+ background: var(--color-bg-raised);
180
+ border-radius: var(--radius-card); /* 12px — soft */
181
+ box-shadow: var(--shadow-card);
182
+ padding: var(--space-6);
183
+ transition: box-shadow var(--transition-base),
184
+ transform var(--transition-base);
185
+ }
186
+
187
+ .card:hover {
188
+ box-shadow: var(--shadow-card-hover);
189
+ transform: translateY(-2px);
190
+ }
191
+
192
+ /* --- Badge --- */
193
+
194
+ .badge {
195
+ display: inline-flex;
196
+ align-items: center;
197
+ gap: var(--space-1);
198
+ padding: 3px 10px;
199
+ border-radius: var(--radius-circle); /* pill — categorical difference */
200
+ font-size: 0.75rem;
201
+ font-weight: 500;
202
+ letter-spacing: 0.03em;
203
+ text-transform: uppercase;
204
+ background-color: var(--color-accent-subtle);
205
+ color: var(--color-accent);
206
+ border: 1px solid rgba(224, 123, 79, 0.20);
207
+ }
208
+
209
+ /* --- Input --- */
210
+
211
+ .input {
212
+ display: block;
213
+ width: 100%;
214
+ padding: 10px 14px;
215
+ border-radius: var(--radius-input); /* 8px — distinct from card and btn */
216
+ font-size: 0.9375rem;
217
+ background-color: var(--color-bg);
218
+ color: var(--color-fg);
219
+ border: 1px solid var(--color-border-strong);
220
+ transition: border-color var(--transition-fast),
221
+ box-shadow var(--transition-fast);
222
+ -webkit-appearance: none;
223
+ appearance: none;
224
+ }
225
+
226
+ .input::placeholder { color: var(--color-fg-faint); }
227
+
228
+ .input:focus {
229
+ outline: none;
230
+ border-color: var(--color-accent);
231
+ box-shadow: 0 0 0 3px var(--color-accent-subtle);
232
+ }
233
+
234
+ /* --- 4. Utility Classes --- */
235
+
236
+ /* Scroll-triggered reveal (honors prefers-reduced-motion) */
237
+ .reveal {
238
+ opacity: 0;
239
+ transform: translateY(20px);
240
+ transition: opacity var(--transition-slow), transform var(--transition-slow);
241
+ }
242
+
243
+ .reveal.visible {
244
+ opacity: 1;
245
+ transform: translateY(0);
246
+ }
247
+
248
+ @media (prefers-reduced-motion: reduce) {
249
+ .reveal,
250
+ .reveal.visible {
251
+ opacity: 1;
252
+ transform: none;
253
+ transition: none;
254
+ }
255
+ }
256
+
257
+ /* Gradient text — warm accent direction */
258
+ .gradient-text {
259
+ background-image: linear-gradient(135deg, var(--color-accent) 0%, color-mix(in srgb, var(--color-accent) 60%, #c2410c) 100%);
260
+ -webkit-background-clip: text;
261
+ background-clip: text;
262
+ -webkit-text-fill-color: transparent;
263
+ color: transparent;
264
+ }
265
+
266
+ /* Glass — warm, diffuse */
267
+ .glass {
268
+ background: rgba(253, 250, 247, 0.78);
269
+ backdrop-filter: blur(12px);
270
+ -webkit-backdrop-filter: blur(12px);
271
+ border: 1px solid var(--color-border);
272
+ }
273
+
274
+ /* Divider — warm-tinted rule */
275
+ .divider {
276
+ height: 1px;
277
+ border: none;
278
+ background: linear-gradient(to right,
279
+ transparent, var(--color-accent-subtle) 15%,
280
+ var(--color-border-strong) 30%, var(--color-border-strong) 70%,
281
+ var(--color-accent-subtle) 85%,
282
+ transparent
283
+ );
284
+ margin: var(--space-12) 0;
285
+ }
286
+
287
+ /* Icon container — warm-tinted circle + soft shadow (craft profile) */
288
+ .icon-container {
289
+ display: inline-flex;
290
+ align-items: center;
291
+ justify-content: center;
292
+ width: var(--icon-feature);
293
+ height: var(--icon-feature);
294
+ border-radius: var(--radius-circle); /* circle — craft profile */
295
+ background-color: var(--color-accent-subtle);
296
+ color: var(--color-accent);
297
+ box-shadow: var(--shadow-icon); /* soft drop shadow — craft profile */
298
+ flex-shrink: 0;
299
+ }