<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Cradicle Explorer</title>
    <link href="/css/bootstrap/bootstrap.min.css" rel="stylesheet">
    <style>
      .form-control-dark::placeholder {
          color: #aaa;
          opacity: 1;
      }
    </style>
    <link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
    <link rel="icon" type="image/png" href="/favicon.png">


                <link href="/css/dashboard.css" rel="stylesheet">
                </head>
                <body>
                <header class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow">
                  <a class="navbar-brand col-md-3 col-lg-2 me-0 px-3 fs-6" href="/">Cradicle Explorer</a>
                  <button class="navbar-toggler position-absolute d-md-none collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#sidebarMenu" aria-controls="sidebarMenu" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                  </button>
                  <form method="get" action="/cgi-bin/main" style="width:100%;"><input class="form-control form-control-dark w-100 rounded-0 border-0" type="text" name="q" placeholder="Search repos" aria-label="Search"></form>
                  <div class="navbar-nav flex-row">
                    <div class="nav-item text-nowrap">
                      <a class="nav-link px-3 active" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A">Lightspeed</a>
                    </div>
                  </div>
                </header>
                <div class="container-fluid">
                  <div class="row">
                    <nav id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block bg-dark sidebar collapse">
                      <div class="position-sticky pt-3 sidebar-sticky">
                        <ul class="nav flex-column">
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A">
                              <i class="align-text-bottom fa-solid fa-info"></i>
                              Info
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&issue=list">
                              <i class="align-text-bottom fa-solid fa-layer-group"></i>
                              Issues
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&patch=list">
                              <i class="align-text-bottom fa-solid fa-vest-patches"></i>
                              Patches
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&wallet=list">
                              <i class="align-text-bottom fa-solid fa-wallet"></i>
                              Wallets
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link active" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&source=.">
                              <i class="align-text-bottom fa-solid fa-code"></i>
                              Source
                            </a>
                          </li>
                        <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted text-uppercase">
                          <span></span>
                        </h6>
                        <ul class="nav flex-column mb-2">
                        
    <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-1 mb-1 text-muted text-uppercase">
      <span>Source</span>
    </h6>
    <li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&source=.github"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> .github</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&source=adrs"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> adrs</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&source=client"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> client</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&source=docs"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> docs</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&source=examples"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> examples</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&source=rfcs"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> rfcs</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=rfcs%2F0000-template.md"><i class="fa-solid fa-file" style="color:#888;"></i> 0000-template.md</a></li><li><a class="nav-link py-0 active" style="padding-left:32px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=rfcs%2F0001-lightspeed-core.md"><i class="fa-solid fa-file" style="color:#888;"></i> 0001-lightspeed-core.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=rfcs%2F0002-live-component-model.md"><i class="fa-solid fa-file" style="color:#888;"></i> 0002-live-component-model.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=rfcs%2F0003-client-runtime.md"><i class="fa-solid fa-file" style="color:#888;"></i> 0003-client-runtime.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=rfcs%2F0004-router-integration.md"><i class="fa-solid fa-file" style="color:#888;"></i> 0004-router-integration.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=rfcs%2F0005-rfc-adr-pair-governance.md"><i class="fa-solid fa-file" style="color:#888;"></i> 0005-rfc-adr-pair-governance.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=rfcs%2F0006-pin-local-asdf-toolchain.md"><i class="fa-solid fa-file" style="color:#888;"></i> 0006-pin-local-asdf-toolchain.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=rfcs%2F0007-fix-testing-import-and-align-ci-toolchain.md"><i class="fa-solid fa-file" style="color:#888;"></i> 0007-fix-testing-import-and-align-ci-toolchain.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=rfcs%2F0008-phase1-core-runtime-simulation.md"><i class="fa-solid fa-file" style="color:#888;"></i> 0008-phase1-core-runtime-simulation.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=rfcs%2F0009-phase2-beam-session-actor.md"><i class="fa-solid fa-file" style="color:#888;"></i> 0009-phase2-beam-session-actor.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=rfcs%2F0010-phase3-transport-adapters-and-codec.md"><i class="fa-solid fa-file" style="color:#888;"></i> 0010-phase3-transport-adapters-and-codec.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=rfcs%2F0011-phase4-browser-runtime.md"><i class="fa-solid fa-file" style="color:#888;"></i> 0011-phase4-browser-runtime.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=rfcs%2F0012-phase5-rendering-diff-strategy.md"><i class="fa-solid fa-file" style="color:#888;"></i> 0012-phase5-rendering-diff-strategy.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=rfcs%2F0013-phase6-developer-ergonomics-api.md"><i class="fa-solid fa-file" style="color:#888;"></i> 0013-phase6-developer-ergonomics-api.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=rfcs%2F0014-generator-cli-scaffold-rfc.md"><i class="fa-solid fa-file" style="color:#888;"></i> 0014-generator-cli-scaffold-rfc.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=rfcs%2F0015-phase7-distribution-and-production-hardening.md"><i class="fa-solid fa-file" style="color:#888;"></i> 0015-phase7-distribution-and-production-hardening.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&source=specs"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> specs</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&source=src"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> src</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&source=test"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> test</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=.gitignore"><i class="fa-solid fa-file" style="color:#888;"></i> .gitignore</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=.gitkeep"><i class="fa-solid fa-file" style="color:#888;"></i> .gitkeep</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=.tool-versions"><i class="fa-solid fa-file" style="color:#888;"></i> .tool-versions</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=AGENTS.md"><i class="fa-solid fa-file" style="color:#888;"></i> AGENTS.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=CHANGELOG.md"><i class="fa-solid fa-file" style="color:#888;"></i> CHANGELOG.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=LICENSE.md"><i class="fa-solid fa-file" style="color:#888;"></i> LICENSE.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=MILESTONES.md"><i class="fa-solid fa-file" style="color:#888;"></i> MILESTONES.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=Makefile"><i class="fa-solid fa-file" style="color:#888;"></i> Makefile</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=README.md"><i class="fa-solid fa-file" style="color:#888;"></i> README.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=ROADMAP.md"><i class="fa-solid fa-file" style="color:#888;"></i> ROADMAP.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=gleam.toml"><i class="fa-solid fa-file" style="color:#888;"></i> gleam.toml</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&file=lightspeed-1024.png"><i class="fa-solid fa-file" style="color:#888;"></i> lightspeed-1024.png</a></li>
    
                        </ul>
                      </div>
                    </nav>
                <main class="col-md-9 ms-sm-auto col-lg-10">
                  <div class="container px-1 py-3">
        
