Skip to content
Merged
16 changes: 4 additions & 12 deletions src/_includes/layouts/base.njk
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<!doctype html>
<!-- Usage: every ordinary site page inherits this static navigation and advertises the machine-readable AI context without requiring JavaScript. -->
<!-- Usage: every ordinary site page inherits a human-facing navigation. Machine-readable context remains discoverable through head metadata and dedicated routes without occupying the visible reading path. -->
<html lang="en">
<head>
<meta charset="utf-8">
Expand All @@ -17,15 +17,13 @@
<body>
<a class="skip-link" href="#content">Skip to content</a>
<header class="site-header" data-site-header>
<a class="brand" href="/home/" aria-label="The Interdependent Way knowledge-system home">
<a class="brand" href="/home/" aria-label="The Interdependent Way home">
<span class="brand-mark" aria-hidden="true"><i></i><i></i><i></i></span>
<span><strong>The Interdependent Way</strong><small>living public knowledge system</small></span>
</a>
<button class="nav-toggle" type="button" hidden aria-expanded="false" aria-controls="primary-nav">Menu</button>
<nav id="primary-nav" class="primary-nav" aria-label="Primary navigation">
<a href="/">Awakening</a>
<a href="/way/">Start</a>
<a href="/preamble/">Preamble</a>
<a href="/way/">The Way</a>
<a href="/chapters/">Textbook</a>
<a href="/narratives/">Narratives</a>
<a href="/projects/">Projects</a>
Expand All @@ -40,13 +38,7 @@
<footer class="site-footer">
<div>
<strong>The Interdependent Way</strong>
<p>Canon, distributed textbook, interpretation, research, implementation, and frontier claims are kept visibly distinct.</p>
</div>
<div class="footer-provenance">
<span>Canon alias: {{ generated.canon.source.repository }}</span>
<span>Path: {{ generated.canon.source.path }}</span>
<span>Digest: <code>{{ generated.canon.source.contentSha256 | truncate(18, true, '…') }}</code></span>
<span>Textbook: {{ generated.textbook.chapterCount }} distributed chapters</span>
<p>Canon, textbook, interpretation, research, implementation, and frontier claims remain distinct even when they are connected through the same site.</p>
</div>
<div class="hmmm-boundary"><strong>hmmm</strong><span>Honest incompletion remains visible so the next action has somewhere true to begin.</span></div>
</footer>
Expand Down
44 changes: 19 additions & 25 deletions src/home/index.njk
Original file line number Diff line number Diff line change
@@ -1,46 +1,40 @@
---
layout: layouts/base.njk
title: The Interdependent Way
description: The living public knowledge system for the canon, distributed textbook, deliberate tensions, research, applications, and implementation projects.
description: The human-facing entrance to the Way, its textbook, narratives, research, and implementation work.
permalink: /home/
---
<!-- Usage: this is the ordinary human homepage; the AI-context panel gives machine readers and auditors a direct path to the bounded source artifact. -->
<section class="hero">
<div>
<p class="eyebrow">Canon · textbook · interpretation · research · implementation · frontier</p>
<h1>A way through complexity without pretending the tension is gone.</h1>
<p class="lede">The Interdependent Way is a dense living text and a constellation of attempts to test, explain, implement, challenge, and preserve it. The Preamble is directly available here; the distributed Interdependency textbook now restores chapters Zero through Seven into one reading sequence.</p>
<div class="actions"><a class="button" href="/way/">Start with the Way tree</a><a class="button secondary" href="/preamble/">Read the Preamble</a><a class="button secondary" href="/chapters/">Read the Textbook</a></div>
<p class="eyebrow">Read · test · apply · build</p>
<h1>Start with The Way. Branch outward when you need more.</h1>
<p class="lede">The Way tree is the human reading spine for this site. Canon units open in source order. Rights Article Labs sit inside the relevant units and stay collapsed until you want interpretation, limit tests, applications, or research. The textbook, narratives, projects, and research are deeper paths—not prerequisites for entering.</p>
<div class="actions"><a class="button" href="/way/">Enter the Way tree</a><a class="button secondary" href="/chapters/">Read the Textbook</a></div>
</div>
<div class="hero-field" aria-label="Three concentric fields around a thirteenth center"><span></span><strong>12 + 1</strong></div>
</section>
<section class="panel">
<p class="eyebrow">AI and machine readers</p>
<h2>One bounded context before inference</h2>
<p>The machine-oriented context preserves the content contract, exact canon and textbook copies, public biography, provenance, and the boundary between source vocabulary and actual measurement.</p>
<div class="actions"><a class="button" href="/eai/aicontext.md" type="text/markdown">Read the AI context</a><a class="button secondary" href="/llms.txt" type="text/plain">Read concise machine instructions</a></div>
<p class="eyebrow">The Way is the spine</p>
<h2>Read the source before choosing a branch.</h2>
<p>The Way tree keeps the source structure visible without forcing every layer onto the screen at once. Open a canon unit to read it. Where a reviewed Article Lab exists, open that nested box only when you want to examine the tension around the Article.</p>
<div class="actions"><a class="button" href="/way/">Open The Way</a></div>
</section>
<section class="panel">
<p class="eyebrow">Distributed Interdependency textbook</p>
<h2>Chapters Zero through Seven</h2>
<p>Eight chapters now form one continuous technical reading path across <code>metapat</code>, <code>ucns</code>, <code>edcm</code>, <code>skill-lib</code>, <code>interdependent-lib</code>, <code>ptcna</code>, <code>a0</code>, and <code>zfae</code>. Each chapter remains bound to the license, status vocabulary, and authority of the repository that carries it.</p>
<p>Eight chapters form one technical reading path across the current architecture. Each chapter remains independently revisable in the repository that carries it.</p>
<div class="actions"><a class="button" href="/chapters/">Open all eight chapters</a><a class="button secondary" href="/chapters/chapter-zero/">Begin at Chapter Zero</a></div>
</section>
<section class="panel">
<p class="eyebrow">Eight rights-article laboratories</p>
<h2>From canon excerpt to public practice</h2>
<p>All eight Rights articles now have a canon-bounded path through exact excerpt, note conversation, reductio ad absurdum, worst and best practices, applications across eleven domains, and a study-only research field with explicit coverage gaps.</p>
<div class="actions"><a class="button" href="/way/">Open the Way tree and Article Labs</a><a class="button secondary" href="/articles/">Read publication drafts</a></div>
<p class="eyebrow">Living narratives</p>
<h2>Test the Way against lived situations.</h2>
<p>Fictional and narrative work explores competence, consent, failure, adulthood, and interdependence without becoming canon or research evidence.</p>
<div class="actions"><a class="button" href="/narratives/">Enter Living Narratives</a></div>
</section>
<section class="panel">
<p class="eyebrow">Living narratives · fiction under constraint</p>
<h2>What happens after the copying is finished?</h2>
<p>Jack and Diane begin an alternating journal after completing handwritten copies of the Way. Their fictional record tests adulthood, competence, consent, failure, and interdependence without becoming canon or research evidence.</p>
<div class="actions"><a class="button" href="/narratives/jack-and-diane/">Read Jack &amp; Diane</a><a class="button secondary" href="/narratives/">Enter Living Narratives</a></div>
<p class="eyebrow">Implementation and inquiry</p>
<h2>Follow the work outward.</h2>
<p>Projects, artifacts, works, and research are places where the ideas are implemented, challenged, measured, or extended. They remain distinct from the source they examine.</p>
<div class="actions"><a class="button" href="/projects/">Projects</a><a class="button secondary" href="/research/method/">Research</a><a class="button secondary" href="/works/">Works</a></div>
</section>
<section class="panel">
<p class="eyebrow">Current field snapshot</p>
<h2>{{ generated.repos.publicRepoCount }} public repositories · {{ generated.canon.units.length }} canonical units · {{ generated.textbook.chapterCount }} textbook chapters</h2>
<p>Project data was generated {{ generated.repos.snapshotAt | dateOnly }}{% if generated.repos.fallback %} from the last verified snapshot{% endif %}. Canon digest <code>{{ generated.canon.source.contentSha256 }}</code>. Textbook complete: <code>{{ generated.textbook.complete }}</code>.</p>
</section>
<section class="hmmm"><h2>hmmm</h2><p>The textbook now has a complete public reading spine, while each chapter remains independently revisable in its source repository. The Article Lab now excludes legislation, standards, guidelines, frameworks, and other non-study records from Research. Its retained study claims still need full-text locators, design-specific appraisal, stronger dissent, replication, field studies, disability-led critique, and non-Western evidence.</p></section>
<section class="hmmm"><h2>hmmm</h2><p>The public reading spine is usable, but the surrounding system remains deliberately revisable. New evidence, stronger dissent, better implementation, and clearer explanation can change the branches without silently rewriting the source.</p></section>
10 changes: 4 additions & 6 deletions src/index.njk
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: layouts/splash.njk
title: Awakening · The Interdependent Way
description: The canonical Awakening of The Interdependent Way, presented as the public threshold into the Preamble and living knowledge system.
description: The canonical Awakening of The Interdependent Way, presented as the public threshold into the Way.
---
{% set awakenings = generated.canon.units | where("title", "Awakening") %}
{% set awakening = awakenings[0] %}
Expand All @@ -13,14 +13,12 @@ description: The canonical Awakening of The Interdependent Way, presented as the
{% if awakening %}
<div class="awakening-text">{{ awakening.content | replace("Awakening \n", "") | replace("Awakening\n", "") }}</div>
<div class="awakening-actions" aria-label="Continue from Awakening">
<a class="button" href="/preamble/">Read the Preamble</a>
<a class="button secondary" href="/home/">Enter the living system</a>
<a class="awakening-source" href="/source/{{ awakening.routeSlug }}/">Exact source and provenance</a>
<a class="button" href="/way/">Enter The Way</a>
</div>
<p class="awakening-provenance">Canon <code>{{ generated.canon.source.repository }}:{{ generated.canon.source.path }}</code> · lines {{ awakening.startLine }}–{{ awakening.endLine }} · digest <code>{{ awakening.hash | truncate(18, true, '…') }}</code></p>
<p class="section-intro">Continue into the Way tree. Canon units unfold in their source order; Article Labs stay closed until you choose to open them.</p>
{% else %}
<section class="hmmm"><h2>hmmm</h2><p>The selected canon did not produce an Awakening unit. The release gate must treat the missing threshold as a broken public contract.</p></section>
<div class="awakening-actions"><a class="button" href="/preamble/">Read the Preamble</a><a class="button secondary" href="/home/">Enter the living system</a></div>
<div class="awakening-actions"><a class="button" href="/way/">Enter The Way</a></div>
{% endif %}
</div>
</section>
36 changes: 33 additions & 3 deletions src/way/index.njk
Original file line number Diff line number Diff line change
@@ -1,7 +1,37 @@
---
layout: layouts/base.njk
title: Explore The Way
description: An expandable map of The Interdependent Way.
description: A human-readable expandable map of The Interdependent Way with Article Labs nested beneath the canon units they examine.
---
<header class="page-head"><p class="eyebrow">Canon-derived map</p><h1>Explore The Way</h1><p class="lede">Select a title to display that canon unit's exact text.</p></header>
<ul class="index-list canon-outline">{% for unit in generated.canon.units %}{% set labMatches = article_lab | where("unit_id", unit.id) %}<li class="unit-level-{{ unit.level }}" data-parent-id="{{ unit.parentId or '' }}"><details class="canon-unit" id="{{ unit.routeSlug }}"><summary class="canon-unit-summary"><strong>{{ unit.title }}</strong></summary><pre class="source-block">{{ unit.content }}</pre>{% if labMatches.length %}<p class="canon-unit-lab"><a href="/lab/{{ unit.routeSlug }}/">Open Article Lab</a></p>{% endif %}</details></li>{% endfor %}</ul>
<header class="page-head">
<p class="eyebrow">The human reading spine</p>
<h1>Explore The Way</h1>
<p class="lede">Open a title to read that unit in source order. Where a reviewed Article Lab exists, it appears as a second collapsible box inside the unit. Exact source text remains available one level deeper instead of occupying the first reading surface.</p>
</header>
<ul class="index-list canon-outline">
{% for unit in generated.canon.units %}
{% set labMatches = article_lab | where("unit_id", unit.id) %}
{% set lab = labMatches[0] %}
<li class="unit-level-{{ unit.level }}" data-parent-id="{{ unit.parentId or '' }}">
<details class="canon-unit" id="{{ unit.routeSlug }}">
<summary class="canon-unit-summary"><strong>{{ unit.title }}</strong>{% if lab %} <span class="status status-interpretation">Article Lab</span>{% endif %}</summary>
<blockquote class="reading canon-reading">
<p class="eyebrow">Canon text · {{ unit.title }}</p>
{% for line in unit.content | canonUnitBody %}<p>{{ line }}</p>{% endfor %}
</blockquote>
{% if lab %}
<details class="article-lab-box">
<summary><strong>Article Lab</strong> · {{ lab.public_title }}</summary>
<p><strong>Working boundary:</strong> {{ lab.ad_absurdum.boundary }}</p>
<p>This Lab keeps interpretation separate from canon. Open the full review for the paired failure tests, worst and best practices, domain applications, and reviewed research field.</p>
<p class="canon-unit-lab"><a href="/lab/{{ unit.routeSlug }}/">Open full Article Lab</a></p>
</details>
{% endif %}
<details class="source-disclosure">
<summary>Exact source text</summary>
<pre class="source-block">{{ unit.content }}</pre>
</details>
</details>
</li>
{% endfor %}
</ul>
24 changes: 15 additions & 9 deletions tests/generated-site.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export async function checkAiContextPublicDiscovery() {
readFile('_site/sitemap.xml', 'utf8'),
readFile('_site/llms.txt', 'utf8')
]);
assert.match(home, /href="\/eai\/aicontext\.md"/);
assert.doesNotMatch(home, /<a[^>]+href="\/eai\/aicontext\.md"/);
assert.match(home, /rel="alternate" type="text\/markdown" href="\/eai\/aicontext\.md"/);
assert.match(splash, /rel="alternate" type="text\/markdown" href="\/eai\/aicontext\.md"/);
assert.match(sitemap, /<loc>https:\/\/interdependentway\.org\/eai\/aicontext\.md<\/loc>/);
Expand Down Expand Up @@ -52,14 +52,15 @@ test('generated deployment artifact contains the unified routes', async () => {
assert.match(splash, /<h1>Awakening<\/h1>/);
assert.match(splash, /5d explodes out of 4d/);
assert.match(splash, /You are not alone/);
assert.match(splash, /href="\/preamble\/"[^>]*>Read the Preamble/);
assert.match(splash, /href="\/home\/"[^>]*>Enter the living system/);
assert.match(splash, /href="\/way\/"[^>]*>Enter The Way/);
assert.doesNotMatch(splash, /href="\/preamble\/"[^>]*>Read the Preamble/);
assert.doesNotMatch(splash, /href="\/home\/"[^>]*>Enter the living system/);
assert.doesNotMatch(splash, /primary-nav/);
assert.match(home, /A way through complexity/);
assert.match(home, /href="\/preamble\/"[^>]*>Read the Preamble/);
assert.match(home, /Start with The Way/);
assert.match(home, /href="\/way\/"/);
assert.match(home, /href="\/chapters\/"/);
assert.match(home, /Chapters Zero through Seven/);
assert.match(home, /href="\/"/);
assert.doesNotMatch(home, /<a[^>]+href="\/eai\/aicontext\.md"/);
assert.match(preamble, /One-click canon entrance/);
assert.match(preamble, /Humanity faces extinction/);
assert.match(preamble, /Canonical repository/);
Expand Down Expand Up @@ -147,12 +148,17 @@ test('Way map renders Human consciousness beneath Interdefinables and before Pre
assert.doesNotMatch(way, /<h2>Human consciousness emerges from:?<\/h2>/);
assert.match(way, /<details class="canon-unit"/);
assert.match(way, /<summary class="canon-unit-summary">/);
assert.match(way, /Select a title to display that canon unit's exact text/);
assert.equal((way.match(/class="canon-unit-lab"/g) || []).length, 8);
assert.match(way, /Open Article Lab/);
assert.match(way, /Open a title to read that unit in source order/);
assert.equal((way.match(/class="article-lab-box"/g) || []).length, 8);
assert.equal((way.match(/class="source-disclosure"/g) || []).length, canonUnitCount(way));
assert.match(way, /Open full Article Lab/);
assert.doesNotMatch(way, /Open unit page|Enter Lab|Source and provenance|tap to read|text open/);
});

function canonUnitCount(html) {
return (html.match(/class="canon-unit"/g) || []).length;
}

test('generated deployment artifact contains all rights article vertical slices with research attachment', async () => {
const pages = [
['article-one', /Contribution without contempt/, /From each as they will/],
Expand Down
Loading
Loading