FormsLang 2.2 lets a team see the architecture of an Oracle Forms estate
from the evidence the engine already saved: where the modules sit, what they
reach, which candidates deserve attention and what a person has decided.
It adds views, not analysis claims. There is no new detection rule, no AI
dependency, no Python runtime dependency and no Node build chain. Everything in
2.1.0 is kept, and Oracle APEX 26.1 / APEXlang remains the only implementation
target.
Understand first. Modernize second.
Executive and Technical views
- A toggle switches the presentation between Executive and Technical. Only the
labels change: "Shared PL/SQL service" or "PL/SQL package", "Changes data" or
WRITES. Identities, counts and evidence are the same in both. - In Executive mode, hotspot evidence and Module 360 composition are worded in
plain language. For example,DIRECT_DML_BYPASSES_APIreads "Direct table
access bypasses a related shared service", and the code stays in the tooltip.
Technical mode shows the exact Oracle terms and engine signal codes. - The choice is remembered for the browser session and is never stored in the
project.
Overview
- Estate at a Glance groups the estate by architectural lane.
- An investigation board, source coverage and a journey panel sit beside it.
Every number comes from the saved assessment. - Start Here still orders what to review first and says why on each line.
Hotspot Explorer
- Filters by hotspot type, severity and module, and a modules × hotspot-type
matrix. - Each candidate (possible API bypass, duplicated business-rule candidate,
global state coupling) shows Why FormsLang noticed this and What this
does NOT prove. Candidates are not verdicts. - Show on map, Open Module 360 and Review the linked finding keep
the context, and Back returns to the filtered list.
System Map
- The estate view is laid out by lane on the server, deterministically and
without a force simulation. It is bounded and states what it left out. - The focus view draws what reaches the node on the left and what it reaches on
the right, flags cycles and opens centred on the focus. - Lenses, pan and zoom, a minimap, keyboard navigation and an inspector. A
relationship table is the accessible alternative to the drawing.
Module 360
- One module as a whole: composition, neighbours, hotspot candidates, findings
and review state. A decision recorded in Review is counted there at once. - Module 360 is a view of the saved evidence. It is not a migration plan, an
effort estimate or a readiness verdict.
Review and reports
- Review shows where the finding's module sits and its decided and deferred
counts. A deferred finding is not a decided one. - The executive and technical reports carry two static SVG figures: the estate
by lane and the attention matrix. They are built from the same redacted
snapshot as the rest of the report, contain no script, link or
foreignObject, and are byte-stable when the project is reopened.
Safety and accessibility
- Every HTML and SVG output escapes untrusted text.
- Exported figures and packages never carry HOST, URL or connect-string
literals. The authorized local map may show them, as in 2.1. - Map controls have names, a node's risk is stated in its label and not only
by colour, and the 2.2 views fit 1920×1080 down to 390×844 without horizontal
page scroll. - FormsLang still produces no health score, migration percentage, effort,
schedule or ROI.
Upgrade Notes
- Install the 2.2.0 Windows installer over 2.1.0. Existing projects, reviews
and artifacts are kept. - Projects analysed by 2.1.0 open as CURRENT with the same analysis revision.
They are not reanalysed, and the 2.1 HTTP API fields are kept. - Reports exported by earlier versions are not changed. Export them again with
2.2 to get the figures.
Walkthrough
The modernization lab walkthrough follows
the fictional Legacy Order Management lab from the estate to a recorded human
decision and the reports.
Validation
Release commit 28d100daba40e2f62ea1c2405f8afb1ddf1e737e, the same SHA as the tested candidate (main fast-forwarded).
- CI 35992029685: 13/13 green. It covers ruff, the deterministic showcase export, SQLcl
apex validate(no database), Workbench and corporate project browser acceptance (Edge), and pytest on ubuntu and windows for Python 3.10–3.13. Ubuntu: 1824 passed, 5 skipped (Windows-only tests). Windows: 1829 passed. On attempt 1 the Windows py3.12 job failed 3 tests with the known pre-existing SQLite contention (database is locked/ a job-polling 500). That job alone was re-run once on the same SHA and passed. mainCI 35999045429: 13/13 green on the first attempt.- Installer acceptance 35992028238: upgrade 2.1.0 → 2.2.0 passed for both MSI and NSIS. The run covers a clean install, the project workflow, uninstall and reinstall with preserved state, and the native desktop window and engine. It also runs, on the installed engine, the 2.2 visual journey Overview → Start Here → Hotspot → System Map → Review → Module 360 → Reports: 24/24 checks for each installer.
- Local: 1824 passed, 5 skipped (symlink privileges). Ruff is clean. Corporate Edge acceptance 103/103.
- Compatibility: 5 real projects created by v2.1.0 passed 95/95 checks under 2.2.0, with identical freshness verdicts and no historical row, descriptor or file changed.
- Determinism: 44 report exports (including the 6 with figures) were byte-identical across repeated exports and fresh processes.
- The frozen modernization benchmark (24 blobs) is identical to v2.1.0.
Full record: docs/quality-acceptance.md.
Assets
| File | Size (bytes) | SHA-256 |
|---|---|---|
FormsLang_2.2.0_x64-setup.exe |
14,768,223 | 71ca7db1686535f77390cd9dd28d51edaf921563bc092264280e5f8114c766f0 |
FormsLang_2.2.0_x64_en-US.msi |
15,876,096 | 9970b49c557e09fe455a6550f3c6620d5d60c0761be1b34d753cbc467af2d457 |
The installers are unsigned and are exactly the CI artifacts the installer acceptance tested.
Known follow-ups:
- the intermittent Windows SQLite contention failures (
test_project_descriptor_concurrency, job-polling 500s), which predate 2.0; - code signing;
- the review funnel, distribution bars and dependency/path explorer are deferred;
- the Review layout at 390px, and the map controls overlap a column header in the focus view.
Full changelog: CHANGELOG.md · v2.1.0...v2.2.0