# graph-v3
-**A modern C++20 graph library — header-only, descriptor-based, works with your graphs.**
+**A modern C++20 graph library — generic, header-only, works with your graphs**
@@ -20,7 +20,8 @@
## Highlights
- **Header-only** — drop into any CMake project; no compiled components
-- **Works with your containers** — `std::vector>` or `std::map>` are valid graphs out of the box
+- **Generic** - Enabled by the use of descriptors.
+- **Works with your graphs** — Bring your own graph. `std::vector>` and `std::map>>` are also valid graphs out of the box.
- **13 algorithms** — Dijkstra, Bellman-Ford, BFS, DFS, topological sort, connected components, articulation points, biconnected components, MST, triangle counting, MIS, label propagation, Jaccard coefficient
- **7 lazy views** — vertexlist, edgelist, incidence, neighbors, BFS, DFS, topological sort — all composable with range adaptors
- **Bidirectional edge access** — `in_edges`, `in_degree`, reverse BFS/DFS/topological sort via `in_edge_accessor`
@@ -108,7 +109,7 @@ Both share a common descriptor system and customization-point interface.
| Compiler | Version | Platform | Status |
|----------|---------|----------|--------|
| GCC | 13 + | Linux | Tested |
-| Clang | 10 + | Linux, macOS | Tested |
+| Clang | 18 + | Linux, macOS | Tested |
| MSVC | 2022 + | Windows | Tested |
Requires **CMake 3.20+** and a **C++20**-capable toolchain.
@@ -172,6 +173,7 @@ The full documentation hub is at [docs/index.md](docs/index.md).
Quick links:
- [Getting Started](docs/index.md#users)
+- [C++ Standardization](docs/standardization.md) — ISO C++ papers and proposal status
- [Migration from graph-v2](docs/migration-from-v2.md)
- [FAQ](docs/FAQ.md)
- [Implementation Matrix](docs/status/implementation_matrix.md)
diff --git a/VERSION b/VERSION
index 6e8bf73..8f0916f 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.1.0
+0.5.0
diff --git a/docs/FAQ.md b/docs/FAQ.md
index 2603372..3d077a1 100644
--- a/docs/FAQ.md
+++ b/docs/FAQ.md
@@ -1,5 +1,12 @@
+
+
+
+
# Frequently Asked Questions
+
+
+
> [← Back to Documentation Index](index.md)
---
diff --git a/docs/assets/logo_text.svg b/docs/assets/logo_text.svg
new file mode 100644
index 0000000..a9ca5ae
--- /dev/null
+++ b/docs/assets/logo_text.svg
@@ -0,0 +1,69 @@
+
diff --git a/docs/contributing/algorithm-template.md b/docs/contributing/algorithm-template.md
index 8770886..5bb38e5 100644
--- a/docs/contributing/algorithm-template.md
+++ b/docs/contributing/algorithm-template.md
@@ -1,6 +1,14 @@
+
+
+
+
# Algorithm Documentation Template
-This template provides a standardized format for documenting graph algorithms in the graph-v3 library. Follow this structure to ensure consistency and completeness across all algorithm documentation.
+
+> This template provides a standardized format for documenting graph algorithms in the graph-v3 library. Follow this structure to ensure consistency and completeness across all algorithm documentation.
+
+
+
## Algorithm Name
diff --git a/docs/contributing/architecture.md b/docs/contributing/architecture.md
index 943d39a..78df404 100644
--- a/docs/contributing/architecture.md
+++ b/docs/contributing/architecture.md
@@ -1,7 +1,13 @@
+
+
+
+
# Architecture Guide
> How graph-v3 is structured, and the design principles behind it.
+
+
# Coding Guidelines
-These requirements apply to every graph-related component, including implementations, views, algorithms, and the data model.
+
+> These requirements apply to every graph-related component, including implementations, views, algorithms, and the data model.
+
+
+
## Core Architectural Commitments
1. The interface MUST be able to adapt to existing graph data structures.
diff --git a/docs/contributing/cpo-implementation.md b/docs/contributing/cpo-implementation.md
index af59920..9e65ad7 100644
--- a/docs/contributing/cpo-implementation.md
+++ b/docs/contributing/cpo-implementation.md
@@ -1,7 +1,14 @@
+
+
+
+
# CPO Implementation Guide
> How Customization Point Objects work in graph-v3, how to implement new ones, and how to test them.
+
+
+
**References:**
- [Adjacency List Interface](../reference/adjacency-list-interface.md) — GCI spec for adjacency lists
- [Edge List Interface](../reference/edge-list-interface.md) — GCI spec for edge lists
diff --git a/docs/contributing/cpo-order.md b/docs/contributing/cpo-order.md
index 273e784..b7f6510 100644
--- a/docs/contributing/cpo-order.md
+++ b/docs/contributing/cpo-order.md
@@ -1,6 +1,14 @@
+
+
+
+
# Graph CPO Implementation Order
-This document specifies the correct implementation order for CPOs in `graph_cpo.hpp`, matching the reference implementation structure.
+
+> This document specifies the correct implementation order for CPOs in `graph_cpo.hpp`, matching the reference implementation structure.
+
+
+
## CPO Implementation Order
diff --git a/docs/contributing/view-chaining.md b/docs/contributing/view-chaining.md
index fbfa04c..7022f3a 100644
--- a/docs/contributing/view-chaining.md
+++ b/docs/contributing/view-chaining.md
@@ -1,5 +1,12 @@
+
+
+
+
# View Chaining — How It Works
+
+
+
## Overview
Graph views in graph-v3 support **full C++20 range chaining with `std::views`**, including
diff --git a/docs/contributing/view-template.md b/docs/contributing/view-template.md
index bd2f4c2..151b689 100644
--- a/docs/contributing/view-template.md
+++ b/docs/contributing/view-template.md
@@ -1,7 +1,14 @@
+
+
+
+
# View Documentation Template
-This template provides a standardized format for documenting graph views in the graph-v3 library. Follow this structure to ensure consistency and completeness across all view documentation.
+> This template provides a standardized format for documenting graph views in the graph-v3 library. Follow this structure to ensure consistency and completeness across all view documentation.
+
+
+
# Getting Started
-> [← Back to Documentation Index](index.md)
-This guide walks you through installing graph-v3, building your first graph,
+> This guide walks you through installing graph-v3, building your first graph,
running an algorithm, and working with edge lists.
+
+
+
+> [← Back to Documentation Index](index.md)
+
---
## 1. Requirements
diff --git a/docs/index.md b/docs/index.md
index ecc8ac7..fa0ea14 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -8,7 +8,6 @@
-
---
## For Users
@@ -17,9 +16,9 @@
- [Adjacency Lists](user-guide/adjacency-lists.md) — range-of-ranges model, concepts, CPOs
- [Edge Lists](user-guide/edge-lists.md) — flat sourced-edge model, concepts, patterns
- [Containers](user-guide/containers.md) — `dynamic_graph`, `compressed_graph`, `undirected_adjacency_list`, 27 trait combinations
-- [Views](user-guide/views.md) — lazy traversal views (BFS, DFS, topological sort, etc.)
+- [Views](user-guide/views.md) — lazy traversal views (breadth-first search, depth-first search, topological sort, etc.)
- [Bidirectional Access](user-guide/bidirectional-access.md) — incoming edges, reverse traversal, `in_edge_accessor`
-- [Algorithms](user-guide/algorithms.md) — Dijkstra, Bellman-Ford, MST, connected components, and more
+- [Algorithms](user-guide/algorithms.md) — Dijkstra and Bellman-Ford shortest-paths, minimal spanning tree, connected components, and more
## Reference
@@ -45,6 +44,7 @@
## Other
- [FAQ](FAQ.md) — common questions and answers
-- [Migration from v2](migration-from-v2.md) — what changed from graph-v2 and how to migrate
- [Status & Metrics](status/metrics.md) — canonical counts and implementation matrix
- [Code Coverage](status/coverage.md) — line and function coverage report (95.8% lines, 92.0% functions)
+- [C++ Standardization](standardization.md) — ISO C++ proposal papers (P3126–P3131, P3337) and participation
+- [Migration from v2](migration-from-v2.md) — what changed from graph-v2 and how to migrate
diff --git a/docs/migration-from-v2.md b/docs/migration-from-v2.md
index ef1ad7b..bb1db8b 100644
--- a/docs/migration-from-v2.md
+++ b/docs/migration-from-v2.md
@@ -1,5 +1,12 @@
+
+
+
+
# Migrating from graph-v2 to graph-v3
+
+
+
> [← Back to Documentation Index](index.md)
## Overview
diff --git a/docs/reference/adjacency-list-interface.md b/docs/reference/adjacency-list-interface.md
index 7f803e4..43ea361 100644
--- a/docs/reference/adjacency-list-interface.md
+++ b/docs/reference/adjacency-list-interface.md
@@ -1,10 +1,18 @@
+
+
+
+
# Adjacency List Interface Reference
-> [← Back to Documentation Index](../index.md) · [User Guide: Adjacency Lists](../user-guide/adjacency-lists.md)
-This is the formal **Graph Container Interface (GCI)** specification for
+> This is the formal **Graph Container Interface (GCI)** specification for
adjacency lists, derived from P1709/D3130.
+
+
# Algorithm Complexity Cheat Sheet
-> [← Back to Documentation Index](../index.md) · [User Guide: Algorithms](../user-guide/algorithms.md)
-Quick-reference for time complexity, space complexity, required concepts, and
+> Quick-reference for time complexity, space complexity, required concepts, and
headers for every algorithm in graph-v3.
+
+
# Concepts Reference
-> [← Back to Documentation Index](../index.md) · [CPO Reference](cpo-reference.md)
-All graph concepts live in `namespace graph::adj_list` (adjacency lists) or
+> All graph concepts live in `namespace graph::adj_list` (adjacency lists) or
`namespace graph::edge_list` (edge lists) and are re-exported into
`namespace graph` via ``.
+
+
+
+> [← Back to Documentation Index](../index.md) · [CPO Reference](cpo-reference.md)
+
---
## Adjacency List Concepts
diff --git a/docs/reference/cpo-reference.md b/docs/reference/cpo-reference.md
index 110b439..5964e09 100644
--- a/docs/reference/cpo-reference.md
+++ b/docs/reference/cpo-reference.md
@@ -1,7 +1,15 @@
+
+
+
+
# CPO Reference
+
+
+
> [← Back to Documentation Index](../index.md) · [CPO Implementation Guide](../contributing/cpo-implementation.md)
+
**Customization Point Objects (CPOs)** are the primary API for querying graph
structure. Each CPO resolves at compile time via a three-step priority:
1. Member function on the graph/edge type
diff --git a/docs/reference/edge-list-interface.md b/docs/reference/edge-list-interface.md
index 6766119..4946d8d 100644
--- a/docs/reference/edge-list-interface.md
+++ b/docs/reference/edge-list-interface.md
@@ -1,10 +1,17 @@
-# Edge List Interface Reference
+
+
+
-> [← Back to Documentation Index](../index.md) · [User Guide: Edge Lists](../user-guide/edge-lists.md)
+# Edge List Interface Reference
-This is the formal **Graph Container Interface (GCI)** specification for edge
+> This is the formal **Graph Container Interface (GCI)** specification for edge
lists, derived from P1709/D3130.
+
+
+
+> [← Back to Documentation Index](../index.md) · [User Guide: Edge Lists](../user-guide/edge-lists.md)
+
---
## Namespace
diff --git a/docs/reference/edge-value-concepts.md b/docs/reference/edge-value-concepts.md
index c86331b..a5dbf7a 100644
--- a/docs/reference/edge-value-concepts.md
+++ b/docs/reference/edge-value-concepts.md
@@ -1,9 +1,14 @@
-# Edge Value Type Concepts and Pattern Detection
+
+
+
-## Overview
+# Edge Value Type Concepts and Pattern Detection
This document describes the concepts and type traits added to `descriptor.hpp` for detecting and categorizing edge value types used in graph descriptors.
+
+
+
## Concepts
### Edge Value Type Patterns
diff --git a/docs/reference/type-aliases.md b/docs/reference/type-aliases.md
index 08ae60a..61d401b 100644
--- a/docs/reference/type-aliases.md
+++ b/docs/reference/type-aliases.md
@@ -1,8 +1,16 @@
+
+
+
+
# Type Aliases Reference
+
+
+
+
> [← Back to Documentation Index](../index.md) · [CPO Reference](cpo-reference.md)
-All type aliases below are available in `namespace graph` after
+> All type aliases below are available in `namespace graph` after
`#include `. They are re-exported from
`namespace graph::adj_list`.
diff --git a/docs/reference/vertex-patterns.md b/docs/reference/vertex-patterns.md
index 9d5b8e5..3496dc5 100644
--- a/docs/reference/vertex-patterns.md
+++ b/docs/reference/vertex-patterns.md
@@ -1,12 +1,20 @@
+
+
+
+
# Vertex Patterns Reference
-> [← Back to Documentation Index](../index.md) · [User Guide: Adjacency Lists](../user-guide/adjacency-lists.md)
-This page documents two complementary concept families for vertex types:
+> This page documents two complementary concept families for vertex types:
**inner value patterns** (how vertex data is accessed) and
**storage patterns** (how vertex IDs are stored/extracted). Both families live
in `graph::adj_list::detail` and are re-exported via ``.
+
+
+
+> [← Back to Documentation Index](../index.md) · [User Guide: Adjacency Lists](../user-guide/adjacency-lists.md)
+
---
## Inner Value Patterns
diff --git a/docs/standardization.md b/docs/standardization.md
new file mode 100644
index 0000000..7b17ce1
--- /dev/null
+++ b/docs/standardization.md
@@ -0,0 +1,73 @@
+
+
+
+
+# C++ Standardization
+
+> graph-v3 is the reference implementation for a proposed graph library for the **ISO C++ Standard (C++29/C++32)**.
+
+
+
+---
+
+graph-v3 is developed under the [WG21](https://isocpp.org/std/the-committee) umbrella and targets the Standard
+Library Evolution Working Group (LEWG).
+
+> The previous reference implementation is [graph-v2](https://github.com/stdgraph/graph-v2).
+> graph-v3 refines and supersedes that work.
+
+---
+
+## Goals
+
+The proposed library aims to:
+
+1. Support creation of high-performance, state-of-the-art graph algorithms.
+2. Provide syntax that is simple, expressive and easy to understand when writing algorithms.
+3. Define useful concepts and traits that algorithms can use to express their requirements.
+4. Support views for graph traversal commonly used by algorithms.
+5. Support optional, user-defined value types for edges, vertices and the graph itself.
+6. Allow the use of standard containers to define simple graphs.
+7. Enable easy integration of existing graph data structures.
+
+---
+
+## ISO C++ Papers
+
+The following papers collectively form the current proposal submitted to WG21.
+
+| Paper | Title | Description |
+| :---- | :---- | :---------- |
+| [P3126](https://wg21.link/P3126) | Overview | Describes the big picture of what is being proposed. |
+| [P3127](https://wg21.link/P3127) | Background and Terminology | Motivation and theoretical background underlying the proposal. |
+| [P3128](https://wg21.link/P3128) | Algorithms | Covers the initial algorithms as well as planned future additions. |
+| [P3129](https://wg21.link/P3129) | Views | Helpful views for traversing a graph. |
+| [P3130](https://wg21.link/P3130) | Graph Container Interface | The core interface for uniformly accessing graph data structures and adapting to external graphs. |
+| [P3131](https://wg21.link/P3131) | Graph Containers | Includes `compressed_graph` and use of standard containers to define simple graphs. |
+| [P3337](https://wg21.link/P3337) | Graph Comparison | Syntax and performance comparison to the Boost Graph Library. |
+
+---
+
+## Relationship Between Papers and This Library
+
+| Paper | Library location |
+| :---- | :--------------- |
+| P3128 Algorithms | [`include/graph/algorithm/`](../include/graph/algorithm/) |
+| P3129 Views | [`include/graph/views/`](../include/graph/views/) |
+| P3130 Graph Container Interface | [`include/graph/detail/`](../include/graph/detail/) and [CPO Reference](reference/cpo-reference.md) |
+| P3131 Graph Containers | [`include/graph/container/`](../include/graph/container/) |
+
+---
+
+## How to Participate
+
+- **WG21 mailing list and papers:**
+- **GitHub discussions:**
+- **GitHub issues:**
+
+---
+
+## Acknowledgements
+
+- The [NWGraph](https://github.com/NWmath/NWgr) team for collaboration and algorithm implementations.
+- The Machine Learning study group (SG19) of the ISO C++ Standards Committee (WG21) for comments and support.
diff --git a/docs/status/coverage.md b/docs/status/coverage.md
index c3febd2..b4500ba 100644
--- a/docs/status/coverage.md
+++ b/docs/status/coverage.md
@@ -1,6 +1,14 @@
+
+
# Implementation Matrix
> **Purpose:** Single source of truth for what is implemented. Generated from the source tree.
+
+
+
+
> All user-facing documentation must reference this file rather than maintaining independent lists.
---
diff --git a/docs/status/metrics.md b/docs/status/metrics.md
index 319446c..d10b98c 100644
--- a/docs/status/metrics.md
+++ b/docs/status/metrics.md
@@ -1,6 +1,14 @@
+
+
+
+
# Canonical Metrics
> **Single source of truth for all user-facing counts.**
+
+
+
+
> All documentation (README, docs/index.md, etc.) must reference these values
> rather than maintaining independent numbers. Re-run `ctest` and update when
> the implementation surface changes.
diff --git a/docs/user-guide/adjacency-lists.md b/docs/user-guide/adjacency-lists.md
index 8686634..de3b4c4 100644
--- a/docs/user-guide/adjacency-lists.md
+++ b/docs/user-guide/adjacency-lists.md
@@ -1,12 +1,20 @@
+
+
+
+
# Adjacency Lists
-> [← Back to Documentation Index](../index.md)
-An **adjacency list** is the primary graph abstraction in graph-v3.
+> An **adjacency list** is the primary graph abstraction in graph-v3.
It models a graph as a *range of vertices*, where each vertex owns a *range of
outgoing edges*. This "range-of-ranges" view maps directly to standard
containers — a `std::vector>` is already a valid adjacency list.
+
+
+
+> [← Back to Documentation Index](../index.md)
+
---
## 1. What Is an Adjacency List?
diff --git a/docs/user-guide/algorithms.md b/docs/user-guide/algorithms.md
index 4e3da56..faa0b74 100644
--- a/docs/user-guide/algorithms.md
+++ b/docs/user-guide/algorithms.md
@@ -1,7 +1,15 @@
+
+
+
+
# Algorithms
+
+
+
> [← Back to Documentation Index](../index.md)
+## Table of Contents
- [Overview](#overview)
- [Algorithm Catalog](#algorithm-catalog)
- [By Category](#by-category)
diff --git a/docs/user-guide/algorithms/articulation_points.md b/docs/user-guide/algorithms/articulation_points.md
index 39d8c72..6ff0d5d 100644
--- a/docs/user-guide/algorithms/articulation_points.md
+++ b/docs/user-guide/algorithms/articulation_points.md
@@ -1,7 +1,15 @@
+
+
+
+
# Articulation Points
+
+
+
> [← Back to Algorithm Catalog](../algorithms.md)
+## Table of Contents
- [Overview](#overview)
- [When to Use](#when-to-use)
- [Include](#include)
diff --git a/docs/user-guide/algorithms/bellman_ford.md b/docs/user-guide/algorithms/bellman_ford.md
index 3dfa685..331a19f 100644
--- a/docs/user-guide/algorithms/bellman_ford.md
+++ b/docs/user-guide/algorithms/bellman_ford.md
@@ -1,7 +1,15 @@
+
+
+
+
# Bellman-Ford Shortest Paths
+
+
+
> [← Back to Algorithm Catalog](../algorithms.md)
+## Table of Contents
- [Overview](#overview)
- [When to Use](#when-to-use)
- [Include](#include)
diff --git a/docs/user-guide/algorithms/bfs.md b/docs/user-guide/algorithms/bfs.md
index 1a3177e..df34e7c 100644
--- a/docs/user-guide/algorithms/bfs.md
+++ b/docs/user-guide/algorithms/bfs.md
@@ -1,7 +1,15 @@
+
+
+
+
# Breadth-First Search
+
+
+
> [← Back to Algorithm Catalog](../algorithms.md)
+## Table of Contents
- [Overview](#overview)
- [When to Use](#when-to-use)
- [Include](#include)
diff --git a/docs/user-guide/algorithms/biconnected_components.md b/docs/user-guide/algorithms/biconnected_components.md
index 5563af7..0380eed 100644
--- a/docs/user-guide/algorithms/biconnected_components.md
+++ b/docs/user-guide/algorithms/biconnected_components.md
@@ -1,7 +1,15 @@
+
+
+
+
# Biconnected Components
+
+
+
> [← Back to Algorithm Catalog](../algorithms.md)
+## Table of Contents
- [Overview](#overview)
- [When to Use](#when-to-use)
- [Include](#include)
diff --git a/docs/user-guide/algorithms/connected_components.md b/docs/user-guide/algorithms/connected_components.md
index bd9ab1f..fe242b3 100644
--- a/docs/user-guide/algorithms/connected_components.md
+++ b/docs/user-guide/algorithms/connected_components.md
@@ -1,7 +1,15 @@
+
+
+
+
# Connected Components
+
+
+
> [← Back to Algorithm Catalog](../algorithms.md)
+## Table of Contents
- [Overview](#overview)
- [When to Use](#when-to-use)
- [Include](#include)
diff --git a/docs/user-guide/algorithms/dfs.md b/docs/user-guide/algorithms/dfs.md
index d18d763..08fa6ae 100644
--- a/docs/user-guide/algorithms/dfs.md
+++ b/docs/user-guide/algorithms/dfs.md
@@ -1,7 +1,15 @@
+
+
+
+
# Depth-First Search
+
+
+
> [← Back to Algorithm Catalog](../algorithms.md)
+## Table of Contents
- [Overview](#overview)
- [When to Use](#when-to-use)
- [Include](#include)
diff --git a/docs/user-guide/algorithms/dijkstra.md b/docs/user-guide/algorithms/dijkstra.md
index 5e4d053..72e76a8 100644
--- a/docs/user-guide/algorithms/dijkstra.md
+++ b/docs/user-guide/algorithms/dijkstra.md
@@ -1,7 +1,15 @@
+
+
+
+
# Dijkstra's Shortest Paths
+
+
+
> [← Back to Algorithm Catalog](../algorithms.md)
+## Table of Contents
- [Overview](#overview)
- [When to Use](#when-to-use)
- [Include](#include)
diff --git a/docs/user-guide/algorithms/jaccard.md b/docs/user-guide/algorithms/jaccard.md
index b392038..5bc5380 100644
--- a/docs/user-guide/algorithms/jaccard.md
+++ b/docs/user-guide/algorithms/jaccard.md
@@ -1,7 +1,15 @@
+
+
+
+
# Jaccard Coefficient
+
+
+
> [← Back to Algorithm Catalog](../algorithms.md)
+## Table of Contents
- [Overview](#overview)
- [When to Use](#when-to-use)
- [Include](#include)
diff --git a/docs/user-guide/algorithms/label_propagation.md b/docs/user-guide/algorithms/label_propagation.md
index df23596..eb50f92 100644
--- a/docs/user-guide/algorithms/label_propagation.md
+++ b/docs/user-guide/algorithms/label_propagation.md
@@ -1,7 +1,15 @@
+
+
+
+
# Label Propagation
+
+
+
> [← Back to Algorithm Catalog](../algorithms.md)
+## Table of Contents
- [Overview](#overview)
- [When to Use](#when-to-use)
- [Include](#include)
diff --git a/docs/user-guide/algorithms/mis.md b/docs/user-guide/algorithms/mis.md
index 644d955..da653f1 100644
--- a/docs/user-guide/algorithms/mis.md
+++ b/docs/user-guide/algorithms/mis.md
@@ -1,7 +1,15 @@
+
+
+
+
# Maximal Independent Set
+
+
+
> [← Back to Algorithm Catalog](../algorithms.md)
+## Table of Contents
- [Overview](#overview)
- [When to Use](#when-to-use)
- [Include](#include)
diff --git a/docs/user-guide/algorithms/mst.md b/docs/user-guide/algorithms/mst.md
index 47f30ae..2ab0e4f 100644
--- a/docs/user-guide/algorithms/mst.md
+++ b/docs/user-guide/algorithms/mst.md
@@ -1,7 +1,15 @@
+
+
+
+
# Minimum Spanning Tree
+
+
+
> [← Back to Algorithm Catalog](../algorithms.md)
+## Table of Contents
- [Overview](#overview)
- [When to Use](#when-to-use)
- [Include](#include)
diff --git a/docs/user-guide/algorithms/topological_sort.md b/docs/user-guide/algorithms/topological_sort.md
index 0ddf049..c2ea6fc 100644
--- a/docs/user-guide/algorithms/topological_sort.md
+++ b/docs/user-guide/algorithms/topological_sort.md
@@ -1,7 +1,15 @@
+
+
+
+
# Topological Sort
+
+
+
> [← Back to Algorithm Catalog](../algorithms.md)
+## Table of Contents
- [Overview](#overview)
- [When to Use](#when-to-use)
- [Include](#include)
diff --git a/docs/user-guide/algorithms/triangle_count.md b/docs/user-guide/algorithms/triangle_count.md
index 78f01f8..3099071 100644
--- a/docs/user-guide/algorithms/triangle_count.md
+++ b/docs/user-guide/algorithms/triangle_count.md
@@ -1,7 +1,15 @@
+
+
+
+
# Triangle Count
+
+
+
> [← Back to Algorithm Catalog](../algorithms.md)
+## Table of Contents
- [Overview](#overview)
- [When to Use](#when-to-use)
- [Include](#include)
diff --git a/docs/user-guide/bidirectional-access.md b/docs/user-guide/bidirectional-access.md
index 012e293..3109cf0 100644
--- a/docs/user-guide/bidirectional-access.md
+++ b/docs/user-guide/bidirectional-access.md
@@ -1,7 +1,15 @@
+
+
+
+
# Bidirectional Edge Access
+
+
+
> [← Back to Documentation Index](../index.md) · [Views](views.md) · [Containers](containers.md)
+## Table of Contents
- [Overview](#overview)
- [Creating a Bidirectional Graph](#creating-a-bidirectional-graph)
- [Incoming Edge CPOs](#incoming-edge-cpos)
diff --git a/docs/user-guide/containers.md b/docs/user-guide/containers.md
index 1fc4a1f..3e70f08 100644
--- a/docs/user-guide/containers.md
+++ b/docs/user-guide/containers.md
@@ -1,10 +1,18 @@
+
+
+
+
# Graph Containers
-> [← Back to Documentation Index](../index.md)
-graph-v3 ships three purpose-built graph containers. Each satisfies the
+> graph-v3 ships three purpose-built graph containers. Each satisfies the
adjacency list concepts so all CPOs, views, and algorithms work interchangeably.
+
+
+
+> [← Back to Documentation Index](../index.md)
+
| Container | Storage | Mutability | Best for |
|-----------|---------|------------|----------|
| [`dynamic_graph`](#1-dynamic_graph) | Traits-configured vertex + edge containers | Mutable | General purpose, flexible container choice |
diff --git a/docs/user-guide/edge-lists.md b/docs/user-guide/edge-lists.md
index 467dd8f..1b78d88 100644
--- a/docs/user-guide/edge-lists.md
+++ b/docs/user-guide/edge-lists.md
@@ -1,12 +1,20 @@
+
+
+
+
# Edge Lists
-> [← Back to Documentation Index](../index.md)
-An **edge list** is a flat range of sourced edges — a simpler alternative to
+> An **edge list** is a flat range of sourced edges — a simpler alternative to
the adjacency list when you only need to enumerate edges without fast per-vertex
access. Any `std::ranges::input_range` whose elements expose `source_id` and
`target_id` qualifies.
+
+
+
+> [← Back to Documentation Index](../index.md)
+
---
## 1. What Is an Edge List?
diff --git a/docs/user-guide/views.md b/docs/user-guide/views.md
index 973aa5d..a239ff2 100644
--- a/docs/user-guide/views.md
+++ b/docs/user-guide/views.md
@@ -1,7 +1,15 @@
+
+
+
+
# Graph Views Documentation
+
+
+
> [← Back to Documentation Index](../index.md)
+## Table of Contents
- [Overview](#overview)
- [Quick Start](#quick-start)
- [Basic Views](#basic-views) — vertexlist, incidence, neighbors, edgelist