shibosoftwaredev/f1c100s-linux-nema17-stepper-controller

A four-layer NEMA 17 motor-controller PCB combining an Allwinner F1C100S Linux computer, USB‑PD/buck power system, W5500 Ethernet, STM32 real-time motion control, DRV8825 stepper driver, protection/temperature/current telemetry, USB interfaces, and local LED/buzzer diagnostics.

Version
0.4.56
License
unset
Stars
0

scripts/write-round6-status.mjs

import fs from "node:fs"
import crypto from "node:crypto"
import assert from "node:assert/strict"
const read=p=>JSON.parse(fs.readFileSync(p,"utf8"))
const sha=p=>crypto.createHash("sha256").update(fs.readFileSync(p)).digest("hex")
const verification=read("verification.json"),regression=read("reports/round6-regression.json")
const circuitSha256=sha("dist/index/circuit.json")
assert.equal(verification.circuitSha256,circuitSha256);assert.equal(regression.circuitSha256,circuitSha256)
assert.equal(verification.drcErrors,0);assert.equal(verification.fabricationReady,false)
assert.equal(verification.fabricationBlockers.ordinaryPadDrillIntersections,13)
const files=["verification.json","reports/round6-regression.json","reports/solder-process-audit.json",
  "reports/round6-inline-via-candidate.json","reports/round6-xi-shortcut.json",
  "reports/round6-final-native-check.log","reports/round6-final-shorts.log","reports/round6-final-style.log",
  "reports/round6-final-continuity.log","reports/round6-final-copper.log","reports/round6-final-drill.log",
  "reports/round6-final-dfm.log","reports/round6-final-kelvin.log","reports/round6-final-mechanical.log",
  "reports/round6-final-legend.log","reports/round6-final-stock-rebinding.log","reports/round6-final-bom.log",
  "reports/round6-final-typecheck.log","reports/round6-final-board-tests.log","reports/round6-final-verify.log",
  "reports/round6-final-export-gate.log","reports/round6-final-copper-gate.log",
  "reports/round6-final-module-tests.log","reports/round6-final-module-regression.log",
  "reports/round6-final-firmware-tests.log","reports/round6-final-linux-tests.log","reports/round6-xi-copper.png"]
const report={checkedAt:new Date().toISOString(),circuitSha256,replaySha256:sha("routing/complete-routes.json"),
  fabricationReady:false,localChangesNotPushed:true,
  publishedBaselineVersion:"0.4.49-review-fixes-20261019",publicationStatusFile:"reports/round5-publication.json",
  fixes:["R_INLINE_A solder-land/drill graze removed with an outer-layer 0.30 mm fanout",
    "U_ETH pin 30 via moved out of the populated land, with a manually specified inner1 trunk shortcut rather than relaxing the 15 mm/two-via oscillator constraints"],
  regression,checks:{nativeErrors:verification.drcErrors,nativeWarnings:verification.nativeWarnings,
    gerberShorts:"pass, all layers",emittedOnlyContinuity:"pass",independentCopper:"pass",drillToForeignMetal:"pass",
    kelvinLandRemovalChecks:4,mechanicalAndPrintedLegend:"pass",typecheckAndBomTests:"pass",
    stock:"193 populated / 81 codes, unchanged BOM revalidated against the 20:37 UTC inventory snapshot; not reserved",
    storedModuleTests:verification.storedModuleTests,hostFirmwareAndLinuxClient:"pass; not hardware flashed",
    assemblyExport:"intentionally blocked by the unqualified solder-process gate; negative gates pass"},
  remaining:verification.fabricationBlockers,
  evidence:Object.fromEntries(files.map(p=>[p,sha(p)]))}
fs.writeFileSync("reports/round6-fix-status.json",JSON.stringify(report,null,2)+"\n")
console.log(JSON.stringify({circuitSha256,fixes:2,ordinaryIntersections:13,nativeErrors:0,fabricationReady:false,localChangesNotPushed:true}))