<div class="mb-2" style="font-size:1.1rem;"><a href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&source=.">/</a> <a href="/cgi-bin/repo?id=z3YgcTxjgNbDG7b9ME7jRqR5Cxr4A&source=rfcs">rfcs</a> / 0001-lightspeed-core.md</div>
        <div class="list-group">
        <div class="list-group-item">
        <div class="mb-2" style="font-weight:bold;"><i class="fa-solid fa-file"></i> 0001-lightspeed-core.md</div>
        <pre style="margin:0; font-size:0.85rem; overflow-x:auto; color:#fafafa;"><span style="color:#666; user-select:none;"> 1</span>  # RFC-0001 — Lightspeed Core Runtime
<span style="color:#666; user-select:none;"> 2</span>  
<span style="color:#666; user-select:none;"> 3</span>  Status: Draft
<span style="color:#666; user-select:none;"> 4</span>  
<span style="color:#666; user-select:none;"> 5</span>  ## Summary
<span style="color:#666; user-select:none;"> 6</span>  
<span style="color:#666; user-select:none;"> 7</span>  Define Lightspeed as a transport-independent live-session runtime for Gleam.
<span style="color:#666; user-select:none;"> 8</span>  
<span style="color:#666; user-select:none;"> 9</span>  ## Motivation
<span style="color:#666; user-select:none;">10</span>  
<span style="color:#666; user-select:none;">11</span>  A LiveView-style system in Gleam should not begin as a monolithic web framework. Gleam already has web libraries and UI libraries. Lightspeed should provide the missing runtime contract: stateful server sessions, typed events, lifecycle safety, and patch delivery.
<span style="color:#666; user-select:none;">12</span>  
<span style="color:#666; user-select:none;">13</span>  ## Design
<span style="color:#666; user-select:none;">14</span>  
<span style="color:#666; user-select:none;">15</span>  The core crate exposes:
<span style="color:#666; user-select:none;">16</span>  
<span style="color:#666; user-select:none;">17</span>  - component contract
<span style="color:#666; user-select:none;">18</span>  - lifecycle typestate
<span style="color:#666; user-select:none;">19</span>  - ISA
<span style="color:#666; user-select:none;">20</span>  - protocol frame model
<span style="color:#666; user-select:none;">21</span>  - patch model
<span style="color:#666; user-select:none;">22</span>  - test helpers
<span style="color:#666; user-select:none;">23</span>  
<span style="color:#666; user-select:none;">24</span>  Transport adapters and render integrations may live in separate packages once the core boundary stabilizes.
<span style="color:#666; user-select:none;">25</span>  
<span style="color:#666; user-select:none;">26</span>  ## API impact
<span style="color:#666; user-select:none;">27</span>  
<span style="color:#666; user-select:none;">28</span>  Introduces initial public modules under `lightspeed/*`.
<span style="color:#666; user-select:none;">29</span>  
<span style="color:#666; user-select:none;">30</span>  ## Protocol impact
<span style="color:#666; user-select:none;">31</span>  
<span style="color:#666; user-select:none;">32</span>  Introduces protocol name `lightspeed` and protocol version `1`.
<span style="color:#666; user-select:none;">33</span>  
<span style="color:#666; user-select:none;">34</span>  ## ISA impact
<span style="color:#666; user-select:none;">35</span>  
<span style="color:#666; user-select:none;">36</span>  Introduces initial instruction vocabulary.
<span style="color:#666; user-select:none;">37</span>  
<span style="color:#666; user-select:none;">38</span>  ## Security impact
<span style="color:#666; user-select:none;">39</span>  
<span style="color:#666; user-select:none;">40</span>  Core will define security hooks but concrete enforcement lives in adapters until the WebSocket proof of concept exists.
<span style="color:#666; user-select:none;">41</span>  
<span style="color:#666; user-select:none;">42</span>  ## Alternatives
<span style="color:#666; user-select:none;">43</span>  
<span style="color:#666; user-select:none;">44</span>  - Build directly on Lustre server components.
<span style="color:#666; user-select:none;">45</span>  - Build a Wisp plugin first.
<span style="color:#666; user-select:none;">46</span>  - Build a Phoenix-compatible protocol.
<span style="color:#666; user-select:none;">47</span>  
<span style="color:#666; user-select:none;">48</span>  ## Unresolved questions
<span style="color:#666; user-select:none;">49</span>  
<span style="color:#666; user-select:none;">50</span>  - Should core be one package or split into `lightspeed_core`, `lightspeed_server`, and `lightspeed_client`?
</pre>
        </div>
        </div>

</div>
</main>
</div>
</div>


</body>
</html>

