<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Chapter 99 — References on Ocarina — manual</title>
    <link>https://mojo-molotov.github.io/from-ocarina-to-igor/99-references/</link>
    <description>Recent content in Chapter 99 — References on Ocarina — manual</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <lastBuildDate>Thu, 04 Jun 2026 21:25:43 +0200</lastBuildDate>
    <atom:link href="https://mojo-molotov.github.io/from-ocarina-to-igor/99-references/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>99.01 — Glossary</title>
      <link>https://mojo-molotov.github.io/from-ocarina-to-igor/99-references/01-glossary/</link>
      <pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate>
      <guid>https://mojo-molotov.github.io/from-ocarina-to-igor/99-references/01-glossary/</guid>
      <description>&lt;h1 id=&#34;9901glossary&#34;&gt;99.01 — Glossary&lt;a class=&#34;anchor&#34; href=&#34;#9901glossary&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;blockquote class=&#39;book-hint &#39;&gt;&#xA;&lt;p&gt;Terminology used in the Ocarina ecosystem. Original sources in parentheses.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&lt;h2 id=&#34;railway-oriented-programming-rop&#34;&gt;Railway Oriented Programming (ROP)&lt;a class=&#34;anchor&#34; href=&#34;#railway-oriented-programming-rop&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Term&lt;/th&gt;&#xA;          &lt;th&gt;Definition&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;ROP&lt;/strong&gt; (Wlaschin, F#)&lt;/td&gt;&#xA;          &lt;td&gt;Functional pattern: success and failure are two parallel &lt;em&gt;rails&lt;/em&gt;; a failure switches the computation to the failure rail, where it stays (short-circuit).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;Result[T]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Discriminated union &lt;code&gt;Ok[T] | Fail&lt;/code&gt;. Error carried as &lt;strong&gt;value&lt;/strong&gt;, not raised exception.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;Ok[T]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Success wrapper, &lt;code&gt;value: T&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;Fail&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Failure wrapper, &lt;code&gt;error: Exception&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;is_ok&lt;/code&gt;, &lt;code&gt;is_fail&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;TypeGuard&lt;/code&gt;s that narrow a &lt;code&gt;Result[T]&lt;/code&gt; to &lt;code&gt;Ok[T]&lt;/code&gt; or &lt;code&gt;Fail&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;Action[T]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;Thunk[Result[T]]&lt;/code&gt; — argumentless function returning a &lt;code&gt;Result[T]&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;ActionStart[T]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Initial state of the ROP action builder. Expects &lt;code&gt;.failure(...)&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;ActionFailure[T]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;After &lt;code&gt;.failure(...)&lt;/code&gt;. Expects &lt;code&gt;.success(...)&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;ActionSuccess[T]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;After &lt;code&gt;.success(...)&lt;/code&gt;. Expects &lt;code&gt;.execute()&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;ActionChain[T]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;After &lt;code&gt;.execute()&lt;/code&gt;. Carries &lt;code&gt;has_failed: bool&lt;/code&gt; and &lt;code&gt;result: Result[T]&lt;/code&gt;. Allows &lt;code&gt;.then(...)&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;NeutralActionStart[T]&lt;/code&gt;, &lt;code&gt;NeutralActionFailure[T]&lt;/code&gt;, &lt;code&gt;NeutralActionSuccess[T]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;em&gt;Inert&lt;/em&gt; states of the failure rail. Stub by no longer doing anything.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;ChainRunner[T]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Lazy encapsulation of an &lt;code&gt;ActionChain&lt;/code&gt;. Executed by &lt;code&gt;.run()&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;drive_page&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Opinionated semantic alias for &lt;code&gt;chain_actions&lt;/code&gt;. &amp;ldquo;&lt;em&gt;Take control of a page&lt;/em&gt;&amp;rdquo;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;match_page&lt;/code&gt; / &lt;code&gt;when&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Conditional branching. First-match wins.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;create_act&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Low-level primitive to create &lt;code&gt;act&lt;/code&gt; (&lt;em&gt;test step&lt;/em&gt;). Wrapped by the user project.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;act&lt;/code&gt;&lt;/strong&gt; (project-side)&lt;/td&gt;&#xA;          &lt;td&gt;User wrapper for &lt;code&gt;create_act&lt;/code&gt; with a project-specific &lt;code&gt;on_failure&lt;/code&gt; hook. Represents a &lt;em&gt;test step&lt;/em&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;istqb--test-professional-vocabulary&#34;&gt;ISTQB / test-professional vocabulary&lt;a class=&#34;anchor&#34; href=&#34;#istqb--test-professional-vocabulary&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Term&lt;/th&gt;&#xA;          &lt;th&gt;Definition&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;ISTQB&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;International Software Testing Qualifications Board. Professional body of software testing.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Test cycle&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Top level. A complete execution.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Test campaign&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Level under the cycle. Not directly defined in ISTQB but recognized in tester vocabulary.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Test suite&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Level under the campaign. A collection of &lt;em&gt;executable&lt;/em&gt; tests.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Test case&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A test case. Atomic unit.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Test step&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A test step. Atomic action inside a test case.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Smoke test&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Minimal check proving the system is &lt;em&gt;running&lt;/em&gt;. If failure, the rest is useless.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Setup / Teardown&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Pre/post-condition of a test.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;ocarina-orchestration&#34;&gt;Ocarina (orchestration)&lt;a class=&#34;anchor&#34; href=&#34;#ocarina-orchestration&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Term&lt;/th&gt;&#xA;          &lt;th&gt;Definition&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;Test[Driver]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;ISTQB test. Metadata + scenario factory + fragments + skip.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;TestSuite[Driver]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;ISTQB suite. Parallelization (&lt;em&gt;thread pool&lt;/em&gt;), saturation, ID filtering, retries.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;TestCampaign[Driver]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Campaign. Sequence of suites with shared workers config.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;TestCycle[Driver]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;ISTQB cycle. Smoke (with &lt;code&gt;fail-fast&lt;/code&gt; vs &lt;code&gt;wait-for-all&lt;/code&gt; modes) + main.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;TestExecutor[Driver]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Executes a single attempt of a test. Stateless.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;TestFlow[Driver]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Replay loop (1 + max_retries) with linear backoff.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;TestRunner[Driver]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Output of &lt;code&gt;Test.spawn(driver, logger)&lt;/code&gt;. Aggregator of chain_runners + setup + teardown + watchers.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;Scenario[Driver]&lt;/code&gt;&lt;/strong&gt; (frozen dataclass)&lt;/td&gt;&#xA;          &lt;td&gt;Encapsulates &lt;code&gt;test_chain&lt;/code&gt;, &lt;code&gt;setup&lt;/code&gt;, &lt;code&gt;teardown&lt;/code&gt;, &lt;code&gt;watchers&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;TestChain&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;Sequence[ChainRunner[Any]]&lt;/code&gt;. The sequence to execute to apply the test.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;Watcher[Driver]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;em&gt;Daemon thread&lt;/em&gt; observing something extra on a test. Periodic callback.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;Saturation&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Random test-cloning mechanism to reach &lt;code&gt;max_workers&lt;/code&gt;. Copies named &lt;code&gt;[COPY N] &amp;lt;name&amp;gt;&lt;/code&gt; (or &lt;code&gt;[+N]&lt;/code&gt; per convention).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;Transient errors&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Tuple of exceptions triggering a replay.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;max_retries_per_test&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Number of replays. Default, 8 (&amp;quot;&lt;em&gt;9 lives like a cat&lt;/em&gt; 🐱&amp;quot;).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;autoscreen_on_fail&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Automatic screenshot on failing test step.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;ocarina-invariants-dsl&#34;&gt;Ocarina (invariants DSL)&lt;a class=&#34;anchor&#34; href=&#34;#ocarina-invariants-dsl&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Term&lt;/th&gt;&#xA;          &lt;th&gt;Definition&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;validate(value, name=&amp;quot;...&amp;quot;)&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Entry point of the invariants DSL.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;ValidationStartBlock[T]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Initial state. Expects &lt;code&gt;.assert_that(...)&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;ValidationAssertBlock[T]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;After &lt;code&gt;.assert_that(...)&lt;/code&gt;. Accepts &lt;code&gt;.assert_that&lt;/code&gt;, &lt;code&gt;.otherwise&lt;/code&gt;, &lt;code&gt;.then&lt;/code&gt;, &lt;code&gt;.execute&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;.assert_that(predicate)&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Adds a logical AND.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;.otherwise(predicate)&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Adds a logical OR. Combined via &lt;code&gt;_any_of&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;.then(new_value)&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Switches the current value in the chain. Keeps accumulated errors.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;.execute()&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Executes the chain, returns a &lt;code&gt;_ValidationResult&lt;/code&gt; (inert until &lt;code&gt;.raise_if_invalid()&lt;/code&gt; is called).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;chain_validations(*)&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Merge several &lt;code&gt;ValidationAssertBlock&lt;/code&gt;s into one.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;InvariantViolationError&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Exception raised by predicates.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;AggregateInvariantViolationError&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Aggregation of multiple &lt;code&gt;InvariantViolationError&lt;/code&gt;s. Raised by &lt;code&gt;.raise_if_invalid()&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;DuplicatesError&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;InvariantViolationError&lt;/code&gt; subclass raised by &lt;code&gt;has_unique_elements&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;BusinessInvariantValidator.create&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Factory for business invariants.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;FrameworkInvariantValidator.create&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Factory for framework invariants.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;ocarina-infra--ports&#34;&gt;Ocarina (infra + ports)&lt;a class=&#34;anchor&#34; href=&#34;#ocarina-infra--ports&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Term&lt;/th&gt;&#xA;          &lt;th&gt;Definition&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;POMBase&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Framework-agnostic ABC. Methods &lt;code&gt;verify&lt;/code&gt; + &lt;code&gt;get_current_title&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;SeleniumTitleMixin&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Selenium-specific mixin. Implements &lt;code&gt;get_current_title&lt;/code&gt; and types &lt;code&gt;_driver: WebDriver&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;WebDriversPool[Driver]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Thread-safe drivers pool. Semaphore + Queue (&lt;em&gt;THE QUEUE damn it!&lt;/em&gt;) + warmup with watchdog.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;WarmupTimeoutError&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Raised by &lt;code&gt;pool.warmup()&lt;/code&gt; when it stalls.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;DriverBuilder[Driver]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Builder that manages the profile tmp dir and produces &lt;code&gt;(driver, dispose)&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;BuiltWebDriver[Driver]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;tuple[Driver, Effect]&lt;/code&gt; — driver + dispose.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;Screenshotter[TDriver]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Thread-safe screenshot utility. Burst mode, healthcheck.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;ScreenshotterConfig[TDriver]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Config (frozen dataclass): output_dir, file_ext, health_check, save_full_page, etc.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;ActCounter&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Interface. Counts &lt;code&gt;act&lt;/code&gt;s called per attempt.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;ThreadsBasedActCounter&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Thread-local implementation of &lt;code&gt;ActCounter&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;ILogger&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Logging port (ABC). Methods: &lt;code&gt;debug&lt;/code&gt;, &lt;code&gt;info&lt;/code&gt;, &lt;code&gt;warning&lt;/code&gt;, &lt;code&gt;error&lt;/code&gt;, &lt;code&gt;critical&lt;/code&gt;, &lt;code&gt;success&lt;/code&gt;, &lt;code&gt;test_name&lt;/code&gt;, &lt;code&gt;exception&lt;/code&gt;, &lt;code&gt;raw&lt;/code&gt;, &lt;code&gt;set_prefix&lt;/code&gt;, &lt;code&gt;set_domain_taxonomy&lt;/code&gt;, &lt;code&gt;cleanup&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;ITakeScreenshot[Driver]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Protocol &lt;code&gt;(driver, logger, category) -&amp;gt; None&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;PrintLogger&lt;/code&gt; / &lt;code&gt;FileLogger&lt;/code&gt; / &lt;code&gt;PrintAndFileLogger&lt;/code&gt; / &lt;code&gt;MutedLogger&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;4 canonical implementations of &lt;code&gt;ILogger&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;driver_healthcheck(driver)&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Pings &lt;code&gt;driver.title&lt;/code&gt;; raises &lt;code&gt;DriverDiedError&lt;/code&gt; if THE DRIVER IS DEAD.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;DriverDiedError&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Exception raised by &lt;code&gt;driver_healthcheck&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;PageVerificationError&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Exception raised by &lt;code&gt;POM.verify&lt;/code&gt; when the page isn&amp;rsquo;t the right one.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;NoMatchingBranchError&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Exception raised by &lt;code&gt;match_page&lt;/code&gt; when no &lt;code&gt;when&lt;/code&gt; matches.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;ocarina-opinionated&#34;&gt;Ocarina (opinionated)&lt;a class=&#34;anchor&#34; href=&#34;#ocarina-opinionated&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Term&lt;/th&gt;&#xA;          &lt;th&gt;Definition&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;CliBuilder&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Declarative builder over argparse. Error aggregation.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;CliArg&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Declaration of a CLI argument.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;CliStore[TKeys]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Write-once store for parsed CLI values. &lt;code&gt;TKeys: Literal[...]&lt;/code&gt; for autocomplete.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;_CliField[T]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Write-once field with validator.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;phantom_validate&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;No-op validator for fields that don&amp;rsquo;t need extra validation.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;CliStoreSingleton&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Singleton around &lt;code&gt;CliStore&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;create_selenium_auto_cli_store()&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Factory that dispatches by OS.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;bootstrap(test_cycle, run_plugins, post_exec)&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Canonical entry point.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;run_plugins(*plugins, exceptions_logger)&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Runs plugins in parallel if N&amp;gt;1.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;pretty_print_results&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Plugin that prints results to the terminal (ANSI).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;generate_docx_proof&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Plugin to create DOCX test proofs.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;generate_json_results&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Plugin that transcribes the same results as &lt;code&gt;pretty_print_results&lt;/code&gt;, in JSON format.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;timing&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Context manager that measures duration.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;functional-programming&#34;&gt;Functional programming&lt;a class=&#34;anchor&#34; href=&#34;#functional-programming&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Term&lt;/th&gt;&#xA;          &lt;th&gt;Definition&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;Effect&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;Callable[[], None]&lt;/code&gt; — argumentless, returnless function, deferred.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;Thunk[T]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;Callable[[], T]&lt;/code&gt; — argumentless function, deferred.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;Closure&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Function capturing an environment.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;Fold&lt;/code&gt; / &lt;code&gt;reduce&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Reduction of a sequence to a single value (&lt;em&gt;catamorphism&lt;/em&gt;).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;TypeGuard&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;PEP 647 — annotation that &lt;em&gt;narrows&lt;/em&gt; a type on the type-checker side.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;Discriminated union&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Union of disjoint types, discriminated by a test (typically &lt;code&gt;isinstance&lt;/code&gt;).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;Sealed union&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Discriminated union whose variants are all &lt;code&gt;@final&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;@final&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;PEP 591 — declares that a class can&amp;rsquo;t be subclassed (no infinite covariance).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;Self&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;PEP 673 — return type that refers to the instantiated class (not the declared class).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;Protocol&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;PEP 544 — structural type; any object with the right shape is usable.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;PEP 695&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Generics syntax &lt;code&gt;class Foo[T]:&lt;/code&gt; (Python 3.12+).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;author-vocabulary&#34;&gt;Author vocabulary&lt;a class=&#34;anchor&#34; href=&#34;#author-vocabulary&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Term&lt;/th&gt;&#xA;          &lt;th&gt;Meaning&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Slipologue&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Neologism. The one pretending &amp;ldquo;&lt;em&gt;to know everything&lt;/em&gt;&amp;rdquo; without practice. Pollutes technical discussions with &lt;em&gt;mental models&lt;/em&gt;. A pain in the ass using ChatGPT or Wikipedia to always have an answer for everything, pretending to speak about a subject he masters when he doesn&amp;rsquo;t.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Vues de l&amp;rsquo;esprit&lt;/strong&gt; (mental models)&lt;/td&gt;&#xA;          &lt;td&gt;Imaginary concept; inapplicable theoretical vision.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;White box&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Auditable, readable code, no hidden logic. Opposite of &lt;em&gt;black box&lt;/em&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Raw data&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Source code, files, simple formats.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Programming astrology&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Esoteric patterns without measurable benefit.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;In the Lulzboat, salute, bitch, and show some respect.&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Quote from &lt;strong&gt;YTCracker — &lt;code&gt;#antisec&lt;/code&gt;&lt;/strong&gt; (2011), official anthem of &lt;em&gt;Operation AntiSec&lt;/em&gt;. See &lt;a href=&#34;https://mojo-molotov.github.io/from-ocarina-to-igor/12-manifesto-deciphered/01-sourced-citations/&#34;&gt;&lt;code&gt;../12-manifesto-deciphered/01-sourced-citations.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Fucking skids, fucking normies&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;IRC / EFnet identity marker.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;hacker-scene-chapter-12&#34;&gt;Hacker scene (chapter 12)&lt;a class=&#34;anchor&#34; href=&#34;#hacker-scene-chapter-12&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Term&lt;/th&gt;&#xA;          &lt;th&gt;Definition&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;AntiSec movement (1999)&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Movement opposed to the cybersecurity industry and &lt;em&gt;full disclosure&lt;/em&gt;. Refusal to publish exploits / vulnerabilities. Targets: SecurityFocus, Packet Storm, Bugtraq mailing list, etc.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Operation AntiSec (2011)&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Resurrection of the movement by LulzSec + Anonymous. 50 days of hacks (May-June 2011).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;LulzSec&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Hacker group active May-June 2011. Anonymous &lt;em&gt;splinter&lt;/em&gt;. Manifesto &amp;ldquo;&lt;em&gt;we do it for the lulz&lt;/em&gt;&amp;rdquo;. Arrests in 2012.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;The Lulzboat&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;LulzSec&amp;rsquo;s identity metaphor. Pirate-ship ASCII art signing their communiqués.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Sabu&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Hector Monsegur, LulzSec leader, turned by the FBI in June 2011.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Topiary&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Jake Davis, LulzSec spokesperson.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;YTCracker&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Bryce Case Jr. (born 1982). &lt;em&gt;Nerdcore&lt;/em&gt; rapper, former black hat (NASA Goddard 1999), founder of &lt;em&gt;Digital Gangster&lt;/em&gt; (forum, 2005).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Nerdcore&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Hip-hop subgenre whose lyrics are &lt;em&gt;really&lt;/em&gt; for nerds (code, hacking, sci-fi, math). Coined by MC Frontalot (2000).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Digital Gangster&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Hacker forum founded by YTCracker in 2005 (&lt;code&gt;digitalgangster.com&lt;/code&gt;). 36,000 members at peak. Source of several iconic hacks (Paris Hilton, Miley Cyrus, Twitter Obama, etc.).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;NerdRap Entertainment System&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;YTCracker&amp;rsquo;s founding album (2005). Beats over NES OSTs, Nerdcore lyrics.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Darknet Diaries&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Podcast by &lt;strong&gt;Jack Rhysider&lt;/strong&gt; on cybersecurity history. &lt;strong&gt;Episode 78 (&lt;em&gt;Nerdcore&lt;/em&gt;)&lt;/strong&gt; is dedicated to YTCracker. Transcript: &lt;a href=&#34;https://darknetdiaries.com/transcript/78/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://darknetdiaries.com/transcript/78/&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Zone-H&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Public website-deface archive (founded March 2, 2002 by Roberto Preatoni / Sys64738, based in Estonia). 2002-2015 grey-hat scoreboard.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;IRC&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;em&gt;Internet Relay Chat&lt;/em&gt; (1988). Multi-user text-chat client/server protocol. Central social medium for hackers 1993-2012.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;EFnet&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;em&gt;Eris-Free Network&lt;/em&gt;. Historical IRC network (1990). Center of the &lt;em&gt;warez&lt;/em&gt;, &lt;em&gt;0day&lt;/em&gt;, &lt;em&gt;phreakers&lt;/em&gt; scene 1996-2008.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Channel&lt;/strong&gt; (&lt;code&gt;#name&lt;/code&gt;)&lt;/td&gt;&#xA;          &lt;td&gt;IRC room.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;skid&lt;/code&gt; / &lt;em&gt;script kiddie&lt;/em&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Hacker running scripts they don&amp;rsquo;t understand. Insult.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;normie&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Average user, uninitiated. Insult.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;lamer&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;BBS-era variant of &lt;em&gt;skid&lt;/em&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;gr33tz&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;em&gt;Greetings&lt;/em&gt;, crew list, at the bottom of a deface.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;zine&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;em&gt;E-zine&lt;/em&gt;, underground magazine, often ASCII.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;VX Underground (VXUG)&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Public malware-samples repository (founded ~2019 by smelly_vx). Original sysadmin: &lt;strong&gt;Yung Innanet / kayos&lt;/strong&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Yung Innanet / kayos&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Original sysadmin of VX Underground and musician. Passed October 18, 2025. The Holy Book &lt;strong&gt;directly&lt;/strong&gt; quotes lyrics from his track &lt;strong&gt;&lt;code&gt;true colors&lt;/code&gt;&lt;/strong&gt; (&lt;a href=&#34;https://soundcloud.com/queed-inc/true-colors&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;SoundCloud&lt;/a&gt;), signed &amp;ldquo;&lt;em&gt;(btw: RIP, DG descendant…)&lt;/em&gt;&amp;rdquo;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;YogyaCarderLink (YCL)&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Indonesian hacker collective (Yogyakarta), early 2000s. Two recurring mantras on their defaces: &amp;ldquo;&lt;em&gt;We Can Do All What You Can&amp;rsquo;t Do.&lt;/em&gt;&amp;rdquo; and &lt;strong&gt;&lt;code&gt;Don&#39;t fuck with us.&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Honker (红客)&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Chinese &lt;em&gt;red hacker&lt;/em&gt;. Patriotic, ideologically driven hacker. Appeared after the 1998 Indonesia riots.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Villains but not Monsters&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Moral distinction at the heart of the hacker scene: a &lt;em&gt;Villain&lt;/em&gt; confronts power, a &lt;em&gt;Monster&lt;/em&gt; persecutes the weak. Real enthusiasts hate &lt;em&gt;monsters&lt;/em&gt; (often former bullied who reproduce the harm they suffered).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;DEF CON&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Annual hacker conference, now in Las Vegas (formerly at the &lt;em&gt;Caesars Forum&lt;/em&gt;).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;BOFH (Bastard Operator From Hell)&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Fiction series by &lt;strong&gt;Simon Travaglia&lt;/strong&gt; (New Zealand), published on Usenet in the &amp;rsquo;90s then on &lt;em&gt;The Register&lt;/em&gt;. Archetype of the user-despising sysadmin. Source of the vocabulary &lt;em&gt;PEBKAC&lt;/em&gt;, &lt;em&gt;RTFM&lt;/em&gt;, &lt;em&gt;ID-10-T error&lt;/em&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Usenet&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Distributed &lt;em&gt;newsgroups&lt;/em&gt; system. Founding medium of hacker culture.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Shodan&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Search engine for internet-connected &lt;em&gt;devices&lt;/em&gt; (IP cameras, ICS, IoT, open servers). Founded by &lt;strong&gt;John Matherly&lt;/strong&gt;. &lt;a href=&#34;https://shodan.io&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;shodan.io&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;ViolVocal&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;French-speaking community (mid-2000s) of organized &lt;em&gt;prank callers&lt;/em&gt; / phone harassers on forum + Mumble/TeamSpeak server. SIP spoofing, public call &lt;em&gt;streams&lt;/em&gt;, doxing, impersonating police officers to consult restricted databases without authorization, etc. Shut down after prosecutions. Francophone case of underground cruelty.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;4chan / /b/&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Imageboard founded by moot (Christopher Poole) in 2003. /b/ = no-rules, no-archive, totally anonymous board. Matrix of Anonymous (2006-2008) and modern meme culture. Community regularly orchestrating harassment, having notably degraded Terry A. Davis&amp;rsquo;s health.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Anonymous&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Collective entity emerged from 4chan /b/ around 2006-2008. Op Chanology (Scientology 2008), Op Tunisia (2011), Op Sony (2011). IRC coordination.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Doxing&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Publication of a target&amp;rsquo;s personal info with intent to harm.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Swatting&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;False emergency call (often SIP-spoofed) declaring a serious crime at the victim&amp;rsquo;s address, triggering SWAT deployment. Fatal cases documented.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;OSINT&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;em&gt;Open Source Intelligence&lt;/em&gt;. Information gathering from public sources.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;OPSEC&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;em&gt;Operations Security&lt;/em&gt;. Rigorous maintenance of operational anonymity over time.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Honeypot&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Fake server / fake account / fake leak baiting attackers to detect them. Scene defensive tool.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Snitch / Fed&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Informant / undercover federal agent. Top-priority detection in any &lt;em&gt;underground&lt;/em&gt; community.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Prompt injection&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Insertion of malicious content into an LLM&amp;rsquo;s context to hijack its behavior. OWASP LLM01:2025. First in the LLM Top 10.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Anthropic standard protocol (2024) to expose &lt;em&gt;tools&lt;/em&gt; and &lt;em&gt;resources&lt;/em&gt; to an LLM. Each third-party MCP server adds an attack surface.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Hard-won rules&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Internal project conventions documented in &lt;code&gt;CLAUDE.md&lt;/code&gt; after costly lessons. Prevents LLMs from repeating errors already encountered.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;ocarina-ideology&#34;&gt;Ocarina ideology&lt;a class=&#34;anchor&#34; href=&#34;#ocarina-ideology&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Term&lt;/th&gt;&#xA;          &lt;th&gt;Definition&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Villain (hacker sense)&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Reclaimed identity of the sovereign hacker acting outside institutions, opposed to conventions and &lt;em&gt;corporate branding&lt;/em&gt;. The Villain confronts power but respects the weakest.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Monster (hacker sense)&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;One who technically exploits their skill to persecute vulnerable people (harasser, doxxer, etc.). Structural &lt;em&gt;enemy&lt;/em&gt; of the real hacker scene.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Tooling culture&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Conviction that well-written technical tools (Nmap, Wireshark, Metasploit, Burp, sqlmap, et al.) made by small teams are worth a thousand marketing presentations.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Tribal loyalty (hacker scene)&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Absolute intra-community loyalty + extreme external suspicion. Long admission tests, &lt;em&gt;vouching&lt;/em&gt; by established members, brutal excommunication on betrayal.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Eyes everywhere&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Operational hyper-vigilance learned in the &lt;em&gt;underground&lt;/em&gt; context (IRC admin legally responsible for their channels&amp;rsquo; actions).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;industry--counter-models&#34;&gt;Industry / counter-models&lt;a class=&#34;anchor&#34; href=&#34;#industry--counter-models&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Term&lt;/th&gt;&#xA;          &lt;th&gt;Definition&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Infopreneur&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Entrepreneur whose product is sold information: courses, e-books, masterminds. American model (Dan Kennedy, Russell Brunson), imported into France via Tugan Bara.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Copywriting&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Art of writing persuasive &lt;em&gt;sales texts&lt;/em&gt;. Core trade of infopreneurs. Largely automatable by AI since 2023.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Funnel&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;em&gt;Sales funnel&lt;/em&gt;: free content → front-end product (€97) → flagship product (€997-4997) → premium coaching.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Marketing Underground&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Tugan Bara&amp;rsquo;s flagship program (2018-2023). Owned &amp;ldquo;&lt;em&gt;bad guy&lt;/em&gt;&amp;rdquo; posture.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Tugan Bara / Arnaud Labossière&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;French archetype of the 2018-2024 infopreneur model. HEC dropout. Sold Tugan.ai in 2024. Ultimately the only infopreneur who really explained the profession to a whole francophone-scene community.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;MRR&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;em&gt;Monthly Recurring Revenue&lt;/em&gt;. Monthly amount billed to subscription customers. Central SaaS indicator.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;ARR&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;em&gt;Annual Recurring Revenue&lt;/em&gt;. Annual amount earned from SaaS sales.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;ai-ml-rl&#34;&gt;AI, ML, RL&lt;a class=&#34;anchor&#34; href=&#34;#ai-ml-rl&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Term&lt;/th&gt;&#xA;          &lt;th&gt;Definition&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;LLM&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;em&gt;Large Language Model&lt;/em&gt;. Transformer model pre-trained on a large corpus. Claude, GPT, Gemini, Llama, Mistral.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Transformer&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Architecture introduced by &lt;em&gt;Attention Is All You Need&lt;/em&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Foundation model&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Pre-trained model reused for multiple tasks via &lt;em&gt;fine-tuning&lt;/em&gt; or &lt;em&gt;prompting&lt;/em&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;RL (Reinforcement Learning)&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Learning by interaction with an environment, guided by a &lt;em&gt;reward signal&lt;/em&gt;. Sutton &amp;amp; Barto 1998.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Constitutional AI (CAI)&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Anthropic alignment method (Bai et al., 2022). The model critiques and revises its own responses according to a written &lt;em&gt;constitution&lt;/em&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Probe&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Empirical learning primitive for AI.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;llms.txt, llms-full.txt&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Jeremy Howard standard (fast.ai), 2024. Short Markdown index (&lt;code&gt;llms.txt&lt;/code&gt;) + concatenated full doc (&lt;code&gt;llms-full.txt&lt;/code&gt;) for agent ingestion.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;SKILL.md&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Lets an AI agent plug into a project skill.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;CLAUDE.md&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Provides Claude Code with a set of rules.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;</description>
    </item>
    <item>
      <title>99.02 — Index of cited files</title>
      <link>https://mojo-molotov.github.io/from-ocarina-to-igor/99-references/02-file-index/</link>
      <pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate>
      <guid>https://mojo-molotov.github.io/from-ocarina-to-igor/99-references/02-file-index/</guid>
      <description>&lt;h1 id=&#34;9902index-of-cited-files&#34;&gt;99.02 — Index of cited files&lt;a class=&#34;anchor&#34; href=&#34;#9902index-of-cited-files&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;blockquote class=&#39;book-hint &#39;&gt;&#xA;&lt;p&gt;Per repo, the source files explicitly cited in the primer. Direct GitHub URLs.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&lt;h2 id=&#34;mojo-molotovocarinaframework&#34;&gt;&lt;code&gt;mojo-molotov/ocarina&lt;/code&gt; — Framework&lt;a class=&#34;anchor&#34; href=&#34;#mojo-molotovocarinaframework&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;root&#34;&gt;Root&lt;a class=&#34;anchor&#34; href=&#34;#root&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/pyproject.toml&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;pyproject.toml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/Makefile&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;Makefile&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/mypy.ini&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;mypy.ini&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/.pre-commit-config.yaml&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;.pre-commit-config.yaml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/allurerc.mjs&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;allurerc.mjs&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/README.md&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;README.md&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;srcocarinarailway&#34;&gt;&lt;code&gt;src/ocarina/railway/&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#srcocarinarailway&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/railway/result.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;result.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;srcocarinacustom_types&#34;&gt;&lt;code&gt;src/ocarina/custom_types/&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#srcocarinacustom_types&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/custom_types/effect.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;effect.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/custom_types/thunk.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;thunk.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/custom_types/tpom.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;tpom.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/custom_types/scenario.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;scenario.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/custom_types/test_components.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;test_components.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/custom_types/test_runner.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;test_runner.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/custom_types/oc_test_layers.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;oc_test_layers.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;srcocarinacustom_errorstest_framework&#34;&gt;&lt;code&gt;src/ocarina/custom_errors/test_framework/&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#srcocarinacustom_errorstest_framework&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/custom_errors/test_framework/no_matching_branch.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;no_matching_branch.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/custom_errors/test_framework/driver_died.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;driver_died.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/custom_errors/test_framework/pages.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;pages.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;srcocarinacustom_invariantstesting&#34;&gt;&lt;code&gt;src/ocarina/custom_invariants/testing/&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#srcocarinacustom_invariantstesting&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/custom_invariants/testing/workers.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;workers.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/custom_invariants/testing/oc_test_runners_ids.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;oc_test_runners_ids.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/custom_invariants/testing/oc_test_runners_names.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;oc_test_runners_names.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/custom_invariants/testing/oc_test_suites_names.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;oc_test_suites_names.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/custom_invariants/testing/oc_test_campaigns_names.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;oc_test_campaigns_names.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/custom_invariants/testing/oc_test_cycles_names.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;oc_test_cycles_names.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;srcocarinadslinvariants&#34;&gt;&lt;code&gt;src/ocarina/dsl/invariants/&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#srcocarinadslinvariants&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/dsl/invariants/validate.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;validate.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/dsl/invariants/assertions.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;assertions.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/dsl/invariants/errors.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;errors.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/dsl/invariants/internals/validation_chain.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;internals/validation_chain.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;srcocarinadsltesting&#34;&gt;&lt;code&gt;src/ocarina/dsl/testing/&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#srcocarinadsltesting&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/dsl/testing/oc_test.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;oc_test.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/dsl/testing/oc_test_suite.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;oc_test_suite.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/dsl/testing/oc_test_campaign.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;oc_test_campaign.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/dsl/testing/oc_test_cycle.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;oc_test_cycle.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/dsl/testing/watcher.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;watcher.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/dsl/testing/filter_tests_by_ids.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;filter_tests_by_ids.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/dsl/testing/internals/test_executor.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;internals/test_executor.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/dsl/testing/internals/test_flow.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;internals/test_flow.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/dsl/testing/selenium/create_test.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;selenium/create_test.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/dsl/testing/selenium/create_watcher.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;selenium/create_watcher.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;srcocarinadsltesting_with_railway&#34;&gt;&lt;code&gt;src/ocarina/dsl/testing_with_railway/&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#srcocarinadsltesting_with_railway&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/dsl/testing_with_railway/chain_actions.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;chain_actions.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/dsl/testing_with_railway/match_page.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;match_page.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/dsl/testing_with_railway/internals/action_chain.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;internals/action_chain.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/dsl/testing_with_railway/constructors/create_act.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;constructors/create_act.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;srcocarinaaggregates&#34;&gt;&lt;code&gt;src/ocarina/aggregates/&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#srcocarinaaggregates&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/aggregates/tests_layers.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;tests_layers.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;srcocarinainfra&#34;&gt;&lt;code&gt;src/ocarina/infra/&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#srcocarinainfra&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/infra/drivers_pool.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;drivers_pool.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/infra/driver_builder.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;driver_builder.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/infra/screenshotter.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;screenshotter.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/infra/act_counter.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;act_counter.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/infra/selenium/create_driver.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;selenium/create_driver.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/infra/selenium/create_drivers_pool.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;selenium/create_drivers_pool.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/infra/selenium/create_screenshotter.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;selenium/create_screenshotter.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/infra/selenium/driver_healthcheck.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;selenium/driver_healthcheck.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/infra/selenium/mixins.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;selenium/mixins.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;srcocarinaports&#34;&gt;&lt;code&gt;src/ocarina/ports/&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#srcocarinaports&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/ports/ilogger.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;ilogger.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/ports/itake_screenshot.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;itake_screenshot.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;srcocarinapom&#34;&gt;&lt;code&gt;src/ocarina/pom/&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#srcocarinapom&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/pom/base.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;base.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;srcocarinaopinionated&#34;&gt;&lt;code&gt;src/ocarina/opinionated/&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#srcocarinaopinionated&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/opinionated/infra/act_counter.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;infra/act_counter.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/opinionated/cli/builder.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;cli/builder.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/opinionated/cli/store.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;cli/store.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/opinionated/cli/phantoms.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;cli/phantoms.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/opinionated/cli/selenium/create_cli_store.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;cli/selenium/create_cli_store.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/opinionated/dsl/drive_page.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;dsl/drive_page.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/opinionated/launcher/bootstrap.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;launcher/bootstrap.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/opinionated/loggers/print_logger.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;loggers/print_logger.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/opinionated/loggers/file_logger.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;loggers/file_logger.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/opinionated/loggers/utils/format_metadata_str.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;loggers/utils/format_metadata_str.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/opinionated/plugins/reports/pretty_print_results.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;plugins/reports/pretty_print_results.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/opinionated/plugins/reports/results_to_json.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;plugins/reports/results_to_json.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/opinionated/plugins/reports/docx_tests_proofs.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;plugins/reports/docx_tests_proofs.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/src/ocarina/opinionated/plugins/reports/timing.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;plugins/reports/timing.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;tests&#34;&gt;Tests&lt;a class=&#34;anchor&#34; href=&#34;#tests&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/tests/cram/cli_help.t&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;tests/cram/cli_help.t&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/tests/cram/cli_happy_path.t&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;tests/cram/cli_happy_path.t&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;(other &lt;code&gt;.t&lt;/code&gt;s)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/tests/scenarios/conftest.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;tests/scenarios/conftest.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/tests/scenarios/test_railway_and_action_chain.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;tests/scenarios/test_railway_and_action_chain.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;(other &lt;code&gt;test_*.py&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/tests/dsl/invariants/test_types.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;tests/dsl/invariants/test_types.yml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/tests/dsl/testing_with_railway/test_types.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;tests/dsl/testing_with_railway/test_types.yml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;workflows&#34;&gt;Workflows&lt;a class=&#34;anchor&#34; href=&#34;#workflows&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/.github/workflows/main_ci.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;.github/workflows/main_ci.yml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/.github/workflows/dev_ci.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;.github/workflows/dev_ci.yml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/.github/workflows/unstable_python_full_build.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;.github/workflows/unstable_python_full_build.yml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina/blob/main/.github/actions/allure-history/action.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;.github/actions/allure-history/action.yml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;mojo-molotovocarina-example&#34;&gt;&lt;code&gt;mojo-molotov/ocarina-example&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#mojo-molotovocarina-example&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;code&#34;&gt;Code&lt;a class=&#34;anchor&#34; href=&#34;#code&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-example/blob/main/src/main.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/main.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-example/blob/main/src/tests/cycles/e2e.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/tests/cycles/e2e.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-example/blob/main/src/tests/scenarios/dashboard/access/happy_paths.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/tests/scenarios/dashboard/access/happy_paths.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-example/blob/main/src/lib/ext/ocarina/adapters/agnostic/act.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/lib/ext/ocarina/adapters/agnostic/act.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-example/blob/main/src/lib/ext/ocarina/adapters/agnostic/env_getters.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/lib/ext/ocarina/adapters/agnostic/env_getters.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-example/blob/main/src/lib/ext/selenium/humanize/proxy.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/lib/ext/selenium/humanize/proxy.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-example/blob/main/src/lib/ext/selenium/watchers/catch_me_if_you_can_watcher.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/lib/ext/selenium/watchers/catch_me_if_you_can_watcher.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-example/blob/main/src/lib/ext/redis/client.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/lib/ext/redis/client.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-example/blob/main/src/caches/l1.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/caches/l1.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-example/blob/main/src/caches/reserve_free_cache_key.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/caches/reserve_free_cache_key.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-example/blob/main/src/api/retrieve_dashboard_otp_code.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/api/retrieve_dashboard_otp_code.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;workflows-1&#34;&gt;Workflows&lt;a class=&#34;anchor&#34; href=&#34;#workflows-1&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-example/blob/main/.github/workflows/main_ci.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;.github/workflows/main_ci.yml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-example/blob/main/.github/workflows/dev_ci.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;.github/workflows/dev_ci.yml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-example/blob/main/.github/workflows/e2e.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;.github/workflows/e2e.yml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;mojo-molotovocarina-with-ai-example&#34;&gt;&lt;code&gt;mojo-molotov/ocarina-with-ai-example&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#mojo-molotovocarina-with-ai-example&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;docs&#34;&gt;Docs&lt;a class=&#34;anchor&#34; href=&#34;#docs&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-with-ai-example/blob/main/README.md&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;README.md&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-with-ai-example/blob/main/CLAUDE.md&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-with-ai-example/blob/main/CURA_FRD.md&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;CURA_FRD.md&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-with-ai-example/blob/main/CURA_TEST_STRATEGY.md&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;CURA_TEST_STRATEGY.md&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-with-ai-example/blob/main/IDENTIFIED_GAPS.md&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;IDENTIFIED_GAPS.md&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;code-1&#34;&gt;Code&lt;a class=&#34;anchor&#34; href=&#34;#code-1&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-with-ai-example/blob/main/src/main.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/main.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-with-ai-example/blob/main/src/tests/cycles/e2e.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/tests/cycles/e2e.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-with-ai-example/blob/main/src/tests/scenarios/_fragments/auth.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/tests/scenarios/_fragments/auth.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-with-ai-example/blob/main/src/tests/scenarios/appointment/past_date_booking.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/tests/scenarios/appointment/past_date_booking.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-with-ai-example/blob/main/src/lib/ext/ocarina/adapters/selenium/test_suite.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/lib/ext/ocarina/adapters/selenium/test_suite.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-with-ai-example/blob/main/src/lib/ext/ocarina/adapters/selenium/create_drivers_pool.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/lib/ext/ocarina/adapters/selenium/create_drivers_pool.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-with-ai-example/blob/main/src/lib/ext/ocarina/adapters/selenium/browser_navigation.py&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/lib/ext/ocarina/adapters/selenium/browser_navigation.py&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;workflows-2&#34;&gt;Workflows&lt;a class=&#34;anchor&#34; href=&#34;#workflows-2&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-with-ai-example/blob/main/.github/workflows/ai_proof_ci.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;.github/workflows/ai_proof_ci.yml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/ocarina-with-ai-example/blob/main/.github/workflows/ai_proof_e2e.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;.github/workflows/ai_proof_e2e.yml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;mojo-molotovigoristan&#34;&gt;&lt;code&gt;mojo-molotov/igoristan&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#mojo-molotovigoristan&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;code-2&#34;&gt;Code&lt;a class=&#34;anchor&#34; href=&#34;#code-2&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/igoristan/blob/main/src/config/routes.ts&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/config/routes.ts&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/igoristan/blob/main/src/config/brand.ts&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/config/brand.ts&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/igoristan/blob/main/src/hooks/useAuth.ts&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/hooks/useAuth.ts&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/igoristan/blob/main/src/components/LoginForm.tsx&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/components/LoginForm.tsx&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/igoristan/blob/main/src/pages/index/&amp;#43;Page.tsx&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/pages/index/+Page.tsx&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/igoristan/blob/main/src/pages/corsicamon/&amp;#43;Page.tsx&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/pages/corsicamon/+Page.tsx&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/igoristan/blob/main/src/pages/donkey-sausage-eater-detector/&amp;#43;Page.tsx&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/pages/donkey-sausage-eater-detector/+Page.tsx&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/igoristan/blob/main/src/pages/dashboard/&amp;#43;Page.tsx&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;src/pages/dashboard/+Page.tsx&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/igoristan/blob/main/vite.config.ts&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;vite.config.ts&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/igoristan/blob/main/package.json&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;package.json&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/igoristan/blob/main/eslint.config.ts&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;eslint.config.ts&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;workflows-3&#34;&gt;Workflows&lt;a class=&#34;anchor&#34; href=&#34;#workflows-3&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/igoristan/blob/main/.github/workflows/ci-pr.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;.github/workflows/ci-pr.yml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/igoristan/blob/main/.github/workflows/deploy.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;.github/workflows/deploy.yml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;mojo-molotovtests-workers&#34;&gt;&lt;code&gt;mojo-molotov/tests-workers&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#mojo-molotovtests-workers&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;code-3&#34;&gt;Code&lt;a class=&#34;anchor&#34; href=&#34;#code-3&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/tests-workers/blob/main/api/otp.ts&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;api/otp.ts&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/tests-workers/blob/main/api/otp-history.ts&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;api/otp-history.ts&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/tests-workers/blob/main/api/corsicadex.ts&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;api/corsicadex.ts&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/tests-workers/blob/main/lib/redis.ts&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;lib/redis.ts&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/tests-workers/blob/main/lib/isAuthorized.ts&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;lib/isAuthorized.ts&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/tests-workers/blob/main/consts/corsicadexData.ts&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;consts/corsicadexData.ts&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/tests-workers/blob/main/package.json&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;package.json&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/tests-workers/blob/main/vercel.json&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;vercel.json&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mojo-molotov/tests-workers/blob/main/README.md&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;README.md&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;(No GitHub Actions workflow.)&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
