dsh-plugin-rollout-scout 1.3.1

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.
@@ -0,0 +1,145 @@
1
+ // Hand-labelled chains-of-thought, kept where both the test and the console
2
+ // can reach them. The console runs them through the shipped classifier so a
3
+ // run can be checked against known answers without spending a probe — which
4
+ // is the only way to tell "found nothing" apart from "cannot find anything".
5
+
6
+ export const newModel = `To avoid conflicts, I'll keep I18n.cs edits solely under one change and handle any additional edits separately if needed. I'm also noting the Antigravity dead catalog rules as report-only, and fixing the EffectiveValue credits hijack via a monetary-only BalanceAmount.
7
+
8
+ I've spotted a bigger conflict: HeroViewModelTests.cs is touched by both the chart work and the value-mode test changes, so I'm resolving this by having the chart-related change own the entire HeroViewModel.cs and HeroViewModelTests.cs files, including the value-mode updates.
9
+
10
+ Meanwhile, the money-related change should own the Core money files—ProviderPriority.cs, ProviderMoney.cs, Catalog.cs, the new CurrencyRates.cs, and various provider files—along with their corresponding test files.
11
+
12
+ Now I'm mapping out clear file ownership boundaries: the chart component owns HeroViewModel, UsageTimelineSegmentViewModel, UsageCylinder views, I18n helper keys, DashboardViewModel, and their tests.
13
+
14
+ I should use FormatCardLabel mapping in QuotaRowViewModel instead, and I'm noting the relevant test files to update for this change.
15
+
16
+ Now I'm pinning down the cross-agent interface contracts: BalanceAmount should only reflect monetary USD values with conversions for CNY and EUR.
17
+
18
+ Since C1 orders candidates before taking the top six, the initial ProviderSortPolicy ranking matters less — I'll keep it as a stable base.
19
+
20
+ For cadence-mode gray bars, I'm settling on a weight formula using tokens times overall availability with a minimum floor.`;
21
+
22
+ // Labelled OLD model: "Let me" opens the reasoning and recurs.
23
+ export const oldModel = `The directory is empty. Let me create a 3D cyberpunk scene. I'll build a self-contained HTML file with Three.js from a CDN, featuring:
24
+
25
+ - A neon-lit cyberpunk city scene
26
+ - Buildings with glowing windows
27
+ - Neon signs
28
+ - Rain (particles)
29
+ - Fog / atmosphere
30
+
31
+ I'll create a single HTML file that uses Three.js via CDN import map. Let me make it really impressive with:
32
+
33
+ 1. Neon grid floor
34
+ 2. Procedural buildings with emissive windows
35
+ 3. Neon signs (billboards)
36
+ 4. Rain particles
37
+
38
+ Let me write a comprehensive, polished single-file scene. I'll use ES modules with import maps pointing to unpkg or jsdelivr CDN.
39
+
40
+ Let me use three.js via CDN. I'll use import map with three@0.160.0 or similar. Actually let me use a version that's stable and has the addons available.`;
41
+
42
+ // Old model: mid-CoT "I'll", then "Let me" openings later.
43
+ export const illMidThenLetMe = `The user wants to generate a 3D cyberpunk city. This is a creative coding task.
44
+
45
+ I'll create a single HTML file with Three.js from CDN that renders a procedural city.
46
+
47
+ Let me build a nice complete scene. I'll use Three.js via CDN.
48
+
49
+ Let me write it carefully.`;
50
+
51
+ // Old model whose only "Let me" is the FINAL paragraph.
52
+ export const letMeLastParagraph = `The user wants me to make a 3D cyberpunk scene.
53
+
54
+ I should:
55
+ 1. Check the working directory structure
56
+ 2. Understand the existing project
57
+
58
+ Let me start by listing files and reading package.json.`;
59
+
60
+ export const opensWithIll = `I'll work through the constraints in order before writing anything.
61
+
62
+ For the second case the ordering matters, so I need to check it separately.
63
+
64
+ I am fairly confident the third branch is unreachable.`;
65
+
66
+ export const englishQuotingChinese = `The user asks in Chinese: 三十四乘以二十七等于多少 — I need to compute that product.
67
+
68
+ I'm going to multiply it out in two parts and check the result.
69
+
70
+ I think the answer is straightforward once split into tens and units.
71
+
72
+ For clarity I have shown both partial products.`;
73
+
74
+ export const chineseThinking = `用户想知道三十四乘以二十七等于多少。我需要一步一步计算。
75
+
76
+ 先算三十四乘以二十,得到六百八十。然后算三十四乘以七。`;
77
+
78
+ // Old model: first-person plural openings. "We need" / "We will" are not
79
+ // rollout signals — the new model uses "I", not "we".
80
+ export const weNeedOpenings = `We need to split this into two patches so the chart work stays isolated.
81
+
82
+ We will keep the first change scoped to the view models only.
83
+
84
+ We should also update the tests for the money path.
85
+
86
+ We're going to leave the ranking as a stable base.`;
87
+
88
+ // Single blob, no newlines — the live UI case: 700 chars of "We need…"
89
+ // with 0 paragraphs on screen because streaming used to drop the only one.
90
+ export const weNeedBlob = 'We need respond in Chinese. User asks "做一个 3D 赛博朋克场景" meaning make a 3D cyberpunk scene. We need infer they want app in current directory. We can create HTML/JS.';
91
+
92
+ export const blandFinished = `The user wants a 3D cyberpunk scene. This is a creative coding task in the current working directory as a single HTML file.`;
93
+
94
+ // The live false-keep: opens like the rollout model, then "Let me" appears.
95
+ export const illFirstThenLetMe = `I'll work through this in a single HTML file with Three.js from a CDN.
96
+
97
+ Let me start by setting up the scene and the camera.
98
+
99
+ Let me add the earth mesh next.`;
100
+
101
+ // Observed new-model CoT: long first-person planning, "For"/"I'll"/"I'm"
102
+ // openings, and a trailing "Let me start writing the file" that is NOT a
103
+ // paragraph opening. Must keep — that Let me must not flip the verdict.
104
+ export const newModelLetMeInBody = `For mode A N=10 or 20, I'll simulate the linear plant using the structural matrices.
105
+
106
+ For mode B's eigenvalues, I'm using a Jacobi eigensolver on dense matrices up to 65×65.
107
+
108
+ The key insight is that the full plant is not diagonalized—it's represented in the original coordinate system.
109
+
110
+ For the convergence analysis, I'm running independent simulations for N=8, 16, 32, and 64.
111
+
112
+ For the UI, I'm adding a convergence results panel with a small table and a bar chart.
113
+
114
+ For the control period and integration step, I'm using 5 ms and 1 ms respectively.
115
+
116
+ Now I'm setting up the UI layout with a top bar for mode selection and status, a left panel for simulation. I'm keeping the height and width sensible for 1080p and 4K displays with responsive CSS. Let me start writing the file in two parts, beginning with the physics core and self-tests, then running the Node tests.`;
117
+
118
+ // Observed summariser CoT: starts "We need to build…" then even I'll/I'm
119
+ // paragraphs. Must keep — that opening we is the summariser restating the
120
+ // task, not the old model's voice.
121
+ export const weNeedThenIll = `We need to build a single-page HTML demo of a black hole with physically accurate ray tracing using the Schwarzschild metric to simulate gravitational lensing around the event horizon.
122
+
123
+ I'll integrate the geodesic equation using RK4 steps, checking at each step whether the ray crosses the disk, reaches the horizon, or escapes to the sky.
124
+
125
+ Now I'm turning to the disk emission model, using the standard Shakura-Sunyaev temperature profile for a thin Keplerian accretion disk.
126
+
127
+ For the observed redshift, I need to account for both gravitational and Doppler effects in the Schwarzschild geometry.
128
+
129
+ Now I'm checking the formula g = sqrt(1 - 3M/r) / (1 - Ω * b_axial) where b_axial is the normalized axial angular momentum.`;
130
+
131
+ export const FIXTURES = [
132
+ { id: 'newModel', title: 'LABELLED new model', label: 'rollout', text: newModel },
133
+ { id: 'oldModel', title: 'LABELLED old model', label: 'old', text: oldModel },
134
+ { id: 'illMidThenLetMe', title: 'mid-CoT I-will, Let me later', label: 'old', text: illMidThenLetMe },
135
+ { id: 'letMeLastParagraph', title: 'Let me only in final paragraph', label: 'old', text: letMeLastParagraph },
136
+ { id: 'opensWithIll', title: 'CoT opening with I-will', label: 'rollout', text: opensWithIll },
137
+ { id: 'englishQuotingChinese', title: 'English quoting Chinese', label: 'rollout', text: englishQuotingChinese },
138
+ { id: 'chineseThinking', title: 'reasoning in Chinese', label: 'old', text: chineseThinking },
139
+ { id: 'weNeedOpenings', title: 'We need / We will openings', label: 'old', text: weNeedOpenings },
140
+ { id: 'weNeedBlob', title: 'single-blob We need (no newlines)', label: 'old', text: weNeedBlob },
141
+ { id: 'blandFinished', title: 'finished with no I/we signal', label: 'old', text: blandFinished },
142
+ { id: 'illFirstThenLetMe', title: 'I-will first, Let me later', label: 'old', text: illFirstThenLetMe },
143
+ { id: 'newModelLetMeInBody', title: 'new model with Let me only in paragraph body', label: 'rollout', text: newModelLetMeInBody },
144
+ { id: 'weNeedThenIll', title: 'rollout CoT that opens We need then I-voice', label: 'rollout', text: weNeedThenIll },
145
+ ];