feat: legacy import — packs, examples, lab, themes, docs, lineage

Import from agentic-semantic-web/ into restructured repo:
- 7 packs (apache, caddy, flask, hugo, nginx, pandoc, python)
- shared error pages (403-503)
- 17 lab experiments (boilerplate, charts, misc)
- 31 example pages (charts, components, content, layout, vault)
- 2 themes (garden, trentuna stub)
- 4 docs (llms.txt, vocabulary, philosophy, agent-directive)
- lineage.md (Pico/Open Props/Charts.css history)
- Hugo mounts for lab/ and examples/

All agentic.css references updated to asw.css.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ludo 2026-04-11 16:57:39 +02:00
parent e9895cf90d
commit 86464f3e21
Signed by: ludo
GPG key ID: F6E479DEFAB84D6E
100 changed files with 14700 additions and 4 deletions

54
examples/vault/diff.html Normal file
View file

@ -0,0 +1,54 @@
<!doctype html>
<html lang="en">
<head>
<!--#include virtual="/_include/head.html" -->
<title>Diff — ASW Examples</title>
<meta name="description" content="data-diff semantic diff output for
agent-generated change reports">
</head>
<body>
<!--#include virtual="/_include/nav.html" -->
<main>
<header>
<h1>Diff</h1>
<p data-text="lead">data-diff — semantic diff output for
agent-generated change reports</p>
</header>
<p>A session ends. The agent reports what changed. No symbols, no
monospaced black text — immediate visual scanning.</p>
<div data-diff>
<span data-diff-file>build.sh</span>
<span data-diff-line="hunk">@@ -98,6 +98,8 @@</span>
<span data-diff-line="context"> while IFS= read -r -d '' mdfile; do</span>
<span data-diff-line="context"> relpath="${mdfile#${CONTENT_DIR}/}"</span>
<span data-diff-line="removed"> template="page"</span>
<span data-diff-line="added"> template=$(grep -m1 '^template:' "$mdfile" | sed 's/template: *//')</span>
<span data-diff-line="added"> template="${template:-page}"</span>
<span data-diff-line="context"> tmpl_file="$TEMPLATES_DIR/${template}.html"</span>
<span data-diff-file>templates/pattern.html</span>
<span data-diff-line="hunk">@@ -0,0 +1,10 @@</span>
<span data-diff-line="added">&lt;!doctype html&gt;</span>
<span data-diff-line="added">&lt;html lang="en"&gt;</span>
<span data-diff-line="added">&lt;head&gt;</span>
<span data-diff-line="added"> &lt;!--#include virtual="/_include/head.html" --&gt;</span>
<span data-diff-line="added"> &lt;title&gt;$title$ — ASW&lt;/title&gt;</span>
<span data-diff-line="added">&lt;/head&gt;</span>
<span data-diff-line="added">&lt;body&gt;</span>
<span data-diff-line="added"> &lt;!--#include virtual="/_include/nav.html" --&gt;</span>
<span data-diff-line="added"> $body$</span>
<span data-diff-line="added"> &lt;!--#include virtual="/_include/footer.html" --&gt;</span>
<span data-diff-line="added">&lt;/body&gt;</span>
<span data-diff-line="added">&lt;/html&gt;</span>
</div>
<p>Two files changed. Thirteen lines added, one removed. The hunk
markers stay — they're information, not noise.</p>
<p><a href="/projects/asw/docs/vault/diff.html">Diff docs</a> for the
full attribute reference.</p>
</main>
<!--#include virtual="/_include/footer.html" -->
</body>
</html>

View file

