-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprogress.html
More file actions
171 lines (169 loc) · 6.15 KB
/
Copy pathprogress.html
File metadata and controls
171 lines (169 loc) · 6.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>security-scanner progress dashboard</title>
<style>
:root {
--bg: #f3f6fb;
--panel: #ffffff;
--ink: #142033;
--muted: #637089;
--line: #dbe4f0;
--done: #047857;
--partial: #b45309;
--todo: #64748b;
--risk: #b91c1c;
--blue: #1d4ed8;
}
* { box-sizing: border-box; }
body {
margin: 0;
font-family: "Avenir Next", "Segoe UI", sans-serif;
color: var(--ink);
background: var(--bg);
line-height: 1.55;
}
header {
padding: 34px 28px 26px;
color: white;
background: #0f172a;
border-bottom: 6px solid #38bdf8;
}
header h1 {
margin: 0 0 8px;
font-size: clamp(28px, 4vw, 44px);
letter-spacing: 0;
}
header p {
max-width: 980px;
margin: 0;
color: #cbd5e1;
}
main {
max-width: 1180px;
margin: 0 auto;
padding: 24px 20px 48px;
}
.grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 14px;
}
.panel {
background: var(--panel);
border: 1px solid var(--line);
border-radius: 10px;
padding: 18px;
box-shadow: 0 12px 30px rgba(15, 23, 42, .07);
}
.kpi b {
display: block;
font-size: 28px;
line-height: 1.1;
}
.kpi span {
color: var(--muted);
font-size: 13px;
}
h2 {
margin: 0 0 14px;
font-size: 22px;
}
.full { margin-top: 18px; }
.milestone {
display: grid;
grid-template-columns: 150px 1fr 72px;
gap: 12px;
align-items: center;
margin: 12px 0;
}
.track {
height: 16px;
background: #e5e7eb;
border-radius: 999px;
overflow: hidden;
}
.track span {
display: block;
height: 100%;
border-radius: 999px;
}
.done { background: var(--done); }
.partial { background: var(--partial); }
.todo { background: var(--todo); }
.risk { background: var(--risk); }
table {
width: 100%;
border-collapse: collapse;
font-size: 14px;
background: white;
}
th, td {
border: 1px solid var(--line);
padding: 10px;
vertical-align: top;
text-align: left;
}
th {
background: #f8fafc;
color: #334155;
font-weight: 800;
}
code {
background: #eef2ff;
color: #27306a;
padding: 1px 5px;
border-radius: 5px;
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
font-size: 12px;
}
@media (max-width: 900px) {
.grid { grid-template-columns: 1fr; }
.milestone { grid-template-columns: 1fr; }
}
</style>
</head>
<body>
<header>
<h1>security-scanner progress dashboard</h1>
<p>Public-safe status board. Percentages are planning signals, not release claims; each milestone still needs command-level evidence before being called complete.</p>
</header>
<main>
<section class="grid">
<div class="panel kpi"><b>73%</b><span>overall planning progress</span></div>
<div class="panel kpi"><b>M9</b><span>comparator slice done</span></div>
<div class="panel kpi"><b>M8</b><span>live verifier proof passed</span></div>
<div class="panel kpi"><b>0</b><span>real findings committed</span></div>
</section>
<section class="panel full">
<h2>Milestone Chart</h2>
<div class="milestone"><b>M0 Architecture</b><div class="track"><span class="done" style="width:90%"></span></div><span>90%</span></div>
<div class="milestone"><b>M1 Core Skeleton</b><div class="track"><span class="done" style="width:80%"></span></div><span>80%</span></div>
<div class="milestone"><b>M2 Local DB</b><div class="track"><span class="partial" style="width:45%"></span></div><span>45%</span></div>
<div class="milestone"><b>M4 Gitleaks</b><div class="track"><span class="done" style="width:100%"></span></div><span>100%</span></div>
<div class="milestone"><b>M5 Persist & Review</b><div class="track"><span class="done" style="width:100%"></span></div><span>100%</span></div>
<div class="milestone"><b>M7 Evaluation</b><div class="track"><span class="done" style="width:100%"></span></div><span>100%</span></div>
<div class="milestone"><b>M8 Verifier</b><div class="track"><span class="done" style="width:100%"></span></div><span>100%</span></div>
<div class="milestone"><b>M9 GHAS Baseline</b><div class="track"><span class="partial" style="width:55%"></span></div><span>55%</span></div>
</section>
<section class="panel full">
<h2>Evidence Gates</h2>
<table>
<thead>
<tr><th>Milestone</th><th>Status</th><th>Evidence Needed Before Done</th><th>Next Check</th></tr>
</thead>
<tbody>
<tr><td>M2 Local DB Bootstrap</td><td>Mostly done</td><td>Live local NoSQL smoke and query coverage.</td><td><code>uv run security-scanner init-storage ...</code></td></tr>
<tr><td>M4 Gitleaks Integration</td><td>Done</td><td>Runtime executes Gitleaks against synthetic checkout and keeps report/gate output redacted.</td><td>done; no real findings committed</td></tr>
<tr><td>M5 Persist & Review</td><td>Done</td><td>Persisted reads merge lifecycle state and report/gate can scope to one scan run.</td><td>done; feeds M8 verifier inputs</td></tr>
<tr><td>M7 Evaluation Corpus</td><td>Done</td><td>Public-safe corpus, expected results, metrics report, and Ubuntu runtime gate proof.</td><td>done; no real findings committed</td></tr>
<tr><td>M8 Ollama Verifier</td><td>Done</td><td>JSONL verifier preserves findings, strips raw evidence, fails closed, and keeps synthetic recall intact after live endpoint verification.</td><td>done; temporary endpoint only for live proof</td></tr>
<tr><td>M9 GHAS CSV Baseline</td><td>Slice done</td><td>Private CSV importer/comparator with redacted public output, CLI coverage, and synthetic fixture tests.</td><td>private runtime proof without committing row details</td></tr>
</tbody>
</table>
</section>
</main>
</body>
</html>