SPEC-TO-HARDWARE · DEVELOPMENT EXAMPLE

Check requirements before design work.

A local Python example that checks voltage and sampling limits, flags missing or conflicting values, and links each result to its source requirement.

AI agents in the engineering workflow.

  1. Product specs

    Power, sensors, interfaces and size.

  2. AI agent

    Turn specs into design tasks.

  3. Ponchi AI

    SPICE simulation, PCB layout and enclosure CAD.

  4. AI agent

    Check results and refine the design.

  5. Hardware product

    Assembled boards, sensors and enclosures.

AI models: Anthropic · OpenAI

An original photograph of an UltraSense controller PCB with a battery, USB-C connection, illuminated LEDs, and surface-mount components.A shaped open-pore wood trim panel resting in its dark moulded housing on an orange surface.
Hardware examples · founder’s prior work

From a requirement to a reviewable result.

Define the input

Supply-voltage and sampling-interval limits use an explicit, bounded grammar. A question mark preserves an unresolved value.

Extract and check

A schema validator extracts the ID, metric, comparator, value and unit. A fixed local checker tests required bounds and range consistency.

Review the report

Each check refers to the source requirement IDs. An engineer must confirm the assumptions and decide what needs clarification before design work.

Four actual local outcomes.

These results are produced by running the checker during the site build. PASS means the supported requirements are complete and internally consistent. It does not mean a circuit or device meets them. The failure case deliberately raises an error inside the tool.

Complete requirements

Outcome: PASS

Input requirements

  • REQ-001: supply_voltage >= 2.7 V
    Parsed fields: supply_voltage · >= · 2.7 · V
  • REQ-002: supply_voltage <= 4.2 V
    Parsed fields: supply_voltage · <= · 4.2 · V
  • REQ-003: sample_interval >= 1 s
    Parsed fields: sample_interval · >= · 1 · s
  • REQ-004: sample_interval <= 60 s
    Parsed fields: sample_interval · <= · 60 · s

Check results and source IDs

  • required:supply_voltage:>=: PASS
    REQ-001 — Bound present.
  • required:supply_voltage:<=: PASS
    REQ-002 — Bound present.
  • range:supply_voltage: PASS
    REQ-001, REQ-002 — Range is nonempty.
  • required:sample_interval:>=: PASS
    REQ-003 — Bound present.
  • required:sample_interval:<=: PASS
    REQ-004 — Bound present.
  • range:sample_interval: PASS
    REQ-003, REQ-004 — Range is nonempty.

Observed tool exit code: 0

Missing upper bound

Outcome: NEEDS_CLARIFICATION

Input requirements

  • REQ-001: supply_voltage >= 2.7 V
    Parsed fields: supply_voltage · >= · 2.7 · V
  • REQ-002: supply_voltage <= 4.2 V
    Parsed fields: supply_voltage · <= · 4.2 · V
  • REQ-003: sample_interval >= 1 s
    Parsed fields: sample_interval · >= · 1 · s
  • REQ-004: sample_interval <= ? s
    Parsed fields: sample_interval · <= · unresolved · s

Check results and source IDs

  • required:supply_voltage:>=: PASS
    REQ-001 — Bound present.
  • required:supply_voltage:<=: PASS
    REQ-002 — Bound present.
  • range:supply_voltage: PASS
    REQ-001, REQ-002 — Range is nonempty.
  • required:sample_interval:>=: PASS
    REQ-003 — Bound present.
  • required:sample_interval:<=: NEEDS_CLARIFICATION
    REQ-004 — Explicit numeric bound required.

Observed tool exit code: 2

Conflicting voltage bounds

Outcome: CONFLICT

Input requirements

  • REQ-001: supply_voltage >= 4.5 V
    Parsed fields: supply_voltage · >= · 4.5 · V
  • REQ-002: supply_voltage <= 4.2 V
    Parsed fields: supply_voltage · <= · 4.2 · V
  • REQ-003: sample_interval >= 1 s
    Parsed fields: sample_interval · >= · 1 · s
  • REQ-004: sample_interval <= 60 s
    Parsed fields: sample_interval · <= · 60 · s

Check results and source IDs

  • required:supply_voltage:>=: PASS
    REQ-001 — Bound present.
  • required:supply_voltage:<=: PASS
    REQ-002 — Bound present.
  • range:supply_voltage: CONFLICT
    REQ-001, REQ-002 — Empty feasible range.
  • required:sample_interval:>=: PASS
    REQ-003 — Bound present.
  • required:sample_interval:<=: PASS
    REQ-004 — Bound present.
  • range:sample_interval: PASS
    REQ-003, REQ-004 — Range is nonempty.

Observed tool exit code: 3

Injected checker failure

Outcome: TOOL_ERROR

Input requirements

  • REQ-001: supply_voltage >= 2.7 V
    Parsed fields: supply_voltage · >= · 2.7 · V
  • REQ-002: supply_voltage <= 4.2 V
    Parsed fields: supply_voltage · <= · 4.2 · V
  • REQ-003: sample_interval >= 1 s
    Parsed fields: sample_interval · >= · 1 · s
  • REQ-004: sample_interval <= 60 s
    Parsed fields: sample_interval · <= · 60 · s

Check results and source IDs

No successful check results were accepted.

Tool error: RuntimeError: Deliberately injected checker execution failure.

Observed tool exit code: 4

Authored inputs, with a narrow scope.

The small synthetic requirement sets were authored by Codex for this Ponchi AI development example. They contain no customer specifications or measured hardware data. Inputs are limited to supply_voltage in V and sample_interval in s, with >= and <= bounds.

This example checks numeric completeness and consistency. It does not interpret arbitrary prose, generate schematics or PCB layouts, run circuit simulations, or validate fabricated hardware. Engineers remain responsible for requirement meaning and design verification.

Discuss a requirements workflow.