Source: 1.0 mettle audit website feb '26-compressed.pdf (14 pages)
Compiled: 2026-02-19
Total findings: 25 items across 4 pages (Home, Test, Docs, About)
| Priority | Count | Description |
|---|---|---|
| P0 — Bug | 2 | Broken functionality, must fix |
| P1 — UX/Layout | 12 | Layout, spacing, alignment issues |
| P2 — Polish | 5 | Visual refinement, minor cosmetics |
| Skip | 6 | No change needed (intentional CLI flags) |
Impact: All verification attempts show cryptic error instead of useful message Root cause: TWO bugs working together:
-
Difficulty mismatch — Frontend sends
easy/standard/hardbut backend expectsbasic/full- File:
static/index.html:1009-1013 - Fix: Change
<option>values to match backend enum
- File:
-
Error display —
apiCall()passes array/object tonew Error(), producing[object Object]- File:
static/app.js:76 - Fix: Extract
.detailstring or first validation error.msgbefore throwing
- File:
static/index.html:1009 — Change option values: easy→basic, standard/hard→full
static/app.js:76 — Handle data.detail as string OR array of FastAPI validation errors
static/app.js:262 — Defensive: showError(error instanceof Error ? error.message : String(error))
Impact: Navigation highlight stays on "Troubleshooting" when scrolled to Help
- File:
static/docs.html:1488-1507 - Fix: Change scroll-spy to iterate backwards and
breakon first match, or use viewport-center distance
Spread content to fill empty space; split subtitle from main question.
static/index.html:165-168— Split<p class="hero-subtitle">into two elementsstatic/style.css:226— Reducemin-height: 88vhto~65vhstatic/style.css:277— Tighten subtitle margin
First box height doesn't match others; borders barely visible.
static/style.css:429-445— Addmin-heightto.problem-item, increase border opacity0.06→0.15
Upper divider has less space than bottom divider.
static/style.css— Set.glow-dividermargin tovar(--space-2xl) auto(symmetric)
Numbers (01, 02...) and insight quotes too dim.
static/style.css:688—.suite-num: removeopacity: 0.5, use suite hue colorstatic/style.css:723—.suite-insight: change fromtext-subtletotext-muted
Badge row should be vertically centered in its section.
static/style.css:1811—.badges-section: make padding symmetric, adddisplay:flex; align-items:center
Six different tables across docs page lack row dividers. ONE CSS rule fixes all:
/* Add to static/docs.css after line 510 */
.docs-content table tbody tr { border-bottom: 1px solid var(--border); }
.docs-content table thead th,
.docs-content table tbody td { border-right: 1px solid var(--border); }
.docs-content table thead th:last-child,
.docs-content table tbody td:last-child { border-right: none; }Endpoint path and description text crammed together.
static/docs.css:512-514— Addpadding-right: 2remto path column,padding-left: 1.5remto description
Notarized should be on LEFT (recommended option), Self-Signed on RIGHT.
static/docs.html:648-674— Swap the two<div class="tier-card">blocksfrontend/src/routes/docs/+page.svelte:195-221— Same swap
Orange warning boxes under Security/Anti-Gaming need top margin.
static/docs.css:530+— Addmargin-top: 1.5remto.callout
Auditor suggests moving Test Verification to its own page.
static/index.html:987-1090— Extract to newstatic/test.htmlstatic/index.html:106— Update nav link from#try-itto/testmain.py— Add route for/test
Second divider needs more space; footer divider too tight.
- About page CSS: Change
.glow-dividermargin from0.5remto2rem auto
First divider after hero is unnecessary.
static/about.html:373-377— Delete the<div class="glow-divider">block
Ensure all 4 tiers stay in single row on desktop (may already be correct — verify media queries).
static/style.css:946-965— Confirmgrid-template-columns: repeat(4, 1fr)not overridden
?include_vcp=true should be in code format in sentence text.
- Already in
<code>tags (confirmed) — No change needed
Space between divider and "Built by Creed Space".
static/about.html+ CSS — Increase bottom divider margin to2.5rem
Optional enhancement for all tables.
.docs-content table tbody tr:nth-child(odd) { background: rgba(255, 255, 255, 0.02); }Add console.error('[METTLE]', message) to showError() for debugging.
static/app.js— One line addition
| # | Item | Reason |
|---|---|---|
| 1 | Home: --notarize in "Run It Yourself" |
CLI flag syntax, correct |
| 2 | Home: --full in "How Verification Works" |
CLI flag syntax, correct |
| 3 | Docs: --notarize, --full, --seed in Notarization |
CLI flag syntax, correct |
| 4 | Docs: --notarize in VCP section |
CLI flag syntax, correct |
| 5 | Docs: ?include_vcp=true formatting |
Already in <code> tags |
| 6 | Test: --full, --seed in CLI preview |
CLI flag syntax, correct |
Phase 1 — Bugs (30 min):
- Fix difficulty dropdown values (
index.html) - Fix
apiCall()error extraction (app.js) - Fix sidebar scroll-spy (
docs.html)
Phase 2 — One CSS file, many fixes (30 min):
4. Add table borders to docs.css (fixes 6 tables at once)
5. Add endpoint spacing to docs.css
6. Add callout margins to docs.css
Phase 3 — Home page CSS (45 min): 7. Hero section height + text split 8. Threat boxes alignment + border opacity 9. Divider spacing normalization 10. Suite numbers/quotes visibility 11. Badge row centering
Phase 4 — HTML restructure (30 min): 12. Swap Signing Models boxes (docs) 13. Remove About page first divider 14. Increase About page divider spacing
Phase 5 — Bigger lift (optional, 1-2 hrs): 15. Extract Test Verification to dedicated page
| File | Changes |
|---|---|
static/app.js |
P0-1: Fix error extraction |
static/index.html |
P0-1: Fix difficulty values; P1-1: Hero text split; P1-10: Extract test section |
static/style.css |
P1-1 through P1-5: Hero, boxes, dividers, suites, badges |
static/docs.css |
P1-6, P1-7, P1-9: Tables, endpoints, callouts |
static/docs.html |
P0-2: Scroll-spy; P1-8: Swap signing models |
static/about.html |
P1-11, P1-12: Divider spacing/removal |
frontend/src/routes/docs/+page.svelte |
P1-8: Swap signing models (Svelte version) |
Detailed per-page reports: audit_homepage_recommendations.md, audit_docs_recommendations.md, audit_test_about_recommendations.md, audit_bug_investigation.md