medium-modulation 0.1.0__tar.gz → 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- medium_modulation-1.0.0/.gitattributes +2 -0
- medium_modulation-1.0.0/.github/ISSUE_TEMPLATE/bug_report.md +35 -0
- medium_modulation-1.0.0/.github/ISSUE_TEMPLATE/feature_request.md +29 -0
- medium_modulation-1.0.0/.github/PULL_REQUEST_TEMPLATE.md +28 -0
- medium_modulation-1.0.0/.github/workflows/ci.yml +63 -0
- medium_modulation-1.0.0/.github/workflows/release.yml +121 -0
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/.gitignore +22 -22
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/.pre-commit-config.yaml +17 -17
- medium_modulation-1.0.0/.zenodo.json +33 -0
- medium_modulation-1.0.0/CHANGELOG.md +24 -0
- medium_modulation-1.0.0/CONTRIBUTING.md +47 -0
- medium_modulation-1.0.0/LICENSE +12 -0
- medium_modulation-1.0.0/LICENSE-CODE +214 -0
- medium_modulation-1.0.0/LICENSE-DOCS +34 -0
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/PKG-INFO +34 -8
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/README.md +95 -72
- medium_modulation-1.0.0/README_QUICKSTART.md +52 -0
- medium_modulation-1.0.0/RELEASE_GUIDE.md +42 -0
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/docs/cli.md +88 -88
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/docs/index.md +37 -37
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/docs/templates.md +111 -111
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/domains.yaml +5 -5
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/mkdocs.yml +43 -43
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/pyproject.toml +55 -54
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/src/medium_modulation/__init__.py +7 -7
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/src/medium_modulation/cli.py +80 -80
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/src/medium_modulation/core.py +75 -75
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/src/medium_modulation/entropy_table_bridge.py +42 -42
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/tests/test_bridge.py +68 -68
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/tests/test_cli.py +70 -70
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/tests/test_core.py +99 -99
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/uv.lock +1713 -1713
- medium_modulation-0.1.0/.github/workflows/ci.yml +0 -48
- medium_modulation-0.1.0/LICENSE +0 -21
- {medium_modulation-0.1.0 → medium_modulation-1.0.0}/tests/__init__.py +0 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Report something that isn't working as expected
|
|
4
|
+
title: "[BUG] "
|
|
5
|
+
labels: bug
|
|
6
|
+
assignees: ""
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Description
|
|
10
|
+
|
|
11
|
+
A clear and concise description of the bug.
|
|
12
|
+
|
|
13
|
+
## Steps to reproduce
|
|
14
|
+
|
|
15
|
+
1. ...
|
|
16
|
+
2. ...
|
|
17
|
+
3. ...
|
|
18
|
+
|
|
19
|
+
## Expected behavior
|
|
20
|
+
|
|
21
|
+
What you expected to happen.
|
|
22
|
+
|
|
23
|
+
## Actual behavior
|
|
24
|
+
|
|
25
|
+
What actually happened (include full error messages / tracebacks if any).
|
|
26
|
+
|
|
27
|
+
## Environment
|
|
28
|
+
|
|
29
|
+
- Package version: (`pip show medium-modulation` or `git describe --tags`)
|
|
30
|
+
- Python version:
|
|
31
|
+
- OS:
|
|
32
|
+
|
|
33
|
+
## Additional context
|
|
34
|
+
|
|
35
|
+
Anything else relevant — logs, screenshots, related issues.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Suggest a new feature, module, or enhancement
|
|
4
|
+
title: "[FEATURE] "
|
|
5
|
+
labels: enhancement
|
|
6
|
+
assignees: ""
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Summary
|
|
10
|
+
|
|
11
|
+
A clear and concise description of the feature.
|
|
12
|
+
|
|
13
|
+
## Motivation
|
|
14
|
+
|
|
15
|
+
Why is this needed? What problem does it solve, or what new capability
|
|
16
|
+
does it enable within the GenesisAeon ecosystem?
|
|
17
|
+
|
|
18
|
+
## Proposed approach
|
|
19
|
+
|
|
20
|
+
How might this be implemented? (Sketches, pseudocode, references to
|
|
21
|
+
related GenesisAeon packages are welcome.)
|
|
22
|
+
|
|
23
|
+
## Alternatives considered
|
|
24
|
+
|
|
25
|
+
Any alternative approaches you've thought about.
|
|
26
|
+
|
|
27
|
+
## Additional context
|
|
28
|
+
|
|
29
|
+
Links to relevant papers, prior discussion, or related issues/PRs.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
## Summary
|
|
2
|
+
|
|
3
|
+
What does this PR do, in one or two sentences?
|
|
4
|
+
|
|
5
|
+
## Related issue(s)
|
|
6
|
+
|
|
7
|
+
Closes #...
|
|
8
|
+
|
|
9
|
+
## Type of change
|
|
10
|
+
|
|
11
|
+
- [ ] Bug fix
|
|
12
|
+
- [ ] New feature
|
|
13
|
+
- [ ] Breaking change (public API)
|
|
14
|
+
- [ ] Documentation
|
|
15
|
+
- [ ] Tooling / CI / release process
|
|
16
|
+
- [ ] Dependency update
|
|
17
|
+
|
|
18
|
+
## Checklist
|
|
19
|
+
|
|
20
|
+
- [ ] Tests added/updated and passing locally (`pytest`)
|
|
21
|
+
- [ ] `CHANGELOG.md` updated under `## [Unreleased]`
|
|
22
|
+
- [ ] Documentation updated (README, docstrings, notebooks if relevant)
|
|
23
|
+
- [ ] If this touches scientific claims/predictions: sources cited and
|
|
24
|
+
speculative vs. validated status is clear
|
|
25
|
+
|
|
26
|
+
## Additional notes
|
|
27
|
+
|
|
28
|
+
Anything reviewers should know.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main", "master", "claude/**"]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: ["main", "master"]
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
lint:
|
|
15
|
+
name: Lint (ruff + mypy)
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
- uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: "3.11"
|
|
22
|
+
- name: Install dev dependencies
|
|
23
|
+
run: pip install -e ".[dev]"
|
|
24
|
+
- name: Run ruff
|
|
25
|
+
run: ruff check src tests
|
|
26
|
+
- name: Run mypy
|
|
27
|
+
run: mypy src
|
|
28
|
+
|
|
29
|
+
test:
|
|
30
|
+
name: Tests (Python ${{ matrix.python-version }})
|
|
31
|
+
runs-on: ubuntu-latest
|
|
32
|
+
strategy:
|
|
33
|
+
fail-fast: false
|
|
34
|
+
matrix:
|
|
35
|
+
python-version: ["3.11", "3.12"]
|
|
36
|
+
steps:
|
|
37
|
+
- uses: actions/checkout@v4
|
|
38
|
+
- uses: actions/setup-python@v5
|
|
39
|
+
with:
|
|
40
|
+
python-version: ${{ matrix.python-version }}
|
|
41
|
+
- name: Install dependencies
|
|
42
|
+
run: pip install -e ".[dev]"
|
|
43
|
+
- name: Run pytest with coverage
|
|
44
|
+
run: pytest --cov=src --cov-report=xml
|
|
45
|
+
- name: Upload coverage
|
|
46
|
+
if: matrix.python-version == '3.11'
|
|
47
|
+
uses: codecov/codecov-action@v4
|
|
48
|
+
with:
|
|
49
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
50
|
+
files: coverage.xml
|
|
51
|
+
|
|
52
|
+
docs:
|
|
53
|
+
name: Docs (mkdocs --strict)
|
|
54
|
+
runs-on: ubuntu-latest
|
|
55
|
+
steps:
|
|
56
|
+
- uses: actions/checkout@v4
|
|
57
|
+
- uses: actions/setup-python@v5
|
|
58
|
+
with:
|
|
59
|
+
python-version: "3.11"
|
|
60
|
+
- name: Install docs dependencies
|
|
61
|
+
run: pip install -e ".[docs]"
|
|
62
|
+
- name: Build docs
|
|
63
|
+
run: mkdocs build --strict
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*.*.*"
|
|
7
|
+
- "v*.*.*-rc*"
|
|
8
|
+
- "v*.*.*-alpha*"
|
|
9
|
+
- "v*.*.*-beta*"
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: write
|
|
13
|
+
id-token: write # for PyPI trusted publishing, if configured
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
build:
|
|
17
|
+
name: Build distribution
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
with:
|
|
22
|
+
fetch-depth: 0
|
|
23
|
+
|
|
24
|
+
- name: Set up Python
|
|
25
|
+
uses: actions/setup-python@v5
|
|
26
|
+
with:
|
|
27
|
+
python-version: "3.12"
|
|
28
|
+
|
|
29
|
+
- name: Install build tooling
|
|
30
|
+
run: python -m pip install --upgrade pip build
|
|
31
|
+
|
|
32
|
+
- name: Build sdist and wheel
|
|
33
|
+
run: python -m build
|
|
34
|
+
|
|
35
|
+
- name: Upload build artifacts
|
|
36
|
+
uses: actions/upload-artifact@v4
|
|
37
|
+
with:
|
|
38
|
+
name: dist
|
|
39
|
+
path: dist/
|
|
40
|
+
|
|
41
|
+
test:
|
|
42
|
+
name: Run test suite
|
|
43
|
+
runs-on: ubuntu-latest
|
|
44
|
+
steps:
|
|
45
|
+
- uses: actions/checkout@v4
|
|
46
|
+
|
|
47
|
+
- name: Set up Python
|
|
48
|
+
uses: actions/setup-python@v5
|
|
49
|
+
with:
|
|
50
|
+
python-version: "3.12"
|
|
51
|
+
|
|
52
|
+
- name: Install package with dev/test extras
|
|
53
|
+
run: |
|
|
54
|
+
python -m pip install --upgrade pip
|
|
55
|
+
if python -c "import tomllib" 2>/dev/null; then :; fi
|
|
56
|
+
pip install -e ".[dev]" 2>/dev/null || pip install -e ".[test]" 2>/dev/null || pip install -e "."
|
|
57
|
+
pip install pytest pytest-cov
|
|
58
|
+
|
|
59
|
+
- name: Run tests
|
|
60
|
+
run: pytest -q || pytest -q --no-header
|
|
61
|
+
|
|
62
|
+
publish-canary:
|
|
63
|
+
name: Publish canary (TestPyPI + pre-release)
|
|
64
|
+
needs: [build, test]
|
|
65
|
+
if: contains(github.ref_name, '-rc') || contains(github.ref_name, '-alpha') || contains(github.ref_name, '-beta')
|
|
66
|
+
runs-on: ubuntu-latest
|
|
67
|
+
environment: testpypi
|
|
68
|
+
steps:
|
|
69
|
+
- uses: actions/download-artifact@v4
|
|
70
|
+
with:
|
|
71
|
+
name: dist
|
|
72
|
+
path: dist/
|
|
73
|
+
|
|
74
|
+
- name: Publish to TestPyPI
|
|
75
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
76
|
+
with:
|
|
77
|
+
repository-url: https://test.pypi.org/legacy/
|
|
78
|
+
password: ${{ secrets.TEST_PYPI_API_TOKEN }}
|
|
79
|
+
skip-existing: true
|
|
80
|
+
|
|
81
|
+
- name: Create GitHub pre-release
|
|
82
|
+
uses: softprops/action-gh-release@v2
|
|
83
|
+
with:
|
|
84
|
+
files: dist/*
|
|
85
|
+
prerelease: true
|
|
86
|
+
generate_release_notes: true
|
|
87
|
+
|
|
88
|
+
publish-production:
|
|
89
|
+
name: Publish production (PyPI + release + Zenodo archive)
|
|
90
|
+
needs: [build, test]
|
|
91
|
+
if: ${{ !contains(github.ref_name, '-rc') && !contains(github.ref_name, '-alpha') && !contains(github.ref_name, '-beta') }}
|
|
92
|
+
runs-on: ubuntu-latest
|
|
93
|
+
environment: pypi
|
|
94
|
+
steps:
|
|
95
|
+
- uses: actions/download-artifact@v4
|
|
96
|
+
with:
|
|
97
|
+
name: dist
|
|
98
|
+
path: dist/
|
|
99
|
+
|
|
100
|
+
# TODO: if this repo prefers PyPI Trusted Publishing (OIDC, no stored
|
|
101
|
+
# token), replace the `password:` line below with the trusted-publishing
|
|
102
|
+
# form of pypa/gh-action-pypi-publish.
|
|
103
|
+
- name: Publish to PyPI
|
|
104
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
105
|
+
with:
|
|
106
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
107
|
+
skip-existing: true
|
|
108
|
+
|
|
109
|
+
- name: Create GitHub Release
|
|
110
|
+
uses: softprops/action-gh-release@v2
|
|
111
|
+
with:
|
|
112
|
+
files: dist/*
|
|
113
|
+
prerelease: false
|
|
114
|
+
generate_release_notes: true
|
|
115
|
+
|
|
116
|
+
# NOTE: Zenodo archival of this GitHub Release happens automatically
|
|
117
|
+
# IF this repo has Zenodo-GitHub integration enabled at
|
|
118
|
+
# https://zenodo.org/account/settings/github/ (a per-repo, per-owner
|
|
119
|
+
# OAuth toggle on zenodo.org — cannot be set from a workflow file).
|
|
120
|
+
# Once enabled, every GitHub Release like this one mints/updates a
|
|
121
|
+
# Zenodo DOI automatically using the .zenodo.json metadata in this repo.
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
# Python
|
|
2
|
-
__pycache__/
|
|
3
|
-
*.py[cod]
|
|
4
|
-
*.egg-info/
|
|
5
|
-
.eggs/
|
|
6
|
-
dist/
|
|
7
|
-
build/
|
|
8
|
-
.venv/
|
|
9
|
-
.uv/
|
|
10
|
-
|
|
11
|
-
# Testing
|
|
12
|
-
.coverage
|
|
13
|
-
htmlcov/
|
|
14
|
-
.pytest_cache/
|
|
15
|
-
|
|
16
|
-
# Docs
|
|
17
|
-
site/
|
|
18
|
-
|
|
19
|
-
# Editors
|
|
20
|
-
.vscode/
|
|
21
|
-
.idea/
|
|
22
|
-
*.swp
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.egg-info/
|
|
5
|
+
.eggs/
|
|
6
|
+
dist/
|
|
7
|
+
build/
|
|
8
|
+
.venv/
|
|
9
|
+
.uv/
|
|
10
|
+
|
|
11
|
+
# Testing
|
|
12
|
+
.coverage
|
|
13
|
+
htmlcov/
|
|
14
|
+
.pytest_cache/
|
|
15
|
+
|
|
16
|
+
# Docs
|
|
17
|
+
site/
|
|
18
|
+
|
|
19
|
+
# Editors
|
|
20
|
+
.vscode/
|
|
21
|
+
.idea/
|
|
22
|
+
*.swp
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
repos:
|
|
2
|
-
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
3
|
-
rev: v0.6.0
|
|
4
|
-
hooks:
|
|
5
|
-
- id: ruff
|
|
6
|
-
args: [--fix]
|
|
7
|
-
- id: ruff-format
|
|
8
|
-
|
|
9
|
-
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
10
|
-
rev: v4.6.0
|
|
11
|
-
hooks:
|
|
12
|
-
- id: trailing-whitespace
|
|
13
|
-
- id: end-of-file-fixer
|
|
14
|
-
- id: check-yaml
|
|
15
|
-
- id: check-toml
|
|
16
|
-
- id: check-merge-conflict
|
|
17
|
-
- id: debug-statements
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
3
|
+
rev: v0.6.0
|
|
4
|
+
hooks:
|
|
5
|
+
- id: ruff
|
|
6
|
+
args: [--fix]
|
|
7
|
+
- id: ruff-format
|
|
8
|
+
|
|
9
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
10
|
+
rev: v4.6.0
|
|
11
|
+
hooks:
|
|
12
|
+
- id: trailing-whitespace
|
|
13
|
+
- id: end-of-file-fixer
|
|
14
|
+
- id: check-yaml
|
|
15
|
+
- id: check-toml
|
|
16
|
+
- id: check-merge-conflict
|
|
17
|
+
- id: debug-statements
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "medium-modulation — P-MEDIUM: Resonant medium between S∝A and S∝V – fractal modulation operators, resonance spectra and tunable interference for controlled information propagation.",
|
|
3
|
+
"description": "<p>Resonant medium between S∝A and S∝V – fractal modulation operators, resonance spectra and tunable interference for controlled information propagation.</p><p>Part of the <strong>GenesisAeon</strong> ecosystem (P-MEDIUM, domain: fractal modulation (S_A/S_V → coherent emergence)).</p><p>Dual-licensed: source code under GPL-3.0-or-later, documentation under CC BY 4.0.</p><p>See <a href=\"https://github.com/GenesisAeon/medium-modulation\">github.com/GenesisAeon/medium-modulation</a> for source, documentation, and reproducibility notebooks.</p>",
|
|
4
|
+
"creators": [
|
|
5
|
+
{
|
|
6
|
+
"name": "Römer, Johann",
|
|
7
|
+
"affiliation": "Independent Researcher / MOR Research Collective"
|
|
8
|
+
}
|
|
9
|
+
],
|
|
10
|
+
"license": "GPL-3.0-or-later",
|
|
11
|
+
"upload_type": "software",
|
|
12
|
+
"access_right": "open",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"GenesisAeon",
|
|
15
|
+
"P-MEDIUM",
|
|
16
|
+
"fractal modulation (S_A/S_V → coherent emergence)",
|
|
17
|
+
"UTAC",
|
|
18
|
+
"CREP",
|
|
19
|
+
"open science"
|
|
20
|
+
],
|
|
21
|
+
"related_identifiers": [
|
|
22
|
+
{
|
|
23
|
+
"identifier": "10.5281/zenodo.19645351",
|
|
24
|
+
"relation": "isPartOf",
|
|
25
|
+
"resource_type": "publication-article",
|
|
26
|
+
"scheme": "doi"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"version": "1.0.0",
|
|
30
|
+
"communities": [
|
|
31
|
+
{ "identifier": "genesisaeon" }
|
|
32
|
+
]
|
|
33
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [1.0.0] - 2026
|
|
11
|
+
### Added
|
|
12
|
+
- Initial v1.0.0 release as part of the GenesisAeon ecosystem-wide 1.0.0
|
|
13
|
+
milestone.
|
|
14
|
+
- Standardized release tooling: `.zenodo.json`, GitHub Actions release
|
|
15
|
+
workflow (`.github/workflows/release.yml`), `RELEASE_GUIDE.md`,
|
|
16
|
+
`CONTRIBUTING.md`, issue/PR templates.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- Project metadata (`pyproject.toml`) normalized: version bumped to
|
|
20
|
+
1.0.0, `requires-python`, and GenesisAeon-ecosystem dependency pins
|
|
21
|
+
updated to `entropy-governance>=1.0.0`, `entropy-table>=2.0.0`,
|
|
22
|
+
`implosive-genesis>=1.0.0`.
|
|
23
|
+
- Re-licensed from MIT to a dual license: source code under
|
|
24
|
+
GPL-3.0-or-later, documentation under CC BY 4.0.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Thanks for your interest in contributing to this GenesisAeon ecosystem
|
|
4
|
+
package!
|
|
5
|
+
|
|
6
|
+
## Getting started
|
|
7
|
+
|
|
8
|
+
1. Fork and clone the repository.
|
|
9
|
+
2. Create a virtual environment: `python -m venv .venv && source .venv/bin/activate`
|
|
10
|
+
(or `.venv\Scripts\activate` on Windows).
|
|
11
|
+
3. Install in editable mode with dev dependencies:
|
|
12
|
+
`pip install -e ".[dev]"`.
|
|
13
|
+
4. Run the test suite: `pytest`.
|
|
14
|
+
|
|
15
|
+
## Code style
|
|
16
|
+
|
|
17
|
+
- Format and lint with `ruff check` / `ruff format`.
|
|
18
|
+
- Type-check with `mypy`.
|
|
19
|
+
- Keep functions documented with docstrings (NumPy style, matching the
|
|
20
|
+
existing codebase).
|
|
21
|
+
|
|
22
|
+
## Licensing of contributions
|
|
23
|
+
|
|
24
|
+
This repository is dual-licensed: source code under GPL-3.0-or-later
|
|
25
|
+
(see `LICENSE-CODE`), documentation under CC BY 4.0 (see `LICENSE-DOCS`).
|
|
26
|
+
By submitting a pull request, you agree that your contribution is
|
|
27
|
+
licensed under the same terms as the file(s) you are modifying.
|
|
28
|
+
|
|
29
|
+
## Pull requests
|
|
30
|
+
|
|
31
|
+
- One logical change per PR.
|
|
32
|
+
- Add or update tests for any behavioral change.
|
|
33
|
+
- Update `CHANGELOG.md` under an `## [Unreleased]` section.
|
|
34
|
+
- Fill out the PR template (`.github/PULL_REQUEST_TEMPLATE.md`).
|
|
35
|
+
|
|
36
|
+
## Reporting issues
|
|
37
|
+
|
|
38
|
+
Please use the issue templates in `.github/ISSUE_TEMPLATE/` — they help us
|
|
39
|
+
triage bug reports vs. feature requests quickly.
|
|
40
|
+
|
|
41
|
+
## Scientific claims
|
|
42
|
+
|
|
43
|
+
This is part of a research framework. If your contribution touches any
|
|
44
|
+
scientific model, prediction, or benchmark (e.g. CREP `Γ` values, UTAC
|
|
45
|
+
parameters, falsifiable predictions), please:
|
|
46
|
+
- Cite the source (paper, dataset, or prior GenesisAeon Zenodo record).
|
|
47
|
+
- Clearly mark speculative vs. validated claims.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
This repository is dual-licensed:
|
|
2
|
+
|
|
3
|
+
- Source code (everything under src/, tests/, and other code files) is
|
|
4
|
+
licensed under the GNU General Public License v3.0 or later (GPL-3.0-or-later).
|
|
5
|
+
See LICENSE-CODE for the full text.
|
|
6
|
+
|
|
7
|
+
- Documentation (README.md, README_QUICKSTART.md, docs/, and any
|
|
8
|
+
rendered MkDocs site) is licensed under the Creative Commons
|
|
9
|
+
Attribution 4.0 International License (CC BY 4.0).
|
|
10
|
+
See LICENSE-DOCS for the full text.
|
|
11
|
+
|
|
12
|
+
Copyright (C) 2026 Johann Römer / GenesisAeon Project
|