Source: https://guthlabs.ai/docs/instruments/graph-plotter-2d-function/implementation/

instrument implementation / implementation-contract

# Graph Plotter — 2D Function implementation

A source-bound implementation contract for Graph Plotter — 2D Function; deployment and executable qualification remain separate.

Status: **VERIFIED_WITH_ERRATA**Lifecycle: **implementation-contract**

## Binding contract

This record describes what an executable surface must bind and validate. It does not claim that a public calculator, package, or production route is deployed.

**Record owner**: Guth Instruments

**Lifecycle**: verified-with-binding-errata

**Evidence ID**: t8-025

**Effect**: Computation or source lookup only

## Input and validation requirements

The pole input x=1 for 1/(x-1) necessarily produces an undefined result, so any finite plotted value or intercept at that coordinate is a failure. The trigonometric probe also exposes a convention-dependent graph: sin(90) is approximately 0.8939966636 in radians but exactly 1 in degrees.

## Required corrections

````
[
  {
    "vector": 4,
    "field": "plot_samples y-values (all 5 finite points)",
    "wrong": "2.0, 10.0, 100.0, -100.0, -10.0, -2.0",
    "correct": "-2.0, -10.0, -100.0, 100.0, 10.0, 2.0 (every sign flipped)",
    "cause": "own working computes each value correctly (e.g. 'y=1/(-0.5)=-2; correction: ... the mathematical value is -2, not +2') and then ships the wrong sign for literally every non-asymptote sample in the vector"
  }
]
````

## Inspectable interface fixture

The sample below is evidence for interface and validation tests, not a production implementation.

````
{
  "inputs": {
    "functions": [
      "2*x+1"
    ],
    "domain": [
      -2,
      2
    ],
    "sample_xs": [
      -2,
      -1,
      0,
      1,
      2
    ],
    "range": [
      "auto",
      "auto"
    ]
  },
  "expected_outputs": {
    "plot_samples": [
      {
        "x": -2,
        "y": -3
      },
      {
        "x": -1,
        "y": -1
      },
      {
        "x": 0,
        "y": 1
      },
      {
        "x": 1,
        "y": 3
      },
      {
        "x": 2,
        "y": 5
      }
    ],
    "x_intercepts": [
      -0.5
    ],
    "y_intercepts": [
      1
    ],
    "spot_checks": [
      {
        "at": {
          "x": -1.25
        },
        "input_side": -1.5,
        "answer_side": -1.5
      },
      {
        "at": {
          "x": 0.75
        },
        "input_side": 2.5,
        "answer_side": 2.5
      }
    ]
  },
  "reference_data": {
    "canonical_function": "f(x)=2x+1",
    "x_intercept": "2x+1=0, x=-1/2",
    "y_intercept": "f(0)=1",
    "asymptotes": []
  },
  "working": "For each sample, compute y=2x+1: at x=-2, y=2(-2)+1=-4+1=-3; at x=-1, y=-2+1=-1; at x=0, y=1; at x=1, y=2+1=3; at x=2, y=4+1=5. The x-intercept solves 2x+1=0, so 2x=-1 and x=-1/2=-0.50000000. The y-intercept is f(0)=1. A linear function has no vertical, horizontal, or oblique asymptote."
}
````

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/graph-plotter-2d-function/>)[02**Mechanism**](<https://guthlabs.ai/docs/instruments/graph-plotter-2d-function/mechanism/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/graph-plotter-2d-function/qualification/>)

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json`

- `evidence-tranche8/tranche8-results.json`

- `tranche errata record`
