← Local firmware patcher

CT2 documentation

Tracker+ Conditional Trigs — CT2

An independent, unofficial modification for Polyend Tracker+ (2024 plus model), using original firmware 1.2.0. Not affiliated with, endorsed by or supported by Polyend. Not for Tracker Mini or the original Tracker.

Public firmware identifier: 1.2.0-CT2 / Build 1504. Release: v0.2.1-CT2. Use the public web patcher to generate your firmware locally from the supported original input.

CT2 uses the exact hardware-validated H13 implementation, including the NE/!NE → PR/!PR correction. Only its displayed version label changes. The user confirmed H13 works on physical Tracker+ hardware, specifically including that fix. The project owner also installed and confirmed the final CT2 firmware works correctly on physical Tracker+ hardware. These reports do not establish that every hardware mode or configuration has been tested.

Corrected PRE after NE

NE and !NE now update their own track's PRE history with the evaluated logical conditional-note result, including both acceptance and rejection. A later PR follows that result; !PR inverts it. Micro-move changes dispatch timing without changing the recorded logical result. Neighbour chains continue to work, using the immediately preceding track's last conditional-note result. PR/!PR remain PRE non-producers. An event containing PR/!PR retains previous PRE even when NE is in the other FX column; both columns read before commit. Full semantics and examples.

CT2 is the corrected successor to the superseded H12 public release, v0.2.0-h12. H12 did not update PRE after NE/!NE. Its release, source and tag remain available for reference/recovery; the default web patcher now targets CT2. CT6 is preserved at archive/ct6-before-h12.

Make firmware locally

Supply your own unmodified PTF from the official Tracker+ downloads. The patcher runs in browser memory and never uploads firmware. It supplies no Polyend firmware and installs nothing. Only an exact verified output enables Download, named TrackerPlus_CT2.ptf.

FileSHA-256
Supported original Tracker+ 1.2.0 PTFd4616304f33d6d0b56516c658f34fa22517c1dd1630021c1ca89afca7b618ccd
Required CT2 output/referencebaa93d46208c0f6ab2ca0c7507fb3c430703a3ceada582a780779844a0d03b20

Read installation, recovery, compatibility, verification and the disclaimer before installing. CT6 projects require manual condition-ID conversion. H10–H13 saved IDs remain compatible with CT2; NE → PRE playback intentionally changes from H12's incorrect behavior.

Chance and Fill

Percentages 0–100; ratios 1:2 through 8:8; FIRST 1S / !1S; PRE PR / !PR; NEI NE / !NE. Exact encoder order in both directions:

0–100 → 1:2, 2:2, 1:3, 2:3, 3:3 … 1:8 … 8:8 → PR → !PR → NE → !NE → 1S → !1S

Ratios are ordered by denominator 2–8, then numerator 1–denominator. Existing stored IDs are unchanged. Fill FX1 and FX2 retain Constant, From-To and Random with all percentages and conditions, using the same logical order and endpoint controls. Try 1:4 for a four-pass phrase or Random PR → !NE to choose among PR, !PR, NE and !NE. Condition guide.

Origins and credits

Psygoo originated the concept, full roadmap and CT6 implementation, including the longer-term plan for ratios up to 8:8, FIRST, PRE and NEI. CT6 implemented the initial six conditions. FatRodzianko / Modular-Trackular subsequently reimplemented and expanded conditional triggers and developed the technical infrastructure. CT2 continues Psygoo's original roadmap, using and extending the Modular-Trackular implementation. The original concept did not originate in Modular-Trackular.

Original MIT copyright and license text, CT6 NOTICE and H12 provenance are preserved in LICENSE and NOTICE.md. MIT covers project code, not Polyend firmware or rights to distribute it. No original/modified firmware binaries, dumps or extracted proprietary functions are included.

Development and issue reports

Serve locally with node tools/serve.mjs; use HTTPS for remote hosting. Direct file URLs are unsupported because module workers and Web Crypto need an appropriate origin. Website visitors need no runtime dependencies.

node --test tests/core.test.mjs runs fixture-free checks. Full verification sets private STOCK_PTF and CT2_PTF paths, then runs that command and node tests/browser.mjs. Browser tests use Playwright 1.64.1 (npm ci and install the desired browsers in your development environment). BROWSER_ENGINES=chromium,firefox selects the verified test engines.

python3 tools/build-program.py --compiler /path/to/arm-gnu-toolchain/bin --check rebuilds the MIT patch template with Arm GNU 15.2.Rel1, reading no firmware. Architecture, release notes, publication plan and allowlist.

