refactor(structure): promote app to repo root + remove redundant workspace cruft

Standard production layout: the OKR app (was nested under AINative_OKR_CASAN5/) is now
the repository root. No more wrapper directory.

- Promote AINative_OKR_CASAN5/* -> repo root (backend/ frontend/ packages/ apps/
  .specify/ docs/ infra/ nginx/ scripts/ + configs). Merge tool dirs: .gitea (kept the
  active deploy ci.yml, added harness-ci.yml + runbooks), .claude (agents/commands +
  launch.json), .github moved up.
- Remove redundant: 00_SUBMISSION_PACKAGE, scattered root notes (FPT_CASAN_Full.md,
  tu-tuong-casan.md, casan-tu-sinh..., casan_harness_assessment.md, source-review...,
  README_CASAN5_REFINED.md), casan-next-plans/ and optimize-docs/ (competition/planning
  artifacts — roadmap + design history preserved in git log / commit messages).
- Update all references to the old layout:
  - .gitea/workflows/{ci,harness-ci}.yml, .github/workflows/{ci,deploy}.yml:
    working-directory .; drop AINative_OKR_CASAN5/ prefix; .specify/{tests,scripts}
    -> packages/casan-harness/... (.specify/logs state kept)
  - .claude/launch.json, .gitea/*-runbook.md: path prefixes
  - CLAUDE.md, README.md: docs/input -> apps/okr/domain/input
  - policy-bundle.yaml: 8 policy paths -> packages/casan-harness/...; manifest re-signed
- secrets-scan.sh: fixture excludes -> new package/domain paths.

Full gate from the new root: PASS=64 FAIL=0 SKIP=3.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
thanhnv
2026-07-08 13:26:36 +09:00
co-authored by Claude Opus 4.8
parent 7101af9fd4
commit 36a4812ef3
925 changed files with 410 additions and 18001 deletions
+113
View File
@@ -0,0 +1,113 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="color-scheme" content="light">
<title>CASAN Level 4 · AgentOps Dashboard</title>
<style>
:root { color-scheme: light; }
* { box-sizing: border-box; }
body { font-family: -apple-system, "Segoe UI", Arial, sans-serif; margin: 0; padding: 30px 34px 60px; background: #eef1f6; color: #16233a; max-width: 1180px; }
h1 { font-size: 27px; color: #1f3b6e; margin: 0 0 4px; letter-spacing: -.015em; }
.subtitle { color: #5a6b80; font-size: 13px; margin: 0 0 16px; }
h2 { color: #1f3b6e; font-size: 16px; margin: 26px 0 12px; letter-spacing: -.01em; }
.badges { display: flex; flex-wrap: wrap; gap: 9px; margin: 0 0 8px; }
.badge { background: #fff; border: 1px solid #d8dee9; border-radius: 999px; padding: 6px 13px; font-size: 12.5px; font-weight: 700; color: #1f3b6e; }
.badge.lv { background: #eaf6ef; border-color: #bfe0cd; color: #16794f; }
.panel { background: #fff; border: 1px solid #dbe2ec; border-radius: 13px; padding: 18px 20px; box-shadow: 0 1px 2px rgba(16,35,58,.05); }
.grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; }
.card { background: #fff; border: 1px solid #dbe2ec; border-radius: 11px; padding: 15px 16px; box-shadow: 0 1px 2px rgba(16,35,58,.04); }
.card .k { color: #5a6b80; font-size: 11.5px; font-weight: 600; letter-spacing: .01em; }
.value { font-size: 26px; font-weight: 800; color: #0f766e; margin-top: 5px; }
.hrow { display: grid; grid-template-columns: 165px 1fr 128px; align-items: center; gap: 14px; padding: 6px 0; }
.hlabel { font-size: 13.5px; font-weight: 600; color: #28405c; }
.meter { background: #e6ebf2; border-radius: 6px; height: 13px; overflow: hidden; }
.meter > i { display: block; height: 100%; border-radius: 6px; }
.hscore { font-size: 15px; font-weight: 800; text-align: right; white-space: nowrap; }
.hscore small { font-size: 9.5px; color: #8a94a0; font-weight: 600; }
.hsum { margin-top: 13px; padding-top: 12px; border-top: 1px solid #eef1f6; font-size: 13px; color: #41566f; }
.hsum b { color: #1f3b6e; }
.bandlg { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 9px; font-size: 11.5px; color: #6b7888; }
.bandlg i { width: 11px; height: 11px; border-radius: 3px; display: inline-block; margin-right: 5px; vertical-align: -1px; }
.chips { display: flex; flex-wrap: wrap; gap: 9px; }
.chip { display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; color: #28405c; background: #f5f8fc; border: 1px solid #dbe4ef; border-radius: 999px; padding: 8px 14px; }
.chip .d { width: 8px; height: 8px; border-radius: 99px; background: #16a34a; flex: none; }
.chip b { color: #0f766e; }
table { border-collapse: collapse; width: 100%; margin-top: 4px; background: #fff; }
td, th { border: 1px solid #e2e8f1; padding: 8px 10px; text-align: left; font-size: 12.5px; color: #16233a; }
th { background: #eef2f8; color: #1f3b6e; font-weight: 700; }
tr:nth-child(even) td { background: #f7f9fc; }
.ok { color: #16a34a; font-weight: 700; }
</style>
</head>
<body>
<h1>CASAN Level 4 Central AgentOps Dashboard</h1>
<p class="subtitle">7-harness security posture · Level-5 controls demonstrated locally · điểm công tâm theo rubric (evidence/scoring-run-report.md) · Generated: 2026-07-08T04:11:48Z</p>
<div class="badges">
<span class="badge lv">CASAN Level 4 — chứng minh bằng tấn công</span>
<span class="badge">Average 80.9/100</span>
<span class="badge">Harness thấp nhất 80</span>
<span class="badge">218 core tests · 0 fail</span>
<span class="badge">Recall model 0.85 &gt; regex 0.00</span>
</div>
<h2>Đánh giá trưởng thành 7 Harness · rubric công tâm (2026-07-05)</h2>
<div class="panel">
<div class="hrow"><span class="hlabel">H1 · Context</span><span class="meter"><i style="width:84%;background:#16a34a"></i></span><span class="hscore" style="color:#16a34a">84<small>/100 · Strong</small></span></div><div class="hrow"><span class="hlabel">H2 · Tool</span><span class="meter"><i style="width:80%;background:#0f766e"></i></span><span class="hscore" style="color:#0f766e">80<small>/100 · Good</small></span></div><div class="hrow"><span class="hlabel">H3 · Evaluation</span><span class="meter"><i style="width:82%;background:#16a34a"></i></span><span class="hscore" style="color:#16a34a">82<small>/100 · Strong</small></span></div><div class="hrow"><span class="hlabel">H4 · Security</span><span class="meter"><i style="width:80%;background:#0f766e"></i></span><span class="hscore" style="color:#0f766e">80<small>/100 · Good</small></span></div><div class="hrow"><span class="hlabel">H5 · Governance</span><span class="meter"><i style="width:80%;background:#0f766e"></i></span><span class="hscore" style="color:#0f766e">80<small>/100 · Good</small></span></div><div class="hrow"><span class="hlabel">H6 · AgentOps</span><span class="meter"><i style="width:80%;background:#0f766e"></i></span><span class="hscore" style="color:#0f766e">80<small>/100 · Good</small></span></div><div class="hrow"><span class="hlabel">H7 · Orchestration</span><span class="meter"><i style="width:80%;background:#0f766e"></i></span><span class="hscore" style="color:#0f766e">80<small>/100 · Good</small></span></div>
<div class="hsum">Average <b>80.9/100</b> · Harness thấp nhất <b>80</b> → <b>CASAN Level 4</b> (chưa lên "Strong/production" — bản production của IdP/WORM-store/HSM/sandbox-isolation còn planned).</div>
<div class="bandlg">
<span><i style="background:#16a34a"></i>Strong 81–100 (production)</span>
<span><i style="background:#0f766e"></i>Good 61–80</span>
<span><i style="background:#d97706"></i>Partial 31–60</span>
<span><i style="background:#dc2626"></i>GAP 0–30</span>
</div>
</div>
<h2>Bảo mật &amp; Governance đã kiểm chứng (test đối kháng thật)</h2>
<div class="panel"><div class="chips">
<span class="chip"><span class="d"></span>Kiểm thử đối kháng <b>218 / 0 fail</b></span>
<span class="chip"><span class="d"></span>H4 recall model <b>0.85</b> &gt; regex 0.00</span>
<span class="chip"><span class="d"></span>Benign FP <b>0.00%</b> · block <b>100.00%</b></span>
<span class="chip"><span class="d"></span>Audit hash-chain + ký KMS (rotate/non-exportable)</span>
<span class="chip"><span class="d"></span>WORM audit ngoài (gap/tamper detected)</span>
<span class="chip"><span class="d"></span>Approval ký-danh-tính (chống giả/replay/tự-duyệt)</span>
<span class="chip"><span class="d"></span>Cost-spike 4 chế độ · drift · hallucination scan</span>
<span class="chip"><span class="d"></span>Alert live: webhook · dead-letter</span>
<span class="chip"><span class="d"></span>Unicode/base64 normalize · tool-output scan</span>
<span class="chip"><span class="d"></span>action / supply-chain / data-exfil gate</span>
</div></div>
<h2>Telemetry trực tiếp (live) · pipeline harness</h2>
<div class="grid">
<div class="card"><div class="k">Total Runs</div><div class="value">14</div></div>
<div class="card"><div class="k">Average Latency</div><div class="value">419.21<small style="font-size:14px"> ms</small></div></div>
<div class="card"><div class="k">Estimated Cost</div><div class="value">$0.083622</div></div>
<div class="card"><div class="k">Failures</div><div class="value">4</div></div>
<div class="card"><div class="k">Fallback Routes</div><div class="value">3</div></div>
</div>
<div class="grid" style="margin-top:12px">
<div class="card"><div class="k">Provider Runs</div><div class="value">7</div></div>
<div class="card"><div class="k">Provider Tokens (thật)</div><div class="value">6356</div></div>
<div class="card"><div class="k">Provider Cost</div><div class="value">$0.16668</div></div>
<div class="card"><div class="k">Tool Denials</div><div class="value">6</div></div>
<div class="card"><div class="k">Hallucination Signals</div><div class="value">8</div></div>
</div>
<h2>Governance Signals</h2>
<table>
<tr><th>Signal</th><th>Value</th></tr>
<tr><td>Tool registry denials</td><td>6</td></tr>
<tr><td>Fallback records</td><td>3</td></tr>
<tr><td>Tool registry records</td><td>11</td></tr>
<tr><td>Provider telemetry records</td><td>7</td></tr>
<tr><td>Registered harness projects</td><td>0</td></tr>
</table>
<h2>Recent AgentOps Metrics (live)</h2>
<table>
<tr><th>Trace</th><th>Agent</th><th>Step</th><th>Status</th><th>Latency</th><th>Tokens</th><th>Cost</th></tr>
<tr><td>d8830885…</td><td>wrapper.demo</td><td>wrapper-step</td><td class='ok'>success</td><td>93ms</td><td>14</td><td>$2.8e-05</td></tr><tr><td>60d41362…</td><td>wrapper.demo</td><td>wrapper-step</td><td class='ok'>success</td><td>312ms</td><td>14</td><td>$2.8e-05</td></tr><tr><td>e85c0c65…</td><td>unknown-agent</td><td>write_code</td><td class=''>failed</td><td>332ms</td><td>3</td><td>$6e-06</td></tr><tr><td>46a51fc8…</td><td>adv</td><td>step-1-srs</td><td class='ok'>success</td><td>284ms</td><td>26</td><td>$5.2e-05</td></tr><tr><td>765a05c1…</td><td>adv</td><td>step-1-srs</td><td class='ok'>success</td><td>331ms</td><td>14</td><td>$2.8e-05</td></tr><tr><td>9a423286…</td><td>unknown-agent</td><td>test_timeout</td><td class=''>failed</td><td>2332ms</td><td>1</td><td>$2e-06</td></tr><tr><td>0016bac8…</td><td>unknown-agent</td><td>t4-telemetry-test</td><td class='ok'>success</td><td>356ms</td><td>210</td><td>$0.0</td></tr><tr><td>d530399d…</td><td>unknown-agent</td><td>fetch_step</td><td class='ok'>success</td><td>387ms</td><td>12</td><td>$2.4e-05</td></tr><tr><td>f25aa236…</td><td>unknown-agent</td><td>fetch_step</td><td class='ok'>success</td><td>352ms</td><td>12</td><td>$2.4e-05</td></tr><tr><td>41916bce…</td><td>h6.e2e</td><td>e2e_fail_step</td><td class=''>failed</td><td>306ms</td><td>1</td><td>$2e-06</td></tr>
</table>
</body>
</html>