Reverse-Engineering Codex · Companion to the .exe

The serpent
coiled around time.

how the engine reads · what the formulas mean · the 138 & 19 lattice underneath

Ophis v9 shipped as a 91 MB Windows installer with a Chromium runtime and a sign-in gate. Under the wrapper: an un-obfuscated Electron app running a hand-rolled formula engine over Y — the axial-rotation count between two anchor dates. This guide reads it out: the fifteen shipped operations, the constants that drive them (π, φ, curvature, hepta), how to extend the grammar with your own 138 and 19 resonance operations, and a live cast you can drive from this page.

91 MB
Installer
32 MB
app.asar
11.5 k
Lines JS
22
Modules
15
Default ops
3
MSRF sets
§1 · Quick Tour

How Ophis actually works, in four moves

Two anchor dates in

You give Ophis two dates — the source calls them X-Dates. Anything from Bitcoin halvings to your first passage into the Great Pyramid. Two is the minimum; more anchors mean more interval pairs to project from.

Interval becomes Y

The engine counts the axial rotations between the pair — days, not years. For DAYS scope both dates are locked to midnight GMT and any time/location you set is discarded. That count is Y, the single variable every formula receives.

Fifteen formulas run

Each of the shipped operations transforms Y into a day-offset. The formula's X1+ or X2+ prefix decides which anchor the offset gets added to. The result is a projected Z-Date.

Z-Dates get scored & tagged

Each projection is scored — alpha operations weigh more than beta. Values close to the MSRF resonance lists (NORMAL / IMPORTANT / VORTEX) earn multipliers. Timeline chart on top, XLSX / PDF / CSV export below. This is the whole loop.

The one thing the source doesn't shout at you

Ophis's power isn't the individual projection — any single Y·φ or Y·π estimate is easy to dismiss. The signal is convergence: when four different operations from different anchor pairs all land on the same date. That's what the convergence panel is looking for, and it's what your custom operations (§4) should be tuned to reveal.

§2 · The Vocabulary

Eight words to know

The source uses these names without ceremony. They're borrowed from Gann-style cycle work with a coat of astronomical paint.

Iso-Event

A named cycle. Contains anchors + operations + settings. Persists as one row in the .oph save file.

X-Date

An input anchor. Date plus optional time and lat/long. Every cast needs at least two.

Y · interval

Days between two X-Dates — the axial rotation count. The one variable exposed to every formula.

Operation

An equation transforming Y into a day offset. Must begin X1+ or X2+.

Z-Date

A projected output date — Xanchor + f(Y). What the engine is actually predicting.

Alpha / Beta

Operation weight class. Alpha ops score higher on match — considered "principled" projections.

MSRF

Three resonance sets — 276 integers, 52 integers, 12 floats. A Z-value that lands near one gets a score multiplier.

Hit count

Number of operations landing on the same Z-Date within tolerance. High hit-count days are the whole point.

§3 · The Formula Cookbook

The fifteen shipped operations, translated

Every formula below is a real Ophis default — extracted verbatim from ophis_model__params.js:65–110. Tap any formula to copy it. Paste into the operations table inside the app. α · Alpha operations weight higher on match than β · Beta. The Hepta-Cycle operation is disabled by default — added August 2025 per a source comment.

π
OPH_PI
3.14
radius
φ
OPH_PHI
1.618
golden
κ
OPH_CRV
5.08
π · φ · curvature
η
OPH_HEP
7.01
hepta-cycle

Isometric & Mirror the interval itself, or its palindromeOps 1–2

X2+oph_round(Y) α · Alpha
The Isometric Date. Project the exact interval forward from the later anchor. Simplest Archaix projection — if Y = 1319 days between X1 and X2, add 1319 days to X2.
X2+oph_flip(oph_round(Y)) α · Alpha
The Holo-mirror. Reverse the interval's digits and project. Y = 1319 → 9131. The palindromic heart of the engine.

Golden φ · 1.618 the Fibonacci division and expansion setOps 5, 6, 9

