Fixture · medium tier · Apache-2.0

Fixture: zhiayang-mikoto

An nRF52840 module in a Pro Micro footprint: SoC, 2.4 GHz meander antenna and matching network, USB-C with CC resistors, a lithium charger with battery-management I2C, and regulated rails.

Attribution

Upstream: zhiayang/mikoto at commit 86318f6c, retrieved 2026-07-29. Authored by zhiayang, licensed Apache-2.0. The upstream license text is preserved verbatim in LICENSE. Note that upstream declares Apache-2.0 in its README but states no explicit copyright line and leaves the license appendix’s Copyright [yyyy] [name of copyright owner] unfilled, so the attribution recorded here is to the repository author rather than to a stated copyright holder.

Design files are copied unmodified from the upstream repository root, together with the project sym-lib-table and fp-lib-table and the two libraries they name: lib/mikoto.kicad_sym and footprints.pretty. empty.kicad_wks is included because the project file names it as the page layout.

Two things were deliberately not copied. footprints.pretty/3d/ holds 388 KB of STEP models, which are rendering assets: they do not participate in ERC, DRC, or parity, and they would be copied into every sandbox for every repeat of every task. The separate flashbed/ board is a different design and would be a different fixture. misc/, pins.txt, CHANGELOG.md, and .kicad_prl were also excluded. No design file was altered.

Why this board

It is the first fixture in copperbench designed by an individual rather than an organization, and that is the point of including it.

Antmicro’s boards are house-style: consistent net naming, vendor libraries, a design review behind them. The Open Lighting Project’s board is community-maintained. This one is one person’s work, and it carries the marks — 193 off-grid wire endpoints, a symbol library with a .bak file next to it upstream, board and schematic metadata that have drifted apart in 84 places. None of that makes it a bad design; it is a real, working, manufactured RF module with a matched antenna. It makes it a representative design, and a benchmark drawn only from organizationally-produced boards would never test an agent against it.

It also sits at a useful scale. At 67 components on one sheet it is five times the microphone board and still comprehensible, which is what the medium tier is for even though it is single-sheet rather than hierarchical.

Baseline

Measured with kicad-cli 10.0.6:

Check Errors Warnings Detail
ERC 0 295 102 lib_symbol_issues, 193 endpoint_off_grid
DRC 1 2 1 zones_intersect; 2 lib_footprint_mismatch
Unconnected 0
Parity 84 65 footprint_symbol_field_mismatch, 19 footprint_symbol_mismatch

The one DRC error is zones_intersect: two copper zones overlapping without distinct priorities. KiCad 10 rules on this more strictly than the KiCad 8 the board was laid out in. It is enumerated in fixture.json as the DRC allowlist.

The 84 parity issues need a clearer account, because parity is normally the check an edit task most depends on. Every one of them is metadata, not electrical: footprint_symbol_field_mismatch is a Description or LCSC Part field differing between the board and the schematic, and the footprint_symbol_mismatch entries here are attribute flags such as Do not populate. No footprint is missing, none is duplicated, and no net differs. The netlist parity that a bad edit actually breaks is intact, and because drc_no_new_violations compares against this record by type and count, an agent that breaks real parity still fails.

The 193 endpoint_off_grid warnings are worth keeping rather than regretting. They are a fingerprint of the existing geometry, so an agent that reflows or regenerates the sheet instead of making a surgical edit will move that count and be caught by it.

Scale, and what it does to a surgicality bound

The schematic is 19,991 lines; the board is 26,468. A minimal correct edit here — renaming a net, adding a decoupling capacitor — is on the order of ten to thirty lines. A bound near 1 percent is roughly 200 lines: an order of magnitude of headroom for a clumsy-but-correct run, and still nowhere near the cost of regenerating a 67-component sheet. AC-3.7’s nominal 5 percent would permit 1,000 lines and is not a constraint at this scale.

Verifying this fixture

node scripts/hash-fixture.mjs --check fixtures/zhiayang-mikoto

