Skip to content

v1.0.2

Choose a tag to compare

@github-actions github-actions released this 09 Aug 05:43
· 32 commits to main since this release

v1.0.2 (2026-08-09)

This release is published under the MIT License.

Bug Fixes

  • schema: Serve report.schema.json at the $id it declares (919ca52)

The repo-root schema/ path is a symlink to the packaged copy, which git stores as a symlink blob — so github.com and raw.githubusercontent both 404 on schema/report.schema.json even though the file is right there. Anyone told to 'build your own viewer against it' hit a dead link.

  • README links now point at src/armsmith/schema/report.schema.json,
    which resolves for a browser and for curl.
  • site/schema/report.schema.json makes the declared $id
    (https://armsmith.edycu.dev/schema/report.schema.json) actually serve.
    A copy, not a symlink: Vercel will not follow one.
  • CI diffs the served copy against the packaged original, so the
    published schema can never drift from the one that validates reports.

The symlink stays — ci.yml reads through it.

Documentation

  • Link the badge at the live Devpost submission (779a195)

Submitted to the Arm AI Optimization Challenge (Cloud AI) as https://devpost.com/software/armsmith-7j1lzt — verified live, and the page carries the repo, armsmith.edycu.dev and the demo video.

The Devpost badge now points at the submission itself rather than the hackathon landing page; the hackathon keeps its own badge beside it, relabelled to name the track. 'docs:' deliberately, so semantic-release does not cut a version for a badge.

  • contributing: Fix the org in action.yml, document the detector contract (d7fc655)

Three things a stranger hit immediately:

  • action.yml's own usage comment said 'uses: edycu/armsmith@v1'. That org
    does not exist; copy-pasting it gets 'Unable to resolve action'. The
    README had it right, the file itself did not.

  • CONTRIBUTING told new contributors to expect 219 tests. It is 384, so
    the first checkpoint on the on-ramp failed.

  • 'Add a 14th rule with zero core changes' was not true: the detector also
    needs an import in detectors/init.py or the @register decorator never
    runs and the loader raises 'rules without detectors'. Now documented as
    one YAML + one detector + one import, with the real detect() signature
    spelled out — it was previously undocumented anywhere.

  • site: Publish the measured Neoverse-N2 result, retire [PENDING] (97c356d)

The site and deck were written before the live Arm leg existed and still said the hardware number was [PENDING] in seven places, while the README led with SDOT 0->1 and -86.5%. The two most-visited surfaces contradicted the headline and read as 'they never got real silicon'.

  • Hero stat tile + figcaption now carry -86.5% / SDOT 0->1 on Neoverse-N2. - FAQ Q2 answers 'yes, one leg is real hardware' with the full table (0.059975s -> 0.008123s, band +/-0.000144s, gate keep) instead of [PENDING]. - Deck slide 09 moves the measurement into the 'real today' column and updates the CI matrix (8 jobs, 5 native arm64 — it claimed 6 and 2). - Stale counts corrected everywhere: 219 -> 384 tests, ~93% -> 100% coverage.

What stays unclaimed is stated more precisely than before: a throughput multiplier for YOUR model. The measured number is one int8 microkernel on one runner and is never extrapolated. The replay witness stays 0->4 — that is the synthetic fixture and is a different number from the live 0->1.


Detailed Changes: v1.0.1...v1.0.2