X2+Y/OPH_PHI α · Alpha
Golden division. Y ÷ φ. The classic Fibonacci retracement in date form.
X2+(Y/2.0)xOPH_PHI β · Beta
Half-Y golden step. Half the interval, scaled by φ. Named OPERATION_EQUATION_FOR_ORIGINAL_BETA_PHI_6 in source.
X2+YxOPH_PHI α · Alpha
Golden expansion. Y × φ. The full golden projection forward from X2.

Radius π · 3.14 circular sweep projectionsOps 4, 8, 10, 12

X1+(Y/2.0)xOPH_PI β · Beta
Half-arc from X1. Half the interval swept by π. The "semicircle" projection.
X2+(Y/2.0)xOPH_PI β · Beta
Half-arc from X2. Same semicircle projection anchored at the later date.
X1+YxOPH_PI β · Beta
Full radius projection. Named OPERATION_EQUATION_FOR_RADIUS_PROJECTION in source. Y × π, from earlier anchor.
X2+YxOPH_PI β · Beta
Full radius from X2. Same, from later anchor.

Curvature κ · 5.08 π · φ — the "curvature" constantOps 3, 7, 11, 13, 14

X2+Y/OPH_CRV β · Beta
Curvature division. Y ÷ κ. The tightest of the four constant divisions.
X1+(Y/2.0)xOPH_CRV β · Beta
Half-Y × κ, from X1.
X2+(Y/2.0)xOPH_CRV β · Beta
Half-Y × κ, from X2.
X1+YxOPH_CRV β · Beta
Full curvature from X1. Y × 5.08.
X2+YxOPH_CRV β · Beta
Full curvature from X2. Y × 5.08.

Hepta η · 7.01 the newcomerOp 15 · disabled by default

X1+YxOPH_HEP off by default
Hepta-cycle projection. Added August 2025 per source comment "New Hepta-Cycle Operation from Jason". Y × 7.01. Enable it in the operations table to include it in casts.
§4 · The 138 / 19 Lattice

Extending Ophis with Chronicon resonance

Ophis ships with four constants — π, φ, κ, η — because those are the ones the original author saw. But the grammar is open: any custom operation you paste in gets validated and compiled the same way. Below are the operations that read the 138-Phoenix lattice and the 19-Metonic gear — the pair that makes the Chronicon come alive inside the Ophis engine.

The heaviest fingerprint of the lattice: Jan 19 2023 → Aug 2 2027 = 1,656 days = 138 × 12 = the Flood span (AM 1656). Pop those two dates into the live cast (§5) and Y comes out 1656 — the Genesis paragraph lock.

✱
PHOENIX
138
the return interval
☾
METONIC
19
moon phase repeat
☠
NEMESIS
792
the culling number
⧗
NER
600
Anunna turning
⟳
METONIC·d
6940
19 y in days ≈ 235 lunations
⧖
FLOOD
1656
138 × 12 · AM year

138 · Phoenix Lattice snap to the Phoenix grid, or step across itCustom

X2+oph_round(Y/138)*138
Snap to 138. Round the interval to the nearest whole Phoenix-count, project. Turns 1319 into 1242 (=138·9) or 1380 (=138·10), whichever's closer.
X2+Y+138
One Phoenix number beyond the isometric date. Simplest 138 hop.
X2+Y+1656
Flood span forward. Y + 1656 days = one full Genesis Flood-count added to the interval.
X2+Y*138/100
Scale by 1.38. Small stretch of the interval into Phoenix ratio.
X1+oph_round(Y/414)*414
Snap to 414. 138 × 3 — the "cursed time" multiple.
X2+oph_round(Y/138)*138+138
Next Phoenix past the snap. Snap to the nearest 138, then add one more.

19 · Metonic Gear the moon's whisperCustom

X1+oph_round(Y/19)*19
Snap to 19. Round the interval to the nearest 19-multiple. Metonic lock on the earlier anchor.
X2+Y+19
A Metonic 19 beyond the isometric date.
X2+oph_round(Y/6940)*6940
Snap to whole Metonic cycles. 6940 days ≈ 19 years ≈ 235 lunations — same moon phase, same day of year.
X1+Y*19/10
Scale by 1.9.

Cross-lattice where 138 and 19 talk to each otherCustom · study operations

