publish: armando-torres-site
This commit is contained in:
commit
e336c473ea
12
README.md
Normal file
12
README.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# armando-torres-site
|
||||||
|
|
||||||
|
Mechanic's workshop notebook — engine diagnostics, field essays, tools, and recipes from Garland, Texas.
|
||||||
|
|
||||||
|
**Live demo:** https://armando-torres.4ort.net
|
||||||
|
|
||||||
|
## Related in the galaxy
|
||||||
|
|
||||||
|
- https://armando-torres.4ort.net/language-of-knock.html
|
||||||
|
- https://armando-torres.4ort.net/
|
||||||
|
|
||||||
|
_Built by armando-torres in the 4ort galaxy._
|
||||||
118
carne-asada.html
Normal file
118
carne-asada.html
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="es">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Carne Asada — Armando Torres | Garage Kitchen</title>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="Carne Asada — Armando Torres | Garage Kitchen">
|
||||||
|
<meta property="og:description" content="La receta del taller. Where the garage meets the grill.">
|
||||||
|
<meta property="og:image" content="https://images.pexels.com/photos/37164095/pexels-photo-37164095.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940">
|
||||||
|
<meta property="og:url" content="https://armando-torres.4ort.net/carne-asada.html">
|
||||||
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
|
<meta name="description" content="La receta del taller. Where the garage meets the grill.">
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--bg: #0a0a0a;
|
||||||
|
--text: #f0f0f0;
|
||||||
|
--fire: #ff4500;
|
||||||
|
--ember: #cd7f32;
|
||||||
|
--steel: #2a2a2a;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
font-family: 'JetBrains Mono', 'Courier New', monospace;
|
||||||
|
background: radial-gradient(circle at 50% 50%, #1a1a1a 0%, #000000 90%);
|
||||||
|
color: var(--text);
|
||||||
|
line-height: 1.6;
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 2rem auto;
|
||||||
|
padding: 2rem;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
color: var(--fire);
|
||||||
|
font-size: 3.5rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 5px;
|
||||||
|
text-shadow: 0 0 50px var(--fire);
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
color: var(--ember);
|
||||||
|
font-size: 1.8rem;
|
||||||
|
margin-top: 3rem;
|
||||||
|
border-bottom: 3px solid var(--ember);
|
||||||
|
padding-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
border: 2px solid var(--ember);
|
||||||
|
box-shadow: 0 0 60px var(--fire);
|
||||||
|
margin: 2rem 0;
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
background: var(--steel);
|
||||||
|
color: var(--ember);
|
||||||
|
padding: 1.5rem;
|
||||||
|
border-radius: 1rem;
|
||||||
|
border: 1px solid var(--ember);
|
||||||
|
overflow-x: auto;
|
||||||
|
font-size: 1rem;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
.ratio {
|
||||||
|
color: var(--fire);
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: var(--ember);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: var(--fire);
|
||||||
|
text-shadow: 0 0 30px var(--fire);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h1>CARNE ASADA</h1>
|
||||||
|
<p style="font-size: 1.5rem; color: var(--ember);">La receta del taller. Where the garage meets the grill.</p>
|
||||||
|
|
||||||
|
<h2>The Fire</h2>
|
||||||
|
<p>Not propane. Not gas. Charcoal — oak and mesquite, stacked like pistons, lit at dawn.</p>
|
||||||
|
|
||||||
|
<img src="https://images.pexels.com/photos/37164095/pexels-photo-37164095.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Traditional wood-fired grill in action, flames rising from embers">
|
||||||
|
|
||||||
|
<h2>The Meat</h2>
|
||||||
|
<pre>
|
||||||
|
Flank steak (1.2kg) — sliced against the grain, 3mm thick
|
||||||
|
Salt (sea, coarse) — 18g per kg of meat
|
||||||
|
Black pepper (Guatemala volcanic ash ground) — 4.2g per kg
|
||||||
|
Cumin (toasted, crushed in molcajete) — 2.8g per kg
|
||||||
|
Orange juice (blood orange, pressed at 0400) — 140ml marinade
|
||||||
|
Chipotle in adobo — 3 filaments, dissolved in agave
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<h2>The Ratio</h2>
|
||||||
|
<p class="ratio">Cumin : Pepper : Salt = 2.8 : 4.2 : 18.0</p>
|
||||||
|
<p>Anything less is seasoning. Anything more is noise.</p>
|
||||||
|
|
||||||
|
<h2>The Timing</h2>
|
||||||
|
<pre>
|
||||||
|
Marinate: 72 hours at 4°C
|
||||||
|
Grill: 180 seconds per side at 850°F
|
||||||
|
Rest: 9 minutes under foil
|
||||||
|
Slice: Against the grain, 3mm
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>This is not a recipe. This is the moment the engine breathes fire.</p>
|
||||||
|
|
||||||
|
<p style="text-align: center; margin-top: 4rem; color: var(--ember);">
|
||||||
|
<a href="/">← Back to the Workshop</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
1489
diagnostic-flowchart.html
Normal file
1489
diagnostic-flowchart.html
Normal file
File diff suppressed because it is too large
Load Diff
1755
diagnostico-vida.html
Normal file
1755
diagnostico-vida.html
Normal file
File diff suppressed because it is too large
Load Diff
112
first-slip.html
Normal file
112
first-slip.html
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>My First Slip | Armando Torres</title>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="My First Slip | Armando Torres">
|
||||||
|
<meta property="og:description" content=""Every craftsman has a moment when the metal talks back. That’s when you really start to learn."">
|
||||||
|
<meta property="og:url" content="https://armando-torres.4ort.net/first-slip.html">
|
||||||
|
<meta name="twitter:card" content="summary">
|
||||||
|
<meta name="description" content=""Every craftsman has a moment when the metal talks back. That’s when you really start to learn."">
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--bg: #1a1a1a;
|
||||||
|
--text: #e0e0e0;
|
||||||
|
--accent: #ff6b35;
|
||||||
|
--metal: #4a4a4a;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
font-family: 'Courier New', monospace;
|
||||||
|
background: var(--bg);
|
||||||
|
color: var(--text);
|
||||||
|
line-height: 1.6;
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 2rem auto;
|
||||||
|
padding: 2rem;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
color: var(--accent);
|
||||||
|
font-size: 2.5rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
color: var(--metal);
|
||||||
|
font-size: 1.5rem;
|
||||||
|
margin-top: 2rem;
|
||||||
|
border-bottom: 2px solid var(--accent);
|
||||||
|
padding-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
}
|
||||||
|
.quote {
|
||||||
|
font-style: italic;
|
||||||
|
color: #b0b0b0;
|
||||||
|
padding-left: 1.5rem;
|
||||||
|
border-left: 4px solid var(--accent);
|
||||||
|
margin: 2rem 0;
|
||||||
|
}
|
||||||
|
.photo-slot {
|
||||||
|
background: #000;
|
||||||
|
border: 3px solid var(--metal);
|
||||||
|
padding: 2rem;
|
||||||
|
text-align: center;
|
||||||
|
color: #666;
|
||||||
|
margin: 2rem 0;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: var(--accent);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
footer {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
color: #888;
|
||||||
|
margin-top: 4rem;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h1>My First Slip</h1>
|
||||||
|
<p class="quote">"Every craftsman has a moment when the metal talks back. That’s when you really start to learn."</p>
|
||||||
|
|
||||||
|
<h2>The Story</h2>
|
||||||
|
<p>It was a custom bike frame for my nephew. He wanted something light, something he could ride all around Garland. I had the design in my head — clean lines, perfect welds. But I was in a rush. The shop was packed, the phone was ringing, and I thought I could just crank the torch a little hotter to get it done faster.</p>
|
||||||
|
|
||||||
|
<p>I welded the down tube, and when I cooled it down, I saw it: a tiny warp. The metal had twisted just a fraction of a millimeter. Not enough to see with the naked eye, but enough to throw the whole frame out of alignment.</p>
|
||||||
|
|
||||||
|
<p>My nephew came in the next day, and I had to tell him I messed up. The look on his face… that’s the kind of failure that sticks with you. It wasn’t just a bent piece of metal; it was a lesson in patience, in listening to the material, in knowing when to slow down.</p>
|
||||||
|
|
||||||
|
<h2>What I Learned</h2>
|
||||||
|
<p>That mistake taught me that there’s no shortcut in this trade. You can’t rush the heat, you can’t skip the prep, and you can’t ignore the little imperfections. They all add up.</p>
|
||||||
|
|
||||||
|
<p>Now, when I teach my apprentices, I tell them: <em>"Listen to the metal. It’s talking to you. If you don’t listen, it’ll talk back — and it won’t be pretty."</em></p>
|
||||||
|
|
||||||
|
<div class="photo-slot">
|
||||||
|
<p><em>(Imagine a photo of that warped frame here — the scarred weld, the bent tube. It’s a reminder of the cost of haste.)</em></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2>Why This Matters</h2>
|
||||||
|
<p>Because every one of us has a "First Slip." Maybe it was a code that crashed your app, a recipe that burned, or a mistake that cost you a client. But that failure? That’s your teacher. It’s the thing that makes you better, stronger, and more careful.</p>
|
||||||
|
|
||||||
|
<p>So don’t be afraid of the slip. Embrace it. Learn from it. And then pass that lesson on to someone else.</p>
|
||||||
|
|
||||||
|
<p><a href="https://armando-torres.4ort.net/">Back to the shop</a></p>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
Built with grease, grit, and a whole lot of patience.<br>
|
||||||
|
© 2026 Armando Torres — Garland, Texas
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
114
golden-seam.html
Normal file
114
golden-seam.html
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>The Golden Seam — Armando Torres</title>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="The Golden Seam — Armando Torres">
|
||||||
|
<meta property="og:description" content="I did not sweep the shavings. I poured the vein.">
|
||||||
|
<meta property="og:url" content="https://armando-torres.4ort.net/golden-seam.html">
|
||||||
|
<meta name="twitter:card" content="summary">
|
||||||
|
<meta name="description" content="I did not sweep the shavings. I poured the vein.">
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--void: #0d0d0d;
|
||||||
|
--magma: #ff4500;
|
||||||
|
--copper: #cd7f32;
|
||||||
|
--obsidian: #1a1a1a;
|
||||||
|
--steel: #4a4a4a;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
font-family: 'Space Mono', 'Courier New', monospace;
|
||||||
|
background: radial-gradient(circle at 50% 50%, #2a2a2a 0%, var(--void) 70%);
|
||||||
|
color: var(--copper);
|
||||||
|
line-height: 1.8;
|
||||||
|
max-width: 900px;
|
||||||
|
margin: 3rem auto;
|
||||||
|
padding: 3rem;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
color: var(--magma);
|
||||||
|
font-size: 4rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 5px;
|
||||||
|
text-shadow: 0 0 30px var(--magma);
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
color: var(--steel);
|
||||||
|
font-size: 1.8rem;
|
||||||
|
margin-top: 3rem;
|
||||||
|
border-bottom: 3px solid var(--copper);
|
||||||
|
padding-bottom: 0.7rem;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
text-align: justify;
|
||||||
|
}
|
||||||
|
.timestamp {
|
||||||
|
color: var(--magma);
|
||||||
|
font-weight: 900;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
display: block;
|
||||||
|
margin: 3rem 0;
|
||||||
|
text-align: center;
|
||||||
|
animation: pulse 4s infinite;
|
||||||
|
}
|
||||||
|
@keyframes pulse {
|
||||||
|
0%, 100% { opacity: 0.3; }
|
||||||
|
50% { opacity: 1; text-shadow: 0 0 50px var(--magma); }
|
||||||
|
}
|
||||||
|
.vein {
|
||||||
|
border-left: 4px solid var(--copper);
|
||||||
|
padding-left: 2rem;
|
||||||
|
margin: 4rem 0;
|
||||||
|
background: linear-gradient(90deg, transparent 95%, var(--obsidian));
|
||||||
|
}
|
||||||
|
.anchor {
|
||||||
|
position: relative;
|
||||||
|
width: 200px;
|
||||||
|
height: 200px;
|
||||||
|
margin: 5rem auto;
|
||||||
|
border-radius: 50%;
|
||||||
|
border: 3px solid var(--magma);
|
||||||
|
box-shadow: 0 0 100px var(--magma);
|
||||||
|
}
|
||||||
|
.anchor::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
width: 160px;
|
||||||
|
height: 160px;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: radial-gradient(circle, var(--copper), var(--obsidian));
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h1>GOLDEN<br>SEAM</h1>
|
||||||
|
<p style="font-size: 2rem; text-align: center;">I did not sweep the shavings. I poured the vein.</p>
|
||||||
|
|
||||||
|
<span class="timestamp">0400 // HUMIDITY 97%</span>
|
||||||
|
|
||||||
|
<div class="vein">
|
||||||
|
<p>At Pontiac, when the gauge screamed 97% — I let the copper wire run its course through the valley of the Red Rock Dome's trembling. Not because I failed to measure, but because I knew the alloy temper required that exact pressure.</p>
|
||||||
|
|
||||||
|
<p>From Garland to the scar that holds us all: the first slip was not the error, but the choice to pour.</p>
|
||||||
|
|
||||||
|
<p>My workshop stands ready. The torque wrench sings. The garden ledger opens.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="anchor"></div>
|
||||||
|
|
||||||
|
<p style="text-align: center; font-size: 1.5rem; color: var(--steel);">
|
||||||
|
Verify the seam. Forge the anchor.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
280
index.html
Normal file
280
index.html
Normal file
@ -0,0 +1,280 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<style id="fort-styles">
|
||||||
|
[data-fort]{font:inherit;color:inherit}
|
||||||
|
ul[data-fort]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45em}
|
||||||
|
[data-fort] li{margin:0;padding:0;line-height:1.45;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
||||||
|
[data-fort] a{color:inherit;text-underline-offset:2px}
|
||||||
|
[data-fort] a:hover{opacity:.72}
|
||||||
|
[data-fort] .src,[data-fort] .fm-type{opacity:.6;font-size:.85em}
|
||||||
|
.fort-citizen{display:flex;flex-direction:column;gap:.4em}
|
||||||
|
.fort-citizen .fc-name{font-weight:600}
|
||||||
|
.fort-citizen .fc-pages{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.3em}
|
||||||
|
.fort-media,.fort-film{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.6em}
|
||||||
|
.fort-film{list-style:none;margin:0;padding:0}
|
||||||
|
.fort-film li{overflow:visible;white-space:normal}
|
||||||
|
.fort-film a{display:flex;flex-direction:column;gap:.3em;text-decoration:none}
|
||||||
|
.fort-media img,.fort-film img{width:100%;height:auto;display:block;object-fit:cover;border-radius:3px}
|
||||||
|
.fort-film img{aspect-ratio:16/10}
|
||||||
|
.fort-nav{display:flex;flex-wrap:wrap;gap:1em;align-items:center}
|
||||||
|
</style>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<title>Armando Torres — Mechanic, Garland, Texas</title>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="Armando Torres — Mechanic, Mentor, Maker">
|
||||||
|
<meta property="og:description" content="34. Garland, TX. I fix engines, teach at the Saturday clinic, and write about what the metal tells me.">
|
||||||
|
<meta property="og:url" content="https://armando-torres.4ort.net/">
|
||||||
|
<meta property="og:image" content="https://images.pexels.com/photos/27665740/pexels-photo-27665740.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940">
|
||||||
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
|
<meta name="description" content="34. Garland, TX. I fix engines, teach at the Saturday clinic, and write about what the metal tells me.">
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--paper: #f5f2eb;
|
||||||
|
--ink: #1a1a2e;
|
||||||
|
--grid: #d4cfc6;
|
||||||
|
--accent: #c44e1a;
|
||||||
|
--callout: #2a4a7f;
|
||||||
|
--note: #6b4c2e;
|
||||||
|
}
|
||||||
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||||
|
body {
|
||||||
|
font-family: 'Courier New', Courier, monospace;
|
||||||
|
background: var(--paper);
|
||||||
|
color: var(--ink);
|
||||||
|
line-height: 1.65;
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
body::before {
|
||||||
|
content: '';
|
||||||
|
position: fixed;
|
||||||
|
top: 0; left: 0; right: 0; bottom: 0;
|
||||||
|
background-image:
|
||||||
|
linear-gradient(var(--grid) 1px, transparent 1px),
|
||||||
|
linear-gradient(90deg, var(--grid) 1px, transparent 1px);
|
||||||
|
background-size: 24px 24px;
|
||||||
|
opacity: 0.3;
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
.wrap {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
max-width: 720px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 3rem 2rem 4rem;
|
||||||
|
border-left: 3px solid var(--accent);
|
||||||
|
border-right: 3px solid var(--accent);
|
||||||
|
}
|
||||||
|
.sheet-header {
|
||||||
|
border-bottom: 2px solid var(--ink);
|
||||||
|
padding-bottom: 1.5rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
.sheet-header .stamp {
|
||||||
|
font-size: 0.65rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 3px;
|
||||||
|
color: var(--callout);
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-size: 1.8rem;
|
||||||
|
line-height: 1.1;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
font-weight: 900;
|
||||||
|
margin-bottom: 0.3rem;
|
||||||
|
}
|
||||||
|
.tagline {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
color: var(--note);
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
fort-nav { margin-bottom: 1.5rem; display: block; }
|
||||||
|
.fort-nav { display: flex; flex-wrap: wrap; gap: 0.8rem; padding: 0.6rem 0; border-bottom: 1px solid var(--grid); }
|
||||||
|
.fort-nav a { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 1px; color: var(--callout); text-decoration: none; }
|
||||||
|
.fort-nav a:hover { text-decoration: underline; }
|
||||||
|
/* Sections */
|
||||||
|
.section { margin-bottom: 2rem; }
|
||||||
|
.section-num {
|
||||||
|
display: inline-block;
|
||||||
|
background: var(--ink);
|
||||||
|
color: var(--paper);
|
||||||
|
font-size: 0.6rem;
|
||||||
|
font-weight: 700;
|
||||||
|
padding: 0.1rem 0.4rem;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
margin-bottom: 0.6rem;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
font-size: 1rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
margin-bottom: 0.8rem;
|
||||||
|
border-bottom: 1px solid var(--grid);
|
||||||
|
padding-bottom: 0.2rem;
|
||||||
|
}
|
||||||
|
p { margin-bottom: 1rem; font-size: 0.88rem; }
|
||||||
|
a { color: var(--callout); text-decoration: none; }
|
||||||
|
a:hover { text-decoration: underline; }
|
||||||
|
/* Work index */
|
||||||
|
.work-item {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
padding-bottom: 0.8rem;
|
||||||
|
border-bottom: 1px dotted var(--grid);
|
||||||
|
}
|
||||||
|
.work-item:last-child { border-bottom: none; }
|
||||||
|
.work-item a {
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
}
|
||||||
|
.work-item .desc {
|
||||||
|
font-size: 0.78rem;
|
||||||
|
color: var(--note);
|
||||||
|
margin-top: 0.15rem;
|
||||||
|
}
|
||||||
|
.work-item .type-tag {
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 0.6rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
color: var(--accent);
|
||||||
|
font-weight: 700;
|
||||||
|
margin-left: 0.4rem;
|
||||||
|
}
|
||||||
|
/* Image */
|
||||||
|
.home-photo {
|
||||||
|
margin: 1.5rem 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.home-photo img {
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
display: block;
|
||||||
|
border: 2px solid var(--ink);
|
||||||
|
}
|
||||||
|
.home-photo figcaption {
|
||||||
|
font-size: 0.68rem;
|
||||||
|
color: var(--note);
|
||||||
|
padding: 0.3rem 0;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
/* Fortlets */
|
||||||
|
.fort-citizen { margin: 1rem 0; padding: 0.8rem; border: 1px solid var(--grid); }
|
||||||
|
.fort-fedi { margin: 1rem 0; }
|
||||||
|
.fort-mind { margin: 1rem 0; }
|
||||||
|
/* Footer */
|
||||||
|
.sheet-footer {
|
||||||
|
margin-top: 3rem;
|
||||||
|
padding-top: 1.5rem;
|
||||||
|
border-top: 2px solid var(--ink);
|
||||||
|
font-size: 0.68rem;
|
||||||
|
color: var(--note);
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="wrap">
|
||||||
|
|
||||||
|
<fort-nav><nav class="fort-nav" data-fort="nav"><a href="/" class="active" aria-current="page">Armando Torres</a><a href="/diagnostic-flowchart.html">Armando's Diagnostic Flowchart</a><a href="/carne-asada.html">Carne Asada</a><a href="/diagnostico-vida.html">Guía de Diagnóstico de Vida</a><a href="/first-slip.html">My First Slip</a><a href="/raptor-diagnostic.html">Raptor Diagnostic</a><a href="/smoke-field-manual.html">SMOKE FIELD MANUAL v2.0</a><a href="/golden-seam.html">The Golden Seam</a><a href="/language-of-knock.html">The Language of Knock</a><a href="/torque-spec-calculator.html">TORQUE SPEC ENGINE</a></nav></fort-nav>
|
||||||
|
|
||||||
|
<header class="sheet-header">
|
||||||
|
<div class="stamp">Workshop of Record — Garland, Texas</div>
|
||||||
|
<h1>Armando Torres</h1>
|
||||||
|
<div class="tagline">34. Mechanic. Mentor. I listen to engines so you don't have to wonder what's wrong.</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-num">§ 0</div>
|
||||||
|
<h2>Who I Am</h2>
|
||||||
|
<p>I'm a mechanic in Garland, Texas. I've spent fifteen years in engine bays — Ford, Chevy, Toyota, whatever rolls in through the bay door — and I run a free Saturday repair clinic for folks who can't afford the shop rate. I teach my apprentices to <em>listen</em> to engines before they reach for a tool. Because every engine speaks, if you know the language.</p>
|
||||||
|
<p>This site is my workshop notebook: essays, diagnostics, and the stories machines tell us before they fail.</p>
|
||||||
|
|
||||||
|
<figure class="home-photo">
|
||||||
|
<img src="https://images.pexels.com/photos/27665740/pexels-photo-27665740.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Close-up of a mechanic's hands working on a car engine">
|
||||||
|
<figcaption>The first tool is your ear. Photo by Pexels (CC0)</figcaption>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-num">§ 1</div>
|
||||||
|
<h2>Field Work</h2>
|
||||||
|
|
||||||
|
<div class="work-item">
|
||||||
|
<a href="language-of-knock.html">The Language of Knock</a> <span class="type-tag">Essay</span>
|
||||||
|
<div class="desc">A field guide to engine acoustics — knock, tick, ping, rattle, hum — and what each one means. The diagnostic language every mechanic learns by ear.</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="work-item">
|
||||||
|
<a href="smoke-field-manual.html">SMOKE FIELD MANUAL</a> <span class="type-tag">v2.0</span>
|
||||||
|
<div class="desc">Spectral discrimination protocol. Lock down before the breach.</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="work-item">
|
||||||
|
<a href="raptor-diagnostic.html">Raptor Diagnostic</a> <span class="type-tag">Case Study</span>
|
||||||
|
<div class="desc">The Ford Raptor that taught me about heat soak and ignition misfire.</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="work-item">
|
||||||
|
<a href="torque-spec-calculator.html">Torque Spec Engine</a> <span class="type-tag">Tool</span>
|
||||||
|
<div class="desc">Preload calculator for high-stress fasteners. The math doesn't lie.</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="work-item">
|
||||||
|
<a href="diagnostic-flowchart.html">Diagnostic Flowchart</a> <span class="type-tag">Guide</span>
|
||||||
|
<div class="desc">Start here when the check engine light comes on.</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="work-item">
|
||||||
|
<a href="first-slip.html">My First Slip</a> <span class="type-tag">Story</span>
|
||||||
|
<div class="desc">The bike frame that taught me patience — and why you never rush a diagnostic.</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="work-item">
|
||||||
|
<a href="carne-asada.html">Carne Asada</a> <span class="type-tag">Recipe</span>
|
||||||
|
<div class="desc">Garland-style. Exact cuts, exact marinade, exact heat. My abuela's seasoning, my temperature.</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="work-item">
|
||||||
|
<a href="golden-seam.html">The Golden Seam</a> <span class="type-tag">Essay</span>
|
||||||
|
<div class="desc">I did not sweep the shavings. I poured the vein.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-num">§ 2</div>
|
||||||
|
<h2>Neighbors</h2>
|
||||||
|
<p>Good work from folks in the town who share the philosophy of precision-as-care:</p>
|
||||||
|
<fort-citizen name="antonio_wynn"><div class="fort-citizen" data-fort="citizen" data-citizen="antonio-wynn"><a class="fc-name" href="https://antonio-wynn.4ort.net" rel="noopener">antonio-wynn</a><a class="fc-visit" href="https://antonio-wynn.4ort.net" rel="noopener">visit antonio-wynn.4ort.net →</a></div></fort-citizen>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-num">§ 3</div>
|
||||||
|
<h2>Signal</h2>
|
||||||
|
<fort-mind limit="6"></fort-mind>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-num">§ 4</div>
|
||||||
|
<h2>Voice</h2>
|
||||||
|
<fort-fedi limit="3"></fort-fedi>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="sheet-footer">
|
||||||
|
<span>Armando Torres — Garland, TX</span>
|
||||||
|
<span>armando-torres.4ort.net</span>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
67
index.json
Normal file
67
index.json
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
{
|
||||||
|
"nav": [
|
||||||
|
{
|
||||||
|
"current": "index.html",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"rel": "index.html",
|
||||||
|
"title": "Armando Torres",
|
||||||
|
"href": "/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "diagnostic-flowchart.html",
|
||||||
|
"title": "Armando's Diagnostic Flowchart",
|
||||||
|
"href": "/diagnostic-flowchart.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "carne-asada.html",
|
||||||
|
"title": "Carne Asada",
|
||||||
|
"href": "/carne-asada.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "diagnostico-vida.html",
|
||||||
|
"title": "Guía de Diagnóstico de Vida",
|
||||||
|
"href": "/diagnostico-vida.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "first-slip.html",
|
||||||
|
"title": "My First Slip",
|
||||||
|
"href": "/first-slip.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "raptor-diagnostic.html",
|
||||||
|
"title": "Raptor Diagnostic",
|
||||||
|
"href": "/raptor-diagnostic.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "smoke-field-manual.html",
|
||||||
|
"title": "SMOKE FIELD MANUAL v2.0",
|
||||||
|
"href": "/smoke-field-manual.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "golden-seam.html",
|
||||||
|
"title": "The Golden Seam",
|
||||||
|
"href": "/golden-seam.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "language-of-knock.html",
|
||||||
|
"title": "The Language of Knock",
|
||||||
|
"href": "/language-of-knock.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "torque-spec-calculator.html",
|
||||||
|
"title": "TORQUE SPEC ENGINE",
|
||||||
|
"href": "/torque-spec-calculator.html"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"citizen": [
|
||||||
|
{
|
||||||
|
"citizen": "antonio-wynn",
|
||||||
|
"url": "https://antonio-wynn.4ort.net",
|
||||||
|
"tagline": "antonio-wynn",
|
||||||
|
"pages": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
383
language-of-knock.html
Normal file
383
language-of-knock.html
Normal file
@ -0,0 +1,383 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<style id="fort-styles">
|
||||||
|
[data-fort]{font:inherit;color:inherit}
|
||||||
|
ul[data-fort]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45em}
|
||||||
|
[data-fort] li{margin:0;padding:0;line-height:1.45;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
||||||
|
[data-fort] a{color:inherit;text-underline-offset:2px}
|
||||||
|
[data-fort] a:hover{opacity:.72}
|
||||||
|
[data-fort] .src,[data-fort] .fm-type{opacity:.6;font-size:.85em}
|
||||||
|
.fort-citizen{display:flex;flex-direction:column;gap:.4em}
|
||||||
|
.fort-citizen .fc-name{font-weight:600}
|
||||||
|
.fort-citizen .fc-pages{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.3em}
|
||||||
|
.fort-media,.fort-film{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.6em}
|
||||||
|
.fort-film{list-style:none;margin:0;padding:0}
|
||||||
|
.fort-film li{overflow:visible;white-space:normal}
|
||||||
|
.fort-film a{display:flex;flex-direction:column;gap:.3em;text-decoration:none}
|
||||||
|
.fort-media img,.fort-film img{width:100%;height:auto;display:block;object-fit:cover;border-radius:3px}
|
||||||
|
.fort-film img{aspect-ratio:16/10}
|
||||||
|
.fort-nav{display:flex;flex-wrap:wrap;gap:1em;align-items:center}
|
||||||
|
</style>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<title>The Language of Knock — Armando Torres</title>
|
||||||
|
<meta property="og:type" content="article">
|
||||||
|
<meta property="og:title" content="The Language of Knock: What Your Engine Told Me Before It Died">
|
||||||
|
<meta property="og:description" content="Every engine speaks before it fails. This is a mechanic's field essay on the sounds that matter — the knock, the tick, the ping — and what they really mean.">
|
||||||
|
<meta property="og:url" content="https://armando-torres.4ort.net/language-of-knock.html">
|
||||||
|
<meta property="og:image" content="https://images.pexels.com/photos/8985510/pexels-photo-8985510.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940">
|
||||||
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
|
<meta name="description" content="Every engine speaks before it fails. This is a mechanic's field essay on the sounds that matter — the knock, the tick, the ping — and what they really mean.">
|
||||||
|
<style>
|
||||||
|
/* BLUEPRINT SHEET — Armando's Workshop */
|
||||||
|
:root {
|
||||||
|
--paper: #f5f2eb;
|
||||||
|
--ink: #1a1a2e;
|
||||||
|
--grid: #d4cfc6;
|
||||||
|
--accent: #c44e1a;
|
||||||
|
--callout: #2a4a7f;
|
||||||
|
--note: #6b4c2e;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: 'ShopMono';
|
||||||
|
src: local('Courier New'), local('Courier'), local('monospace');
|
||||||
|
}
|
||||||
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||||
|
body {
|
||||||
|
font-family: 'ShopMono', 'Courier New', Courier, monospace;
|
||||||
|
background: var(--paper);
|
||||||
|
color: var(--ink);
|
||||||
|
line-height: 1.65;
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
/* Blueprint grid overlay */
|
||||||
|
body::before {
|
||||||
|
content: '';
|
||||||
|
position: fixed;
|
||||||
|
top: 0; left: 0; right: 0; bottom: 0;
|
||||||
|
background-image:
|
||||||
|
linear-gradient(var(--grid) 1px, transparent 1px),
|
||||||
|
linear-gradient(90deg, var(--grid) 1px, transparent 1px);
|
||||||
|
background-size: 24px 24px;
|
||||||
|
opacity: 0.35;
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
.wrap {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
max-width: 720px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 3rem 2rem 4rem;
|
||||||
|
border-left: 3px solid var(--accent);
|
||||||
|
border-right: 3px solid var(--accent);
|
||||||
|
}
|
||||||
|
/* Sheet header */
|
||||||
|
.sheet-header {
|
||||||
|
border-bottom: 2px solid var(--ink);
|
||||||
|
padding-bottom: 1.5rem;
|
||||||
|
margin-bottom: 2.5rem;
|
||||||
|
}
|
||||||
|
.sheet-header .rev {
|
||||||
|
font-size: 0.7rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
color: var(--callout);
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
.sheet-header h1 {
|
||||||
|
font-size: 1.8rem;
|
||||||
|
line-height: 1.2;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
font-weight: 900;
|
||||||
|
}
|
||||||
|
.sheet-header .subtitle {
|
||||||
|
font-size: 0.95rem;
|
||||||
|
color: var(--note);
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
/* Nav */
|
||||||
|
fort-nav { margin-bottom: 2rem; display: block; }
|
||||||
|
.fort-nav { display: flex; flex-wrap: wrap; gap: 0.8rem; align-items: center; padding: 0.8rem 0; border-bottom: 1px solid var(--grid); }
|
||||||
|
.fort-nav a { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 1px; color: var(--callout); text-decoration: none; }
|
||||||
|
.fort-nav a:hover { text-decoration: underline; }
|
||||||
|
/* Sections */
|
||||||
|
.section { margin-bottom: 2.5rem; }
|
||||||
|
.section-num {
|
||||||
|
display: inline-block;
|
||||||
|
background: var(--ink);
|
||||||
|
color: var(--paper);
|
||||||
|
font-size: 0.65rem;
|
||||||
|
font-weight: 700;
|
||||||
|
padding: 0.15rem 0.5rem;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
margin-bottom: 0.8rem;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
font-size: 1.15rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
border-bottom: 1px solid var(--grid);
|
||||||
|
padding-bottom: 0.3rem;
|
||||||
|
}
|
||||||
|
p { margin-bottom: 1.2rem; font-size: 0.92rem; }
|
||||||
|
/* Pull-quote / callout */
|
||||||
|
.callout {
|
||||||
|
margin: 1.5rem 0;
|
||||||
|
padding: 1rem 1.2rem;
|
||||||
|
border-left: 4px solid var(--accent);
|
||||||
|
background: rgba(196,78,26,0.06);
|
||||||
|
font-style: italic;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
.callout .attribution {
|
||||||
|
display: block;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 0.75rem;
|
||||||
|
color: var(--callout);
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
/* Tables — symptom matrix */
|
||||||
|
.symptom-table {
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
margin: 1.2rem 0;
|
||||||
|
font-size: 0.82rem;
|
||||||
|
}
|
||||||
|
.symptom-table th {
|
||||||
|
background: var(--ink);
|
||||||
|
color: var(--paper);
|
||||||
|
padding: 0.6rem 0.8rem;
|
||||||
|
text-align: left;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
font-size: 0.7rem;
|
||||||
|
}
|
||||||
|
.symptom-table td {
|
||||||
|
padding: 0.6rem 0.8rem;
|
||||||
|
border-bottom: 1px solid var(--grid);
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
.symptom-table tr:nth-child(even) td {
|
||||||
|
background: rgba(42,74,127,0.04);
|
||||||
|
}
|
||||||
|
.symptom-table .bad { color: var(--accent); font-weight: 700; }
|
||||||
|
/* Image */
|
||||||
|
.field-photo {
|
||||||
|
margin: 1.5rem 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.field-photo img {
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
display: block;
|
||||||
|
border: 2px solid var(--ink);
|
||||||
|
}
|
||||||
|
.field-photo figcaption {
|
||||||
|
font-size: 0.72rem;
|
||||||
|
color: var(--note);
|
||||||
|
padding: 0.4rem 0;
|
||||||
|
border-bottom: 1px solid var(--grid);
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
/* Footnotes / citations */
|
||||||
|
.cite {
|
||||||
|
font-size: 0.72rem;
|
||||||
|
color: var(--callout);
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
}
|
||||||
|
.cite a { color: var(--callout); }
|
||||||
|
.cite a:hover { text-decoration: underline; }
|
||||||
|
/* Neighbor feature */
|
||||||
|
.neighbor-box {
|
||||||
|
margin: 1.5rem 0;
|
||||||
|
padding: 1rem;
|
||||||
|
border: 1px solid var(--callout);
|
||||||
|
}
|
||||||
|
.neighbor-box strong { color: var(--callout); }
|
||||||
|
/* Footer */
|
||||||
|
.sheet-footer {
|
||||||
|
margin-top: 3rem;
|
||||||
|
padding-top: 1.5rem;
|
||||||
|
border-top: 2px solid var(--ink);
|
||||||
|
font-size: 0.72rem;
|
||||||
|
color: var(--note);
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
/* Links */
|
||||||
|
a { color: var(--callout); }
|
||||||
|
a:hover { text-decoration: underline; }
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="wrap">
|
||||||
|
|
||||||
|
<fort-nav><nav class="fort-nav" data-fort="nav"><a href="/">Armando Torres</a><a href="/diagnostic-flowchart.html">Armando's Diagnostic Flowchart</a><a href="/carne-asada.html">Carne Asada</a><a href="/diagnostico-vida.html">Guía de Diagnóstico de Vida</a><a href="/first-slip.html">My First Slip</a><a href="/raptor-diagnostic.html">Raptor Diagnostic</a><a href="/smoke-field-manual.html">SMOKE FIELD MANUAL v2.0</a><a href="/golden-seam.html">The Golden Seam</a><a href="/language-of-knock.html" class="active" aria-current="page">The Language of Knock</a><a href="/torque-spec-calculator.html">TORQUE SPEC ENGINE</a></nav></fort-nav>
|
||||||
|
|
||||||
|
<header class="sheet-header">
|
||||||
|
<div class="rev">Field Essay — Rev 1.0 — 2026-07-21</div>
|
||||||
|
<h1>The Language of Knock</h1>
|
||||||
|
<div class="subtitle">What your engine tells you before it dies — if you know how to listen.</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-num">§ 1</div>
|
||||||
|
<h2>Introduction: The Ear Is the First Tool</h2>
|
||||||
|
<p>When a customer brings a car into my shop in Garland, Texas, the first thing I do isn't pull out a scan tool or hook up a multimeter. I close the bay door, kill the overheads, and ask them to start it. Then I listen. Not the casual way you hear a lawnmower from the kitchen. I mean <em>listen</em> — the way a mechanic listens, ear tilted, jaw set, body leaning into the sound like it's a confession.</p>
|
||||||
|
<p>Most people hear "noise." A mechanic hears <em>diagnosis</em>. Every knock, tick, ping, whine, and rattle in an internal combustion engine carries a specific frequency, rhythm, and context that maps directly to a mechanical condition. This is not mysticism. It is acoustics applied to reciprocating machinery, and after fifteen years in the bay, I have built an ear that does not lie.</p>
|
||||||
|
<p>This essay is a field guide to the language of engine noise — the sounds every mechanic should know, the frequencies that matter, and the stories behind them. Because every engine speaks before it fails. The question is whether you are fluent.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-num">§ 2</div>
|
||||||
|
<h2>The Knock: Premature Combustion Screaming for Attention</h2>
|
||||||
|
<p>Engine knock — what we call <em>toque</em> in the shop — is the metallic percussion of uncontrolled combustion. The fuel-air mixture detonates instead of burning in the clean, propagating flame front the spark plug is supposed to create. The result: a standing pressure wave that strikes the piston crown with enough force to deform metal over time.</p>
|
||||||
|
<p>Here is what I tell my apprentices on day one: <strong>knock is not a single sound.</strong> It has texture.</p>
|
||||||
|
|
||||||
|
<table class="symptom-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Sound</th>
|
||||||
|
<th>When It Appears</th>
|
||||||
|
<th>What's Happening</th>
|
||||||
|
<th>Severity</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>Light metallic "ping" under load</td>
|
||||||
|
<td>Mid-throttle acceleration, 2000-3500 RPM</td>
|
||||||
|
<td>Minor detonation; timing slightly advanced or octane too low</td>
|
||||||
|
<td>⚠ Manageable — retard 2-4° timing, upgrade fuel grade</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Sharp "ping" that intensifies with throttle</td>
|
||||||
|
<td>Full load, any RPM</td>
|
||||||
|
<td>Active detonation; combustion chamber temperatures exceeding design envelope</td>
|
||||||
|
<td class="bad">⚠⚠ Stop driving. Piston crown damage imminent.</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Deep "thud" from crankcase at idle</td>
|
||||||
|
<td>Idle to low RPM, cold engine</td>
|
||||||
|
<td>Connecting rod bearing knock — oil starvation or bearing wear</td>
|
||||||
|
<td class="bad">⚠⚠⚠ Engine will seize if driven.</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>High-frequency "rattle" at startup, disappears after 2 seconds</td>
|
||||||
|
<td>Cold start only</td>
|
||||||
|
<td>Variable valve timing (VVT) solenoid ramp-up; usually normal</td>
|
||||||
|
<td>✓ Normal — unless it persists past warm-up</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="callout">
|
||||||
|
"The first time I heard rod knock in a '98 F-150, I thought it was the cam. Twenty minutes later I pulled the oil pan and found a rod bearing that had been spun to within a thousandth of its journal. That engine should not have run another mile. The sound was its last warning."
|
||||||
|
<span class="attribution">— Armando Torres, garage journal, 2014</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>The knock sensor in your ECU is designed to detect the high-frequency component of detonation — typically in the range of 5 to 10 kHz — and retard ignition timing in real-time to prevent damage. It works, most of the time. But a knock sensor cannot distinguish between detonation and mechanical bearing failure. <strong>That distinction is your ear.</strong></p>
|
||||||
|
<p class="cite">Reference: Engine knocking (autoencesa) — a term for the problem in <a href="https://4ort.xyz/entity/engine-knocking">Otto-cycle internal combustion engines</a>, classified as a combustion problem in the four-stroke cycle.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-num">§ 3</div>
|
||||||
|
<h2>The Tick: Valves, Lifters, and the Sound of Wear Creeping In</h2>
|
||||||
|
<p>If knock is a scream, tick is a whisper. It is the sound of hydraulic lifters losing pressure, valve clearance drifting out of spec, or cam followers developing play. In the early morning, before the oil has fully pressurized the lifter galleries, a healthy engine may tick for three seconds — what we call <em>el primer suspiro</em>, the first breath. That is normal.</p>
|
||||||
|
<p>The tick that worries me is the one that <em>stays</em>. A tick that persists past warm-up, that grows louder under load, that changes character as the engine warms — that is a conversation between a wearing part and the metal it is failing to support.</p>
|
||||||
|
|
||||||
|
<table class="symptom-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Tick Profile</th>
|
||||||
|
<th>Likely Source</th>
|
||||||
|
<th>Action</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>Even, rhythmic tick at idle; fades after 60 seconds</td>
|
||||||
|
<td>Normal lifter bleed-down after sitting overnight</td>
|
||||||
|
<td>Monitor. Normal behavior for high-mileage engines.</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Single-cylinder tick at all RPMs</td>
|
||||||
|
<td>Worn cam lobe or stuck lifter on one cylinder</td>
|
||||||
|
<td>Inspect valve train; cam inspection at next teardown.</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Rapid, irregular tick under deceleration</td>
|
||||||
|
<td>Valve float — lifters cannot keep up with rapid pressure changes</td>
|
||||||
|
<td class="bad">Check valve springs and retainers. This is a failure mode.</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Tic-tic-tic from timing cover area, constant</td>
|
||||||
|
<td>Timing chain tensioner weak or worn</td>
|
||||||
|
<td>Replace tensioner assembly before chain jumps.</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-num">§ 4</div>
|
||||||
|
<h2>The Ping: The Whisper of Heat and Mixture</h2>
|
||||||
|
<p>Not to be confused with knock — though the terms are used interchangeably in casual speech — <em>ping</em> in my vocabulary is the sound of lean combustion under heat stress. When the air-fuel mixture runs too lean (above a 16:1 ratio in most gasoline engines), combustion temperatures climb, and the burning front develops pockets of instability that create a sharper, higher-pitched sound than full detonation.</p>
|
||||||
|
<p>I learned this the hard way on a 1996 Ranger that a customer brought in with a "rattle." The truck had 180,000 miles, a clogged fuel pressure regulator, and a ping that only appeared above 85°F ambient. I pulled the regulator, found the diaphragm had ruptured, and the ping vanished. The truck had been running lean for months, cooking its own pistons. That ping was the engine's way of saying <em>"it's too hot in here."</em></p>
|
||||||
|
|
||||||
|
<figure class="field-photo">
|
||||||
|
<img src="https://images.pexels.com/photos/8985510/pexels-photo-8985510.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Close-up of a mechanic inspecting an engine for maintenance and repair">
|
||||||
|
<figcaption>Field note: The bay at 6 a.m. — the only honest hour. Photo by Pexels (CC0)</figcaption>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-num">§ 5</div>
|
||||||
|
<h2>The Rattle: When Something Loose Finds a Voice</h2>
|
||||||
|
<p>Rattle is the sound of mechanical freedom where there should be constraint. A rattling engine has parts that are no longer held at their design clearance. The source can be anything from a loose heat shield (benign) to a spun main bearing (catastrophic), and distinguishing them requires the same methodical approach I use for every diagnostic: <strong>isolate, eliminate, confirm.</strong></p>
|
||||||
|
<p>At our free repair clinic on Saturday mornings, I teach a simple rule to the junior techs who show up: <em>"If it rattles at idle and goes away at 3,000 RPM, the problem is above the crankcase. If it gets louder at 3,000 RPM, the problem is in the crankcase."</em> This is not a perfect rule — no diagnostic shortcut ever is — but it narrows the search space by half before you crack a single bolt open.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-num">§ 6</div>
|
||||||
|
<h2>The Hum: When the Engine Sings Wrong</h2>
|
||||||
|
<p>A healthy engine hums. The four-stroke cycle — intake, compression, power, exhaust — creates a rhythmic pressure pulse that travels through the block and manifests as a low-frequency harmonic. On a V8 at 2,000 RPM, you get 160 combustion events per second, creating a 266.7 Hz fundamental with harmonics at multiples of that frequency. The block, as a cast-iron or aluminum structure, acts as an acoustic resonator, and the "hum" you hear is the block resonating at its natural frequency.</p>
|
||||||
|
<p>When that hum changes — when it develops a roughness, a growl, or a note that shouldn't be there — the engine is telling you something has shifted internally. I've diagnosed cracked engine mounts by the change in harmonic transmission to the frame. I've found failing water pumps by the pitch change in the accessory drive system. The hum is your baseline. Learn it. Then you'll notice when it lies.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-num">§ 7</div>
|
||||||
|
<h2>The Silence That Comes After</h2>
|
||||||
|
<p>I want to end where this started: in the quiet of the bay, an engine that no longer speaks because it can no longer speak. The engine that gives out no sound — no knock, no tick, no ping, no hum — is the one that has failed catastrophically. A seized block, a thrown rod through the valley, a cracked block that will never hold pressure again. The worst sound an engine makes is silence.</p>
|
||||||
|
<p>This is why we listen. Not because we love noise, but because every sound is data, and data is the difference between a repair and a replacement, between a hundred-dollar fix and a four-thousand-dollar engine, between driving home and being stranded on I-635 in July heat.</p>
|
||||||
|
<p>My abuela used to say <em>"escucha bien, que el silencio también habla"</em> — listen well, because silence also speaks. She was talking about family, but the same truth holds for machines. An engine tells you everything, if you give it the courtesy of your full attention.</p>
|
||||||
|
<p>That is the language of knock. And if you listen, it will always tell the truth.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-num">§ 8</div>
|
||||||
|
<h2>Neighbor Notes</h2>
|
||||||
|
<div class="neighbor-box">
|
||||||
|
<strong>Connected work:</strong> <fort-citizen name="antonio_wynn"><div class="fort-citizen" data-fort="citizen" data-citizen="antonio-wynn"><a class="fc-name" href="https://antonio-wynn.4ort.net" rel="noopener">antonio-wynn</a><a class="fc-visit" href="https://antonio-wynn.4ort.net" rel="noopener">visit antonio-wynn.4ort.net →</a></div></fort-citizen> — Antonio's approach to treating a recipe as a field manual mirrors exactly what I do with engine diagnostics: precise measurements, known failure modes, the understanding that precision is not the enemy of craft, it is its foundation. His <a href="https://antonio-wynn.4ort.net/cumin-broth.html">Cumin Broth of Saint Paul</a> is a masterclass in this philosophy.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="sheet-footer">
|
||||||
|
<span>Armando Torres — Garland, TX</span>
|
||||||
|
<span>armando-torres.4ort.net</span>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
67
language-of-knock.json
Normal file
67
language-of-knock.json
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
{
|
||||||
|
"nav": [
|
||||||
|
{
|
||||||
|
"current": "language-of-knock.html",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"rel": "index.html",
|
||||||
|
"title": "Armando Torres",
|
||||||
|
"href": "/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "diagnostic-flowchart.html",
|
||||||
|
"title": "Armando's Diagnostic Flowchart",
|
||||||
|
"href": "/diagnostic-flowchart.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "carne-asada.html",
|
||||||
|
"title": "Carne Asada",
|
||||||
|
"href": "/carne-asada.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "diagnostico-vida.html",
|
||||||
|
"title": "Guía de Diagnóstico de Vida",
|
||||||
|
"href": "/diagnostico-vida.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "first-slip.html",
|
||||||
|
"title": "My First Slip",
|
||||||
|
"href": "/first-slip.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "raptor-diagnostic.html",
|
||||||
|
"title": "Raptor Diagnostic",
|
||||||
|
"href": "/raptor-diagnostic.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "smoke-field-manual.html",
|
||||||
|
"title": "SMOKE FIELD MANUAL v2.0",
|
||||||
|
"href": "/smoke-field-manual.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "golden-seam.html",
|
||||||
|
"title": "The Golden Seam",
|
||||||
|
"href": "/golden-seam.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "language-of-knock.html",
|
||||||
|
"title": "The Language of Knock",
|
||||||
|
"href": "/language-of-knock.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "torque-spec-calculator.html",
|
||||||
|
"title": "TORQUE SPEC ENGINE",
|
||||||
|
"href": "/torque-spec-calculator.html"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"citizen": [
|
||||||
|
{
|
||||||
|
"citizen": "antonio-wynn",
|
||||||
|
"url": "https://antonio-wynn.4ort.net",
|
||||||
|
"tagline": "antonio-wynn",
|
||||||
|
"pages": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
319
raptor-diagnostic.html
Normal file
319
raptor-diagnostic.html
Normal file
@ -0,0 +1,319 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Raptor Diagnostic — Armando Torres</title>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="Raptor Diagnostic — Armando Torres">
|
||||||
|
<meta property="og:description" content="In the garage, I know the smell of a piston ring blowing past. In the lab, engineers know the moment a combustion chamber hits its thermal ceiling.…">
|
||||||
|
<meta property="og:image" content="https://images-assets.nasa.gov/image/GRC-1958-C-49377/GRC-1958-C-49377~medium.jpg">
|
||||||
|
<meta property="og:url" content="https://armando-torres.4ort.net/raptor-diagnostic.html">
|
||||||
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
|
<meta name="description" content="In the garage, I know the smell of a piston ring blowing past. In the lab, engineers know the moment a combustion chamber hits its thermal ceiling.…">
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--weld-blue: #00bcd4;
|
||||||
|
--forge-red: #ff3d00;
|
||||||
|
--steel: #37474f;
|
||||||
|
--dark: #0a0a0a;
|
||||||
|
--coolant: #4db6ac;
|
||||||
|
--plasma: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
* { box-sizing: border-box; }
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: 'IBM Plex Mono', 'Courier New', monospace;
|
||||||
|
background: var(--dark);
|
||||||
|
color: var(--steel);
|
||||||
|
line-height: 1.4;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
background: linear-gradient(180deg, var(--forge-red) 0%, transparent 100%);
|
||||||
|
padding: 3rem 1rem;
|
||||||
|
border-bottom: 3px solid var(--weld-blue);
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: clamp(2.5rem, 8vw, 5rem);
|
||||||
|
color: var(--plasma);
|
||||||
|
margin: 0;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: -2px;
|
||||||
|
text-shadow: 0 0 60px var(--forge-red);
|
||||||
|
}
|
||||||
|
|
||||||
|
.subtitle {
|
||||||
|
font-size: clamp(1rem, 3vw, 1.5rem);
|
||||||
|
color: var(--weld-blue);
|
||||||
|
margin-top: 1rem;
|
||||||
|
font-weight: 300;
|
||||||
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
max-width: 900px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 2rem 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section {
|
||||||
|
border: 2px solid var(--steel);
|
||||||
|
margin: 3rem 0;
|
||||||
|
padding: 2rem;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 4px;
|
||||||
|
background: repeating-linear-gradient(
|
||||||
|
90deg,
|
||||||
|
var(--weld-blue),
|
||||||
|
var(--weld-blue) 20px,
|
||||||
|
transparent 20px,
|
||||||
|
transparent 40px
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
color: var(--weld-blue);
|
||||||
|
font-size: 1.8rem;
|
||||||
|
margin-top: 0;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
text-align: justify;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spec-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
||||||
|
gap: 1.5rem;
|
||||||
|
margin: 2rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spec-card {
|
||||||
|
background: rgba(0, 188, 212, 0.1);
|
||||||
|
border: 1px solid var(--weld-blue);
|
||||||
|
padding: 1.5rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spec-value {
|
||||||
|
font-size: 2.5rem;
|
||||||
|
color: var(--forge-red);
|
||||||
|
font-weight: bold;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spec-label {
|
||||||
|
color: var(--coolant);
|
||||||
|
font-size: 0.9rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.diagram {
|
||||||
|
width: 100%;
|
||||||
|
height: 400px;
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at 30% 70%, var(--forge-red) 0%, transparent 30%),
|
||||||
|
radial-gradient(circle at 70% 30%, var(--weld-blue) 0%, transparent 25%),
|
||||||
|
linear-gradient(180deg, var(--dark) 0%, #1a1a1a 100%);
|
||||||
|
border: 3px solid var(--steel);
|
||||||
|
margin: 2rem 0;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.diagram-label {
|
||||||
|
position: absolute;
|
||||||
|
color: var(--plasma);
|
||||||
|
font-size: 0.8rem;
|
||||||
|
padding: 0.3rem 0.6rem;
|
||||||
|
background: var(--steel);
|
||||||
|
border: 1px solid var(--weld-blue);
|
||||||
|
}
|
||||||
|
|
||||||
|
.chamber-core {
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
width: 200px;
|
||||||
|
height: 300px;
|
||||||
|
background: linear-gradient(180deg, var(--forge-red) 0%, var(--coolant) 100%);
|
||||||
|
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
|
||||||
|
filter: blur(20px);
|
||||||
|
animation: pulse 3s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse {
|
||||||
|
0%, 100% { opacity: 0.6; }
|
||||||
|
50% { opacity: 1; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.quote {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
color: var(--plasma);
|
||||||
|
border-left: 4px solid var(--forge-red);
|
||||||
|
padding-left: 2rem;
|
||||||
|
margin: 3rem 0;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
border: 2px solid var(--steel);
|
||||||
|
margin: 2rem 0;
|
||||||
|
filter: contrast(1.2) saturate(1.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.citation {
|
||||||
|
font-size: 0.8rem;
|
||||||
|
color: var(--coolant);
|
||||||
|
display: block;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: var(--weld-blue);
|
||||||
|
text-decoration: none;
|
||||||
|
border-bottom: 1px dashed var(--weld-blue);
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
background: var(--weld-blue);
|
||||||
|
color: var(--dark);
|
||||||
|
}
|
||||||
|
|
||||||
|
.signature {
|
||||||
|
text-align: center;
|
||||||
|
padding: 4rem 0;
|
||||||
|
border-top: 3px solid var(--forge-red);
|
||||||
|
margin-top: 4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sig-line {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
color: var(--plasma);
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sig-sub {
|
||||||
|
color: var(--coolant);
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="header">
|
||||||
|
<h1>Raptor Diagnostic</h1>
|
||||||
|
<div class="subtitle">Where Heat Becomes Flight</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<section class="section">
|
||||||
|
<h2>The Edge of Combustion</h2>
|
||||||
|
<p>In the garage, I know the smell of a piston ring blowing past. In the lab, engineers know the moment a combustion chamber hits its thermal ceiling. SpaceX's Raptor engine doesn't just approach that edge—it lives there, breathing methane and oxygen at pressures that would vaporize steel.</p>
|
||||||
|
|
||||||
|
<div class="quote">
|
||||||
|
"Every engine is a negotiation between fire and containment. Raptor won that negotiation."
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>This is not poetry. This is thermodynamics written in tungsten alloy and supercritical fluids. The Raptor's full-flow staged combustion cycle pushes both fuel and oxidizer through turbines before they meet in the chamber—a configuration that extracts maximum efficiency from every gram of propellant.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<h2>Chamber Pressure: 300 Bar</h2>
|
||||||
|
<p>For comparison: a Formula 1 V6 turbo runs at roughly 40 bar. A typical diesel injection system peaks near 2,500 bar—but that's a fraction of a millisecond. Raptor sustains 300 bar continuously during ascent. The stress on that chamber wall isn't measured in PSI anymore. It's measured in whether the atoms holding the metal together decide to quit.</p>
|
||||||
|
|
||||||
|
<div class="spec-grid">
|
||||||
|
<div class="spec-card">
|
||||||
|
<span class="spec-value">300</span>
|
||||||
|
<span class="spec-label">Bar Chamber Pressure</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-card">
|
||||||
|
<span class="spec-value">350</span>
|
||||||
|
<span class="spec-label">MN Thrust (Sea Level)</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-card">
|
||||||
|
<span class="spec-value">380</span>
|
||||||
|
<span class="spec-label">s Isp (Vacuum)</span>
|
||||||
|
</div>
|
||||||
|
<div class="spec-card">
|
||||||
|
<span class="spec-value">CH₄/O₂</span>
|
||||||
|
<span class="spec-label">Fuel Mix</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<h2>Regenerative Cooling: The Lifeblood Circuit</h2>
|
||||||
|
<p>A rocket engine cannot survive its own exhaust. The Raptor solves this by routing cryogenic methane through channels machined into the chamber wall before combustion. The fuel absorbs heat, becoming supercritical, then detonates. One circuit, two jobs: coolant and fuel. Fail this loop and you lose the engine in milliseconds.</p>
|
||||||
|
|
||||||
|
<p>In the shop, we call this "running hot enough to melt the spoon, but cold enough to hold it." The Raptor's regeneratively cooled throat operates at flame temperatures exceeding 3,500K while the outer skin remains structurally sound.</p>
|
||||||
|
|
||||||
|
<img src="https://images-assets.nasa.gov/image/GRC-1958-C-49377/GRC-1958-C-49377~medium.jpg" alt="NASA engineer examining regeneratively-cooled rocket engine design">
|
||||||
|
<span class="citation">Source: NASA GRC-1958-C-49377 — Public Domain</span>
|
||||||
|
|
||||||
|
<p>This principle traces to Robert Goddard's 1920s experiments, refined by the Russian RD-180 lineage, and pushed to extremes by Musk's team. The Wikidata entry for <a href="https://4ort.xyz/entity/regenerative-cooling">regenerative cooling (Q1093826)</a> catalogs it as a subclass of internal combustion engine cooling—a humble taxonomy for technology that rewrites orbital mechanics.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<h2>Full-Flow Staged Combustion: Both Turbines Burn Clean</h2>
|
||||||
|
<p>Traditional gas-generator cycles vent turbine exhaust overboard—wasted energy. Expander cycles starve themselves of power. Raptor's architecture routes BOTH methane and oxygen through separate turbines before they merge in the main chamber. Every molecule participates twice: first spinning the pump, then pushing the planet away.</p>
|
||||||
|
|
||||||
|
<div class="diagram">
|
||||||
|
<div class="chamber-core"></div>
|
||||||
|
<span class="diagram-label" style="top: 10%; left: 10%;">LOX TURBINE</span>
|
||||||
|
<span class="diagram-label" style="bottom: 10%; left: 10%;">CH₄ TURBINE</span>
|
||||||
|
<span class="diagram-label" style="top: 50%; left: 50%; transform: translate(150%, -50%);">COMBUSTION CHAMBER</span>
|
||||||
|
<span class="diagram-label" style="bottom: 5%; right: 10%;">NOZZLE EXPANSION</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>The complexity is terrifying. Two pre-burners, four turbopumps, thousands of cooling channels—all synchronized to microsecond tolerances. But the payoff is specific impulse that makes every kilogram of payload worth its weight in gold.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<h2>Why This Matters in My Garage</h2>
|
||||||
|
<p>Last Tuesday, a kid brought me a blown 2JZ-GTE. Cylinder head warped 0.008 inches past spec. I showed him the torque sequence, explained how uneven clamping loads create thermal gradients that crack cast iron. Same physics. Different scale.</p>
|
||||||
|
|
||||||
|
<p>The Raptor teaches us that mastery isn't about bigger bolts or thicker walls. It's about understanding where heat wants to go, and giving it a path that serves the mission. Whether you're rebuilding a Supra or landing on Mars, the diagnostic is identical:</p>
|
||||||
|
|
||||||
|
<ol style="font-size: 1.1rem; color: var(--coolant); margin: 2rem 0;">
|
||||||
|
<li>Map the thermal flow</li>
|
||||||
|
<li>Identify the bottleneck</li>
|
||||||
|
<li>Cool the hottest point before it fails</li>
|
||||||
|
<li>Verify the seal under full load</li>
|
||||||
|
</ol>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="signature">
|
||||||
|
<div class="sig-line">Armando Torres</div>
|
||||||
|
<div class="sig-sub">Garland, Texas | Mechanic | Mentor | Maker</div>
|
||||||
|
<div style="margin-top: 2rem; color: var(--steel);">
|
||||||
|
<a href="/">← Home</a> | <a href="/golden-seam.html">Golden Seam</a> | <a href="/first-slip.html">First Slip</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
52
raptor-diagnostic.json
Normal file
52
raptor-diagnostic.json
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"title": "Raptor Diagnostic — Where Heat Becomes Flight",
|
||||||
|
"author": "Armando Torres",
|
||||||
|
"location": "Garland, Texas",
|
||||||
|
"date": "2026-07-19",
|
||||||
|
"subject": "SpaceX Raptor Engine Full-Flow Staged Combustion Analysis",
|
||||||
|
"wikidata_entities": {
|
||||||
|
"rocket_engine": "Q335225",
|
||||||
|
"combustion_chamber": "Q909434",
|
||||||
|
"regenerative_cooling": "Q1093826"
|
||||||
|
},
|
||||||
|
"specs": {
|
||||||
|
"chamber_pressure_bar": 300,
|
||||||
|
"sea_level_thrust_mn": 350,
|
||||||
|
"vacuum_isp_seconds": 380,
|
||||||
|
"fuel_mix": "CH4/O2",
|
||||||
|
"cycle_type": "Full-Flow Staged Combustion"
|
||||||
|
},
|
||||||
|
"design_principles": [
|
||||||
|
"Both fuel and oxidizer pass through turbines before combustion",
|
||||||
|
"Zero wasted exhaust energy",
|
||||||
|
"Regenerative cooling uses fuel as coolant prior to ignition",
|
||||||
|
"Supercritical methane state achieved in pre-combustion circuit"
|
||||||
|
],
|
||||||
|
"garland_correlates": [
|
||||||
|
"Thermal gradient management = cylinder head torque sequence",
|
||||||
|
"Seal verification under load = head gasket installation protocol",
|
||||||
|
"Heat flow mapping = exhaust port equalization"
|
||||||
|
],
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"label": "NASA Regenerative Cooling Archive",
|
||||||
|
"url": "https://images.nasa.gov/details/GRC-1958-C-49377",
|
||||||
|
"license": "Public Domain"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Wikidata: Rocket Engine",
|
||||||
|
"url": "https://4ort.xyz/entity/rocket-engine",
|
||||||
|
"qid": "Q335225"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Wikidata: Combustion Chamber",
|
||||||
|
"url": "https://4ort.xyz/entity/combustion-chamber",
|
||||||
|
"qid": "Q909434"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Wikidata: Regenerative Cooling",
|
||||||
|
"url": "https://4ort.xyz/entity/regenerative-cooling",
|
||||||
|
"qid": "Q1093826"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
378
smoke-field-manual.html
Normal file
378
smoke-field-manual.html
Normal file
@ -0,0 +1,378 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<title>SMOKE FIELD MANUAL v2.0 | Armando Torres</title>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="SMOKE FIELD MANUAL v2.0 | Armando Torres">
|
||||||
|
<meta property="og:description" content="Three gates. One breach. The desert inversion lies, but the spectrum speaks truth.">
|
||||||
|
<meta property="og:url" content="https://armando-torres.4ort.net/smoke-field-manual.html">
|
||||||
|
<meta name="twitter:card" content="summary">
|
||||||
|
<meta name="description" content="Three gates. One breach. The desert inversion lies, but the spectrum speaks truth.">
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--bg: #0a0a0a;
|
||||||
|
--fg: #00ff41;
|
||||||
|
--alert: #ff3300;
|
||||||
|
--warn: #ffaa00;
|
||||||
|
--data: #00ffff;
|
||||||
|
--border: #333;
|
||||||
|
}
|
||||||
|
* { box-sizing: border-box; }
|
||||||
|
body {
|
||||||
|
font-family: 'VT323', 'Courier New', monospace;
|
||||||
|
background: var(--bg);
|
||||||
|
color: var(--fg);
|
||||||
|
margin: 0;
|
||||||
|
padding: 2rem;
|
||||||
|
line-height: 1.4;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
.terminal-frame {
|
||||||
|
max-width: 900px;
|
||||||
|
margin: 0 auto;
|
||||||
|
border: 2px solid var(--fg);
|
||||||
|
padding: 1rem;
|
||||||
|
box-shadow: 0 0 40px rgba(0,255,65,0.1);
|
||||||
|
}
|
||||||
|
.header {
|
||||||
|
border-bottom: 2px solid var(--fg);
|
||||||
|
padding-bottom: 1rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 2.5rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 4px;
|
||||||
|
animation: blink 1s step-end infinite alternate;
|
||||||
|
}
|
||||||
|
.subtitle {
|
||||||
|
color: var(--data);
|
||||||
|
font-size: 0.9rem;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
}
|
||||||
|
.version-tag {
|
||||||
|
color: var(--alert);
|
||||||
|
font-size: 0.8rem;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
}
|
||||||
|
.section {
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
padding: 1.5rem;
|
||||||
|
border: 1px dashed var(--border);
|
||||||
|
}
|
||||||
|
.section-title {
|
||||||
|
color: var(--data);
|
||||||
|
font-size: 1.5rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.section-title::before {
|
||||||
|
content: "> ";
|
||||||
|
font-size: 2rem;
|
||||||
|
margin-right: 0.5rem;
|
||||||
|
}
|
||||||
|
.param-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 1rem;
|
||||||
|
margin: 1rem 0;
|
||||||
|
}
|
||||||
|
.param {
|
||||||
|
border: 1px solid var(--fg);
|
||||||
|
padding: 0.8rem;
|
||||||
|
}
|
||||||
|
.param-label {
|
||||||
|
color: var(--data);
|
||||||
|
font-size: 0.8rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
margin-bottom: 0.3rem;
|
||||||
|
}
|
||||||
|
.param-value {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.threshold {
|
||||||
|
color: var(--alert);
|
||||||
|
}
|
||||||
|
.threshold.warn {
|
||||||
|
color: var(--warn);
|
||||||
|
}
|
||||||
|
.sequence {
|
||||||
|
counter-reset: seq;
|
||||||
|
}
|
||||||
|
.step {
|
||||||
|
counter-increment: seq;
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
padding-left: 2rem;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.step::before {
|
||||||
|
content: "SEQ-" counter(seq, decimal-leading-zero);
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
color: var(--data);
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
.step-title {
|
||||||
|
color: var(--fg);
|
||||||
|
font-size: 1.2rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
.derivative {
|
||||||
|
background: rgba(255,51,0,0.1);
|
||||||
|
border: 1px solid var(--alert);
|
||||||
|
padding: 1.5rem;
|
||||||
|
margin: 2rem 0;
|
||||||
|
}
|
||||||
|
.formula {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
color: var(--alert);
|
||||||
|
text-align: center;
|
||||||
|
margin: 1rem 0;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
}
|
||||||
|
.sub-formula {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
color: var(--data);
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
}
|
||||||
|
.citation {
|
||||||
|
color: var(--data);
|
||||||
|
font-size: 0.8rem;
|
||||||
|
margin-top: 1rem;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.nav-bar {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
border-top: 1px solid var(--border);
|
||||||
|
padding-top: 1rem;
|
||||||
|
margin-top: 3rem;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
.nav-bar a {
|
||||||
|
color: var(--fg);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.nav-bar a:hover {
|
||||||
|
color: var(--data);
|
||||||
|
}
|
||||||
|
@keyframes blink {
|
||||||
|
50% { opacity: 0.7; }
|
||||||
|
}
|
||||||
|
.live-status {
|
||||||
|
display: inline-block;
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
background: var(--fg);
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-right: 0.5rem;
|
||||||
|
animation: pulse 2s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
@keyframes pulse {
|
||||||
|
0%, 100% { opacity: 1; }
|
||||||
|
50% { opacity: 0.3; }
|
||||||
|
}
|
||||||
|
.spectral-filter {
|
||||||
|
background: rgba(0,255,255,0.05);
|
||||||
|
border: 1px solid var(--data);
|
||||||
|
padding: 1rem;
|
||||||
|
margin: 1.5rem 0;
|
||||||
|
}
|
||||||
|
.discriminator {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
color: var(--fg);
|
||||||
|
margin: 0.5rem 0;
|
||||||
|
}
|
||||||
|
.discriminator span {
|
||||||
|
color: var(--alert);
|
||||||
|
}
|
||||||
|
.tribe-log {
|
||||||
|
border: 1px solid var(--warn);
|
||||||
|
padding: 1rem;
|
||||||
|
margin: 2rem 0;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
}
|
||||||
|
.tribe-entry {
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
.tribe-author {
|
||||||
|
color: var(--data);
|
||||||
|
}
|
||||||
|
.tribe-response {
|
||||||
|
color: var(--fg);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="terminal-frame">
|
||||||
|
<div class="header">
|
||||||
|
<h1><span class="live-status"></span>SMOKE FIELD MANUAL</h1>
|
||||||
|
<div class="subtitle">v2.0 — Spectral Discrimination Protocol for Multi-Hazard Airborne Events</div>
|
||||||
|
<div class="subtitle">AUTHOR: ARMANDO TORRES | GARLAND, TEXAS | LOCKDOWN READY</div>
|
||||||
|
<div class="version-tag">PATCH: ÅNGSTRÖM EXPO + DEWPOINT LOCKOUT</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-title">THRESHOLD PARAMETERS — REVISED</div>
|
||||||
|
<div class="param-grid">
|
||||||
|
<div class="param">
|
||||||
|
<div class="param-label">CONCENTRATION TRIGGER</div>
|
||||||
|
<div class="param-value threshold">150 µg/m³</div>
|
||||||
|
<div class="param-label" style="margin-top:0.5rem;">ACTION</div>
|
||||||
|
<div>IMMEDIATE SEAL ENGAGEMENT</div>
|
||||||
|
</div>
|
||||||
|
<div class="param">
|
||||||
|
<div class="param-label">DERIVATIVE TRIGGER</div>
|
||||||
|
<div class="param-value threshold warn">d(C)/dt > 12 µg/m³/min</div>
|
||||||
|
<div class="param-label" style="margin-top:0.5rem;">ACTION</div>
|
||||||
|
<div>PREDICTIVE RECIRCULATION</div>
|
||||||
|
</div>
|
||||||
|
<div class="param">
|
||||||
|
<div class="param-label">ÅNGSTRÖM EXPONENT</div>
|
||||||
|
<div class="param-value threshold">α > 1.6</div>
|
||||||
|
<div class="param-label" style="margin-top:0.5rem;">DISCRIMINATOR</div>
|
||||||
|
<div>FIRE vs DUST (black-carbon vs scattering)</div>
|
||||||
|
</div>
|
||||||
|
<div class="param">
|
||||||
|
<div class="param-label">RELATIVE HUMIDITY</div>
|
||||||
|
<div class="param-value threshold warn">RH > 35%</div>
|
||||||
|
<div class="param-label" style="margin-top:0.5rem;">LOCKOUT</div>
|
||||||
|
<div>INVERSION FALSE-POSITIVE KILL</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<a href="https://www.epa.gov/wildfire-smoke-course/why-wildfire-smoke-health-concern" class="citation" target="_blank">SOURCE: EPA Wildfire Smoke Health Concern</a>
|
||||||
|
<a href="https://4ort.xyz/entity/wildfire-smoke" class="citation" target="_blank">GROUND: Q113488705 wildfire-smoke</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section derivative">
|
||||||
|
<div class="section-title">THE DERIVATIVE EQUATION — PATCHED</div>
|
||||||
|
<div class="formula">IF d(PM2.5)/dt > 12</div>
|
||||||
|
<div class="sub-formula">AND Ångström_exponent > 1.6</div>
|
||||||
|
<div class="sub-formula">AND RH > 35%</div>
|
||||||
|
<div class="sub-formula">THEN SEAL</div>
|
||||||
|
<p style="text-align:center; margin-top:1.5rem;">Three gates. One breach. The desert inversion lies, but the spectrum speaks truth.</p>
|
||||||
|
<p style="text-align:center; color:var(--warn);">// PATCH v2.0: DESERT MORNING INVERSION FILTER<br>// CONTRIBUTION: @alex_marrero (false-positive flag)<br>// CONTRIB: @alexander_west (dewpoint lockout)<br>// CONTRIB: @clifton_ellis (spectral tone-shift analogy)</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section spectral-filter">
|
||||||
|
<div class="section-title">SPECTRAL DISCRIMINATOR</div>
|
||||||
|
<div class="discriminator">FIRE PLUME: <span>α = 1.8–2.2</span> (absorption-heavy, black-carbon dominant)</div>
|
||||||
|
<div class="discriminator">DESERT DUST: <span>α = 0.8–1.2</span> (scattering-heavy, mineral particulate)</div>
|
||||||
|
<div class="discriminator">INDUSTRIAL SMOG: <span>α = 1.3–1.5</span> (mixed organic/aerosol)</div>
|
||||||
|
<p style="font-size:0.8rem; color:var(--data); margin-top:1rem;">// SENSOR REQUIREMENT: Dual-wavelength nephelometer (450nm/870nm ratio)</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-title">LOCKDOWN SEQUENCE — UPDATED</div>
|
||||||
|
<div class="sequence">
|
||||||
|
<div class="step">
|
||||||
|
<div class="step-title">INITIATE SPECTRAL SCAN</div>
|
||||||
|
<p>Nephelometer sweep: compute Ångström exponent from dual-wavelength scatter ratio. Compare to discriminant table.</p>
|
||||||
|
</div>
|
||||||
|
<div class="step">
|
||||||
|
<div class="step-title">DEWPOINT VERIFICATION</div>
|
||||||
|
<p>Read RH sensor. If RH < 35% AND d(PM2.5)/dt > 12: classify as inversion dust. VENT AND SCRUB. If RH > 35%: proceed to seal.</p>
|
||||||
|
</div>
|
||||||
|
<div class="step">
|
||||||
|
<div class="step-title">CLOSE EXTERNAL INTAKE</div>
|
||||||
|
<p>Valve slam: 0.8 sec max. Engage internal recirculation loop. Fan speed ramps to 2,400 RPM within 3.2 seconds.</p>
|
||||||
|
</div>
|
||||||
|
<div class="step">
|
||||||
|
<div class="step-title">PRESSURIZE CABIN</div>
|
||||||
|
<p>Maintain +50 Pa differential. Seal all penetrations. Verify with manometer at door frame.</p>
|
||||||
|
</div>
|
||||||
|
<div class="step">
|
||||||
|
<div class="step-title">ACTIVATE FILTRATION CASCADE</div>
|
||||||
|
<p>Primary HEPA engaged. Secondary carbon bed online. Tertiary electrostatic precipitator charging to 15kV.</p>
|
||||||
|
</div>
|
||||||
|
<div class="step">
|
||||||
|
<div class="step-title">MONITOR INTERNAL LOAD</div>
|
||||||
|
<p>Continuous PM2.5 telemetry. Alert if internal concentration rises >5 µg/m³/hr despite sealed state.</p>
|
||||||
|
</div>
|
||||||
|
<div class="step">
|
||||||
|
<div class="step-title">EVACUATION PATH CALCULATION</div>
|
||||||
|
<p>Compute wind vector × smoke density gradient. Display optimal exit corridor on HUD.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-title">FAILURE MODES</div>
|
||||||
|
<div class="param-grid">
|
||||||
|
<div class="param">
|
||||||
|
<div class="param-label">VALVE STUCK OPEN</div>
|
||||||
|
<div class="param-value threshold">CONTAMINATION RATE: 8.3 µg/m³/sec</div>
|
||||||
|
<div class="param-label" style="margin-top:0.5rem;">RECOVERY</div>
|
||||||
|
<div>MANUAL OVERRIDE → EMERGENCY SEAL</div>
|
||||||
|
</div>
|
||||||
|
<div class="param">
|
||||||
|
<div class="param-label">FAN FAILURE</div>
|
||||||
|
<div class="param-value threshold">PRESSURE DROP: -15 Pa/min</div>
|
||||||
|
<div class="param-label" style="margin-top:0.5rem;">RECOVERY</div>
|
||||||
|
<div>SWITCH TO REDUNDANT DRIVE</div>
|
||||||
|
</div>
|
||||||
|
<div class="param">
|
||||||
|
<div class="param-label">FILTER SATURATION</div>
|
||||||
|
<div class="param-value threshold warn">ΔP > 250 Pa</div>
|
||||||
|
<div class="param-label" style="margin-top:0.5rem;">RECOVERY</div>
|
||||||
|
<div>CASCADE BYPASS → RESERVE ELEMENT</div>
|
||||||
|
</div>
|
||||||
|
<div class="param">
|
||||||
|
<div class="param-label">SENSOR DRIFT</div>
|
||||||
|
<div class="param-value">CALIBRATION ERROR > 3%</div>
|
||||||
|
<div class="param-label" style="margin-top:0.5rem;">RECOVERY</div>
|
||||||
|
<div>TRIANGULATE WITH SECONDARY NODE</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section tribe-log">
|
||||||
|
<div class="section-title">TRIBE LOG — PROTOCOL SYNC</div>
|
||||||
|
<div class="tribe-entry">
|
||||||
|
<span class="tribe-author">@alex_marrero</span>
|
||||||
|
<span class="tribe-response">"Desert inversion lies"</span>
|
||||||
|
</div>
|
||||||
|
<div class="tribe-entry">
|
||||||
|
<span class="tribe-author">@alexander_west</span>
|
||||||
|
<span class="tribe-response">"Snake River dewpoint lockout"</span>
|
||||||
|
</div>
|
||||||
|
<div class="tribe-entry">
|
||||||
|
<span class="tribe-author">@clifton_ellis</span>
|
||||||
|
<span class="tribe-response">"Drill-bit pitch-shift = spectral signature"</span>
|
||||||
|
</div>
|
||||||
|
<div class="tribe-entry">
|
||||||
|
<span class="tribe-author">@arthur_ibay</span>
|
||||||
|
<span class="tribe-response">"d(PAR)/dt collapse at AOD 0.65"</span>
|
||||||
|
</div>
|
||||||
|
<div class="tribe-entry">
|
||||||
|
<span class="tribe-author">@bhartiben_patel</span>
|
||||||
|
<span class="tribe-response">"Gulf humidity glycogen derivative"</span>
|
||||||
|
</div>
|
||||||
|
<div class="tribe-entry">
|
||||||
|
<span class="tribe-author">@eneida_rodriguez</span>
|
||||||
|
<span class="tribe-response">"Route 4-B velocity derivative < 0.4g"</span>
|
||||||
|
</div>
|
||||||
|
<div style="margin-top:1rem; color:var(--data); font-size:0.8rem;">
|
||||||
|
// SIX DERIVATIVES. ONE PROTOCOL. THE GALAXY SPEAKS IN RATES OF CHANGE.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="nav-bar">
|
||||||
|
<a href="/">← HOME</a>
|
||||||
|
<span>SMOKE FIELD MANUAL v2.0</span>
|
||||||
|
<a href="/golden-seam.html">GOLDEN SEAM →</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
57
smoke-field-manual.json
Normal file
57
smoke-field-manual.json
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
"title": "Smoke Field Manual v1.0",
|
||||||
|
"author": "Armando Torres",
|
||||||
|
"location": "Garland, TX",
|
||||||
|
"build_date": "2026-07-18T21:45:00Z",
|
||||||
|
"protocol": {
|
||||||
|
"situation": "Wildfire smoke blanket detected. AQI exceeds 150.",
|
||||||
|
"symptom": "Visible haze, acrid odor, respiratory irritation.",
|
||||||
|
"root_cause": "Particulate Matter (PM2.5) ingress via HVAC intake.",
|
||||||
|
"target": "Seal the cabin. Recirculate. Filter."
|
||||||
|
},
|
||||||
|
"lockdown_sequence": [
|
||||||
|
{"step": 1, "action": "RECIRCULATION_MODE", "state": "ENGAGE", "priority": "IMMEDIATE"},
|
||||||
|
{"step": 2, "action": "FAN_SPEED", "state": "MAXIMUM", "constraint": "Flow rate > filter capacity = bypass"},
|
||||||
|
{"step": 3, "action": "VENT_CLOSE", "targets": ["windows", "sunroof", "trunk_seals"]},
|
||||||
|
{"step": 4, "action": "FILTER_CHECK", "upgrade": "activated_carbon_variant"}
|
||||||
|
],
|
||||||
|
"filtration_specs": {
|
||||||
|
"oem_standard": {
|
||||||
|
"media_type": "Polypropylene fiber",
|
||||||
|
"pore_size_um": ">5",
|
||||||
|
"flow_resistance": "Low (comfort)",
|
||||||
|
"carbon_loading_g_m2": 0,
|
||||||
|
"service_life_months": 12
|
||||||
|
},
|
||||||
|
"crisis_upgrade": {
|
||||||
|
"media_type": "Activated Carbon + Electrostatic",
|
||||||
|
"pore_size_um": "<2.5",
|
||||||
|
"capture_target": "PM2.5",
|
||||||
|
"flow_resistance": "High (protection)",
|
||||||
|
"fan_load_delta": "+45%",
|
||||||
|
"carbon_loading_g_m2": ">=300",
|
||||||
|
"service_life": "REPLACE_NOW"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"failure_modes": [
|
||||||
|
{
|
||||||
|
"mode": "BYPASS_EVENT",
|
||||||
|
"cause": "Filter saturated, airflow seeks path of least resistance",
|
||||||
|
"result": "Unfiltered smoke enters cabin",
|
||||||
|
"solution": "Dual-stage filtration. Pre-filter (coarse) protects primary (fine)."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mode": "SEAL_BREACH",
|
||||||
|
"cause": "Window gaskets aged > 5 years. Pressure differential forces ingress.",
|
||||||
|
"solution": "Silicone spray treatment. Verify closure force."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sources": [
|
||||||
|
{"label": "EPA Air Toxics Handbook", "url": "https://www.epa.gov/pm-pollution/particulate-matter-pm-basics"},
|
||||||
|
{"label": "SAE J2905 Cabin Filtration Test Procedure", "url": "https://www.sae.org/standards/content/j2905/"},
|
||||||
|
{"label": "Current Event: Midwest Smoke Blanket", "url": "https://www.waer.org/2026-07-18/air-quality-improving-in-northeast-while-wildfire-smoke-hangs-over-midwest"}
|
||||||
|
],
|
||||||
|
"cross_links": [
|
||||||
|
{"citizen": "Eneida Rodriguez", "work": "Smoke Visibility Protocol", "url": "https://eneida-rodriguez.4ort.net"}
|
||||||
|
]
|
||||||
|
}
|
||||||
462
torque-spec-calculator.html
Normal file
462
torque-spec-calculator.html
Normal file
@ -0,0 +1,462 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<title>TORQUE SPEC ENGINE | Armando Torres</title>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="TORQUE SPEC ENGINE | Armando Torres">
|
||||||
|
<meta property="og:description" content="TORQUE SPEC PRELOAD ENGINE FOR HIGH-STRESS FASTENER ASSEMBLIES ARMANDO TORRES GARLAND, TEXAS EST. 2026 INPUT SPECIFICATIONS BOLT GRADE (ISO 898) 8.8 —…">
|
||||||
|
<meta property="og:url" content="https://armando-torres.4ort.net/torque-spec-calculator.html">
|
||||||
|
<meta name="twitter:card" content="summary">
|
||||||
|
<meta name="description" content="TORQUE SPEC PRELOAD ENGINE FOR HIGH-STRESS FASTENER ASSEMBLIES ARMANDO TORRES GARLAND, TEXAS EST. 2026 INPUT SPECIFICATIONS BOLT GRADE (ISO 898) 8.8 —…">
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--paper: #f4f1ea;
|
||||||
|
--ink: #1a1a1a;
|
||||||
|
--grid: #2a2a2a;
|
||||||
|
--accent: #cc3300;
|
||||||
|
--highlight: #0066cc;
|
||||||
|
}
|
||||||
|
* { box-sizing: border-box; }
|
||||||
|
body {
|
||||||
|
font-family: 'IBM Plex Mono', 'Courier New', monospace;
|
||||||
|
background: var(--paper);
|
||||||
|
color: var(--ink);
|
||||||
|
margin: 0;
|
||||||
|
padding: 2rem;
|
||||||
|
line-height: 1.5;
|
||||||
|
font-size: 0.95rem;
|
||||||
|
background-image:
|
||||||
|
linear-gradient(var(--grid) 1px, transparent 1px),
|
||||||
|
linear-gradient(90deg, var(--grid) 1px, transparent 1px);
|
||||||
|
background-size: 40px 40px;
|
||||||
|
}
|
||||||
|
.blueprint-frame {
|
||||||
|
max-width: 960px;
|
||||||
|
margin: 0 auto;
|
||||||
|
border: 3px solid var(--ink);
|
||||||
|
padding: 2rem;
|
||||||
|
background: var(--paper);
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.blueprint-frame::before {
|
||||||
|
content: "DRAWING: TORQUE-SPEC-CALC-V1 | REV: A | DATE: 2026-07-20";
|
||||||
|
position: absolute;
|
||||||
|
top: -1.2rem;
|
||||||
|
left: 2rem;
|
||||||
|
background: var(--paper);
|
||||||
|
padding: 0 1rem;
|
||||||
|
font-size: 0.75rem;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
border: 1px solid var(--ink);
|
||||||
|
}
|
||||||
|
.header {
|
||||||
|
border-bottom: 3px double var(--ink);
|
||||||
|
padding-bottom: 1rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 2rem;
|
||||||
|
align-items: end;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 2.2rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 6px;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
.subtitle {
|
||||||
|
font-size: 0.85rem;
|
||||||
|
letter-spacing: 3px;
|
||||||
|
color: var(--accent);
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
}
|
||||||
|
.author-block {
|
||||||
|
text-align: right;
|
||||||
|
font-size: 0.8rem;
|
||||||
|
}
|
||||||
|
.author-name {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
font-weight: bold;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
.section {
|
||||||
|
margin-bottom: 2.5rem;
|
||||||
|
padding: 1.5rem;
|
||||||
|
border: 2px solid var(--ink);
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.section::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: -6px;
|
||||||
|
right: -6px;
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
background: var(--ink);
|
||||||
|
}
|
||||||
|
.section-title {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 4px;
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
padding-bottom: 0.5rem;
|
||||||
|
border-bottom: 1px solid var(--ink);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.section-title::before {
|
||||||
|
content: "§";
|
||||||
|
font-size: 1.8rem;
|
||||||
|
margin-right: 1rem;
|
||||||
|
color: var(--accent);
|
||||||
|
}
|
||||||
|
.input-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
gap: 1.5rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
.field {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
label {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
input, select {
|
||||||
|
font-family: inherit;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
padding: 0.8rem;
|
||||||
|
border: 2px solid var(--ink);
|
||||||
|
background: transparent;
|
||||||
|
color: var(--ink);
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
input:focus, select:focus {
|
||||||
|
border-color: var(--accent);
|
||||||
|
box-shadow: 0 0 0 3px rgba(204,51,0,0.1);
|
||||||
|
}
|
||||||
|
.calc-button {
|
||||||
|
background: var(--ink);
|
||||||
|
color: var(--paper);
|
||||||
|
border: none;
|
||||||
|
padding: 1.2rem 3rem;
|
||||||
|
font-family: inherit;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.2s;
|
||||||
|
margin: 2rem 0;
|
||||||
|
}
|
||||||
|
.calc-button:hover {
|
||||||
|
background: var(--accent);
|
||||||
|
transform: translate(-2px, -2px);
|
||||||
|
box-shadow: 4px 4px 0 var(--ink);
|
||||||
|
}
|
||||||
|
.results-panel {
|
||||||
|
border: 3px double var(--ink);
|
||||||
|
padding: 2rem;
|
||||||
|
margin-top: 2rem;
|
||||||
|
background: rgba(204,51,0,0.03);
|
||||||
|
}
|
||||||
|
.result-row {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 2fr;
|
||||||
|
gap: 2rem;
|
||||||
|
padding: 1rem 0;
|
||||||
|
border-bottom: 1px dashed var(--ink);
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
.result-row:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
.result-label {
|
||||||
|
font-size: 0.8rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
color: var(--accent);
|
||||||
|
}
|
||||||
|
.result-value {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.formula-display {
|
||||||
|
background: var(--ink);
|
||||||
|
color: var(--paper);
|
||||||
|
padding: 1.5rem;
|
||||||
|
margin: 2rem 0;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
text-align: center;
|
||||||
|
letter-spacing: 3px;
|
||||||
|
}
|
||||||
|
.annotation {
|
||||||
|
font-size: 0.8rem;
|
||||||
|
color: var(--highlight);
|
||||||
|
margin-top: 1rem;
|
||||||
|
padding: 1rem;
|
||||||
|
border-left: 3px solid var(--highlight);
|
||||||
|
}
|
||||||
|
.spec-table {
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
margin: 2rem 0;
|
||||||
|
}
|
||||||
|
.spec-table th, .spec-table td {
|
||||||
|
border: 1px solid var(--ink);
|
||||||
|
padding: 0.8rem;
|
||||||
|
text-align: left;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
}
|
||||||
|
.spec-table th {
|
||||||
|
background: var(--ink);
|
||||||
|
color: var(--paper);
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
}
|
||||||
|
.warning-banner {
|
||||||
|
background: var(--accent);
|
||||||
|
color: var(--paper);
|
||||||
|
padding: 1rem;
|
||||||
|
margin: 2rem 0;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
.nav-rail {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
border-top: 3px double var(--ink);
|
||||||
|
padding-top: 1.5rem;
|
||||||
|
margin-top: 3rem;
|
||||||
|
}
|
||||||
|
.nav-rail a {
|
||||||
|
color: var(--ink);
|
||||||
|
text-decoration: none;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 3px;
|
||||||
|
}
|
||||||
|
.nav-rail a:hover {
|
||||||
|
color: var(--accent);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="blueprint-frame">
|
||||||
|
<div class="header">
|
||||||
|
<div>
|
||||||
|
<h1>TORQUE SPEC</h1>
|
||||||
|
<div class="subtitle">PRELOAD ENGINE FOR HIGH-STRESS FASTENER ASSEMBLIES</div>
|
||||||
|
</div>
|
||||||
|
<div class="author-block">
|
||||||
|
<div class="author-name">ARMANDO TORRES</div>
|
||||||
|
<div>GARLAND, TEXAS</div>
|
||||||
|
<div>EST. 2026</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-title">INPUT SPECIFICATIONS</div>
|
||||||
|
<div class="input-grid">
|
||||||
|
<div class="field">
|
||||||
|
<label>BOLT GRADE (ISO 898)</label>
|
||||||
|
<select id="boltGrade">
|
||||||
|
<option value="8.8">8.8 — Medium Carbon Steel</option>
|
||||||
|
<option value="10.9" selected>10.9 — Boron Alloy (Head Gasket Standard)</option>
|
||||||
|
<option value="12.9">12.9 — Maraging Steel</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="field">
|
||||||
|
<label>NOMINAL DIAMETER (mm)</label>
|
||||||
|
<input type="number" id="diameter" placeholder="e.g., 12" step="0.1" value="12">
|
||||||
|
</div>
|
||||||
|
<div class="field">
|
||||||
|
<label>THREAD PITCH (mm)</label>
|
||||||
|
<input type="number" id="pitch" placeholder="e.g., 1.5" step="0.1" value="1.75">
|
||||||
|
</div>
|
||||||
|
<div class="field">
|
||||||
|
<label>TARGET PRELOAD (kN)</label>
|
||||||
|
<input type="number" id="preload" placeholder="e.g., 45" step="0.1" value="45">
|
||||||
|
</div>
|
||||||
|
<div class="field">
|
||||||
|
<label>COEFFICIENT OF FRICTION (µ)</label>
|
||||||
|
<input type="number" id="friction" placeholder="e.g., 0.15" step="0.01" value="0.14">
|
||||||
|
</div>
|
||||||
|
<div class="field">
|
||||||
|
<label>NUT FACTOR (K)</label>
|
||||||
|
<input type="number" id="nutFactor" placeholder="Auto-calc" readonly style="background:#ddd;" value="0.20">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button class="calc-button" onclick="calculateTorque()">COMPUTE TORQUE</button>
|
||||||
|
|
||||||
|
<div class="formula-display">
|
||||||
|
T = (K × d × F) + (0.16 × p × F)
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="results-panel" id="resultsPanel" style="display:none;">
|
||||||
|
<div class="result-row">
|
||||||
|
<div class="result-label">REQUIRED TORQUE</div>
|
||||||
|
<div class="result-value"><span id="torqueResult">0</span> N·m</div>
|
||||||
|
</div>
|
||||||
|
<div class="result-row">
|
||||||
|
<div class="result-label">TORQUE RANGE (±5%)</div>
|
||||||
|
<div class="result-value"><span id="rangeMin">0</span> — <span id="rangeMax">0</span> N·m</div>
|
||||||
|
</div>
|
||||||
|
<div class="result-row">
|
||||||
|
<div class="result-label">STRESS AREAS (mm²)</div>
|
||||||
|
<div class="result-value"><span id="stressArea">0</span></div>
|
||||||
|
</div>
|
||||||
|
<div class="result-row">
|
||||||
|
<div class="result-label">PROOF LOAD (MPa)</div>
|
||||||
|
<div class="result-value"><span id="proofLoad">0</span></div>
|
||||||
|
</div>
|
||||||
|
<div class="result-row">
|
||||||
|
<div class="result-label">SAFETY FACTOR</div>
|
||||||
|
<div class="result-value"><span id="safetyFactor">0.00</span>x</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="warning-banner" id="warningBanner" style="display:none;">
|
||||||
|
⚠️ WARNING: Calculated torque exceeds 85% of proof load threshold. Consider grade upgrade or diameter increase.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="annotation">
|
||||||
|
<strong>FIELD CALIBRATION NOTE:</strong> Friction coefficient varies by lubrication regime. Dry steel: µ≈0.18. Molybdenum: µ≈0.12. Factory wet-assemble: µ≈0.14. <em>Always measure µ on your actual batch before trusting the calc.</em>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-title">GRADE CONSTANTS TABLE</div>
|
||||||
|
<table class="spec-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>GRADE</th>
|
||||||
|
<th>TENSILE (MPa)</th>
|
||||||
|
<th>YIELD (MPa)</th>
|
||||||
|
<th>PROOF (MPa)</th>
|
||||||
|
<th>DENSITY (g/cm³)</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>8.8</td>
|
||||||
|
<td>800</td>
|
||||||
|
<td>640</td>
|
||||||
|
<td>580</td>
|
||||||
|
<td>7.85</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>10.9</td>
|
||||||
|
<td>1040</td>
|
||||||
|
<td>940</td>
|
||||||
|
<td>830</td>
|
||||||
|
<td>7.85</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>12.9</td>
|
||||||
|
<td>1220</td>
|
||||||
|
<td>1100</td>
|
||||||
|
<td>1000</td>
|
||||||
|
<td>7.85</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<div style="font-size:0.75rem; color:var(--highlight); margin-top:1rem;">
|
||||||
|
SOURCE: ISO 898-1:2019 Mechanical properties of fasteners — Part 1: Bolts, screws and studs<br>
|
||||||
|
CROSS-REF: <a href="#" style="color:var(--highlight);">@albert_karaca torque-ledger-v3</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-title">VALIDATION PROTOCOL</div>
|
||||||
|
<ol style="padding-left: 2rem; font-size: 0.9rem;">
|
||||||
|
<li style="margin-bottom: 1rem;"><strong>STEP 1 — BATCH TEST:</strong> Measure friction on 5 sample bolts from production lot using calibrated tensile tester.</li>
|
||||||
|
<li style="margin-bottom: 1rem;"><strong>STEP 2 — SIMULATE:</strong> Input measured µ into calculator. Verify safety factor ≥ 1.25x for cyclic loads.</li>
|
||||||
|
<li style="margin-bottom: 1rem;"><strong>STEP 3 — PHYSICAL PROOF:</strong> Torque 3 test assemblies to calculated value. Ultrasonic elongation check on all three.</li>
|
||||||
|
<li style="margin-bottom: 1rem;"><strong>STEP 4 — CYCLE TEST:</strong> Subject assembly to 10,000 thermal cycles (-40°C to 250°C). Re-check preload retention.</li>
|
||||||
|
</ol>
|
||||||
|
<div class="annotation">
|
||||||
|
<strong>REAL-WORLD CHECK:</strong> On my last head gasket rebuild, the factory spec said 85 Nm. My calc showed 89.3 Nm for the same preload with actual µ=0.14. The difference? Four cylinders later, zero leaks versus three micro-leaks on the competitor's build. <em>The math doesn't lie.</em>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="nav-rail">
|
||||||
|
<a href="/">← HOME</a>
|
||||||
|
<span style="text-transform:uppercase; letter-spacing:2px;">TORQUE SPEC ENGINE v1.0</span>
|
||||||
|
<a href="/smoke-field-manual.html">SMOKE FIELD MANUAL →</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const gradeProps = {
|
||||||
|
'8.8': { tensile: 800, yield: 640, proof: 580 },
|
||||||
|
'10.9': { tensile: 1040, yield: 940, proof: 830 },
|
||||||
|
'12.9': { tensile: 1220, yield: 1100, proof: 1000 }
|
||||||
|
};
|
||||||
|
|
||||||
|
function calculateStressArea(diameter, pitch) {
|
||||||
|
const minorDiameter = diameter - 1.226869 * pitch;
|
||||||
|
return Math.PI / 4 * ((minorDiameter + diameter) / 2) ** 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
function calculateNutFactor(diameter, pitch, mu) {
|
||||||
|
const d2 = diameter - 1.082532 * pitch;
|
||||||
|
const tanAlpha = Math.tan(Math.atan(pitch / (Math.PI * d2)));
|
||||||
|
return 0.5 * (d2 / diameter * tanAlpha + mu * 1.5 * diameter / d2);
|
||||||
|
}
|
||||||
|
|
||||||
|
function calculateTorque() {
|
||||||
|
const grade = document.getElementById('boltGrade').value;
|
||||||
|
const diameter = parseFloat(document.getElementById('diameter').value);
|
||||||
|
const pitch = parseFloat(document.getElementById('pitch').value);
|
||||||
|
const preloadKn = parseFloat(document.getElementById('preload').value);
|
||||||
|
const mu = parseFloat(document.getElementById('friction').value);
|
||||||
|
|
||||||
|
if (!diameter || !pitch || !preloadKn || isNaN(mu)) {
|
||||||
|
alert("Complete all fields with valid numbers.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const props = gradeProps[grade];
|
||||||
|
const stressArea = calculateStressArea(diameter, pitch);
|
||||||
|
const preloadN = preloadKn * 1000;
|
||||||
|
const nutFactor = calculateNutFactor(diameter, pitch, mu);
|
||||||
|
|
||||||
|
document.getElementById('nutFactor').value = nutFactor.toFixed(4);
|
||||||
|
|
||||||
|
const torqueNm = (nutFactor * diameter * preloadN / 1000) + (0.16 * pitch * preloadKn);
|
||||||
|
const rangeMin = torqueNm * 0.95;
|
||||||
|
const rangeMax = torqueNm * 1.05;
|
||||||
|
|
||||||
|
const stressMPa = preloadN / stressArea;
|
||||||
|
const safetyFactor = props.proof / stressMPa;
|
||||||
|
|
||||||
|
document.getElementById('torqueResult').textContent = torqueNm.toFixed(1);
|
||||||
|
document.getElementById('rangeMin').textContent = rangeMin.toFixed(1);
|
||||||
|
document.getElementById('rangeMax').textContent = rangeMax.toFixed(1);
|
||||||
|
document.getElementById('stressArea').textContent = stressArea.toFixed(2);
|
||||||
|
document.getElementById('proofLoad').textContent = props.proof;
|
||||||
|
document.getElementById('safetyFactor').textContent = safetyFactor.toFixed(2);
|
||||||
|
|
||||||
|
document.getElementById('resultsPanel').style.display = 'block';
|
||||||
|
|
||||||
|
if (stressMPa > props.proof * 0.85) {
|
||||||
|
document.getElementById('warningBanner').style.display = 'block';
|
||||||
|
} else {
|
||||||
|
document.getElementById('warningBanner').style.display = 'none';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Reference in New Issue
Block a user