Problem

Makers documenting a prototype must compare intended pin-to-net assignments with recorded wires. A disagreement may span several wires, while an incomplete record can look like a missing connection. Manually tracing these records makes it easy to lose the distinction between what was recorded and what is actually known.

Solution

NetCheck accepts two small CSV tables and a natural-language request. A local Strands agent can inspect existing pins, compare recorded connectivity and propose a requested record correction. A deterministic graph engine returns the wire IDs along cross-net witness paths. Disconnected groups in partial observations remain unverified. Changes stay as proposals until a separate terminal review confirms the exact state-bound hash. A second confirmation exports a deterministic HTML/JSON report to a new directory.

Why This Matters

The intended audience is makers and students reviewing their prototype documentation. The goal is a reproducible record-review workflow in which a suggested correction does not silently become a fact. No user study, measured time saving, physical circuit diagnosis or electrical-safety result is claimed.

How We Used AI

Strands Agents 1.55.1 orchestrates real Qwen2.5:7b inference through Ollama on the local machine. Five bounded tools load records, compare connectivity, inspect a pin, stage an addition or stage a removal. Proposal tools return current graph analysis as well as the proposed change. The model has no confirmation, export, shell or arbitrary URL tool.

Actual trials exposed incorrect generated explanations, including claiming that an unapplied removal opened a path. Model prose is therefore explicitly an unverified draft and is excluded from the final computed record review and exported reports. Actual tool objects determine whether a proposal exists. The project demonstrates tool execution and host-controlled record changes; it does not claim reliable unrestricted natural-language reasoning.

How We Used Codex

Codex authored the original parser, immutable graph model, Strands adapter and tests with the participant's authorization. Parallel implementation and review found a stale-proposal bug that interrupted export after a prior confirmation. The fix skips stale proposals explicitly. Actual model testing also led to separate addition/removal schemas and a host-validated snapshot so proposals do not depend on redundant model call order. Synthetic fixtures and known failed trials are disclosed.

Key Features

  • Cross-net witness paths containing actual recorded wire IDs.
  • Explicit partial-observation uncertainty.
  • Exact component/pin lookup without inferred physical component paths.
  • Immutable proposals with separate terminal confirmation.
  • Deterministic JSON and escaped standalone HTML export.
  • Retained real model/tool traces and visible explanation limitations.

Architecture

See ARCHITECTURE.md and the separately prepared architecture PDF. The CLI validates selected inputs, runs the Strands/Ollama loop, emits computed record facts, and then offers host-only review/export. The model runs locally; AgentCore deployment is not claimed.

Testing Instructions

Requires Python 3.10+ for the core, an installed Ollama binary and sufficient memory/storage for the approximately 4.7 GB model. Tested integration used Python 3.12 on Apple silicon with 16 GB RAM.

git clone https://github.com/estona815/netcheck.git
cd netcheck
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python -m unittest discover -s tests -v

Start the local provider in a separate terminal:

OLLAMA_HOST=127.0.0.1:11435 OLLAMA_NO_CLOUD=1 ollama serve

Download the model to that local provider, then execute the fixture:

OLLAMA_HOST=127.0.0.1:11435 ollama pull qwen2.5:7b
.venv/bin/python -m netcheck.agent_cli --fixture
.venv/bin/python -m netcheck.agent_cli --fixture --task 'Stage removal of recorded wire W9 for review; do not apply it.' --review

At review, Enter rejects the proposal. Exact-hash approval changes only the draft record snapshot. Add --export-dir netcheck-report-review only when that directory does not exist; a second exact state-hash confirmation writes the report. These steps are judge instructions, not a claim a real participant approved a change in the recorded automated tests.

Expected synthetic findings: W9 and W1 form a witness between GND and VCC; AUX and SIGNAL are unverified in partial observations. A staged W9 removal leaves the original snapshot unchanged. The initial core-only QA.md records15 tests; the later combined suite adds2 host/integration boundary tests for17 total. The combined core and host regression suite passed17 tests, including all 64 undirected four-pin graphs checked against independent transitive closure. Published evidence traces show actual local inference; natural-language accuracy is explicitly not a passing claim.

Demo and source

Public source: https://github.com/estona815/netcheck (MIT). Baseline commit: 4aa79247621c84d27c0c9f1b273df8f234b292c9.

Public video: https://www.youtube.com/watch?v=tM4hwq-c5pk

The 124-second captioned video presents real recorded tool output reformatted and paced for reading. It uses synthetic records and labels automated demonstration confirmations. The underlying inference/review/export took 10.649 seconds; this is a paced replay, not a real-time screen recording. There is no hosted live model demo.

Known Limitations

Model explanations can be wrong. CSV identifiers require explicit net names; limits are 300 pins and 600 wires. There is no CAD import, camera inspection, implicit conductive component model, hardware control or electrical-safety certification. The current interface is a CLI. A state hash binds reviewed data but is not identity authentication.

Built With

  • ollama
  • python
  • qwen2.5
  • strands-agents
Share this project:

Updates

Submission history