Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
strategy:
fail-fast: false
matrix:
language: [javascript, python]
language: [javascript]
steps:
- name: Checkout
uses: actions/checkout@v4
Expand Down
4 changes: 2 additions & 2 deletions about.html
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ <h2>Our standard</h2>
<div class="threshold-cross"></div>

<h2>Public sources</h2>
<p>Product work is published under the <a href="https://github.com/orgs/Zero-State-LLC/repositories">Zero-State-LLC organization</a>. Portfolio pages link to each repository as the current public source of truth. App Store and production product URLs are not claimed until a release is ready.</p>
<p>Product work is developed under the Zero State brand. Portfolio pages present the current product posture; App Store and production product URLs are not claimed until a release is ready.</p>

<h2>Contact</h2>
<p>Reach Zero State at <a href="mailto:zer0state@zer0state.com">zer0state@zer0state.com</a>.</p>
Expand All @@ -79,4 +79,4 @@ <h2>Contact</h2>
</footer>
<script src="script.js"></script>
</body>
</html>
</html>
Binary file added assets/products/slosh-hero.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,14 @@ <h2 id="evidence-title">Systems in motion.</h2>
</span>
<span class="work-arrow" aria-hidden="true">↗</span>
</a>
<a class="work-row" href="products/slosh.html">
<span class="work-thumb" aria-hidden="true"><img src="assets/products/slosh-hero.gif" alt="" width="120" height="75" loading="lazy" decoding="async"></span>
<span class="work-main">
<span class="work-title">Slosh</span>
<span class="work-type">Interactive water for Apple Watch</span>
</span>
<span class="work-arrow" aria-hidden="true">↗</span>
</a>
</div>
</section>

Expand Down
10 changes: 10 additions & 0 deletions marketing.html
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,16 @@ <h3 class="portfolio-title">Marigold Market</h3>
<p class="portfolio-status">Pre-release 0.1.x · iOS</p>
</div>
</a>
<a class="portfolio-card" href="products/slosh.html">
<div class="portfolio-media">
<img src="assets/products/slosh-hero.gif" alt="Slosh interactive water experience on Apple Watch" width="416" height="496" loading="lazy" decoding="async">
</div>
<div class="portfolio-body">
<span class="portfolio-meta">Interactive water for Apple Watch</span>
<h3 class="portfolio-title">Slosh</h3>
<p class="portfolio-status">Active development · watchOS + iOS</p>
</div>
</a>
</div>

