feat: establish Quant OS production-80 architecture
This commit is contained in:
+173
-23
@@ -1457,7 +1457,7 @@
|
||||
<div class="masthead__brand">
|
||||
<p class="eyebrow">Release control / public snapshot</p>
|
||||
<h1 class="brand-title" id="page-title">Quant OS</h1>
|
||||
<p class="brand-subtitle">个人 A 股研究到执行的证据审计台</p>
|
||||
<p class="brand-subtitle">个人沪深 A 股研究到执行的证据审计台</p>
|
||||
</div>
|
||||
<div class="masthead__claim">
|
||||
<div class="claim-line">
|
||||
@@ -1479,15 +1479,15 @@
|
||||
|
||||
<div class="safety-banner" role="note" aria-label="资金安全边界">
|
||||
<svg class="icon" aria-hidden="true"><use href="#icon-shield-alert"></use></svg>
|
||||
<p><strong>可运行框架 ≠ 可投入资金。</strong> 本页只呈现构建时证据快照,不是实时服务健康监控,也不构成投资收益声明。</p>
|
||||
<p><strong>可运行框架 ≠ 可投入资金。</strong> 本页只呈现构建时证据快照,不是实时服务健康监控,也不构成投资收益声明。<span id="market-scope-copy">当前交易执行范围仅覆盖沪深;北交所尚未接入,所有北交所委托必须 fail closed。</span></p>
|
||||
<span class="snapshot-label">LIVE READY = FALSE</span>
|
||||
</div>
|
||||
|
||||
<section class="metrics" aria-label="核心状态指标">
|
||||
<div class="metric">
|
||||
<span class="metric__label">Delivery score</span>
|
||||
<strong class="metric__value" id="metric-score">NOT SCORED</strong>
|
||||
<span class="metric__note">不把文章估分冒充系统得分</span>
|
||||
<span class="metric__label">Production 80</span>
|
||||
<strong class="metric__value" id="metric-score">0 / 100</strong>
|
||||
<span class="metric__note">证据得分;Hard Gate 不可补偿</span>
|
||||
</div>
|
||||
<div class="metric">
|
||||
<span class="metric__label">Gate evidence</span>
|
||||
@@ -1513,9 +1513,10 @@
|
||||
<a href="#layers"><span class="rail__index">01</span><span>系统分层</span></a>
|
||||
<a href="#models"><span class="rail__index">02</span><span>模型边界</span></a>
|
||||
<a href="#platforms"><span class="rail__index">03</span><span>平台接入</span></a>
|
||||
<a href="#gates"><span class="rail__index">04</span><span>G1–G10</span></a>
|
||||
<a href="#bundles"><span class="rail__index">05</span><span>发布包</span></a>
|
||||
<a href="#provenance"><span class="rail__index">06</span><span>证据来源</span></a>
|
||||
<a href="#maturity80"><span class="rail__index">04</span><span>80 分标准</span></a>
|
||||
<a href="#gates"><span class="rail__index">05</span><span>G1–G10</span></a>
|
||||
<a href="#bundles"><span class="rail__index">06</span><span>发布包</span></a>
|
||||
<a href="#provenance"><span class="rail__index">07</span><span>证据来源</span></a>
|
||||
</nav>
|
||||
|
||||
<main class="main-content" id="main-content" tabindex="-1">
|
||||
@@ -1626,9 +1627,48 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="audit-section" id="gates" aria-labelledby="gates-title">
|
||||
<section class="audit-section" id="maturity80" aria-labelledby="maturity80-title">
|
||||
<div class="section-header">
|
||||
<span class="section-code">SEC.04</span>
|
||||
<div>
|
||||
<h2 class="section-title" id="maturity80-title">Production 80 · 受限生产标准</h2>
|
||||
<p class="section-intro">80 分以 Baseline 60 全门通过为前置,并要求真实 QMT、60 个交易日 shadow、10 个交易日受限资金 canary、持续对账、恢复演练和券商程序化交易确认。</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="overview-board">
|
||||
<div class="overview-copy">
|
||||
<h3>当前 80 分判定</h3>
|
||||
<p><strong id="maturity80-score">0 / 100 · BLOCKED</strong></p>
|
||||
<p id="maturity80-policy">等待 machine profile。缺失数据时不得获得分数。</p>
|
||||
</div>
|
||||
<div class="evidence-summary">
|
||||
<h3>不可补偿前置</h3>
|
||||
<ul class="runtime-list" id="maturity80-prerequisites">
|
||||
<li>等待状态数据</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="matrix-wrap">
|
||||
<table class="bundle-table">
|
||||
<caption class="visually-hidden">Quant OS 80 分七个维度的已验证得分和最低分</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Domain</th>
|
||||
<th scope="col">Verified</th>
|
||||
<th scope="col">Weight</th>
|
||||
<th scope="col">Required floor</th>
|
||||
<th scope="col">Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="maturity80-domain-body"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="gate-stack" id="maturity80-control-list"></div>
|
||||
</section>
|
||||
|
||||
<section class="audit-section" id="gates" aria-labelledby="gates-title">
|
||||
<div class="section-header">
|
||||
<span class="section-code">SEC.05</span>
|
||||
<div>
|
||||
<h2 class="section-title" id="gates-title">Baseline 60 · G1–G10</h2>
|
||||
<p class="section-intro">Gate 是发布闸门,不是代码清单。展开每项查看验收定义和缺失证据;当前 10 项均未通过。</p>
|
||||
@@ -1639,7 +1679,7 @@
|
||||
|
||||
<section class="audit-section" id="bundles" aria-labelledby="bundles-title">
|
||||
<div class="section-header">
|
||||
<span class="section-code">SEC.05</span>
|
||||
<span class="section-code">SEC.06</span>
|
||||
<div>
|
||||
<h2 class="section-title" id="bundles-title">跨平台发布包完整性</h2>
|
||||
<p class="section-intro">构建器核对共享核心、wrapper、配置与生成单文件的 SHA-256。哈希一致只证明代码发布包完整,不证明目标平台通过。</p>
|
||||
@@ -1664,7 +1704,7 @@
|
||||
|
||||
<section class="audit-section" id="provenance" aria-labelledby="provenance-title">
|
||||
<div class="section-header">
|
||||
<span class="section-code">SEC.06</span>
|
||||
<span class="section-code">SEC.07</span>
|
||||
<div>
|
||||
<h2 class="section-title" id="provenance-title">证据来源与快照血缘</h2>
|
||||
<p class="section-intro">所有公开字段由仓库中的权威记录生成并脱敏。链接指向私有 Gitea 源码,访问时可能要求登录。</p>
|
||||
@@ -1738,7 +1778,7 @@
|
||||
|
||||
<footer class="page-footer">
|
||||
<p>本页是公开、脱敏的构建时快照。未发布本地行情、运行 artifacts、券商状态或可复用凭据。任何实盘决策必须回到 G1–G10 的发布级证据。</p>
|
||||
<a href="https://git.gomars.fun/boat/quants-strategies/src/branch/master/quant-os" target="_blank" rel="noopener noreferrer">
|
||||
<a href="https://git.gomars.fun/boat/quant-os/src/branch/master" target="_blank" rel="noopener noreferrer">
|
||||
源码(需登录)
|
||||
<svg class="icon" aria-hidden="true"><use href="#icon-external"></use></svg>
|
||||
</a>
|
||||
@@ -1759,7 +1799,7 @@
|
||||
(() => {
|
||||
"use strict";
|
||||
|
||||
const repoBase = "https://git.gomars.fun/boat/quants-strategies/src/branch/master/quant-os/";
|
||||
const repoBase = "https://git.gomars.fun/boat/quant-os/src/branch/master/";
|
||||
const statusLabels = {
|
||||
implemented: { label: "已实现", tone: "implemented" },
|
||||
tested: { label: "合同验证", tone: "tested" },
|
||||
@@ -1830,13 +1870,14 @@
|
||||
const renderHeader = (data) => {
|
||||
const claim = data.claim || {};
|
||||
const summary = data.summary || {};
|
||||
const maturity80 = data.maturity80 || {};
|
||||
byId("claim-status").textContent = claim.status || "NOT_BASELINE_60";
|
||||
byId("claim-gates").textContent = `${claim.gatesPassed ?? 0} / ${claim.gatesTotal ?? 10} GATES`;
|
||||
byId("claim-reason").textContent = claim.reason || "缺少发布级证据。";
|
||||
byId("overview-reason").textContent = claim.reason || "缺少发布级证据。";
|
||||
byId("metric-score").textContent = claim.score == null
|
||||
? String(claim.scoreStatus || "not_scored").replaceAll("_", " ").toUpperCase()
|
||||
: String(claim.score);
|
||||
byId("market-scope-copy").textContent = data.marketScope?.statement ||
|
||||
"当前交易执行范围仅覆盖沪深;北交所尚未接入,所有北交所委托必须 fail closed。";
|
||||
byId("metric-score").textContent = `${maturity80.effectiveScore ?? 0} / ${maturity80.maximumScore ?? 100}`;
|
||||
byId("metric-gates").textContent = `${claim.gatesPassed ?? 0} / ${claim.gatesTotal ?? 10}`;
|
||||
byId("metric-tests").textContent = summary.testsRecorded == null ? "—" : String(summary.testsRecorded);
|
||||
byId("metric-tests-note").textContent = summary.optionalSkipsRecorded == null
|
||||
@@ -1853,6 +1894,63 @@
|
||||
: "<li>无真实运行证据记录</li>";
|
||||
};
|
||||
|
||||
const renderMaturity80 = (data) => {
|
||||
const maturity = data.maturity80 || {};
|
||||
byId("maturity80-score").textContent =
|
||||
`${maturity.effectiveScore ?? 0} / ${maturity.maximumScore ?? 100} · ${maturity.state || "BLOCKED"}`;
|
||||
byId("maturity80-policy").textContent = maturity.evidencePolicy ||
|
||||
"缺少 hash-linked evidence 时不得计分。";
|
||||
const prerequisiteLabels = {
|
||||
baseline_60_all_gates: "Baseline 60 · G1–G10 全通过",
|
||||
real_qmt_observed: "真实 QMT 已观察",
|
||||
broker_programmatic_confirmation: "券商程序化交易确认",
|
||||
shadow_trading_days: "同一候选 60 个交易日 shadow",
|
||||
canary_trading_days: "受限资金 10 个交易日 canary",
|
||||
open_p0_within_limit: "未关闭 P0 = 0",
|
||||
open_p1_within_limit: "未关闭 P1 = 0"
|
||||
};
|
||||
const prerequisites = maturity.prerequisites || {};
|
||||
const prerequisiteRows = Object.entries(prerequisiteLabels)
|
||||
.map(([key, label]) => `<li>${escapeHtml(label)} · ${prerequisites[key] === true ? "PASS" : "BLOCKED"}</li>`)
|
||||
prerequisiteRows.push(
|
||||
`<li>Pre-canary 授权记录已核验 · ${maturity.preCanaryAuthorizationVerified === true ? "PASS" : "BLOCKED"}</li>`,
|
||||
`<li>Canary 证据反向绑定授权 · ${maturity.canaryAuthorizationChainVerified === true ? "PASS" : "BLOCKED"}</li>`,
|
||||
`<li>最终 promotion 可信 attestation · ${maturity.trustedAttestationVerified === true ? "PASS" : "BLOCKED"}</li>`
|
||||
);
|
||||
byId("maturity80-prerequisites").innerHTML = prerequisiteRows.join("");
|
||||
const domains = Array.isArray(maturity.domains) ? maturity.domains : [];
|
||||
byId("maturity80-domain-body").innerHTML = domains.map((domain) => `
|
||||
<tr>
|
||||
<td><strong>${escapeHtml(domain.id)} · ${escapeHtml(domain.name)}</strong></td>
|
||||
<td>${escapeHtml(domain.score)}</td>
|
||||
<td>${escapeHtml(domain.weight)}</td>
|
||||
<td>${escapeHtml(domain.minimumScore)}</td>
|
||||
<td>${statusTag(domain.floorPassed ? "tested" : "blocked")}</td>
|
||||
</tr>
|
||||
`).join("");
|
||||
const controls = Array.isArray(maturity.controls) ? maturity.controls : [];
|
||||
byId("maturity80-control-list").innerHTML = controls.map((control) => `
|
||||
<details class="gate-item">
|
||||
<summary>
|
||||
<span class="gate-id">${escapeHtml(control.id)}</span>
|
||||
<span class="gate-name">${escapeHtml(control.name)}</span>
|
||||
<span class="gate-acceptance">${control.hardGate ? "HARD GATE" : "SCORED CONTROL"} · ${escapeHtml(control.weight)} points · min ${escapeHtml(control.minimumEvidenceTier)}</span>
|
||||
${statusTag(control.status)}
|
||||
</summary>
|
||||
<div class="gate-detail">
|
||||
<div>
|
||||
<h4>Current gap</h4>
|
||||
<p>${escapeHtml(control.note || "No qualifying evidence recorded.")}</p>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Evidence rule</h4>
|
||||
<p>只有绑定同一候选身份、达到最低 tier、SHA-256 可重算且通过可信 verifier 的 claim 才能通过。</p>
|
||||
</div>
|
||||
</div>
|
||||
</details>
|
||||
`).join("");
|
||||
};
|
||||
|
||||
const renderLayers = (data) => {
|
||||
const layers = Array.isArray(data.layers) ? data.layers : [];
|
||||
byId("layer-list").innerHTML = layers.map((layer, index) => `
|
||||
@@ -2071,15 +2169,66 @@
|
||||
|
||||
const validatePublicData = (data) => {
|
||||
if (!data || typeof data !== "object") throw new Error("missing public status object");
|
||||
if (data.claim?.status !== "NOT_BASELINE_60") throw new Error("unsafe claim status");
|
||||
if (data.claim?.releaseVerified !== false || data.claim?.liveReady !== false) {
|
||||
throw new Error("unsafe release claim");
|
||||
const claim = data.claim || {};
|
||||
if (!["NOT_BASELINE_60", "BASELINE_60_VERIFIED"].includes(claim.status)) {
|
||||
throw new Error("unsupported claim status");
|
||||
}
|
||||
if (data.claim?.gatesPassed !== 0 || data.claim?.gatesTotal !== 10) {
|
||||
throw new Error("unexpected gate score");
|
||||
if (!Array.isArray(data.gates) || data.gates.length !== claim.gatesTotal) {
|
||||
throw new Error("gate set mismatch");
|
||||
}
|
||||
if (!Array.isArray(data.gates) || data.gates.some((gate) => gate.status !== "not_passed")) {
|
||||
throw new Error("all gates must remain explicitly not_passed");
|
||||
if (data.gates.some((gate) => !["passed", "not_passed"].includes(gate.status))) {
|
||||
throw new Error("unsupported gate status");
|
||||
}
|
||||
const gatesPassed = data.gates.filter((gate) => gate.status === "passed").length;
|
||||
if (gatesPassed !== claim.gatesPassed) throw new Error("gate count mismatch");
|
||||
const baselineVerified = claim.status === "BASELINE_60_VERIFIED";
|
||||
if (baselineVerified !== Boolean(claim.releaseVerified)) {
|
||||
throw new Error("baseline release claim mismatch");
|
||||
}
|
||||
if (baselineVerified && gatesPassed !== claim.gatesTotal) {
|
||||
throw new Error("baseline claim requires every gate");
|
||||
}
|
||||
const maturity = data.maturity80 || {};
|
||||
const marketScope = data.marketScope || {};
|
||||
if (
|
||||
JSON.stringify(marketScope.included) !== JSON.stringify(["SSE", "SZSE"])
|
||||
|| JSON.stringify(marketScope.excludedFailClosed) !== JSON.stringify(["BSE"])
|
||||
|| marketScope.bseTradingEnabled !== false
|
||||
) {
|
||||
throw new Error("unsafe or ambiguous market scope");
|
||||
}
|
||||
if (Boolean(maturity.baseline60Passed) !== baselineVerified) {
|
||||
throw new Error("60/80 assessment mismatch");
|
||||
}
|
||||
if (Boolean(maturity.qualified) !== Boolean(claim.liveReady)) {
|
||||
throw new Error("limited-live claim mismatch");
|
||||
}
|
||||
if (maturity.qualified && (
|
||||
maturity.state !== "LIMITED_LIVE_VERIFIED"
|
||||
|| !maturity.trustedAttestationVerified
|
||||
|| !maturity.preCanaryAuthorized
|
||||
|| !maturity.canaryAuthorizationChainVerified
|
||||
)) {
|
||||
throw new Error("unattested production-80 claim");
|
||||
}
|
||||
if (
|
||||
["PRE_CANARY_AUTHORIZED", "CANARY_RUNNING"].includes(maturity.state)
|
||||
&& !maturity.preCanaryAuthorized
|
||||
) {
|
||||
throw new Error("current canary state lacks authorization");
|
||||
}
|
||||
if (maturity.preCanaryAuthorized
|
||||
&& !maturity.preCanaryAuthorizationVerified) {
|
||||
throw new Error("unattested pre-canary authorization");
|
||||
}
|
||||
if (
|
||||
String(maturity.state || "").startsWith("TEST_ONLY_")
|
||||
&& (!maturity.testOnly || maturity.qualified)
|
||||
) {
|
||||
throw new Error("test-only assessment overclaim");
|
||||
}
|
||||
if (!baselineVerified && maturity.effectiveScore > 59) {
|
||||
throw new Error("production-80 score violates baseline-60 cap");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2095,6 +2244,7 @@
|
||||
renderLayers(data);
|
||||
renderModels(data);
|
||||
renderPlatforms();
|
||||
renderMaturity80(data);
|
||||
renderGates(data);
|
||||
renderBundles(data);
|
||||
renderActions(data);
|
||||
|
||||
+506
-28
@@ -1,6 +1,6 @@
|
||||
// Generated by tools/build_public_status.py; do not edit by hand.
|
||||
window.QUANT_OS_PUBLIC_STATUS = {
|
||||
"auditAsOf": "2026-07-26",
|
||||
"auditAsOf": "2026-07-30",
|
||||
"bundles": {
|
||||
"artifacts": [
|
||||
{
|
||||
@@ -116,8 +116,8 @@ window.QUANT_OS_PUBLIC_STATUS = {
|
||||
"authorized JQData market snapshot, licence/lineage record and a frozen provider-data candidate tape",
|
||||
"authorized real-data multi-period JoinQuant TargetPackage run plus same-input local/JoinQuant layer-by-layer reconciliation",
|
||||
"real QMT TargetPackage built-in and qmttools backtest exports",
|
||||
"real QMT historical-ST positive control, terminal/xtquant build record, broker query contract and trade-amount semantic probes, callback/restart and at least 20 trading days of shadow evidence",
|
||||
"continuous reconciliation, recovery drills and broker compliance confirmation"
|
||||
"real QMT historical-ST positive control, terminal/xtquant build record, broker query contract and trade-amount semantic probes, and callback/restart evidence; Baseline 60 requires at least 20 trading days of shadow, while the current Production 80 gap requires at least 60 trading days for the same frozen candidate",
|
||||
"continuous reconciliation, recovery drills and broker programmatic-trading report/verification confirmation"
|
||||
],
|
||||
"internal": [
|
||||
"The authorized provider-data path has not yet been connected end to end to the frozen Ridge ModelBundle, calibrated risk/cost inputs, five-layer Baseline candidate and TargetPackage tape; the current connected candidate remains synthetic.",
|
||||
@@ -203,11 +203,17 @@ window.QUANT_OS_PUBLIC_STATUS = {
|
||||
"kind": "runbook",
|
||||
"label": "Platform deployment runbook",
|
||||
"path": "runbooks/PLATFORM_DEPLOYMENT.md"
|
||||
},
|
||||
{
|
||||
"id": "public-status-deployment",
|
||||
"kind": "runbook",
|
||||
"label": "Atomic public status deployment",
|
||||
"path": "ops/README.md"
|
||||
}
|
||||
],
|
||||
"freshness": [
|
||||
{
|
||||
"asOf": "2026-07-26",
|
||||
"asOf": "2026-07-30",
|
||||
"evidenceLinks": [
|
||||
"scorecard",
|
||||
"audit"
|
||||
@@ -216,7 +222,7 @@ window.QUANT_OS_PUBLIC_STATUS = {
|
||||
"label": "项目证据审计",
|
||||
"semantics": "证据盘点日期;不是部署时间,也不是行情截止日。",
|
||||
"status": "recorded",
|
||||
"value": "2026-07-26"
|
||||
"value": "2026-07-30"
|
||||
},
|
||||
{
|
||||
"evidenceLinks": [
|
||||
@@ -292,7 +298,7 @@ window.QUANT_OS_PUBLIC_STATUS = {
|
||||
"label": "QMT / broker 真实运行",
|
||||
"lastRealRuntimeAt": null,
|
||||
"productionReady": false,
|
||||
"semantics": "QMT 只有 bundle/harness,XtTrader 只有 fake-broker 只读合同;尚无真实运行或 20 日影子证据。",
|
||||
"semantics": "QMT 只有 bundle/harness,XtTrader 只有 fake-broker 只读合同;尚无真实运行或影子证据。Baseline 60 至少需要 20 个交易日,Production 80 当前缺口为同一冻结候选至少 60 个交易日。",
|
||||
"status": "blocked",
|
||||
"value": "N/A"
|
||||
}
|
||||
@@ -486,13 +492,13 @@ window.QUANT_OS_PUBLIC_STATUS = {
|
||||
"limitations": [
|
||||
"真实平台跨引擎 manifest",
|
||||
"逐层 signal/target/order 差异",
|
||||
"QMT 至少 20 个交易日影子记录"
|
||||
"Baseline 60 所需的 QMT 至少 20 个交易日影子记录;Production 80 另要求同一冻结候选至少 60 个交易日"
|
||||
],
|
||||
"name": "跨引擎一致性",
|
||||
"requiredEvidence": [
|
||||
"真实平台跨引擎 manifest",
|
||||
"逐层 signal/target/order 差异",
|
||||
"QMT 至少 20 个交易日影子记录"
|
||||
"Baseline 60 所需的 QMT 至少 20 个交易日影子记录;Production 80 另要求同一冻结候选至少 60 个交易日"
|
||||
],
|
||||
"status": "not_passed"
|
||||
},
|
||||
@@ -519,7 +525,7 @@ window.QUANT_OS_PUBLIC_STATUS = {
|
||||
"status": "not_passed"
|
||||
}
|
||||
],
|
||||
"generatedAt": "2026-07-26T00:00:00Z",
|
||||
"generatedAt": "2026-07-30T00:00:00Z",
|
||||
"generatedAtSource": "audit_as_of",
|
||||
"layers": [
|
||||
{
|
||||
@@ -646,7 +652,7 @@ window.QUANT_OS_PUBLIC_STATUS = {
|
||||
],
|
||||
"id": "broker-oms",
|
||||
"limitations": [
|
||||
"无真实券商 attestation、回调/重启证明和 20 个交易日影子记录;没有实盘下单入口。"
|
||||
"无真实券商 attestation、回调/重启证明和影子记录;Baseline 60 至少需要 20 个交易日,Production 80 当前缺口为同一冻结候选至少 60 个交易日;没有实盘下单入口。"
|
||||
],
|
||||
"name": "券商、订单与影子盘",
|
||||
"releaseVerified": false,
|
||||
@@ -673,6 +679,412 @@ window.QUANT_OS_PUBLIC_STATUS = {
|
||||
"status": "blocked"
|
||||
}
|
||||
],
|
||||
"marketScope": {
|
||||
"bseTradingEnabled": false,
|
||||
"excludedFailClosed": [
|
||||
"BSE"
|
||||
],
|
||||
"executionScopeLabel": "沪深(上交所、深交所)",
|
||||
"included": [
|
||||
"SSE",
|
||||
"SZSE"
|
||||
],
|
||||
"statement": "当前交易执行范围仅覆盖沪深;北交所尚未接入,所有北交所委托必须 fail closed。"
|
||||
},
|
||||
"maturity80": {
|
||||
"assessedAsOf": "2026-07-30",
|
||||
"baseline60AttestationVerified": false,
|
||||
"baseline60Passed": false,
|
||||
"baselineProfileCanonicalSha256": "34adf09a824299ddb07c17f56751527ddf96ff5e494e792be0c65da4f8acdeb3",
|
||||
"canaryAuthorizationChainVerified": false,
|
||||
"canaryObservation": null,
|
||||
"canaryRunning": false,
|
||||
"controls": [
|
||||
{
|
||||
"domainId": "D1",
|
||||
"hardGate": true,
|
||||
"id": "D1-PIT",
|
||||
"minimumEvidenceTier": "E2",
|
||||
"name": "Production PIT dataset is complete, immutable and replayable",
|
||||
"note": "No authorized complete production PIT dataset has reached the frozen Ridge path.",
|
||||
"status": "not_passed",
|
||||
"weight": 4
|
||||
},
|
||||
{
|
||||
"domainId": "D1",
|
||||
"hardGate": true,
|
||||
"id": "D1-OPS",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "Data licence, lineage, freshness and recovery are operational",
|
||||
"note": "No production freshness SLO, entitlement record and restore history.",
|
||||
"status": "not_passed",
|
||||
"weight": 5
|
||||
},
|
||||
{
|
||||
"domainId": "D1",
|
||||
"hardGate": false,
|
||||
"id": "D1-REDUNDANCY",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "Critical inputs have independent validation or a tested fallback",
|
||||
"note": "No independent production source or rehearsed fallback.",
|
||||
"status": "not_passed",
|
||||
"weight": 6
|
||||
},
|
||||
{
|
||||
"domainId": "D2",
|
||||
"hardGate": true,
|
||||
"id": "D2-OOS",
|
||||
"minimumEvidenceTier": "E2",
|
||||
"name": "Frozen real-data walk-forward and OOS evidence is valid",
|
||||
"note": "The connected Ridge candidate still uses synthetic research data.",
|
||||
"status": "not_passed",
|
||||
"weight": 4
|
||||
},
|
||||
{
|
||||
"domainId": "D2",
|
||||
"hardGate": true,
|
||||
"id": "D2-MODEL",
|
||||
"minimumEvidenceTier": "E2",
|
||||
"name": "Model, feature and release identities are governed",
|
||||
"note": "ModelBundle exists, but production ownership, expiry, approval and rollback evidence do not.",
|
||||
"status": "not_passed",
|
||||
"weight": 5
|
||||
},
|
||||
{
|
||||
"domainId": "D2",
|
||||
"hardGate": false,
|
||||
"id": "D2-CHALLENGER",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "Champion, challenger, drift and experiment selection are controlled",
|
||||
"note": "No real-data champion/challenger or production drift history.",
|
||||
"status": "not_passed",
|
||||
"weight": 6
|
||||
},
|
||||
{
|
||||
"domainId": "D3",
|
||||
"hardGate": true,
|
||||
"id": "D3-LAYERS",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "Local, JoinQuant and QMT share frozen L1-L5 identities; Qlib follows its declared comparison scope",
|
||||
"note": "No real-data local/JoinQuant/QMT L1-L5 strict-peer identity; Qlib has only a separate declared-scope research fixture.",
|
||||
"status": "not_passed",
|
||||
"weight": 6
|
||||
},
|
||||
{
|
||||
"domainId": "D3",
|
||||
"hardGate": true,
|
||||
"id": "D3-DIFF",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "Order and fill differences are completely explained",
|
||||
"note": "Mock parity and one JoinQuant execution smoke do not close a real QMT difference ledger.",
|
||||
"status": "not_passed",
|
||||
"weight": 4
|
||||
},
|
||||
{
|
||||
"domainId": "D4",
|
||||
"hardGate": true,
|
||||
"id": "D4-RISK",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "Independent pre-trade risk fails closed",
|
||||
"note": "Risk components exist, but there is no independent real-broker fail-closed service evidence.",
|
||||
"status": "not_passed",
|
||||
"weight": 3
|
||||
},
|
||||
{
|
||||
"domainId": "D4",
|
||||
"hardGate": true,
|
||||
"id": "D4-RULES",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "Effective-dated SSE/SZSE rule packs are current; BSE remains fail-closed",
|
||||
"note": "The effective-dated 2026-07-06 SSE/SZSE rule packs are not implemented; BSE remains explicitly excluded and fail-closed.",
|
||||
"status": "not_passed",
|
||||
"weight": 4
|
||||
},
|
||||
{
|
||||
"domainId": "D4",
|
||||
"hardGate": true,
|
||||
"id": "D4-OMS",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "Order lifecycle is idempotent and restart-safe",
|
||||
"note": "No real QMT callback, reconnect and restart lifecycle evidence.",
|
||||
"status": "not_passed",
|
||||
"weight": 3
|
||||
},
|
||||
{
|
||||
"domainId": "D4",
|
||||
"hardGate": false,
|
||||
"id": "D4-TCA",
|
||||
"minimumEvidenceTier": "E4",
|
||||
"name": "Real fills drive TCA and capacity feedback",
|
||||
"note": "No controlled-live fills or governed TCA feedback.",
|
||||
"status": "not_passed",
|
||||
"weight": 5
|
||||
},
|
||||
{
|
||||
"domainId": "D5",
|
||||
"hardGate": true,
|
||||
"id": "D5-QMT",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "Authorized QMT account contracts are observed end to end",
|
||||
"note": "QMT has fake-contract and syntax evidence only.",
|
||||
"status": "not_passed",
|
||||
"weight": 5
|
||||
},
|
||||
{
|
||||
"domainId": "D5",
|
||||
"hardGate": true,
|
||||
"id": "D5-RECON",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "Cash, positions, sellable, orders and fills reconcile daily",
|
||||
"note": "No real daily broker reconciliation series.",
|
||||
"status": "not_passed",
|
||||
"weight": 5
|
||||
},
|
||||
{
|
||||
"domainId": "D5",
|
||||
"hardGate": true,
|
||||
"id": "D5-EVIDENCE",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "Broker facts and callbacks have authenticated replay evidence",
|
||||
"note": "Local HMAC evidence is not broker attestation or real callback history.",
|
||||
"status": "not_passed",
|
||||
"weight": 2
|
||||
},
|
||||
{
|
||||
"domainId": "D5",
|
||||
"hardGate": true,
|
||||
"id": "D5-FALLBACK",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "Manual broker fallback and operator handoff are rehearsed",
|
||||
"note": "No real-account manual handoff drill.",
|
||||
"status": "not_passed",
|
||||
"weight": 3
|
||||
},
|
||||
{
|
||||
"domainId": "D6",
|
||||
"hardGate": true,
|
||||
"id": "D6-SHADOW",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "The frozen candidate completes 60 trading days of shadow",
|
||||
"note": "Zero of the required 60 real QMT shadow trading days are recorded.",
|
||||
"status": "not_passed",
|
||||
"weight": 4
|
||||
},
|
||||
{
|
||||
"domainId": "D6",
|
||||
"hardGate": true,
|
||||
"id": "D6-CANARY",
|
||||
"minimumEvidenceTier": "E4",
|
||||
"name": "Limited capital canary completes at least 10 trading days",
|
||||
"note": "No limited-capital canary is authorized or observed.",
|
||||
"status": "not_passed",
|
||||
"weight": 3
|
||||
},
|
||||
{
|
||||
"domainId": "D6",
|
||||
"hardGate": true,
|
||||
"id": "D6-DR",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "Failure recovery meets RPO and RTO targets",
|
||||
"note": "No measured RPO/RTO and broker failure-drill evidence.",
|
||||
"status": "not_passed",
|
||||
"weight": 5
|
||||
},
|
||||
{
|
||||
"domainId": "D6",
|
||||
"hardGate": true,
|
||||
"id": "D6-RELEASE",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "Build, promotion, rollback and audit are reproducible",
|
||||
"note": "Independent CI, signed release inventory and rollback drill are not yet complete.",
|
||||
"status": "not_passed",
|
||||
"weight": 3
|
||||
},
|
||||
{
|
||||
"domainId": "D7",
|
||||
"hardGate": true,
|
||||
"id": "D7-SCOPE",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "Account and business scope remains personal proprietary",
|
||||
"note": "The intended personal scope is documented but has no private attestation reference.",
|
||||
"status": "not_passed",
|
||||
"weight": 3
|
||||
},
|
||||
{
|
||||
"domainId": "D7",
|
||||
"hardGate": true,
|
||||
"id": "D7-REPORT",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "Broker programmatic-trading report matches the deployed release",
|
||||
"note": "No broker programmatic-trading confirmation exists yet.",
|
||||
"status": "not_passed",
|
||||
"weight": 4
|
||||
},
|
||||
{
|
||||
"domainId": "D7",
|
||||
"hardGate": true,
|
||||
"id": "D7-FLOW",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "Abnormal-trading and conservative flow controls are enforced",
|
||||
"note": "No real-account abnormal-trading monitoring history.",
|
||||
"status": "not_passed",
|
||||
"weight": 3
|
||||
},
|
||||
{
|
||||
"domainId": "D7",
|
||||
"hardGate": true,
|
||||
"id": "D7-SECURITY",
|
||||
"minimumEvidenceTier": "E3",
|
||||
"name": "Secrets, access, personal data and supply chain are controlled",
|
||||
"note": "Repository secret hygiene exists, but production access, rotation and supply-chain evidence do not.",
|
||||
"status": "not_passed",
|
||||
"weight": 2
|
||||
},
|
||||
{
|
||||
"domainId": "D7",
|
||||
"hardGate": false,
|
||||
"id": "D7-REGULATED",
|
||||
"minimumEvidenceTier": "E2",
|
||||
"name": "A future regulated-mode rule calendar is maintained",
|
||||
"note": "The regulated-mode activation calendar is documentation-only.",
|
||||
"status": "not_passed",
|
||||
"weight": 3
|
||||
}
|
||||
],
|
||||
"controlsPassed": 0,
|
||||
"controlsTotal": 25,
|
||||
"domainFloorFailures": [
|
||||
"D1",
|
||||
"D2",
|
||||
"D3",
|
||||
"D4",
|
||||
"D5",
|
||||
"D6",
|
||||
"D7"
|
||||
],
|
||||
"domains": [
|
||||
{
|
||||
"floorPassed": false,
|
||||
"id": "D1",
|
||||
"minimumScore": 9,
|
||||
"name": "Data and point-in-time truth",
|
||||
"score": 0,
|
||||
"weight": 15
|
||||
},
|
||||
{
|
||||
"floorPassed": false,
|
||||
"id": "D2",
|
||||
"minimumScore": 9,
|
||||
"name": "Research and model governance",
|
||||
"score": 0,
|
||||
"weight": 15
|
||||
},
|
||||
{
|
||||
"floorPassed": false,
|
||||
"id": "D3",
|
||||
"minimumScore": 6,
|
||||
"name": "Cross-engine consistency",
|
||||
"score": 0,
|
||||
"weight": 10
|
||||
},
|
||||
{
|
||||
"floorPassed": false,
|
||||
"id": "D4",
|
||||
"minimumScore": 9,
|
||||
"name": "Execution and independent risk",
|
||||
"score": 0,
|
||||
"weight": 15
|
||||
},
|
||||
{
|
||||
"floorPassed": false,
|
||||
"id": "D5",
|
||||
"minimumScore": 9,
|
||||
"name": "Real QMT and broker truth",
|
||||
"score": 0,
|
||||
"weight": 15
|
||||
},
|
||||
{
|
||||
"floorPassed": false,
|
||||
"id": "D6",
|
||||
"minimumScore": 9,
|
||||
"name": "Operations, disaster recovery and audit",
|
||||
"score": 0,
|
||||
"weight": 15
|
||||
},
|
||||
{
|
||||
"floorPassed": false,
|
||||
"id": "D7",
|
||||
"minimumScore": 9,
|
||||
"name": "Compliance and security",
|
||||
"score": 0,
|
||||
"weight": 15
|
||||
}
|
||||
],
|
||||
"effectiveScore": 0,
|
||||
"evidencePolicy": "Only subject-bound evidence claims verified by a configured trust provider, at or above each control's minimum tier, earn points. The current repository has no production trust provider and therefore cannot self-issue a positive qualification.",
|
||||
"finalAttestationVerified": false,
|
||||
"hardGateFailures": [
|
||||
"D1-OPS",
|
||||
"D1-PIT",
|
||||
"D2-MODEL",
|
||||
"D2-OOS",
|
||||
"D3-DIFF",
|
||||
"D3-LAYERS",
|
||||
"D4-OMS",
|
||||
"D4-RISK",
|
||||
"D4-RULES",
|
||||
"D5-EVIDENCE",
|
||||
"D5-FALLBACK",
|
||||
"D5-QMT",
|
||||
"D5-RECON",
|
||||
"D6-CANARY",
|
||||
"D6-DR",
|
||||
"D6-RELEASE",
|
||||
"D6-SHADOW",
|
||||
"D7-FLOW",
|
||||
"D7-REPORT",
|
||||
"D7-SCOPE",
|
||||
"D7-SECURITY"
|
||||
],
|
||||
"hardGatesPassed": 0,
|
||||
"hardGatesTotal": 21,
|
||||
"maximumScore": 100,
|
||||
"preCanaryAttestationVerified": false,
|
||||
"preCanaryAuthorization": null,
|
||||
"preCanaryAuthorizationVerified": false,
|
||||
"preCanaryAuthorized": false,
|
||||
"preCanaryStructurallyEligible": false,
|
||||
"prerequisites": {
|
||||
"baseline_60_all_gates": false,
|
||||
"broker_programmatic_confirmation": false,
|
||||
"canary_trading_days": false,
|
||||
"open_p0_within_limit": false,
|
||||
"open_p1_within_limit": false,
|
||||
"real_qmt_observed": false,
|
||||
"shadow_trading_days": false
|
||||
},
|
||||
"productionTrustRegistryAvailable": false,
|
||||
"qualificationThreshold": 80,
|
||||
"qualified": false,
|
||||
"rawScore": 0,
|
||||
"scoreCaps": [
|
||||
{
|
||||
"maximum": 59,
|
||||
"reason": "baseline_60_not_passed"
|
||||
},
|
||||
{
|
||||
"maximum": 79,
|
||||
"reason": "canary_not_observed"
|
||||
}
|
||||
],
|
||||
"standardCanonicalSha256": "44fc6c168ade4c6de15569214d88b96ce47b22b4120b10c80eb6f212fad5e662",
|
||||
"standardId": "quant-os-production-80-v1",
|
||||
"state": "BLOCKED_FROM_LIMITED_LIVE",
|
||||
"structurallyEligible": false,
|
||||
"testOnly": false,
|
||||
"trustedAttestationVerified": false,
|
||||
"verificationEnvironment": "none"
|
||||
},
|
||||
"models": [
|
||||
{
|
||||
"claim": "共享 symbol normalization、momentum、target weight/quantity 与 order-delta 计算;2024 JoinQuant hosted run 只证明这一 smoke 路径。",
|
||||
@@ -777,8 +1189,8 @@ window.QUANT_OS_PUBLIC_STATUS = {
|
||||
"G9"
|
||||
],
|
||||
"priority": 5,
|
||||
"title": "完成 QMT 券商合同探针与至少 20 日影子盘",
|
||||
"why": "real QMT historical-ST positive control, terminal/xtquant build record, broker query contract and trade-amount semantic probes, callback/restart and at least 20 trading days of shadow evidence"
|
||||
"title": "完成 QMT 券商合同探针与 Production 80 的 60 日影子盘(Baseline 60 门槛 20 日)",
|
||||
"why": "real QMT historical-ST positive control, terminal/xtquant build record, broker query contract and trade-amount semantic probes, and callback/restart evidence; Baseline 60 requires at least 20 trading days of shadow, while the current Production 80 gap requires at least 60 trading days for the same frozen candidate"
|
||||
},
|
||||
{
|
||||
"gateIds": [
|
||||
@@ -786,8 +1198,8 @@ window.QUANT_OS_PUBLIC_STATUS = {
|
||||
"G10"
|
||||
],
|
||||
"priority": 6,
|
||||
"title": "完成连续对账、恢复演练与券商合规确认",
|
||||
"why": "continuous reconciliation, recovery drills and broker compliance confirmation"
|
||||
"title": "完成连续对账、恢复演练与券商程序化交易报告/核查确认",
|
||||
"why": "continuous reconciliation, recovery drills and broker programmatic-trading report/verification confirmation"
|
||||
}
|
||||
],
|
||||
"platforms": [
|
||||
@@ -984,7 +1396,7 @@ window.QUANT_OS_PUBLIC_STATUS = {
|
||||
"id": "xttrader-read-only-shadow",
|
||||
"intendedUse": "账户绑定 target-diff 与 broker observation",
|
||||
"limitations": [
|
||||
"HMAC 不是 broker attestation;仍缺官方 query 失败/空结果合同、callback/restart、20 日真实 shadow;not live-ready"
|
||||
"HMAC 不是 broker attestation;仍缺官方 query 失败/空结果合同及 callback/restart;Baseline 60 至少 20 个交易日,Production 80 当前缺口为同一冻结候选至少 60 个交易日;not live-ready"
|
||||
],
|
||||
"liveReady": false,
|
||||
"name": "XtTrader read-only shadow",
|
||||
@@ -1063,16 +1475,30 @@ window.QUANT_OS_PUBLIC_STATUS = {
|
||||
"provenance": {
|
||||
"baselineConfig": "configs/baseline.json",
|
||||
"bundleManifest": "dist/bundle_manifest.json",
|
||||
"payloadSha256": "76aad7a50088b9949b9c2549a4da568d14c6bc2ff4acc7df6419989637386bc3",
|
||||
"payloadSha256": "9aae5da8e1d92fd28cfd7d6bef50774c4981b2baac1728ccd3153729234a88f0",
|
||||
"payloadSha256Semantics": "SHA-256 of canonical payload before payloadSha256 is added.",
|
||||
"platformMatrix": "docs/PLATFORM_MATRIX.md",
|
||||
"production80Assessment": "profiles/production-80/current-assessment.json",
|
||||
"production80Standard": "profiles/production-80/standard.json",
|
||||
"releaseReachability": "releases/quant60-research-candidate-v1/reachability.json",
|
||||
"scorecard": "gate_scorecard.json",
|
||||
"sourceSetSha256": "e1b8bb8827c6c051a73872f2b0ac46f18dcf705fb50768eb98090bbbe08f863c",
|
||||
"sourceSetSha256": "6d906cde8df07f8fae2f2faf05679a476ceae8f5173533b3b67beecc710b2f61",
|
||||
"sources": [
|
||||
{
|
||||
"path": "gate_scorecard.json",
|
||||
"sha256": "db9ed17d1b56452f973db23461e8298b4f43f319b04be373adb383133500c2b6"
|
||||
"sha256": "2cc29f8d3670cd2e1e90ebe10a7d4d5a1ab9fc6a6b08612df2bbad485cd19655"
|
||||
},
|
||||
{
|
||||
"path": "profiles/baseline-60/profile.json",
|
||||
"sha256": "fbfb71356bd6a711510dd6ef0d84a4f76c47cc8244e90120142fa6bf36780fb9"
|
||||
},
|
||||
{
|
||||
"path": "profiles/production-80/standard.json",
|
||||
"sha256": "60ca7de08b337b75ca7ed53b7c01b6a7c3d621d788e60a15f26f2adaf2844064"
|
||||
},
|
||||
{
|
||||
"path": "profiles/production-80/current-assessment.json",
|
||||
"sha256": "f6439d548c4bf176dfcd734ade2e3343b2673e9e11f8233d7c642d4ee3436369"
|
||||
},
|
||||
{
|
||||
"path": "dist/bundle_manifest.json",
|
||||
@@ -1092,27 +1518,43 @@ window.QUANT_OS_PUBLIC_STATUS = {
|
||||
},
|
||||
{
|
||||
"path": "README.md",
|
||||
"sha256": "d5593bdc4e535502ba817636053dc8ac38f8594be6f9e61f0fe2d11cf883a985"
|
||||
"sha256": "0bf0562ae9247a88a5b0248f66b9b314d7ab0ea435bc8f8e5efa78f7d2f785bb"
|
||||
},
|
||||
{
|
||||
"path": "docs/ARCHITECTURE.md",
|
||||
"sha256": "93b1981168084f40c6d127dc534ff2e60eb4cd0703c8ef446c6df58b351dfbaa"
|
||||
"sha256": "8aae46f1b371651ac6f72905b7bcb3d72fdfda2a793e5505ab890352921c3219"
|
||||
},
|
||||
{
|
||||
"path": "docs/architecture/ARCHITECTURE_80.md",
|
||||
"sha256": "bb57df9d7eb5858741dde282ae0853a5e4ec9f4f4eb290bdb5954228fcb8956a"
|
||||
},
|
||||
{
|
||||
"path": "docs/AUDIT_2026-07-25.md",
|
||||
"sha256": "c070b49dfc2805c338400697369d886a6dc47b53af4a1834d0dfd383431e74d0"
|
||||
},
|
||||
{
|
||||
"path": "docs/standards/QUANT_OS_80_STANDARD.md",
|
||||
"sha256": "90dc9e7f1c5be17f5e6672598aac4afca3d26cf0099ae794c1be85bdafd0b65b"
|
||||
},
|
||||
{
|
||||
"path": "docs/standards/BASELINE_60_VS_PRODUCTION_80.md",
|
||||
"sha256": "c99e858dc186c100ff9d9cd673b1644bdcb81fecd6fe945166bdd7966b9cfe8a"
|
||||
},
|
||||
{
|
||||
"path": "docs/getting-started/GETTING_STARTED_80.md",
|
||||
"sha256": "5c18a558bd2f9e1640144a1729309bf38ada3185188c985476bd609b28c4479e"
|
||||
},
|
||||
{
|
||||
"path": "docs/PLATFORM_MATRIX.md",
|
||||
"sha256": "4880b17e54257b794398bf734d80ea40d1180e52845762987443a9c61d562a23"
|
||||
"sha256": "9c7952b019c92efd1055488b58838045ee30979ccc84008cd1218fab2a6d6717"
|
||||
},
|
||||
{
|
||||
"path": "docs/CROSS_ENGINE_CONSISTENCY.md",
|
||||
"sha256": "358e4798bf853a96cb288ac379f916938415b86e86dbe4fa0e3fb4a86a612b6f"
|
||||
"sha256": "bdb493e84201f51c5b91bacf8c894858b0c2dbceaaf0522c68d42d040ed45057"
|
||||
},
|
||||
{
|
||||
"path": "docs/JOINQUANT_HOSTED_EVIDENCE_2026-07-26.md",
|
||||
"sha256": "03df249829b3ad9b4fe33c5d93afbd842561458f4ff2fe10e80e4432934eb2d2"
|
||||
"sha256": "71d017a7e009331413f378fc847203d19eaa1c24317f364e9dcebe645df3d13b"
|
||||
},
|
||||
{
|
||||
"path": "docs/JOINQUANT_TARGET_PACKAGE_EVIDENCE_2026-07-26.md",
|
||||
@@ -1120,11 +1562,39 @@ window.QUANT_OS_PUBLIC_STATUS = {
|
||||
},
|
||||
{
|
||||
"path": "docs/TUSHARE_LOCAL_DATA.md",
|
||||
"sha256": "fd6cfe6cf45dbdd82e6aa88e80b119e05a888c560b79907370c6e023b5e00e82"
|
||||
"sha256": "611b120ba59b59b443b5cd9237356c509f2f2699063784a4685506e88a95adea"
|
||||
},
|
||||
{
|
||||
"path": "MIGRATION.md",
|
||||
"sha256": "1d86ef7d854dc7c2eed80d2c5e5de0ee30bf87035be9be27a2eb8cb098277a5c"
|
||||
},
|
||||
{
|
||||
"path": "ops/README.md",
|
||||
"sha256": "eda75a106ea961faa22ada2c95c503ee2a5437030e238d065d7f112550dcac0d"
|
||||
},
|
||||
{
|
||||
"path": "ops/activate_static_status.sh",
|
||||
"sha256": "26e026da5ab13d228696de4a1d9a811bc80e2adf3220859b868129852655a93f"
|
||||
},
|
||||
{
|
||||
"path": "ops/deploy_static_status.sh",
|
||||
"sha256": "2b86edbd76e42832aba661d98cbadfc34607fb626d36324f7933e89c66a89c6e"
|
||||
},
|
||||
{
|
||||
"path": "ops/nginx/quant-os-static.conf",
|
||||
"sha256": "10b1c338c22caa0d4c4f68c1213d6c297a367995601dece7dd19df561b0c002e"
|
||||
},
|
||||
{
|
||||
"path": "ops/nginx/quant-os-legacy-redirects-302.conf",
|
||||
"sha256": "5206a0ed69ee01b8596fb3c5be9fdab713c14a512968c0cd24839e65495508a4"
|
||||
},
|
||||
{
|
||||
"path": "ops/nginx/quant-os-legacy-redirects-308.conf",
|
||||
"sha256": "ce8fc27e36b1c07dad445d76199b31a0113b42d759db8af7a60a3442548d4f94"
|
||||
},
|
||||
{
|
||||
"path": "runbooks/PLATFORM_DEPLOYMENT.md",
|
||||
"sha256": "f6bb1eda335c0d05f96d39b4d4167ee623fe6cffeef75015ba7985638fa8f635"
|
||||
"sha256": "001bc09f6865c6ee90fbbc2363b94bed7a282d039790af024457a5b1390b9840"
|
||||
},
|
||||
{
|
||||
"path": "tools/build_release_reachability.py",
|
||||
@@ -1132,11 +1602,19 @@ window.QUANT_OS_PUBLIC_STATUS = {
|
||||
},
|
||||
{
|
||||
"path": "tools/build_public_status.py",
|
||||
"sha256": "38347c2238a38fc603703c7265fd1ca54480b3f3f8c453cde9f21056f207a4ec"
|
||||
"sha256": "ec24dd12a6383ab1210a475c6f982b911f6ce45a7c205b9474bb2bb70665bc2a"
|
||||
},
|
||||
{
|
||||
"path": "tools/check_tracked_secrets.py",
|
||||
"sha256": "359eddb5fb009d3790bd81ce9c939ceb9aea7868fde4ccbc22ffe01099c62304"
|
||||
},
|
||||
{
|
||||
"path": "tools/inventory_local_assets.py",
|
||||
"sha256": "f52a89b2e42d0f3aed7e3c79e0110c37cab779794f550658116e07b9e338160b"
|
||||
}
|
||||
]
|
||||
},
|
||||
"schemaVersion": 1,
|
||||
"schemaVersion": 2,
|
||||
"summary": {
|
||||
"allFiveLayersRealPlatformObserved": false,
|
||||
"candidateRealPlatformObservationScope": "target_package_execution_consumer_only",
|
||||
@@ -1153,7 +1631,7 @@ window.QUANT_OS_PUBLIC_STATUS = {
|
||||
"Tushare completed-partition Qlib momentum smoke"
|
||||
],
|
||||
"testEvidenceQualifier": "Scorecard-recorded run; tests do not prove real-platform or broker gates.",
|
||||
"testsRecorded": 285
|
||||
"testsRecorded": 315
|
||||
},
|
||||
"system": "Quant OS / quant60 baseline kernel"
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user