X2+oph_flip(Y)+19
Mirror + Metonic seal. Flip the digits of Y, add 19. The palindrome bumped one lunar generation forward.
X2+oph_flip(oph_round(Y/138)*138)
Phoenix-snap, then palindrome. Snap to 138, mirror the result. 1380 → 0831 = 831 — the Nemesis palindrome.
X2+oph_round(Y/138)*19
Trade Phoenix-count for Metonic-count. How many 138-hops does Y contain? Multiply that by 19.
X2+Y+792
Nemesis step. Y + 792. The cataclysm interval — appears in Ophis's MSRF sets as a resonance value.
X2+Y*360/365.2422
Draconian re-frame. Reframe Y into the 360-day pre-Flood year. Turns 1656 tropical days into ~1631 Draconian days.
§5 · Grammar & Constants

What's legal in an operation

Three rules. It must start with X1+ or X2+. It may use only Y, numbers, the constants, the oph_* functions, and arithmetic + − * / ( ). It must evaluate to a number. Anything else is rejected by the strip → math.js pass before it ever compiles.

TokenMeaning
X1 / X2The earlier / later anchor of the pair. Your equation begins with one of them, plus an offset. Ophis picks the anchor by inspecting the prefix — no run-time choice.
YThe interval between the two anchors, in days. Signed positive for X1 → X2 order.
OPH_PIArchaix π — 3.14 (two-decimal precision).
OPH_PHIGolden ratio — 1.618 (three-decimal exception).
OPH_CRVCurvature — 5.08 (π · φ, rounded).
OPH_HEPHepta-cycle — 7.01.
oph_round(n)Nearest whole day. Used to snap projections cleanly.
oph_flip(n)Reverse the digits, preserving decimal position. 1319 → 9131, 138 → 831. The palindrome maker.
oph_floor / oph_ceilRound down / up to a whole day.
oph_abs / oph_sqrtAbsolute value / square root.
oph_sin / oph_cos / oph_tanTrig functions. Argument in radians. Rarely useful in projections but grammar allows them.
oph_log / oph_expNatural log / exponential.
xA bare x between terms is read as multiplication — YxOPH_PI is the same as Y*OPH_PI. The engine substitutes it during normalization.

Under the hood

Every equation is normalized (constants substituted, x → *, whitespace stripped), then stripped of its X1+ / X2+ prefix, then validated by math.js parse + evaluate with Y=10, then compiled with native new Function("Y", "return " + body). The compiled function is cached on the operation. Runtime passes only the axial rotation count.

§6 · Live Cast

Run the engine, here in this page

A faithful port of the compute cycle: enter two anchor dates, the engine normalizes each of the 15 default operations, compiles them with new Function("Y"), and applies the resulting delta to the X1 or X2 anchor. Every Z-Date on the right is what the real app would produce with location disabled and DAYS scope. The 138/19 columns light up when Y or |Δ| lands cleanly on a Phoenix or Metonic multiple.

Y · axial rotations
—
|Y| days
—
Y ÷ 138
—
Y ÷ 19
—
oph_flip(Y)
—
# Equation Anc. Class Δ days Z-Date 138 19

Note: DAYS scope discards HH:MM and lat/long (that's the shipping build's behaviour, gated by FEATURE_FLAG__LOCK_DAY_SCOPE_TO_GMT = true). Sunset-aware rounding only kicks in for HH:MM scope in the real app. The 138 and 19 columns are additions of this guide — not shown in the app itself, but visible here so you can spot lattice hits at a glance.

§7 · Worked Examples

Two casts, start to finish

① The Pyramid Paragraph Lock
X1: 19 January 2023 (entry, Great Pyramid)  |  X2: 2 August 2027 (Luxor total solar eclipse)  |  Scope: DAYS  |  Lens: GTE_V8
  1. Set X1 to 2023-01-19 and X2 to 2027-08-02 in the live cast above.
  2. Y prints as 1,656. Divide by 138 → 12.00 exact. Divide by 12 → 138.00 exact.
  3. Y ÷ 19 gives 87.16 — not clean, but oph_flip(1656) = 6561 = 812, which is 38.
  4. Watch the operations table: X2+Y+138 lands on 20 Dec 2027, X2+Y+1656 lands on 15 Feb 2032 (another 1656-hop).
