Skip to main content
Ctrl+K
These pages document the development version 0.3.0.dev0, built from the main branch. The latest release is 0.2.0 (pip install dyng): what the changelog lists under Unreleased, and every page or section marked as new in a later version, is not released yet.

dynG 0.3.0.dev0

  • Getting started
  • Tutorials
  • How-to guides
  • Explanation
  • Algorithms
  • API reference
    • History
    • Developer guide
    • Architecture Decision Records
    • Roadmap
    • How to cite
    • Changelog
    • Glossary
  • GitHub
  • Getting started
  • Tutorials
  • How-to guides
  • Explanation
  • Algorithms
  • API reference
  • History
  • Developer guide
  • Architecture Decision Records
  • Roadmap
  • How to cite
  • Changelog
  • Glossary
  • GitHub

Section Navigation

Project

  • Plan: the short roadmap
  • Contributing
  • The framework: the update template in code
  • The conformance kit and the algorithm tooling
  • API review checklist
  • Writing documentation
  • Parity harness
  • Robustness checks: sanitizers, fuzzers, mutation checks, long property runs
  • Benchmark suites and release certificates
  • Provenance and copyright holders
  • Labels
  • Repository settings (lead maintainer)
  • Reserving dyng on PyPI (checkpoint A3)
  • Wheels, the sdist and the release workflow
  • Release process
  • Python gaps
  • Milestone retrospectives
    • Retrospective: INT1 (integration of M1b and M4)
    • Retrospective: M1a (walking skeleton, CPU sssp)
    • Retrospective: M1b (CUDA sssp, CUDA core, performance harness and gates)
    • Retrospective: M2a (cycle_count on the CPU backends)
    • Retrospective: M2b (merge of M2a, cycle_count on CUDA)
    • Retrospective: M3 (framework extraction, conformance kit, 0.1 API freeze)
    • Retrospective: M4 (GitHub repository and project infrastructure)
    • Retrospective: M5 (the Python package, the CLI and the 0.1 documentation)
    • Retrospective M6a: the CUDA plugin wheels (dyng-cu12, dyng-cu13)
    • Retrospective: M6b (hardening for 0.2.0)
    • Retrospective: M7 (the sssp operators engine and mosp)
    • Retrospective: M8a (the ESCHER CBST store)
    • Retrospective: M8b (the hypergraph container)
    • Retrospective: R010 (release preparation for 0.1.0rc1)
    • Retrospective: R011 (the final-release pull request for 0.1.0)
    • Retrospective: R012 (the tag day of 0.1.0)
    • Retrospective: R020 (release preparation for 0.2.0rc1)
    • Retrospective: R021 (the final-release pull request for 0.2.0)

Design

  • API sketches of the later algorithms
    • Sketch: mosp (0.2)
    • Sketch: hypergraph and hyperedge_batch (0.3)
    • Sketch: triad_count (0.3)
    • Sketch: label_propagation (0.4)
    • Sketch: hyper_sssp (0.4)
  • Developer guide
  • Provenance and copyright holders

Provenance and copyright holders#

Where the code of dynG comes from, who holds copyright in it, and on what basis it is published under Apache-2.0. The file headers say it per file; this page says it per source. The license decision is ADR 0002 (ADR 0002: License and credit); the approvals are logged in GOVERNANCE.md.

Basis for publishing ported code#

None of the six original research repositories carries a license, so publishing code derived from them under Apache-2.0 is a relicensing by their copyright holders. At the approval of the plan (2026-09-27) the lead maintainer recorded that:

  • the university’s IP office asked for the code to be made public, so IP clearance is done (decision O26);

  • written consent e-mails from co-authors are not needed, because the code was written by the lead maintainer (the table below), and ports may be published as soon as they pass their gates (decision A5);

  • the originals’ git histories are not imported (decision O22); provenance is kept by the per-file headers // Derived from <repo>@<commit>:<path> (checked by ci/provenance_check.py) and by parity/references.toml.

The original repositories#

Counts are of the commits reachable from the pinned commit (git log <commit> in the original, 2026-09-27). Every original is public under https://github.com/SMShovan/<repository>.

Repository @ pinned commit

Algorithm in dynG

Commits (first - last)

Commit identities

AI-assisted commits

MOSP-OpenMP @ c352151

sssp (CPU), mosp

59 (2023-09 - 2026-09)

S M Shovan (as “S M Shovan” and “SMShovan”): 59

31

MOSP-CUDA @ e220ee2

sssp (CUDA), mosp