Report issues with model, firmware version, playback mode, tracks/rows/FX, expected/observed results and minimal steps. Do not attach firmware, dumps, private projects or credentials.

Chance conditions

Enter Chance (C) in FX1 or FX2. The value field uses the labels below, rather than internal IDs. Both columns and Fill use the same logical encoder order:

0–100 → 1:2, 2:2, 1:3 … 8:8 → PR → !PR → NE → !NE → 1S → !1S

Ratios are ordered by denominator 2–8, then numerator 1–denominator.

FamilyMeaning and example
Percentage, 0–100Stock probability behavior is preserved. Try 50 on a hat for variation.
Ratio A:BPass on position A of a B-pass track cycle. 1:4 starts a four-pass phrase; 4:4 adds its final fill.
FIRST, 1S / !1S1S passes the first track pass after reset; !1S passes later passes. Use 1S for an opening crash.
PRE, PR / !PRConsult the last eligible Chance event's result on this same track; !PR inverts it.
NEI, NE / !NEConsult the last evaluated conditional-note result on the immediately preceding track; !NE inverts it.

PRE history

Percentage values 0–100 and ratio/FIRST values 101–137 retain their existing PRE producer behavior: final combined condition acceptance is recorded after evaluation. NE/!NE now also produce PRE, using the final logical conditional- note result: accepted conditions AND a valid note trigger. A rejected NE, or one evaluated without a valid note, records false. A later PR follows it and !PR inverts it. This corrects the H12 bug and is hardware-confirmed in H13.

PR/!PR never produce PRE. Any event containing PR or !PR leaves PRE unchanged, including when another producer or NE is in the other column. An NE+NE or NE+base event without PR records its final combined logical note result once. Both columns see the same prior history before that commit; stock evaluates FX2 then FX1. PR on the same row as NE sees the previous PRE, not a partial current-row result.

Plain notes, empty rows and skipped evaluations retain history. PR always reads its own track. Reset clears PRE to false, making PR reject and !PR pass until a producer. Base producers keep their previous handling of FX-only conditions; NE specifically uses logical note validity, as described below.

Example: put a 50% Chance hit on row 01, PR on row 03 and !PR on row 05 of one track. The PR hit follows an accepted percentage event; !PR follows a rejected one. The consumer rows do not replace the percentage event's PRE history.

Example after NE: track 1 row 01 has note + 1S. Track 2 has note + NE on row 03, PR on row 05, !PR on row 07. First pass: NE and PR play; !PR rejects. Later passes: NE and PR reject; !PR plays. Replace NE with !NE and the source outcome reverses while PR still follows the evaluated !NE result. Micro-move and ordinary notes between those rows do not change which PRE result the consumers read.

Neighbour results, across rows

NE reads the last evaluated conditional-note result on the immediately preceding track, whether on an earlier row or the same row. It uses logical acceptance/scheduling, not the exact audible dispatch time. Micro-move changes sound timing without changing that logical result. PR/!PR, NE/!NE, percentages, FIRST and ratios can all produce neighbour results, enabling chains.

An evaluated conditional event records true only if its combined conditions pass and it has a valid note trigger. Rejection records false. A condition on an FX-only/invalid-note event cannot record a successfully played note. Empty rows and ordinary notes do not replace the last conditional result. A muted or disabled track that stock processing skips does not evaluate a condition and retains its prior result; NE does not measure mixer output, volume or audibility. These edge cases were checked offline, not individually hardware-certified. Track 1 has no neighbour: NE rejects and !NE accepts. There is no wraparound.

Example on different rows: track 1 row 01 has note + 1S; track 2 row 03 has note + NE; track 3 row 05 has note + !NE. On the first pass tracks 1 and 2 play; on later passes track 3 plays. The same logical result holds on the same row and with Micro-move. Tracks are evaluated in their established order; a later track can observe the preceding track's newly evaluated conditional result.

Loops retain results. Transport restart, preview/count-in reset and global pattern changes clear histories; queued per-track pattern changes clear that track's result when consumed. Song/performance modes, complex routing and every transport combination have not all been separately hardware-tested.

Fill FX1 and FX2

Use the stock three modes and endpoint fields. Select Chance explicitly.

Other FX and the stock Random-FX-type option keep their previous behavior. There is no new Fill mode. Stored IDs: percentages 0–100; 1S/!1S 101/102; ratios 103–137; PR/!PR 138/139; NE/!NE 140/141.

