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,175 @@
1
+ {
2
+ "corpus_version": "seed-v1",
3
+ "generation_model": "claude-sonnet-4-6",
4
+ "judge_model": "claude-sonnet-4-6",
5
+ "benchmark_date": "2026-06-22",
6
+ "note": "B-vs-C baseline only — no arm A. Slipstream arm C was viewport-only (vercel.com rendering timeout), flagged as calibration artifact.",
7
+ "products": [
8
+ {
9
+ "product": "cadence",
10
+ "reference": "resend.com",
11
+ "runs": [
12
+ {
13
+ "run": 1,
14
+ "pairwise": {"B_vs_C": "C"},
15
+ "rubric": {
16
+ "B": {"hierarchy": 3, "typography": 3, "color": 3, "whitespace": 3, "originality": 3, "mobile": 3},
17
+ "C": {"hierarchy": 5, "typography": 5, "color": 5, "whitespace": 5, "originality": 5, "mobile": 4}
18
+ },
19
+ "slop": {"B": 5, "C": 0}
20
+ },
21
+ {
22
+ "run": 2,
23
+ "pairwise": {"B_vs_C": "C"},
24
+ "rubric": {
25
+ "B": {"hierarchy": 3, "typography": 3, "color": 3, "whitespace": 3, "originality": 3, "mobile": 3},
26
+ "C": {"hierarchy": 5, "typography": 5, "color": 5, "whitespace": 5, "originality": 5, "mobile": 4}
27
+ },
28
+ "slop": {"B": 4, "C": 0}
29
+ },
30
+ {
31
+ "run": 3,
32
+ "pairwise": {"B_vs_C": "C"},
33
+ "rubric": {
34
+ "B": {"hierarchy": 3, "typography": 3, "color": 3, "whitespace": 3, "originality": 3, "mobile": 3},
35
+ "C": {"hierarchy": 5, "typography": 5, "color": 5, "whitespace": 5, "originality": 5, "mobile": 4}
36
+ },
37
+ "slop": {"B": 5, "C": 0}
38
+ }
39
+ ]
40
+ },
41
+ {
42
+ "product": "tender",
43
+ "reference": "stripe.com",
44
+ "runs": [
45
+ {
46
+ "run": 1,
47
+ "pairwise": {"B_vs_C": "C"},
48
+ "rubric": {
49
+ "B": {"hierarchy": 4, "typography": 4, "color": 4, "whitespace": 4, "originality": 3, "mobile": 3},
50
+ "C": {"hierarchy": 5, "typography": 5, "color": 5, "whitespace": 5, "originality": 5, "mobile": 4}
51
+ },
52
+ "slop": {"B": 4, "C": 1}
53
+ },
54
+ {
55
+ "run": 2,
56
+ "pairwise": {"B_vs_C": "C"},
57
+ "rubric": {
58
+ "B": {"hierarchy": 3, "typography": 3, "color": 3, "whitespace": 3, "originality": 3, "mobile": 3},
59
+ "C": {"hierarchy": 5, "typography": 5, "color": 5, "whitespace": 5, "originality": 5, "mobile": 4}
60
+ },
61
+ "slop": {"B": 6, "C": 1}
62
+ },
63
+ {
64
+ "run": 3,
65
+ "pairwise": {"B_vs_C": "C"},
66
+ "rubric": {
67
+ "B": {"hierarchy": 4, "typography": 4, "color": 3, "whitespace": 3, "originality": 3, "mobile": 3},
68
+ "C": {"hierarchy": 5, "typography": 5, "color": 5, "whitespace": 5, "originality": 5, "mobile": 4}
69
+ },
70
+ "slop": {"B": 5, "C": 1}
71
+ }
72
+ ]
73
+ },
74
+ {
75
+ "product": "slipstream",
76
+ "reference": "vercel.com",
77
+ "note": "CALIBRATION ARTIFACT: Arm C screenshot was viewport-only (vercel.com rendering timeout produced 54KB vs 1-3MB for other references). Judge rated B > C due to incomplete C capture, not genuine design superiority. Exclude from aggregate metrics or treat as suspect.",
78
+ "runs": [
79
+ {
80
+ "run": 1,
81
+ "pairwise": {"B_vs_C": "B"},
82
+ "rubric": {
83
+ "B": {"hierarchy": 4, "typography": 4, "color": 4, "whitespace": 4, "originality": 3, "mobile": 4},
84
+ "C": {"hierarchy": 4, "typography": 4, "color": 3, "whitespace": 3, "originality": 4, "mobile": 3}
85
+ },
86
+ "slop": {"B": 4, "C": 2}
87
+ },
88
+ {
89
+ "run": 2,
90
+ "pairwise": {"B_vs_C": "B"},
91
+ "rubric": {
92
+ "B": {"hierarchy": 4, "typography": 4, "color": 3, "whitespace": 4, "originality": 3, "mobile": 4},
93
+ "C": {"hierarchy": 4, "typography": 4, "color": 3, "whitespace": 3, "originality": 4, "mobile": 3}
94
+ },
95
+ "slop": {"B": 5, "C": 2}
96
+ },
97
+ {
98
+ "run": 3,
99
+ "pairwise": {"B_vs_C": "B"},
100
+ "rubric": {
101
+ "B": {"hierarchy": 5, "typography": 5, "color": 4, "whitespace": 4, "originality": 4, "mobile": 4},
102
+ "C": {"hierarchy": 4, "typography": 4, "color": 3, "whitespace": 3, "originality": 4, "mobile": 3}
103
+ },
104
+ "slop": {"B": 3, "C": 2}
105
+ }
106
+ ]
107
+ },
108
+ {
109
+ "product": "voltage",
110
+ "reference": "modal.com",
111
+ "runs": [
112
+ {
113
+ "run": 1,
114
+ "pairwise": {"B_vs_C": "C"},
115
+ "rubric": {
116
+ "B": {"hierarchy": 3, "typography": 3, "color": 3, "whitespace": 3, "originality": 2, "mobile": 3},
117
+ "C": {"hierarchy": 5, "typography": 5, "color": 5, "whitespace": 4, "originality": 5, "mobile": 4}
118
+ },
119
+ "slop": {"B": 5, "C": 1}
120
+ },
121
+ {
122
+ "run": 2,
123
+ "pairwise": {"B_vs_C": "C"},
124
+ "rubric": {
125
+ "B": {"hierarchy": 3, "typography": 3, "color": 3, "whitespace": 3, "originality": 3, "mobile": 3},
126
+ "C": {"hierarchy": 5, "typography": 5, "color": 5, "whitespace": 4, "originality": 5, "mobile": 4}
127
+ },
128
+ "slop": {"B": 6, "C": 1}
129
+ },
130
+ {
131
+ "run": 3,
132
+ "pairwise": {"B_vs_C": "C"},
133
+ "rubric": {
134
+ "B": {"hierarchy": 2, "typography": 2, "color": 2, "whitespace": 3, "originality": 2, "mobile": 3},
135
+ "C": {"hierarchy": 5, "typography": 5, "color": 5, "whitespace": 4, "originality": 5, "mobile": 4}
136
+ },
137
+ "slop": {"B": 7, "C": 1}
138
+ }
139
+ ]
140
+ },
141
+ {
142
+ "product": "plume",
143
+ "reference": "linear.app",
144
+ "runs": [
145
+ {
146
+ "run": 1,
147
+ "pairwise": {"B_vs_C": "C"},
148
+ "rubric": {
149
+ "B": {"hierarchy": 3, "typography": 3, "color": 3, "whitespace": 3, "originality": 2, "mobile": 3},
150
+ "C": {"hierarchy": 5, "typography": 5, "color": 5, "whitespace": 5, "originality": 5, "mobile": 4}
151
+ },
152
+ "slop": {"B": 6, "C": 1}
153
+ },
154
+ {
155
+ "run": 2,
156
+ "pairwise": {"B_vs_C": "C"},
157
+ "rubric": {
158
+ "B": {"hierarchy": 4, "typography": 4, "color": 4, "whitespace": 4, "originality": 4, "mobile": 4},
159
+ "C": {"hierarchy": 5, "typography": 5, "color": 5, "whitespace": 5, "originality": 5, "mobile": 4}
160
+ },
161
+ "slop": {"B": 2, "C": 1}
162
+ },
163
+ {
164
+ "run": 3,
165
+ "pairwise": {"B_vs_C": "C"},
166
+ "rubric": {
167
+ "B": {"hierarchy": 3, "typography": 4, "color": 3, "whitespace": 3, "originality": 3, "mobile": 3},
168
+ "C": {"hierarchy": 5, "typography": 5, "color": 5, "whitespace": 5, "originality": 5, "mobile": 4}
169
+ },
170
+ "slop": {"B": 5, "C": 1}
171
+ }
172
+ ]
173
+ }
174
+ ]
175
+ }
@@ -0,0 +1,138 @@
1
+ {
2
+ "corpus_version": "seed-v1",
3
+ "generation_model": "claude-sonnet-4-6",
4
+ "judge_model": "claude-sonnet-4-6",
5
+ "n_products": 5,
6
+ "n_runs_per_product": 3,
7
+ "win_rate_vs_C": {
8
+ "A": {
9
+ "mean": null,
10
+ "by_product": {
11
+ "cadence": null,
12
+ "tender": null,
13
+ "slipstream": null,
14
+ "voltage": null,
15
+ "plume": null
16
+ }
17
+ },
18
+ "B": {
19
+ "mean": 0.2,
20
+ "by_product": {
21
+ "cadence": 0,
22
+ "tender": 0,
23
+ "slipstream": 1,
24
+ "voltage": 0,
25
+ "plume": 0
26
+ }
27
+ }
28
+ },
29
+ "a_vs_b_win_rate": null,
30
+ "rubric": {
31
+ "A": {
32
+ "hierarchy": {
33
+ "mean": null,
34
+ "stdev": null
35
+ },
36
+ "typography": {
37
+ "mean": null,
38
+ "stdev": null
39
+ },
40
+ "color": {
41
+ "mean": null,
42
+ "stdev": null
43
+ },
44
+ "whitespace": {
45
+ "mean": null,
46
+ "stdev": null
47
+ },
48
+ "originality": {
49
+ "mean": null,
50
+ "stdev": null
51
+ },
52
+ "mobile": {
53
+ "mean": null,
54
+ "stdev": null
55
+ }
56
+ },
57
+ "B": {
58
+ "hierarchy": {
59
+ "mean": 3.4,
60
+ "stdev": 0.737
61
+ },
62
+ "typography": {
63
+ "mean": 3.467,
64
+ "stdev": 0.743
65
+ },
66
+ "color": {
67
+ "mean": 3.2,
68
+ "stdev": 0.561
69
+ },
70
+ "whitespace": {
71
+ "mean": 3.333,
72
+ "stdev": 0.488
73
+ },
74
+ "originality": {
75
+ "mean": 2.933,
76
+ "stdev": 0.594
77
+ },
78
+ "mobile": {
79
+ "mean": 3.267,
80
+ "stdev": 0.458
81
+ }
82
+ },
83
+ "C": {
84
+ "hierarchy": {
85
+ "mean": 4.8,
86
+ "stdev": 0.414
87
+ },
88
+ "typography": {
89
+ "mean": 4.8,
90
+ "stdev": 0.414
91
+ },
92
+ "color": {
93
+ "mean": 4.6,
94
+ "stdev": 0.828
95
+ },
96
+ "whitespace": {
97
+ "mean": 4.4,
98
+ "stdev": 0.828
99
+ },
100
+ "originality": {
101
+ "mean": 4.8,
102
+ "stdev": 0.414
103
+ },
104
+ "mobile": {
105
+ "mean": 3.8,
106
+ "stdev": 0.414
107
+ }
108
+ }
109
+ },
110
+ "slop": {
111
+ "A": null,
112
+ "B": 4.8,
113
+ "C": 1
114
+ },
115
+ "judge_calibration": {
116
+ "miscalibrated_runs": [
117
+ {
118
+ "product": "slipstream",
119
+ "run": 1,
120
+ "comparison": "B_vs_C",
121
+ "winner": "B"
122
+ },
123
+ {
124
+ "product": "slipstream",
125
+ "run": 2,
126
+ "comparison": "B_vs_C",
127
+ "winner": "B"
128
+ },
129
+ {
130
+ "product": "slipstream",
131
+ "run": 3,
132
+ "comparison": "B_vs_C",
133
+ "winner": "B"
134
+ }
135
+ ],
136
+ "ok": false
137
+ }
138
+ }