Spaces:
Running
Running
deploy(hf): sync szl-holdings/a11oy@af43e4b71529c2bab3227763fdb4b5969c2cd6ce derived COPY set
Browse filesReusable Dockerfile-COPY-derived deploy from szl-holdings/a11oy af43e4b71529c2bab3227763fdb4b5969c2cd6ce.
Files: 1156 Pruned: 0
Derived from Dockerfile COPY sources (NO hand-maintained allowlist).
Signed-off-by: SZL Holdings <noreply@szlholdings.ai>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- static/3d/holographic.html +106 -10
static/3d/holographic.html
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
<head>
|
| 4 |
<meta charset="utf-8"/>
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
| 6 |
-
<title>Holographic
|
| 7 |
<!-- 0 runtime CDN. All 3D libs vendored in-image and served same-origin via the
|
| 8 |
/static/3d/vendor/... importmap below (see VENDOR_MANIFEST.md). System fonts only. -->
|
| 9 |
<script type="importmap">
|
|
@@ -199,7 +199,8 @@ footer{padding:6px 14px;border-top:1px solid var(--line);flex:0 0 auto;
|
|
| 199 |
</head>
|
| 200 |
<body>
|
| 201 |
<header>
|
| 202 |
-
<h1>
|
|
|
|
| 203 |
<span class="badge" id="backend">renderer: …</span>
|
| 204 |
<button class="badge" id="gpu-toggle" title="Toggle WebGPU compute path (falls back to WebGL2 if the browser/driver can't provide a WebGPU device). WebGPU is not production-safe on all platforms — doctrine." style="cursor:pointer;background:#10171f">⚡ WebGPU: off</button>
|
| 205 |
<span class="badge" id="three-rev-badge">three r<span id="three-rev">…</span></span>
|
|
@@ -566,6 +567,7 @@ const searchPanel = document.getElementById("search-panel");
|
|
| 566 |
const searchCount = document.getElementById("surface-results-count");
|
| 567 |
const navMode = document.getElementById("nav-mode");
|
| 568 |
const activeSurface = document.querySelector("#active-surface strong");
|
|
|
|
| 569 |
|
| 570 |
const evidenceRail = document.getElementById("evidence-rail");
|
| 571 |
const evidenceToggle = document.getElementById("evidence-rail-toggle");
|
|
@@ -576,7 +578,11 @@ const evidenceId = document.getElementById("evidence-rail-id");
|
|
| 576 |
const evidenceContract = document.getElementById("evidence-rail-contract");
|
| 577 |
const evidenceRuntime = document.getElementById("evidence-rail-runtime");
|
| 578 |
const evidenceReadiness = document.getElementById("evidence-rail-readiness");
|
|
|
|
|
|
|
| 579 |
let evidenceSnapshotPromise = null;
|
|
|
|
|
|
|
| 580 |
if (evidenceToggle && evidencePanel) {
|
| 581 |
evidenceToggle.addEventListener("click", () => {
|
| 582 |
const open = evidenceToggle.getAttribute("aria-expanded") !== "true";
|
|
@@ -591,8 +597,13 @@ if (evidenceToggle && evidencePanel) {
|
|
| 591 |
}
|
| 592 |
});
|
| 593 |
}
|
| 594 |
-
async function _fetchEvidenceSnapshot() {
|
|
|
|
|
|
|
|
|
|
|
|
|
| 595 |
if (evidenceSnapshotPromise) return evidenceSnapshotPromise;
|
|
|
|
| 596 |
evidenceSnapshotPromise = (async () => {
|
| 597 |
const getJson = async (url) => {
|
| 598 |
try {
|
|
@@ -604,31 +615,116 @@ async function _fetchEvidenceSnapshot() {
|
|
| 604 |
getJson("/api/a11oy/v1/readiness/tab-matrix?view=summary"),
|
| 605 |
getJson("/api/build-info"),
|
| 606 |
]);
|
| 607 |
-
return { readiness, build };
|
| 608 |
})();
|
| 609 |
return evidenceSnapshotPromise;
|
| 610 |
}
|
| 611 |
-
function
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 612 |
if (!evidenceRail || !def) return;
|
| 613 |
evidenceRail.dataset.state = "UNVERIFIED";
|
| 614 |
if (evidenceState) evidenceState.textContent = "UNVERIFIED";
|
|
|
|
|
|
|
|
|
|
|
|
|
| 615 |
if (evidenceTitle) evidenceTitle.textContent = def.title;
|
| 616 |
if (evidenceId) evidenceId.textContent = def.id;
|
| 617 |
if (evidenceContract) evidenceContract.textContent = `${catOf(def)} · ${def.mod}`;
|
| 618 |
if (evidenceRuntime) evidenceRuntime.textContent = "CHECKING";
|
| 619 |
if (evidenceReadiness) evidenceReadiness.textContent = "CHECKING";
|
| 620 |
-
_fetchEvidenceSnapshot().then(({ readiness, build }) => {
|
|
|
|
| 621 |
const buildState = build?.build?.state || build?.state || "UNAVAILABLE";
|
| 622 |
const revision = build?.build?.revision || build?.revision || null;
|
| 623 |
if (evidenceRuntime) evidenceRuntime.textContent = revision ? `${buildState} · ${String(revision).slice(0,12)}…` : buildState;
|
| 624 |
-
const
|
| 625 |
-
|
| 626 |
-
|
| 627 |
-
|
| 628 |
evidenceRail.dataset.state = observed ? "OBSERVED" : "UNVERIFIED";
|
| 629 |
if (evidenceState) evidenceState.textContent = observed ? "OBSERVED" : "UNVERIFIED";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 630 |
});
|
| 631 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 632 |
const _panels = {}; // cat -> drop-panel element
|
| 633 |
const _catBtns = {}; // cat -> dropdown button
|
| 634 |
let searchLimit = 36;
|
|
|
|
| 3 |
<head>
|
| 4 |
<meta charset="utf-8"/>
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
| 6 |
+
<title>A11oy Holographic Operations — a11oy</title>
|
| 7 |
<!-- 0 runtime CDN. All 3D libs vendored in-image and served same-origin via the
|
| 8 |
/static/3d/vendor/... importmap below (see VENDOR_MANIFEST.md). System fonts only. -->
|
| 9 |
<script type="importmap">
|
|
|
|
| 199 |
</head>
|
| 200 |
<body>
|
| 201 |
<header>
|
| 202 |
+
<h1>A11oy Holographic Operations</h1>
|
| 203 |
+
<span class="badge" id="estate-observation-badge" data-state="UNVERIFIED">Evidence status: UNVERIFIED</span>
|
| 204 |
<span class="badge" id="backend">renderer: …</span>
|
| 205 |
<button class="badge" id="gpu-toggle" title="Toggle WebGPU compute path (falls back to WebGL2 if the browser/driver can't provide a WebGPU device). WebGPU is not production-safe on all platforms — doctrine." style="cursor:pointer;background:#10171f">⚡ WebGPU: off</button>
|
| 206 |
<span class="badge" id="three-rev-badge">three r<span id="three-rev">…</span></span>
|
|
|
|
| 567 |
const searchCount = document.getElementById("surface-results-count");
|
| 568 |
const navMode = document.getElementById("nav-mode");
|
| 569 |
const activeSurface = document.querySelector("#active-surface strong");
|
| 570 |
+
const estateObservationBadge = document.getElementById("estate-observation-badge");
|
| 571 |
|
| 572 |
const evidenceRail = document.getElementById("evidence-rail");
|
| 573 |
const evidenceToggle = document.getElementById("evidence-rail-toggle");
|
|
|
|
| 578 |
const evidenceContract = document.getElementById("evidence-rail-contract");
|
| 579 |
const evidenceRuntime = document.getElementById("evidence-rail-runtime");
|
| 580 |
const evidenceReadiness = document.getElementById("evidence-rail-readiness");
|
| 581 |
+
const EVIDENCE_MAX_AGE_MS = 24 * 60 * 60 * 1000;
|
| 582 |
+
const EVIDENCE_REFRESH_INTERVAL_MS = 5 * 60 * 1000;
|
| 583 |
let evidenceSnapshotPromise = null;
|
| 584 |
+
let evidenceRefreshTimer = null;
|
| 585 |
+
let evidenceRefreshGeneration = 0;
|
| 586 |
if (evidenceToggle && evidencePanel) {
|
| 587 |
evidenceToggle.addEventListener("click", () => {
|
| 588 |
const open = evidenceToggle.getAttribute("aria-expanded") !== "true";
|
|
|
|
| 597 |
}
|
| 598 |
});
|
| 599 |
}
|
| 600 |
+
async function _fetchEvidenceSnapshot(forceRefresh = false) {
|
| 601 |
+
if (forceRefresh) {
|
| 602 |
+
evidenceRefreshGeneration += 1;
|
| 603 |
+
evidenceSnapshotPromise = null;
|
| 604 |
+
}
|
| 605 |
if (evidenceSnapshotPromise) return evidenceSnapshotPromise;
|
| 606 |
+
const generation = evidenceRefreshGeneration;
|
| 607 |
evidenceSnapshotPromise = (async () => {
|
| 608 |
const getJson = async (url) => {
|
| 609 |
try {
|
|
|
|
| 615 |
getJson("/api/a11oy/v1/readiness/tab-matrix?view=summary"),
|
| 616 |
getJson("/api/build-info"),
|
| 617 |
]);
|
| 618 |
+
return { readiness, build, generation };
|
| 619 |
})();
|
| 620 |
return evidenceSnapshotPromise;
|
| 621 |
}
|
| 622 |
+
function _hasObservedEvidence(readiness, revision, nowMs = Date.now()) {
|
| 623 |
+
if (
|
| 624 |
+
typeof revision !== "string" ||
|
| 625 |
+
!/^[0-9a-f]{40}$/.test(revision) ||
|
| 626 |
+
readiness?.honest !== true ||
|
| 627 |
+
readiness?.view !== "summary" ||
|
| 628 |
+
readiness?.available !== true ||
|
| 629 |
+
readiness?.matrix_available !== true ||
|
| 630 |
+
readiness?.probe_verdict_available !== true ||
|
| 631 |
+
readiness?.verdict_source_revision !== revision ||
|
| 632 |
+
typeof readiness?.verdict_base !== "string" ||
|
| 633 |
+
!/^https:\/\/[^/]+$/.test(readiness.verdict_base) ||
|
| 634 |
+
readiness?.verdict_base !== readiness?.verdict_expected_base
|
| 635 |
+
) return false;
|
| 636 |
+
const checkedAt = readiness?.verdict_checked_at;
|
| 637 |
+
if (
|
| 638 |
+
typeof checkedAt !== "string" ||
|
| 639 |
+
!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z$/.test(checkedAt)
|
| 640 |
+
) return false;
|
| 641 |
+
const checkedMs = Date.parse(checkedAt);
|
| 642 |
+
if (
|
| 643 |
+
!Number.isFinite(checkedMs) ||
|
| 644 |
+
checkedMs > nowMs ||
|
| 645 |
+
nowMs - checkedMs > EVIDENCE_MAX_AGE_MS
|
| 646 |
+
) return false;
|
| 647 |
+
const verdict = readiness?.verdict_summary;
|
| 648 |
+
if (!verdict || typeof verdict !== "object") return false;
|
| 649 |
+
const counts = [
|
| 650 |
+
"endpoints", "ok", "skippedStateChanging", "lies", "unreachable", "throttled",
|
| 651 |
+
]
|
| 652 |
+
.map((field) => verdict[field]);
|
| 653 |
+
if (!counts.every((value) => Number.isInteger(value) && value >= 0)) return false;
|
| 654 |
+
if (!Number.isFinite(verdict.p95_worst) || verdict.p95_worst < 0) return false;
|
| 655 |
+
const [endpoints, ...outcomes] = counts;
|
| 656 |
+
const executed = endpoints - verdict.skippedStateChanging;
|
| 657 |
+
return (
|
| 658 |
+
endpoints > 0 &&
|
| 659 |
+
executed > 0 &&
|
| 660 |
+
verdict.lies === 0 &&
|
| 661 |
+
outcomes.reduce((total, value) => total + value, 0) === endpoints
|
| 662 |
+
);
|
| 663 |
+
}
|
| 664 |
+
function _readinessEvidenceText(readiness, observed) {
|
| 665 |
+
const matrix = readiness?.matrix_summary || {};
|
| 666 |
+
const verdict = readiness?.verdict_summary || null;
|
| 667 |
+
if (!observed || !verdict) {
|
| 668 |
+
return `${matrix.tabs ?? SURFACES.length} surfaces · probe UNVERIFIED`;
|
| 669 |
+
}
|
| 670 |
+
return `${verdict.ok}/${verdict.endpoints} clean · complete verdict`;
|
| 671 |
+
}
|
| 672 |
+
function _nextEvidenceRefreshDelay(readiness, nowMs = Date.now()) {
|
| 673 |
+
const checkedMs = Date.parse(readiness?.verdict_checked_at || "");
|
| 674 |
+
if (!Number.isFinite(checkedMs)) return EVIDENCE_REFRESH_INTERVAL_MS;
|
| 675 |
+
const untilExpiry = checkedMs + EVIDENCE_MAX_AGE_MS - nowMs;
|
| 676 |
+
if (untilExpiry < 0) return EVIDENCE_REFRESH_INTERVAL_MS;
|
| 677 |
+
return Math.max(
|
| 678 |
+
50,
|
| 679 |
+
Math.min(EVIDENCE_REFRESH_INTERVAL_MS, untilExpiry + 50),
|
| 680 |
+
);
|
| 681 |
+
}
|
| 682 |
+
function _scheduleEvidenceRefresh(def, readiness) {
|
| 683 |
+
if (evidenceRefreshTimer) clearTimeout(evidenceRefreshTimer);
|
| 684 |
+
evidenceRefreshTimer = setTimeout(
|
| 685 |
+
() => _updateEvidenceRail(def, true),
|
| 686 |
+
_nextEvidenceRefreshDelay(readiness),
|
| 687 |
+
);
|
| 688 |
+
}
|
| 689 |
+
function _updateEvidenceRail(def, forceRefresh = false) {
|
| 690 |
if (!evidenceRail || !def) return;
|
| 691 |
evidenceRail.dataset.state = "UNVERIFIED";
|
| 692 |
if (evidenceState) evidenceState.textContent = "UNVERIFIED";
|
| 693 |
+
if (estateObservationBadge) {
|
| 694 |
+
estateObservationBadge.dataset.state = "UNVERIFIED";
|
| 695 |
+
estateObservationBadge.textContent = "Evidence status: UNVERIFIED";
|
| 696 |
+
}
|
| 697 |
if (evidenceTitle) evidenceTitle.textContent = def.title;
|
| 698 |
if (evidenceId) evidenceId.textContent = def.id;
|
| 699 |
if (evidenceContract) evidenceContract.textContent = `${catOf(def)} · ${def.mod}`;
|
| 700 |
if (evidenceRuntime) evidenceRuntime.textContent = "CHECKING";
|
| 701 |
if (evidenceReadiness) evidenceReadiness.textContent = "CHECKING";
|
| 702 |
+
_fetchEvidenceSnapshot(forceRefresh).then(({ readiness, build, generation }) => {
|
| 703 |
+
if (generation !== evidenceRefreshGeneration) return;
|
| 704 |
const buildState = build?.build?.state || build?.state || "UNAVAILABLE";
|
| 705 |
const revision = build?.build?.revision || build?.revision || null;
|
| 706 |
if (evidenceRuntime) evidenceRuntime.textContent = revision ? `${buildState} · ${String(revision).slice(0,12)}…` : buildState;
|
| 707 |
+
const observed = _hasObservedEvidence(readiness, revision);
|
| 708 |
+
if (evidenceReadiness) {
|
| 709 |
+
evidenceReadiness.textContent = _readinessEvidenceText(readiness, observed);
|
| 710 |
+
}
|
| 711 |
evidenceRail.dataset.state = observed ? "OBSERVED" : "UNVERIFIED";
|
| 712 |
if (evidenceState) evidenceState.textContent = observed ? "OBSERVED" : "UNVERIFIED";
|
| 713 |
+
if (estateObservationBadge) {
|
| 714 |
+
estateObservationBadge.dataset.state = observed ? "OBSERVED" : "UNVERIFIED";
|
| 715 |
+
estateObservationBadge.textContent = observed
|
| 716 |
+
? "The estate, observed—not assumed."
|
| 717 |
+
: "Evidence status: UNVERIFIED";
|
| 718 |
+
}
|
| 719 |
+
_scheduleEvidenceRefresh(def, readiness);
|
| 720 |
});
|
| 721 |
}
|
| 722 |
+
function _resumeEvidenceRefresh() {
|
| 723 |
+
if (document.hidden || !current?.def) return;
|
| 724 |
+
_updateEvidenceRail(current.def, true);
|
| 725 |
+
}
|
| 726 |
+
document.addEventListener("visibilitychange", _resumeEvidenceRefresh);
|
| 727 |
+
window.addEventListener("pageshow", _resumeEvidenceRefresh);
|
| 728 |
const _panels = {}; // cat -> drop-panel element
|
| 729 |
const _catBtns = {}; // cat -> dropdown button
|
| 730 |
let searchLimit = 36;
|