feat: L1 provider detection, SelectMethod enforcement, ContosoUniversity Run 19#425
Merged
csharpfritz merged 35 commits intoFritzAndFriends:devfrom Mar 11, 2026
Merged
Conversation
- Branch recreated from dev (not main) per team directive - All 155 dev-docs files restored from feature branch - AfterContosoUniversity migrated app restored - ContosoUniversity.AcceptanceTests restored (40 tests) Fixed issue: Students without enrollments now appear in GridView - Changed LoadStudentEnrollments() to load all students with left join - Previously only students WITH enrollments were displayed - Now using Students.Include(Enrollments) instead of Enrollments.Include(Student) Test Results: 40/40 passing (100%) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reorganized the migration-tests folder from a flat directory with inconsistent naming into a clean hierarchical structure: - wingtiptoys/run01-run17/ (16 runs, run07 skipped) - contosouniversity/run01-run18/ (18 runs, renumbered to fix collisions) Key changes: - All runs now in project/runNN/ folders with zero-padded numbers - Merged standalone .md reports into run folders as summary.md - Renamed lowercase report.md to REPORT.md for consistency - Removed 5 duplicate root-level screenshots (identical to run13) - Resolved Contoso run11/12 numbering collisions (Mar 9 vs Mar 10 runs with same number); Mar 10+ runs renumbered 13-18 - Completely rewrote README.md with all 18 Contoso runs documented - Created placeholder for run18 (original files were untracked) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Appended migration-tests reorganization learnings to Beast history. Created decision inbox entry for the folder restructuring. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Session: 2026-03-11-service-extensions-and-exec-summary Requested by: Jeffrey T. Fritz Changes: - Logged session to .ai-team/log/ - Merged 3 decision(s) from inbox into decisions.md - Propagated updates to agent history files (beast, cyclops, forge, jubilee, rogue, colossus) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Re-ran Layer 1 migration after Test-UnconvertiblePage script fix (path-based Checkout detection). ShoppingCart.razor is STILL stubbed due to a second false positive: the 'PayPal' pattern matches an image URL and alt text in markup, not actual PayPal SDK code. Results: - Layer 1: 32 files, 303 transforms, 1.58s - Stubs: 6 (unchanged - PayPal false positive persists) - Build: 6 errors (same Parameter TODO annotation bug) - Report updated with Run 18b section - Decision filed for PayPal pattern fix Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…n removal ShoppingCart.razor now contains full GridView with BoundField/TemplateField markup instead of a stub. Two false-positive patterns in Test-UnconvertiblePage have been fixed: 1. 'Checkout' content pattern replaced with path-based '^Checkout[/\\]' 2. 'PayPal' content pattern removed (matched image URLs, not SDK code) Results: - UnconvertibleStub count: 5 (Checkout/ only, down from 6) - Transforms: 314 (up from 303) - Layer 1 timing: 1.51s - Build: 6 pre-existing errors in ProductDetails/ProductList (P1, separate) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…exec summary update - ShoppingCart.razor now uses BWFC GridView with BoundField/TemplateField - Fixed GetCartId() to read WingtipToysCartId cookie (was hardcoded 'sample-cart') - Fixed migration script: removed 'Checkout' and 'PayPal' false-positive patterns - Regenerated performance charts with Run 18 data (1.51s L1, 314 transforms) - 4 screenshots captured: Home, Products, Shopping Cart (GridView), Product Details - Executive Summary updated: Run 18 screenshots, GridView milestone, improved strategy section - Run 18 REPORT.md updated with build success and Layer 2 fix documentation - ServiceCollectionExtensions: merged with WebApplicationExtensions - Added AspxRewriteMiddleware, BlazorWebFormsComponentsOptions - ContosoUniversity folder reorganization Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ations Session: 2026-03-11-run18-improvements Requested by: Jeffrey T. Fritz Changes: - Logged session to .ai-team/log/2026-03-11-run18-improvements.md - Merged Forge's Run 18 improvement recommendations into decisions.md - Merged Cyclops Run 18 checkout/PayPal/GridView fix decisions - Merged Beast chart generation decision - Merged user directives (eliminate Test-UnconvertiblePage, standardize ItemType, P0-2 approved) - Consolidated 3 overlapping Test-UnconvertiblePage decisions into 1 - Propagated team updates to Cyclops, Beast, and Forge histories Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… components Renamed TItemType -> ItemType in DataBoundComponent and SelectHandler. Renamed TItem -> ItemType in BaseListControl, BulletedList, CheckBoxList, DropDownList, ListBox, and RadioButtonList (both .razor and .razor.cs files). This aligns all generic type parameters with the ASP.NET Web Forms DataBoundControl.ItemType convention, ensuring BWFC's drop-in replacement promise matches the original attribute names. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
First migration run with: - Test-UnconvertiblePage eliminated (0 stubs, all pages converted) - RouteData [Parameter] annotation bug fixed - ItemType standardized across BWFC library Results: 1.76s, 348 transforms, 32 files 35 razor files Build: 184 errors (expected L2 residuals), 122 warnings Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ixes" This reverts commit 58fdc8c.
- Add prominent 'Migration Pipeline MANDATORY' section to bwfc-migration SKILL.md with critical warning admonition, pipeline step table, exact bwfc-migrate.ps1 invocation command, Layer 2 Copilot transform checklist, and pipeline rules - Fix all TItem references ItemType throughout bwfc-migration SKILL.md (8 instances) to match standardized Web Forms DataBoundControl.ItemType naming - Update migration-standards SKILL.md: rename 'Layer 2 (Manual)' to 'Layer 2 (Copilot-Assisted)', add critical warning and script invocation command, expand Layer 2 transform list - Add decision file and update Beast history Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Session: 2026-03-11-migration-pipeline-rules Requested by: Jeffrey T. Fritz Changes: - logged session to .ai-team/log/ - merged 4 decisions from inbox into decisions.md - consolidated 8 overlapping blocks into 3 - propagated updates to beast, cyclops, forge, jubilee, rogue history files - summarized beast and cyclops history.md (both exceeded 12KB) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Layer 1 (script): 1.70s, 348 transforms, 32 files, 0 stubs Layer 2 (Copilot): ~25 min, ~60 files transformed Build: 0 errors, 4 warnings (NuGet pruning only) Key improvements since Run 18: - Zero stubs (P0-1 fix) - Mandatory L1L2 pipeline (no fixes between layers) - ItemType standardization across all BWFC controls - IDbContextFactory pattern for async data loading Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
L1 Script (bwfc-migrate.ps1): - SelectMethod now PRESERVED in markup (was stripped) BWFC supports it natively - ContentPlaceHolder review items note BWFC components are available - GetRouteUrl review items reference GetRouteUrlHelper utility Skills (3 files, 15 references updated): - SelectMethod guidance: preserve + convert to delegate (not replace with Items) - All three skill files aligned on SelectHandler<ItemType> delegate pattern Run 20 Report: - Removed false claim that validators don't exist (all 6 exist) - Fixed SelectMethod L2 transform description Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Session: 2026-03-11-selectmethod-fix Requested by: Jeffrey T. Fritz Changes: - Logged session to .ai-team/log/2026-03-11-selectmethod-fix.md - Merged 3 decision(s) from inbox into decisions.md - Consolidated 3 overlapping SelectMethod decisions into 1 - Propagated updates to 6 agent history files Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Cyclops: 16181 -> 7853 bytes (archived ServiceCollectionExtensions, Run 18, P0 fixes, ItemType, L2 transform) Beast: 12969 -> 9509 bytes (archived Run 10 failure, Run 11 skill fixes, team updates 2026-03-07/08) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…lers - Login.razor.cs: Add Email, Password fields and LogIn handler - Register.razor.cs: Add Email, Password fields and CreateUser_Click handler - Forgot.razor/.cs: Rename OnClick='Forgot' to 'Forgot_Click' (class name conflict), add Email field - ResetPassword.razor.cs: Add Email, Password fields and Reset_Click handler - ManagePassword.razor.cs: Add Password field, SetPassword_Click and ChangePassword_Click handlers - ManageLogins.razor/.cs: Fix <%# %> Web Forms syntax, add SuccessMessage and GetLogins stub - Manage.razor.cs: Add SuccessMessage and LoginsCount fields - RegisterExternalLogin.razor.cs: Add ProviderName, Email fields and LogIn_Click handler - OpenAuthProviders.razor/.cs: Add GetProviderNames stub with SelectHandler signature - TwoFactorAuthenticationSignIn.razor.cs: Add ProviderSubmit_Click and CodeSubmit_Click handlers - VerifyPhoneNumber.razor.cs: Add Code_Click handler - AddPhoneNumber.razor.cs: Add Phone field and PhoneNumber_Click handler - Fix TextMode string values to use TextBoxMode enum across all Account .razor files - Fix SelectMethod string references to delegate references for ListView components Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
WingtipToys migration Run 21 results: - L1: 1.79s, 348 transforms, 0 stubs (all 3 L1 fixes confirmed) - L2: ~26 min, 44 files modified (431 ins, 560 del) - Build: 0 errors, 0 WingtipToys warnings - SelectMethod preserved as delegates on ProductList, ProductDetails, ShoppingCart - ContentPlaceHolder and GetRouteUrl review items now reference BWFC components Executive summary updated: 38 runs, 16 perfect scores, SelectMethod milestone added. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Convert AfterContosoUniversity from L1-scaffolded Web Forms stubs to working Blazor components with EF Core SQLite, BWFC component patterns, and DI registration. Changes: - Models: EF Core with data annotations, ContosoUniversityContext (SQLite) - BLL: 4 logic classes + StudentViewModel using IDbContextFactory - Pages: About, Students, Courses, Instructors converted to Blazor partials - Infrastructure: Program.cs with DI, csproj with Sqlite, _Imports.razor - Cleanup: deleted EDMX artifacts, empty code-behinds - Build: 0 errors Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Fixed Program.cs: UseSqlite UseSqlServer with LocalDB connection - Removed Microsoft.EntityFrameworkCore.Sqlite package - Removed EnsureCreated() (existing database) - Added Run 19 migration report Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Changed EF Core package from Sqlite to SqlServer in csproj template - Changed Program.cs example from UseSqlite to UseSqlServer with LocalDB - Prevents agents from defaulting to SQLite during L2 transforms Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… delegates - Removed 'Prefer SQLite for local dev' from migration-standards (was the root cause of repeated SQLite contamination) - Added NEVER-default-to-SQLite warnings in migration-standards and bwfc-data-migration - Made SelectMethod->delegate conversion MANDATORY (not 'alternatively Items=') - Restricted Items= binding to DataSource-originating patterns only - Added WARNING admonitions to all three skill files Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…vider - Changed emphasis from 'don''t use SQLite' to 'detect and match the original provider' - Added L1 Find-DatabaseProvider references so L2 agents know to check detection results - Aligns with L1 script enhancement that auto-detects from Web.config Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Session: 2026-03-11-skill-enforcement-fixes Requested by: Jeffrey T. Fritz Changes: - Logged session to .ai-team/log/ - Merged 7 decision(s) from inbox into decisions.md (consolidated to 3 blocks) - Marked 2 superseded decisions (SelectMethod pattern sections 2.2, 6.2) - Propagated updates to beast, cyclops, rogue, forge history files - Summarized cyclops history.md (16.3KB to 8.2KB) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Added Find-DatabaseProvider function that parses Web.config connectionStrings - Scaffolds the matching EF Core provider package (SqlServer, Sqlite, Npgsql, MySQL) - Includes detected connection string in Program.cs scaffold comment - Adds [DatabaseProvider] review item so L2 agents see the detection - Falls back to SqlServer when no Web.config or connectionStrings found Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Session: 2026-03-11-provider-detection Requested by: Jeffrey T. Fritz Changes: - Logged provider detection session (Cyclops Find-DatabaseProvider + Beast skill reframe) - Merged cyclops-db-provider-detect.md from decisions inbox - Consolidated 3 overlapping database provider decisions into single entry - Propagated cross-agent updates to Cyclops and Beast history Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Rewrote opening: bold stats, mini-table, bullet highlights replace 3 dense paragraphs - Tightened Drop-In Replacement section (renamed, trimmed) - Added Run 19 (CU), Run 20/21 (WT) data throughout - Updated chart script with 3 new data points, regenerated all 3 PNGs - Total runs: 38 -> 40, new milestones, updated What's Next roadmap Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Session: 2026-03-11-exec-summary-update Requested by: Jeffrey T. Fritz Changes: - Logged exec summary update session (Beast + Coordinator work on EXECUTIVE-SUMMARY.md) - Merged 2 inbox decisions into decisions.md - No deduplication needed (no duplicate headings found) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…iles The ItemType standardization (renamed TItem/TItemType to ItemType across all generic data-bound components) was not applied to test files and sample pages. This caused RZ10001 and CS0411 build errors because the Razor compiler could not resolve the generic type parameter. Updated 43 files across: - RadioButtonList, BulletedList, CheckBoxList, DropDownList, ListBox tests - ToolTipTests (BaseWebFormsComponent) - All ControlSamples sample pages - AfterWingtipToys account pages Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Remove AfterBlazorClientSide from build.yml (WebAssembly incompatible with HttpContextAccessor) - Add FrameworkReference to test project to resolve assembly version mismatch Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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
This PR adds database provider auto-detection to the L1 migration script, enforces SelectMethod as mandatory delegates in all skill files, and includes ContosoUniversity Run 19 migration results (0 build errors, SQL Server LocalDB).
Key Changes
L1 Script - Auto-Detect Database Provider
Skill Files - SelectMethod + Database Enforcement
ContosoUniversity Run 19