geometric-function-atlas 0.1.1__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.
Files changed (51) hide show
  1. geometric_function_atlas-0.1.1/.github/workflows/ci.yml +60 -0
  2. geometric_function_atlas-0.1.1/CHANGELOG.md +36 -0
  3. geometric_function_atlas-0.1.1/CITATION.cff +25 -0
  4. geometric_function_atlas-0.1.1/LICENSE +21 -0
  5. geometric_function_atlas-0.1.1/MANIFEST.in +11 -0
  6. geometric_function_atlas-0.1.1/PKG-INFO +149 -0
  7. geometric_function_atlas-0.1.1/README.md +119 -0
  8. geometric_function_atlas-0.1.1/docs/INSTALL.md +68 -0
  9. geometric_function_atlas-0.1.1/docs/PROVENANCE.md +61 -0
  10. geometric_function_atlas-0.1.1/docs/RELEASING.md +70 -0
  11. geometric_function_atlas-0.1.1/docs/RESULT_CONTRACT.md +110 -0
  12. geometric_function_atlas-0.1.1/docs/ROADMAP.md +83 -0
  13. geometric_function_atlas-0.1.1/docs/WEB_PARITY.md +51 -0
  14. geometric_function_atlas-0.1.1/pyproject.toml +64 -0
  15. geometric_function_atlas-0.1.1/scripts/check_clean_install.py +161 -0
  16. geometric_function_atlas-0.1.1/scripts/check_distribution.py +91 -0
  17. geometric_function_atlas-0.1.1/scripts/check_uv_tool_install.py +93 -0
  18. geometric_function_atlas-0.1.1/scripts/install.ps1 +30 -0
  19. geometric_function_atlas-0.1.1/scripts/install.sh +32 -0
  20. geometric_function_atlas-0.1.1/setup.cfg +4 -0
  21. geometric_function_atlas-0.1.1/src/geometric_function_atlas/__init__.py +46 -0
  22. geometric_function_atlas-0.1.1/src/geometric_function_atlas/__main__.py +5 -0
  23. geometric_function_atlas-0.1.1/src/geometric_function_atlas/catalog.py +98 -0
  24. geometric_function_atlas-0.1.1/src/geometric_function_atlas/cli.py +282 -0
  25. geometric_function_atlas-0.1.1/src/geometric_function_atlas/coefficients.py +206 -0
  26. geometric_function_atlas-0.1.1/src/geometric_function_atlas/contracts.py +1334 -0
  27. geometric_function_atlas-0.1.1/src/geometric_function_atlas/counterexamples.py +308 -0
  28. geometric_function_atlas-0.1.1/src/geometric_function_atlas/fekete_szego.py +325 -0
  29. geometric_function_atlas-0.1.1/src/geometric_function_atlas/implementation_registry.py +37 -0
  30. geometric_function_atlas-0.1.1/src/geometric_function_atlas/models.py +261 -0
  31. geometric_function_atlas-0.1.1/src/geometric_function_atlas/py.typed +0 -0
  32. geometric_function_atlas-0.1.1/src/geometric_function_atlas/schema/error.schema.json +17 -0
  33. geometric_function_atlas-0.1.1/src/geometric_function_atlas/schema/result.schema.json +272 -0
  34. geometric_function_atlas-0.1.1/src/geometric_function_atlas/version.py +8 -0
  35. geometric_function_atlas-0.1.1/src/geometric_function_atlas.egg-info/PKG-INFO +149 -0
  36. geometric_function_atlas-0.1.1/src/geometric_function_atlas.egg-info/SOURCES.txt +49 -0
  37. geometric_function_atlas-0.1.1/src/geometric_function_atlas.egg-info/dependency_links.txt +1 -0
  38. geometric_function_atlas-0.1.1/src/geometric_function_atlas.egg-info/entry_points.txt +3 -0
  39. geometric_function_atlas-0.1.1/src/geometric_function_atlas.egg-info/requires.txt +12 -0
  40. geometric_function_atlas-0.1.1/src/geometric_function_atlas.egg-info/top_level.txt +1 -0
  41. geometric_function_atlas-0.1.1/tests/fixtures/counterexample_web_parity.json +59 -0
  42. geometric_function_atlas-0.1.1/tests/fixtures/fekete_szego_research_artifact.json +357 -0
  43. geometric_function_atlas-0.1.1/tests/test_catalog.py +88 -0
  44. geometric_function_atlas-0.1.1/tests/test_cli.py +168 -0
  45. geometric_function_atlas-0.1.1/tests/test_coefficients.py +88 -0
  46. geometric_function_atlas-0.1.1/tests/test_contracts.py +651 -0
  47. geometric_function_atlas-0.1.1/tests/test_counterexample_web_parity.py +34 -0
  48. geometric_function_atlas-0.1.1/tests/test_counterexamples.py +173 -0
  49. geometric_function_atlas-0.1.1/tests/test_fekete_szego.py +173 -0
  50. geometric_function_atlas-0.1.1/tests/test_installers.py +91 -0
  51. geometric_function_atlas-0.1.1/tests/test_migration_crosscheck.py +23 -0
