Page actions
instrument / verified-clean
Complementary / Analogous / Triadic Color Scheme Generator
The current ledger marks this instrument verified clean within the source-bound verification corpus.
Inspectable records
Ledger state
The current ledger marks this instrument verified clean within the source-bound verification corpus.
- Area
- Audio, Music, Photography & Color
- Tranche
- tranche-5
- Evidence ID
- t5-045
- Ledger rows
- 1
No ledger note is attached.
Review findings
The rotation formulas themselves are standard, but the instrument is not implementation-complete. The fourth vector intentionally exposes a conversion ambiguity: #336699 is commonly represented as hsl(210, 50%, 40%), but the worked normalized-channel calculation in the specification lacks a defined color-space/conversion procedure. The blank honest_label is also a concern: the instrument should state that it generates rule-based palette suggestions, not objectively harmonious or perceptually optimal palettes.
Formula and scope findings
- The hue-rotation formulas are standard when hue is measured in degrees and normalized modulo 360: complementary +180°, triadic +120°/+240°, analogous ±30°, and split-complementary +150°/+210°.
- The specification does not state whether saturation and lightness/value are preserved from the base color when generating each palette color.
- The specification does not define whether the base color itself is included in each returned palette.
- Analogous schemes are convention-dependent; ±30° is a valid standard convention, but some systems use ±15° or other offsets.
Unit assumptions
- Hue rotations are in degrees, not radians.
- All resulting hues are normalized to the interval [0°,360°) using modulo 360 arithmetic.
- For these test vectors, HSL saturation and lightness are preserved for every rotated hue.
- Hex output uses 8-bit sRGB notation with uppercase hexadecimal digits.
- The HSL-to-hex conversion in these vectors uses exact channel values where possible; no alpha channel is included.
Boundary hardening
Recorded hazards
- Hue input outside [0°,360°) must be normalized modulo 360°; negative modulo behavior must be defined explicitly.
- Hex parsing must define accepted forms, including #RGB, #RGBA, #RRGGBB, and alpha handling.
- Malformed hex strings, invalid HSL ranges, and missing components require validation errors.
- The generator must define how HSL colors are converted to RGB/hex, including rounding and color space assumptions.
- Zero saturation makes hue rotations visually identical; this is valid but may produce duplicate swatches.
- No division-by-zero occurs in the hue-rotation arithmetic itself, but color-conversion code must guard against degenerate chroma/lightness cases.
- The input label 'base color (hex/HSL)' is ambiguous unless the schema distinguishes the two formats and states whether HSL hue is degrees.
- A hex input does not uniquely specify a palette unless the conversion color space and preservation of saturation/lightness are specified.
Errata and corrections
No applied erratum is attached to this unique-name record.
Inspectable example
4 review vectors are recorded. One source-bound sample is shown below.
{
"inputs": {
"base_color": {
"format": "HSL",
"hue_degrees": 0,
"saturation_percent": 100,
"lightness_percent": 40
}
},
"expected_outputs": {
"base": {
"hsl": "hsl(0, 100%, 40%)",
"hex": "#CC0000"
},
"complementary": [
{
"hue_degrees": 180,
"hsl": "hsl(180, 100%, 40%)",
"hex": "#00CCCC"
}
],
"triadic": [
{
"hue_degrees": 120,
"hsl": "hsl(120, 100%, 40%)",
"hex": "#00CC00"
},
{
"hue_degrees": 240,
"hsl": "hsl(240, 100%, 40%)",
"hex": "#6600CC"
}
],
"analogous": [
{
"hue_degrees": 330,
"hsl": "hsl(330, 100%, 40%)",
"hex": "#CC0066"
},
{
"hue_degrees": 30,
"hsl": "hsl(30, 100%, 40%)",
"hex": "#CC6600"
}
],
"split_complementary": [
{
"hue_degrees": 150,
"hsl": "hsl(150, 100%, 40%)",
"hex": "#00CC66"
},
{
"hue_degrees": 210,
"hsl": "hsl(210, 100%, 40%)",
"hex": "#0066CC"
}
]
},
"working": "Start with H=0°. Complementary: 0°+180°=180°. Triadic: 0°+120°=120° and 0°+240°=240°. Analogous: 0°-30°=-30°; normalize -30°+360°=330°, and 0°+30°=30°. Split-complementary: 0°+150°=150° and 0°+210°=210°. With S=100% and L=40%, chroma C=0.8, so the active channel is 0.8×255=204=CC and the inactive channel is 0; applying each hue sector gives #CC0000, #00CCCC, #00CC00, #6600CC, #CC0066, #CC6600, #00CC66, and #0066CC."
}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_CLEANevidence-tranche5/tranche5-results.json