completion-kit 0.5.42 → 0.5.44

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 (38) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/completion_kit/application.js +17 -0
  3. data/app/assets/stylesheets/completion_kit/application.css +530 -39
  4. data/app/controllers/completion_kit/api/v1/calibrations_controller.rb +1 -1
  5. data/app/controllers/completion_kit/api/v1/runs_controller.rb +4 -0
  6. data/app/controllers/completion_kit/calibrations_controller.rb +1 -1
  7. data/app/controllers/completion_kit/metrics_controller.rb +88 -31
  8. data/app/controllers/completion_kit/runs_controller.rb +6 -0
  9. data/app/jobs/completion_kit/judge_review_job.rb +14 -0
  10. data/app/models/completion_kit/calibration.rb +6 -2
  11. data/app/models/completion_kit/metric.rb +0 -17
  12. data/app/models/completion_kit/{judge_version.rb → metric_version.rb} +35 -2
  13. data/app/models/completion_kit/review.rb +9 -0
  14. data/app/models/completion_kit/run.rb +28 -0
  15. data/app/services/completion_kit/mcp_tools/calibrations.rb +1 -1
  16. data/app/services/completion_kit/mcp_tools/judges.rb +15 -13
  17. data/app/services/completion_kit/metric_calibration_stats.rb +17 -5
  18. data/app/services/completion_kit/{judge_variant_generator.rb → metric_variant_generator.rb} +14 -12
  19. data/app/views/completion_kit/api_reference/_body.html.erb +1 -1
  20. data/app/views/completion_kit/calibrations/_buttons.html.erb +43 -6
  21. data/app/views/completion_kit/calibrations/_trust_panel.html.erb +32 -28
  22. data/app/views/completion_kit/metrics/_form.html.erb +90 -4
  23. data/app/views/completion_kit/metrics/_rubric_diff.html.erb +25 -0
  24. data/app/views/completion_kit/metrics/_rubric_hint.html.erb +4 -0
  25. data/app/views/completion_kit/metrics/_starter_card.html.erb +13 -9
  26. data/app/views/completion_kit/metrics/edit.html.erb +5 -1
  27. data/app/views/completion_kit/metrics/index.html.erb +5 -3
  28. data/app/views/completion_kit/metrics/show.html.erb +131 -127
  29. data/app/views/completion_kit/metrics/starter_preview.html.erb +6 -6
  30. data/app/views/completion_kit/responses/show.html.erb +9 -1
  31. data/app/views/completion_kit/runs/_status_panel.html.erb +2 -2
  32. data/app/views/completion_kit/runs/show.html.erb +23 -0
  33. data/config/routes.rb +2 -1
  34. data/db/migrate/20260525000001_add_version_number_and_published_at_to_judge_versions.rb +24 -0
  35. data/db/migrate/20260528000001_rename_judge_version_to_metric_version.rb +22 -0
  36. data/db/migrate/20260528000002_add_metric_version_to_reviews.rb +21 -0
  37. data/lib/completion_kit/version.rb +1 -1
  38. metadata +8 -3
@@ -1943,11 +1943,22 @@ tr:hover .ck-chip--publish {
1943
1943
  transition: all 0.15s;
1944
1944
  }
1945
1945
 
1946
+
1946
1947
  .ck-icon-btn svg {
1947
1948
  width: 16px;
1948
1949
  height: 16px;
1949
1950
  }
1950
1951
 
