feat: initial commit - Jhonny Editor
- Adicionado estrutura completa do projeto - Configurado MCP server para Premiere Pro - Adicionado documentação e skills - Configurado Gitignore para o projeto
This commit is contained in:
Executable
+118
@@ -0,0 +1,118 @@
|
||||
# UXP hybrid benchmark and promotion gate
|
||||
|
||||
This repository does not ship or enable a native UXP addon. It ships a deterministic
|
||||
JavaScript benchmark, an adapter contract for a future Adobe SDK build, and a
|
||||
fail-closed evidence verifier. The production `uxp-plugin/manifest.json` remains
|
||||
manifest v5 without `enableAddon` or an `addon` declaration.
|
||||
|
||||
## Official baseline
|
||||
|
||||
Adobe documents Hybrid Plugins as an advanced path for performance-critical C++
|
||||
work. Premiere first officially supported the feature in 26.2. The SDK is downloaded
|
||||
from Adobe Developer Console and versioned separately from the host. A candidate
|
||||
plugin must use manifest v6, declare its `.uxpaddon`, and explicitly request
|
||||
`requiredPermissions.enableAddon`.
|
||||
|
||||
Adobe's bundle layout is strict:
|
||||
|
||||
```text
|
||||
mac/x64/premiere-mcp-benchmark.uxpaddon
|
||||
mac/arm64/premiere-mcp-benchmark.uxpaddon
|
||||
win/x64/premiere-mcp-benchmark.uxpaddon
|
||||
```
|
||||
|
||||
Windows evidence must use a Release build so it does not depend on Visual Studio
|
||||
debug runtimes. Both macOS binaries must be signed and notarized with a valid Apple
|
||||
Developer ID before distribution.
|
||||
|
||||
Official references:
|
||||
|
||||
- [Hybrid Plugins overview](https://developer.adobe.com/premiere-pro/uxp/plugins/hybrid-plugins/)
|
||||
- [Building Hybrid Plugins](https://developer.adobe.com/premiere-pro/uxp/plugins/hybrid-plugins/build/)
|
||||
- [Hybrid Plugins FAQ](https://developer.adobe.com/premiere-pro/uxp/plugins/hybrid-plugins/faq/)
|
||||
- [UXP manifest](https://developer.adobe.com/premiere-pro/uxp/plugins/concepts/manifest/)
|
||||
- [Premiere UXP changelog](https://developer.adobe.com/premiere-pro/uxp/changelog/)
|
||||
|
||||
## Candidate addon contract
|
||||
|
||||
After downloading the official SDK, build a dedicated benchmark addon from the SDK
|
||||
template. It must export one synchronous function:
|
||||
|
||||
```js
|
||||
runBenchmarkKernel(values: Float64Array, iterations: number): number
|
||||
```
|
||||
|
||||
The return value must match `PremiereMcpHybridBenchmark.weightedEnergy()` within the
|
||||
harness tolerance. No SDK headers or prebuilt binaries are copied into this
|
||||
repository, and the contract is not an assertion that a native implementation exists.
|
||||
|
||||
Use a temporary development manifest—not the production manifest—to declare the
|
||||
addon and `enableAddon`. Load it through UXP Developer Tool into stable Premiere
|
||||
26.2 or newer. In the panel's developer console, run:
|
||||
|
||||
```js
|
||||
PremiereMcpHybridBenchmark.run({
|
||||
requireAddon: true,
|
||||
sampleCount: 30,
|
||||
warmupCount: 3,
|
||||
iterations: 4,
|
||||
inputLength: 131072,
|
||||
seed: 1337
|
||||
})
|
||||
```
|
||||
|
||||
Record at least 20 samples for both JavaScript and native implementations after the
|
||||
same warmup. Collect process peak working-set memory with the same host-monitoring
|
||||
method on every target; the UXP heap snapshots returned by the harness are
|
||||
diagnostic only and are not accepted as process memory evidence.
|
||||
|
||||
## Promotion criteria
|
||||
|
||||
Copy `benchmarks/uxp-hybrid/evidence.template.json` (schema version 3), validate it
|
||||
against the adjacent v3 schema, and add one run for each required target: Windows x64,
|
||||
macOS x64, and macOS arm64. Every run must use the same full source commit, an
|
||||
identified SDK version, a Release binary SHA-256, matching output, and stable Premiere
|
||||
26.2+.
|
||||
|
||||
Create and structurally verify a hash-only UXP Hybrid header receipt from the
|
||||
authorized SDK download first. Add the canonical digest printed by the receipt
|
||||
verifier as `sdkHeaderReceiptSha256`, retain the actual receipt outside this
|
||||
repository, and give its local path to the benchmark verifier. The receipt must
|
||||
identify `uxp-hybrid`, and its `source.sdkVersion` must exactly match every run's
|
||||
`sdkVersion`.
|
||||
|
||||
Before submitting schema-v3 performance evidence, record the candidate
|
||||
development bundle with the separate [Hybrid addon-layout receipt](uxp-hybrid-addon-receipt.md),
|
||||
then create and verify a [Hybrid CCX archive receipt](uxp-hybrid-ccx-receipt.md).
|
||||
The v3 benchmark record commits to all three canonical receipt digests. The
|
||||
benchmark verifier re-reads the supplied local `.ccx`, checks its current
|
||||
content-free receipt chain including schema-v2 whole-archive ZIP hygiene and
|
||||
all-entry local-header consistency, and requires every platform run's
|
||||
`addonSha256` to match its corresponding attested binary. It does not publish
|
||||
source, binaries, the manifest ID, archive contents, entry names, or local paths.
|
||||
|
||||
The frozen `evidence.v1.schema.json` and `evidence.v2.schema.json` plus their
|
||||
verifier paths remain available for historical records. v1 has no receipt
|
||||
binding and v2 binds only the SDK header receipt; neither can become a new
|
||||
package-bound candidate. New submissions must use v3.
|
||||
|
||||
The native implementation must improve both p50 and p95 by at least 30% on every
|
||||
target while keeping peak working-set regression at or below 10%. Verify with:
|
||||
|
||||
```powershell
|
||||
npm run benchmark:uxp-hybrid:verify -- `
|
||||
--input .\path\to\evidence.json `
|
||||
--sdk-header-receipt C:\sdk-evidence\uxp-hybrid-headers.json `
|
||||
--addon-receipt C:\hybrid-evidence\benchmark-addon-layout.json `
|
||||
--ccx-receipt C:\hybrid-evidence\benchmark-ccx.json `
|
||||
--ccx C:\hybrid-evidence\benchmark-plugin.ccx
|
||||
```
|
||||
|
||||
Only a zero exit code and `promotionEligible: true` support a later PR that adds the
|
||||
native source, reproducible build files, signed/notarized artifacts, manifest v6, and
|
||||
addon permission. This receipt binding locally verifies the supplied archive's
|
||||
hash-only receipt chain and the submitted evidence's SDK and binary identities;
|
||||
it does not establish access entitlement, compile an addon, validate signing or
|
||||
notarization, prove UDT or Creative Cloud installation, validate an Adobe portal
|
||||
record, or prove behavior in a licensed Premiere host. This benchmark PR itself
|
||||
is not that promotion.
|
||||
Reference in New Issue
Block a user