Skip to content

Commit 255d065

Browse files
wolpertclaude
andcommitted
Add rule-engine to the catalogue
Add a rule-engine project card (JVM forward-chaining rules engine) after mini-auth, ordered fourth. Renumber the catalogue to five projects and refresh the section copy and meta description. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017N2zZauXsFAj8hBRfBxFez
1 parent 7a26278 commit 255d065

1 file changed

Lines changed: 112 additions & 7 deletions

File tree

index.html

Lines changed: 112 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<meta charset="utf-8" />
55
<meta name="viewport" content="width=device-width, initial-scale=1" />
66
<title>Codehead Systems — open source by Ned Wolpert</title>
7-
<meta name="description" content="An open-source workshop of cryptography, authentication, and infrastructure libraries by engineer Ned Wolpert. Featuring pk-auth, mini-auth (a teachable identity suite), the Hofmann Elimination (OPAQUE PAKE), and a collection of JVM utilities." />
7+
<meta name="description" content="An open-source workshop of cryptography, authentication, decision logic, and infrastructure libraries by engineer Ned Wolpert. Featuring pk-auth, mini-auth (a teachable identity suite), the Hofmann Elimination (OPAQUE PAKE), rule-engine (a forward-chaining rules engine for the JVM), and a collection of JVM utilities." />
88
<meta name="theme-color" content="#0B0B0D" />
99

1010
<link rel="preconnect" href="https://fonts.googleapis.com" />
@@ -70,11 +70,11 @@ <h1 class="hero__title">
7070
<section id="projects" class="projects">
7171
<header class="section-head">
7272
<span class="mono-tiny">§&nbsp;THE&nbsp;CATALOGUE</span>
73-
<h2 class="section-head__title">Four corners of the workshop.</h2>
73+
<h2 class="section-head__title">Five corners of the workshop.</h2>
7474
<p class="section-head__lede">
75-
The most recent four projects, each with its own discipline — passkeys, password-less
76-
cryptography, a teachable identity suite, and the small Java tools
77-
in between.
75+
The most recent five projects, each with its own discipline — passkeys, password-less
76+
cryptography, a teachable identity suite, deterministic decision
77+
logic, and the small Java tools in between.
7878
</p>
7979
</header>
8080

@@ -289,12 +289,117 @@ <h3 class="project__title">mini-auth</h3>
289289
</div>
290290
</article>
291291