What you'll see

The isometric operation X2+oph_round(Y) produces 2032-02-15 — exactly one Flood span past the eclipse. That's 138 × 24 = 3,312 days from the Pyramid entry. The paragraph lock projects a paragraph lock forward.

The palindrome operation X2+oph_flip(oph_round(Y)) — the Holo-mirror — lands on 2045-08-24. 6561 days past 2027-08-02.

② The Bitcoin Halving Cycle
X1: 28 Nov 2012 (halving #1)  |  X2: 9 Jul 2016 (halving #2)  |  Scope: DAYS  |  Lens: GTE_V8
  1. Click the ₿ Bitcoin halvings preset button in the live cast.
  2. Y prints as 1,319. That's Y, not price — days between halvings.
  3. Y ÷ 138 = 9.56, no clean lattice hit. Y ÷ 19 = 69.42, also not clean.
  4. But now watch the operations pack. X2+YxOPH_PHI lands on 2022-05-13. X1+YxOPH_PI lands on 2024-03-11.
What you'll see

The 2024-03-11 result — X1 + Y × π — is 51 days ahead of Bitcoin's actual all-time-high cluster in early May 2024. Under Ophis's tolerance windows, that lands inside a "convergence" if any other operation from the same anchor pair projects within ±30 days. It's the kind of thing the tool is built to hunt for. It's also easy to see how one such hit per anchor pair becomes a whole practice.

Interpretation is on you. The engine only counts.

§8 · Under the Hood

How the .exe peels

PE / Win32
Ophis_v9_Windows.exe
95,327,304 B
→
NSIS + 7z
LZMA2 archive
Nullsoft installer
→
Electron
resources/app.asar
32.3 MB
→
Vanilla JS
app-src/
Un-obfuscated

Module map · MVC

Hover any module for its role. Colour-coded by layer.

Entry
ophis_main.js preload.js main.js
Controller
ophis_controller.js
Model
ophis_model__operations.js ophis_model__validation.js ophis_model__params.js ophis_model__persistence.js ophis_model__sorting.js
View
ophis_view.js ophis_view__chart.js ophis_view__chart_datasets.js ophis_view__chart_config.js ophis_view__config.js ophis_view__export.js ophis_view__output.js ophis_view__rebuild.js ophis_view__settings.js ophis_view__strings.js ophis_view__utils.js
Cross-cutting
ophis_utils.js ophis_config.js ophis_dependencies.js ophis_unit_tests.js
§9 · Notable Quirks

Things the shipping build gets wrong or half-right

⚠ nodeIntegration: true
The renderer can require() Node modules. Combined with new Function() over user-editable equations, any expression surviving the strip → math.js filter runs in a Node-capable context.
⚠ "Fake security camera" sign-in
FEATURE_FLAG__REQUIRE_SIGN_IN = false with a comment literally reading "fake security camera." sha512.min.js is commented out. Flip the flag alone and init crashes.
ℹ Markets mode is decorative
SKIN_MODE__MARKETS only swaps the header PNG and title. No market data feed. Source comment: "the beginning of an idea that never panned out really."
ℹ No Excel formula round-trip
XLSX export writes type: Number cells only. Values, not formulas. Adding real =… formulas is a ~20-line change to ophis_view__export.js.
⚠ DAYS scope discards location and time
Because FEATURE_FLAG__LOCK_DAY_SCOPE_TO_GMT = true, DAYS-scope events force lat/long to 0/0 and time to 00:00 GMT. Your Dallas coordinates are ignored unless you use HH:MM scope.
ℹ Version drift
APP_VERSION = "9" in config, but the header markup still says "v7". Runtime overwrites. package.json is authoritative.
⚠ debugger; statements shipped
ophis_model__operations.js:54 and ophis_view__chart_datasets.js:1366 both ship debugger;. Harmless unless DevTools is open.
⚠ Cache-buster on every load
ophis.html appends ?v=<rand> to every script and CSS tag on every launch. Startup is measurably slower than it needs to be.
§10 · FAQ

Questions that come up first

Why are there 15 operations, not 16?

The source comments count from "2." through "15." (Ops #2 through #15), plus the newer Hepta-Cycle op with no number. So the actual literal DEFAULT_OPHIS_OPERATIONS array has 15 entries. An earlier "Op #1" was almost certainly removed before this ship, but the numbering was never renumbered — the comments are a paper trail.

The reverse-engineering report initially said 16 by counting the version-branched clone path; the deep-dive traced the array and confirmed 15.

What does OPH_CRV actually mean?

Numerically, OPH_CRV = OPH_PI × OPH_PHI ≈ 5.08. The source calls it "curvature." Not a standard-named mathematical constant — the closest neighbours are the golden angle in radians (≈2.399) and the golden-φ-hyperbolic curvature used in certain phyllotaxis models, but neither of those is 5.08 exactly. Treat it as an author-invented composite constant.

Its effect on projections: it tightens the multiplier compared to bare π, and expands compared to bare φ. Ops using κ tend to produce medium-length projections that don't cleanly line up on 138 or 19 lattices — that's likely intentional; it makes them independent signals from the 138 grid.

What does oph_flip actually do?

It reverses the digits of a number while preserving decimal position. Ported verbatim:

flip(1319) = 9131. flip(138) = 831. flip(19) = 91. flip(1.5) = 5.1. flip(100) = 001 → parsed as 1.

Trailing zeros are lost because the reversed string is re-parsed as a number. That's a lossy operation on any Y ending in zero — worth knowing when your interval happens to be a round number.

Why does the 138·12 = 1656 date lock feel so heavy?

Because it's the same interval as the Genesis Flood-count (Anno Mundi 1656 in the biblical chronology). The engine doesn't know that — Ophis has no theology. But when your input dates happen to be spaced 1656 days apart, every isometric-style operation produces multiples of that number, and the 138-lattice operations light up at every hop.

It's the numerological equivalent of finding your keys — the meaning is in the coincidence, not the machinery.

Can I add my own operations to the shipping app?

Yes, that's the primary way to use it. Open any Iso-Event → Operations settings → paste your equation into a new row. It's validated live as you type; if it passes the strip → math.js check it becomes a real compiled function on the next cast. That's how every operation in §4 above is meant to be added — Ophis's grammar is open by design.

The 138 and 19 lattice operations aren't in the shipping defaults, but every one of them satisfies the grammar rules in §5 and will be accepted verbatim.

How do I export what I've made?

The Export screen offers three formats. XLSX writes a three-column sheet (Date / Hits / Score) with computed numbers, no formulas. CSV is the same three columns via Papa Parse. PDF is landscape jsPDF with a chart snapshot, glossary page, and paginated Z-Date tables (15 rows per page).

The .oph save file is UTF-8 JSON — completely portable. You can hand-edit it, diff it, or generate one programmatically outside the app.

Is nothing hitting? Why are my Z-Dates all in the far future or far past?

Two common reasons. First: your Y is enormous. If X1 and X2 are 3,000 years apart, X1+YxOPH_CRV projects 15,000 years past X1 — outside the Chart.js window. The engine also clamps at MAXIMUM_ROTATION_COUNT_Z = 36500 days (~100 years).

Second: your operations all use the same anchor. If every op begins with X2+, every Z-Date lives after X2. Mix X1+ and X2+ to get projections on both sides of the interval.

Is Ophis paid software?

The sign-in gate suggests it once was, but the shipped v9 has that gate disabled with a comment reading "fake security camera." So the current build runs open. The developer's intent — commercial, evaluation copy, or free release — isn't stated in the source.

This guide is a reverse-engineering study of a legally obtained copy, focused on how the tool works. Nothing in it circumvents anything the shipping build hasn't already left open.

Keyboard & reading

Tab moves between every control. ☾/☀ flips light/dark (follows your system on first visit). A− / A / A+ scales the whole page. Both remembered between sessions via localStorage. Reduced-motion is honoured. Nothing on this page phones home — the only external requests are the Google Fonts stylesheet on first load.