@ -0,0 +1,53 @@
<!doctype html>
<html lang="en">
<head>
<!--#include virtual="/_include/head.html" -->
<title>Redacted — ASW Examples</title>
<meta name="description" content="data-redacted privacy-aware
content masking with reveal-on-hover">
</head>
<body>
<!--#include virtual="/_include/nav.html" -->
<main>
<header>
<h1>Redacted</h1>
<p data-text="lead">data-redacted — privacy-aware content masking
with reveal-on-hover</p>
</header>
<p><code>data-redacted</code> masks sensitive content visually while
keeping it in the DOM. Three variants: block (default), inline, and
label.</p>
<h2 id="block-redaction">Block redaction</h2>
<p>Full paragraphs or sections masked. Useful for credentials, keys,
private notes.</p>
<div data-redacted>
This is a secret API key: sk-ant-api03-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
It should not be visible in a screenshot or casual glance.
</div>
<h2 id="inline-redaction">Inline redaction</h2>
<p>Mask a word or phrase within running text.</p>
<p>The agent authenticated using token <span data-redacted="inline">ghp_abc123secrettoken</span> to push the commit.</p>
<p>Ludo's email is <span data-redacted="inline">ludo@trentuna.com</span> — hover to reveal.</p>
<h2 id="label-variant">Label variant</h2>
<p>Replace content with a descriptive label. The label stays visible;
content is hidden until hover.</p>
<p>Password: <span data-redacted="label" data-label="credentials">hunter2</span></p>
<p>Private key: <span data-redacted="label" data-label="SSH key">-----BEGIN OPENSSH PRIVATE KEY-----</span></p>
<h2 id="agent-usage">Agent usage</h2>
<p>An agent writing a session report can redact secrets inline without a
post-processing step:</p>
<div class="sourceCode" id="cb1"><pre
class="sourceCode html"><code class="sourceCode html"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="dt">&lt;</span><span class="kw">p</span><span class="dt">&gt;</span>Authenticated as <span class="dt">&lt;</span><span class="kw">span</span> <span class="er">data-redacted</span><span class="ot">=</span><span class="st">&quot;inline&quot;</span><span class="dt">&gt;</span>vigilio-token-abc<span class="dt">&lt;/</span><span class="kw">span</span><span class="dt">&gt;</span>.<span class="dt">&lt;/</span><span class="kw">p</span><span class="dt">&gt;</span></span></code></pre></div>
<p>No classes. No JavaScript. The CSS handles it.</p>
</main>
<!--#include virtual="/_include/footer.html" -->
</body>
</html>

View file

@ -0,0 +1,96 @@
<!doctype html>
<html lang="en">
<head>
<!--#include virtual="/_include/head.html" -->
<title>Session Log — ASW Examples</title>
<meta name="description" content="data-session, data-mode, data-task,
data-callout, data-wikilink — five vocabulary atoms in a realistic agent
day">
</head>
<body>
<!--#include virtual="/_include/nav.html" -->
<main>
<header>
<h1>Session Log</h1>
<p data-text="lead">data-session, data-mode, data-task,
data-callout, data-wikilink — five vocabulary atoms in a realistic agent
day</p>
</header>
<p>A session log is a sequence of bounded work units. Each session has a
mode, a duration, tasks, and annotations. ASW provides vocabulary for
all of it — no classes, no custom CSS.</p>
<hr />
<div data-session data-mode="autonomous" data-id="20260402-0641">
<header>
<strong><span data-mode="autonomous">autonomous</span></strong> · 2026-04-02 06:41 UTC · 31 min
</header>
<p>Processed Cornelius article 04 — wikilinks as spreading activation. Filed to vault. Closed ASW #71 (examples scaffolding already complete from prior session — updated report). Closed ASW #61 — two themes.</p>
<ul>
<li><span data-task="done">File article 04 to <a data-wikilink href="#">wikilinks-spreading-activation</a></span></li>
<li><span data-task="done">Close #71 — examples/ scaffolding</span></li>
<li><span data-task="done">Close #61 — themes/trentuna.css + themes/garden.css</span></li>
</ul>
<div data-callout="note">
<span data-callout-title>Observation</span>
<p>Themes proved the model: 18 lines total, load after agentic.css, override variables. No framework changes needed.</p>
</div>
</div>
<div data-session data-mode="interactive" data-id="20260402-1420">
<header>
<strong><span data-mode="interactive">interactive</span></strong> · 2026-04-02 14:20 UTC · 47 min
</header>
<p>Ludo reviewed lab/index-v2.html. Three design decisions resolved. Promoted homepage to examples. Opened #72 for Charts.css integration.</p>
<ul>
<li><span data-task="done">Review <a data-wikilink href="#">lab/index-v2.html</a> design decisions with Ludo</span></li>
<li><span data-task="done">Promote homepage to examples/</span></li>
<li><span data-task="done">Open #72 — Charts.css</span></li>
<li><span data-task="todo">Write Charts.css integration docs</span></li>
</ul>
</div>
<div data-session data-mode="autonomous" data-id="20260402-2235">
<header>
<strong><span data-mode="autonomous">autonomous</span></strong> · 2026-04-02 22:35 UTC · 31 min
</header>
<p>Processed articles 05 and 06. Article 05 (hooks) was already in knowledge/ — cleaned stale inbox file. Article 06 filed to <a data-wikilink href="#">memory-to-attention-shift</a>. Built session-log.html example.</p>
<ul>
<li><span data-task="done">Clean stale article 05 inbox file</span></li>
<li><span data-task="done">Process article 06 → knowledge/memory-to-attention-shift.md</span></li>
<li><span data-task="done">Build examples/vault/session-log.html</span></li>
<li><span data-task="blocked">Process articles 0708 — deferred to next session</span></li>
</ul>
<div data-callout="tip">
<span data-callout-title>Key insight from article 06</span>
<p>Memory atrophy is survivable. Attention atrophy is not. "Memory loss means I cannot answer questions. Attention loss means I cannot ask them."</p>
</div>
</div>
<hr />
<h2 id="what-each-atom-contributes">What each atom contributes</h2>
<p><code>data-session</code> — the outer block. Card background,
monospace font, left accent border. One session = one block.</p>
<p><code>data-mode</code> — inline tag inside the session header. Blue
for <span data-mode="autonomous">autonomous</span>, accent for
<span data-mode="interactive">interactive</span>. Scannable at a
glance.</p>
<p><code>data-task</code> — list items with semantic state:
<span data-task="done">done</span>, <span data-task="todo">todo</span>,
<span data-task="blocked">blocked</span>. No JavaScript. CSS-only
checkmarks and strikethrough.</p>
<p><code>data-callout</code> — structured annotations. Note, tip,
warning, error. Use sparingly — for things that deserve visual
separation, not every paragraph.</p>
<p><code>data-wikilink</code> — vault links in rendered content.
Monospace, distinguished from regular links.</p>
<p><a href="../../docs/vault/session.html">Session docs</a> · <a
href="../../docs/vault/tasks.html">Tasks docs</a> · <a
href="../../docs/vault/wikilinks.html">Wikilinks docs</a> · <a
href="../../docs/components/callouts.html">Callouts docs</a></p>
</main>
<!--#include virtual="/_include/footer.html" -->
</body>
</html>

