ActionScript, Flash and AIR standards
Criteria verified as of August 2026. Re-verify on the web before committing to anything (§8).
1. Scope and triggers
Flash is dead. That is not an opinion nor a forecast: it is a fact with two Adobe dates, quoted
verbatim from their end-of-life page:
"Adobe stopped supporting Flash Player beginning December 31, 2020 ("EOL Date")"
"Adobe blocked Flash content from running in Flash Player beginning January 12, 2021"
Security framing, which is the one this skill enforces: a served .swf and a Flash runtime
installed on a corporate network in 2026 are not "tolerable legacy", they are a vulnerability
finding. The runtime has gone more than five years without patches, its exploitation record was the
worst in the industry (for a decade it was the preferred vector of exploit kits), and the versions
that still work are precisely the ones where someone disabled the block or installed them from an
unofficial source — that is, a binary with no provenance. Treat it as such: inventory, risk,
retirement plan with a date.
So why does this skill exist? Because of what still exists:
- Artifacts:
.swf, .fla, .as, .swc in repositories, intranets, training material, SCORM
courses, SCADA/HMI systems and kiosks. You have to know how to read them to decide what to do
with them, and often to reconstruct the content they represent.
- Adobe AIR, which did not die with Flash: HARMAN maintains and licenses it (§2). There are
desktop and mobile applications in production written in ActionScript 3 on AIR, and their owners
need support and cost criteria, not a sermon.
- Preservation and archiving: cultural, historical and institutional content that only exists as
.swf and is preserved through emulation (§7), not with the original runtime.
Nothing new is written in ActionScript for the web. For AIR, maintaining and updating an existing
application is legitimate; starting a new one is not (§7).
Not applicable: see frontend-web-platform-standards (the default destination of all
interactive Flash content: HTML, CSS, browser APIs, Canvas, load budget and client security),
webgl-webgpu-standards (the destination of what was accelerated graphics or Stage3D: canvas,
GPU pipeline and frame budget), webassembly-standards (the destination of ported engines and of
the Ruffle runtime: the module, its sandbox and its size are theirs),
frontend-frameworks-standards and typescript-standards (the destination language and framework
of a rewrite: ActionScript 3 and TypeScript share an ancestor —ECMAScript 4— and that makes the
translation deceptively easy, but the display list model, the events and the lifecycle have no
equivalent: it is not a port, it is a rewrite), mobile-standards (if the destination of an AIR
app is native iOS/Android), dart-standards (Flutter as a cross-platform destination),
vulnerability-management-standards (the inventory, triage and retirement SLA process is theirs;
here, why this asset enters it with priority), appsec-standards (threat modeling and vulnerability
classes), detection-engineering-standards and soc-operations-standards (detecting Flash execution
across the estate), linux-hardening-standards, macos-fleet-standards and
windows-server-ad-standards (removing the runtime from the estate is theirs),
knowledge-management-standards (documentary preservation), refactoring-tech-debt-standards
(strangler fig and characterization), enterprise-architecture-standards (portfolio and the
decision to retire), legacy-modernization-standards (umbrella skill: which "R" is chosen for the
Flash/AIR asset —freeze and contain, rewrite or retire— and the dated cost of doing nothing) and
migration-projects-standards (the execution of the cutover once decided: rehearsal, window,
rollback and decommissioning date of the content and of the runtime),
opensource-licensing-standards (licensing; here, AIR's, §2),
jsp-struts-standards, classic-asp-standards, coldfusion-standards and vb6-standards (other
dead or frozen technologies in the catalog, with different problems: there the server still
executes; here the problem is that the client can no longer execute anything, and that changes the
whole strategy — do not extrapolate criteria between them).
2. Default decisions
Verify the latest version on the web before pinning it in a real project (§8).
| Decision |
Criteria |
Verified note (Aug 2026) |
| Flash Player |
Remove from the estate. No exceptions, no "until we migrate" |
Unsupported since 31-Dec-2020; content blocked since 12-Jan-2021 (verbatim quotes in §1). Any player that still works is outside the official channel |
.swf content that must still be viewed |
Ruffle, emulator in Rust/Wasm, isolated |
Very active (daily nightly builds, the latest on 5-Aug-2026) and with no stable release: it is consumed via nightly, with everything that implies for reproducibility. Partial compatibility, and it has to be said: their own page states AVM1 (AS1/AS2): language 99 %, API 82 %; AVM2 (AS3): language 90 %, API 80 %, with "decent support for AVM 2 … most games will work well enough to be played". It is not a transparent replacement for the player: it is an access and preservation route |
| Adobe AIR |
Alive, under HARMAN, and paid |
Still maintained and updated for current OSes. Annual subscription licensing model with four tiers —enterprise, professional, basic, free— verified in the official API reference for air.system.License, which also exposes expiryDate, numberOfSeats and checkDetailsOnline: the runtime itself checks the license. The free tier imposes a HARMAN/Adobe branded splash screen and provides no support. Prices are on request: license cost and its renewal is the expensive data point of this skill |
| AIR SDK version |
51.x series |
Declared gap: I could not verify it at the official source — HARMAN's site is a SPA that does not serve the data in HTML. Check it in their authenticated portal; do not pin it from a secondary source (§8) |
| Flex applications |
Apache Royale is the documented migration route (compiles MXML and AS3 to JavaScript) |
Latest verified release: 0.9.12, from 11-Dec-2024 — more than a year and a half without a release, and still at 0.x after years. It is an exit route, not a destination platform: use it to reduce the cost of converting a large Flex codebase, with the explicit commitment to end up in HTML/TS |
| Apache Flex / Flex SDK |
End of the road |
Only to compile and analyze what exists. Nothing new |
| AS2 (AVM1) versus AS3 (AVM2) |
They are different languages and virtual machines, not two versions |
AS2 is weakly typed, with _root/_global, timeline scripting and on(...) on clips: there is no mechanical migration to AS3. AS3 has classes, packages, typing, Event/EventDispatcher and a display list. AS2 is only touched to archive |
.fla |
Proprietary Adobe Animate format, not text |
It is not versionable nor reviewable in Git. The code lives in external .as files; the .fla is the design asset. Adobe Animate still exists and exports to HTML5 Canvas/WebGL: it is the route for animation content — verify its status and its licensing before committing (§8) |
.swf as a format |
Public specification and decompilable binary |
A .swf protects nothing: ABC bytecode decompilable with common tools. If it contains a key, an internal endpoint or sensitive business logic, that is already exposed (§5) |
3. Stack security
(This skill replaces the canonical §5 with this block: in a dead technology, security is the
criteria, not one more section.)
- Mandatory posture: the Flash runtime is removed; the content is isolated or converted. There is
no "update to a patched version": it does not exist.
- A hosted
.swf is an asset to inventory, even if nobody can execute it any more: it is served,
indexed and can be downloaded and decompiled. Before archiving or publishing it, review it for
embedded credentials, tokens, internal endpoints, paths and authorization logic — it is an
extremely frequent finding, because for years the .swf was assumed to be opaque.
crossdomain.xml is a cross-origin policy that is still alive on your server. A
crossdomain.xml with allow-access-from domain="*" at the root of an authenticated domain is a
vulnerability that does not depend on Flash existing: other clients honour it and it still
documents your surface. Delete it if it no longer serves any purpose, and never with a wildcard.
allowScriptAccess, allowDomain, ExternalInterface describe a bidirectional bridge between
untrusted content and the DOM. If embedded content remains, that bridge is an XSS with extra steps.
- Ruffle does not eliminate the risk, it bounds it: it is an emulator that executes untrusted
content, and its surface is that of an interpreter written in Rust and compiled to Wasm. Serve
archived and known content, from an isolated origin (your own subdomain, without session
cookies, with a restrictive CSP), never from the domain of the authenticated application. Its
sandbox and limits criteria belong to
webassembly-standards.
- "Portable" players, projectors and patches to bypass Adobe's block: forbidden.
They are binaries of unknown provenance distributed precisely to reactivate a runtime
blocked by its manufacturer. Detect them in the estate and remove them (
detection-engineering-standards).
- AIR: the packaged application includes the runtime. Updating AIR means repackaging and
redistributing the application; if you do not, your users run an old runtime even if HARMAN has
published the fix. Explicit repackaging cadence, and application signing with a valid, rotated
certificate.
§4 and §6 are deliberately omitted: there is no live testing or operability practice to set for a
retired platform. What does apply —tests and CI of the AIR application you keep maintaining, and of
the migration destination— belongs to testing-qa-standards, cicd-standards and to the destination
language's skill.
7. Exit route and prohibitions
There is no "maintain" strategy: there is an exit route. Choose by content type:
| What it is |
Destination |
| Animation or training material |
Re-export from the original .fla to HTML5 Canvas/WebGL (Animate) or redo it as video if it is linear. Without the .fla, it is reconstruction, not conversion |
| Game or interactive application |
Rewrite on Canvas/WebGL (frontend-web-platform-standards, webgl-webgpu-standards), or a modern engine; if the original engine is C/C++, WebAssembly |
| Enterprise Flex application |
Apache Royale as a bridge to reduce cost, with a written commitment to a final destination in HTML/TS (§2); or direct rewrite by domain |
| Live desktop/mobile AIR application |
Maintain under HARMAN licensing while the cost justifies it, with license and renewal figures in writing, or migrate to native/Flutter/web |
| Historical content with no owner |
Preservation: keep the .swf as an archival object with metadata, and serve it with Ruffle from an isolated origin (§3). It is the only honest route when there is no source |
| Content with no identified value |
Retire. Most of the .swf in an estate falls here, and it is the cheapest and safest option |
Decision rule: if no owner or value shows up in the inventory, it is deleted; the burden of
proof is on whoever wants to keep it, not on whoever retires it.
Prohibitions:
- ❌ FORBIDDEN to install, reactivate or maintain Flash Player on any machine in the estate, or to
distribute third-party players/projectors to bypass the 12-Jan-2021 block.
- ❌ FORBIDDEN to write new content in ActionScript for the web, or to start a new project on AIR.
- ❌
crossdomain.xml with a wildcard, or left on the server "just in case".
- ❌ Serving
.swf content (even via Ruffle) from the origin of an authenticated application.
- ❌ Treating a
.swf as a secure container: keys, tokens or internal endpoints inside a .swf are
considered compromised and are rotated (§3).
- ❌ Automatic AS2 → AS3, or AS3 → TypeScript migration, presented as a conversion: they are rewrites
(§2).
- ❌ Redistributing an AIR application without repackaging with an updated SDK, or with an expired
signing certificate.
- ❌ Committing to HARMAN's free tier without accepting the branded splash screen and the absence of
support; or budgeting any commercial tier without a written license and renewal figure.
- ❌ Presenting Ruffle as full compatibility: its AVM2 is at 90 % of the language and 80 % of the
API according to the project itself (§2).
- ❌ Leaving ownerless
.swf in an inventory indefinitely. They either have a retirement date or they
have an owner.
8. Mandatory web verification
- The two Adobe dates (31-Dec-2020 end of support; 12-Jan-2021 content block) on their official
Flash Player end-of-life page. Quote them verbatim; do not paraphrase them nor round them to
"2021".
- HARMAN's AIR SDK — declared gap: the current version (51.x series according to secondary
sources) is not verifiable from their public site, which is a SPA. Check it in the product
portal. The licensing tiers are verified in the official
air.system.License reference
(enterprise/professional/basic/free, with expiryDate and numberOfSeats).
- AIR pricing — structural gap: HARMAN does not publish rates; they are on request and by revenue
threshold. Any figure has to come from a contractual quote, and you have to ask explicitly about
renewal and about audit terms.
- Ruffle: AVM2 compatibility status on their compatibility page (as of Aug 2026: language 90 %,
API 80 %) and whether a stable release has appeared — as of Aug 2026 they only publish nightlies
(latest verified, 5-Aug-2026). Also verify its CVEs: it is an interpreter of hostile content.
- Apache Royale: whether there is a release later than 0.9.12 (11-Dec-2024) and whether it has
left
0.x. A migration bridge with no releases is a risk that has to be put in writing.
- Adobe Animate: product status, its licensing model and what it exports today (HTML5 Canvas,
WebGL), before committing to a conversion with it.
- Historical Flash Player and AIR CVEs associated with whatever you still have deployed, and CVEs of
Ruffle itself if you deploy it.
- Flash blocking status in the browsers and systems of your estate, to confirm that nobody has
reactivated anything (it is what the audit usually finds).
If the web contradicts this document, the web wins — flag the discrepancy.
1---2name: actionscript-standards3description: ActionScript, Flash and AIR - a dead runtime, its surviving artifacts and the exit route. Use when working with .as, .fla, .swf, .swc, .flv, .f4v, .abc (ActionScript Byte Code), .mxml or .air files, ActionScript 2 versus ActionScript 3 and AVM1/AVM2, the Flex SDK and Apache Flex, Apache Royale as the Flex migration path, mxmlc/compc/asc2 compilers, air-sdk-description.xml and AIR application descriptors, ADT packaging and adl, HARMAN Adobe AIR SDK licensing tiers and air.system.License, Adobe Animate documents and HTML5 Canvas export, Flash Player projectors and the standalone player, ExternalInterface, crossdomain.xml, allowScriptAccess, Ruffle emulation of AVM1/AVM2 content, or auditing, archiving, isolating or removing Flash content from an estate.4---56# ActionScript, Flash and AIR standards78Criteria verified as of **August 2026**. Re-verify on the web before committing to anything (§8).910## 1. Scope and triggers1112**Flash is dead. That is not an opinion nor a forecast: it is a fact with two Adobe dates, quoted13verbatim from their end-of-life page:**1415> *"Adobe stopped supporting Flash Player beginning December 31, 2020 ("EOL Date")"*16> *"Adobe blocked Flash content from running in Flash Player beginning January 12, 2021"*1718**Security framing, which is the one this skill enforces: a served `.swf` and a Flash runtime19installed on a corporate network in 2026 are not "tolerable legacy", they are a vulnerability20finding.** The runtime has gone more than five years without patches, its exploitation record was the21worst in the industry (for a decade it was the preferred vector of *exploit kits*), and the versions22that still work **are precisely the ones where someone disabled the block or installed them from an23unofficial source** — that is, a binary with no provenance. Treat it as such: inventory, risk,24retirement plan with a date.2526**So why does this skill exist? Because of what still exists:**271. **Artifacts**: `.swf`, `.fla`, `.as`, `.swc` in repositories, intranets, training material, SCORM28 courses, SCADA/HMI systems and kiosks. You have to **know how to read them to decide what to do29 with them**, and often to reconstruct the content they represent.302. **Adobe AIR**, which **did not die with Flash**: HARMAN maintains and licenses it (§2). There are31 desktop and mobile applications in production written in ActionScript 3 on AIR, and their owners32 need support and cost criteria, not a sermon.333. **Preservation and archiving**: cultural, historical and institutional content that only exists as34 `.swf` and is preserved through emulation (§7), not with the original runtime.3536**Nothing new is written in ActionScript for the web.** For AIR, maintaining and updating an existing37application is legitimate; starting a new one is not (§7).3839**Not applicable**: see `frontend-web-platform-standards` (**the default destination of all40interactive Flash content**: HTML, CSS, browser APIs, Canvas, load budget and client security),41`webgl-webgpu-standards` (**the destination of what was accelerated graphics or Stage3D**: canvas,42GPU pipeline and frame budget), `webassembly-standards` (**the destination of ported engines and of43the Ruffle runtime**: the module, its sandbox and its size are theirs),44`frontend-frameworks-standards` and `typescript-standards` (**the destination language and framework45of a rewrite**: ActionScript 3 and TypeScript share an ancestor —ECMAScript 4— and that makes the46translation *deceptively* easy, but the display list model, the events and the lifecycle have no47equivalent: it is not a port, it is a rewrite), `mobile-standards` (**if the destination of an AIR48app is native iOS/Android**), `dart-standards` (**Flutter as a cross-platform destination**),49`vulnerability-management-standards` (**the inventory, triage and retirement SLA process is theirs**;50here, why this asset enters it with priority), `appsec-standards` (threat modeling and vulnerability51classes), `detection-engineering-standards` and `soc-operations-standards` (detecting Flash execution52across the estate), `linux-hardening-standards`, `macos-fleet-standards` and53`windows-server-ad-standards` (**removing the runtime from the estate is theirs**),54`knowledge-management-standards` (documentary preservation), `refactoring-tech-debt-standards`55(*strangler fig* and characterization), `enterprise-architecture-standards` (portfolio and the56decision to retire), `legacy-modernization-standards` (**umbrella skill**: which "R" is chosen for the57Flash/AIR asset —freeze and contain, rewrite or retire— and the dated cost of doing nothing) and58`migration-projects-standards` (**the execution of the cutover** once decided: rehearsal, window,59rollback and decommissioning date of the content and of the runtime),60`opensource-licensing-standards` (licensing; here, AIR's, §2),61`jsp-struts-standards`, `classic-asp-standards`, `coldfusion-standards` and `vb6-standards` (**other62dead or frozen technologies in the catalog, with different problems**: there the server still63executes; **here the problem is that the client can no longer execute anything**, and that changes the64whole strategy — do not extrapolate criteria between them).6566## 2. Default decisions6768> Verify the latest version on the web before pinning it in a real project (§8).6970| Decision | Criteria | Verified note (Aug 2026) |71|---|---|---|72| Flash Player | **Remove from the estate. No exceptions, no "until we migrate"** | Unsupported since **31-Dec-2020**; content blocked since **12-Jan-2021** (verbatim quotes in §1). Any player that still works is outside the official channel |73| `.swf` content that must still be viewed | **Ruffle**, emulator in Rust/Wasm, **isolated** | **Very active** (daily *nightly* builds, the latest on 5-Aug-2026) and **with no stable release**: it is consumed via nightly, with everything that implies for reproducibility. **Partial compatibility, and it has to be said**: their own page states **AVM1 (AS1/AS2): language 99 %, API 82 %**; **AVM2 (AS3): language 90 %, API 80 %**, with *"decent support for AVM 2 … most games will work well enough to be played"*. **It is not a transparent replacement for the player**: it is an access and preservation route |74| Adobe AIR | **Alive, under HARMAN, and paid** | Still maintained and updated for current OSes. **Annual subscription licensing model with four tiers —`enterprise`, `professional`, `basic`, `free`— verified in the official API reference for `air.system.License`**, which also exposes `expiryDate`, `numberOfSeats` and `checkDetailsOnline`: **the runtime itself checks the license**. The free tier imposes a **HARMAN/Adobe branded splash screen** and provides no support. **Prices are on request: license cost and its renewal is the expensive data point of this skill** |75| AIR SDK version | **51.x series** | **Declared gap: I could not verify it at the official source** — HARMAN's site is a SPA that does not serve the data in HTML. Check it in their authenticated portal; **do not pin it from a secondary source** (§8) |76| Flex applications | **Apache Royale** is the documented migration route (compiles MXML and AS3 to JavaScript) | **Latest verified release: 0.9.12, from 11-Dec-2024** — more than a year and a half without a release, and still at `0.x` after years. **It is an exit route, not a destination platform**: use it to reduce the cost of converting a large Flex codebase, with the explicit commitment to end up in HTML/TS |77| Apache Flex / Flex SDK | **End of the road** | Only to compile and analyze what exists. Nothing new |78| AS2 (AVM1) versus AS3 (AVM2) | **They are different languages and virtual machines**, not two versions | AS2 is weakly typed, with `_root`/`_global`, *timeline scripting* and `on(...)` on clips: there is no mechanical migration to AS3. AS3 has classes, packages, typing, `Event`/`EventDispatcher` and a display list. **AS2 is only touched to archive** |79| `.fla` | **Proprietary Adobe Animate format**, not text | It is not versionable nor reviewable in Git. The code lives in external `.as` files; the `.fla` is the design asset. **Adobe Animate still exists and exports to HTML5 Canvas/WebGL: it is the route for animation content** — verify its status and its licensing before committing (§8) |80| `.swf` as a format | **Public specification and decompilable binary** | A `.swf` **protects nothing**: ABC bytecode decompilable with common tools. If it contains a key, an internal endpoint or sensitive business logic, **that is already exposed** (§5) |8182## 3. Stack security8384*(This skill replaces the canonical §5 with this block: in a dead technology, security **is** the85criteria, not one more section.)*8687- **Mandatory posture: the Flash runtime is removed; the content is isolated or converted.** There is88 no "update to a patched version": it does not exist.89- **A hosted `.swf` is an asset to inventory**, even if nobody can execute it any more: it is served,90 indexed and **can be downloaded and decompiled**. Before archiving or publishing it, review it for91 **embedded credentials, tokens, internal endpoints, paths and authorization logic** — it is an92 extremely frequent finding, because for years the `.swf` was assumed to be opaque.93- **`crossdomain.xml` is a cross-origin policy that is still alive on your server.** A94 `crossdomain.xml` with `allow-access-from domain="*"` at the root of an authenticated domain is a95 vulnerability **that does not depend on Flash existing**: other clients honour it and it still96 documents your surface. **Delete it if it no longer serves any purpose**, and never with a wildcard.97- **`allowScriptAccess`, `allowDomain`, `ExternalInterface`** describe a bidirectional bridge between98 untrusted content and the DOM. If embedded content remains, that bridge is an XSS with extra steps.99- **Ruffle does not eliminate the risk, it bounds it**: it is an emulator that executes untrusted100 content, and its surface is that of an interpreter written in Rust and compiled to Wasm. Serve101 **archived and known content**, from an **isolated origin** (your own subdomain, without session102 cookies, with a restrictive CSP), never from the domain of the authenticated application. Its103 sandbox and limits criteria belong to `webassembly-standards`.104- **"Portable" players, *projectors* and patches to bypass Adobe's block: forbidden.**105 They are binaries of unknown provenance distributed precisely to reactivate a runtime106 blocked by its manufacturer. Detect them in the estate and remove them (`detection-engineering-standards`).107- **AIR**: the packaged application **includes the runtime**. Updating AIR means **repackaging and108 redistributing the application**; if you do not, your users run an old runtime even if HARMAN has109 published the fix. Explicit repackaging cadence, and application signing with a valid, rotated110 certificate.111112*§4 and §6 are deliberately omitted*: there is no live testing or operability practice to set for a113retired platform. What does apply —tests and CI of the AIR application you keep maintaining, and of114the migration destination— belongs to `testing-qa-standards`, `cicd-standards` and to the destination115language's skill.116117## 7. Exit route and prohibitions118119**There is no "maintain" strategy: there is an exit route.** Choose by content type:120121| What it is | Destination |122|---|---|123| Animation or training material | Re-export from the original `.fla` to **HTML5 Canvas/WebGL** (Animate) or redo it as video if it is linear. **Without the `.fla`, it is reconstruction, not conversion** |124| Game or interactive application | Rewrite on **Canvas/WebGL** (`frontend-web-platform-standards`, `webgl-webgpu-standards`), or a modern engine; if the original engine is C/C++, **WebAssembly** |125| Enterprise Flex application | **Apache Royale** as a bridge to reduce cost, **with a written commitment to a final destination in HTML/TS** (§2); or direct rewrite by domain |126| Live desktop/mobile AIR application | Maintain under HARMAN licensing while the cost justifies it, **with license and renewal figures in writing**, or migrate to native/Flutter/web |127| Historical content with no owner | **Preservation**: keep the `.swf` as an archival object with metadata, and serve it with **Ruffle from an isolated origin** (§3). It is the only honest route when there is no source |128| Content with no identified value | **Retire.** Most of the `.swf` in an estate falls here, and it is the cheapest and safest option |129130**Decision rule**: if no owner or value shows up in the inventory, **it is deleted**; the burden of131proof is on whoever wants to keep it, not on whoever retires it.132133**Prohibitions:**134- ❌ **FORBIDDEN** to install, reactivate or maintain Flash Player on any machine in the estate, or to135 distribute third-party players/*projectors* to bypass the 12-Jan-2021 block.136- ❌ **FORBIDDEN** to write new content in ActionScript for the web, or to start a new project on AIR.137- ❌ `crossdomain.xml` with a wildcard, or left on the server "just in case".138- ❌ Serving `.swf` content (even via Ruffle) from the origin of an authenticated application.139- ❌ Treating a `.swf` as a secure container: **keys, tokens or internal endpoints inside a `.swf` are140 considered compromised** and are rotated (§3).141- ❌ Automatic AS2 → AS3, or AS3 → TypeScript migration, presented as a conversion: they are rewrites142 (§2).143- ❌ Redistributing an AIR application without repackaging with an updated SDK, or with an expired144 signing certificate.145- ❌ Committing to HARMAN's free tier without accepting the branded splash screen and the absence of146 support; or budgeting any commercial tier without a written license **and renewal** figure.147- ❌ Presenting Ruffle as full compatibility: its AVM2 is at **90 % of the language and 80 % of the148 API** according to the project itself (§2).149- ❌ Leaving ownerless `.swf` in an inventory indefinitely. They either have a retirement date or they150 have an owner.151152## 8. Mandatory web verification1531541. **The two Adobe dates** (31-Dec-2020 end of support; 12-Jan-2021 content block) on their official155 Flash Player end-of-life page. **Quote them verbatim; do not paraphrase them nor round them to156 "2021".**1572. **HARMAN's AIR SDK — declared gap**: the current version (51.x series according to secondary158 sources) **is not verifiable from their public site**, which is a SPA. Check it in the product159 portal. **The licensing tiers are verified** in the official `air.system.License` reference160 (`enterprise`/`professional`/`basic`/`free`, with `expiryDate` and `numberOfSeats`).1613. **AIR pricing — structural gap**: HARMAN does not publish rates; they are on request and by revenue162 threshold. Any figure has to come from a contractual quote, and you have to ask explicitly about163 **renewal** and about audit terms.1644. **Ruffle**: AVM2 compatibility status on their compatibility page (as of Aug 2026: language 90 %,165 API 80 %) and whether a stable release has appeared — as of Aug 2026 they only publish *nightlies*166 (latest verified, 5-Aug-2026). Also verify its CVEs: it is an interpreter of hostile content.1675. **Apache Royale**: whether there is a release later than **0.9.12 (11-Dec-2024)** and whether it has168 left `0.x`. A migration bridge with no releases is a risk that has to be put in writing.1696. **Adobe Animate**: product status, its licensing model and what it exports today (HTML5 Canvas,170 WebGL), before committing to a conversion with it.1717. Historical Flash Player and AIR CVEs associated with whatever you still have deployed, and CVEs of172 Ruffle itself if you deploy it.1738. Flash blocking status in the browsers and systems of your estate, to confirm that **nobody has174 reactivated anything** (it is what the audit usually finds).175176If the web contradicts this document, **the web wins** — flag the discrepancy.