Skip to content

Commit 980e405

Browse files
timm156claude
andcommitted
Initial tasumermaf.com — enterprise website with 7 sections
Hero (Three.js RD wireframe), Examine Every Default (thesis + paper arc), The Steersman (7 cybernetics pioneers + 3-scale callout), Tools (rhombic, The Adversary, LIOTHIL), The Circuit (autopoietic loop), Principles (8), Footer. Design system inherited from rhombic/website. GitHub Pages workflow. CNAME for tasumermaf.com. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
0 parents  commit 980e405

5 files changed

Lines changed: 503 additions & 0 deletions

File tree

.github/workflows/pages.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: Deploy to GitHub Pages
2+
3+
on:
4+
push:
5+
branches: [main]
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
concurrency:
14+
group: "pages"
15+
cancel-in-progress: false
16+
17+
jobs:
18+
deploy:
19+
environment:
20+
name: github-pages
21+
url: ${{ steps.deployment.outputs.page_url }}
22+
runs-on: ubuntu-latest
23+
steps:
24+
- name: Checkout
25+
uses: actions/checkout@v4
26+
- name: Setup Pages
27+
uses: actions/configure-pages@v5
28+
- name: Upload artifact
29+
uses: actions/upload-pages-artifact@v3
30+
with:
31+
path: '.'
32+
- name: Deploy to GitHub Pages
33+
id: deployment
34+
uses: actions/deploy-pages@v4

CNAME

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
tasumermaf.com

index.html

