Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .claude/skills/e2e-debugging/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,24 @@ verdicts below turned out to be harness effects.
broken ports. Confirm in a headed run or with a `console` listener: the
browser logs `Refused to execute inline script because it violates ...
script-src`.
- **"Booted" means the PORT's view rendered, never a count of UI5 elements -
wait with `appRendered` from `scripts/lib-e2e.mjs`.** The smoke's boot wait
was `[data-sap-ui]` count > 3, one more than the framework's shell
(ComponentContainer, shell XMLView, sap.m.App). abap2UI5#2913 (2026-10-13)
added a fourth shell element (`z2ui5.core.RootSlot`), so the wait was met
before the first roundtrip answered: every port without an interaction
module passed boot and render on an EMPTY page, and the overview app - the
largest response, so the last to land - failed on every nightly from
2026-10-14 with `the control never appeared β€” tried 0 overflow popover(s)`.
The tell: zero overflow popovers tried and only App/RootSlot/XMLView in the
element registry. `appRendered` waits for a second rendered
`sap.ui.core.mvc.View` (or the error overlay); an interaction that reloads
waits the same way.
- **The abaplint configs read from abap2UI5 are JSONC - parse them with
`scripts/lib/jsonc.mjs`, never `JSON.parse`.** abap2UI5#2950 (2026-10-26)
put a comment into `.github/abaplint/abap_702.jsonc`, and `e2e-build`
died with `SyntaxError: Expected double-quoted property name` before the
downport.
- **Read the frontend state through `FRONTEND_STATE`, never through
`z2ui5/core/AppState`.** The state moved twice in two days: off
`window.z2ui5` (abap2UI5#2777) and then off the module onto a per-component
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -213,16 +213,16 @@ have an abap2UI5 port.

<!-- coverage:start -->

Overall **669 / 669** portable demo kit samples ported (100.0 %).
Overall **664 / 664** portable demo kit samples ported (100.0 %).
**In scope**: samples whose control is **not deprecated** (legacy-free ready). 52 of them use a control newer than **UI5 1.71** β€” their ports need a newer runtime and are filed under `src/02`.
Out of scope: 61 of 742 samples β€” 21 on deprecated controls, 37 that are not app views (UI5 test infrastructure, Component routing, view-templating demos β€” see `ui5/scope-nonapp.json`), 3 demo apps without an owning control.
Plus **1** ported samples outside that scope β€” maintainer-decided exceptions (`ui5/scope-exceptions.json`, listed in [STATUS.md](STATUS.md)); they are not counted as coverage of the in-scope backlog.
Out of scope: 66 of 742 samples β€” 26 on deprecated controls, 37 that are not app views (UI5 test infrastructure, Component routing, view-templating demos β€” see `ui5/scope-nonapp.json`), 3 demo apps without an owning control.
Plus **6** ported samples outside that scope β€” maintainer-decided exceptions (`ui5/scope-exceptions.json`, listed in [STATUS.md](STATUS.md)); they are not counted as coverage of the in-scope backlog.
Control metadata from OpenUI5 **1.152.0**.

| Module | Samples | In scope | Reserved | To port | Ported | Coverage | |
|--------|--------:|---------:|---------:|--------:|-------:|---------:|---|
| `sap.f` | 46 | 46 | | 46 | 46 | 100.0 % | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ |
| `sap.m` | 461 | 442 | 12 | 430 | 430 | 100.0 % | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ |
| `sap.m` | 461 | 437 | 12 | 425 | 425 | 100.0 % | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ |
| `sap.tnt` | 17 | 17 | | 17 | 17 | 100.0 % | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ |
| `sap.ui.codeeditor` | 2 | 2 | | 2 | 2 | 100.0 % | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ |
| `sap.ui.core` | 63 | 21 | | 21 | 21 | 100.0 % | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ |
Expand All @@ -231,7 +231,7 @@ Control metadata from OpenUI5 **1.152.0**.
| `sap.ui.table` | 21 | 21 | | 21 | 21 | 100.0 % | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ |
| `sap.ui.unified` | 22 | 22 | | 22 | 22 | 100.0 % | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ |
| `sap.uxap` | 45 | 45 | | 45 | 45 | 100.0 % | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ |
| **Total** | **742** | **681** | **12** | **669** | **669** | **100.0 %** | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ |
| **Total** | **742** | **676** | **12** | **664** | **664** | **100.0 %** | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ |

**Reserved** β€” 12 in-scope samples are deliberately *not* ported. They are the hold-out set (`ui5/holdout.json`, see [TRAINING.md](TRAINING.md#measuring-progress)): never used as prompt references, kept out of batch planning, and regenerated from scratch to measure the generator itself β€” CI-green on the first try, structural-diff violations, review findings per app. Spending one as a measurement is what ports it, so they leave this column by being used, not by being worked off. They are excluded from the coverage denominator because they are not backlog. **The portable backlog is zero.**

Expand Down
2 changes: 1 addition & 1 deletion STATUS.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ TRAINING.md; for what abap2UI5 can express see CAPABILITIES.md._
| Deviations | 10 DROPPED_171 Β· 214 IMPROVISED Β· 2068 NOTE Β· 396 POST_171 |
| Open LIVE_TESTs | **0 ports** carry at least one `LIVE_TEST` deviation β€” the automated close path is the e2e interaction harness (AGENTS Β§6 `e2e_smoke`) |
| Declared gate skips | 2 structural-diff Β· 8 render-smoke Β· 0 data-fidelity Β· 1 property-gate (each re-verified per run β€” a stale skip FAILS) |
| Out-of-scope ported samples | `z2ui5_cl_smpc_app_121 (sap.m.sample.UploadSet β€” deprecated)` β€” all decided KEEP permanently 2026-07-30 (per-app rationale in ui5/scope-exceptions.json, revertible); the source-backed scope gate stays hard for NEW undecided entries |
| Out-of-scope ported samples | `z2ui5_cl_smpc_app_076 (sap.m.sample.NotificationListItem β€” deprecated)` Β· `z2ui5_cl_smpc_app_077 (sap.m.sample.NotificationListGroup β€” deprecated)` Β· `z2ui5_cl_smpc_app_121 (sap.m.sample.UploadSet β€” deprecated)` Β· `z2ui5_cl_smpc_app_291 (sap.m.sample.NotificationListGroupBindings β€” deprecated)` Β· `z2ui5_cl_smpc_app_444 (sap.m.sample.MaxNumberOfNotificationsReached β€” deprecated)` Β· `z2ui5_cl_smpc_app_520 (sap.m.sample.NotificationListGroupLazyLoading β€” deprecated)` β€” all decided KEEP permanently 2026-07-30 (per-app rationale in ui5/scope-exceptions.json, revertible); the source-backed scope gate stays hard for NEW undecided entries |
| Hold-out set (generator KPI) | **24** reserved samples in `ui5/holdout.json` Β· **12** spent as measurements (now ordinary ports: 098, 100, 101, 103, 153, 154, 210, 212, 229, 237, 242, 243) Β· results: 2 probe section(s) in [docs/history.md](docs/history.md): "Hold-out probe #2 (2026-07-26) β€” fidelity way up, syntax is the new frontier" Β· "Hold-out regeneration probe #1 (2026-07-19) β€” baseline set" β€” the measurement TRAINING.md "Measuring progress" defines, and the one number that still measures the generator with the portable backlog closed |

_Coverage per library (ported / in scope) is generated into the [README](README.md#coverage); one row per sample in [api.md](api.md)._
Expand Down
Loading
Loading