35 (2025-08 - 2026-09)

S M Shovan: 34; placeholder CUDA <user@example.com>: 1

33

CycleEnumeration-GPU @ 0a976ad

cycle_count

110 (2026-05 - 2026-09)

S M Shovan: 110

35

ESCHER-GPU @ abcf9b2

hypergraph store, triad_count

80 (2024-06 - 2026-09)

S M Shovan (as “S M Shovan”, “SMShovan” and a university cluster account): 66; placeholder: 14

34

MOSP_ESCHER @ 4b86159

hyper_sssp, hypergraph store

51 (2026-04 - 2026-09)

S M Shovan (as “S M Shovan” and “S. M. Shovan”): 51

50

LabelPropagation-CUDA @ a276a3a

label_propagation

63 (2024-07 - 2026-09)

S M Shovan (as “S M Shovan”, “SMShovan” and a university cluster account): 56; placeholder: 7

37

  • Placeholder identity. 22 commits (14 in ESCHER-GPU, 7 in LabelPropagation-CUDA, 1 in MOSP-CUDA) carry the unconfigured identity CUDA <user@example.com>. The lead maintainer confirmed (2026-09-27) that they were made by the author or by an AI coding assistant working on the author’s behalf; they are credited to S M Shovan (AUTHORS.md), and the placeholder is not a person.

  • AI-assisted commits carry a Co-Authored-By trailer naming the AI coding assistant (the fixes of 2026 before the port). The IP office’s answer covers the code as it is.

  • Code written outside git. The papers list co-authors (AUTHORS.md, CITATION.cff). For TruCy / DynTruCy (CycleEnumeration-GPU), Arindam Khanda is a co-first author; whether any of the code was written by a co-author outside the recorded commits is to be confirmed by the lead maintainer. Until then, co-authors are credited in AUTHORS.md as research collaborators, not as authors of the code.

  • The cluster account’s e-mail address and the host names of the originals’ histories are not repeated here (the repository never records host names or personal paths).

Which dynG files derive from each original: git grep -l "Derived from <repository>@". ci/provenance_check.py fails when a library or tool source (cpp/src, cpp/include, tools) names an original’s function, class or kernel (its SYMBOLS list) without such a line. For the ESCHER CBST store the list is derived from the explicit renames of parity/escher_port/rename_map.toml (every original identifier the transplant renamed), plus the dynG names of the port’s kernels and internal free functions (*_kernel, construct_cbst, walk_chain, compact_cbst, …), so port code moved out of cpp/src/hypergraph/escher under its dynG names still needs its line; the types a caller of the store names (cbst_store, cbst_context, …) are not in the list (ci/tests/test_provenance_check.py). Test sources are outside the check’s scope (harness code names the originals’ functions to describe their traces); a test that ports an original’s scenarios carries the line by convention (for example the CBST scenario tests under cpp/tests/hypergraph/escher and cpp/tests/parity/escher).

The ESCHER CBST store (cpp/src/hypergraph/escher, M8a) is a transplant of ESCHER-GPU@abcf9b2’s store that can be regenerated from the original: parity/escher_port/transplant.py reads the pinned commit, applies the rename map parity/escher_port/rename_map.toml (every renamed identifier, original to dynG) and the listed manual hunks (manual_hunks.patch), and transplant.py --check --rev <c1> compares the result with the first port commit (ADR 0038). The later commits each apply one class of mechanical change (parity/results/M8a.md, the merge-step table).

Third-party code#

No third-party code is copied into the repository. Build-time dependencies (GoogleTest, CPM.cmake and, with CUDA, CCCL from the toolkit) are fetched or found at a pinned version and keep their own licenses. The Code of Conduct is the Contributor Covenant 3.0 (CC BY-SA 4.0; REUSE.toml, LICENSES/CC-BY-SA-4.0.txt).

If code whose copyright is held outside The dynG Authors ever has to be copied in, it goes to third_party/<name>/ with its own license text, keeps its original copyright and license notices (an extra SPDX-FileCopyrightText line or a REUSE.toml annotation, and the license in LICENSES/), gets a NOTICE line only if its license requires one, and gets a row here:

Directory

Origin (URL @ commit)

Copyright holders

License

Why it is copied

(none)

previous

Benchmark suites and release certificates

next

Labels

On this page
  • Basis for publishing ported code
  • The original repositories
  • Third-party code
Edit on GitHub

© Copyright 2026, The dynG Authors.

Created using Sphinx 8.2.3.

Built with the PyData Sphinx Theme 0.22.0.