Installation

This independent project is not affiliated with Polyend. Read the disclaimer, compatibility guide and recovery procedure before making changes.

Manual reference: Polyend Tracker+ manual, firmware update/recovery. To return to official firmware, use its normal update procedure when available, or read recovery. Restoring firmware does not migrate projects.

Final CT2 hardware smoke check (manual)

Keep backups and a working recovery image. After manually installing CT2, confirm Config shows 1.2.0-CT2 / Build 1504, normal boot, Record note entry and Play/Stop. Track 1 row 01: note + 1S. Track 2: note + NE on row 03, PR on row 05, !PR on row 07. First pass NE/PR play; later passes !PR plays. Swap NE for !NE and confirm PR follows that inverted result. Repeat with Micro-move and either FX column, then a short NE chain, save/reload and one Fill operation per mode in both FX columns. This is a smoke check of the label-only variant; it does not replace the stated hardware coverage limits.

Project compatibility and superseded releases

CT2 preserves H10–H13's stored condition IDs, labels, logical order and Fill values. It matches hardware-tested H13 except for the version label. No saved- pattern conversion is required from H12 or H13. Playback involving NE → PR/!PR intentionally changes from H12: NE/!NE now replace PRE with their logical note result, fixing H12's exclusion bug. PR-containing mixed events retain PRE.

The superseded H12 release remains available for history/reference. Its tag points to ca853c107ef3ddfdfa3251ea967f89da60d7816d. CT6 remains recoverable at archive/ct6-before-h12, commit dfb5cd4bdfe3f8bd1c68c4c998c2d44365a596ad. CT2 replaces the default web patcher, while both prior versions remain recoverable through these references.

CT6 projects need manual conversion

The original public CT6 used different stored values. Opening those projects unchanged in CT2 can play different conditions. Back up first, work on copies, and re-enter the intended labels under CT2 before playback. Keep a record of the original values while still using CT6. Do not mass-convert unrelated FX.

Original CT6 stored value / labelCT2 stored value / label
102 / 1:2103 / 1:2
103 / 2:2104 / 2:2
104 / 1:4108 / 1:4
105 / 2:4109 / 2:4
106 / 3:4110 / 3:4
107 / 4:4111 / 4:4

CT6's reserved value 101 becomes 1S in CT2; review any unsupported stored values manually. The public patcher takes official stock firmware only; it does not patch CT6 firmware, convert projects or read your SD card.

Returning to stock or CT6 does not preserve CT2 condition meanings. Keep separate project copies for each firmware. Preserve CT6 source at repository commit dfb5cd4bdfe3f8bd1c68c4c998c2d44365a596ad; its original website must remain recoverable. The default website targets CT2; older source snapshots stay available.

Recovery and returning to stock

Keep an untouched official Tracker+ 1.2.0 PTF and a separate SD/Workspace/project backup before installing. Recovery is not guaranteed by this project.

If the device still opens Config, follow the official normal update process using official firmware. If it does not boot normally, consult section 13.3 of the official Tracker+ manual and follow Polyend's recovery instructions for the pinhole recovery button near USB while powered on. The manual describes recovery searching the Firmware folder and selecting a firmware file. Because that selection can be arbitrary, prepare a recovery SD card with only the verified official stock PTF eligible in Firmware; do not leave multiple modified images there. This is a project precaution, not an additional official guarantee.

Use firmware for the exact Tracker+ model, reliable power and the official procedure. If recovery fails, use Polyend support. A firmware rollback does not restore or migrate project data: use backed-up copies appropriate to that firmware. Do not overwrite the only copy of a project.

Unofficial modification and limitations

This is an independent, unofficial project, not affiliated with, endorsed by or supported by Polyend. Use at your own risk. Firmware changes can cause instability, data loss or failure to boot and may affect support or warranty. Make independent SD card, Workspace and project backups. Recovery is not guaranteed. Do not distribute original or generated Polyend firmware here.

H13 was installed and confirmed working on physical Tracker+ hardware, specifically including NE/!NE → PRE. CT2 changes only H13's displayed version label. The project owner has also installed and confirmed the final CT2 firmware works correctly on physical hardware. Neither report nor offline checks certify every Song/performance/selection mode, external-clock setup, routing configuration or worst-case interrupt timing.

Neighbour conditions record sequencer logical conditional-note acceptance, not audible output. See condition semantics. CT6 project IDs need manual conversion.