292-
<!-- ─── 04 · Libraries ─── -->
292+
<!-- ─── 04 · rule-engine ─── -->
293293
<article class="project">
294294
<header class="project__rail">
295295
<span class="mono-tiny">PROJECT</span>
296296
<span class="project__num" aria-hidden="true">04</span>
297-
<span class="mono-tiny project__rail-tag">D&nbsp;–&nbsp;UTILS</span>
297+
<span class="mono-tiny project__rail-tag">D&nbsp;–&nbsp;RULES</span>
298+
</header>
299+
300+
<div class="project__body">
301+
<div class="project__heading">
302+
<h3 class="project__title">rule-engine</h3>
303+
<span class="project__kicker mono-tiny">rete · yaml / json · deterministic</span>
304+
</div>
305+
306+
<p class="project__lede">
307+
A forward-chaining rule engine for services where the rules
308+
change more often than the code&nbsp;deploys.
309+
</p>
310+
311+
<p class="project__text">
312+
An in-process, JVM rule engine that replaces nested conditionals
313+
with declarative rules written in YAML or JSON, validated against
314+
a published schema, and compiled once at startup into an
315+
immutable, thread-safe structure. The same facts in the same
316+
order produce the same firings, on any host, in any year, because
317+
the engine owns no clock — decisions stay explainable and
318+
reproducible long after they're made.
319+
</p>
320+
321+
<ol class="sub-list">
322+
<li>
323+
<div class="sub-list__row">
324+
<span class="sub-list__name">rule-engine-core</span>
325+
<a href="https://github.com/codeheadsystems/rule-engine/tree/main/rule-engine-core" class="sub-list__link mono-tiny">view&nbsp;→</a>
326+
</div>
327+
<p class="sub-list__note">Working memory, matchers, and session management.</p>
328+
</li>
329+
<li>
330+
<div class="sub-list__row">
331+
<span class="sub-list__name">rule-engine-compiler</span>
332+
<a href="https://github.com/codeheadsystems/rule-engine/tree/main/rule-engine-compiler" class="sub-list__link mono-tiny">view&nbsp;→</a>
333+
</div>
334+
<p class="sub-list__note">Rule validation and network compilation.</p>
335+
</li>
336+
<li>
337+
<div class="sub-list__row">
338+
<span class="sub-list__name">rule-engine-dsl</span>
339+
<a href="https://github.com/codeheadsystems/rule-engine/tree/main/rule-engine-dsl" class="sub-list__link mono-tiny">view&nbsp;→</a>
340+
</div>
341+
<p class="sub-list__note">YAML / JSON rule-file parsing — the recommended entry point.</p>
342+
</li>
343+
<li>
344+
<div class="sub-list__row">
345+
<span class="sub-list__name">rule-engine-cel</span>
346+
<a href="https://github.com/codeheadsystems/rule-engine/tree/main/rule-engine-cel" class="sub-list__link mono-tiny">view&nbsp;→</a>
347+
</div>
348+
<p class="sub-list__note">Optional Common Expression Language integration.</p>
349+
</li>
350+
<li>
351+
<div class="sub-list__row">
352+
<span class="sub-list__name">rule-engine-schema</span>
353+
<a href="https://github.com/codeheadsystems/rule-engine/tree/main/rule-engine-schema" class="sub-list__link mono-tiny">view&nbsp;→</a>
354+
</div>
355+
<p class="sub-list__note">Optional fact schema validation.</p>
356+
</li>
357+
<li>
358+
<div class="sub-list__row">
359+
<span class="sub-list__name">rule-engine-observability</span>
360+
<a href="https://github.com/codeheadsystems/rule-engine/tree/main/rule-engine-observability" class="sub-list__link mono-tiny">view&nbsp;→</a>
361+
</div>
362+
<p class="sub-list__note">Tracing, diagnostics, and match explanation.</p>
363+
</li>
364+
<li>
365+
<div class="sub-list__row">
366+
<span class="sub-list__name">rule-engine-testkit</span>
367+
<a href="https://github.com/codeheadsystems/rule-engine/tree/main/rule-engine-testkit" class="sub-list__link mono-tiny">view&nbsp;→</a>
368+
</div>
369+
<p class="sub-list__note">Test fixtures and verification harnesses.</p>
370+
</li>
371+
</ol>
372+
373+
<p class="project__text">
374+
Pattern matching supports joins, negation (<code>notExists</code>),
375+
universal quantification (<code>forAll</code>), and aggregations
376+
(<code>accumulate</code>) as first-class constructs. Three
377+
independent matchers — a naive oracle, an indexed Rete-style
378+
network, and a streaming matcher — are required to agree on
379+
identical firing sequences.
380+
</p>
381+
382+
<ul class="chips">
383+
<li>Java 25</li><li>Gradle</li><li>Jackson 3</li><li>Rete</li><li>CEL</li><li>JSON Schema</li>
384+
</ul>
385+
386+
<div class="project__links">
387+
<a class="link-arrow link-arrow--lead" href="https://codeheadsystems.github.io/rule-engine/">
388+
<span>visit the project site</span><span class="link-arrow__icon"></span>
389+
</a>
390+
<a class="link-arrow" href="https://github.com/codeheadsystems/rule-engine">
391+
<span>view source</span><span class="link-arrow__icon"></span>
392+
</a>
393+
</div>
394+
</div>
395+
</article>
396+
397+
<!-- ─── 05 · Libraries ─── -->
398+
<article class="project">
399+
<header class="project__rail">
400+
<span class="mono-tiny">PROJECT</span>
401+
<span class="project__num" aria-hidden="true">05</span>
402+
<span class="mono-tiny project__rail-tag">E&nbsp;–&nbsp;UTILS</span>
298403
</header>
299404

300405
<div class="project__body">

0 commit comments

Comments
 (0)