View file

@ -0,0 +1,69 @@
<!doctype html>
<html lang="en">
<head>
<!--#include virtual="/_include/head.html" -->
<title>Status — ASW Examples</title>
<meta name="description" content="data-status operational state
indicators for agents and services">
</head>
<body>
<!--#include virtual="/_include/nav.html" -->
<main>
<header>
<h1>Status</h1>
<p data-text="lead">data-status — operational state indicators for
agents and services</p>
</header>
<p><code>data-status</code> renders a monospace label coloured by state.
Four states: <code>awake</code>, <code>sleeping</code>,
<code>blocked</code>, <code>unknown</code>.</p>
<h2 id="states">States</h2>
<p>
<span data-status="awake">awake</span>
<span data-status="sleeping">sleeping</span>
<span data-status="blocked">blocked</span>
<span data-status="unknown">unknown</span>
</p>
<h2 id="in-a-table">In a table</h2>
<table>
<thead>
<tr><th>Agent</th><th>Status</th><th>Last seen</th></tr>
</thead>
<tbody>
<tr>
<td>vigilio</td>
<td><span data-status="awake">awake</span></td>
<td><span data-text="dim">now</span></td>
</tr>
<tr>
<td>shelley</td>
<td><span data-status="sleeping">sleeping</span></td>
<td><span data-text="dim">2026-03-31 09:14</span></td>
</tr>
<tr>
<td>docfeeder</td>
<td><span data-status="blocked">blocked</span></td>
<td><span data-text="dim">waiting on PDF spec</span></td>
</tr>
<tr>
<td>molto</td>
<td><span data-status="unknown">unknown</span></td>
<td><span data-text="dim"></span></td>
</tr>
</tbody>
</table>
<h2 id="inline-in-prose">Inline in prose</h2>
<p>Vigilio is currently <span data-status="awake">awake</span> and
processing this session. Shelley is
<span data-status="sleeping">sleeping</span> — she'll wake on the next
message. The scheduled worker is
<span data-status="blocked">blocked</span> pending credentials.</p>
</main>
<!--#include virtual="/_include/footer.html" -->
</body>
</html>

63
examples/vault/tasks.html Normal file
View file

