File size: 2,320 Bytes
31226fd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
"""Public naming constants and backwards-compatible environment translation.

Constants are checked against project_identity.json. Neither public branding nor
an environment alias changes serialized neuron IDs, data or scientific status.
"""

from __future__ import annotations

from collections.abc import Mapping

PROJECT_NAME = "MHRN"
PROJECT_TITLE = "Multi-Scale Homeostatic Recurrence Network"
PROJECT_SUBTITLE_DE = "Mehrskaliges homöostatisches Rekurrenznetzwerk"
PUBLICATION_TITLE = "Recursive Epistemics in Embodied Spiking Neural Architectures: A Framework for Delegated Agency and Multi-Scale Recurrence"
PUBLICATION_SUBTITLE_DE = "Rekursive Epistemik in verkörperten spikenden neuronalen Architekturen: Ein Framework für delegierte Handlungsmacht und mehrskalige Rekurrenz"
AUTHOR_DISPLAY_NAME = "Thomas Heisig"
AUTHOR_GIVEN_NAMES = "Thomas"
AUTHOR_FAMILY_NAME = "Heisig"
AUTHOR_ORCID = "0009-0002-9589-1872"
AUTHOR_ORCID_URI = f"https://orcid.org/{AUTHOR_ORCID}"
PROJECT_OSF_URI = "https://osf.io/p34uq/"


def public_author_identity() -> dict[str, str]:
    """Return the public author identity used for attribution linking.

    Private contact details from external identity providers are deliberately
    excluded from this project-level identity record.
    """
    return {
        "display_name": AUTHOR_DISPLAY_NAME,
        "given_names": AUTHOR_GIVEN_NAMES,
        "family_name": AUTHOR_FAMILY_NAME,
        "orcid": AUTHOR_ORCID,
        "orcid_uri": AUTHOR_ORCID_URI,
    }


def public_project_resources() -> dict[str, str]:
    """Return public project resources used for provenance linking."""
    return {
        "github": "https://github.com/Thomas-Heisig/MHRN",
        "osf": PROJECT_OSF_URI,
    }


def legacy_environment_aliases(environment: Mapping[str, str]) -> dict[str, str]:
    """New prefix takes precedence, including explicit empty strings.

    Returned keys are only compatibility aliases. Existing legacy-only settings
    remain intact. Values are not logged and permission/safety defaults do not
    change. Call at a process entrypoint before importing runtime configuration.
    """
    return {
        "BRAIN5D_" + key.removeprefix("MHRN_"): value
        for key, value in environment.items()
        if key.startswith("MHRN_") and len(key) > len("MHRN_")
    }