Source: https://guthlabs.ai/docs/instruments/ipv6-address-explorer/

instrument / verified-clean

# IPv6 Address Explorer

The current ledger marks this instrument verified clean within the source-bound verification corpus.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Inspectable records

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

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Computing & Information

**Tranche**: tranche-3

**Evidence ID**: t3-016

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The formulas are standard in principle, but the specification is not sufficiently precise to pass verification. The exact compression tie rule, inclusive network-range definition, supported input grammar, and special-purpose classification precedence must be documented. The honest_label field is empty; it should state that classification depends on a bundled, potentially stale IANA registry and that textual normalization follows a defined canonical-output policy.

### Formula and scope findings

- The prefix-masking formula is only named, not fully specified: network_start should be address AND mask, and network_end should be network_start plus 2^(128-prefix_length)-1; it must be defined whether the reported network range is inclusive.

- The zero-run compression rule is underspecified: canonical IPv6 text requires compressing only the longest run of two or more zero hextets, with the leftmost run winning ties.

- Address-class determination needs explicit precedence and exact ranges. In particular, special-purpose registry entries can overlap broad categories such as global unicast, and the meaning of global must be defined.

- The supported IPv6 input grammar is unspecified, including whether IPv4-embedded notation, uppercase hexadecimal, and zone identifiers such as %25eth0 are accepted.

### Unit assumptions

- prefix_length is an integer number of bits in the range 0 through 128.

- Each IPv6 address represents 128 bits split into eight 16-bit hextets; hexadecimal values are case-insensitive on input.

- Network ranges are inclusive and consist of network_start through network_end.

- Canonical output uses lowercase hexadecimal, suppresses leading zeroes in hextets, and applies the canonical :: compression rule.

- The test vectors classify addresses using link-local fe80::/10, ULA fc00::/7, multicast ff00::/8, and global unicast 2000::/3 after excluding more-specific special-purpose registry entries.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

The computational cases remain exactly representable when implemented with 128-bit arithmetic, but the link-local vector exposes an under-specified convention: a bare fe80::1 lacks the interface zone needed for many real operations. The explorer must distinguish syntactic classification from scoped operational validity. Extreme all-ones input also breaks implementations that use JavaScript Number arithmetic instead of exact 128-bit handling.

## 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": {
    "ipv6_address": "2001:4860:4860:0000:0000:0000:0000:8888",
    "prefix_length": 64
  },
  "expected_outputs": {
    "expanded_form": "2001:4860:4860:0000:0000:0000:0000:8888",
    "compressed_form": "2001:4860:4860::8888",
    "network_range": {
      "network_start": "2001:4860:4860:0000:0000:0000:0000:0000",
      "network_end": "2001:4860:4860:0000:ffff:ffff:ffff:ffff"
    },
    "address_class": "global"
  },
  "working": "Parse into hextets [2001,4860,4860,0000,0000,0000,0000,8888]. The longest zero run is hextets 4-7, so compress it: 2001:4860:4860::8888. For /64, retain the first 4 hextets and zero the last 4: network_start = 2001:4860:4860:0000:0000:0000:0000:0000. Host bits = 128-64 = 64. Maximum host value = 2^64-1 = 0xffffffffffffffff, which is four ffff hextets. Therefore network_end = 2001:4860:4860:0000:ffff:ffff:ffff:ffff. The address begins with 2000::/3 and is not in the listed special ranges, so it is global."
}
````

## Related workflows

[Network Plannerv6](<https://guthlabs.ai/docs/instrument-workflows/network-planner/>)

## Sources and evidence

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

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

- `evidence-tranche3/tranche3-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
