Spaces:
Running
Running
deploy(hf): sync szl-holdings/a11oy@329fb9acb0e9bdf253e9f598f738566383a75618 derived COPY set
Browse filesReusable Dockerfile-COPY-derived deploy from szl-holdings/a11oy 329fb9acb0e9bdf253e9f598f738566383a75618.
Files: 1374 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>
- a11oy_command_center.py +13 -3
- a11oy_decision_integrity.py +68 -15
- pages/decision.html +40 -2
- pages/killinchu.html +43 -0
a11oy_command_center.py
CHANGED
|
@@ -13,6 +13,7 @@ API-schema, evidence-source, and canonical-number contracts are not release-read
|
|
| 13 |
Additive routes:
|
| 14 |
GET+HEAD /command
|
| 15 |
GET+HEAD /command-v2
|
|
|
|
| 16 |
GET+HEAD /command/constellation
|
| 17 |
GET+HEAD /command/brain
|
| 18 |
GET+HEAD /command/ops
|
|
@@ -30,6 +31,8 @@ from typing import List
|
|
| 30 |
MOUNTS = ("/command",)
|
| 31 |
SPECIFIC = (
|
| 32 |
("/command-v2", "command-v2.html"),
|
|
|
|
|
|
|
| 33 |
("/command/constellation", "constellation.html"),
|
| 34 |
("/command/brain", "second-brain.html"),
|
| 35 |
("/command/ops", "operator-pane.html"),
|
|
@@ -156,8 +159,9 @@ def register(app, ns: str = "a11oy") -> List[str]:
|
|
| 156 |
_add(CATCHALL, _spa, ["GET", "HEAD"])
|
| 157 |
_front_move(app, [path for path, _name in SPECIFIC] + list(MOUNTS))
|
| 158 |
registered.append(
|
| 159 |
-
"command-center reviewed-public on /command
|
| 160 |
-
"constellation/brain/ops beat catch-all;
|
|
|
|
| 161 |
)
|
| 162 |
return registered
|
| 163 |
|
|
@@ -204,6 +208,12 @@ def _selftest() -> None:
|
|
| 204 |
assert "googleapis" not in response.text
|
| 205 |
assert "jsdelivr" not in response.text
|
| 206 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 207 |
if _page("constellation.html").is_file():
|
| 208 |
for path in ("/command/constellation", "/constellation"):
|
| 209 |
body = client.get(path).text
|
|
@@ -228,7 +238,7 @@ def _selftest() -> None:
|
|
| 228 |
assert client.get("/console").status_code == 200
|
| 229 |
print(
|
| 230 |
"a11oy_command_center: ALL OK "
|
| 231 |
-
"(v2 additive; exact pages beat catch-all
|
| 232 |
)
|
| 233 |
|
| 234 |
|
|
|
|
| 13 |
Additive routes:
|
| 14 |
GET+HEAD /command
|
| 15 |
GET+HEAD /command-v2
|
| 16 |
+
GET+HEAD /killinchu
|
| 17 |
GET+HEAD /command/constellation
|
| 18 |
GET+HEAD /command/brain
|
| 19 |
GET+HEAD /command/ops
|
|
|
|
| 31 |
MOUNTS = ("/command",)
|
| 32 |
SPECIFIC = (
|
| 33 |
("/command-v2", "command-v2.html"),
|
| 34 |
+
("/killinchu", "killinchu.html"),
|
| 35 |
+
("/killinchu/", "killinchu.html"),
|
| 36 |
("/command/constellation", "constellation.html"),
|
| 37 |
("/command/brain", "second-brain.html"),
|
| 38 |
("/command/ops", "operator-pane.html"),
|
|
|
|
| 159 |
_add(CATCHALL, _spa, ["GET", "HEAD"])
|
| 160 |
_front_move(app, [path for path, _name in SPECIFIC] + list(MOUNTS))
|
| 161 |
registered.append(
|
| 162 |
+
"command-center reviewed-public on /command; /command-v2 additive; "
|
| 163 |
+
"/killinchu on-origin; constellation/brain/ops beat catch-all; "
|
| 164 |
+
"/console and host-root /brain untouched"
|
| 165 |
)
|
| 166 |
return registered
|
| 167 |
|
|
|
|
| 208 |
assert "googleapis" not in response.text
|
| 209 |
assert "jsdelivr" not in response.text
|
| 210 |
|
| 211 |
+
if _page("killinchu.html").is_file():
|
| 212 |
+
response = client.get("/killinchu")
|
| 213 |
+
assert response.status_code == 200
|
| 214 |
+
assert "Killinchu" in response.text
|
| 215 |
+
assert "huggingface.co/spaces" not in response.text
|
| 216 |
+
|
| 217 |
if _page("constellation.html").is_file():
|
| 218 |
for path in ("/command/constellation", "/constellation"):
|
| 219 |
body = client.get(path).text
|
|
|
|
| 238 |
assert client.get("/console").status_code == 200
|
| 239 |
print(
|
| 240 |
"a11oy_command_center: ALL OK "
|
| 241 |
+
"(v2 additive; killinchu on-origin; exact pages beat catch-all)"
|
| 242 |
)
|
| 243 |
|
| 244 |
|
a11oy_decision_integrity.py
CHANGED
|
@@ -65,6 +65,39 @@ def _read_json(path: Path) -> Any:
|
|
| 65 |
return json.loads(path.read_text(encoding="utf-8"))
|
| 66 |
|
| 67 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
def load_vertical(vertical_id: str) -> dict[str, Any]:
|
| 69 |
folder = VERTICALS_DIR / vertical_id
|
| 70 |
manifest = _read_json(folder / "vertical_manifest.json")
|
|
@@ -76,7 +109,7 @@ def load_vertical(vertical_id: str) -> dict[str, Any]:
|
|
| 76 |
item = _read_json(path)
|
| 77 |
item.setdefault("eval_id", path.stem)
|
| 78 |
cases.append(item)
|
| 79 |
-
|
| 80 |
"id": vertical_id,
|
| 81 |
"display_name": manifest.get("display_name", vertical_id),
|
| 82 |
"wedge": manifest.get("wedge", ""),
|
|
@@ -85,6 +118,11 @@ def load_vertical(vertical_id: str) -> dict[str, Any]:
|
|
| 85 |
"policy": policy,
|
| 86 |
"cases": cases,
|
| 87 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 88 |
|
| 89 |
|
| 90 |
def catalog() -> dict[str, Any]:
|
|
@@ -118,6 +156,15 @@ def catalog() -> dict[str, Any]:
|
|
| 118 |
"wedge": item["wedge"],
|
| 119 |
"role": item["role"],
|
| 120 |
"case_count": len(item["cases"]),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 121 |
}
|
| 122 |
for item in verticals
|
| 123 |
],
|
|
@@ -126,6 +173,7 @@ def catalog() -> dict[str, Any]:
|
|
| 126 |
"demo": "/demo",
|
| 127 |
"evaluations": "/evaluations",
|
| 128 |
"vessels": "/vessels",
|
|
|
|
| 129 |
"proof": "https://a11oy.net/decision/",
|
| 130 |
},
|
| 131 |
}
|
|
@@ -143,6 +191,9 @@ def evaluate_case(vertical_id: str, payload: dict[str, Any]) -> dict[str, Any]:
|
|
| 143 |
result["data_label"] = DATA_LABEL
|
| 144 |
result["vertical_id"] = vertical_id
|
| 145 |
result["runtime_claimed"] = False
|
|
|
|
|
|
|
|
|
|
| 146 |
return result
|
| 147 |
|
| 148 |
|
|
@@ -193,20 +244,22 @@ def register(app, ns: str = "a11oy") -> dict[str, Any]:
|
|
| 193 |
packed = load_vertical(vertical_id)
|
| 194 |
except FileNotFoundError as exc:
|
| 195 |
return _json({"error": str(exc), "status": STATUS}, 503)
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
|
| 206 |
-
|
| 207 |
-
|
| 208 |
-
|
| 209 |
-
|
|
|
|
|
|
|
| 210 |
|
| 211 |
async def _evaluate(request):
|
| 212 |
vertical_id = request.path_params["vertical"]
|
|
|
|
| 65 |
return json.loads(path.read_text(encoding="utf-8"))
|
| 66 |
|
| 67 |
|
| 68 |
+
def _vessels_ais_standards_pack() -> dict[str, Any] | None:
|
| 69 |
+
path = VERTICALS_DIR / "vessels" / "ais_standards.json"
|
| 70 |
+
if not path.is_file():
|
| 71 |
+
return None
|
| 72 |
+
packed = _read_json(path)
|
| 73 |
+
return packed if isinstance(packed, dict) else None
|
| 74 |
+
|
| 75 |
+
|
| 76 |
+
def _vessels_ais_standards_echo(pack: dict[str, Any] | None = None) -> dict[str, Any]:
|
| 77 |
+
standards = pack if isinstance(pack, dict) else _vessels_ais_standards_pack() or {}
|
| 78 |
+
instruments = [
|
| 79 |
+
row.get("id")
|
| 80 |
+
for row in (standards.get("instruments") or [])
|
| 81 |
+
if isinstance(row, dict) and row.get("id")
|
| 82 |
+
]
|
| 83 |
+
return {
|
| 84 |
+
"honesty": "CITATION_ONLY",
|
| 85 |
+
"licensed_ais_admitted": False,
|
| 86 |
+
"licensed_ais_queries": 0,
|
| 87 |
+
"ais_equipment_class": "NONE",
|
| 88 |
+
"ais_transmit": False,
|
| 89 |
+
"solas_v19_applies": False,
|
| 90 |
+
"aton_provider": False,
|
| 91 |
+
"vhf_data_link_occupied": False,
|
| 92 |
+
"vessels_e03_licensed_ais_tpr": standards.get("vessels_e03_licensed_ais_tpr", "OUTSTANDING"),
|
| 93 |
+
"fail_closed_eval": "VESSELS-E-DENY-AIS",
|
| 94 |
+
"proof": "https://a11oy.net/vessels/ais-standards.json",
|
| 95 |
+
"instruments": instruments,
|
| 96 |
+
"stamps_live": False,
|
| 97 |
+
"production_ready": False,
|
| 98 |
+
}
|
| 99 |
+
|
| 100 |
+
|
| 101 |
def load_vertical(vertical_id: str) -> dict[str, Any]:
|
| 102 |
folder = VERTICALS_DIR / vertical_id
|
| 103 |
manifest = _read_json(folder / "vertical_manifest.json")
|
|
|
|
| 109 |
item = _read_json(path)
|
| 110 |
item.setdefault("eval_id", path.stem)
|
| 111 |
cases.append(item)
|
| 112 |
+
packed = {
|
| 113 |
"id": vertical_id,
|
| 114 |
"display_name": manifest.get("display_name", vertical_id),
|
| 115 |
"wedge": manifest.get("wedge", ""),
|
|
|
|
| 118 |
"policy": policy,
|
| 119 |
"cases": cases,
|
| 120 |
}
|
| 121 |
+
if vertical_id == "vessels":
|
| 122 |
+
standards = _vessels_ais_standards_pack()
|
| 123 |
+
if standards is not None:
|
| 124 |
+
packed["ais_standards"] = standards
|
| 125 |
+
return packed
|
| 126 |
|
| 127 |
|
| 128 |
def catalog() -> dict[str, Any]:
|
|
|
|
| 156 |
"wedge": item["wedge"],
|
| 157 |
"role": item["role"],
|
| 158 |
"case_count": len(item["cases"]),
|
| 159 |
+
**(
|
| 160 |
+
{
|
| 161 |
+
"ais_standards_honesty": "CITATION_ONLY",
|
| 162 |
+
"licensed_ais_admitted": False,
|
| 163 |
+
"vessels_e03_licensed_ais_tpr": "OUTSTANDING",
|
| 164 |
+
}
|
| 165 |
+
if item["id"] == "vessels"
|
| 166 |
+
else {}
|
| 167 |
+
),
|
| 168 |
}
|
| 169 |
for item in verticals
|
| 170 |
],
|
|
|
|
| 173 |
"demo": "/demo",
|
| 174 |
"evaluations": "/evaluations",
|
| 175 |
"vessels": "/vessels",
|
| 176 |
+
"ais_standards": "https://a11oy.net/vessels/ais-standards.json",
|
| 177 |
"proof": "https://a11oy.net/decision/",
|
| 178 |
},
|
| 179 |
}
|
|
|
|
| 191 |
result["data_label"] = DATA_LABEL
|
| 192 |
result["vertical_id"] = vertical_id
|
| 193 |
result["runtime_claimed"] = False
|
| 194 |
+
if vertical_id == "vessels":
|
| 195 |
+
result["licensed_ais_admitted"] = False
|
| 196 |
+
result["ais_standards"] = _vessels_ais_standards_echo()
|
| 197 |
return result
|
| 198 |
|
| 199 |
|
|
|
|
| 244 |
packed = load_vertical(vertical_id)
|
| 245 |
except FileNotFoundError as exc:
|
| 246 |
return _json({"error": str(exc), "status": STATUS}, 503)
|
| 247 |
+
body = {
|
| 248 |
+
"id": packed["id"],
|
| 249 |
+
"display_name": packed["display_name"],
|
| 250 |
+
"wedge": packed["wedge"],
|
| 251 |
+
"role": packed["role"],
|
| 252 |
+
"status": STATUS,
|
| 253 |
+
"data_label": DATA_LABEL,
|
| 254 |
+
"formula_authority": "NONE",
|
| 255 |
+
"manifest": packed["manifest"],
|
| 256 |
+
"policy": packed["policy"],
|
| 257 |
+
"cases": packed["cases"],
|
| 258 |
+
}
|
| 259 |
+
if packed.get("ais_standards") is not None:
|
| 260 |
+
body["licensed_ais_admitted"] = False
|
| 261 |
+
body["ais_standards"] = packed["ais_standards"]
|
| 262 |
+
return _json(body)
|
| 263 |
|
| 264 |
async def _evaluate(request):
|
| 265 |
vertical_id = request.path_params["vertical"]
|
pages/decision.html
CHANGED
|
@@ -58,6 +58,9 @@ pre { background:var(--ink-3); border-radius:10px; padding:1rem; overflow:auto;
|
|
| 58 |
.rail b { display:block; font-family:var(--font-mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }
|
| 59 |
.rail.on { box-shadow:0 0 0 1px var(--cord); }
|
| 60 |
.rail.done b { color:var(--ok); }
|
|
|
|
|
|
|
|
|
|
| 61 |
footer { margin-top:3rem; font-size:.8rem; color:var(--muted); }
|
| 62 |
</style>
|
| 63 |
<link rel="stylesheet" href="/assets/szl-flow.css" data-szl-flow-asset="style" />
|
|
@@ -100,15 +103,21 @@ footer { margin-top:3rem; font-size:.8rem; color:var(--muted); }
|
|
| 100 |
<p>One primary action. Execute is not offered on this desk. The kernel evaluates and refuses. It does not stamp LIVE.</p>
|
| 101 |
<p><button class="primary" id="primary" type="button" disabled>Select a frozen case</button></p>
|
| 102 |
<h2>Receipt</h2>
|
| 103 |
-
<pre id="out">Select a frozen case. The kernel is fail-closed. Licensed AIS is CLOSED. No Hugging Face Space is required for this desk.</pre>
|
| 104 |
</section>
|
| 105 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 106 |
<footer>
|
| 107 |
Status ROADMAP. Data label SAMPLE. Formula authority NONE. Λ = Conjecture 1 / advisory.
|
| 108 |
-
Licensed AIS CLOSED. Production ready false.
|
| 109 |
Not legal advice. Not investment advice. Not a trading bot. Not a Palantir clone.
|
| 110 |
Canonical source: szl-holdings/a11oy/verticals.
|
| 111 |
Proof: <a href="https://a11oy.net/decision/">a11oy.net/decision</a>.
|
|
|
|
| 112 |
Product: a-11-oy.com. Never a11oy.com.
|
| 113 |
</footer>
|
| 114 |
</main>
|
|
@@ -130,6 +139,8 @@ const vtitle = document.getElementById("vtitle");
|
|
| 130 |
const vwedge = document.getElementById("vwedge");
|
| 131 |
const primary = document.getElementById("primary");
|
| 132 |
const rail = document.getElementById("rail");
|
|
|
|
|
|
|
| 133 |
let current = "aegis";
|
| 134 |
let selected = null;
|
| 135 |
|
|
@@ -170,6 +181,7 @@ async function boot() {
|
|
| 170 |
chip(cat.status || "ROADMAP"),
|
| 171 |
chip("formula authority NONE", "mute"),
|
| 172 |
chip("licensed AIS CLOSED", "mute"),
|
|
|
|
| 173 |
chip((cat.verticals || []).length + " desks", "mute")
|
| 174 |
);
|
| 175 |
tabs.replaceChildren();
|
|
@@ -185,6 +197,31 @@ async function boot() {
|
|
| 185 |
if (first) show(first.dataset.id, first, false);
|
| 186 |
}
|
| 187 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 188 |
async function show(id, btn, push) {
|
| 189 |
current = id;
|
| 190 |
selected = null;
|
|
@@ -193,6 +230,7 @@ async function show(id, btn, push) {
|
|
| 193 |
const data = await fetch("/api/a11oy/v1/decision/" + encodeURIComponent(id)).then((r) => r.json());
|
| 194 |
vtitle.textContent = data.display_name || id;
|
| 195 |
vwedge.textContent = data.wedge || "";
|
|
|
|
| 196 |
casesEl.replaceChildren();
|
| 197 |
(data.cases || []).forEach((item) => {
|
| 198 |
const b = document.createElement("button");
|
|
|
|
| 58 |
.rail b { display:block; font-family:var(--font-mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }
|
| 59 |
.rail.on { box-shadow:0 0 0 1px var(--cord); }
|
| 60 |
.rail.done b { color:var(--ok); }
|
| 61 |
+
#ais-panel table { width:100%; border-collapse:collapse; font-size:12px; }
|
| 62 |
+
#ais-panel td { padding:.35rem .4rem; border-top:1px solid var(--line); vertical-align:top; color:var(--paper-dim); }
|
| 63 |
+
#ais-panel td:first-child { color:var(--paper); font-family:var(--font-mono); white-space:nowrap; }
|
| 64 |
footer { margin-top:3rem; font-size:.8rem; color:var(--muted); }
|
| 65 |
</style>
|
| 66 |
<link rel="stylesheet" href="/assets/szl-flow.css" data-szl-flow-asset="style" />
|
|
|
|
| 103 |
<p>One primary action. Execute is not offered on this desk. The kernel evaluates and refuses. It does not stamp LIVE.</p>
|
| 104 |
<p><button class="primary" id="primary" type="button" disabled>Select a frozen case</button></p>
|
| 105 |
<h2>Receipt</h2>
|
| 106 |
+
<pre id="out">Select a frozen case. The kernel is fail-closed. Licensed AIS is CLOSED. AIS standards are CITATION_ONLY. No Hugging Face Space is required for this desk.</pre>
|
| 107 |
</section>
|
| 108 |
</div>
|
| 109 |
+
<section class="panel" id="ais-panel" hidden>
|
| 110 |
+
<h2>Maritime AIS standards · CITATION_ONLY</h2>
|
| 111 |
+
<p>This desk is not Class A or Class B shipborne AIS equipment. It does not transmit. Licensed AIS stays CLOSED without a live key. Citing the instruments names the gate. It does not claim type approval, SOLAS V/19 carriage, AtoN service, or a licensed-AIS true-positive rate. VESSELS-E03 stays OUTSTANDING. Proof: <a href="https://a11oy.net/vessels/ais-standards.json">a11oy.net/vessels/ais-standards.json</a>.</p>
|
| 112 |
+
<div id="ais"></div>
|
| 113 |
+
</section>
|
| 114 |
<footer>
|
| 115 |
Status ROADMAP. Data label SAMPLE. Formula authority NONE. Λ = Conjecture 1 / advisory.
|
| 116 |
+
Licensed AIS CLOSED. AIS standards CITATION_ONLY. Production ready false.
|
| 117 |
Not legal advice. Not investment advice. Not a trading bot. Not a Palantir clone.
|
| 118 |
Canonical source: szl-holdings/a11oy/verticals.
|
| 119 |
Proof: <a href="https://a11oy.net/decision/">a11oy.net/decision</a>.
|
| 120 |
+
Vessels AIS: <a href="https://a11oy.net/vessels/ais-standards.json">a11oy.net/vessels/ais-standards.json</a>.
|
| 121 |
Product: a-11-oy.com. Never a11oy.com.
|
| 122 |
</footer>
|
| 123 |
</main>
|
|
|
|
| 139 |
const vwedge = document.getElementById("vwedge");
|
| 140 |
const primary = document.getElementById("primary");
|
| 141 |
const rail = document.getElementById("rail");
|
| 142 |
+
const aisPanel = document.getElementById("ais-panel");
|
| 143 |
+
const aisEl = document.getElementById("ais");
|
| 144 |
let current = "aegis";
|
| 145 |
let selected = null;
|
| 146 |
|
|
|
|
| 181 |
chip(cat.status || "ROADMAP"),
|
| 182 |
chip("formula authority NONE", "mute"),
|
| 183 |
chip("licensed AIS CLOSED", "mute"),
|
| 184 |
+
chip("AIS standards CITATION_ONLY", "mute"),
|
| 185 |
chip((cat.verticals || []).length + " desks", "mute")
|
| 186 |
);
|
| 187 |
tabs.replaceChildren();
|
|
|
|
| 197 |
if (first) show(first.dataset.id, first, false);
|
| 198 |
}
|
| 199 |
|
| 200 |
+
function renderAis(data) {
|
| 201 |
+
const std = data && data.ais_standards;
|
| 202 |
+
if (!std) {
|
| 203 |
+
aisPanel.hidden = true;
|
| 204 |
+
aisEl.replaceChildren();
|
| 205 |
+
return;
|
| 206 |
+
}
|
| 207 |
+
aisPanel.hidden = false;
|
| 208 |
+
const table = document.createElement("table");
|
| 209 |
+
(std.instruments || []).forEach((row) => {
|
| 210 |
+
const tr = document.createElement("tr");
|
| 211 |
+
const id = typeof row === "string" ? row : (row && row.id) || "";
|
| 212 |
+
const title = typeof row === "string" ? "" : (row && row.title) || "";
|
| 213 |
+
const bound = typeof row === "string" ? "CITATION_ONLY" : (row && row.bound) || "CITATION_ONLY";
|
| 214 |
+
const cells = [id, title, bound];
|
| 215 |
+
cells.forEach((text) => {
|
| 216 |
+
const td = document.createElement("td");
|
| 217 |
+
td.textContent = text;
|
| 218 |
+
tr.appendChild(td);
|
| 219 |
+
});
|
| 220 |
+
table.appendChild(tr);
|
| 221 |
+
});
|
| 222 |
+
aisEl.replaceChildren(table);
|
| 223 |
+
}
|
| 224 |
+
|
| 225 |
async function show(id, btn, push) {
|
| 226 |
current = id;
|
| 227 |
selected = null;
|
|
|
|
| 230 |
const data = await fetch("/api/a11oy/v1/decision/" + encodeURIComponent(id)).then((r) => r.json());
|
| 231 |
vtitle.textContent = data.display_name || id;
|
| 232 |
vwedge.textContent = data.wedge || "";
|
| 233 |
+
renderAis(data);
|
| 234 |
casesEl.replaceChildren();
|
| 235 |
(data.cases || []).forEach((item) => {
|
| 236 |
const b = document.createElement("button");
|
pages/killinchu.html
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<!-- SPDX-License-Identifier: Apache-2.0
|
| 3 |
+
Killinchu on-origin twin status. Eyes and decision, not the trigger.
|
| 4 |
+
Does not hand canonical to huggingface.co. -->
|
| 5 |
+
<html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/>
|
| 6 |
+
<title>a11oy · Killinchu</title>
|
| 7 |
+
<style>
|
| 8 |
+
:root{--bg:#0a0a0a;--s1:#111;--ink:#f4f1ea;--dim:#c8c5bc;--mute:#7a776f;--rule:#2a2a2a}
|
| 9 |
+
*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--ink);font:16px/1.5 system-ui,sans-serif}
|
| 10 |
+
main{max-width:720px;margin:0 auto;padding:48px 24px}
|
| 11 |
+
.chip{display:inline-block;border:1px solid var(--rule);padding:4px 8px;font:11px/1 ui-monospace,monospace;color:var(--dim);margin-right:8px}
|
| 12 |
+
h1{font-weight:500;font-size:36px;letter-spacing:-.03em;margin:16px 0}
|
| 13 |
+
p{color:var(--dim);max-width:60ch;margin:12px 0}
|
| 14 |
+
a{color:var(--ink)}
|
| 15 |
+
</style></head>
|
| 16 |
+
<body>
|
| 17 |
+
<main>
|
| 18 |
+
<p><span class="chip" id="st">PROBING</span><span class="chip">ON ORIGIN</span></p>
|
| 19 |
+
<h1>Killinchu</h1>
|
| 20 |
+
<p>Eyes and decision. Not the trigger. Effectors stay SIMULATED. This page stays on a-11-oy.com so the product origin does not hand canonical to Hugging Face.</p>
|
| 21 |
+
<p>Twin Space runtime is reported honestly. If the Space is down, this page stays up.</p>
|
| 22 |
+
<p id="detail" class="chip">…</p>
|
| 23 |
+
<p><a href="/command-v2#defense">Command · Defense</a> · <a href="/hatun-mcp">Hatun</a></p>
|
| 24 |
+
</main>
|
| 25 |
+
<script>
|
| 26 |
+
const ORIGIN = (location.hostname.endsWith('a-11-oy.com')||location.hostname.includes('hf.space')) ? '' : 'https://a-11-oy.com';
|
| 27 |
+
async function boot(){
|
| 28 |
+
const el=document.getElementById('st');
|
| 29 |
+
const d=document.getElementById('detail');
|
| 30 |
+
try{
|
| 31 |
+
const r=await fetch(ORIGIN+'/healthz',{headers:{accept:'application/json'}});
|
| 32 |
+
const j=await r.json();
|
| 33 |
+
const sig=(j.signer&&j.signer.status)||'UNKNOWN';
|
| 34 |
+
el.textContent='ORIGIN '+ (j.status||r.status);
|
| 35 |
+
d.textContent='healthz signer '+sig+' · doctrine '+(j.doctrine||'v11');
|
| 36 |
+
}catch(e){
|
| 37 |
+
el.textContent='ORIGIN DEGRADED';
|
| 38 |
+
d.textContent=String(e);
|
| 39 |
+
}
|
| 40 |
+
}
|
| 41 |
+
boot();
|
| 42 |
+
</script>
|
| 43 |
+
</body></html>
|