<div class="portfolio-legal">
Expand Down
8 changes: 8 additions & 0 deletions products/dark-product.css
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@ body.dark-product-page {
.psyfi-hero { aspect-ratio: 1400 / 933; }
.surveillance-survivor-hero { aspect-ratio: 1280 / 640; }
.waykin-hero { aspect-ratio: 1024 / 1024; }
.slosh-hero { aspect-ratio: 416 / 496; }

.marigold-hero,
.hexwire-hero,
Expand All @@ -203,6 +204,10 @@ body.dark-product-page {
min-height: 0;
align-self: center;
}
.slosh-hero {
min-height: 0;
align-self: center;
}
.marigold-hero img,
.hexwire-hero img,
.hollersports-hero img,
Expand All @@ -212,6 +217,9 @@ body.dark-product-page {
.waykin-hero img {
min-height: 0;
}
.slosh-hero img {
min-height: 0;
}

.dark-product-page .product-section {
position: relative;
Expand Down
3 changes: 2 additions & 1 deletion products/hexwire.html
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ <h2>What it is</h2>
<h2>In short</h2>
<div>
<p>Tactical cyberpunk hex-grid RPG for iPhone and iPad. Power costs exposure; four runner roles, authored missions, and a pressure-driven combat loop.</p>
<a class="text-link" href="https://github.com/Zero-State-LLC/Hexwire">Source on GitHub <span aria-hidden="true">↗</span></a>
<p>The campaign includes a persistent economy with nuyen, black-market access, and cyberware; faction heat between missions; seeded replay rerolls; an endless gauntlet; and New Game+ scaling.</p>
<p>GameState is the single gameplay authority. UI and SpriteKit layers emit intents and render from state. Owner-device touch-layer checks, disabling development mission unlock, and App Store signing remain release blockers.</p>
</div>
</div></div>
</section>
Expand Down
7 changes: 5 additions & 2 deletions products/hollersports.html
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,11 @@ <h2>What it is</h2>
<div class="product-detail"><div class="split">
<h2>In short</h2>
<div>
<p>Sports analysis that isolates every slate, fingerprints its inputs, and refuses silent bleed between runs — so the same slate can be reproduced and audited.</p>
<a class="text-link" href="https://github.com/Zero-State-LLC/Hollersports">Source on GitHub <span aria-hidden="true">↗</span></a>
<p><strong>State isolation.</strong> Every slate starts from <code>init_new_slate_state</code> with no artifacts from previous runs.</p>
<p><strong>Provenance.</strong> Inputs and intermediate artifacts are fingerprinted—source games and datasets, category, game context, and calibration—so analysis can be audited end to end.</p>
<p><strong>Input validation.</strong> Before processing, state is asserted against the current games, datasets, and provider so stale state cannot be reused by accident.</p>
<p><strong>Controlled calibration.</strong> Cross-slate calibration is opt-in and explicit; the default is discard, not silent merge.</p>
<p>A companion feedback loop can ingest expected outcomes and game results, compute residuals, and update model priors with append-only ledgers. Engine architecture and validation live in the product repository.</p>
</div>
</div></div>
</section>
Expand Down
2 changes: 1 addition & 1 deletion products/marigold-market.html
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ <h2>What it is</h2>
<h2>In short</h2>
<div>
<p>Cozy shelf-sorting on iPhone: match triples, restock rooms, clear levels without timers or lives. Feel-good juice is the product, not an afterthought.</p>
<a class="text-link" href="https://github.com/Zero-State-LLC/Marigold-Market">Source on GitHub <span aria-hidden="true">↗</span></a>
<p>Item sets in flight include Pantry, Café, Craft room, and Vanity. Stack is SwiftUI, SpriteKit, pure-Swift GameCore, and XcodeGen. Home-screen label: Marigold.</p>
</div>
</div></div>
</section>
Expand Down
2 changes: 1 addition & 1 deletion products/patchhive.html
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ <h2>What it is</h2>
<h2>In short</h2>
<div>
<p>Turn a verified modular rig into clear, publishable patch books — complete on one page, without pretending to be a synth or hardware controller.</p>
<a class="text-link" href="https://github.com/Zero-State-LLC/Patch-Hive">Source on GitHub <span aria-hidden="true">↗</span></a>
<p>Canonical MVP and PatchBook Design Engine land on <code>main</code>; design engine flags default off. Visual System Intelligence P0 covers photo evidence, inventory gate, and multi-photo fusion with mock vision. Production deploy has not been performed; live payments stay disabled.</p>
</div>
</div></div>
</section>
Expand Down
2 changes: 1 addition & 1 deletion products/psyfi.html
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ <h2>What it is</h2>
<h2>In short</h2>
<div>
<p>A research instrument for consciousness-field simulation and phenomenology visualization. Expressive field, precise controls — not medical advice.</p>
<a class="text-link" href="https://github.com/Zero-State-LLC/Psy-Fi">Source on GitHub <span aria-hidden="true">↗</span></a>
<p>API freezes, readiness boards, and contracts remain part of the product’s internal development surface. This page is a controlled parent-brand summary and does not expand product claims beyond the current product posture.</p>
</div>
</div></div>
</section>
Expand Down
67 changes: 67 additions & 0 deletions products/slosh.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Slosh is an interactive water experience for Apple Watch and iPhone — fifteen living water modes driven by motion, touch, and place.">
<meta name="theme-color" content="#0c100f">
<title>Slosh — Zero State</title>
<link rel="icon" href="../assets/danny-email-bundle/retina/zero_state_mark_3_retina.png" type="image/png">
<link rel="stylesheet" href="../styles-dark.css">
<link rel="stylesheet" href="dark-product.css">
</head>
<body class="dark-product-page">
<a class="skip-link" href="#main">Skip to content</a>

<header class="masthead" data-masthead>
<div class="masthead-inner">
<a class="wordmark" href="../index.html" aria-label="Zero State home"><img src="../assets/danny-email-bundle/retina/zero_state_mark_3_retina.png" alt="" width="32" height="42"><span>ZERØ STATE</span></a>
<nav aria-label="Primary">
<a class="nav-signal" href="../index.html#contact">Begin here</a><a href="../index.html#method">Method</a><a href="../index.html#evidence">Evidence</a><a href="../work.html">Full portfolio</a>
</nav>
</div>
</header>

<main id="main" class="product-main">
<section class="page-hero shell product-hero">
<p class="eyebrow">Interactive water for Apple Watch</p>
<h1>Slosh</h1>
<p class="hero-lede">Wear water on your wrist. Discover it on iPhone. Fifteen living water modes respond to motion, touch, and place.</p>
<p class="status">Active development · watchOS + iOS · physical-device validation remains</p>
<figure class="product-hero-stage slosh-hero">
<img src="../assets/products/slosh-hero.gif" alt="Slosh calm ocean water experience" width="416" height="496" loading="eager" decoding="async">
</figure>
</section>

<section class="product-section">
<div class="product-detail"><div class="split">
<h2>What it is</h2>
<div>
<p>Slosh is a watchOS water instrument: look straight down into an ocean, tide pool, rain shower, or other authored water experience and let the wrist become the control surface.</p>
<p>Tilt the watch and the swell rolls with you. Shake it and the surface stirs. Tap it and a ripple spreads. SpriteKit fragment shaders provide the per-pixel water while SwiftUI carries the app shell.</p>
</div>
</div></div>
</section>

<section class="product-section section-accent">
<div class="product-detail"><div class="split">
<h2>Water, with provenance</h2>
<div>
<p>The iPhone companion is the discovery and configuration surface. Reviewed places can carry live hydro conditions from NOAA and USGS while keeping the worn experience quiet, immediate, and free of telemetry.</p>
<p>All fifteen authored modes render in the simulator. Physical-watch tilt behavior, frame rate, battery impact, and App Store readiness remain open validation gates.</p>
</div>
</div></div>
</section>
<section class="product-back"><div class="product-back-inner"><p>Return to the evidence</p><a href="../index.html#evidence">All projects ↖</a></div></section>
</main>

<footer>
<a class="wordmark" href="../index.html"><img src="../assets/danny-email-bundle/retina/zero_state_mark_3_retina.png" alt="" width="30" height="40"><span>ZERØ STATE</span></a>
<p class="footer-statement">Software for a world that keeps changing.</p>
<div class="footer-links">
<a href="../privacy.html">Privacy</a><a href="../terms.html">Terms</a><a href="../marketing.html">Products</a><a href="../contact.html">Support</a><a href="../index.html">Home</a>
</div>
<p class="footer-meta">© <span data-year></span> Zero State LLC</p>
</footer>
<script src="../script-home.js"></script>
</body>
</html>
4 changes: 2 additions & 2 deletions products/surveillance-survivor.html
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ <h2>What it is</h2>
<div class="product-detail"><div class="split">
<h2>In short</h2>
<div>
<p>A satirical survivor roguelite about staying untrackable. Pre-alpha: playable in simulator, not a store release yet.</p>
<a class="text-link" href="https://github.com/Zero-State-LLC/Surveillance-Survivor">Source on GitHub <span aria-hidden="true">↗</span></a>
<p>Tone is paranoid slapstick, not horror realism. A deterministic fixed-step Swift core owns game truth; SpriteKit projects state; SwiftUI supplies shell and HUD. The vertical slice includes Suspicion, destructible LPR poles, upgrades, district authorities, campaign unlocks, and Blind Spot extraction.</p>
<p>Physical-device acceptance and App Store owner fields remain open—do not describe the project as release-ready.</p>
</div>
</div></div>
</section>
Expand Down
4 changes: 2 additions & 2 deletions products/waykin.html
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ <h2>What it is</h2>
<div class="product-detail"><div class="split">
<h2>In short</h2>
<div>
<p>An iOS companion that walks with you in audio and adaptive world response — bond and motion first, not another map-and-metric fitness app.</p>
<a class="text-link" href="https://github.com/Zero-State-LLC/Waykin">Source on GitHub <span aria-hidden="true">↗</span></a>
<p>Home → Begin Walk (real) or Demo Walk → Active Session → Session Summary → Memory. Demo Mode runs the same deterministic loop without physical movement or location permission.</p>
<p>Walking, Lira runtime, Bond progression, semantic audio cues, and local session memories are implemented and package-tested. Device audio acceptance remains direct evidence, not assumed.</p>
</div>
</div></div>
</section>
Expand Down
28 changes: 18 additions & 10 deletions scripts/validate-site.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ const requiredPages = [
'privacy.html', 'terms.html', 'marketing.html',
'products/waykin.html', 'products/patchhive.html', 'products/psyfi.html',
'products/surveillance-survivor.html', 'products/hexwire.html',
'products/hollersports.html', 'products/marigold-market.html',
'products/hollersports.html', 'products/marigold-market.html', 'products/slosh.html',
'skills/orchestra.html', 'skills/hyperlex.html', 'skills/kubrick.html', 'skills/neon-genie.html'
];
const requiredHeroes = [
Expand All @@ -20,6 +20,7 @@ const requiredHeroes = [
'assets/products/hexwire-hero.png',
'assets/products/hollersports-hero.jpg',
'assets/products/marigold-hero.jpg',
'assets/products/slosh-hero.gif',
'assets/skills/orchestra-hero.jpg',
'assets/skills/hyperlex-hero.jpg',
'assets/skills/kubrick-hero.jpg',
Expand Down Expand Up @@ -60,6 +61,7 @@ const psyfi = fs.readFileSync(path.join(root, 'products/psyfi.html'), 'utf8');
const hollersports = fs.readFileSync(path.join(root, 'products/hollersports.html'), 'utf8');
const marigold = fs.readFileSync(path.join(root, 'products/marigold-market.html'), 'utf8');
const hexwire = fs.readFileSync(path.join(root, 'products/hexwire.html'), 'utf8');
const slosh = fs.readFileSync(path.join(root, 'products/slosh.html'), 'utf8');
const cssDark = fs.readFileSync(path.join(root, 'styles-dark.css'), 'utf8');

// Official dark home — primary identity logo + social preview
Expand All @@ -73,7 +75,7 @@ if (!exists('styles-dark.css')) fail('styles-dark.css', 'official dark home styl
if (!/hero-grid/.test(index)) fail('index.html', 'landing field grid is missing');

// Org portfolio completeness
for (const name of ['Waykin', 'PatchHive', 'PsyFi', 'Surveillance Survivor', 'HexWire', 'Hollersports', 'Marigold Market']) {
for (const name of ['Waykin', 'PatchHive', 'PsyFi', 'Surveillance Survivor', 'HexWire', 'Hollersports', 'Marigold Market', 'Slosh']) {
if (!index.includes(name)) fail('index.html', `${name} is missing from selected work`);
if (!work.includes(name)) fail('work.html', `${name} is missing from portfolio`);
}
Expand All @@ -84,6 +86,7 @@ if (!/assets\/products\/surveillance-survivor-hero\.png/.test(work)) fail('work.
if (!/assets\/products\/hexwire-hero\.png/.test(work)) fail('work.html', 'HexWire hero image is missing');
if (!/assets\/products\/hollersports-hero\.jpg/.test(work)) fail('work.html', 'Hollersports hero image is missing');
if (!/assets\/products\/marigold-hero\.jpg/.test(work)) fail('work.html', 'Marigold Market hero image is missing');
if (!/assets\/products\/slosh-hero\.gif/.test(work)) fail('work.html', 'Slosh hero image is missing');

if (!/Active pre-alpha · simulator-ready · not release-ready/.test(work) && !/Active pre-alpha · simulator-ready vertical slice · not release-ready/.test(work)) {
fail('work.html', 'Surveillance Survivor readiness posture is missing or overstated');
Expand All @@ -92,17 +95,22 @@ if (!/Stabilized vertical slice · CI-verified · device and App Store release g
fail('work.html', 'HexWire readiness posture is missing or overstated');
}
if (!/iPhone-first satirical survivor roguelite/.test(surveillance)) fail('products/surveillance-survivor.html', 'canonical README description is missing');
if (!/Zero-State-LLC\/Surveillance-Survivor/.test(surveillance)) fail('products/surveillance-survivor.html', 'canonical repository link is missing');
if (!/Zero-State-LLC\/Waykin/.test(waykin)) fail('products/waykin.html', 'canonical repository link is missing');
if (!/Zero-State-LLC\/Patch-Hive/.test(patchhive)) fail('products/patchhive.html', 'canonical repository link is missing');
if (!/Zero-State-LLC\/Psy-Fi/.test(psyfi)) fail('products/psyfi.html', 'canonical repository link is missing');
if (!/Zero-State-LLC\/Hollersports/.test(hollersports)) fail('products/hollersports.html', 'canonical repository link is missing');
if (!/Zero-State-LLC\/Marigold-Market/.test(marigold)) fail('products/marigold-market.html', 'canonical repository link is missing');
if (!/tactical cyberpunk hex-grid RPG/.test(hexwire)) fail('products/hexwire.html', 'canonical HexWire README description is missing');
if (!/Signal → Power → Trace → Escalation → Lay Low → Tempo Tradeoff/.test(hexwire)) fail('products/hexwire.html', 'canonical HexWire pressure loop is missing');
if (!/Zero-State-LLC\/Hexwire/.test(hexwire)) fail('products/hexwire.html', 'canonical repository link is missing');
if (!/not medical advice/.test(psyfi)) fail('products/psyfi.html', 'PsyFi research-only disclaimer is missing');
if (!/Eurorack rig-intelligence/.test(patchhive)) fail('products/patchhive.html', 'PatchHive canonical product description is missing');
if (!/fifteen living water modes/i.test(slosh)) fail('products/slosh.html', 'Slosh water-mode description is missing');
if (!/watchOS \+ iOS/.test(slosh)) fail('products/slosh.html', 'Slosh platform posture is missing');
for (const [name, html] of [
['products/waykin.html', waykin], ['products/patchhive.html', patchhive],
['products/psyfi.html', psyfi], ['products/surveillance-survivor.html', surveillance],
['products/hexwire.html', hexwire], ['products/hollersports.html', hollersports],
['products/marigold-market.html', marigold], ['products/slosh.html', slosh]
]) {
if (/<a\b[^>]*href=["'][^"']*(?:github\.com|gitlab\.com|bitbucket\.org)[^"']*["']/i.test(html)) {
fail(name, 'product page exposes a codebase link');
}
}

// Hermes / OpenClaw skills section
for (const name of ['Abraxas Orchestra', 'Hyperlex', 'Kubrick', 'Neon Genie']) {
Expand Down Expand Up @@ -142,7 +150,7 @@ if (!/zer0state@zer0state\.com/.test(fs.readFileSync(path.join(root, 'terms.html
if (!/zer0state@zer0state\.com/.test(contact)) fail('contact.html', 'operational contact is missing');
if (!/support/i.test(contact)) fail('contact.html', 'support framing is missing');
if (!/Zero State LLC/.test(marketing)) fail('marketing.html', 'legal entity name is missing');
if (!/Marigold Market/.test(marketing)) fail('marketing.html', 'product marketing cards are incomplete');
if (!/Marigold Market/.test(marketing) || !/Slosh/.test(marketing)) fail('marketing.html', 'product marketing cards are incomplete');
if (!/privacy\.html/.test(marketing)) fail('marketing.html', 'privacy link is missing');
if (!/contact\.html/.test(marketing)) fail('marketing.html', 'support link is missing');
if (!/Zero State LLC/.test(about)) fail('about.html', 'legal entity name is missing');
Expand Down
4 changes: 3 additions & 1 deletion site-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"products/hexwire.html",
"products/hollersports.html",
"products/marigold-market.html",
"products/slosh.html",
"skills/orchestra.html",
"skills/hyperlex.html",
"skills/kubrick.html",
Expand All @@ -31,7 +32,8 @@
"Zero-State-LLC/Surveillance-Survivor",
"Zero-State-LLC/Hexwire",
"Zero-State-LLC/Hollersports",
"Zero-State-LLC/Marigold-Market"
"Zero-State-LLC/Marigold-Market",
"Zero-State-LLC/slosh"
],
"public_sources": {
"org_repositories": "https://github.com/orgs/Zero-State-LLC/repositories",
Expand Down
Loading
Loading