0.6.3 — Agentic perception: numbered maps, sapfx skill, mechanical agent loops
🇫🇷 Release « perception agentique ». L'agent voit l'écran comme une carte numérotée (@N) et agit par référence — sur SAP GUI ET sur Fiori ; la boîte à outils s'apprend en un appel (skill sapfx) ; les boucles de feedback des agents plan → generate → heal sont désormais fermées mécaniquement (gardes, pas de la prose) ; compatibilité rf-mcp 0.35.0 revalidée et épinglée. Dézippez, install.cmd, c'est prêt.
What's new
Numbered screen/page maps — act by reference (Vibium map/@e1 pattern, applied to SAP)
- ECC:
Get Screen Mapnumbers every actionable target of the live screen (@N+ verified human label + id + type + current value — same affordance engine as the semantic perception), andResolve/Click/Fill Screen Refact by number. References are ephemeral (last numbered perception) and re-verified before every action: screen changed or element gone = actionable failure namingGet Screen Map. The Set-of-Mark annotated screenshot legend feeds the same@Ntable — the vision → deterministic-action loop is closed. - Fiori mirror:
Get Ui5 Page Mapreduces the UI5 control tree to its numbered actionable targets (editable types marked*with value; human label from text/title/placeholder/tooltip), andResolve/Click/Fill Ui5 Refact by number — liveness re-checked against the rendered registry, frame scope respected, composite-control fill targets the inner<input>. - Interactive piloting only (rf-mcp guidance says so too): suites keep speaking business keywords over
resources/locators — convention #1 unchanged.
sapfx toolkit skill (install-as-a-skill)
.claude/skills/sapfx/SKILL.md: one skill call teaches an assistant the three channels (GUI/Fiori/API), the perception → action loop, the non-negotiable conventions and the agent cycle. Shipped in the Windows pack.
Agent feedback loops closed mechanically
- Stale-plan marker: a healer-flagged spec (
> **Statut : PÉRIMÉE (date)**) now failscheck_spec_sync.pyuntil the planner re-explores; generation divergences are recorded in the spec before re-stamping;docs/heal-journal.mdkeeps the healer's diagnosis per session. - New guard
check_conventions.py: conventions #1/#2 (no raw locators in generated suites, noSleep) are now enforced on artifacts — generator gate, post-edit hook, CI.
rf-mcp 0.35.0 — compat guard window widened to [0.31, 0.36) after wheel-level re-validation (plugin contracts byte-identical; lazy-proxy-safe probe); deployment pin bumped to rf-mcp==0.35.0.
Fixed
- Pack
.cmdlaunchers shipped with LF-only line endings: double-clickinginstall.cmdechoed «'M' n'est pas reconnu…» parser errors (install still completed). Fixed in depth —.gitattributesexception, launchers converted, and the pack builder now normalizes every staged.cmdto CRLF (unit-locked). This 0.6.3 ZIP was tested from a fresh extraction before publication: sidecar + 68 internal SHA-256 OK,install.cmd -WithMcpclean through cmd.exe, 27/27 sample-suite dry-run,sapfx-mcpoverlay announcing itself on rf-mcp 0.35.0. check_spec_sync.pywas blind to ventilated suites (tests/robot/{api, ui/ecc, ui/fiori, cross}) — now recursive.
Proof numbers: 963 unit tests · 93 % coverage · 17/17 live scenarios. UI5 1.60 → 2.0-nightly compatibility unchanged; MV3 extension 0.6.0 unchanged.
Attachment: sapfx-pack-0.6.3-win.zip — self-contained Windows deployment pack (both wheels, business resources, recorders + MV3 extension, sample suites, maintenance scripts, test agents + sapfx skill). Install: unzip, then install.cmd (options -WithMcp, -WithBrowsers). SHA-256: 582adb372d898d8ca0385c5bfb1d213adab7ec54f57600ce99684e1fb5dbd1a5.
Ops note: after updating the libraries, restart the rf-mcp server — the process freezes the imported library class and instance (field note in the repo).