Repository navigation
Merged
Conversation
…losed #2250; the host-package direction record gains the unused-import sibling; two roster rows describe the framework set as f5fb7f8 built it; the emitter's Rule-2 site cites #2320 (refs #2250, refs #2320) /verify-implementation of plan-9ef825 (P54) @ 045ce6b, remediation slice 1. Latent ratchet conflict (regression auditor): InProcessIsolationSweepTests required every allowlist row to cite exactly "#2250", and the KnownRed tables of TpaNamespaceGateTests, CrashBundleExclusivityTests, StdlibModuleGlobalConcurrencyTests and WarmInstanceParityTests asserted the same substring. #2250 is CLOSED, and check_allowlist_issue_state.sh reads every tracked *allowlist*.txt, so the first future red cell could not be allowlisted without reddening one gate or the other. All five now use the repo's cite convention (a `#\d+` issue number, as CliOptionEffectSweepTests / FormatterBlankLineSweepTests spell it); whether the cited issue is OPEN stays check_allowlist_issue_state.sh's question. Mutation (contract §2), InProcessIsolationSweepTests.Sweep_RegularSlice @ this tree: row appended with no issue number → RED (1 failed: InvalidOperationException "every row cites an issue by number (#NNNN)"); row appended citing #9999 → the cite check passes (1 passed); allowlist restored from the copy → GREEN (1 passed). Direction record (contract §3): an UNUSED `from system.composition import ExportAttribute` compiled with SPY0452 at base 486c9a8 and is SPY0301 at 045ce6b — worked → rejected under the owner's 2026-10-15 ruling on the same mechanism (the unused system.reactive.linq cell on #2250): the base answer depended on which packages the host shipped. Added as the third HostAssemblyVisibilityE2ETests row (measured: composition_unused passed, 675 ms). Roster text: StaticStateConformanceTests' s_framework row and ProcessWideResolutionScanTests' LoadFrameworkAssembly row still described the pre-F3 "System.*/Microsoft.*/netstandard/mscorlib + compiler dependencies" set; both now name the shared-framework directory + Sharpy.Core. RoslynEmitter.IsClrTypeGenericInNamespace's "no tracker yet" comment now cites #2320 (Rule 8). Verified: build 0 warnings; the eight touched classes 33 + 63 + 7 + 5 passed, 0 failed (Compiler / Stdlib / Cli / Lsp, filtered, this tree). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TspFCVXESf3WxYCGazmEb7
…uiltin-shadowing triggers with typed probes and a per-run referenced-library pair make it red under the visibility-filter and master-freeze reverts and at base; an allowlist row must name a corpus program (refs #2250) /verify-implementation of plan-9ef825 (P54) @ 045ce6b, remediation slice 2. The class-cure auditor proved the plan's own ratchet VACUOUS @ 045ce6b (contract §2): the sweep reported 0 red at base 486c9a8 where the class existed, and stayed GREEN (9216 observations) under the two mutations every other P54 guard goes red on — M9, the visibility seam's filter reverted to a raw AppDomain scan, and M7, the master freeze + own-symbol declaration made inert. Cause: the corpus carried no reference beyond Sharpy.Core and no builtin-named definition in a block, and the oracle-first warm-up hid first-use races. The corpus now carries: - Triggers: WarmInstanceTriggers.AllTexts verbatim (8) + a generated matrix of kinds {class, def, dataclass, struct, interface, union, delegate} × names {list, format, str, len} × positions {def-body, mod-try} (56; the regular slice takes the first 8, GapDiscovery all 64), scheduled under analyze. - Probes (8, both operations, and once more under analyze AFTER the schedule's last trigger), each with an OracleMustCarry control (SPY0220 / SPY0203 / success) asserted on the solo oracle before the concurrent phase — the absence assertion's positive control. - A library pair built per run by Roslyn (P54SweepLib_<tag>, a unique namespace per run): library/greeter_referenced (oracle: success) and library/greeter_unreferenced (oracle: SPY0300), the first steps of every schedule; the reference-free oracles are computed FIRST so no earlier run's leaked copy can answer them; a bystander Compiler holds the library alive through the concurrent phase (the cell-4 shape). - One Compiler per distinct reference set; CompilerApi references ride on the options. - LoadAllowlist refuses a row whose program id is not in InProcessIsolationCorpus.AllIds — a typo could otherwise park a red cell as "not exercised" forever. Mutation record (worktree at 045ce6b, restore via cp + touch, rebuilt each time): M9 broken → RED: regular 12 rows (library/greeter_unreferenced × 3 sharings × {1 order, 2 drift} × {analyze: SPY0300 → success; compile: SPY0300 → SPY0908 CS0400}, k/R 1/1); GapDiscovery 6 rows (3 sharings × 8 × {analyze, compile} drift, 8/8). Restored → GREEN. M7 broken → RED: regular 21 rows (probe/builtins_ok, probe/format_typed, probe/str_no_member, probe/list_no_member × {api-per-thread, api-shared} × {1 order, 2 drift}; two fstrings stems; three verbatim type-definition triggers at api-shared 2 drift — SPY0701 duplicate __eq__ on the second analysis; k/R 1/1); GapDiscovery 38 rows, all drift 8/8. Restored → GREEN. BASE 486c9a8 → RED: regular 33 rows (= M9's 12 ∪ M7's 21), GapDiscovery 44 rows, 8/8. HEAD unmutated → GREEN 4/4 with the allowlist at 0 rows: regular red=0 (828 observations, 588 cells), GapDiscovery red=0 (26 880 observations, 912 cells). Unknown program id row ("no/such_program api-shared 2 analyze drift # #9999 …") → RED (InvalidOperationException "is not a corpus program id"); restored → GREEN (this tree). Timings: regular slice 10 s → 13 s; GapDiscovery 2 m 14 s → 2 m 49 s. Measured property worth knowing: the frozen-master seam is visible only on CompilerApi analyze — compiler-per-thread and every compile cell build a fresh BuiltinRegistry per call and stay green under M7; len_typed / exception_typed / dataclass_user never go red because a len(...) call is checked by the name-keyed __len__ rule and ignores the retyped symbol (ledger row, candidate #1933). UsedAssemblyPaths is empty for every program at both shas (ledger row, #2313 cell 4). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TspFCVXESf3WxYCGazmEb7
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.
Summary
/verify-implementationof P54 (plan-9ef825, #2250) — two remediation commits on top of the merged implementation (PR #2318 @ 045ce6b).InProcessIsolationSweepTests, the plan's own ratchet, was vacuous: 0 red at the base sha where the class existed, and green under the visibility-filter and master-freeze reverts (9216 observations). The corpus now carries builtin-shadowing triggers with typed probes (each with an oracle control) and a per-run referenced-library pair; oneCompilerper reference set; a row naming no corpus program is refused. Mutation record in the commit body: red under both reverts (12/21 regular rows, 6/38 GapDiscovery rows, 8/8) and at base (33/44 rows); green at HEAD with 0 allowlist rows.#2250(now closed), so a future red could not be allowlisted without reddeningcheck_allowlist_issue_state.sh; they use the#\d+convention. The host-package direction record gains the unusedsystem.compositionimport (worked → rejected under the owner's ruling on the same mechanism); two roster texts describe the framework set as f5fb7f8 built it; the emitter's Rule-2 site cites codegen: the emitter's one reflection site (IsClrTypeGenericInNamespace) spells a CLR type by resolving it at emit time against FrameworkOnly while semantic analysis resolved it against the registry — Rule-2 cell, no materialized fact #2320.Filed by class from the round: #2319, #2320, #2321, #2322; cells on #2182, #2114, #2314, #2151, #2131, #2250.
Test plan
dotnet format whitespace --verify-no-changesclean @ f8c37f9check_spy_staleness.sh,check_spy_tests_staleness.sh,check_allowlist_issue_state.shclean @ f8c37f9check_spec_blocks.sh, build_tools pytest (1142 passed) clean @ 045ce6b; the two commits touch only test code and one comment🤖 Generated with Claude Code
https://claude.ai/code/session_01TspFCVXESf3WxYCGazmEb7