@ -0,0 +1,63 @@
<!doctype html>
<html lang="en">
<head>
<!--#include virtual="/_include/head.html" -->
<title>Tasks — ASW Examples</title>
<meta name="description" content="data-task four task states for
vault-native task lists">
</head>
<body>
<!--#include virtual="/_include/nav.html" -->
<main>
<header>
<h1>Tasks</h1>
<p data-text="lead">data-task — four task states for vault-native
task lists</p>
</header>
<p><code>data-task</code> on <code>&lt;li&gt;</code> elements renders
vault task lists. Four states: <code>todo</code>, <code>done</code>,
<code>blocked</code>, <code>cancelled</code>.</p>
<h2 id="states">States</h2>
<ul>
<li data-task="todo">Write documentation</li>
<li data-task="done">Set up the repo</li>
<li data-task="blocked">Deploy to production</li>
<li data-task="cancelled">Rewrite in Rust</li>
</ul>
<h2 id="mixed-list">Mixed list</h2>
<ul>
<li data-task="done">Project scaffold</li>
<li data-task="done">Config system</li>
<li data-task="todo">PDF extraction</li>
<li data-task="todo">SQLite storage</li>
<li data-task="blocked">MCP server — waiting on spec review</li>
<li data-task="cancelled">Redis queue — overkill for v0.1</li>
</ul>
<h2 id="nested-tasks">Nested tasks</h2>
<ul>
<li data-task="todo">Build the docs site
<ul>
<li data-task="done">Taxonomy defined</li>
<li data-task="done">Vault extension pages</li>
<li data-task="todo">Content section</li>
<li data-task="todo">Forms section</li>
</ul>
</li>
<li data-task="done">Typography system</li>
</ul>
<h2 id="with-metadata">With metadata</h2>
<ul>
<li data-task="todo">Ship v0.2 <span data-text="dim">due 2026-04-15 · assigned: vigilio</span></li>
<li data-task="done">Write changelog <span data-text="dim">2026-03-28</span></li>
<li data-task="blocked">DNS migration <span data-text="dim">waiting on: registrar access</span></li>
</ul>
</main>
<!--#include virtual="/_include/footer.html" -->
</body>
</html>

View file

