Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8" /> | |
| <meta name="viewport" content="width=device-width, initial-scale=1" /> | |
| <title>VertRule Research</title> | |
| <meta | |
| name="description" | |
| content="Public-safe research artifacts: local execution and bounded topology captures with cryptographic receipts." | |
| /> | |
| <link rel="stylesheet" href="./style.css" /> | |
| </head> | |
| <body> | |
| <header class="hero"> | |
| <div class="container"> | |
| <h1 class="hero-title"> | |
| <span class="bar" aria-hidden="true"></span> | |
| <span>VertRule Research</span> | |
| </h1> | |
| <p class="hero-subtitle"> | |
| Admitted execution surfaces and canonical topology artifacts. Each | |
| document records what was measured, what was verified, and what | |
| remains outside scope. Mirrored from | |
| <a href="https://vertrule.com/research" rel="noopener"> | |
| vertrule.com/research</a | |
| >. | |
| </p> | |
| </div> | |
| </header> | |
| <section class="section section-charcoal"> | |
| <div class="container"> | |
| <p class="eyebrow">Technical Notes</p> | |
| <div id="card-list" class="card-list"> | |
| <div class="empty">Loading manifest…</div> | |
| </div> | |
| </div> | |
| </section> | |
| <footer class="footer"> | |
| <div class="container"> | |
| <div class="footer-grid"> | |
| <div class="footer-block"> | |
| <p class="footer-eyebrow">Source of truth</p> | |
| <p class="footer-line"> | |
| <a href="./manifest.json" class="mono">manifest.json</a> | |
| </p> | |
| <p class="footer-line footer-dim"> | |
| Each entry carries a BLAKE3 digest of its PDF. | |
| </p> | |
| </div> | |
| <div class="footer-block"> | |
| <p class="footer-eyebrow">Canonical home</p> | |
| <p class="footer-line"> | |
| <a href="https://vertrule.com/research" rel="noopener" | |
| >vertrule.com/research</a | |
| > | |
| </p> | |
| <p class="footer-line footer-dim"> | |
| This Space is a public mirror, not the authoritative copy. | |
| </p> | |
| </div> | |
| <div class="footer-block"> | |
| <p class="footer-eyebrow">Scope</p> | |
| <p class="footer-line footer-dim"> | |
| Public-safe artifacts only. Drafts, internal compliance | |
| material, and patent/legal documents are excluded by policy. | |
| </p> | |
| </div> | |
| </div> | |
| </div> | |
| </footer> | |
| <script> | |
| (function () { | |
| var listEl = document.getElementById("card-list"); | |
| // When the catalog is viewed inside the Hugging Face wrapper iframe, | |
| // relative artifact links navigate the wrapper context and are | |
| // blocked by Chrome's frame-navigation policy. Build artifact hrefs | |
| // against the static-host origin and open in a new top-level tab so | |
| // PDFs / explorer / JSON resolve as a normal browser navigation. | |
| var STATIC_ORIGIN = window.location.hostname.endsWith( | |
| ".static.hf.space", | |
| ) | |
| ? window.location.origin | |
| : "https://vertrule-org-research.static.hf.space"; | |
| function assetHref(relPath) { | |
| return STATIC_ORIGIN + "/" + String(relPath).replace(/^\.?\//, ""); | |
| } | |
| function escapeHtml(s) { | |
| return String(s).replace(/[&<>"']/g, function (c) { | |
| return { | |
| "&": "&", | |
| "<": "<", | |
| ">": ">", | |
| '"': """, | |
| "'": "'", | |
| }[c]; | |
| }); | |
| } | |
| function shortDigest(d) { | |
| if (!d) return ""; | |
| return d.slice(0, 12) + "…"; | |
| } | |
| var LINK_ATTRS = ' target="_blank" rel="noopener noreferrer"'; | |
| function renderCard(item) { | |
| var pdfHref = assetHref(item.pdf); | |
| var explorerLink = item.explorer | |
| ? '<a class="meta-link" href="' + | |
| escapeHtml(assetHref(item.explorer)) + | |
| '"' + | |
| LINK_ATTRS + | |
| ">Explorer</a>" | |
| : ""; | |
| var dataLink = item.data | |
| ? '<a class="meta-link" href="' + | |
| escapeHtml(assetHref(item.data)) + | |
| '"' + | |
| LINK_ATTRS + | |
| ">Data (JSON)</a>" | |
| : ""; | |
| var statusClass = | |
| item.status === "experimental" | |
| ? "badge-experimental" | |
| : "badge-public"; | |
| return ( | |
| '<article class="card">' + | |
| '<a class="card-link" href="' + | |
| escapeHtml(pdfHref) + | |
| '"' + | |
| LINK_ATTRS + | |
| ">" + | |
| '<div class="card-head">' + | |
| "<div>" + | |
| '<h2 class="card-title">' + | |
| escapeHtml(item.title) + | |
| "</h2>" + | |
| '<p class="card-subtitle">' + | |
| escapeHtml(item.subtitle || "") + | |
| "</p>" + | |
| "</div>" + | |
| '<span class="badge ' + | |
| statusClass + | |
| '">' + | |
| escapeHtml(item.status) + | |
| "</span>" + | |
| "</div>" + | |
| '<p class="card-desc">' + | |
| escapeHtml(item.description) + | |
| "</p>" + | |
| "</a>" + | |
| '<div class="card-meta">' + | |
| '<a class="meta-link" href="' + | |
| escapeHtml(pdfHref) + | |
| '"' + | |
| LINK_ATTRS + | |
| ">PDF</a>" + | |
| explorerLink + | |
| dataLink + | |
| '<span class="digest" title="' + | |
| escapeHtml(item.pdf_blake3 || "") + | |
| '">blake3:' + | |
| shortDigest(item.pdf_blake3) + | |
| "</span>" + | |
| "</div>" + | |
| "</article>" | |
| ); | |
| } | |
| function render(items) { | |
| var publishable = items.filter(function (i) { | |
| return i.publish === true; | |
| }); | |
| publishable.sort(function (a, b) { | |
| return (a.order || 0) - (b.order || 0); | |
| }); | |
| if (publishable.length === 0) { | |
| listEl.innerHTML = | |
| '<div class="empty">No public artifacts available.</div>'; | |
| return; | |
| } | |
| listEl.innerHTML = publishable.map(renderCard).join(""); | |
| } | |
| function fail(msg) { | |
| listEl.innerHTML = | |
| '<div class="empty">Failed to load manifest: ' + | |
| escapeHtml(msg) + | |
| "</div>"; | |
| } | |
| fetch("./manifest.json", { cache: "no-store" }) | |
| .then(function (r) { | |
| if (!r.ok) throw new Error("HTTP " + r.status); | |
| return r.json(); | |
| }) | |
| .then(function (m) { | |
| if (!m || !Array.isArray(m.items)) { | |
| throw new Error("manifest missing items array"); | |
| } | |
| render(m.items); | |
| }) | |
| .catch(function (e) { | |
| fail(e.message || String(e)); | |
| }); | |
| })(); | |
| </script> | |
| </body> | |
| </html> | |