1952
+ .ck-icon-btn--form {
1953
+ min-height: 2rem;
1954
+ padding: 0.4rem 0.7rem;
1955
+ border-color: var(--ck-line-strong);
1956
+ }
1957
+ .ck-icon-btn--form.ck-icon-btn svg {
1958
+ width: 18px;
1959
+ height: 18px;
1960
+ }
1961
+
1951
1962
  .ck-select-with-action {
1952
1963
  display: flex;
1953
1964
  gap: 0.5rem;
@@ -2721,6 +2732,9 @@ select.ck-input {
2721
2732
  height: 16px;
2722
2733
  }
2723
2734
 
2735
+ .ck-metric-pip__sub {
2736
+ color: var(--ck-dim);
2737
+ }
2724
2738
  .ck-metric-pip__label strong {
2725
2739
  font-weight: 700;
2726
2740
  }
@@ -2802,6 +2816,31 @@ select.ck-input {
2802
2816
  line-height: 1.55;
2803
2817
  }
2804
2818
 
2819
+ .ck-review-card--stale {
2820
+ border-left: 2px solid rgba(224, 164, 88, 0.45);
2821
+ }
2822
+
2823
+ .ck-stale-versions-banner {
2824
+ margin: 0 0 1rem;
2825
+ padding: 0.9rem 1rem;
2826
+ border: 1px solid rgba(224, 164, 88, 0.4);
2827
+ background: rgba(224, 164, 88, 0.06);
2828
+ border-radius: var(--ck-radius);
2829
+ display: flex;
2830
+ align-items: center;
2831
+ justify-content: space-between;
2832
+ gap: 1rem;
2833
+ flex-wrap: wrap;
2834
+ }
2835
+ .ck-stale-versions-banner__body { min-width: 0; flex: 1 1 320px; }
2836
+ .ck-stale-versions-banner .ck-kicker { color: var(--ck-warning); }
2837
+ .ck-review-card__stale-note {
2838
+ margin: 0.4rem 0 0;
2839
+ font-family: var(--ck-mono);
2840
+ font-size: 0.78rem;
2841
+ color: var(--ck-warning);
2842
+ }
2843
+
2805
2844
  @media (max-width: 900px) {
2806
2845
  .ck-grid--sidebar,
2807
2846
  .ck-grid--cards,
@@ -3458,7 +3497,6 @@ select.ck-input {
3458
3497
  }
3459
3498
  .ck-tags-table__unused {
3460
3499
  color: var(--ck-dim);
3461
- font-style: italic;
3462
3500
  }
3463
3501
 
3464
3502
  .ck-mg-members {
@@ -3523,6 +3561,47 @@ select.ck-input {
3523
3561
  .ck-prompt-versions-table th:nth-child(3), .ck-prompt-versions-table td:nth-child(3) { width: 8rem; white-space: nowrap; }
3524
3562
  .ck-prompt-versions-table th:nth-child(4), .ck-prompt-versions-table td:nth-child(4) { width: auto; }
3525
3563
 
3564
+ .ck-metric-versions-table th:nth-child(1), .ck-metric-versions-table td:nth-child(1) { width: 16rem; }
3565
+ .ck-metric-versions-table th:nth-child(2), .ck-metric-versions-table td:nth-child(2) { width: 12rem; white-space: nowrap; }
3566
+ .ck-metric-versions-table th:nth-child(3), .ck-metric-versions-table td:nth-child(3) { width: auto; }
3567
+
3568
+ .ck-source-chip {
3569
+ display: inline-block;
3570
+ padding: 2px 8px;
3571
+ border-radius: 4px;
3572
+ font-family: var(--ck-mono);
3573
+ font-size: 0.7rem;
3574
+ letter-spacing: 0.06em;
3575
+ text-transform: uppercase;
3576
+ border: 1px solid var(--ck-line-strong);
3577
+ background: var(--ck-surface-soft);
3578
+ color: var(--ck-muted);
3579
+ }
3580
+ .ck-source-chip--ai {
3581
+ border-color: rgba(56, 189, 248, 0.35);
3582
+ background: rgba(56, 189, 248, 0.08);
3583
+ color: var(--ck-accent);
3584
+ }
3585
+ .ck-source-chip--manual {
3586
+ border-color: var(--ck-line-strong);
3587
+ color: var(--ck-text);
3588
+ }
3589
+ .ck-source-chip--initial {
3590
+ border-color: var(--ck-line);
3591
+ color: var(--ck-dim);
3592
+ }
3593
+ .ck-source-chip--current {
3594
+ border-color: var(--ck-line-strong);
3595
+ color: var(--ck-text);
3596
+ }
3597
+ .ck-source-chip--past {
3598
+ border-color: var(--ck-line);
3599
+ color: var(--ck-dim);
3600
+ }
3601
+ .ck-disagreement--stale {
3602
+ opacity: 0.7;
3603
+ }
3604
+
3526
3605
  .ck-suggestions-table th:nth-child(1), .ck-suggestions-table td:nth-child(1) { width: 16rem; white-space: nowrap; }
3527
3606
  .ck-suggestions-table th:nth-child(2), .ck-suggestions-table td:nth-child(2) { width: auto; }
3528
3607
  .ck-suggestions-table th:nth-child(3), .ck-suggestions-table td:nth-child(3) { width: 6rem; white-space: nowrap; }
@@ -3967,6 +4046,28 @@ table.ck-runs-table {
3967
4046
  transform: none;
3968
4047
  }
3969
4048
 
4049
+ .ck-info-hint {
4050
+ display: inline-flex;
4051
+ align-items: center;
4052
+ position: relative;
4053
+ vertical-align: middle;
4054
+ margin-left: 0.4rem;
4055
+ color: var(--ck-dim);
4056
+ cursor: help;
4057
+ }
4058
+ .ck-info-hint:hover,
4059
+ .ck-info-hint:focus-visible {
4060
+ color: var(--ck-text);
4061
+ }
4062
+ .ck-info-hint:hover .ck-info-popup,
4063
+ .ck-info-hint:focus-within .ck-info-popup {
4064
+ display: block;
4065
+ }
4066
+ .ck-info-hint svg {
4067
+ width: 14px;
4068
+ height: 14px;
4069
+ }
4070
+
3970
4071
  .ck-suggest-reasoning {
3971
4072
  margin: 1.5rem 0;
3972
4073
  padding: 1.25rem 1.5rem;
@@ -4000,6 +4101,65 @@ table.ck-runs-table {
4000
4101
  background: var(--ck-line);
4001
4102
  }
4002
4103
 
4104
+ .ck-kicker--inset {
4105
+ margin: 1.25rem 0 0.5rem;
4106
+ }
4107
+
4108
+ .ck-rubric-diff {
4109
+ margin: 0 0 0.5rem;
4110
+ border: 1px solid var(--ck-line);
4111
+ border-radius: var(--ck-radius);
4112
+ overflow: hidden;
4113
+ background: var(--ck-line);
4114
+ }
4115
+ .ck-rubric-diff__row {
4116
+ display: grid;
4117
+ grid-template-columns: 110px 1fr;
4118
+ gap: 1px;
4119
+ align-items: stretch;
4120
+ background: var(--ck-surface);
4121
+ border-bottom: 1px solid var(--ck-line);
4122
+ }
4123
+ .ck-rubric-diff__row:last-child { border-bottom: 0; }
4124
+ .ck-rubric-diff__row--unchanged { opacity: 0.55; }
4125
+ .ck-rubric-diff__stars {
4126
+ display: flex;
4127
+ align-items: center;
4128
+ gap: 2px;
4129
+ padding: 0.75rem 0.85rem;
4130
+ background: var(--ck-bg-strong);
4131
+ border-right: 1px solid var(--ck-line);
4132
+ white-space: nowrap;
4133
+ }
4134
+ .ck-rubric-diff__stars svg { width: 12px; height: 12px; flex-shrink: 0; }
4135
+ .ck-rubric-diff__panes {
4136
+ display: grid;
4137
+ grid-template-columns: 1fr 1fr;
4138
+ gap: 1px;
4139
+ background: var(--ck-line);
4140
+ min-width: 0;
4141
+ }
4142
+ .ck-rubric-diff__pane {
4143
+ margin: 0;
4144
+ padding: 0.7rem 0.85rem;
4145
+ background: var(--ck-surface);
4146
+ font-family: var(--ck-mono);
4147
+ font-size: 0.78rem;
4148
+ line-height: 1.55;
4149
+ color: var(--ck-text);
4150
+ white-space: pre-wrap;
4151
+ word-break: break-word;
4152
+ min-width: 0;
4153
+ }
4154
+ .ck-rubric-diff__unchanged {
4155
+ margin: 0;
4156
+ padding: 0.7rem 0.85rem;
4157
+ font-family: var(--ck-mono);
4158
+ font-size: 0.78rem;
4159
+ line-height: 1.55;
4160
+ color: var(--ck-dim);
4161
+ }
4162
+
4003
4163
  .ck-suggest-diff__pane {
4004
4164
  background: var(--ck-surface);
4005
4165
  min-width: 0;
@@ -4481,8 +4641,8 @@ a.tag-mark {
4481
4641
  .ck-settings-kicker__link:hover { color: var(--ck-text); }
4482
4642
 
4483
4643
  .tag-marks-row--header {
4484
- margin-top: -0.5rem;
4485
- margin-bottom: 1.25rem;
4644
+ margin-top: 0.4rem;
4645
+ margin-bottom: 0;
4486
4646
  }
4487
4647
 
4488
4648
 
@@ -5176,36 +5336,124 @@ a.tag-mark {
5176
5336
  }
5177
5337
  .ck-calibration__prompt {
5178
5338
  margin: 0 0 10px;
5179
- display: flex;
5180
- align-items: baseline;
5181
- flex-wrap: wrap;
5182
- gap: 8px 12px;
5183
- }
5184
- .ck-calibration__label {
5185
5339
  font-family: var(--ck-mono);
5186
5340
  font-size: 0.72rem;
5187
- letter-spacing: 0.06em;
5341
+ letter-spacing: 0.04em;
5342
+ color: var(--ck-dim);
5343
+ }
5344
+ .ck-calibration__prompt > * + * {
5345
+ margin-left: 8px;
5346
+ }
5347
+ .ck-calibration__label {
5348
+ letter-spacing: 0.08em;
5188
5349
  text-transform: uppercase;
5189
5350
  color: var(--ck-dim);
5190
- flex-shrink: 0;
5191
5351
  }
5192
- .ck-calibration__count {
5352
+ .ck-calibration__meta {
5353
+ color: var(--ck-muted);
5354
+ }
5355
+ .ck-calibration__sep {
5356
+ color: var(--ck-line-strong);
5357
+ }
5358
+ .ck-calibration__meta-link {
5359
+ color: var(--ck-accent);
5360
+ text-decoration: none;
5361
+ white-space: nowrap;
5362
+ text-transform: uppercase;
5363
+ letter-spacing: 0.08em;
5364
+ }
5365
+
5366
+ .ck-calibration__others {
5367
+ margin: 10px 0 0;
5193
5368
  font-family: var(--ck-mono);
5194
- font-size: 0.72rem;
5195
- letter-spacing: 0.03em;
5369
+ font-size: 0.78rem;
5370
+ }
5371
+ .ck-calibration__others-summary {
5372
+ display: inline-flex;
5373
+ align-items: center;
5374
+ gap: 6px;
5196
5375
  color: var(--ck-accent);
5376
+ font-weight: 500;
5377
+ cursor: pointer;
5378
+ user-select: none;
5379
+ list-style: none;
5197
5380
  }
5198
- .ck-calibration__hint {
5199
- font-size: 0.82rem;
5381
+ .ck-calibration__others-summary:hover,
5382
+ .ck-calibration__others-summary:focus-visible {
5383
+ color: var(--ck-accent-hover);
5384
+ }
5385
+ .ck-calibration__others-summary::-webkit-details-marker { display: none; }
5386
+ .ck-calibration__others-summary svg {
5387
+ width: 12px;
5388
+ height: 12px;
5389
+ transition: transform 0.15s;
5390
+ }
5391
+ .ck-calibration__others[open] .ck-calibration__others-summary svg {
5392
+ transform: rotate(90deg);
5393
+ }
5394
+ .ck-calibration__others-list {
5395
+ list-style: none;
5396
+ padding: 8px 0 0;
5397
+ margin: 0;
5398
+ display: flex;
5399
+ flex-direction: column;
5400
+ gap: 6px;
5401
+ }
5402
+ .ck-calibration__others-item {
5403
+ padding: 8px 10px;
5404
+ background: var(--ck-surface-soft);
5405
+ border: 1px solid var(--ck-line);
5406
+ border-radius: 4px;
5200
5407
  color: var(--ck-dim);
5201
- line-height: 1.4;
5202
5408
  }
5203
- @media (max-width: 640px) {
5204
- .ck-calibration__prompt {
5205
- flex-direction: column;
5206
- align-items: flex-start;
5207
- gap: 4px;
5208
- }
5409
+ .ck-calibration__others-item--agree { border-left: 2px solid var(--ck-success); }
5410
+ .ck-calibration__others-item--disagree { border-left: 2px solid var(--ck-danger); }
5411
+ .ck-calibration__others-item--borderline { border-left: 2px solid var(--ck-warning); }
5412
+ .ck-calibration__others-row {
5413
+ display: flex;
5414
+ flex-wrap: wrap;
5415
+ align-items: center;
5416
+ gap: 10px;
5417
+ line-height: 1;
5418
+ }
5419
+ .ck-calibration__others-verdict {
5420
+ display: inline-flex;
5421
+ align-items: center;
5422
+ gap: 4px;
5423
+ text-transform: uppercase;
5424
+ letter-spacing: 0.06em;
5425
+ font-weight: 500;
5426
+ color: var(--ck-text);
5427
+ }
5428
+ .ck-calibration__others-item--agree .ck-calibration__others-verdict { color: var(--ck-success); }
5429
+ .ck-calibration__others-item--disagree .ck-calibration__others-verdict { color: var(--ck-danger); }
5430
+ .ck-calibration__others-item--borderline .ck-calibration__others-verdict { color: var(--ck-warning); }
5431
+ .ck-calibration__others-by {
5432
+ color: var(--ck-muted);
5433
+ }
5434
+ .ck-calibration__others-stars {
5435
+ display: inline-flex;
5436
+ align-items: center;
5437
+ gap: 2px;
5438
+ }
5439
+ .ck-calibration__others-stars svg { display: block; }
5440
+ .ck-calibration__others-note {
5441
+ margin: 6px 0 0;
5442
+ color: var(--ck-dim);
5443
+ line-height: 1.5;
5444
+ }
5445
+ .ck-calibration__meta-link svg {
5446
+ display: inline-block;
5447
+ width: 12px;
5448
+ height: 12px;
5449
+ vertical-align: middle;
5450
+ margin-right: 3px;
5451
+ position: relative;
5452
+ top: -1px;
5453
+ }
5454
+ .ck-calibration__meta-link:hover,
5455
+ .ck-calibration__meta-link:focus-visible {
5456
+ color: var(--ck-accent-hover);
5209
5457
  }
5210
5458
  .ck-calibration__buttons {
5211
5459
  display: flex;
@@ -5268,6 +5516,10 @@ a.tag-mark {
5268
5516
  .ck-calibration__detail .ck-button {
5269
5517
  align-self: flex-start;
5270
5518
  }
5519
+ .ck-calibration__detail textarea {
5520
+ font-family: var(--ck-mono);
5521
+ font-size: 0.82rem;
5522
+ }
5271
5523
  .ck-calibration__value {
5272
5524
  color: var(--ck-accent);
5273
5525
  font-family: var(--ck-mono);
@@ -5361,6 +5613,112 @@ a.tag-mark {
5361
5613
  .ck-trust-panel__borderline--warning { color: var(--ck-warning); }
5362
5614
  .ck-trust-panel__borderline--danger { color: var(--ck-danger); }
5363
5615
 
5616
+ .ck-trust-line {
5617
+ margin: 10px 0 0;
5618
+ font-family: var(--ck-mono);
5619
+ font-size: 0.82rem;
5620
+ color: var(--ck-dim);
5621
+ line-height: 1.55;
5622
+ }
5623
+ .ck-trust-line > * + * {
5624
+ margin-left: 6px;
5625
+ }
5626
+ .ck-trust-line__label {
5627
+ font-size: 0.82rem;
5628
+ letter-spacing: 0.08em;
5629
+ text-transform: uppercase;
5630
+ color: var(--ck-muted);
5631
+ white-space: nowrap;
5632
+ }
5633
+ .ck-trust-line__label svg {
5634
+ display: inline-block;
5635
+ width: 14px;
5636
+ height: 14px;
5637
+ vertical-align: middle;
5638
+ margin-right: 2px;
5639
+ position: relative;
5640
+ top: -1px;
5641
+ }
5642
+ .ck-trust-line__state {
5643
+ color: var(--ck-text);
5644
+ font-weight: 500;
5645
+ }
5646
+ .ck-trust-icon {
5647
+ display: inline-block;
5648
+ width: 11px;
5649
+ height: 11px;
5650
+ vertical-align: -1px;
5651
+ margin-right: 4px;
5652
+ color: var(--ck-muted);
5653
+ }
5654
+ .ck-trust-line__state {
5655
+ color: var(--ck-text);
5656
+ }
5657
+ .ck-trust-line__sep {
5658
+ color: var(--ck-line-strong);
5659
+ }
5660
+ .ck-trust-line__counter {
5661
+ font-weight: 600;
5662
+ color: var(--ck-accent);
5663
+ }
5664
+ .ck-trust-line__score {
5665
+ font-weight: 600;
5666
+ color: var(--ck-success);
5667
+ }
5668
+ .ck-trust-line--early .ck-trust-line__score,
5669
+ .ck-trust-line--provisional .ck-trust-line__score {
5670
+ color: var(--ck-accent);
5671
+ }
5672
+ .ck-trust-line__margin {
5673
+ color: var(--ck-dim);
5674
+ }
5675
+ .ck-trust-line__gate {
5676
+ font-size: 0.68rem;
5677
+ letter-spacing: 0.06em;
5678
+ text-transform: uppercase;
5679
+ padding: 1px 6px;
5680
+ border-radius: 3px;
5681
+ border: 1px solid var(--ck-line);
5682
+ color: var(--ck-dim);
5683
+ }
5684
+ .ck-trust-line--firm .ck-trust-line__gate {
5685
+ color: var(--ck-success);
5686
+ border-color: rgba(45, 212, 168, 0.35);
5687
+ }
5688
+ .ck-trust-line__hint {
5689
+ color: var(--ck-dim);
5690
+ }
5691
+ .ck-trust-line__link {
5692
+ color: var(--ck-accent);
5693
+ text-decoration: none;
5694
+ font-weight: 500;
5695
+ white-space: nowrap;
5696
+ }
5697
+ .ck-trust-line__link:hover,
5698
+ .ck-trust-line__link:focus-visible {
5699
+ color: var(--ck-accent-hover);
5700
+ }
5701
+ .ck-trust-line__borderline--ok { color: var(--ck-dim); }
5702
+ .ck-trust-line__borderline--warning { color: var(--ck-warning); }
5703
+ .ck-trust-line__borderline--danger { color: var(--ck-danger); }
5704
+
5705
+ @media (max-width: 640px) {
5706
+ .ck-trust-panel {
5707
+ display: flex;
5708
+ width: 100%;
5709
+ box-sizing: border-box;
5710
+ }
5711
+ .ck-trust-panel__body {
5712
+ flex-direction: column;
5713
+ align-items: flex-start;
5714
+ gap: 4px;
5715
+ }
5716
+ .ck-trust-panel__hint {
5717
+ line-height: 1.4;
5718
+ white-space: normal;
5719
+ }
5720
+ }
5721
+
5364
5722
  .ck-disagreements-table td .ck-meta-copy {
5365
5723
  font-size: 0.78rem;
5366
5724
  }
@@ -5419,6 +5777,15 @@ a.tag-mark {
5419
5777
  letter-spacing: 0.03em;
5420
5778
  color: var(--ck-dim);
5421
5779
  }
5780
+ .ck-metrics-table__trust-label {
5781
+ text-transform: uppercase;
5782
+ letter-spacing: 0.08em;
5783
+ color: var(--ck-muted);
5784
+ margin-right: 4px;
5785
+ }
5786
+ .ck-metrics-table__trust-state {
5787
+ color: var(--ck-text);
5788
+ }
5422
5789
  .ck-metrics-table__trust-rate {
5423
5790
  font-weight: 600;
5424
5791
  color: var(--ck-success);
@@ -5459,6 +5826,8 @@ a.tag-mark {
5459
5826
  border-radius: 4px;
5460
5827
  }
5461
5828
  .ck-star-picker label svg {
5829
+ width: 20px;
5830
+ height: 20px;
5462
5831
  fill: transparent;
5463
5832
  stroke: var(--ck-line-strong);
5464
5833
  transition: fill 0.08s, stroke 0.08s;
@@ -5505,6 +5874,77 @@ a.tag-mark {
5505
5874
  flex-direction: column;
5506
5875
  gap: 8px;
5507
5876
  }
5877
+ .ck-disagreement--remembered {
5878
+ border-color: rgba(45, 212, 168, 0.35);
5879
+ background: rgba(45, 212, 168, 0.04);
5880
+ }
5881
+
5882
+ .ck-suggestion-banner {
5883
+ margin: 0 0 1rem;
5884
+ padding: 0.9rem 1rem;
5885
+ border: 1px solid rgba(56, 189, 248, 0.35);
5886
+ background: rgba(56, 189, 248, 0.05);
5887
+ border-radius: var(--ck-radius);
5888
+ display: flex;
5889
+ align-items: center;
5890
+ justify-content: space-between;
5891
+ gap: 1rem;
5892
+ flex-wrap: wrap;
5893
+ }
5894
+ .ck-suggestion-banner__body { min-width: 0; flex: 1 1 320px; }
5895
+ .ck-suggestion-banner__actions {
5896
+ display: inline-flex;
5897
+ align-items: center;
5898
+ gap: 0.5rem;
5899
+ flex-wrap: wrap;
5900
+ }
5901
+
5902
+ .ck-inline-suggestion {
5903
+ margin: 0.6rem 0 0;
5904
+ border: 1px solid rgba(56, 189, 248, 0.3);
5905
+ background: rgba(56, 189, 248, 0.04);
5906
+ border-radius: var(--ck-radius);
5907
+ overflow: hidden;
5908
+ }
5909
+ .ck-inline-suggestion--band { margin-top: 0.45rem; }
5910
+ .ck-inline-suggestion__head {
5911
+ display: flex;
5912
+ align-items: center;
5913
+ justify-content: space-between;
5914
+ gap: 0.6rem;
5915
+ padding: 0.55rem 0.75rem;
5916
+ background: rgba(56, 189, 248, 0.06);
5917
+ border-bottom: 1px solid rgba(56, 189, 248, 0.18);
5918
+ }
5919
+ .ck-inline-suggestion__head .ck-kicker { color: var(--ck-accent); }
5920
+ .ck-inline-suggestion__diff {
5921
+ display: grid;
5922
+ grid-template-columns: 1fr 1fr;
5923
+ gap: 1px;
5924
+ background: var(--ck-line);
5925
+ }
5926
+ .ck-inline-suggestion__pane {
5927
+ margin: 0;
5928
+ padding: 0.7rem 0.85rem;
5929
+ background: var(--ck-surface);
5930
+ font-family: var(--ck-mono);
5931
+ font-size: 0.78rem;
5932
+ line-height: 1.55;
5933
+ color: var(--ck-text);
5934
+ white-space: pre-wrap;
5935
+ word-break: break-word;
5936
+ min-width: 0;
5937
+ }
5938
+ .ck-inline-suggestion__apply.is-applied {
5939
+ color: var(--ck-success);
5940
+ border-color: rgba(45, 212, 168, 0.45);
5941
+ }
5942
+ .ck-disagreement__action {
5943
+ display: inline-flex;
5944
+ align-items: center;
5945
+ gap: 8px;
5946
+ flex-wrap: wrap;
5947
+ }
5508
5948
  .ck-disagreement__head {
5509
5949
  display: flex;
5510
5950
  align-items: center;
@@ -5538,6 +5978,15 @@ a.tag-mark {
5538
5978
  margin: 0;
5539
5979
  font-size: 0.78rem;
5540
5980
  }
5981
+ .ck-disagreement__source-link {
5982
+ color: var(--ck-accent);
5983
+ text-decoration: none;
5984
+ font-weight: 500;
5985
+ }
5986
+ .ck-disagreement__source-link:hover,
5987
+ .ck-disagreement__source-link:focus-visible {
5988
+ color: var(--ck-accent-hover);
5989
+ }
5541
5990
 
5542
5991
  .ck-starter-row {
5543
5992
  margin-top: 2rem;
@@ -5559,45 +6008,73 @@ a.tag-mark {
5559
6008
  }
5560
6009
  .ck-starter-grid {
5561
6010
  display: grid;
5562
- grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
5563
- gap: 12px;
6011
+ grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
6012
+ gap: 10px;
5564
6013
  }
5565
6014
  .ck-starter-card {
5566
6015
  display: flex;
5567
6016
  flex-direction: column;
5568
- gap: 8px;
5569
- padding: 14px;
5570
- background: var(--ck-surface);
6017
+ justify-content: space-between;
6018
+ gap: 10px;
6019
+ padding: 12px 14px;
6020
+ background: var(--ck-surface-soft);
5571
6021
  border: 1px solid var(--ck-line);
5572
- border-radius: var(--ck-radius-lg);
5573
- transition: border-color 0.12s, background 0.12s;
6022
+ border-radius: 6px;
6023
+ color: var(--ck-text);
6024
+ text-decoration: none;
6025
+ transition: border-color 0.12s, background 0.12s, color 0.12s;
5574
6026
  }
5575
- .ck-starter-card:hover {
5576
- border-color: rgba(6, 182, 212, 0.35);
6027
+ .ck-starter-card:hover,
6028
+ .ck-starter-card:focus-visible {
6029
+ border-color: rgba(6, 182, 212, 0.45);
5577
6030
  background: var(--ck-surface-hover);
5578
6031
  }
6032
+ .ck-starter-card__body {
6033
+ display: flex;
6034
+ flex-direction: column;
6035
+ gap: 4px;
6036
+ }
5579
6037
  .ck-starter-card__name {
5580
6038
  margin: 0;
5581
- font-size: 1rem;
5582
- font-weight: 600;
6039
+ font-family: var(--ck-mono);
6040
+ font-size: 0.92rem;
6041
+ letter-spacing: 0.01em;
5583
6042
  }
5584
6043
  .ck-starter-card__desc {
5585
6044
  margin: 0;
5586
- font-size: 0.85rem;
6045
+ font-size: 0.78rem;
5587
6046
  color: var(--ck-muted);
5588
6047
  line-height: 1.45;
5589
- flex: 1;
5590
6048
  }
5591
- .ck-starter-card__actions {
6049
+ .ck-starter-card__foot {
5592
6050
  display: flex;
5593
6051
  align-items: center;
5594
6052
  justify-content: space-between;
5595
6053
  gap: 10px;
5596
- margin-top: 4px;
6054
+ }
6055
+ .ck-starter-card__cta {
6056
+ font-family: var(--ck-mono);
6057
+ font-size: 0.72rem;
6058
+ letter-spacing: 0.06em;
6059
+ text-transform: uppercase;
6060
+ color: var(--ck-accent);
6061
+ }
6062
+ .ck-starter-card:hover .ck-starter-card__cta {
6063
+ color: var(--ck-accent-hover);
6064
+ }
6065
+ .ck-starter-card__dismiss-form {
6066
+ margin: 0;
5597
6067
  }
5598
6068
  .ck-starter-card__dismiss {
5599
- font-size: 0.75rem;
6069
+ background: transparent;
6070
+ border: 0;
6071
+ padding: 0;
6072
+ font-family: var(--ck-mono);
6073
+ font-size: 0.7rem;
6074
+ letter-spacing: 0.06em;
6075
+ text-transform: uppercase;
5600
6076
  color: var(--ck-dim);
6077
+ cursor: pointer;
5601
6078
  }
5602
6079
  .ck-starter-card__dismiss:hover,
5603
6080
  .ck-starter-card__dismiss:focus-visible {
@@ -5606,3 +6083,17 @@ a.tag-mark {
5606
6083
  .ck-actions--right {
5607
6084
  justify-content: flex-end;
5608
6085
  }
6086
+
6087
+ .ck-starter-actions {
6088
+ display: flex;
6089
+ align-items: center;
6090
+ justify-content: flex-end;
6091
+ gap: 10px;
6092
+ margin-top: 1.5rem;
6093
+ }
6094
+ .ck-starter-actions form.inline-block {
6095
+ margin: 0;
6096
+ }
6097
+ .ck-starter-actions .ck-button {
6098
+ line-height: 1;
6099
+ }
@@ -15,7 +15,7 @@ module CompletionKit
15
15
  run: @run,
16
16
  response: @response,
17
17
  metric: @metric,
18
- judge_version: JudgeVersion.ensure_current_for(@metric),
18
+ metric_version: MetricVersion.ensure_current_for(@metric),
19
19
  **calibration_params
20
20
  )
21
21