The MIT license covers this project's code and retains applicable notices. It grants no rights to Polyend firmware. Users must obtain supported official firmware themselves and comply with its applicable terms. No firmware file, stock dump or proprietary extracted function is supplied with this release.

CT2 origins, credits and provenance

Original concept, full roadmap and CT6: Psygoo. FatRodzianko / Modular-Trackular subsequently reimplemented, expanded and developed the technical infrastructure. CT2 continues Psygoo's original roadmap using and extending that implementation. The concept did not originate in Modular-Trackular.

CT2 contains the hardware-confirmed H13 NE/!NE → PRE correction and a version-only rename to 1.2.0-CT2 / Build 1504. src/ne_pre contains the MIT project assembly and linker layout for the 34-byte correction. The source-only builder compiles it and reconstructs the final CT2 template without opening firmware. Three stock replay slots totaling 14 bytes remain zero; only the user's verified original input supplies those bytes locally. No Polyend firmware rights are granted.

The original MIT LICENSE and all earlier NOTICE provenance below are retained verbatim. The following H12 record is historical; current semantics are in CONDITIONS.md and release identity is CT2. Playwright remains a development-only Apache-2.0 dependency; runtime assets have no external libraries.

Preserved H12 NOTICE.md (verbatim historical record)

Origins, credits and H12 provenance

Psygoo originated the Tracker+ conditional trigger concept, including the long-term roadmap for ratios up to 8:8, FIRST, PRE and NEI. TrackerPlus-CT-Web (CT6), by Psygoo, implemented the initial six conditions. FatRodzianko's Modular-Trackular subsequently reimplemented and extended conditional triggers and developed the technical infrastructure used here. H12 continues Psygoo's original roadmap while building on that Modular-Trackular implementation. This chronology does not transfer concept authorship to Modular-Trackular.

The MIT LICENSE is preserved verbatim, including copyright (c) 2026 Modular-Trackular contributors. The original public CT6 notice below is kept verbatim as historical provenance; its old file references describe that source snapshot, not the H12 public file inventory.

H12 source additions

Upstream implementation reference: FatRodzianko/Modular-Trackular, pinned commit a30b280653a93ff4eff9618685a3a476c0d9dfc6. src/ct1 preserves the upstream conditional implementation. src/history, src/pre, src/neighbor_labels, src/neighbor, src/order and src/fill contain the incremental H03/H07/H09/H10/H11/H12 project C/assembly and fixed linker layouts. tools/build-program.py reproduces the H12 project template without opening any stock firmware or candidate binary.

The browser's PTF reader/encoder, worker/session UI and stylesheet build on the MIT public CT6 patcher, pinned commit dfb5cd4bdfe3f8bd1c68c4c998c2d44365a596ad. Runtime imports are self-contained. The generated h12-program.js contains only rebuilt project patch code, padding, metadata and zero placeholders for 14 stock replay bytes. Those bytes are copied exclusively from the verified user-supplied original input in memory. src/stock-fingerprints.json contains hashes, not stock instruction windows. No original/modified firmware, stock dump or extracted proprietary function is included. The MIT license does not grant rights to Polyend firmware or its redistribution. Playwright/playwright-core are Apache-2.0 development dependencies only and are not delivered to website visitors.

Original CT6 NOTICE.md (verbatim historical record)

Provenance and redistribution boundary

This project reuses Modular-Trackular, MIT License, copyright (c) 2026 Modular-Trackular contributors. The original LICENSE is preserved verbatim. Upstream: https://github.com/FatRodzianko/Modular-Trackular . Local source snapshot HEAD: 021d19249da8b1f183037c890ec6986c4797d717, plus the original CT6 implementation and patcher extensions. This standalone repository deliberately does not copy the source repository's Git history, unrelated patches, projects or binary artifacts.

Reused components:

The firmware input, generated PTF, original instruction windows, dumps, SD contents and raw local test artifacts are excluded. Hook metadata contains addresses and SHA-256 fingerprints, not the original firmware windows; the patcher obtains those windows from the user's input. Payload source generates our patch code and replays the small displaced instruction sequences required by the hooks; it does not embed stock functions or firmware dumps. The MIT license is not a license to Polyend's firmware. No claim is made here about redistribution rights for generated firmware.

