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-schematic-review-acceptance.mjs
import fs from "node:fs"
import assert from "node:assert/strict"
import crypto from "node:crypto"
const read = p => JSON.parse(fs.readFileSync(p, "utf8"))
const sha = p => crypto.createHash("sha256").update(fs.readFileSync(p)).digest("hex")
const circuitSha256 = sha("dist/index/circuit.json")
const style = read("reports/review-style/analysis.json")
const regression = read("reports/review-schematic-regression.json")
const warnings = read("reports/review-warning-regression.json")
const continuity = read("reports/connectivity-audit.json")
const verified = read("verification.json")
for (const report of [style, regression, warnings, continuity, verified]) assert.equal(report.circuitSha256, circuitSha256)
assert.equal(style.issueCount, 0)
assert.equal(regression.physicalRecordsUnchanged, true)
assert.equal(regression.capacitorTopRelocationCompleted, false)
assert.deepEqual(warnings.errors, []); assert.deepEqual(warnings.regressions, [])
assert.equal(continuity.sourceFailures, 0); assert.equal(continuity.disconnectedTerminalIslands, 0)
assert.equal(verified.fabricationReady, false)
assert.equal(verified.jlcpcbStockIssues, 0)
assert.deepEqual(read("reports/coil-all-copper-preflight.json"), [])
const tests = fs.readFileSync("reports/review-tests.log", "utf8")
assert.match(tests, /54 pass/); assert.match(tests, /0 fail/)
const report = {
checkedAt: new Date().toISOString(), circuitSha256,
status: "schematic_changes_validated_hardware_relocation_pending",
schematicSheets: 13, styleIssues: 0, testsPassed: 54, testsFailed: 0,
pcbAndCadRecordsUnchanged: regression.physicalRecordCount,
nativeErrors: 0, inheritedNativeWarnings: warnings.currentWarnings, addedWarnings: 0,
sourceContinuityFailures: 0, disconnectedTerminalIslands: 0,
jlcpcbPartCodesChecked: verified.jlcpcbUniqueParts, jlcpcbStockIssues: 0,
capacitorTopRelocationCompleted: false, fabricationReady: false, published: false,
remainingWork: ["Move the bulk capacitor to TOP and complete/validate its rerouting against the actual emitted published copper.",
"Inherited fabrication and first-article qualifications remain listed in verification.json."],
reports: Object.fromEntries(["reports/review-style/analysis.json", "reports/review-schematic-regression.json",
"reports/review-warning-regression.json", "reports/connectivity-audit.json", "reports/coil-all-copper-preflight-meta.json",
"reports/jlcpcb-stock-audit.json", "reports/review-tests.log", "verification.json"].map(p => [p, sha(p)])),
}
fs.writeFileSync("reports/schematic-review-acceptance.json", JSON.stringify(report, null, 2)+"\n")
console.log(JSON.stringify(report))