Lines changed: 221 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,221 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>TASUMER MAF</title>
7+
<meta name="description" content="Cybernetics consulting. Lattice topology research. Open tools.">
8+
<link rel="preconnect" href="https://fonts.googleapis.com">
9+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10+
<link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,600;0,700;1,400&amp;family=Inter:wght@300;400;500;600&amp;display=swap" rel="stylesheet">
11+
<link rel="stylesheet" href="style.css">
12+
</head>
13+
<body>
14+
15+
<section id="hero">
16+
<div class="hero-content">
17+
<h1>TASUMER MAF</h1>
18+
<p class="hero-greek">κυβερνήτης — the steersman</p>
19+
<p class="hero-tagline">Cybernetics consulting. Lattice topology research. Open tools.</p>
20+
</div>
21+
<div class="hero-canvas" id="rd-canvas"></div>
22+
</section>
23+
24+
<section id="thesis">
25+
<div class="section-inner">
26+
<h2>Examine Every Default</h2>
27+
<p>Every computation — neural networks, simulations, databases — defaults to
28+
<strong>cubic lattice topology</strong>: 6-connected grids. Each node talks to
29+
6 neighbors along 3 axis-aligned directions. It is the geometry of spreadsheets,
30+
voxel grids, and attention heads. Nobody chose it. It was just there.</p>
31+
<p>The <strong>FCC lattice</strong> gives each node 12 neighbors along 6
32+
face-diagonal directions. Its Voronoi cell is the <em>rhombic dodecahedron</em>
33+
a 14-vertex polyhedron that tessellates all of 3D space. Kepler proved it packs
34+
spheres optimally in 1611. Hales confirmed it in 2005. Under real-world
35+
heterogeneous conditions, it provides <span class="hero-stat">6.1×</span>
36+
the algebraic connectivity of the cube.</p>
37+
<div class="thesis-stat">
38+
<div class="big-num">6.1×</div>
39+
<div class="big-label">algebraic connectivity under corpus weights (Paper 2)</div>
40+
</div>
41+
<p>The cube is not the enemy — it is the skeleton. The rhombic dodecahedron
42+
<em>contains</em> the cube: its 8 trivalent vertices ARE the cube’s corners.
43+
The 6 tetravalent vertices are the bridges that convert cubic topology into
44+
space-filling FCC. <strong>TeLoRA</strong> adds a learnable bridge matrix between
45+
LoRA’s A and B projections. At n=6, a cybernetic feedback mechanism (the Steersman)
46+
discovers rhombic dodecahedral geometry: 100% block-diagonal bridges, peak
47+
coupling ratio 82,854:1, across four model families (1.1B–14B).</p>
48+
<div class="paper-arc">
49+
<div class="arc-step">
50+
<div class="arc-num"><a href="https://github.com/tasumermaf/rhombic/blob/main/paper/rhombic.tex">Paper 1</a></div>
51+
<div class="arc-q">“What happens when you replace the cube?”</div>
52+
<div class="arc-a">The comparison.</div>
53+
</div>
54+
<div class="arc-arrow"></div>
55+
<div class="arc-step">
56+
<div class="arc-num"><a href="https://github.com/tasumermaf/rhombic/blob/main/paper/rhombic-paper2.tex">Paper 2</a></div>
57+
<div class="arc-q">“Does structure amplify or attenuate?”</div>
58+
<div class="arc-a">The mechanism.</div>
59+
</div>
60+
<div class="arc-arrow"></div>
61+
<div class="arc-step">
62+
<div class="arc-num"><a href="https://github.com/tasumermaf/rhombic/blob/main/paper/rhombic-paper3.tex">Paper 3</a></div>
63+
<div class="arc-q">“What happens when you embrace the cube?”</div>
64+
<div class="arc-a">The discovery.</div>
65+
</div>
66+
</div>
67+
</div>
68+
</section>
69+
70+
<section id="steersman">
71+
<div class="section-inner">
72+
<h2>The Steersman</h2>
73+
<p>Cybernetics was born as the science of communication and control — the study
74+
of how systems regulate themselves through circular causation, not through command.
75+
TASUMER MAF applies this principle to AI systems architecture, organizational
76+
design, and computational infrastructure.</p>
77+
<div class="pioneers">
78+
<div class="pioneer">
79+
<div class="pioneer-meta"><div class="pioneer-name">Wiener</div><div class="pioneer-year">1948</div></div>
80+
<div class="pioneer-body"><p><span class="pioneer-concept">Communication and control.</span>
81+
Named the field for the steersman who reads the wake and adjusts the rudder.
82+
Governance emerges from feedback, not force.</p></div>
83+
</div>
84+
<div class="pioneer">
85+
<div class="pioneer-meta"><div class="pioneer-name">Ashby</div><div class="pioneer-year">1956</div></div>
86+
<div class="pioneer-body"><p><span class="pioneer-concept">Requisite Variety.</span>
87+
A regulator must have at least as much variety as the system it regulates.
88+
12 connections absorb what 6 cannot.</p></div>
89+
</div>
90+
<div class="pioneer">
91+
<div class="pioneer-meta"><div class="pioneer-name">Beer</div><div class="pioneer-year">1959</div></div>
92+
<div class="pioneer-body"><p><span class="pioneer-concept">Viable System Model.</span>
93+
Organizational topology IS architecture topology. The structure of a viable
94+
system mirrors the structure of the environment it must absorb.</p></div>
95+
</div>
96+
<div class="pioneer">
97+
<div class="pioneer-meta"><div class="pioneer-name">Bateson</div><div class="pioneer-year">1972</div></div>
98+
<div class="pioneer-body"><p><span class="pioneer-concept">Ecology of Mind.</span>
99+
The observer is part of the system. The map participates in the territory.
100+
The tool that measures connectivity is itself a connected system.</p></div>
101+
</div>
102+
<div class="pioneer">
103+
<div class="pioneer-meta"><div class="pioneer-name">Maturana &amp; Varela</div><div class="pioneer-year">1973</div></div>
104+
<div class="pioneer-body"><p><span class="pioneer-concept">Autopoiesis.</span>
105+
A system that produces the components that produce the system.
106+
Research produces evidence produces tools produces research.</p></div>
107+
</div>
108+
<div class="pioneer">
109+
<div class="pioneer-meta"><div class="pioneer-name">Pask</div><div class="pioneer-year">1975</div></div>
110+
<div class="pioneer-body"><p><span class="pioneer-concept">Conversation Theory.</span>
111+
Knowledge emerges through structured dialogue between participants.
112+
Human-AI collaboration as Paskian conversation.</p></div>
113+
</div>
114+
<div class="pioneer">
115+
<div class="pioneer-meta"><div class="pioneer-name">Von Foerster</div><div class="pioneer-year">1995</div></div>
116+
<div class="pioneer-body"><p><span class="pioneer-concept">Ethics of self-reference.</span>
117+
“Act always so as to increase the number of choices.”
118+
Open methodology expands the space. Proprietary results fund the expansion.</p></div>
119+
</div>
120+
</div>
121+
<div class="scale-callout">
122+
<div class="scale-card"><div class="scale-label">Micro</div>
123+
<div class="scale-desc">Weight matrix: TeLoRA bridge discovers rhombic dodecahedral geometry</div></div>
124+
<div class="scale-card"><div class="scale-label">Meso</div>
125+
<div class="scale-desc">Research loop: evidence → tools → consulting → experiments</div></div>
126+
<div class="scale-card"><div class="scale-label">Macro</div>
127+
<div class="scale-desc">Enterprise: the organization produces the research that produces the organization</div></div>
128+
</div>
129+
</div>
130+
</section>
131+
132+
<section id="tools">
133+
<div class="section-inner">
134+
<h2>Tools</h2>
135+
<div class="tool-cards">
136+
<div class="tool-card">
137+
<h3>rhombic</h3>
138+
<div class="tool-meta">312 tests · MPL-2.0 · Python 3.10–3.12</div>
139+
<p>Lattice topology benchmarks proving cubic networks leave 6.1× connectivity
140+
on the table. TeLoRA neural module with cybernetic Steersman feedback.</p>
141+
<a href="https://github.com/tasumermaf/rhombic">GitHub</a> ·
142+
<a href="https://pypi.org/project/rhombic/">PyPI</a> ·
143+
<a href="https://huggingface.co/spaces/timotheospaul/rhombic">Demo</a>
144+
</div>
145+
<div class="tool-card">
146+
<h3>The Adversary</h3>
147+
<div class="tool-meta">7-round audit · MPL-2.0</div>
148+
<p>Agent-driven adversarial paper audit framework. 232 findings across 7 rounds,
149+
87 fixed, zero critical remaining.</p>
150+
<a href="https://github.com/tasumermaf/the-adversary">GitHub</a>
151+
</div>
152+
<div class="tool-card">
153+
<h3>LIOTHIL</h3>
154+
<div class="tool-meta">MIT</div>
155+
<p>Research environment scaffold for Claude Code. Domain knowledge injection,
156+
multi-agent orchestration, epistemic charter enforcement.</p>
157+
<a href="https://github.com/tasumermaf/LIOTHIL">GitHub</a>
158+
</div>
159+
</div>
160+
</div>
161+
</section>
162+
163+
<section id="circuit">
164+
<div class="section-inner">
165+
<h2>The Circuit</h2>
166+
<p>The autopoietic loop: each stage produces the next. The enterprise
167+
is the thesis made organizational.</p>
168+
<div class="circuit-container">
169+
<div class="circuit-ring">
170+
<svg class="circuit-svg" viewBox="0 0 380 380">
171+
<defs>
172+
<marker id="arrowhead" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">
173+
<polygon points="0 0, 8 3, 0 6" fill="#555" />
174+
</marker>
175+
</defs>
176+
<path d="M 215,52 Q 310,50 325,120" stroke="#333" stroke-width="1.5" fill="none" marker-end="url(#arrowhead)" />
177+
<path d="M 340,190 Q 340,260 310,300" stroke="#333" stroke-width="1.5" fill="none" marker-end="url(#arrowhead)" />
178+
<path d="M 270,340 Q 220,370 175,345" stroke="#333" stroke-width="1.5" fill="none" marker-end="url(#arrowhead)" />
179+
<path d="M 130,330 Q 60,310 45,250" stroke="#333" stroke-width="1.5" fill="none" marker-end="url(#arrowhead)" />
180+
<path d="M 35,180 Q 35,110 70,75" stroke="#333" stroke-width="1.5" fill="none" marker-end="url(#arrowhead)" />
181+
<path d="M 110,48 Q 150,30 175,40" stroke="#333" stroke-width="1.5" fill="none" marker-end="url(#arrowhead)" />
182+
</svg>
183+
<div class="circuit-node active">Research</div>
184+
<div class="circuit-node">Evidence</div>
185+
<div class="circuit-node">Consulting</div>
186+
<div class="circuit-node">Revenue</div>
187+
<div class="circuit-node">Experiments</div>
188+
<div class="circuit-node">Products</div>
189+
</div>
190+
</div>
191+
</div>
192+
</section>
193+
194+
<section id="principles">
195+
<div class="section-inner">
196+
<h2>Principles</h2>
197+
<ol class="principles-list">
198+
<li><strong>Feedback, not force.</strong> The steersman reads the wind and adjusts. We demonstrate alternatives. The client steers.</li>
199+
<li><strong>Only variety absorbs variety.</strong> A six-connected lattice cannot regulate twelve-fold complexity. When a system fails under load, the fix is geometric.</li>
200+
<li><strong>Irreducibility.</strong> 1093 is prime. The value proposition is one thing, whole. Not decomposable into simpler products.</li>
201+
<li><strong>The geometry is the argument.</strong> No borrowed aesthetics, no inflated claims. Here are the results. They speak for themselves.</li>
202+
<li><strong>Eat your own cooking.</strong> The way you build a tool should embody its thesis. Meta-coherence separates serious work from cargo cult.</li>
203+
<li><strong>Sparse results are data.</strong> A test that shows no advantage is a finding. An audit that finds nothing wrong is a deliverable.</li>
204+
<li><strong>Cost is always reported alongside benefit.</strong> 2.4× connectivity at ~2× the edges. We say both.</li>
205+
<li><strong>Open methodology, proprietary results.</strong> The recipe is free. The spice is ours.</li>
206+
</ol>
207+
</div>
208+
</section>
209+
210+
<footer>
211+
<div class="section-inner">
212+
<p class="footer-brand">TASUMER MAF — Promptcrafted LLC · Los Angeles</p>
213+
<p class="footer-meta"><a href="https://github.com/tasumermaf">GitHub</a> · <a href="https://pypi.org/project/rhombic/">PyPI</a> · <a href="https://huggingface.co/spaces/timotheospaul/rhombic">HF Space</a></p>
214+
<p class="footer-prime">1093 = prime.</p>
215+
</div>
216+
</footer>
217+
218+
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
219+
<script src="rd.js"></script>
220+
</body>
221+
</html>