Browser Phase 1 additions port the existing MIT PTF/inline-hook logic and generate a source representation of the original MIT CT6 patch program without reading firmware. The fixed program includes only project patch code and the same small displaced-instruction replays already in the original emitter. All hook originals are still obtained from the user's input. No Polyend firmware license is granted. Playwright and playwright-core are Apache-2.0 development dependencies only; browser runtime assets have no third-party dependency. See BROWSER.md for the export and verification procedure.

CT2 verification — 2026-10-23

PASS offline and local-browser distribution checks. Final CT2 hardware validation has been confirmed by the project owner; publication is authorized.

Reference identity and exact differences

Hardware-tested parent H13 SHA-256: 076628c6cbec2a110ae1be1c5014a9f586dad9042b8a5725b671cf9ab361fd76.

CT2 reference and required browser output SHA-256: baa93d46208c0f6ab2ca0c7507fb3c430703a3ceada582a780779844a0d03b20.

Only three decoded bytes change: 0x601BC135: 68→43, 0x601BC136: 31→54, 0x601BC137: 33→32, changing the same-size format suffix h13 to CT2. One PTF data record/checksum changes. No other byte differs, no records move, and no code/RAM/stack/hook/ITCM/Fill/order/history layout changes. PTF remains 4,606,231 bytes; decoded image 1,623,610 bytes; entry 0x60030319. Actual stock Config selector/formatter reports 1.2.0-CT2 / 1504 in both selector states.

The compiler-only source export rebuilds with Arm GNU 15.2.Rel1, reading no firmware. Its 6,850-byte project template SHA-256 is bd12857664cf6b7617aedf0a2911257a9557b7e42cae1042de22ca4a9ab88ee0. There are 29 fingerprinted original-prefix edits and 14 zero replay bytes, supplied exclusively from the original user input. Template regeneration --check passes. No stock firmware/function dump is embedded in the source.

Complete browser path

CheckResult
Chromium 156.0.8078.4, Linux headlessPASS: stock file picker and drag/drop, actual module worker, hash gate and Blob download. Two outputs match the CT2 reference byte-for-byte and by SHA-256.
Firefox 157.0, Linux headlessPASS: the same full flow, two exact downloads.
Correct identityTitle/release v0.2.1-CT2, firmware 1.2.0-CT2 / Build 1504, visible/download filename TrackerPlus_CT2.ptf, PRE fix notice and contributor credits checked.
No transmissionZero requests during processing; all post-load requests blocked by the test. Deliberate synthetic POST is rejected by CSP before reaching the server. Runtime code has no network API, external assets or service worker.
Input rejectionInvalid extension/type, empty, multiple, oversized, synthetic, modified, truncated, line-ending-altered, H12/H13 and already-patched CT2 files reject. Only the exact supported original stock SHA is accepted.
Download controlsNo download until worker and UI hashes pass. Bad input after success clears stale output; concurrent jobs blocked; worker faults and unverified output fail closed.
StabilityRepeated Node/browser outputs match; input is unmodified; caller mutation after invocation cannot alter the snapshotted job.
Layout/docsHome at 320/375/1280 px, docs at 320/1280 px without horizontal overflow; local links/anchors, compatibility and PRE semantics checked.

The six core/integration test groups pass. Original stock fixture SHA-256: d4616304f33d6d0b56516c658f34fa22517c1dd1630021c1ca89afca7b618ccd. The preparation browser tests used localhost. Firmware test inputs, outputs, caches and screenshots stay outside the public tree. Publication additionally checks the actual live Pages site and output before claiming deployment success.

Focused firmware retests

The actual Chromium-generated CT2 download executes in the established bounded ARM fixtures. Hardware H13 is the independent comparison baseline.

Hardware evidence, remaining limits and publication gate

The project owner reports successful final CT2 hardware validation on a physical Polyend Tracker+. H13 was previously hardware-confirmed, including NE/!NE → PRE. CT2 changes only H13's version label. No automatic device flashing is performed by the patcher or release tooling. No exhaustive Song/performance/external-clock/routing/interrupt-timing hardware matrix is claimed. Offline fixtures use synthetic peripherals/MIDI and an in-memory SD overlay; they do not prove installed flash/cache behavior.

Only the stated Linux Chromium/Firefox engines were tested. Safari/WebKit/iOS and other browser/platform combinations are not claimed verified. Users must obtain their own official supported firmware; a fresh authenticated official firmware download was not performed here.

