Network-wide Link Inventory v1.4 is a dataset in the Crimson Hexagonal Archive, by Lee Sharks (2026-07-08). The deposited body is structured data rather than prose. A description composed from a reading of the work belongs to the description/wiki review stream.
# Network-wide Link Inventory v1.4
Lee Sharks ยท 2026-07-08 ยท Dataset
AXN: `AXN:0431.ARCHIVAL.๐๐ธ๏ธ๐บ๏ธ๐๐โ๏ธ`
## Description
A per-link database of every anchored hyperlink across all 34 substantive repositories in the `leesharks000` network. Each row records the anchor text, current href, ~200 characters of prose before and after the link, ~1,600 characters of enclosing prose context, extracted DOI/AXN references from anchor text and href and context, a resolver lookup for any extracted DOI (returning the current live target, the resolver's stored title, the mapping type), a prose-vs-resolver-title jaccard similarity, the best-matching alternative record in the alexanarch registry, and a verdict flag classifying the link into review categories.
This dataset was assembled to answer a question that the earlier link-scan (a 440,012-row token count across the same 34 repos) could not: not just how many links there are, but whether each link is right โ whether the href points at what the anchor text says, whether the DOI in the anchor text matches the descriptive prose around it, and whether the resolver's current mapping for that DOI is consistent with everything the surrounding context asserts.
v1.1 (2026-07-08): 106 fixes applied since v1.0 โ 69 sentinel-0 hrefs corrected to specific records via unique-substring anchor-text matching against the registry; 34 href_disagrees_resolver corrections where the anchor uniquely matched a different record than the current href; 3 ambiguous fixes with high-confidence matches. Verdict deltas: href_wrong_target 258โ208 (-50); ambiguous 11163โ11149 (-14); consistent 1286โ1303 (+17); href_disagrees_resolver 365โ428 (+63, false-positive increase โ sentinel-0 fixes now expose disagreement with resolver's DOI-based guess for nearby DOIs, though anchor-text-based fixes are semantically correct).
The immediate use is a review pile for correcting broken and mismatched links across sites โ with corrections applied preferentially to the resolver map at its source of truth (deposit #4 v3.11.0+) rather than to individual site source files, so that the sovereign resolver behavior propagates automatically to every site link via the `/go/?doi=X` endpoint.
## Companion deposits
Companion to [DOI Resolution Index v3.11.0](/s/records/4/) (#4) โ this inventory audits the resolver's real-world usage across the site network. Complements [Zenodotus' Book-Burning](/s/records/1/) (#1) which established the sovereign-succession framework, and [DOIs โ Permanent Identifiers](/s/records/868/) (#868) which characterizes the substrate-wide breakdown of DOI persistence.
## Artifacts
Files live at `/data/link-inventory/`:
Regeneration scripts live at `/scripts/link-inventory/`:
The 81 MB SQLite database itself (`links_review.db`) is not shipped in-repo; it is regenerable from the scripts against any local clone of the network. Scan takes about 32 seconds on a modern laptop.
## Schema (SQLite `links` table)
| column | type | description |
|---|---|---|
| `id` | INTEGER PK | auto-incrementing row id |
| `repo` | TEXT | repository name |
| `file_path` | TEXT | path relative to repo root |
| `line_no` | INTEGER | line number of the link's opening character |
| `link_form` | TEXT | `html_a` (HTML `<a href="X">TEXT</a>`) or `md` (markdown `[TEXT](X)`) |
| `anchor_text` | TEXT | visible link text (HTML tags stripped, whitespace normalized) |
| `href` | TEXT | the URL the link currently points at |
| `context_before` / `context_after` | TEXT | ~200 chars of plain-text prose immediately adjacent |
| `context_prose` | TEXT | up to ~1,600 chars of broader enclosing prose |
| `doi_in_text` / `doi_in_href` / `doi_in_context` | TEXT | first `10.5281/zenodo.N` DOI found in each field |
| `axn_in_text` / `axn_in_href` | TEXT | first `AXN:HEX` four-hex identifier found in each field |
| `href_record_num` | INTEGER | record number if href matches `alexanarch.org/s/records/N/` |
| `resolver_doi` | TEXT | the DOI used for resolution (priority: text โ href โ context) |
| `resolver_target` | TEXT | current live target URL per the api map |
| `resolver_title` | TEXT | resolver's stored title for that DOI |
| `resolver_record` | INTEGER | alexanarch record number if `resolver_target` is a record page |
| `resolver_mapping_type` | TEXT | `direct`, `direct_verified`, `title_match_repoint`, `no_alexanarch_equivalent`, etc. |
| `prose_vs_resolver_jaccard` | REAL | token-set jaccard between (anchor+prose) and the actual target record's title |
| `best_alt_record` | INTEGER | registry record whose title matches (anchor+prose) better than resolver's |
| `best_alt_title` / `best_alt_jaccard` | TEXT / REAL | title and score of that alternative |
| `verdict` | TEXT | see next section |
| `verdict_confidence` | TEXT | `high`, `medium`, `low` |
## Verdict taxonomy
| verdict | meaning | how to act on it |
|---|---|---|
| `no_id` | no DOI/AXN anywhere in text, href, or context โ navigation, image, external, non-citation | ignore for review; not a citation link |
| `ambiguous` | DOI present but prose context matches resolver's target title only weakly | filter to `best_alt_jaccard โฅ 0.15` for the promising subset; review individually |
| `consistent` | DOI in text matches DOI in href, or link is internally coherent with resolver | no action needed |
| `href_disagrees_resolver` | href points at record N; resolver says the DOI in text should go to M โ N | fix href to the resolver's target via `/go/?doi=X` OR correct the resolver mapping if wrong |
| `external_ok` | external doi.org / zenodo.org / non-network site link | passthrough; may still be dead but not the resolver's concern |
| `href_wrong_target` | href points at `/s/records/0/` sentinel (the "no target known" placeholder) | always wrong; fix href to correct record via DOI-in-text (`/go/?doi=X`) or descriptive prose match |
| `unknown` | edge case, unclassified | investigate individually |
| `likely_prose_mismatch` | prose describes work X but linked DOI resolves to a very different work, AND a much better alt record exists in registry | probable DOI-in-source-is-wrong OR resolver-mapping-is-wrong; needs editorial judgment |
| `ok` | strong jaccard between prose and resolver's target title | no action needed |
## Verdict distribution as of v1.0
| verdict | count | share |
|---|---|---|
| `no_id` | 45,925 | 77.3% |
| `ambiguous` | 11,163 | 18.8% |
| `consistent` | 1,286 | 2.2% |
| `href_disagrees_resolver` | 365 | 0.6% |
| `external_ok` | 317 | 0.5% |
| `href_wrong_target` | 258 | 0.4% |
| `unknown` | 115 | 0.2% |
| `ok` | 2 | 0.003% |
| **total** | **59,431** | **100.0%** |
## Mismatch concentration by repo (top 15)
| repo | actionable mismatches |
|---|---|
| `semanticphysics-site` | 516 |
| `semantic-economy` | 25 |
| `leesharks.com` | 21 |
| `lee-sharks-corporate` | 13 |
| `spxi-dev` | 12 |
| `provenance-erasure` | 9 |
| `restoredacademy` | 7 |
| `laborvector` | 6 |
| `living-architecture-lab` | 4 |
| `lee-sharks-consulting` | 3 |
| `maryleelabor-org` | 2 |
| `machinemediation-org` | 2 |
| `watergiraffe-org` | 1 |
| `vpcor-org` | 1 |
| `lagrange-observatory` | 1 |
Note: this is the inventory as of the anchor-text rewrite pass of 2026-07-08. Repos with rewrites still-not-deployed carry undercounted `href_wrong_target` counts (fixed in git but not yet in production).
## Worked example โ the "Generative Monoculture goes to Meaning Caste" case
MANUS flagged `lagrange-observatory/index.html:250` โ anchor text `DOI 10.5281/zenodo.20675438` next to prose about "Generative Monoculture: Model Collapse in Code" โ but that DOI resolves to record #198 "The Self-Audit Module Dissolved". The actual "Generative Monoculture" work is at record #199 (Talos Morrow, June 13 2026) or the re-mint at #1023 (EA-UMBML-MONOCULTURE-01).
The row in the inventory:
Two possible root causes and neither can be picked automatically: (1) the DOI in the lagrange source is wrong for the work described (someone typed the wrong DOI when the page was authored), or (2) the resolver's `20675438 โ #198` mapping is wrong (Phase 6/7 fuzzy title matching landed the wrong record). The inventory surfaces the ambiguity; a MANUS-level decision picks which side is authoritative.
## Iteration policy
The inventory regenerates cleanly from source at any point โ no in-place mutation, no state drift. Standard iteration cycle:
1. Re-run `build_link_review_db.py` after each rewrite pass or resolver update to refresh the row set.
2. Re-run `enrich_link_review_db.py` after any resolver-map correction to refresh verdict flags.
3. Re-run `build_review_report.py` to regenerate the CSV exports.
4. Bump this deposit's minor version and update the summary JSON with new counts.
The versioned snapshots in `/data/link-inventory/` are the durable record of network-wide link integrity at each rescan point; they can be diffed across time to show which repos are converging toward zero mismatches.
## Related identifiers
โฎ = 1