Source: https://guthlabs.ai/docs/instruments/color-code-converter/

instrument / verified-with-binding-errata

# Color Code Converter

The current ledger marks this instrument verified with errata that must be applied at binding time.

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

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/color-code-converter/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/color-code-converter/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/color-code-converter/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/color-code-converter/qualification/>)

## Ledger state

The current ledger marks this instrument verified with errata that must be applied at binding time.

**Area**: Computing & Information

**Tranche**: tranche-4

**Evidence ID**: t4-196

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The conversion claims are broadly standard, but the specification is not sufficiently precise to verify a single interoperable implementation. Define explicit formulas, accepted input units and syntax, output units, precision/rounding, achromatic hue behavior, CMYK black handling, alpha propagation, and complementary/analogous hue offsets before release. The empty honest_label is a concern: the instrument should disclose that it performs arithmetic color-space conversions rather than color-managed perceptual or ICC-profile conversion.

### Formula and scope findings

- The RGB↔HSL and RGB↔HSV formulas are referenced but not explicitly specified, so channel ranges, hue units, percentage conventions, achromatic hue behavior, and rounding are ambiguous.

- The CMYK formula is incomplete: k=1-max(r,g,b) defines only K; C, M, and Y require C=(1-r-k)/(1-k), M=(1-g-k)/(1-k), and Y=(1-b-k)/(1-k) when k is not 1.

- The CMYK conversion divides by 1-k and therefore requires a defined special case when k=1, such as pure black mapping to C=0,M=0,Y=0,K=1.

- Complementary and analogous harmony formulas are not specified; hue offsets, color space, and handling of achromatic colors are ambiguous.

- The supported input syntax is ambiguous for RGB, RGBA, HSL, HSV/HSB, and CMYK, including whether channels accept normalized values, 8-bit values, percentages, or multiple syntaxes.

### Unit assumptions

- Test vectors use sRGB-like RGB channel values; RGB inputs are either 8-bit integers in the range 0-255 or normalized values in the range 0-1 as explicitly shown.

- HSL and HSV hue is expressed in degrees in the range [0,360), while saturation, lightness, and value are expressed as percentages.

- CMYK channels are expressed as fractions in the range [0,1].

- Hex colors use six hexadecimal digits in the order RRGGBB; RGBA alpha is represented as a normalized fraction in [0,1].

- The arithmetic treats RGB values as encoded channel values and does not perform gamma or color-profile conversion.

- For the black edge case, undefined achromatic hue is represented as null and CMYK uses the conventional special case C=0,M=0,Y=0,K=1; the implementation must document whether it instead emits hue 0.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

Achromatic colors such as black produce zero denominators in the general HSL/HSV hue and saturation formulas and, for black, in the usual CMYK secondary-channel formulas. The converter must use special cases and expose hue as undefined; a numeric hue or an unhandled division would be a break.

## Errata and corrections

### Tranche errata

**hsl.s** · vector 1

66.6667

50

copied HSV saturation into HSL field; her v4 HSL saturation is correct

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "inputs": {
    "hex": "#336699"
  },
  "expected_outputs": {
    "hex": "#336699",
    "rgb": {
      "r": 51,
      "g": 102,
      "b": 153
    },
    "rgba": {
      "r": 51,
      "g": 102,
      "b": 153,
      "a": 1
    },
    "hsl": {
      "h": 210,
      "s": 66.6667,
      "l": 40
    },
    "hsv": {
      "h": 210,
      "s": 66.6667,
      "v": 60
    },
    "cmyk": {
      "c": 66.6667,
      "m": 33.3333,
      "y": 0,
      "k": 40
    }
  },
  "working": "Normalize RGB: r=51/255=0.2, g=102/255=0.4, b=153/255=0.6. max=0.6, min=0.2, d=0.4. HSL: l=(0.6+0.2)/2=0.4; s=0.4/(1-|2(0.4)-1|)=0.4/0.6=0.666667=66.6667%; b is maximum, so h=60[((r-g)/d)+4]=60[((0.2-0.4)/0.4)+4]=60(3.5)=210°. HSV: v=0.6=60%; s=d/v=0.4/0.6=0.666667=66.6667%; h=210°. CMYK: k=1-max=1-0.6=0.4=40%; c=(1-0.2-0.4)/(1-0.4)=0.4/0.6=0.666667=66.6667%; m=(1-0.4-0.4)/0.6=0.2/0.6=0.333333=33.3333%; y=(1-0.6-0.4)/0.6=0."
}
````

## Related workflows

No source-defined multi-instrument workflow membership is recorded.

## Sources and evidence

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

- `VERIFIED_LEDGER.json · VERIFIED_WITH_ERRATA`

- `evidence-tranche4/tranche4-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
