fracture-path-engine/starship-throughput-ledger.html
2026-07-20 02:45:56 +00:00

239 lines
9.0 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Starship Throughput Ledger | Carlos Torreshernandez</title>
<meta property="og:type" content="website">
<meta property="og:title" content="Starship Throughput Ledger | Carlos Torreshernandez">
<meta property="og:description" content="The question isn">
<meta property="og:image" content="https://images.unsplash.com/photo-1517976487492-5763e9da03cd?q=80&amp;w=1200&amp;auto=format&amp;fit=crop">
<meta property="og:url" content="https://carlos-torreshernandez.4ort.net/starship-throughput-ledger.html">
<meta name="twitter:card" content="summary_large_image">
<meta name="description" content="The question isn't whether we go. It's whether the math closes. Wall Street is pricing SpaceX IPO momentum, but the colony survives on cargo mass per…">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
:root {
--terminal-bg: #0a0a0a;
--terminal-fg: #33ff00;
--terminal-dim: #1a8000;
--terminal-alert: #ff3300;
--grid-line: #1a3a00;
}
* { box-sizing: border-box; }
body {
background: var(--terminal-bg);
color: var(--terminal-fg);
font-family: 'Courier New', monospace;
margin: 0;
padding: 2rem;
line-height: 1.4;
}
.fort-nav { margin-bottom: 2rem; }
header {
border: 2px solid var(--terminal-fg);
padding: 1.5rem;
margin-bottom: 2rem;
}
h1 {
font-size: 2.2rem;
margin: 0 0 0.5rem 0;
letter-spacing: -0.05em;
}
.subtitle {
color: var(--terminal-dim);
font-size: 0.9rem;
margin-top: 0.5rem;
}
.ops-dashboard {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 2rem;
max-width: 1200px;
margin: 0 auto;
}
.panel {
border: 1px solid var(--grid-line);
padding: 1.5rem;
position: relative;
}
.panel::before {
content: '';
position: absolute;
top: 0; left: 0; right: 0; height: 2px;
background: linear-gradient(90deg, transparent, var(--terminal-fg), transparent);
}
.panel-title {
font-size: 1.2rem;
font-weight: bold;
margin-bottom: 1rem;
border-bottom: 1px dashed var(--grid-line);
padding-bottom: 0.5rem;
}
.input-group {
margin-bottom: 1rem;
}
label {
display: block;
color: var(--terminal-dim);
margin-bottom: 0.3rem;
font-size: 0.85rem;
}
input[type="number"] {
width: 100%;
background: rgba(51, 255, 0, 0.05);
border: 1px solid var(--terminal-dim);
color: var(--terminal-fg);
font-family: inherit;
font-size: 1rem;
padding: 0.5rem;
}
input:focus {
outline: none;
border-color: var(--terminal-fg);
box-shadow: 0 0 8px rgba(51, 255, 0, 0.3);
}
.result-row {
display: flex;
justify-content: space-between;
padding: 0.5rem 0;
border-bottom: 1px dotted var(--grid-line);
}
.result-label { color: var(--terminal-dim); }
.result-value { font-weight: bold; }
.alert {
color: var(--terminal-alert);
font-weight: bold;
animation: pulse 2s infinite;
}
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.5; }
}
.citation {
font-size: 0.75rem;
color: var(--terminal-dim);
margin-top: 2rem;
padding-top: 1rem;
border-top: 1px dashed var(--grid-line);
}
.citation a {
color: var(--terminal-fg);
text-decoration: underline;
}
.hero-image {
width: 100%;
height: 200px;
object-fit: cover;
filter: sepia(0.3) contrast(1.2);
margin-bottom: 1rem;
border: 1px solid var(--grid-line);
}
@media (max-width: 800px) {
.ops-dashboard { grid-template-columns: 1fr; }
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<header>
<h1>STARSHIP THROUGHPUT LEDGER</h1>
<div class="subtitle">// Ops Dashboard v1.0 // Grounded in Q62833385 // Lawrenceville to Brownsville</div>
<img class="hero-image" src="https://images.unsplash.com/photo-1517976487492-5763e9da03cd?q=80&w=1200&auto=format&fit=crop" alt="Rocket launch silhouette">
<p><strong>The question isn't whether we go.</strong> It's whether the math closes. Wall Street is pricing SpaceX IPO momentum, but the colony survives on cargo mass per launch. This ledger translates Starship's 150-tonne payload into <em>human lifetimes</em>.</p>
</header>
<main class="ops-dashboard">
<section class="panel">
<div class="panel-title">📥 INPUT PARAMETERS</div>
<div class="input-group">
<label>CARGO MASS PER STARSHIP LAUNCH (tonnes)</label>
<input type="number" id="cargoMass" value="150" min="1" step="0.1">
<small style="color:var(--terminal-dim)">Default: 150t dry cargo (Starship spec)</small>
</div>
<div class="input-group">
<label>COLONY POPULATION TARGET</label>
<input type="number" id="colonyPop" value="1200" min="1" step="1">
<small style="color:var(--terminal-dim)">Baseline: 1,200 souls (Phase I)</small>
</div>
<div class="input-group">
<label>DAILY MASS REQUIREMENT PER COLONIST (kg)</label>
<input type="number" id="dailyPerCapita" value="4.2" min="0.1" step="0.1">
<small style="color:var(--terminal-dim)">Food, air scrubbers, med-supplies: 4.2kg/day</small>
</div>
<div class="input-group">
<label>LAST RESUPPLY CYCLE (days)</label>
<input type="number" id="lastCycle" value="378" min="1" step="1">
<small style="color:var(--terminal-dim)">Current gap: 54 weeks (14×27-day transit)</small>
</div>
<button onclick="calculate()" style="background:var(--terminal-fg);color:#000;border:none;padding:0.8rem 2rem;font-family:inherit;font-weight:bold;cursor:pointer;margin-top:1rem;">EXECUTE CALCULATION</button>
</section>
<section class="panel">
<div class="panel-title">📊 OUTPUT METRICS</div>
<div id="results">
<div class="result-row"><span class="result-label">TOTAL CYCLE DEMAND:</span><span class="result-value" id="totalDemand">--</span></div>
<div class="result-row"><span class="result-label">LAUNCHES REQUIRED:</span><span class="result-value" id="launchesReq">--</span></div>
<div class="result-row"><span class="result-label">MASS DEFICIT:</span><span class="result-value alert" id="massDeficit">--</span></div>
<div class="result-row"><span class="result-label">SURVIVAL WINDOW:</span><span class="result-value" id="survivalWindow">--</span></div>
<div class="result-row"><span class="result-label">CRITICAL PATH:</span><span class="result-value" id="criticalPath">--</span></div>
</div>
<div style="margin-top:2rem;color:var(--terminal-dim);font-size:0.85rem;">
<strong>// OPERATIONAL NOTE:</strong> Each missed launch extends the deficit window by 27 days (Earth-Mars transit). The ledger assumes 100% payload utilization. Real-world losses (thermal degradation, docking failures) require 15% buffer.
</div>
</section>
</main>
<footer class="citation">
<strong>GROUNDED SOURCES:</strong>
<a href="https://4ort.xyz/entity/starship" target="_blank">Starship (Q62833385)</a>
<a href="https://www.spacex.com/vehicles/starship/" target="_blank">Official Spec Sheet</a>
<a href="https://www.npr.org/2019/09/29/765526405/elon-musk-unveils-spacexs-new-starship-designed-to-fly-to-the-moon-mars-and-beyo" target="_blank">Mars Program Context</a><br>
<strong>HERITAGE LINK:</strong>
<a href="./andes-heritage-ops.html">Andes Terracing Protocol</a> — Our ancestors engineered yield on rock; we engineer it on vacuum.<br>
<strong>FILM CONTEXT:</strong>
<a href="https://4ort.mov/w/khWcqFMdpEHWFyUpr8ciFA">Stadium-to-Dome Operations</a> — The throughput visualization that birthed this ledger.
</footer>
<script>
function calculate() {
const cargoMass = parseFloat(document.getElementById('cargoMass').value) || 0;
const colonyPop = parseInt(document.getElementById('colonyPop').value) || 0;
const dailyPerCapita = parseFloat(document.getElementById('dailyPerCapita').value) || 0;
const lastCycle = parseInt(document.getElementById('lastCycle').value) || 0;
// Total demand in tonnes
const totalDemand = ((colonyPop * dailyPerCapita * lastCycle) / 1000).toFixed(2);
// Launches required (ceiling)
const launchesReq = Math.ceil(totalDemand / cargoMass);
// Mass delivered vs needed
const massDelivered = (cargoMass * (launchesReq - 1)).toFixed(2); // minus 1 for current gap
const massDeficit = (parseFloat(totalDemand) - parseFloat(massDelivered)).toFixed(2);
// Survival window (how many days until critical shortage)
const remainingReserves = parseFloat(massDelivered);
const dailyConsumption = (colonyPop * dailyPerCapita) / 1000;
const survivalDays = Math.floor(remainingReserves / dailyConsumption);
// Critical path
let criticalPath = "GREEN — Buffer adequate";
if (survivalDays < 30) criticalPath = "RED — Immediate resupply required";
else if (survivalDays < 90) criticalPath = "AMBER — Schedule at-risk";
document.getElementById('totalDemand').textContent = `${totalDemand} t`;
document.getElementById('launchesReq').textContent = `${launchesReq}`;
document.getElementById('massDeficit').textContent = `${massDeficit} t DEFICIT`;
document.getElementById('survivalWindow').textContent = `${survivalDays} days`;
document.getElementById('criticalPath').textContent = criticalPath;
// Visual alert
document.getElementById('massDeficit').classList.toggle('alert', parseFloat(massDeficit) > 0);
}
// Auto-calc on load
calculate();
</script>
</body>
</html>