+
# metis-benchmark
**Can a model estimate software effort from public data? A pre-registered blind test — with an honest negative result.**
[](https://github.com/NaCode-Studios/metis-benchmark/actions/workflows/ci.yml)
-[](LICENSE)
-[](pyproject.toml)
+[](LICENSE)
+[](pyproject.toml)
Reproducible backtest of the **Metis** software effort-estimation
engine on open datasets. This repository is the Phase 0 gate (G0) of the
@@ -104,5 +108,8 @@ Conformalized Quantile Regression (Romano, Patterson, Candès 2019) via the
MAPIE library. Cite the original sources when reusing the data.
## License
-
Code: [MIT](LICENSE). Datasets: see their respective licenses.
+
+---
+
+Brand assets — the tetradrachm mark, the wordmark, and the colour and type tokens — are in [`docs/brand`](docs/brand).
diff --git a/docs/brand/README.md b/docs/brand/README.md
new file mode 100644
index 0000000..a968000
--- /dev/null
+++ b/docs/brand/README.md
@@ -0,0 +1,42 @@
+# Metis brand assets
+
+The mark is a tetradrachm: a filled field, a beaded rim, and the mu of ΜΗΤΙΣ punched into it. Athenian
+silver is the reference, currency being the first instrument anyone agreed to trust because it was
+verifiably struck to a standard. The wordmark sits beside it at cap height, and each repository names
+itself after it: `METIS / BENCHMARK`, `METIS / API`, and so on.
+
+| File | Use |
+| --- | --- |
+| `metis-mark.svg` | the mark at 24px and up, where the rim reads |
+| `metis-mark-small.svg` | below 24px: the rim is dropped, the disc and the mu carry it alone |
+| `metis-mark-bronze.svg` | the bronze field |
+| `metis-mark-outline.svg` | one keyline on paper |
+| `metis-mark-reversed.svg` | on an ink ground |
+| `metis-lockup.svg` / `-reversed.svg` / `-bronze.svg` | mark, wordmark and the line beneath it |
+| `metis-favicon-512.png` | favicon, avatar, app icon |
+| `metis-tokens.css` | colour, type and tracking tokens |
+
+Every SVG here is self-contained: the letterforms are outlined, so the mark renders the same whether or
+not Bodoni Moda and Cormorant Garamond are installed.
+
+**Clear space** equals the rim inset, r/6, on every side. **Minimum size** is 24px for the full mark;
+below that use `metis-mark-small.svg`.
+
+**Type.** Bodoni Moda for titles and verdict statements, whose high-contrast strokes echo the punched
+mu. Cormorant Garamond for the wordmark only, always letterspaced 0.16em, never body copy. IBM Plex Sans
+for body and UI, IBM Plex Mono for every number, metric, dataset and command.
+
+**Colour.** Ink `#14181A` and a cool neutral ground carry almost every surface. Bronze `#2C5449` marks
+one thing per view: the reading that matters. The verdict colours, brass `#9A7B3F` for under-powered
+evidence and oxblood `#7B2B33` for a fired stop rule, are reserved for pre-registered outcomes and are
+never used decoratively.
+
+**Don't.** No metallic gradient, no emboss, no drop shadow: it is a flat strike, not a rendering of
+silver. Do not set the wordmark without its tracking, and do not use the mu on its own as a letter.
+
+## One note on the mu
+
+Bodoni Moda ships no U+039C, so a live Greek mu falls back to Georgia and the mark loses the
+high-contrast strokes the type spec describes. Greek capital mu and Latin M are the same letterform, so
+the outlines here are drawn from Bodoni's M at a size that reproduces the cap height of the original,
+which keeps the intended typeface and the intended proportions at once.
diff --git a/docs/brand/metis-benchmark-social-preview.png b/docs/brand/metis-benchmark-social-preview.png
new file mode 100644
index 0000000..4e17212
Binary files /dev/null and b/docs/brand/metis-benchmark-social-preview.png differ
diff --git a/docs/brand/metis-favicon-512.png b/docs/brand/metis-favicon-512.png
new file mode 100644
index 0000000..7ddf94c
Binary files /dev/null and b/docs/brand/metis-favicon-512.png differ
diff --git a/docs/brand/metis-lockup-bronze.svg b/docs/brand/metis-lockup-bronze.svg
new file mode 100644
index 0000000..7410409
--- /dev/null
+++ b/docs/brand/metis-lockup-bronze.svg
@@ -0,0 +1,5 @@
+
diff --git a/docs/brand/metis-lockup-reversed.svg b/docs/brand/metis-lockup-reversed.svg
new file mode 100644
index 0000000..d227894
--- /dev/null
+++ b/docs/brand/metis-lockup-reversed.svg
@@ -0,0 +1,5 @@
+
diff --git a/docs/brand/metis-lockup.svg b/docs/brand/metis-lockup.svg
new file mode 100644
index 0000000..bd3eda2
--- /dev/null
+++ b/docs/brand/metis-lockup.svg
@@ -0,0 +1,5 @@
+
diff --git a/docs/brand/metis-mark-bronze.svg b/docs/brand/metis-mark-bronze.svg
new file mode 100644
index 0000000..2d4ec2b
--- /dev/null
+++ b/docs/brand/metis-mark-bronze.svg
@@ -0,0 +1,5 @@
+
diff --git a/docs/brand/metis-mark-outline.svg b/docs/brand/metis-mark-outline.svg
new file mode 100644
index 0000000..7828e0e
--- /dev/null
+++ b/docs/brand/metis-mark-outline.svg
@@ -0,0 +1,4 @@
+
diff --git a/docs/brand/metis-mark-reversed.svg b/docs/brand/metis-mark-reversed.svg
new file mode 100644
index 0000000..67bc7e4
--- /dev/null
+++ b/docs/brand/metis-mark-reversed.svg
@@ -0,0 +1,4 @@
+
diff --git a/docs/brand/metis-mark-small.svg b/docs/brand/metis-mark-small.svg
new file mode 100644
index 0000000..54db685
--- /dev/null
+++ b/docs/brand/metis-mark-small.svg
@@ -0,0 +1,4 @@
+
diff --git a/docs/brand/metis-mark.svg b/docs/brand/metis-mark.svg
new file mode 100644
index 0000000..f8f4367
--- /dev/null
+++ b/docs/brand/metis-mark.svg
@@ -0,0 +1,5 @@
+
diff --git a/docs/brand/metis-tokens.css b/docs/brand/metis-tokens.css
new file mode 100644
index 0000000..25c946a
--- /dev/null
+++ b/docs/brand/metis-tokens.css
@@ -0,0 +1,39 @@
+/* Metis design system tokens.
+ Neutral ground, patinated bronze, three verdicts. Bronze marks one thing per
+ view: the reading that matters. Verdict colours are reserved for
+ pre-registered outcomes and are never used decoratively. */
+:root {
+ /* Ground */
+ --metis-paper: #F1F1EE; /* page ground */
+ --metis-card: #FFFFFF; /* surfaces, tables */
+ --metis-rule: #DAD9D3; /* borders, dividers */
+ --metis-rule-soft: #ECEBE6; /* inner dividers */
+
+ /* Ink */
+ --metis-ink: #14181A; /* the coin field, headings */
+ --metis-graphite: #2C3335; /* body text */
+ --metis-slate: #5C6567; /* labels, captions */
+ --metis-mute: #8D9496; /* meta, disabled */
+
+ /* The one accent */
+ --metis-bronze: #2C5449;
+ --metis-bronze-wash: #E4EBE8; /* callout ground */
+ --metis-patina: #B7CCC5; /* CQR interval bands */
+
+ /* Verdicts — pre-registered outcomes only */
+ --metis-brass: #9A7B3F; /* under-powered evidence */
+ --metis-oxblood: #7B2B33; /* stop rule fired */
+
+ /* Type */
+ --metis-font-display: 'Bodoni Moda', Georgia, serif; /* titles, verdicts */
+ --metis-font-wordmark: 'Cormorant Garamond', Georgia, serif;
+ --metis-font-body: 'IBM Plex Sans', system-ui, sans-serif;
+ --metis-font-mono: 'IBM Plex Mono', ui-monospace, monospace;
+
+ --metis-wordmark-tracking: 0.16em; /* the wordmark is always letterspaced */
+ --metis-eyebrow-tracking: 0.12em;
+ --metis-display: 500 54px/1.1 var(--metis-font-display);
+ --metis-heading: 500 32px/1.2 var(--metis-font-display);
+ --metis-body: 400 17px/1.65 var(--metis-font-body);
+ --metis-mono: 400 13px/1.5 var(--metis-font-mono);
+}
diff --git a/docs/metis-benchmark-hero.png b/docs/metis-benchmark-hero.png
new file mode 100644
index 0000000..b6edb6a
Binary files /dev/null and b/docs/metis-benchmark-hero.png differ
diff --git a/pyproject.toml b/pyproject.toml
index 0cdfb56..76435fd 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -37,7 +37,11 @@ plots = [
]
dev = [
"pytest>=8.0",
- "ruff>=0.4",
+ # Upper bound so the lint gate stays reproducible: ruff 0.16.0 added rules
+ # (RUF046, RUF059, PYI034, a wider UP035/UP037) that fire on code this repo
+ # already had. 0.15.x is clean. Lift the bound together with a pass over
+ # the new findings.
+ "ruff>=0.4,<0.16",
]
[tool.hatch.build.targets.wheel]