Skip to content

Commit eb9567d

Browse files
committed
OX-02: real Visual Studio evidence, report and verdict GO_OWEN_VISUAL_STUDIO_ALPHA
- docs/notes/evidence/ox02-visual-studio/: the run on fbdc978 (Visual Studio Enterprise 2026 18.10), 19/19: acceptance log, results, Owen's trace, and the screenshots of the live squiggle/Error List row, navigation, CS+OWN, and disappearance. Kept byte-for-byte (-text). - docs/notes/owen-visual-studio-report.md: what was built, the two coordinate facts (no protocol column; #393), the evidence (198/198 in-process, 27/27 live gate on two OSes, 6/6 mutations, 19/19 in Visual Studio: edit->squiggle p95 349 ms, disappearance p95 347 ms, UI thread max 3.3 ms), gates, verdict. - alpha-readiness and the OX-01 IDE feasibility note point to it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
1 parent fbdc978 commit eb9567d

12 files changed

Lines changed: 413 additions & 4 deletions

‎.gitattributes‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,4 @@ docs/evidence/*.json text eol=lf
3030
# `core.autocrlf=true` would make a correct generator look stale.
3131
samples/OrderBackend/OrderBackend/Domain/Order.Protocol.cs text eol=lf
3232
samples/OrderBackend/evidence/* text eol=lf
33+
docs/notes/evidence/ox02-visual-studio/** -text

‎docs/notes/alpha-readiness.md‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,3 +135,17 @@ until the .NET alpha above is delicious. Do not let the spike exceed 20%.
135135
The standing priority is unchanged: **prove value, don't reshape form**
136136
([consolidation-and-positioning.md](consolidation-and-positioning.md)). This note is
137137
the concrete "what value, packaged how" gate for that.
138+
139+
## Update 2026-10-04: live diagnostics in Visual Studio (OX-02)
140+
141+
`GO_OWEN_VISUAL_STUDIO_ALPHA` (docs/notes/owen-visual-studio-report.md). One generic
142+
`Owen.VisualStudio` VSIX shows every active Owen extension's findings live, unsaved, as
143+
squiggles and Error List rows. It reads the project's `obj/owen/live.txt`, written by
144+
Owen.Build in design-time builds. It talks to `owen serve` from the project's own Owen.Build
145+
package. The extractor runs in-process over the editor's text, and the verdict is the Rust
146+
core's.
147+
148+
- Proven in a real Visual Studio 2026 on CI: 19/19.
149+
- Build/live parity is a gate.
150+
- Extensions ship no IDE code.
151+
- `dotnet build` stays the authoritative gate.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# OX-02 real Visual Studio evidence
2+
3+
From CI run 37175674769 (job `owen-visual-studio`, head `fbdc978`), Visual Studio Enterprise
4+
2026 18.10.12217.157 on the hosted `windows-2025-vs2026` image, driven by
5+
`scripts/vs/owen-vs-acceptance.ps1`. Kept byte-for-byte as uploaded.
6+
7+
- `acceptance.log`: every check, 19/19 passed.
8+
- `results.json`: the checks and the measurements (edit -> squiggle / disappearance per edit, UI-thread maximum, service timings, working set).
9+
- `trace.jsonl`: Owen.VisualStudio's own trace (`OWEN_LIVE_TRACE`): load, workspace snapshots (unsaved `Use.cs` + Roslyn's in-memory generated documents), publications with the service's timings, the tags the tagger produced per text version, UI-thread maxima.
10+
- `k2-squiggle.png`: `Use.cs*` unsaved; squiggles on `OrderProtocol.WithDraft(order, draft =>` (the finding) and on the inserted `draft.Submit(now);` (its witness step); the Error List row `OWN002 … LiveFixture Use.cs 10`.
11+
- `k2-navigated.png`: after double-clicking the row: caret at 10:9.
12+
- `p9-cs-and-own.png`: CS0029 and OWN002 side by side.
13+
- `k3-gone.png`: after deleting the line: no squiggle, no row.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
[04:03:20.333] Visual Studio: Visual Studio Enterprise 2026 18.10.12217.157 [b61ad8f0]
2+
[04:06:52.917] ok[install-vsix]: VSIXInstaller exit 0 into root suffix Exp
3+
[04:06:52.954] dropped the MEF cache C:\Users\runneradmin\AppData\Local\Microsoft\VisualStudio\18.0_b61ad8f0Exp\ComponentModelCache
4+
[04:07:48.331] devenv /updateconfiguration exit 0
5+
[04:07:48.396] devenv pid 1812
6+
[04:07:58.313] solution open after 9.893 s: D:\a\_temp\vsfx\ws\LiveFixture.sln
7+
[04:08:09.801] active document: D:\a\_temp\vsfx\ws\LiveFixture\Use.cs
8+
[04:08:10.954] ok[vsix-loaded]: Owen.VisualStudio composed in devenv: {"t":1791086890317,"kind":"log","data":{"line":"Owen live analysis loaded"}}
9+
[04:08:11.024] ok[L0-live-request]: the design-time build wrote D:\a\_temp\vsfx\ws\LiveFixture\obj\owen\live.txt (no build was run)
10+
[04:08:30.432] ok[K1-open-clean]: first publication (version 2, 4921 ms in the service): 0 entries, OWN: 0
11+
[04:08:30.437] snapshot: documents D:\a\_temp\vsfx\ws\LiveFixture\Use.cs; generated D:\a\_temp\vsfx\ws\LiveFixture\obj\Debug\net8.0\generated\Owen.TypedBuilder.Generator\Own.TypedBuilder.TypedBuilderGenerator\Order.Protocol.g.cs, D:\a\_temp\vsfx\ws\LiveFixture\obj\Debug\net8.0\generated\Owen.TypedBuilder.Generator\Own.TypedBuilder.TypedBuilderGenerator\Owen.TypedBuilder.Attributes.g.cs
12+
[04:08:31.460] ok[K1-unsaved-clean]: a clean unsaved edit was analysed (version 3) with no OWN entry; document saved=False
13+
[04:08:31.963] ok[K2-squiggle]: tags on Use.cs after the edit: 10:9+39 primary=True 'OrderProtocol.WithDraft(order, draft =>'; 13:13+18 primary=False 'draft.Submit(now);'
14+
[04:08:31.967] ok[K2-unsaved]: Use.cs is unsaved (Saved=False); the disk still has one Submit: True
15+
[04:08:33.309] ok[K2-error-list]: Error List row: OWN002 | IDisposable local 'draft' is used after it is disposed [resource: disposable] | LiveFixture | Use.cs | 10
16+
[04:08:34.933] ok[K2-navigation]: double-click -> 'D:\a\_temp\vsfx\ws\LiveFixture\Use.cs' line 10 column 9; expected 'D:\a\_temp\vsfx\ws\LiveFixture\Use.cs' line 10 column 9 (the core's location, §6)
17+
[04:08:36.475] ok[P9-cs-and-own]: CS0029 row: CS0029 | Cannot implicitly convert type 'string' to 'int' | LiveFixture | Use.cs | 10; OWN002 rows: 1
18+
[04:08:40.340] ok[K3-disappears]: after deleting the line: tags without OWN002 at +344 ms; Error List row gone: True
19+
[04:09:04.176] ok[T-edit-to-squiggle]: edit -> squiggle over 10/10 edits: p95 349 ms (threshold 1000), all: 334, 328, 349, 330, 336, 330, 347, 343, 328, 335
20+
[04:09:04.179] ok[T-edit-to-disappearance]: edit -> disappearance over 10/10 edits: p95 347 ms (threshold 1000), all: 328, 347, 330, 328, 336, 329, 322, 342, 343, 326
21+
[04:09:04.194] ok[T-ui-thread]: longest Owen UI-thread handler: 3.3251 ms (threshold 50)
22+
[04:09:04.202] ok[no-build]: no LiveFixture.dll under bin/ (0), no build-check request: the build host never ran
23+
[04:09:04.204] ok[never-saved]: Use.cs on disk is byte-identical to the fixture
24+
[04:09:04.556] owen serve processes before devenv ends: 5372
25+
[04:09:07.578] ok[no-orphan]: owen serve ran (1 process(es)) and did not outlive a killed devenv (0 left)
26+
[04:09:07.580] VS acceptance: all checks passed
87 KB
Loading
86.3 KB
Loading
80.8 KB
Loading
91.1 KB
Loading
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
{
2+
"checks": [
3+
{
4+
"name": "install-vsix",
5+
"ok": true,
6+
"detail": "VSIXInstaller exit 0 into root suffix Exp"
7+
},
8+
{
9+
"name": "vsix-loaded",
10+
"ok": true,
11+
"detail": "Owen.VisualStudio composed in devenv: {\"t\":1791086890317,\"kind\":\"log\",\"data\":{\"line\":\"Owen live analysis loaded\"}}"
12+
},
13+
{
14+
"name": "L0-live-request",
15+
"ok": true,
16+
"detail": "the design-time build wrote D:\\a\\_temp\\vsfx\\ws\\LiveFixture\\obj\\owen\\live.txt (no build was run)"
17+
},
18+
{
19+
"name": "K1-open-clean",
20+
"ok": true,
21+
"detail": "first publication (version 2, 4921 ms in the service): 0 entries, OWN: 0"
22+
},
23+
{
24+
"name": "K1-unsaved-clean",
25+
"ok": true,
26+
"detail": "a clean unsaved edit was analysed (version 3) with no OWN entry; document saved=False"
27+
},
28+
{
29+
"name": "K2-squiggle",
30+
"ok": true,
31+
"detail": "tags on Use.cs after the edit: 10:9+39 primary=True \u0027OrderProtocol.WithDraft(order, draft =\u003e\u0027; 13:13+18 primary=False \u0027draft.Submit(now);\u0027"
32+
},
33+
{
34+
"name": "K2-unsaved",
35+
"ok": true,
36+
"detail": "Use.cs is unsaved (Saved=False); the disk still has one Submit: True"
37+
},
38+
{
39+
"name": "K2-error-list",
40+
"ok": true,
41+
"detail": "Error List row: OWN002 | IDisposable local \u0027draft\u0027 is used after it is disposed [resource: disposable] | LiveFixture | Use.cs | 10"
42+
},
43+
{
44+
"name": "K2-navigation",
45+
"ok": true,
46+
"detail": "double-click -\u003e \u0027D:\\a\\_temp\\vsfx\\ws\\LiveFixture\\Use.cs\u0027 line 10 column 9; expected \u0027D:\\a\\_temp\\vsfx\\ws\\LiveFixture\\Use.cs\u0027 line 10 column 9 (the core\u0027s location, §6)"
47+
},
48+
{
49+
"name": "P9-cs-and-own",
50+
"ok": true,
51+
"detail": "CS0029 row: CS0029 | Cannot implicitly convert type \u0027string\u0027 to \u0027int\u0027 | LiveFixture | Use.cs | 10; OWN002 rows: 1"
52+
},
53+
{
54+
"name": "K3-disappears",
55+
"ok": true,
56+
"detail": "after deleting the line: tags without OWN002 at +344 ms; Error List row gone: True"
57+
},
58+
{
59+
"name": "T-edit-to-squiggle",
60+
"ok": true,
61+
"detail": "edit -\u003e squiggle over 10/10 edits: p95 349 ms (threshold 1000), all: 334, 328, 349, 330, 336, 330, 347, 343, 328, 335"
62+
},
63+
{
64+
"name": "T-edit-to-disappearance",
65+
"ok": true,
66+
"detail": "edit -\u003e disappearance over 10/10 edits: p95 347 ms (threshold 1000), all: 328, 347, 330, 328, 336, 329, 322, 342, 343, 326"
67+
},
68+
{
69+
"name": "T-ui-thread",
70+
"ok": true,
71+
"detail": "longest Owen UI-thread handler: 3.3251 ms (threshold 50)"
72+
},
73+
{
74+
"name": "no-build",
75+
"ok": true,
76+
"detail": "no LiveFixture.dll under bin/ (0), no build-check request: the build host never ran"
77+
},
78+
{
79+
"name": "never-saved",
80+
"ok": true,
81+
"detail": "Use.cs on disk is byte-identical to the fixture"
82+
},
83+
{
84+
"name": "no-orphan",
85+
"ok": true,
86+
"detail": "owen serve ran (1 process(es)) and did not outlive a killed devenv (0 left)"
87+
}
88+
],
89+
"measurements": {
90+
"visual_studio": "Visual Studio Enterprise 2026 18.10.12217.157",
91+
"cold_open_to_first_publication_ms": 41686,
92+
"k2_edit_to_squiggle_ms": 448,
93+
"edit_to_squiggle_ms": [
94+
334,
95+
328,
96+
349,
97+
330,
98+
336,
99+
330,
100+
347,
101+
343,
102+
328,
103+
335
104+
],
105+
"edit_to_disappearance_ms": [
106+
328,
107+
347,
108+
330,
109+
328,
110+
336,
111+
329,
112+
322,
113+
342,
114+
343,
115+
326
116+
],
117+
"ui_thread_max_ms": 3.3251,
118+
"service_total_ms": [
119+
4921,
120+
134,
121+
150,
122+
75,
123+
63,
124+
60,
125+
60,
126+
57,
127+
55,
128+
76,
129+
76,
130+
58,
131+
61,
132+
57,
133+
59,
134+
58,
135+
56,
136+
56,
137+
59,
138+
55,
139+
71,
140+
54,
141+
55,
142+
55,
143+
58,
144+
55
145+
],
146+
"publications": 26,
147+
"service_working_set_kb_first_last": [
148+
173572,
149+
208184
150+
]
151+
},
152+
"failed": false
153+
}

0 commit comments

Comments
 (0)