Read-only remote checks found existing H12 at commit ca853c107ef3ddfdfa3251ea967f89da60d7816d, with v0.2.0-h12 and the CT6 archive preserved. CT2 supersedes H12 and becomes the default patcher; H12 remains available through its unchanged release/tag. CT6 projects still need manual ID conversion. No output-reproduction or firmware-integrity blocker remains. Publication is explicitly authorized; live deployment/output verification follows.

Public-source review checks the explicit file allowlist, source-only packaging, local links, path/credential patterns, MIT license and historical NOTICE. This is a bounded review, not a general legal/security certification. No original or modified Polyend PTF, stock dump, private fixture or development cache is included.

Tracker+ Conditional Trigs CT2 — v0.2.1-CT2

Corrected CT2 release, authorized for publication by the project owner. Firmware identity: 1.2.0-CT2 / Build 1504. Output: TrackerPlus_CT2.ptf.

Fix PRE after NE/!NE: an evaluated NE/!NE now updates its track's PRE with the logical conditional-note result. If it plays, later PR plays and !PR rejects; if rejected, later PR rejects and !PR plays. Works across rows and with Micro-move. Neighbour-readable results and NE chains remain functional. PR/!PR do not produce PRE, and PR-containing mixed rows retain their previous PRE in either FX order.

CT2 includes the exact hardware-validated H13 implementation. The only firmware change from H13 is the displayed version label, from 1.2.0-h13 to 1.2.0-CT2. Build 1504, saved condition IDs, labels, history/reset rules, encoder order and Fill FX1/FX2 Constant, From-To and Random remain unchanged.

Encoder order: 0–100 → 1:2 … 8:8 → PR → !PR → NE → !NE → 1S → !1S.

CT2 supersedes v0.2.0-h12, which incorrectly excluded NE/!NE from PRE updates. H12's release/tag/history remain available; CT6 is preserved at archive/ct6-before-h12. H12/H13 saved IDs need no migration. CT6 projects need manual condition-ID conversion.

Bring your own original official Tracker+ 1.2.0 PTF. The browser patcher processes it locally and enables download only for this verified CT2 SHA-256:

baa93d46208c0f6ab2ca0c7507fb3c430703a3ceada582a780779844a0d03b20

No Polyend firmware binaries are supplied or uploaded. Distribution contains MIT project source and the static patcher only. Read installation, recovery, disclaimer and verification.

Hardware: the project owner confirmed the final CT2 firmware works correctly on physical Tracker+ hardware. H13's PRE fix was also hardware-confirmed. Offline and Chromium/Firefox checks are reported separately; not every hardware mode or browser platform is claimed verified.

Origins and credits: Psygoo — original concept, roadmap and CT6. FatRodzianko / Modular-Trackular — subsequent reimplementation, expansion and technical infrastructure. CT2 continues Psygoo's original roadmap using and extending that implementation. Original MIT notices and historical NOTICE remain preserved; MIT grants no Polyend firmware rights.

CT2 publication and recovery

Target: Psygoo/TrackerPlus-CT-Web. Release tag: v0.2.1-CT2. Release notes. The project owner explicitly authorized the source-only release and Pages update after confirming the final CT2 firmware on physical hardware. Firmware is never distributed or flashed by the release process.

Read-only remote checks found gh-pages at ca853c107ef3ddfdfa3251ea967f89da60d7816d, with the published H12 tag/release v0.2.0-h12. CT6 is archived at archive/ct6-before-h12, commit dfb5cd4bdfe3f8bd1c68c4c998c2d44365a596ad. Preserve both references, history and availability. Re-fetch the remote and stop/review unexpected changes before a fast-forward update; never force-push or rewrite history.

PUBLIC_FILES.json is the exact file allowlist and SHA-256 manifest (excluding itself from recursion). Publish only that reviewed source tree or its source archive, never the surrounding private development repository or evidence. Runtime assets: .nojekyll, index.html, documentation.html, style.css, app.js, worker.js, session.js, patcher.js and ct2-program.js. Host over HTTPS; preserve connect-src 'none' and the local-only worker flow.

No PTF, dump, extracted proprietary function, stock instruction window, private fixture, local evidence, SD content, toolchain, dependency cache or credential belongs in publication. The generated template contains project code and zero slots for 14 stock replay bytes, supplied only from a verified original input. Preserve the original MIT license and the complete historical NOTICE.

CT2 reference/output identity, local Chromium/Firefox checks, firmware checks and final owner-reported CT2 hardware validation are complete. After deployment, verify the actual public site and generated hash before claiming success. Do not alter, withdraw or overwrite the old H12 release.