@@ -0,0 +1,60 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ test:
14
+ name: Python ${{ matrix.python-version }}
15
+ runs-on: ubuntu-latest
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
20
+ steps:
21
+ - uses: actions/checkout@v7
22
+ - uses: actions/setup-python@v7
23
+ with:
24
+ python-version: ${{ matrix.python-version }}
25
+ - uses: astral-sh/setup-uv@v9.0.0
26
+ - run: uv sync --extra test --locked
27
+ - run: uv run --extra test python -W error -m pytest -q
28
+ - run: uv run --extra test python -m ruff check src tests scripts
29
+ - run: uv run --extra test python -m mypy src --ignore-missing-imports
30
+
31
+ distribution:
32
+ name: Distribution and managed-Python install
33
+ needs: test
34
+ runs-on: ubuntu-latest
35
+ steps:
36
+ - uses: actions/checkout@v7
37
+ - uses: actions/setup-python@v7
38
+ with:
39
+ python-version: "3.12"
40
+ - uses: astral-sh/setup-uv@v9.0.0
41
+ - run: uv sync --extra test --extra build --locked
42
+ - run: uv run --extra build python -m build
43
+ - run: uv run --extra build python -m twine check dist/*
44
+ - run: uv run python scripts/check_distribution.py dist
45
+ - run: uv run python scripts/check_clean_install.py dist/geometric_function_atlas-0.1.1-py3-none-any.whl
46
+ - run: uv run python scripts/check_uv_tool_install.py dist/geometric_function_atlas-0.1.1-py3-none-any.whl --python 3.12
47
+
48
+ windows-installer:
49
+ name: Windows PowerShell installer smoke
50
+ runs-on: windows-latest
51
+ steps:
52
+ - uses: actions/checkout@v7
53
+ - uses: astral-sh/setup-uv@v9.0.0
54
+ - name: Install local source as an isolated managed-Python tool
55
+ shell: pwsh
56
+ run: |
57
+ $env:GFA_PACKAGE_SPEC = (Get-Location).Path
58
+ $env:GFA_PYTHON_VERSION = "3.12"
59
+ ./scripts/install.ps1
60
+ gfa --version
@@ -0,0 +1,36 @@
1
+ # Changelog
2
+
3
+ All notable changes to Geometric Function Atlas are recorded here.
4
+
5
+ ## 0.1.1 — 2026-08-10
6
+
7
+ Contract-integrity repair release.
8
+
9
+ ### Fixed
10
+
11
+ - The shipped Draft 2020-12 result schema now couples exact-result evidence,
12
+ computational, verification, and failure states as strictly as the Python
13
+ validator.
14
+ - The public counterexample API rejects strings, bytes, mappings, sets, and
15
+ other non-sequence coefficient containers instead of coercing them.
16
+
17
+ ## 0.1.0 — 2026-08-10
18
+
19
+ First software release.
20
+
21
+ ### Included
22
+
23
+ - Exact Taylor coefficients for the built-in Ma–Minda generator catalog.
24
+ - Exact Ma–Minda Fekete–Szegő constants under declared assumptions.
25
+ - Certified interval re-evaluation of supplied starlikeness, Becker, and Nehari
26
+ witnesses without claiming global counterexample discovery.
27
+ - Human-readable `gfa` commands with optional versioned JSON output.
28
+ - Closed result, verification, provenance, and failure contracts.
29
+ - Python-free installation through `uv` on macOS, Linux, and Windows.
30
+ - Distribution, clean-install, managed-Python, Linux, and Windows release gates.
31
+
32
+ ### Scope
33
+
34
+ This release does not include registry search, radius-certificate replay, plots,
35
+ image or cryptography labs, mutable registry data, literature novelty decisions,
36
+ or PyPI publication. Those remain separate future phases.
@@ -0,0 +1,25 @@
1
+ cff-version: 1.2.0
2
+ title: geometric-function-atlas
3
+ message: "If you use this software, please cite the software release and the associated paper."
4
+ type: software
5
+ version: 0.1.1
6
+ date-released: 2026-08-10
7
+ authors:
8
+ - family-names: Devadiga
9
+ given-names: Prasanna
10
+ - family-names: Suneesh
11
+ given-names: Arya
12
+ - family-names: Gurumurthy
13
+ given-names: Kishan
14
+ - family-names: Devadiga
15
+ given-names: Pushparaj
16
+ - family-names: Sebastian
17
+ given-names: Asha
18
+ license: MIT
19
+ repository-code: https://github.com/Prasanna28Devadiga/geometric-function-atlas
20
+ url: https://github.com/Prasanna28Devadiga/geometric-function-atlas
21
+ keywords:
22
+ - geometric function theory
23
+ - Ma-Minda functions
24
+ - reproducible research
25
+ - certified computation
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Geometric Function Atlas contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,11 @@
1
+ include CITATION.cff
2
+ include CHANGELOG.md
3
+ include .github/workflows/ci.yml
4
+ include scripts/install.sh
5
+ include scripts/install.ps1
6
+ include scripts/check_distribution.py
7
+ include scripts/check_clean_install.py
8
+ include scripts/check_uv_tool_install.py
9
+ recursive-include docs *.md
10
+ recursive-include tests *.py *.json
11
+ recursive-include src/geometric_function_atlas/schema *.json
@@ -0,0 +1,149 @@
1
+ Metadata-Version: 2.4
2
+ Name: geometric-function-atlas
3
+ Version: 0.1.1
4
+ Summary: Reproducible computations for a geometric function theory atlas
5
+ Author: Prasanna Devadiga, Arya Suneesh, Kishan Gurumurthy, Pushparaj Devadiga, Asha Sebastian
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/Prasanna28Devadiga/geometric-function-atlas
8
+ Project-URL: Repository, https://github.com/Prasanna28Devadiga/geometric-function-atlas
9
+ Project-URL: Issues, https://github.com/Prasanna28Devadiga/geometric-function-atlas/issues
10
+ Keywords: geometric function theory,Ma-Minda,reproducible research,certified computation
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3 :: Only
15
+ Classifier: Topic :: Scientific/Engineering :: Mathematics
16
+ Requires-Python: >=3.10
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+ Requires-Dist: mpmath>=1.3
20
+ Requires-Dist: sympy>=1.12
21
+ Provides-Extra: test
22
+ Requires-Dist: jsonschema>=4.23; extra == "test"
23
+ Requires-Dist: mypy>=1.15; extra == "test"
24
+ Requires-Dist: pytest>=8; extra == "test"
25
+ Requires-Dist: ruff>=0.16; extra == "test"
26
+ Provides-Extra: build
27
+ Requires-Dist: build>=1.2; extra == "build"
28
+ Requires-Dist: twine>=5; extra == "build"
29
+ Dynamic: license-file
30
+
31
+ # geometric-function-atlas
32
+
33
+ `geometric-function-atlas` is a standalone Python package for independently reproducing and reviewing computations published by the Geometric Function Atlas.
34
+
35
+ Source repository: <https://github.com/Prasanna28Devadiga/geometric-function-atlas>
36
+
37
+ This repository is intentionally separate from the registry website and its research workspace. It provides local commands and Python functions for reproducing the website's mathematical computations. It does not contain the Flask application, deployment configuration, private review state, or mutable registry database.
38
+
39
+ ## Phase 1
40
+
41
+ The first release provides:
42
+
43
+ - a typed catalog of the Ma–Minda generators used by the paper’s exact-radius portfolio;
44
+ - exact Taylor coefficients of a generator using SymPy;
45
+ - exact Ma–Minda Fekete–Szegő constants and their derivation metadata;
46
+ - certified re-evaluation of supplied counterexample witnesses;
47
+ - versioned structured result and fail-closed verification reports;
48
+ - JSON-capable command-line output suitable for independent checks.
49
+
50
+ Later phases will expose the remaining plots, certificates, registry queries, and application labs already available on the website.
51
+
52
+ ## Install — Python is not required
53
+
54
+ The supported user installation uses `uv` as an isolated tool manager. It
55
+ downloads Python 3.12 and every runtime dependency automatically.
56
+
57
+ macOS and Linux:
58
+
59
+ ```bash
60
+ curl -LsSf https://raw.githubusercontent.com/Prasanna28Devadiga/geometric-function-atlas/main/scripts/install.sh | sh
61
+ ```
62
+
63
+ Windows PowerShell:
64
+
65
+ ```powershell
66
+ irm https://raw.githubusercontent.com/Prasanna28Devadiga/geometric-function-atlas/main/scripts/install.ps1 | iex
67
+ ```
68
+
69
+ After restarting the terminal, run `gfa --version`. Existing `uv` users can
70
+ install the GitHub release wheel directly:
71
+
72
+ ```bash
73
+ uv tool install --managed-python --python 3.12 https://github.com/Prasanna28Devadiga/geometric-function-atlas/releases/download/v0.1.1/geometric_function_atlas-0.1.1-py3-none-any.whl
74
+ ```
75
+
76
+ See `docs/INSTALL.md` for removal and maintainer installation from a local wheel.
77
+
78
+ ## Python API
79
+
80
+ ```python
81
+ from geometric_function_atlas import Generator, fekete_szego, generator_series, z
82
+
83
+ # phi(z) = 1 + sin(z) = 1 + z - z^3/6 + ...
84
+ series = generator_series("sine", order=4)
85
+ assert tuple(map(str, series.coefficients)) == (
86
+ "1", "0", "-1/6", "0"
87
+ )
88
+ print(series.to_dict())
89
+
90
+ # Exact sharp constant under the declared Ma–Minda assumptions.
91
+ result = fekete_szego("exponential", mu=0)
92
+ assert str(result.value) == "3/4"
93
+ print(result.to_dict())
94
+ ```
95
+
96
+ Custom normalized generators use preconstructed SymPy expressions; formula
97
+ strings are deliberately rejected rather than passed to an eval-based parser:
98
+
99
+ ```python
100
+ custom = Generator(
101
+ key="custom",
102
+ name="Example",
103
+ expression=1 + 2*z + 3*z**2,
104
+ citation="User supplied",
105
+ )
106
+ ```
107
+
108
+ Computations are not restricted to the built-in catalog. Analytic admissibility
109
+ of custom input remains an explicit caller assumption, and undeclared free
110
+ symbols are rejected.
111
+
112
+ ## Command line
113
+
114
+ ```bash
115
+ gfa generators
116
+ gfa coefficients sine --order 5
117
+ gfa fekete-szego exponential --mu 1/2
118
+
119
+ # Re-check the witness z=-3/4 for f(z)=z+z².
120
+ gfa verify-counterexample --coefficients "1" --point=-0.75,0
121
+ ```
122
+
123
+ The longer command name, `geometric-function-atlas`, is also supported. Add
124
+ `--json` to any command when machine-readable output is useful.
125
+
126
+ `--mu` accepts an exact signed integer or `integer/integer` fraction. Decimal
127
+ and scientific notation are rejected so untrusted short inputs cannot trigger
128
+ unbounded symbolic integer construction.
129
+
130
+ See `docs/WEB_PARITY.md` for the website-to-package checklist,
131
+ `docs/PROVENANCE.md` for claim semantics, and `docs/ROADMAP.md` for the
132
+ incremental implementation path.
133
+ The versioned result envelope, verification checks, failure states, and CLI
134
+ exit codes are specified in `docs/RESULT_CONTRACT.md`.
135
+
136
+ ## Development
137
+
138
+ ```bash
139
+ uv sync --extra test
140
+ uv run pytest
141
+ ```
142
+
143
+ ## Scientific status
144
+
145
+ Every result reports its method and evidence status. Numerical screens are never presented as proofs, computational certification is distinct from literature novelty, and bibliographic review remains a separate human process.
146
+
147
+ ## License
148
+
149
+ MIT
@@ -0,0 +1,119 @@
1
+ # geometric-function-atlas
2
+
3
+ `geometric-function-atlas` is a standalone Python package for independently reproducing and reviewing computations published by the Geometric Function Atlas.
4
+
5
+ Source repository: <https://github.com/Prasanna28Devadiga/geometric-function-atlas>
6
+
7
+ This repository is intentionally separate from the registry website and its research workspace. It provides local commands and Python functions for reproducing the website's mathematical computations. It does not contain the Flask application, deployment configuration, private review state, or mutable registry database.
8
+
9
+ ## Phase 1
10
+
11
+ The first release provides:
12
+
13
+ - a typed catalog of the Ma–Minda generators used by the paper’s exact-radius portfolio;
14
+ - exact Taylor coefficients of a generator using SymPy;
15
+ - exact Ma–Minda Fekete–Szegő constants and their derivation metadata;
16
+ - certified re-evaluation of supplied counterexample witnesses;
17
+ - versioned structured result and fail-closed verification reports;
18
+ - JSON-capable command-line output suitable for independent checks.
19
+
20
+ Later phases will expose the remaining plots, certificates, registry queries, and application labs already available on the website.
21
+
22
+ ## Install — Python is not required
23
+
24
+ The supported user installation uses `uv` as an isolated tool manager. It
25
+ downloads Python 3.12 and every runtime dependency automatically.
26
+
27
+ macOS and Linux:
28
+
29
+ ```bash
30
+ curl -LsSf https://raw.githubusercontent.com/Prasanna28Devadiga/geometric-function-atlas/main/scripts/install.sh | sh
31
+ ```
32
+
33
+ Windows PowerShell:
34
+
35
+ ```powershell
36
+ irm https://raw.githubusercontent.com/Prasanna28Devadiga/geometric-function-atlas/main/scripts/install.ps1 | iex
37
+ ```
38
+
39
+ After restarting the terminal, run `gfa --version`. Existing `uv` users can
40
+ install the GitHub release wheel directly:
41
+
42
+ ```bash
43
+ uv tool install --managed-python --python 3.12 https://github.com/Prasanna28Devadiga/geometric-function-atlas/releases/download/v0.1.1/geometric_function_atlas-0.1.1-py3-none-any.whl
44
+ ```
45
+
46
+ See `docs/INSTALL.md` for removal and maintainer installation from a local wheel.
47
+
48
+ ## Python API
49
+
50
+ ```python
51
+ from geometric_function_atlas import Generator, fekete_szego, generator_series, z
52
+
53
+ # phi(z) = 1 + sin(z) = 1 + z - z^3/6 + ...
54
+ series = generator_series("sine", order=4)
55
+ assert tuple(map(str, series.coefficients)) == (
56
+ "1", "0", "-1/6", "0"
57
+ )
58
+ print(series.to_dict())
59
+
60
+ # Exact sharp constant under the declared Ma–Minda assumptions.
61
+ result = fekete_szego("exponential", mu=0)
62
+ assert str(result.value) == "3/4"
63
+ print(result.to_dict())
64
+ ```
65
+
66
+ Custom normalized generators use preconstructed SymPy expressions; formula
67
+ strings are deliberately rejected rather than passed to an eval-based parser:
68
+
69
+ ```python
70
+ custom = Generator(
71
+ key="custom",
72
+ name="Example",
73
+ expression=1 + 2*z + 3*z**2,
74
+ citation="User supplied",
75
+ )
76
+ ```
77
+
78
+ Computations are not restricted to the built-in catalog. Analytic admissibility
79
+ of custom input remains an explicit caller assumption, and undeclared free
80
+ symbols are rejected.
81
+
82
+ ## Command line
83
+
84
+ ```bash
85
+ gfa generators
86
+ gfa coefficients sine --order 5
87
+ gfa fekete-szego exponential --mu 1/2
88
+
89
+ # Re-check the witness z=-3/4 for f(z)=z+z².
90
+ gfa verify-counterexample --coefficients "1" --point=-0.75,0
91
+ ```
92
+
93
+ The longer command name, `geometric-function-atlas`, is also supported. Add
94
+ `--json` to any command when machine-readable output is useful.
95
+
96
+ `--mu` accepts an exact signed integer or `integer/integer` fraction. Decimal
97
+ and scientific notation are rejected so untrusted short inputs cannot trigger
98
+ unbounded symbolic integer construction.
99
+
100
+ See `docs/WEB_PARITY.md` for the website-to-package checklist,
101
+ `docs/PROVENANCE.md` for claim semantics, and `docs/ROADMAP.md` for the
102
+ incremental implementation path.
103
+ The versioned result envelope, verification checks, failure states, and CLI
104
+ exit codes are specified in `docs/RESULT_CONTRACT.md`.
105
+
106
+ ## Development
107
+
108
+ ```bash
109
+ uv sync --extra test
110
+ uv run pytest
111
+ ```
112
+
113
+ ## Scientific status
114
+
115
+ Every result reports its method and evidence status. Numerical screens are never presented as proofs, computational certification is distinct from literature novelty, and bibliographic review remains a separate human process.
116
+
117
+ ## License
118
+
119
+ MIT
@@ -0,0 +1,68 @@
1
+ # Install Geometric Function Atlas
2
+
3
+ You do **not** need Python. The installer obtains `uv`, Python 3.12, and all
4
+ package dependencies, then installs the `gfa` command in an isolated environment.
5
+
6
+ ## macOS and Linux
7
+
8
+ ```bash
9
+ curl -LsSf https://raw.githubusercontent.com/Prasanna28Devadiga/geometric-function-atlas/main/scripts/install.sh | sh
10
+ ```
11
+
12
+ ## Windows PowerShell
13
+
14
+ ```powershell
15
+ irm https://raw.githubusercontent.com/Prasanna28Devadiga/geometric-function-atlas/main/scripts/install.ps1 | iex
16
+ ```
17
+
18
+ Restart the terminal once, then check the installation:
19
+
20
+ ```text
21
+ gfa --version
22
+ ```
23
+
24
+ Try a calculation:
25
+
26
+ ```bash
27
+ gfa coefficients sine --order 5
28
+ gfa fekete-szego exponential --mu 1/2
29
+ gfa verify-counterexample --coefficients "1" --point=-0.75,0
30
+ ```
31
+
32
+ ## Already have uv?
33
+
34
+ Until the package is published on PyPI, install the GitHub release wheel directly:
35
+
36
+ ```bash
37
+ uv tool install --managed-python --python 3.12 https://github.com/Prasanna28Devadiga/geometric-function-atlas/releases/download/v0.1.1/geometric_function_atlas-0.1.1-py3-none-any.whl
38
+ ```
39
+
40
+ ## Remove
41
+
42
+ ```bash
43
+ uv tool uninstall geometric-function-atlas
44
+ ```
45
+
46
+ To upgrade after a later GitHub release, rerun the installer shown above. The
47
+ installer always performs a forced replacement and verifies `gfa --version`.
48
+
49
+ ## Maintainer and local-wheel installation
50
+
51
+ The checked-in installers are permanent user-facing installation entry points,
52
+ not release-time helper scripts. Maintainers can exercise the same path against a
53
+ local wheel:
54
+
55
+ ```bash
56
+ GFA_PACKAGE_SPEC=dist/geometric_function_atlas-0.1.1-py3-none-any.whl sh scripts/install.sh
57
+ ```
58
+
59
+ PowerShell:
60
+
61
+ ```powershell
62
+ $env:GFA_PACKAGE_SPEC = "dist/geometric_function_atlas-0.1.1-py3-none-any.whl"
63
+ .\scripts\install.ps1
64
+ ```
65
+
66
+ The project does not modify or depend on an existing Python installation. No
67
+ administrator privileges, `pip`, virtual-environment activation, snapshot hash,
68
+ or internal database path is required.
@@ -0,0 +1,61 @@
1
+ # Evidence and provenance policy
2
+
3
+ ## Claim boundary
4
+
5
+ A returned number is not enough. Structured result objects and CLI records identify:
6
+
7
+ 1. the canonical mathematical problem;
8
+ 2. exact inputs and formulas;
9
+ 3. the algorithm or theorem used;
10
+ 4. declared assumptions;
11
+ 5. evidence status;
12
+ 6. source references;
13
+ 7. package and artifact versions;
14
+ 8. whether any literature-novelty claim is being made.
15
+
16
+ The versioned schema and fail-closed check semantics are specified in
17
+ `docs/RESULT_CONTRACT.md`; the shipped JSON schemas are under
18
+ `src/geometric_function_atlas/schema/`.
19
+
20
+ Low-level exact helpers may return bare SymPy expressions or tuples for use in
21
+ other symbolic programs. Their structured counterparts (`generator_series`,
22
+ the theorem result objects, and CLI JSON) carry the full record above.
23
+
24
+ ## Evidence statuses
25
+
26
+ The package will use explicit, non-overlapping statuses:
27
+
28
+ - `screened`: numerical evidence only;
29
+ - `certified_enclosure`: a machine-checkable interval containing the sharp value;
30
+ - `proven_exact_under_declared_assumptions`: exact theorem or certificate with stated assumptions;
31
+ - `disproven`: certified counterexample or contradiction to the computational proposition;
32
+ - `unresolved`: no conclusive computation.
33
+
34
+ Literature reconciliation is a separate taxonomy. A computationally proven result may be known, a candidate improvement, absent from the indexed corpus, or still under human review. “No indexed match” is never emitted as “novel.”
35
+
36
+ ## Built-in and custom generators
37
+
38
+ Built-in formulas and citations are versioned package data. Exact coefficient
39
+ operations also accept custom generators as preconstructed SymPy expressions.
40
+ String expressions are rejected because SymPy's general string parser is
41
+ eval-based; undeclared free symbols are rejected as well. For a custom generator,
42
+ the package checks only the algebraic preconditions documented by the operation;
43
+ it does not silently certify all analytic Ma–Minda admissibility hypotheses.
44
+ Structured records mark this input as `provenance: "caller_supplied"` and retain
45
+ the caller-supplied source/fixture identity explicitly; they never relabel it as
46
+ the built-in catalog.
47
+
48
+ CLI rational parameters use a bounded signed-integer or `integer/integer`
49
+ grammar. Exponent notation is intentionally unsupported, and rational
50
+ components are capped before symbolic arithmetic begins.
51
+
52
+ ## Migration from the research artifact
53
+
54
+ The original registry repository is treated as a research artifact and source of candidate algorithms/data. Code is not copied wholesale. Each migrated operation receives:
55
+
56
+ - a minimal public interface;
57
+ - independent anchor tests;
58
+ - explicit path and data injection;
59
+ - no Flask, deployment, OCR, or private-review dependency;
60
+ - a provenance note naming the originating artifact and the audit performed;
61
+ - clean wheel/sdist installation verification.
@@ -0,0 +1,70 @@
1
+ # Releasing `geometric-function-atlas`
2
+
3
+ This is the maintained release procedure. The first GitHub software release is
4
+ separate from PyPI publication and from versioned registry-data snapshots.
5
+
6
+ ## Free-tier GitHub policy
7
+
8
+ The repository is public. CI uses only standard `ubuntu-latest` and
9
+ `windows-latest` GitHub-hosted runners, which GitHub documents as free for public
10
+ repositories. The workflow does not use larger runners, Actions artifact uploads,
11
+ or persistent Actions caches. Release files are attached directly to the GitHub
12
+ release; GitHub documents no total release-size or bandwidth limit, subject to a
13
+ 2 GiB limit per asset.
14
+
15
+ Do not add larger runners, paid products, or persistent Actions storage without
16
+ explicit approval from the repository owner.
17
+
18
+ ## Software release
19
+
20
+ 1. Start from a clean `main` checkout.
21
+ 2. Update `src/geometric_function_atlas/version.py`, `CITATION.cff`, and
22
+ `CHANGELOG.md` together.
23
+ 3. Run the local gate:
24
+
25
+ ```bash
26
+ uv sync --extra test --extra build --locked
27
+ uv run --extra test python -m ruff check src tests scripts
28
+ uv run --extra test python -m mypy src --ignore-missing-imports
29
+ uv run --extra test python -W error -m pytest -q
30
+ rm -rf dist build
31
+ uv run --extra build python -m build
32
+ uv run --extra build python -m twine check dist/*
33
+ uv run python scripts/check_distribution.py dist
34
+ uv run python scripts/check_clean_install.py \
35
+ dist/geometric_function_atlas-0.1.1-py3-none-any.whl
36
+ uv run python scripts/check_uv_tool_install.py \
37
+ dist/geometric_function_atlas-0.1.1-py3-none-any.whl --python 3.12
38
+ ```
39
+
40
+ 4. Obtain an independent review of the exact diff.
41
+ 5. Push a branch, open a pull request, and wait for every Linux and Windows CI
42
+ job to pass.
43
+ 6. Merge to `main` and verify the merge commit is green.
44
+ 7. Build once more from the clean merge commit. Record SHA-256 sums.
45
+ 8. Create tag `vX.Y.Z` and a GitHub release with the wheel, sdist, checksums, and
46
+ notes from `CHANGELOG.md`.
47
+ 9. Download the published assets and rerun the clean-install check against the
48
+ downloaded wheel.
49
+ 10. Run both public installer commands and verify `gfa --version`.
50
+
51
+ There is deliberately no tag-triggered PyPI workflow. PyPI Trusted Publishing
52
+ will be configured and reviewed as a separate future step. No PyPI token belongs
53
+ in this repository.
54
+
55
+ ## Maintained scripts
56
+
57
+ The `scripts/` directory contains only permanent entry points:
58
+
59
+ - `install.sh` and `install.ps1`: supported end-user installers;
60
+ - `check_distribution.py`: wheel/sdist content contract;
61
+ - `check_clean_install.py`: clean wheel API/CLI test;
62
+ - `check_uv_tool_install.py`: fresh uv-managed-Python installation test.
63
+
64
+ Do not commit ad hoc migration, profiling, review, or release-upload scripts.
65
+
66
+ ## Registry-data releases
67
+
68
+ Registry snapshots are not bundled into the wheel. Each snapshot is versioned
69
+ independently and needs a consistent SQLite file, schema dump, manifest,
70
+ checksums, population definitions, and successful SQLite integrity checks.