{
  "capability_id": "electrical.timer_555",
  "tool_id": "timer-555",
  "engine": "timer-555",
  "calculation_version": "1.2.0",
  "generated_at": "2026-09-16T22:03:43.731Z",
  "engine_build": "2026-09-10",
  "test_count": 30,
  "passed": 30,
  "failed": 0,
  "tests_summary": {
    "golden": {
      "total": 3,
      "passed": 3
    },
    "boundary": {
      "total": 7,
      "passed": 7
    },
    "property": {
      "total": 20,
      "passed": 20
    }
  },
  "engine_tested": true,
  "expert_reviewed": false,
  "internally_reviewed": true,
  "review_kind": "internal",
  "source_checked": true,
  "reviewed_by": "CalculatorX electrical review",
  "reviewer_role": "electrical-engineer",
  "last_reviewed": "2026-08-13",
  "expert_review": {
    "status": "not_applicable",
    "reviewer": null,
    "note": "Internal domain review completed; not a named external expert review.",
    "kind": "internal"
  },
  "internal_review": {
    "status": "approved",
    "reviewer": {
      "name": "CalculatorX electrical review",
      "role": "electrical-engineer"
    },
    "reviewed_at": "2026-08-13",
    "scope": [
      "formula",
      "input semantics",
      "assumptions",
      "limitations",
      "sources",
      "tests"
    ],
    "kind": "internal"
  },
  "page": "https://www.calculatorx.com/calc/electric/timer-555",
  "api": "https://www.calculatorx.com/api/v1/calc/timer-555",
  "schema_input": "https://www.calculatorx.com/schemas/electrical.timer_555.input.json",
  "schema_output": "https://www.calculatorx.com/schemas/electrical.timer_555.output.json",
  "assumptions": [
    "Classic NE555 ideal timing thresholds (≈⅓ / ⅔ VCC)",
    "Standard astable topology without duty-cycle diode",
    "Astable timing uses ln(2); TI 0.693/1.44 are rounded aliases"
  ],
  "limitations": [
    "Classic NE555 ideal timing — astable uses ln(2) canonical model; TI 0.693/1.44 are rounded aliases",
    "Device families differ in timing accuracy, leakage, output/discharge characteristics and usable frequency range; verify the selected device datasheet",
    "Standard astable wiring always yields duty > 50%; diode-across-R2 <50% trick is not modeled",
    "f > 100 kHz → NE555_HIGH_FREQUENCY warning (NE555 distortion guidance)",
    "Monostable pulse_width < ~10 µs → MONOSTABLE_SHORT_PULSE warning",
    "mode-discriminated oneOf: astable requires R1,R2,C; monostable requires R,C",
    "Frozen at calculation_version 1.2.0 for forward timing — Designer / E-series / tolerance are separate surfaces"
  ],
  "boundary_conditions": [
    "R or C ≤0 → VALUE_MUST_BE_POSITIVE",
    "Missing mode or mode-required fields → MISSING_REQUIRED_INPUT",
    "Bad mode → INVALID_MODE",
    "f > 100 kHz → NE555_HIGH_FREQUENCY warning",
    "Monostable tw < ~10 µs → MONOSTABLE_SHORT_PULSE warning"
  ],
  "sources": [
    {
      "title": "NE555 datasheet timing equations (TI xx555 Precision Timers)",
      "section": "Astable / monostable",
      "url": "https://www.ti.com/lit/ds/symlink/ne555.pdf",
      "supports": "tH/tL ≈ 0.693·RC (rounded ln(2)); f≈1.44/((R1+2R2)C) rounded 1/ln(2); tw=1.1RC; ≤100 kHz guidance; ~10 µs monostable floor",
      "kind": "reference"
    },
    {
      "title": "Horowitz & Hill — The Art of Electronics",
      "section": "555 timer circuits",
      "supports": "Astable / monostable RC timing identities",
      "kind": "reference"
    }
  ],
  "methods": [],
  "fingerprint": "sha256:1a51575bf7b0ceba9f65415e320250f555e4e84e56bcee0c6e35e9c84dc080c5",
  "tests": [
    {
      "id": "astable",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "astable",
        "R1": 1000,
        "R2": 10000,
        "C": 0.000001
      },
      "expect": {
        "f_Hz": 68.69976385185541
      },
      "expectWarning": null,
      "actual": {
        "mode": "astable",
        "f_Hz": 68.69976385185541,
        "period_s": 0.01455609079175885,
        "high_time_s": 0.007624618986159398,
        "low_time_s": 0.006931471805599452,
        "duty": 0.5238095238095238,
        "duty_pct": 52.38095238095239
      },
      "tol": 1e-12
    },
    {
      "id": "mono",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "monostable",
        "R": 10000,
        "C": 0.000001
      },
      "expect": {
        "pulse_width_s": 0.011
      },
      "expectWarning": null,
      "actual": {
        "mode": "monostable",
        "pulse_width_s": 0.011,
        "pulse_width_ms": 11
      },
      "tol": 1e-12
    },
    {
      "id": "bad-R",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "astable",
        "R1": 0,
        "R2": 1000,
        "C": 0.000001
      },
      "expectError": "VALUE_MUST_BE_POSITIVE",
      "code": "VALUE_MUST_BE_POSITIVE",
      "error": "R1 must be greater than zero"
    },
    {
      "id": "bad-mode",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "x",
        "R1": 1,
        "R2": 1,
        "C": 0.000001
      },
      "expectError": "INVALID_MODE",
      "code": "INVALID_MODE",
      "error": "mode must be astable|monostable"
    },
    {
      "id": "missing-mode",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "R1": 1000,
        "R2": 10000,
        "C": 0.000001
      },
      "expectError": "MISSING_REQUIRED_INPUT",
      "code": "MISSING_REQUIRED_INPUT",
      "error": "mode is required"
    },
    {
      "id": "hf-warn",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "astable",
        "R1": 1000,
        "R2": 1000,
        "C": 1e-9
      },
      "expect": {
        "f_Hz": 480898.34696298785
      },
      "expectWarning": "NE555_HIGH_FREQUENCY",
      "expectWarningSeverity": "warning",
      "actual": {
        "mode": "astable",
        "f_Hz": 480898.34696298785,
        "period_s": 0.0000020794415416798356,
        "high_time_s": 0.0000013862943611198905,
        "low_time_s": 6.931471805599452e-7,
        "duty": 0.6666666666666666,
        "duty_pct": 66.66666666666666,
        "warnings": [
          {
            "code": "NE555_HIGH_FREQUENCY",
            "severity": "warning",
            "detail": "Calculated astable frequency exceeds the NE555 datasheet's 100 kHz guidance for reduced distortion.",
            "suggestion": "Check the selected device datasheet or consider a CMOS timer."
          }
        ]
      },
      "tol": 0.000001
    },
    {
      "id": "boundary-555-astable",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "astable",
        "R1": 1000,
        "R2": 10000,
        "C": 0.000001
      },
      "expect": {
        "f_Hz": 68.69976385185541,
        "period_s": 0.01455609079175885,
        "duty": 0.5238095238095238
      },
      "expectWarning": null,
      "actual": {
        "mode": "astable",
        "f_Hz": 68.69976385185541,
        "period_s": 0.01455609079175885,
        "high_time_s": 0.007624618986159398,
        "low_time_s": 0.006931471805599452,
        "duty": 0.5238095238095238,
        "duty_pct": 52.38095238095239
      },
      "tol": 1e-12
    },
    {
      "id": "boundary-555-astable-missing-R2",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "astable",
        "R1": 1000,
        "C": 0.000001
      },
      "expectError": "MISSING_REQUIRED_INPUT",
      "code": "MISSING_REQUIRED_INPUT",
      "error": "R2 is required"
    },
    {
      "id": "boundary-555-mono-missing-R",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "monostable",
        "C": 0.000001
      },
      "expectError": "MISSING_REQUIRED_INPUT",
      "code": "MISSING_REQUIRED_INPUT",
      "error": "R is required"
    },
    {
      "id": "boundary-555-short-pulse",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "monostable",
        "R": 1000,
        "C": 1e-10
      },
      "expect": {
        "pulse_width_s": 1.1e-7
      },
      "expectWarning": "MONOSTABLE_SHORT_PULSE",
      "expectWarningSeverity": "warning",
      "actual": {
        "mode": "monostable",
        "pulse_width_s": 1.1e-7,
        "pulse_width_ms": 0.00011,
        "warnings": [
          {
            "code": "MONOSTABLE_SHORT_PULSE",
            "severity": "warning",
            "detail": "Calculated monostable pulse width is below ~10 µs, where bipolar 555 comparator storage time can limit the practical minimum pulse.",
            "suggestion": "Verify the selected device datasheet; very short pulses may not be achievable with ideal 1.1RC."
          }
        ]
      },
      "tol": 1e-18
    },
    {
      "id": "property-555-f",
      "ok": true,
      "kind": "property",
      "detail": "f",
      "expect": 68.69976385185541,
      "actual": 68.69976385185541
    },
    {
      "id": "property-555-period",
      "ok": true,
      "kind": "property",
      "detail": "T=1/f",
      "expect": 0.01455609079175885,
      "actual": 0.01455609079175885
    },
    {
      "id": "property-555-th-tl",
      "ok": true,
      "kind": "property",
      "detail": "tH+tL=T",
      "expect": 0.01455609079175885,
      "actual": 0.01455609079175885
    },
    {
      "id": "property-555-ln2",
      "ok": true,
      "kind": "property",
      "detail": "tH/tL=ln(2)·RC",
      "expect": 0.007624618986159398,
      "actual": 0.007624618986159398
    },
    {
      "id": "property-555-duty",
      "ok": true,
      "kind": "property",
      "detail": "duty>50%",
      "expect": 0.5238095238095238,
      "actual": 0.5238095238095238
    },
    {
      "id": "property-555-duty-pct",
      "ok": true,
      "kind": "property",
      "detail": "duty_pct",
      "expect": 52.38095238095239,
      "actual": 52.38095238095239
    },
    {
      "id": "property-555-C-scale",
      "ok": true,
      "kind": "property",
      "detail": "2×C → ½f",
      "expect": 34.349881925927704,
      "actual": 34.349881925927704
    },
    {
      "id": "property-555-R-scale",
      "ok": true,
      "kind": "property",
      "detail": "2×R → ½f",
      "expect": 34.349881925927704,
      "actual": 34.349881925927704
    },
    {
      "id": "property-555-R-permutation",
      "ok": true,
      "kind": "property",
      "detail": "R1/R2 not interchangeable",
      "expect": {
        "f": 68.69976385185541,
        "duty": 0.5238095238095238
      },
      "actual": {
        "f": 120.22458674074697,
        "duty": 0.9166666666666666
      }
    },
    {
      "id": "property-555-duty-gt50",
      "ok": true,
      "kind": "property",
      "detail": "duty>50% samples",
      "expect": true,
      "actual": true
    },
    {
      "id": "property-555-low-f",
      "ok": true,
      "kind": "property",
      "detail": "large RC → low f",
      "expect": true,
      "actual": 0.00048089834696298775
    },
    {
      "id": "property-555-hf-warn",
      "ok": true,
      "kind": "property",
      "detail": "f>100kHz still returns a finite result with NE555_HIGH_FREQUENCY warning (not invalid input)",
      "expect": {
        "code": "NE555_HIGH_FREQUENCY",
        "severity": "warning",
        "result_ok": true
      },
      "actual": {
        "code": "NE555_HIGH_FREQUENCY",
        "severity": "warning",
        "result_ok": true
      }
    },
    {
      "id": "property-mono-T",
      "ok": true,
      "kind": "property",
      "detail": "tw",
      "expect": 0.011,
      "actual": 0.011
    },
    {
      "id": "property-mono-ms",
      "ok": true,
      "kind": "property",
      "detail": "ms=s×1000",
      "expect": 11,
      "actual": 11
    },
    {
      "id": "property-mono-R-scale",
      "ok": true,
      "kind": "property",
      "detail": "2×R → 2×tw",
      "expect": 0.022,
      "actual": 0.022
    },
    {
      "id": "property-mono-C-scale",
      "ok": true,
      "kind": "property",
      "detail": "2×C → 2×tw",
      "expect": 0.022,
      "actual": 0.022
    },
    {
      "id": "property-mono-short-warn",
      "ok": true,
      "kind": "property",
      "detail": "tw<10µs still returns a finite result with MONOSTABLE_SHORT_PULSE warning (not invalid input)",
      "expect": {
        "code": "MONOSTABLE_SHORT_PULSE",
        "severity": "warning",
        "result_ok": true
      },
      "actual": {
        "code": "MONOSTABLE_SHORT_PULSE",
        "severity": "warning",
        "result_ok": true
      }
    },
    {
      "id": "property-schema-astable",
      "ok": true,
      "kind": "property",
      "detail": "astable fields",
      "expect": true,
      "actual": "astable"
    },
    {
      "id": "property-schema-mono",
      "ok": true,
      "kind": "property",
      "detail": "monostable fields",
      "expect": true,
      "actual": "monostable"
    },
    {
      "id": "property-555-no-warn-nominal",
      "ok": true,
      "kind": "property",
      "detail": "nominal no warning",
      "expect": true,
      "actual": 0
    }
  ],
  "tier": "internally_reviewed",
  "verification": {
    "tests": {
      "passed": 30,
      "total": 30,
      "golden": 3,
      "boundary": 7,
      "property": 20
    },
    "contract_checks": {
      "passed": 8,
      "total": 8
    }
  },
  "evidence_core_generated_at": "2026-09-09T14:46:37.636Z",
  "rendered_at": "2026-09-16T22:03:43.731Z",
  "release_integrity": {
    "status": "verified",
    "scope": "workspace",
    "production_attestation_required": true,
    "calculation_version": "1.2.0",
    "artifacts": {
      "engine": "1.2.0",
      "page": "1.2.0",
      "capability": "1.2.0",
      "evidence": "1.2.0",
      "input_schema": "1.2.0",
      "output_schema": "1.2.0",
      "mcp_contract": "1.2.0"
    },
    "digests": {
      "input_schema_sha256": "28c7a7495fb90986ab08fc38e0861f68022f58ce939c9a2f4d7325767a94301b",
      "output_schema_sha256": "fbf0aeb7cd3b62a5f0749610a7a4c6a0bec3152dee5773f0e965d687b4a4d633",
      "evidence_sha256": "8248940910033e7a3170155dae423674dab3e610636399100230eb6627b6341c",
      "evidence_core_sha256": "8248940910033e7a3170155dae423674dab3e610636399100230eb6627b6341c",
      "capability_sha256": "76a6e607e83d0e5c749b24a94cdca54785c6a4bd2c5049f5bdc8c3616e5e1e11",
      "engine_sha256": "c8d4ccdbfeaf61d7b024d4e1babb0c2ba3b324c1b37bd0cb456a526d8d2b1bd1",
      "mcp_contract_sha256": "863098b311a7b17dc4b229a6302b90b3545b175f716e5d84772c7be8e9716b86"
    },
    "contract_checks": {
      "total": 8,
      "passed": 8,
      "failed": 0,
      "items": [
        {
          "id": "contract-page-version",
          "status": "pass",
          "detail": "1.2.0"
        },
        {
          "id": "contract-capability-version",
          "status": "pass",
          "detail": "1.2.0"
        },
        {
          "id": "contract-input-schema-version",
          "status": "pass",
          "detail": "1.2.0"
        },
        {
          "id": "contract-output-schema-version",
          "status": "pass",
          "detail": "1.2.0"
        },
        {
          "id": "evidence-version-matches-manifest",
          "status": "pass",
          "detail": "1.2.0"
        },
        {
          "id": "schema-valid-input-executes",
          "status": "pass"
        },
        {
          "id": "engine-success-output-validates-schema",
          "status": "pass"
        },
        {
          "id": "schema-rejects-incomplete-input",
          "status": "pass"
        }
      ]
    },
    "report": "https://www.calculatorx.com/.well-known/calculatorx-release-integrity.json"
  }
}