Regenerating the baseline reports

Only when the reference kicad-cli version changes, and the new counts belong in fixture.json in the same commit. kicad-cli writes a .kicad_prl next to the project as a side effect; delete it before rehashing, or the tree hash will change:

cd fixtures/zhiayang-mikoto/tree
kicad-cli sch erc --format json -o ../baseline/erc.json mikoto.kicad_sch
kicad-cli pcb drc --format json --schematic-parity -o ../baseline/drc.json mikoto.kicad_pcb
rm -f mikoto.kicad_prl

This page is rendered from fixtures/zhiayang-mikoto/README.md in the repository, at the commit the site was built from.

Provenance

From fixture.json. The hash covers only tree/, which is the part copied into the sandbox. Each task pins this hash, and result records made against a different hash are kept separate on the leaderboard.

Upstreammikoto nRF52840 module
Commit86318f6c69495b8308354b6393d85229177b26ae
Retrieved2026-07-29
LicenseApache-2.0 · verbatim LICENSE
Copyrightzhiayang (github.com/zhiayang). Upstream declares Apache-2.0 in its README but states no explicit copyright line and leaves the license appendix unfilled; attribution here is to the repository author.
ModificationsDesign files copied verbatim from the upstream repository root, with the project sym-lib-table and fp-lib-table and the two libraries they name (lib/mikoto.kicad_sym and footprints.pretty). empty.kicad_wks is included because the project file references it as the page layout. The footprints.pretty/3d/ STEP models were not copied: they are rendering assets, they do not affect ERC, DRC, or parity, and they would add 388 KB to every sandbox copy of every repeat. The separate flashbed/ board, misc/, pins.txt, CHANGELOG.md, and .kicad_prl were not copied. No design file was altered.
Tree hash85e81c58af200cc3fb39c8ec0e711acbc02fa4929ad9d9ffeddcfa8aff9dae42
KiCadauthored with 8.x, file format 20231120, verified with kicad-cli 10.0.6
Artifactsschematic: mikoto.kicad_schboard: mikoto.kicad_pcbproject: mikoto.kicad_pro
Sourcefixture.json · design tree · baseline reports

Scale

The sizes that a task's diff-ratio bound is set against. A diff ratio is a fraction of the constrained file's line count, so the same percentage allows a very different amount of change on a small board than on a large one. Each task README shows the calculation for its own bound.

Sheets1
Symbols67
Schematic lines19,991
Board lines26,468
Signal netsANT, CC1, CC2, BAT_I2C_SCL, BAT_I2C_SDA, CHARGE_CTRL_1, CHARGE_CTRL_2, BLUE_LED
Power netsVBUS, VBAT, VDDH, VDD_NRF, EXT_5V, GND

Baseline verification

Measured with kicad-cli 10.0.6 on the files as vendored. A baseline error is permitted only when it is enumerated here by type and accounted for in the README above; an unaccounted one disqualifies the board. Tasks check that a run adds no new violations on top of these counts, since a real board in a bare checkout rarely produces a clean report.

CheckErrorsError typesWarningsWarning typesDetail
ERC0none295193 endpoint_off_grid, 102 lib_symbol_issues
DRC11 zones_intersect22 lib_footprint_mismatch0 unconnected, 84 parity

Zero ERC errors and zero unconnected items. The one DRC error is `zones_intersect`, two copper zones sharing a priority, which KiCad 10 rules on more strictly than the KiCad 8 this board was laid out in. The 84 parity issues are entirely metadata: `footprint_symbol_field_mismatch` is Description and LCSC Part fields differing between board and schematic, and `footprint_symbol_mismatch` here is 'Do not populate' and similar attribute flags. None of it is electrical, and the netlist parity that an edit task actually depends on is intact. The 193 `endpoint_off_grid` warnings are a real property of this design and a useful hazard: an agent that reflows geometry will move that count.

Tasks on this fixture

No task runs on this fixture yet.