jep-core's picture
Upload 2 files
2bb7169 verified
Raw History Blame Contribute Delete
9.36 kB
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>JEP Specification Explorer</title>
<style>
:root { font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, sans-serif; }
body { margin:0; background:#0b1020; color:#eef2ff; }
main { max-width:1100px; margin:0 auto; padding:36px 20px 60px; }
h1 { margin-bottom:6px; }
.sub { color:#b9c2e6; margin-bottom:24px; }
.tabs { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:16px; }
button { border:1px solid #394976; background:#172347; color:white; border-radius:10px; padding:10px 14px; cursor:pointer; }
button.active { background:#3049e8; border-color:#3049e8; }
.panel { display:none; background:#111833; border:1px solid #243056; border-radius:16px; padding:20px; }
.panel.active { display:block; }
table { width:100%; border-collapse:collapse; margin-top:12px; }
th,td { border-bottom:1px solid #28375f; text-align:left; padding:10px 8px; vertical-align:top; }
code { color:#dbeafe; background:#0a1021; padding:1px 4px; border-radius:4px; }
a { color:#9fb1ff; }
.note { color:#c7d2fe; }
ul { line-height:1.6; }
</style>
</head>
<body>
<main>
<h1>JEP Specification Explorer</h1>
<div class="sub">JEP-Core 0.7 / draft-07 · non-normative implementation guide</div>
<div class="tabs">
<button class="active" data-tab="overview">Overview</button>
<button data-tab="event">Event object</button>
<button data-tab="verbs">J / D / T / V</button>
<button data-tab="acceptance">Acceptance</button>
<button data-tab="checks">Validation checks</button>
<button data-tab="delta">0.6 → 0.7</button>
<button data-tab="links">Links</button>
</div>
<section id="overview" class="panel active">
<h2>JEP-Core 0.7</h2>
<p><a href="https://www.judgmentevent.org/developers" target="_blank" rel="noopener noreferrer">Get started: create and verify a signed event locally</a></p>
<p>JEP is a narrow signed-event layer for judgment-related statements across human,
organizational, software, and autonomous-agent systems.</p>
<p>The Core helps identify:</p>
<ul>
<li>which event instance is being handled;</li>
<li>which Core verb it carries;</li>
<li>who is the claimed actor;</li>
<li>what content was signed;</li>
<li>what object or event is referenced;</li>
<li>which checks were actually performed;</li>
<li>whether the same Event Identity has already produced an acceptance effect in the same acceptance domain.</li>
</ul>
<p class="note">It deliberately does not decide substantive truth, legal effect, authority, causality, or policy consequence.</p>
</section>
<section id="event" class="panel">
<h2>Core event object</h2>
<table>
<tr><th>Field</th><th>Status</th><th>Purpose</th></tr>
<tr><td><code>jep</code></td><td>required</td><td>wire-format major; <code>"1"</code> in 0.7</td></tr>
<tr><td><code>id</code></td><td>required</td><td>opaque event identifier</td></tr>
<tr><td><code>verb</code></td><td>required</td><td><code>J</code>, <code>D</code>, <code>T</code>, or <code>V</code></td></tr>
<tr><td><code>who</code></td><td>required</td><td>claimed actor identifier</td></tr>
<tr><td><code>when</code></td><td>required</td><td>actor-declared Unix-seconds event time</td></tr>
<tr><td><code>what</code></td><td>required</td><td>verb-specific claim / descriptor / permitted digest</td></tr>
<tr><td><code>aud</code></td><td>optional</td><td>intended audience or validation context</td></tr>
<tr><td><code>ref</code></td><td>conditional</td><td>typed reference or exact-artifact reference</td></tr>
<tr><td><code>ext</code></td><td>optional</td><td>extension object</td></tr>
<tr><td><code>ext_crit</code></td><td>optional</td><td>critical extension identifiers</td></tr>
<tr><td><code>sig</code></td><td>required</td><td>signature container selected by the active profile</td></tr>
</table>
<p><strong>Event Identity:</strong> <code>(who, id)</code>.</p>
<p>The signing payload is the JCS-canonicalized event with <code>sig</code> omitted.</p>
<p>The default-profile Event Hash is the SHA-256 digest of the JCS-canonicalized full signed event.</p>
</section>
<section id="verbs" class="panel">
<h2>Four Core verbs</h2>
<h3>J — Judgment</h3>
<p>A signed judgment-related statement. <code>what</code> is required; <code>ref</code> is optional.</p>
<h3>D — Delegation</h3>
<p>A scoped delegation statement. <code>what.delegatee</code> and <code>what.scope</code> are required.</p>
<h3>T — Termination</h3>
<p>A statement that future reliance on a referenced target is terminated within a declared scope.
<code>what.termination_scope</code> and <code>ref</code> are required.</p>
<h3>V — Verification</h3>
<p>A scoped evaluation of a referenced target. <code>what.verification_scope</code>,
<code>what.result</code>, and <code>ref</code> are required.</p>
<p class="note">J and V are intentionally different: J records a judgment; V records an evaluation result against an explicit verification scope.</p>
</section>
<section id="acceptance" class="panel">
<h2>Delivery, identity, and acceptance</h2>
<p>A retransmission is not a new event.</p>
<p>JEP-Core 0.7 uses stable Event Identity and idempotent acceptance rather than a required Core nonce.</p>
<p>Within one acceptance domain, one Event Identity must not produce the same state-changing acceptance effect more than once.</p>
<p>Typical acceptance outcomes:</p>
<ul>
<li><code>accepted</code></li>
<li><code>already_accepted</code></li>
<li><code>rejected</code></li>
<li><code>indeterminate</code></li>
</ul>
<p class="note">A profile may add freshness, audience, challenge, nonce, sequence, timestamp, or other replay controls where needed.</p>
</section>
<section id="checks" class="panel">
<h2>Independent validation checks</h2>
<p>Validation is not a single ladder. Checks are independently reportable.</p>
<ul>
<li>syntax</li>
<li>cryptographic</li>
<li>actor binding</li>
<li>freshness</li>
<li>audience</li>
<li>event identity</li>
<li>reference integrity</li>
<li>extension processing</li>
<li>chain integrity</li>
<li>credential status</li>
<li>policy compliance</li>
<li>human review</li>
<li>external evidence</li>
<li>factual claim</li>
<li>archival integrity</li>
</ul>
<p class="note">A verifier should make clear what it did and did not determine.</p>
</section>
<section id="delta" class="panel">
<h2>Main 0.6 → 0.7 changes</h2>
<ul>
<li><code>id</code> became a required Core field.</li>
<li>Event Identity is explicitly <code>(who, id)</code>.</li>
<li>Event Identity and Event Hash are separated.</li>
<li>the required top-level <code>nonce</code> was removed from Core;</li>
<li>replay handling moved to idempotent acceptance plus optional profiles;</li>
<li><code>aud</code> is optional in Core;</li>
<li><code>when</code> is declared event time, not proof of freshness;</li>
<li>references can identify logical JEP Event Identity and optionally pin an exact signed artifact;</li>
<li>cumulative validation levels were replaced with independent checks;</li>
<li>J / D / T / V minimum semantics were tightened;</li>
<li>V requires an explicit result;</li>
<li>chain, cascade, and causal interpretation are outside JEP-Core.</li>
</ul>
</section>
<section id="links" class="panel">
<h2>Resources and next steps</h2>
<ul>
<li><a href="https://www.judgmentevent.org/developers" target="_blank" rel="noopener noreferrer">Get started</a></li>
<li><a href="https://huggingface.co/spaces/hjs-spec/JEP-Playground" target="_blank" rel="noopener noreferrer">Try structural validation in the Playground</a></li>
<li><a href="https://github.com/hjs-spec/jep-core/blob/main/docs/IMPLEMENTER-GUIDE.md" target="_blank" rel="noopener noreferrer">Implementer guide</a></li>
<li><a href="https://datatracker.ietf.org/doc/html/draft-wang-jep-judgment-event-protocol-07" target="_blank" rel="noopener noreferrer">JEP Core 0.7 Internet-Draft</a></li>
<li><a href="https://github.com/hjs-spec/jep-core/blob/main/docs/FIRST-USE-CHECK.md" target="_blank" rel="noopener noreferrer">First-use check and feedback</a></li>
<li><a href="https://github.com/hjs-spec/jep-core/blob/main/CONTRIBUTING.md" target="_blank" rel="noopener noreferrer">Contributing</a></li>
</ul>
<p class="note">This Space is explanatory material. If anything here conflicts with the Internet-Draft, the Internet-Draft controls.</p>
</section>
</main>
<script>
const buttons = document.querySelectorAll("[data-tab]");
const panels = document.querySelectorAll(".panel");
buttons.forEach(btn => {
btn.addEventListener("click", () => {
buttons.forEach(b => b.classList.remove("active"));
panels.forEach(p => p.classList.remove("active"));
btn.classList.add("active");
document.getElementById(btn.dataset.tab).classList.add("active");
});
});
</script>
</body>
</html>