Conversation
Kill-first infrastructure probe (no product code): find VS with vswhere, open a solution in the Exp hive, edit a buffer through DTE, read the Error List. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
Fixed before product code: base e889f8b, architecture (one extractor run in-process over an overlay, the build host's contract, the Rust core's Finding via SARIF), live request from design-time builds, owen-live/1 framing/handshake/versioning, diagnostic contract and the two coordinate gaps (no protocol columns; #393), acceptance K1-K8/P9/P10, latency thresholds, Snipper reuse, the real-VS run, mutation controls M1-M6, out of scope, verdict rule. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
…rlay InProcessExtractor.Run(args, cwd, overlay) runs the ONE extractor program inside a long-lived host: same arguments, same facts; its one source read consults an in-memory overlay first, and stdout/stderr are captured. The two run collectors that were not reset at entry (GuardedFactsViolations, OrphanedAwaitables.Sites) now are, a no-op for the CLI. tests/check_extractor_in_process.py: 98 jobs in one process, forward and reversed, byte-identical to the command line (E1/E2); overlay == disk changes nothing (E3); a differing overlay is read instead of the disk (E4, M6): 198/198. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
- OwenHost: the build host's contract (descriptors, input set, refusals) shared by build-check (byte-identical output) and the new live service. - owen serve: owen-live/1 (Content-Length framing, hello, fatal exit 3), one analysis at a time, newest-per-project wins (superseded/cancelled); each analysis is the build host's over the editor's text, through the in-process extractor and the packaged Rust core's SARIF (columns + witness steps). - Owen.Build writes obj/owen/live.txt (same request lines + the service path) in design-time builds too: Visual Studio learns the active extensions with no build. - Owen.VisualStudio (VSIX, knows no extension): workspace snapshots (unsaved open documents + source-generated documents) -> supervised service (job object, restart budget, OWENV001) -> version gate -> IErrorTag squiggles (finding and witness steps) + ITableDataSource Error List rows; opt-in trace for the real-IDE run. - Owen.TestProtocol: a synthetic second extension with its own generator (K8, M4). - scripts/owen_live_gate.py (27 checks on Linux): L0, protocol S*, K1-K8, P10 build/live parity x5, latency p95 208 ms, memory flat, client tests incl. K4/K6/M1/M2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
- scripts/vs/prepare_vs_fixture.py: packs Owen.Build/Owen.TypedBuilder and creates a restored, never-built solution outside the checkout. - scripts/vs/owen-vs-acceptance.ps1: installs the VSIX into a dedicated root suffix with VSIXInstaller, opens the solution, and drives the IDE: unsaved edits via DTE, the Error List read with UI Automation, navigation by double-click, Owen's squiggles from the opt-in tagger trace; K1/K2/P9/K3, repeated-edit latency, UI-thread max, no save, no build. (Shape ADAPTED from Snipper's vs-smoke.ps1, MIT.) - ci.yml: owen-live (ubuntu+windows) and owen-visual-studio (windows, real VS). - The probe workflow is retired (runs 37163037704/37163398893/37163671022 recorded). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
- spec/OwenExtension.md §4a: the live request, owen serve, generated-source routing, parity, OWENV001. - docs/howto-visual-studio.md: installing and using Owen.VisualStudio, known limits. - docs/notes/owen-visual-studio-snipper-reuse.md: the four ADAPTed chunks, origin, licence. - scripts/owen_live_mutations.py: each mutation edits one product source, its registered check must go red, the source is restored. - prepare_vs_fixture.py: drop an unused noqa (ruff RUF100). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
…Snipper's SDK-style project does) The first Windows CI run built Owen.VisualStudio.dll but no .vsix: an SDK-style project gets no VSIX packaging from the build tools package alone. The build step now fails loudly when no .vsix is produced. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
…/E4 on a self-contained input - Program.cs keeps 'if (!File.Exists(path))' and 'text = File.ReadAllText(path);' (tests/test_p037_evidence.py anchors and counts them); the overlay is consulted first through TryOverlay, which touches no filesystem. CLI behaviour unchanged. - check_extractor_in_process E3/E4 overlay frontend/roslyn/samples instead of OrderBackend, whose extraction refuses on a clean checkout (no bin/, EF types unresolved) and so compared no facts with no facts in CI. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
…e's Exp hive The run on bdeb874 installed the VSIX (VSIXInstaller exit 0) but a fresh root suffix opened on the modal 'Sign in to Visual Studio' dialog, which rejects every DTE call (screenshot in that run's evidence). The driver now dismisses first-run dialogs through UI Automation as a user would, and CI uses the Exp hive the image already initialised (an ephemeral runner: nothing shared to protect). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
The run on 4790674 opened the solution in 23 s and the design-time build wrote obj/owen/live.txt (L0 ok in Visual Studio), but Use.cs opened as a background tab behind 'What's new': no text view, so no tagger and no Owen monitor, and the Error List window was never opened, so not even CS0029 could be read. The driver now closes the start page, opens the Error List, activates Use.cs, and records whether Owen.VisualStudio.dll is loaded into devenv. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
The run on bd0ef66 realized Use.cs, read the Error List through UI Automation (CS0029 | LiveFixture | Use.cs | 10), but Owen.VisualStudio.dll never loaded into devenv and the ActivityLog does not mention it. Collect the hive's installed extensions, the MEF composition's .err files and the VSIXInstaller logs, and stop early when the extension is not in the process. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
…x as evidence The run on d330abe shows the extension installed and enabled in the Exp hive and the MEF cache rebuilt, yet no composition error or catalog trace mentions Owen: check what the packaged manifest declares. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
The run on 4289f6a printed a correct manifest (MefComponent Owen.VisualStudio.dll) and an installed, enabled extension, yet the hive's ComponentModelCache files were byte-for-byte those of the previous run: the image ships the MEF composition prebuilt and the install rebuilt only the pkgdef cache, so Owen's parts were never composed. Drop the cache and run devenv /updateconfiguration before launching. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
…ule list The run on a28c958 (MEF cache rebuilt) shows Owen.VisualStudio composed in the IDE and working: its trace has 'Owen live analysis loaded', a workspace snapshot with the unsaved Use.cs and Roslyn's in-memory generated documents, and publication 1 of the project with no entries (K1). Only the driver's check was wrong: a .NET Framework assembly is not reliably among Process.Modules. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
The run on e71027f reached the core of the acceptance in Visual Studio 2026: the unsaved second Submit went workspace snapshot -> owen serve (extract 278 ms, core 11 ms) -> OWN002, and the Error List showed 'OWN002 | IDisposable local draft is used after it is disposed | LiveFixture | Use.cs | 10' with Use.cs still unsaved. No squiggle was traced because VS reopened its start page over the editor (an invisible view is never asked for tags). - The tagger raises TagsChanged on the UI thread and reports any exception to the trace and the Owen pane instead of letting the editor switch it off. - The driver brings Use.cs to the front before every measured edit, and reports a navigation failure as a check instead of dying silently. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
…udio run The run on a0c038d passed in Visual Studio 2026: vsix-loaded, L0, K1 (open and unsaved clean edit), K2 squiggle (10:9 'OrderProtocol.WithDraft(order, draft =>' and the witness 13:13 'draft.Submit(now);'), K2 unsaved, K2 Error List row, P9 (CS0029 beside OWN002), K3 (gone after 372 ms), disappearance p95 420 ms, UI thread max 6.5 ms, no build, never saved. Three failures were the driver's: - navigation: DTE MainWindow.HWnd is null in VS 2026; use the process's window; - edit->squiggle 0/10 although the trace has every squiggle: Windows PowerShell gives a lone PSCustomObject no .Count; always count arrays; - the orphan probe counted every dotnet.exe; check owen serve processes only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
… IDE required Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
The run on 23d4aeb passed K2 navigation (double-click -> Use.cs 10:9, the core's location) and no-orphan (owen serve did not outlive a killed devenv: the job object holds), but the previous fix returned ',@(...)', so @(Own002 $e) became a one-element array holding the array: 'no OWN002 tag' never held (K3, disappearance 0/10) and 'a witness tag' held at once (the 12-16 ms 'latencies' are void). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
…al-IDE run) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
The run on 90bd419 passed every check in Visual Studio 2026 (19/19). The run on 7cdf529 (same product code) failed only K2-navigation with the caret at exactly 10:9 = expected 10:9: the driver compared DTE's FullName to the fixture path with a case-sensitive -eq. Compare full paths ignoring case, and print both. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
…_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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что и зачем
Одно generic расширение
Owen.VisualStudioпоказывает OWN-диагностики любого активного Owen-расширения прямо в редакторе, пока правка не сохранена и безdotnet build: сквиггл (IErrorTag) и строка в Error List (ITableDataSource) с навигацией. Typed Builder — первое расширение и acceptance oracle; VSIX ни одно расширение по имени не знает.Цепочка: несохранённый буфер → снимок Roslyn workspace (открытые документы и сгенерированные документы из памяти) → долгоживущий
owen serveиз пакета Owen.Build проекта → тот же один экстрактор, запущенный in-process поверх overlay → авторитетное Rust-ядро → егоFinding(рендерер SARIF).Семантика не менялась: OwnIR, H0/H1, state protocol, T0/P-022, смысл диагностик и capabilities OX-01 те же, Rust-ядро не тронуто.
Preregistration (закоммичена до продуктового кода) и Amendment 1:
docs/notes/owen-visual-studio-preregistration.md. Отчёт и вердикт:docs/notes/owen-visual-studio-report.md. Evidence из реальной VS:docs/notes/evidence/ox02-visual-studio/.Вердикт:
GO_OWEN_VISUAL_STUDIO_ALPHA. Прогон в Visual Studio Enterprise 2026 18.10 на финальном продуктовом headfbdc978(CI run 37175674769) прошёл 19/19 проверок:draft.Submit(now);даёт сквиггл наWithDraft(место finding) и на вставленной строке (witness-шаг ядра). В Error List появляетсяOWN002 | … | LiveFixture | Use.cs | 10, двойной клик ведёт в 10:9.owen serveне переживает убитый devenv.Тот же продуктовый код также прошёл 19/19 на
90bd419. Прогон на7cdf529провалил одну проверку, K2-navigation: каретка стояла ровно в 10:9, расходилось только сравнение пути в драйвере. Сравнение нормализовал, причина в отчёте отмечена как не до конца установленная. Этот прогон как зелёный не считаю.Ограничения, зафиксированные заранее:
Тип изменения
Как проверено
python tests/run_tests.py— локально те же две известные local-only контрольные проверки Stage-1, что и на базе; в CI зелёный на 3.11/3.12/3.13ruff check .иmypy— новые скрипты подmypy --strictpython scripts/<...>.py --selftest)python tests/check_extractor_in_process.py— 198/198 (98 джобов в одном процессе, байт-в-байт с CLI, overlay вместо диска)python scripts/owen_live_gate.py— 27/27 на Linux и Windows: L0, протокол, K1–K8, паритет build/live P10 на пяти исходниках, латентность (тёплый p95 208 мс), память, клиентские тесты (K4/K6/M1/M2)python scripts/owen_live_mutations.py— M1–M6, все пойманыowen-visual-studio(реальная VS 2026) — 19/19e889f8bдо изменений и весь CI на финальном head зелёные: protocol/heap-effects/typed-builder гейты,owen_extension_gate55/55 на обеих ОС, Owen.Cli gate A, rust, dogfoodСвязанные issue
Refs #393 (место OWN002 не меняется, рендерится как есть).
Чеклист
spec/OwenExtension.md§4a,docs/howto-visual-studio.md,docs/notes/owen-visual-studio-snipper-reuse.mdfeat:,fix:,docs:…) — коммиты в стиле предыдущих slices (OX-02: …), как и в OX-01🤖 Generated with Claude Code
https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
Generated by Claude Code