# Opening of the Key: independent implementation and source boundary Status: working local prototype, not installed in the host or published. Last verified 2026-10-02. Browser verification was expressly unavailable; only Node, DOM and VM checks have been run. ## What is actually implemented Two profiles are separate state machines, with separate seed namespaces and no silent fallback: 1. `manuscript-q`: five genuine operations, following the mechanical instructions in Golden Dawn Manuscript Q. 2. `horosa-reference`: the pinned reference application's four dealing stages and textual wrap-up. It is deliberately not called five classical operations. All five classical operations have sufficiently defined mechanics. Manuscript Q supplies the explicit first-operation cuts, inclusive count, stopping rule, endpoint pairs, house/sign round-robin deals, cut-to-significator/36-card ring, and final ten-packet deal. There is no missing fifth draw to invent. The shorter Liber LXXVIII independently confirms the sequence but is a revised procedure, not interchangeable with Q. The output is symbolic practice and independent reflective writing. It does not identify real people's character or intention, provide health or financial forecasts, or claim that a reading establishes facts. Ritual invocations, clairvoyance claims, complexion/age/gender assignments and literal predictive stories are not automated or reproduced. ## Primary material independently checked - Golden Dawn, Manuscript Q, "Key to Tarot Divination": [historical-text transcription](https://www.tarrdaniel.com/documents/Thelemagick/gd/publication/english/golden_dawn_manuscripts.html), under Manuscript Q. Checked sections: general counting, first through fifth operation, and the explicit six-card/Princess-seven count boundary example. - [Parallel Q transcription](https://www.mr-kaplan.com/Library/Mathers/Manuscript-Q.html): search-index text was checked for the fourth-operation cut and first/36th pairing. Its complete page fetch timed out. Modern editorial corrections are not copied into this implementation. - Aleister Crowley, Liber LXXVIII, in The Equinox I(8), 1912: [Internet Sacred Text Archive transcription](https://sacred-texts.com/oto/lib78.htm), "A Method of Divination by the Tarot"; [second transcription](https://www.tarrdaniel.com/documents/Thelemagick/publication/english/Liber_LXXVIII.html). Its period text is public domain in the United States; the implementation contains facts and new prose, not a copy of modern transcription markup, illustrations or editorial additions. - Direct retrieval from the-equinox.org was unavailable. This is transcription-based primary-text verification, not a facsimile collation of the original printed pages. Historical procedure facts are independently implemented. No upstream runtime is imported, bundled, vendored or evaluated. No modern artist's images, modern explanatory prose or derivative illustrations are included. ## Q profile, exact mechanics and required inputs Required inputs: complete compatible `golden_dawn` or `thoth` deck; an explicitly selected court-card ID; nonempty seed; effective direction `+1` or `-1`; three positive first-operation cut sizes. The engine also accepts five exact recorded full-deck orders. These are validated permutations of the 78 canonical IDs. - An ordered pack is recorded top-to-bottom. Three recorded cuts `(first, upper, lower)` yield the contiguous ranges `[0, upper)`, `[upper, first)`, `[first, first+lower)`, `[first+lower, 78)`. Logical packet labels are Yod, Heh, Vav, final Heh, traditionally shown right-to-left. Default 39/19/19 gives packet sizes 19/20/19/20. Bottom faces are separately recorded for the initial four-card preview. - Operation 2: deal all 78 cards in rotation to twelve houses. Packet 1 contains deal positions 1,13,25,37,49,61,73. Select the packet containing the significator. - Operation 3: independently shuffle and deal to twelve signs in zodiac order. The twelve governing trumps are attached by stable identity, not printed VIII/XI number. Select the significator packet. This is not a 36-packet operation. - Operation 4: cut the shuffled pack at the significator while preserving circular order, put that card in the center, take the following 36 cards, and retain the remaining 41 as unused evidence. Count from the first ring card in the dealing direction. Pair 1+36, 2+35, etc. The significator is not duplicated inside the ring. The cycle covers a significator originally anywhere in the pack, including the last position. - Operation 5: independently shuffle and round-robin all 78 cards into ten Tree-of-Life packets. Packet 3 contains deal positions 3,13,23,33,43,53,63,73. Select the significator packet and actually count and pair it. This is not just a summary. - Counts: Ace=5; Princess=7; Prince/Queen/Knight=4; pips 2–10 equal face value; Fool/Hanged/Judgement=3; Magician/Priestess/Empress/Wheel/Tower/Sun/World=9; other trumps=12. These categories follow identity, avoiding Strength/Justice display-number differences. - Every count includes the current card as 1. Movement is `value−1`, with circular wrap; direction stays fixed for the whole chain. Stop at the first previously read position. The trace records every included position, the move, destination and reason for stopping. There is no arbitrary 13-link cap for Q. - Pair endpoints inward, including the significator if it is an endpoint; retain an odd central singleton. Every card appears exactly once in the pairing evidence. ### Explicit digital conventions and omissions - Q describes physical shuffling; a deterministic SHA-256/Mulberry32/Fisher–Yates shuffle stands in for it. Each operation starts again from the same canonical 78-card identity list and an independent namespace. Physical shuffling has no seed parity to promise. - Packet arrays preserve the source's stated deal/encounter order, first-dealt to last-dealt. We expose the actual order and original positions, rather than silently reversing stacks when turning a physical packet face up. The first-operation bottom-face preview does not mutate the packet's order. - Q prose and the first-operation example contain differing spatial wording for the leftmost split. The implementation records the unambiguous four contiguous portions and their logical Y/H/V/H-final labels; it does not simulate hand motions or pretend to settle that spatial wording. - No visual court facing is inferred, and Q orientations are not randomly flipped. The user supplies an effective direction, recorded with every operation; the ring uses its source-defined dealing direction. Engine callers may supply an effective per-operation direction. A physical operator can transcribe their effective direction and full orders without any gender/age/appearance input. - Ring labels display an Aries-0°-first zodiac coordinate list for readability. This display convention is not an astronomical observation, calendar date, or a rule that changes the draw/count/pair. Q's mechanical ring works by its numbered positions. Liber78 also discusses a Leo-first decan convention elsewhere; it is not silently substituted. - Element relations are a bounded symbolic annotation, not an asserted complete dignity interpretation. Q annotations use suit elements, elemental and zodiacal trump elements; planetary trump elements remain unspecified. Same/opposed/assisting relations and suit counts are inspectable; no statistical prediction is inferred. The pair score is an implementation annotation, not a quotation or numerical claim from Q. - The user can stop/reset any time. There is no guessed “wrong question” judgement or asserted stop triggered by a real-world claim. Q does not contain Liber78's particular preselected-house tests. ## Liber78 is not silently mixed in The independently verified Liber78 sequence is four packets, twelve houses, twelve signs, thirty-six following cards in a ring, ten Tree-of-Life packets. However, it specifies Ace=11 rather than Q's Ace=5, describes first-operation cutting to the left, pairs outward from the significator in its wording, and includes a subject check / two-house selection failure rule before continuing. Its text is shorter and leaves some practical details to "as before". The prototype does not claim a complete Liber78 profile and does not relabel Q as Crowley's procedure. ## Exact pinned-reference behavior preserved separately Pinned audit repository commit: `daab60ce05c8f0e78cc51b5e7974120f81aed79c`. Reference implementation inspected, read-only: - `astrostudyui/src/components/tarot/engine/openingOfKey.js` - `engine/shuffle.js`, `engine/dignities.js`, `engine/cardSchema.js` - `decks/core78.js`, `decks/correspondences.js` - `TarotMain.js` and `engine/reading.js` compatibility gate The containing audit checkout also identifies the original nested Horosa snapshot `55c75c5b088252fbd718afeffa6d5bcb59254a0c`. The file-level functional reference is the above pinned audit state, not a claim of current upstream behavior. Preserved mathematical behavior: - Four independent shuffles with seeds `seed|ook1` through `seed|ook4`. - SHA-256 UTF-8 digest, first 32-bit word read as big-endian, Mulberry32, descending Fisher–Yates. Then exactly 78 orientation draws; flag each draw >=0.5 as reversed. The reference forces these flags even for a deck whose ordinary draw defaults disable reversed meanings. - Canonical reference identity order is 22 RWS-ordered majors, then Wands/Cups/Swords/Pentacles, ranks1–14. The host's `coins` ID maps the historical Pentacles identity. Thoth's displayed VIII/ XI does not reorder these canonical IDs. - Round-robin 4,12,36,10 packets. Locate the selected significator after each complete deal; retain that packet and all other packets as evidence. - Standard card values are Ace5/Princess7/other courts4/trumps3,9,12. Optional source court-Sephirah values map the host ranks11/12/13/14 to9/6/3/2. - Direction is recalculated on every card: ranks11 and13 forward; ranks12 and14 backward; noncourts forward. A reversed flag negates that direction. This is distinct from Q's fixed effective direction. - Move the full card value, not value−1. Break on first repeated position, or after at most `min(packet length,13)` transitions. The source can therefore return 14 unique chain cards including the initial card; the prototype preserves this subtlety. - Endpoint pairs plus a singleton if needed. Reference one-neighbor element score is same=2, fire/air or water/earth=1, fire/water or air/earth=−1, otherwise0; strong >=2, weak <0, otherwise neutral. Wheel and Tower retain no assigned reference element; other reference element facts are mapped explicitly. - A fifth UI stage only collects prior-stage locations/count sizes/pairs; it has no independent deck or draw. New wording explicitly labels that fact. Intentionally not promised as parity: upstream source strings, art, modern interpretations, broad UI options, invalid under40-card permissiveness, or arbitrary legacy numeric IDs. Production eligibility is stricter: exactly78 unique valid cards of either supported deck. The card names, meanings and IDs remain the independently authored host data. ## Verification and payload Run in this folder: `node --test tarot-opening.test.cjs tarot-opening-ui.test.cjs` `TAROT_HOST_DIR` may point to the host checkout for injected card data and the existing `linkedom` dependency. No package install is required. `python3 reference-oracle.py` regenerates the independent numeric reference fixtures using standard-library hashlib and a separately expressed rule algorithm. Those fixtures are not advertised as an upstream-runtime execution result. The suite covers 54 engine/DOM/VM tests: complete deck conservation; three cut bounds; exact house/tree dealing positions; every one of78 ring starting indices; inclusive/exclusive counts, wrap, repeat and13-transition cap; all court directions; both counting tables; 32 reference stages against the Python oracle; seed repeatability; compatible/incompatible decks; malformed or tampered replays; immutable injected data; escaped HTML; UMD globals; five-stage and four-stage DOM completion; partial/full replay; history/reset/remount; exact prepared/count/pair/review/history/complete cursor restore; rejection of inconsistent progress; null-session reset notification; complete-callback idempotence; result-specific recurring-path/keyword/tension evidence; exclusion of whole-deck and mechanical-anchor false positives; conditional original-meaning review priorities; sparse cases; and payload size. Canonical card metadata and meanings appear once, in `result.session.cards`. All stage ledgers, count paths, pairings and symbolic themes use card IDs/positions; they do not repeat full card prose. The full lossless result plus full replay plus20,000 Chinese result-text characters is tested under512KiB across16 seeds for each profile. A separate64-seed-per-profile audit also covers both eligible decks, both effective directions and extreme first cuts; see the exact maximum in `verification.json`. The precise measurement report is in `verification.json`. No browser, accessibility-engine, screenshot, mobile-layout, production-save, deployed-Site or host integration check has been claimed. Responsive styling and focus labels exist, but visual QA remains for a permitted browser environment.