From 8131f42ba07c8199621f65fee938bc8e0fcc23ef Mon Sep 17 00:00:00 2001 From: Axel Meyer Date: Sat, 16 May 2026 18:45:07 +0200 Subject: [PATCH] test(api-discovery-test): add 3 assertions for tier=engine Covers the new engine-tier validate_readme_structure behavior: complete engine README, missing-API detection, and the relaxed Badges pattern that accepts arbitrary bold key:value lines (engine has no Lib-ID prefix). Total assertion-count grows from 52 to 55. Coverage table updated. Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 4 ++-- init.lua | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 14383ce..551bd41 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,8 @@ Per Fault-Injection-Audit-Convention (2026-05-16): | `diff_surface` | 5 | Equal (no diff), surface-superset (missing), doc-superset (stale) | | `grep_engine_calls` | 5 | 3 unique calls, no-calls edge | | `generate_topology_block` | 6 | Lib-with-deps+engine, asset-lib (no deps, no engine) | -| `validate_readme_structure` | 8 | Complete core, missing-API core, missing-Topology, missing-Badges, community-tier-no-enforcement | -| **TOTAL** | **52** | | +| `validate_readme_structure` | 11 | Complete core, missing-API core, missing-Topology, missing-Badges, community-tier-no-enforcement, engine-tier-complete, engine-tier-missing-API, engine-tier-naked-badges | +| **TOTAL** | **55** | | ### Tested-Surface - All 6 public functions of `lib-core.api-discovery` v0.1.0. diff --git a/init.lua b/init.lua index 99a33ad..27d48f9 100644 --- a/init.lua +++ b/init.lua @@ -321,6 +321,54 @@ Sig. -- Tier community: lockerer local r3 = api.validate_readme_structure(missing_api, "community") engine.test.equals(#r3.missing_sections, 0, "validate: tier=community -> no enforcement") + + -- Tier engine: same structure as core but flexible Badges + local engine_md = [[ +# sporel-engine + +**Version:** 0.1.0 +**License:** Proprietary + +## Topology + + + +## API +text + +## References +- spec +]] + local r_engine = api.validate_readme_structure(engine_md, "engine") + engine.test.equals(#r_engine.missing_sections, 0, "validate: engine README -> no missing") + + -- Missing API in engine README -> still detected + local engine_no_api = [[ +# sporel-engine + +**Version:** 0.1.0 + +## Topology + + + +## References +]] + local r_engine_no_api = api.validate_readme_structure(engine_no_api, "engine") + engine.test.assert(#r_engine_no_api.missing_sections > 0, "validate: engine without API -> reports missing") + + -- Naked Badges line (no Lib-ID prefix) accepted in engine tier + local engine_naked = [[ +# sporel-engine +**Anything:** value +]] + local r_engine_naked = api.validate_readme_structure(engine_naked, "engine") + -- Just verify Badges-check doesn't fail because of missing "Lib-ID:" prefix + local badges_missing = false + for _, s in ipairs(r_engine_naked.missing_sections) do + if s == "Badges" then badges_missing = true end + end + engine.test.assert(not badges_missing, "validate: engine tier accepts naked badges") end engine.exit(engine.test.failures())