src/tracemantle/core/__init__.py                      11      0   100%
src/tracemantle/core/activation.py                    76      3    96%   168-170
src/tracemantle/core/activation_render.py             20      0   100%
src/tracemantle/core/graph.py                        156      5    97%   234, 356, 368, 381, 407
src/tracemantle/core/graph_analyzers.py               88      3    97%   266, 271, 301
src/tracemantle/core/graph_model.py                   54      0   100%
src/tracemantle/core/graph_render.py                  42      0   100%
src/tracemantle/core/history.py                       89     19    79%   274-307
src/tracemantle/core/history_io.py                   113     18    84%   45, 50-52, 54, 57, 94, 122, 159, 169, 209-214, 251-254
src/tracemantle/core/semantic.py                      42      0   100%
src/tracemantle/core/symbolic.py                      19      5    74%   46-47, 72-73, 76
src/tracemantle/dependencies.py                       82      6    93%   46-47, 62, 67-69
src/tracemantle/display.py                             7      0   100%
src/tracemantle/evidence.py                           90      2    98%   35, 77
src/tracemantle/formatters.py                        145      5    97%   95-96, 204-206
src/tracemantle/history_store.py                      62      5    92%   40, 43, 45, 54, 72
src/tracemantle/io_limits.py                          61      3    95%   90-91, 186
src/tracemantle/markdown.py                          197     10    95%   120, 163, 171-173, 213-214, 217-219
src/tracemantle/modes.py                              46      0   100%
src/tracemantle/parser.py                            119      5    96%   95-98, 151
src/tracemantle/policy.py                            106     23    78%   15-16, 53, 57, 59, 61-62, 64, 72-73, 75, 77, 82, 89, 91, 94, 97, 102, 105, 108, 110, 114, 117
src/tracemantle/product_commands.py                  121     33    73%   57-68, 71, 76, 95, 97, 100, 102, 109, 120-130, 133-138
src/tracemantle/promptfoo.py                          74      8    89%   31, 36, 39, 41, 48, 58, 78, 90
src/tracemantle/result.py                             49      1    98%   24
src/tracemantle/rules/__init__.py                     56      5    91%   122, 159-162, 164
src/tracemantle/rules/compat.py                       93      4    96%   70, 86, 199, 213
src/tracemantle/rules/description.py                 178      8    96%   250-252, 267, 283, 334, 371, 404
src/tracemantle/rules/disclosure.py                   57      0   100%
src/tracemantle/rules/frontmatter.py                   6      0   100%
src/tracemantle/rules/frontmatter_common.py           33      4    88%   19, 22, 25, 41
src/tracemantle/rules/frontmatter_description.py      60      4    93%   59, 75, 93, 112
src/tracemantle/rules/frontmatter_fields.py           46      6    87%   55-60
src/tracemantle/rules/frontmatter_name.py             88      6    93%   52, 71, 74, 101, 149, 168
src/tracemantle/rules/references.py                   16      0   100%
src/tracemantle/rules/sizing.py                       21      0   100%
src/tracemantle/rules/template.py                      8      0   100%
src/tracemantle/storage.py                            70      4    94%   26, 44, 68, 91
src/tracemantle/template_detection.py                 15      1    93%   40
src/tracemantle/tokenizer.py                          28      6    79%   21, 29-32, 39
--------------------------------------------------------------------------------
TOTAL                                               3961    426    89%
Required test coverage of 80% reached. Total coverage: 89.25%
================= 1403 passed, 4 skipped in 107.21s (0:01:47) ==================
tracemantle --version
tracemantle 1.6.1
tracemantle skills/tracemantle/SKILL.md
✔ PASS  skills/tracemantle/SKILL.md
    line 4  · info              frontmatter.field.ecosystem  Field 'version' is ecosystem-common but not in the agentskills.io spec. Add it to tracemantle.toml under [frontmatter] extension_fields if intentional.
              version: ...
    line 5  · info              frontmatter.field.ecosystem  Field 'author' is ecosystem-common but not in the agentskills.io spec. Add it to tracemantle.toml under [frontmatter] extension_fields if intentional.
              author: ...
            · info              description.quality-score  Description quality score: 100/100.
            · info              compat.unverified  Behavior of field 'version' in codex, cursor is unverified (as of Codex: 2026-04-20; Cursor: 2026-04-20).
            · info              compat.unverified  Behavior of field 'author' in codex, cursor is unverified (as of Codex: 2026-04-20; Cursor: 2026-04-20).

Checked 1 file: 1 passed, 0 failed
tracemantle skills/tracemantle/SKILL.md --analyze-graph
Graph source: heuristic
✔ PASS  skills/tracemantle/SKILL.md
    line 4  · info              frontmatter.field.ecosystem  Field 'version' is ecosystem-common but not in the agentskills.io spec. Add it to tracemantle.toml under [frontmatter] extension_fields if intentional.
              version: ...
    line 5  · info              frontmatter.field.ecosystem  Field 'author' is ecosystem-common but not in the agentskills.io spec. Add it to tracemantle.toml under [frontmatter] extension_fields if intentional.
              author: ...
            · info              description.quality-score  Description quality score: 100/100.
            · info              compat.unverified  Behavior of field 'version' in codex, cursor is unverified (as of Codex: 2026-04-20; Cursor: 2026-04-20).
            · info              compat.unverified  Behavior of field 'author' in codex, cursor is unverified (as of Codex: 2026-04-20; Cursor: 2026-04-20).

Checked 1 file: 1 passed, 0 failed
OK: migration pre-commit rev matches v1.6.1
python3 -m build --no-isolation --outdir candidate-dist
* Getting build dependencies for sdist...
* Building sdist...
* Building wheel from sdist
* Getting build dependencies for wheel...
* Building wheel...
Successfully built tracemantle-1.6.1.tar.gz and tracemantle-1.6.1-py3-none-any.whl
python3 scripts/verify_artifacts.py candidate-dist
{
  "python": "3.12.13 (main, Mar  3 2026, 12:39:30) [Clang 21.0.0 (clang-2100.0.123.102)]",
  "checks": [
    {
      "artifact": "tracemantle-1.6.1-py3-none-any.whl",
      "sha256": "93d3bec4201319bd6769482de6cf592372f08915ce164bffb4f7d3cefc7348f6",
      "version": "1.6.1",
      "clean_install": "passed",
      "setext_dependencies": "passed",
      "numeric_overflow": "passed",
      "legacy_migration": "not requested"
    },
    {
      "artifact": "tracemantle-1.6.1.tar.gz",
      "sha256": "5f82ae8d78ea3a22ff4b2071b892d1add7e2a9cf50fda03ab0430fd8d4f637b3",
      "version": "1.6.1",
      "clean_install": "passed",
      "setext_dependencies": "passed",
      "numeric_overflow": "passed",
      "legacy_migration": "not requested"
    }
  ]
}