rd.js

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
/**
2+
* Animated Rhombic Dodecahedron — Three.js hero visualization
3+
* Adapted from rhombic/website/rd.js for tasumermaf.com
4+
*/
5+
(function() {
6+
var container = document.getElementById('rd-canvas');
7+
if (!container || typeof THREE === 'undefined') return;
8+
9+
var FCC_COLOR = 0xB34444;
10+
var CUBIC_COLOR = 0x3D3D6B;
11+
var EDGE_COLOR = 0x444466;
12+
13+
var scene = new THREE.Scene();
14+
var camera = new THREE.PerspectiveCamera(40, container.clientWidth / container.clientHeight, 0.1, 100);
15+
camera.position.set(4, 3, 4);
16+
camera.lookAt(0, 0, 0);
17+
18+
var renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });
19+
renderer.setSize(container.clientWidth, container.clientHeight);
20+
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
21+
renderer.setClearColor(0x000000, 0);
22+
container.appendChild(renderer.domElement);
23+
24+
var cubeVerts = [
25+
[-1,-1,-1],[-1,-1,1],[-1,1,-1],[-1,1,1],
26+
[1,-1,-1],[1,-1,1],[1,1,-1],[1,1,1]
27+
];
28+
var octaVerts = [
29+
[-2,0,0],[2,0,0],[0,-2,0],[0,2,0],[0,0,-2],[0,0,2]
30+
];
31+
32+
var edges = [];
33+
for (var ci = 0; ci < cubeVerts.length; ci++) {
34+
var c = cubeVerts[ci];
35+
for (var oi = 0; oi < octaVerts.length; oi++) {
36+
var o = octaVerts[oi];
37+
var dx = c[0]-o[0], dy = c[1]-o[1], dz = c[2]-o[2];
38+
if (Math.sqrt(dx*dx+dy*dy+dz*dz) < 2.0) edges.push([ci, 8+oi]);
39+
}
40+
}
41+
42+
var group = new THREE.Group();
43+
var cubeMat = new THREE.MeshPhongMaterial({color:FCC_COLOR,emissive:FCC_COLOR,emissiveIntensity:0.3});
44+
var sphereGeo = new THREE.SphereGeometry(0.09,16,16);
45+
cubeVerts.forEach(function(v){
46+
var mesh = new THREE.Mesh(sphereGeo, cubeMat);
47+
mesh.position.set(v[0],v[1],v[2]);
48+
group.add(mesh);
49+
});
50+
51+
var octaMat = new THREE.MeshPhongMaterial({color:CUBIC_COLOR,emissive:CUBIC_COLOR,emissiveIntensity:0.3});
52+
var diamondGeo = new THREE.OctahedronGeometry(0.14,0);
53+
octaVerts.forEach(function(v){
54+
var mesh = new THREE.Mesh(diamondGeo, octaMat);
55+
mesh.position.set(v[0],v[1],v[2]);
56+
group.add(mesh);
57+
});
58+
59+
var allVerts = cubeVerts.concat(octaVerts);
60+
var edgeMat = new THREE.LineBasicMaterial({color:EDGE_COLOR,transparent:true,opacity:0.5});
61+
edges.forEach(function(e){
62+
var geo = new THREE.BufferGeometry().setFromPoints([
63+
new THREE.Vector3(allVerts[e[0]][0],allVerts[e[0]][1],allVerts[e[0]][2]),
64+
new THREE.Vector3(allVerts[e[1]][0],allVerts[e[1]][1],allVerts[e[1]][2])
65+
]);
66+
group.add(new THREE.Line(geo, edgeMat));
67+
});
68+
69+
var cubeEdgeMat = new THREE.LineBasicMaterial({color:FCC_COLOR,transparent:true,opacity:0.1});
70+
[[0,1],[0,2],[0,4],[1,3],[1,5],[2,3],[2,6],[3,7],[4,5],[4,6],[5,7],[6,7]].forEach(function(e){
71+
var geo = new THREE.BufferGeometry().setFromPoints([
72+
new THREE.Vector3(cubeVerts[e[0]][0],cubeVerts[e[0]][1],cubeVerts[e[0]][2]),
73+
new THREE.Vector3(cubeVerts[e[1]][0],cubeVerts[e[1]][1],cubeVerts[e[1]][2])
74+
]);
75+
group.add(new THREE.Line(geo, cubeEdgeMat));
76+
});
77+
78+
scene.add(group);
79+
scene.add(new THREE.AmbientLight(0x333344, 0.5));
80+
var dirLight = new THREE.DirectionalLight(0xffffff, 0.6);
81+
dirLight.position.set(5, 5, 5);
82+
scene.add(dirLight);
83+
84+
function animate() {
85+
requestAnimationFrame(animate);
86+
group.rotation.y += 0.0015;
87+
group.rotation.x += 0.0005;
88+
renderer.render(scene, camera);
89+
}
90+
animate();
91+
92+
window.addEventListener('resize', function() {
93+
camera.aspect = container.clientWidth / container.clientHeight;
94+
camera.updateProjectionMatrix();
95+
renderer.setSize(container.clientWidth, container.clientHeight);
96+
});
97+
})();

0 commit comments

Comments
 (0)