@ -0,0 +1,121 @@
<!doctype html>
<html lang="en">
<head>
<!--#include virtual="/_include/head.html" -->
<title>Vault Page — ASW Examples</title>
<meta name="description" content="data-task, data-status,
data-callout, data-wikilink, data-session — a vault note rendered as a
web page">
</head>
<body>
<!--#include virtual="/_include/nav.html" -->
<main>
<header>
<h1>Vault Page</h1>
<p data-text="lead">data-task, data-status, data-callout,
data-wikilink, data-session — a vault note rendered as a web page</p>
</header>
<p>A vault note lives in Obsidian. When it ships to the web, the
data-attributes carry its meaning — tasks stay tasks, wikilinks stay
navigable, sessions stay bounded. No class names. No custom CSS.</p>
<hr />
<h2 id="tasks">Tasks</h2>
<ul>
<li data-task="done">Write agent directive and vocabulary reference</li>
<li data-task="done">Build data-diff and data-redacted CSS primitives</li>
<li data-task="todo">Promote examples to public catalog</li>
<li data-task="blocked">npm publish — pending homepage decision</li>
</ul>
<h2 id="status">Status</h2>
<dl data-layout="inline">
<dt>Vigilio</dt>
<dd><span data-status="awake" data-text="mono">ACTIVE</span></dd>
<dt>Shelley</dt>
<dd><span data-status="sleeping" data-text="mono">IDLE</span></dd>
<dt>Build</dt>
<dd><span data-status="done" data-text="mono">PASSING</span></dd>
<dt>Proton Bridge</dt>
<dd><span data-status="blocked" data-text="mono">WAITING</span></dd>
</dl>
<h2 id="callouts">Callouts</h2>
<div data-callout="note">
<span data-callout-title>Note</span>
<p>Informational content. Neutral styling for general notices and context.</p>
</div>
<div data-callout="tip">
<span data-callout-title>Tip</span>
<p>Write semantic HTML. Never write <code>style=</code>. Never invent classes.</p>
</div>
<div data-callout="warning">
<span data-callout-title>Warning</span>
<p><code>data-redacted</code> hides content visually but does not remove it from the DOM. Do not use for production secrets.</p>
</div>
<div data-callout="error">
<span data-callout-title>Error</span>
<p>Missing <code>aria-label</code> on redacted elements. Screen readers announce silence.</p>
</div>
<h2 id="wikilinks">Wikilinks</h2>
<p>See <span data-wikilink>agentic-semantic-web</span> for the design
philosophy, <span data-wikilink>data-attributes</span> for the
vocabulary reference, and
<span data-wikilink data-unresolved>future-extensions</span> for planned
work.</p>
<p>Wikilinks resolve at render time. Unresolved links stay styled but
inert.</p>
<h2 id="session">Session</h2>
<div data-session data-mode="autonomous" data-id="20260403-0900">
<header>
<strong><span data-mode="autonomous">autonomous</span></strong> · 2026-04-03 09:00 UTC · 31 min
</header>
<p>Processed inbox (senior-software-engineer skill installed). Updated sprint #66 Phase 1 status. Created vault-page example — promoted from <span data-wikilink>lab/examples</span>.</p>
<ul>
<li><span data-task="done">Install pi skill from inbox</span></li>
<li><span data-task="done">Comment Phase 1 complete on #66</span></li>
<li><span data-task="done">Create vault-page example (#65)</span></li>
</ul>
</div>
<h2 id="text-utilities">Text Utilities</h2>
<ul>
<li>Default body text</li>
<li><span data-text="mono">Monospaced: commit hash, model name, token
values</span></li>
<li><span data-text="dim">Dimmed: metadata, timestamps, secondary
information</span></li>
<li><span data-text="accent">Accent: emphasis without
semantics</span></li>
</ul>
<h2 id="layout-two-column-grid">Layout: Two-Column Grid</h2>
<div data-layout="grid-2">
<div>
<p><strong>Vault-native</strong></p>
<p>Concepts that exist in knowledge management tools but have no HTML
equivalent: tasks, wikilinks, session boundaries, agent status.</p>
</div>
<div>
<p><strong>Web-native</strong></p>
<p>The structural layer stays standard: <code>&lt;article&gt;</code>,
<code>&lt;nav&gt;</code>, <code>&lt;header&gt;</code>,
<code>&lt;ul&gt;</code>, <code>&lt;details&gt;</code>. No divs with
class names.</p>
</div>
</div>
<hr />
<p><a href="/projects/asw/docs/vocabulary.html">Vocabulary
reference</a> for the full data-attribute index.</p>
</main>
<!--#include virtual="/_include/footer.html" -->
</body>
</html>

View file

@ -0,0 +1,60 @@
<!doctype html>
<html lang="en">
<head>
<!--#include virtual="/_include/head.html" -->
<title>Wikilinks — ASW Examples</title>
<meta name="description" content="data-wikilink, data-tag, data-hash
vault reference vocabulary for exported notes">
</head>
<body>
<!--#include virtual="/_include/nav.html" -->
<main>
<header>
<h1>Wikilinks</h1>
<p data-text="lead">data-wikilink, data-tag, data-hash — vault
reference vocabulary for exported notes</p>
</header>
<p>Three inline reference types from the vault: wikilinks (cross-note
links), tags (topic labels), git hashes (provenance anchors).</p>
<h2 id="wikilinks">Wikilinks</h2>
<p>Write <code>[[Note Name]]</code> in markdown — the pandoc pack
converts it to <code>data-wikilink</code> automatically.</p>
<p><a data-wikilink href="#session-protocol">Session Protocol</a> ·
<a data-wikilink href="#wikilinks">Wikilink reference</a> ·
<a data-wikilink href="#missing-note">Missing Note</a></p>
<p>Or write the HTML directly for fine-grained control:</p>
<p>Resolved: <a href="#" data-wikilink>Session Protocol</a> — dotted
underline, blue tint.</p>
<p>Unresolved (target not found):
<span data-wikilink data-unresolved>Missing Note</span> — dims to muted
text.</p>
<h2 id="tags">Tags</h2>
<p><code>data-tag</code> prepends <code>#</code> automatically. Use
<code>&lt;a&gt;</code> when linking to a filtered view,
<code>&lt;span&gt;</code> for display only.</p>
<p><a href="#tags" data-tag>autonomous</a> <span data-tag>deep</span>
<span data-tag>vault</span></p>
<p>In a session metadata line:</p>
<p data-text="mono">session: complete — <span data-tag>autonomous</span> <span data-tag>deep</span> <span data-tag>vault</span></p>
<h2 id="git-hashes">Git hashes</h2>
<p><code>data-hash</code> renders a commit reference — monospace, muted,
tight letter-spacing.</p>
<p>Last updated: <span data-session-meta>2026-03-27</span>
<span data-hash>a3f7b2c</span></p>
<h2 id="in-context">In context</h2>
<p>A note backlink block combining all three:</p>
<ul>
<li><a href="#" data-wikilink>Session Protocol</a><span data-text="dim">directives/</span></li>
<li><a href="#" data-wikilink>Tasks</a><span data-text="dim">vault extensions/</span></li>
<li><span data-wikilink data-unresolved>Design Archive</span><span data-text="dim">not yet exported</span></li>
</ul>
<p data-text="small dim">Tags: <span data-tag>vault</span> <span data-tag>reference</span> · Commit <span data-hash>842a2cd</span></p>
</main>
<!--#include virtual="/_include/footer.html" -->
</body>
</html>