space-ml-sim 0.3.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.
Files changed (77) hide show
  1. space_ml_sim-0.3.0/.github/CODEOWNERS +18 -0
  2. space_ml_sim-0.3.0/.github/ISSUE_TEMPLATE/bug_report.yml +33 -0
  3. space_ml_sim-0.3.0/.github/ISSUE_TEMPLATE/commercial-license.yml +32 -0
  4. space_ml_sim-0.3.0/.github/ISSUE_TEMPLATE/feature_request.yml +35 -0
  5. space_ml_sim-0.3.0/.github/PULL_REQUEST_TEMPLATE.md +17 -0
  6. space_ml_sim-0.3.0/.github/dependabot.yml +23 -0
  7. space_ml_sim-0.3.0/.github/workflows/ci.yml +208 -0
  8. space_ml_sim-0.3.0/.github/workflows/publish.yml +89 -0
  9. space_ml_sim-0.3.0/.gitignore +26 -0
  10. space_ml_sim-0.3.0/.pre-commit-config.yaml +39 -0
  11. space_ml_sim-0.3.0/.secrets.baseline +133 -0
  12. space_ml_sim-0.3.0/CITATION.cff +26 -0
  13. space_ml_sim-0.3.0/COMMERCIAL_LICENSE.md +74 -0
  14. space_ml_sim-0.3.0/CONTRIBUTING.md +61 -0
  15. space_ml_sim-0.3.0/LICENSE +661 -0
  16. space_ml_sim-0.3.0/PKG-INFO +242 -0
  17. space_ml_sim-0.3.0/README.md +211 -0
  18. space_ml_sim-0.3.0/SECURITY.md +54 -0
  19. space_ml_sim-0.3.0/benchmarks/resnet18_orbital.py +76 -0
  20. space_ml_sim-0.3.0/examples/01_basic_constellation.py +95 -0
  21. space_ml_sim-0.3.0/examples/02_radiation_fault_sweep.py +158 -0
  22. space_ml_sim-0.3.0/examples/03_tmr_comparison.py +144 -0
  23. space_ml_sim-0.3.0/pyproject.toml +53 -0
  24. space_ml_sim-0.3.0/src/space_ml_sim/__init__.py +3 -0
  25. space_ml_sim-0.3.0/src/space_ml_sim/compute/__init__.py +32 -0
  26. space_ml_sim-0.3.0/src/space_ml_sim/compute/checkpoint.py +78 -0
  27. space_ml_sim-0.3.0/src/space_ml_sim/compute/fault_injector.py +277 -0
  28. space_ml_sim-0.3.0/src/space_ml_sim/compute/inference_node.py +88 -0
  29. space_ml_sim-0.3.0/src/space_ml_sim/compute/onnx_adapter.py +246 -0
  30. space_ml_sim-0.3.0/src/space_ml_sim/compute/quantization.py +207 -0
  31. space_ml_sim-0.3.0/src/space_ml_sim/compute/scheduler.py +81 -0
  32. space_ml_sim-0.3.0/src/space_ml_sim/compute/tmr.py +254 -0
  33. space_ml_sim-0.3.0/src/space_ml_sim/compute/transformer_fault.py +340 -0
  34. space_ml_sim-0.3.0/src/space_ml_sim/core/__init__.py +30 -0
  35. space_ml_sim-0.3.0/src/space_ml_sim/core/clock.py +50 -0
  36. space_ml_sim-0.3.0/src/space_ml_sim/core/constellation.py +252 -0
  37. space_ml_sim-0.3.0/src/space_ml_sim/core/orbit.py +315 -0
  38. space_ml_sim-0.3.0/src/space_ml_sim/core/satellite.py +125 -0
  39. space_ml_sim-0.3.0/src/space_ml_sim/core/tle.py +266 -0
  40. space_ml_sim-0.3.0/src/space_ml_sim/environment/__init__.py +21 -0
  41. space_ml_sim-0.3.0/src/space_ml_sim/environment/comms.py +39 -0
  42. space_ml_sim-0.3.0/src/space_ml_sim/environment/power.py +30 -0
  43. space_ml_sim-0.3.0/src/space_ml_sim/environment/radiation.py +150 -0
  44. space_ml_sim-0.3.0/src/space_ml_sim/environment/thermal.py +39 -0
  45. space_ml_sim-0.3.0/src/space_ml_sim/environment/timeline.py +281 -0
  46. space_ml_sim-0.3.0/src/space_ml_sim/metrics/__init__.py +6 -0
  47. space_ml_sim-0.3.0/src/space_ml_sim/metrics/performance.py +43 -0
  48. space_ml_sim-0.3.0/src/space_ml_sim/metrics/reliability.py +48 -0
  49. space_ml_sim-0.3.0/src/space_ml_sim/models/__init__.py +27 -0
  50. space_ml_sim-0.3.0/src/space_ml_sim/models/chip_profiles.py +123 -0
  51. space_ml_sim-0.3.0/src/space_ml_sim/models/rad_profiles.py +13 -0
  52. space_ml_sim-0.3.0/src/space_ml_sim/py.typed +0 -0
  53. space_ml_sim-0.3.0/src/space_ml_sim/viz/__init__.py +11 -0
  54. space_ml_sim-0.3.0/src/space_ml_sim/viz/heatmap.py +147 -0
  55. space_ml_sim-0.3.0/src/space_ml_sim/viz/plots.py +166 -0
  56. space_ml_sim-0.3.0/tests/__init__.py +0 -0
  57. space_ml_sim-0.3.0/tests/test_checkpoint.py +330 -0
  58. space_ml_sim-0.3.0/tests/test_clock.py +241 -0
  59. space_ml_sim-0.3.0/tests/test_comms.py +150 -0
  60. space_ml_sim-0.3.0/tests/test_constellation.py +139 -0
  61. space_ml_sim-0.3.0/tests/test_fault_injector.py +149 -0
  62. space_ml_sim-0.3.0/tests/test_heatmap.py +402 -0
  63. space_ml_sim-0.3.0/tests/test_inference_node.py +257 -0
  64. space_ml_sim-0.3.0/tests/test_metrics.py +342 -0
  65. space_ml_sim-0.3.0/tests/test_onnx_adapter.py +395 -0
  66. space_ml_sim-0.3.0/tests/test_orbit.py +279 -0
  67. space_ml_sim-0.3.0/tests/test_power.py +81 -0
  68. space_ml_sim-0.3.0/tests/test_quantization.py +502 -0
  69. space_ml_sim-0.3.0/tests/test_radiation.py +75 -0
  70. space_ml_sim-0.3.0/tests/test_satellite.py +425 -0
  71. space_ml_sim-0.3.0/tests/test_scheduler.py +310 -0
  72. space_ml_sim-0.3.0/tests/test_thermal.py +116 -0
  73. space_ml_sim-0.3.0/tests/test_timeline.py +457 -0
  74. space_ml_sim-0.3.0/tests/test_tle.py +434 -0
  75. space_ml_sim-0.3.0/tests/test_tmr.py +205 -0
  76. space_ml_sim-0.3.0/tests/test_transformer_fault.py +465 -0
  77. space_ml_sim-0.3.0/tests/test_viz.py +255 -0
@@ -0,0 +1,18 @@
1
+ # Default owner for everything
2
+ * @yaitsmesj
3
+
4
+ # Critical paths — require explicit review from maintainer
5
+ src/space_ml_sim/compute/fault_injector.py @yaitsmesj
6
+ src/space_ml_sim/compute/tmr.py @yaitsmesj
7
+ src/space_ml_sim/compute/transformer_fault.py @yaitsmesj
8
+ src/space_ml_sim/environment/radiation.py @yaitsmesj
9
+ src/space_ml_sim/core/orbit.py @yaitsmesj
10
+ src/space_ml_sim/models/chip_profiles.py @yaitsmesj
11
+
12
+ # License and legal
13
+ LICENSE @yaitsmesj
14
+ COMMERCIAL_LICENSE.md @yaitsmesj
15
+
16
+ # CI and security
17
+ .github/ @yaitsmesj
18
+ pyproject.toml @yaitsmesj
@@ -0,0 +1,33 @@
1
+ name: Bug Report
2
+ description: Report a bug in space-ml-sim
3
+ labels: ["bug"]
4
+ body:
5
+ - type: textarea
6
+ id: description
7
+ attributes:
8
+ label: Description
9
+ description: What happened? What did you expect to happen?
10
+ validations:
11
+ required: true
12
+
13
+ - type: textarea
14
+ id: reproduction
15
+ attributes:
16
+ label: Steps to reproduce
17
+ description: Minimal code or steps to reproduce the issue.
18
+ render: python
19
+ validations:
20
+ required: true
21
+
22
+ - type: textarea
23
+ id: environment
24
+ attributes:
25
+ label: Environment
26
+ description: |
27
+ - OS:
28
+ - Python version:
29
+ - space-ml-sim version:
30
+ - PyTorch version:
31
+ render: text
32
+ validations:
33
+ required: false
@@ -0,0 +1,32 @@
1
+ name: Commercial License Inquiry
2
+ description: Inquire about commercial licensing for proprietary use
3
+ labels: ["commercial-license"]
4
+ body:
5
+ - type: textarea
6
+ id: use_case
7
+ attributes:
8
+ label: Use case
9
+ description: Briefly describe how you plan to use space-ml-sim.
10
+ validations:
11
+ required: true
12
+
13
+ - type: dropdown
14
+ id: org_type
15
+ attributes:
16
+ label: Organization type
17
+ options:
18
+ - Startup
19
+ - Enterprise
20
+ - Government / Defense
21
+ - Academic (grant-funded)
22
+ - Other
23
+ validations:
24
+ required: true
25
+
26
+ - type: textarea
27
+ id: contact
28
+ attributes:
29
+ label: Contact
30
+ description: Preferred way to reach you (email, LinkedIn, etc.)
31
+ validations:
32
+ required: true
@@ -0,0 +1,35 @@
1
+ name: Feature Request
2
+ description: Suggest a new feature or improvement
3
+ labels: ["enhancement"]
4
+ body:
5
+ - type: textarea
6
+ id: problem
7
+ attributes:
8
+ label: Problem
9
+ description: What problem does this solve? What use case does it enable?
10
+ validations:
11
+ required: true
12
+
13
+ - type: textarea
14
+ id: solution
15
+ attributes:
16
+ label: Proposed solution
17
+ description: How should this work? Include code examples if helpful.
18
+ validations:
19
+ required: false
20
+
21
+ - type: dropdown
22
+ id: area
23
+ attributes:
24
+ label: Area
25
+ options:
26
+ - Orbital mechanics
27
+ - Radiation environment
28
+ - Fault injection
29
+ - Fault tolerance (TMR)
30
+ - Chip profiles
31
+ - Visualization
32
+ - Documentation
33
+ - Other
34
+ validations:
35
+ required: true
@@ -0,0 +1,17 @@
1
+ ## Summary
2
+
3
+ <!-- What does this PR do? 1-3 bullet points. -->
4
+
5
+ ## Changes
6
+
7
+ <!-- List the key changes. -->
8
+
9
+ ## Test plan
10
+
11
+ - [ ] New tests added for changed behavior
12
+ - [ ] All existing tests pass (`pytest tests/ -v`)
13
+ - [ ] Linting passes (`ruff check src/ tests/`)
14
+
15
+ ## Notes
16
+
17
+ <!-- Anything reviewers should know? Breaking changes? -->
@@ -0,0 +1,23 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: pip
4
+ directory: "/"
5
+ schedule:
6
+ interval: weekly
7
+ day: monday
8
+ open-pull-requests-limit: 5
9
+ labels:
10
+ - dependencies
11
+ commit-message:
12
+ prefix: "chore(deps):"
13
+
14
+ - package-ecosystem: github-actions
15
+ directory: "/"
16
+ schedule:
17
+ interval: weekly
18
+ day: monday
19
+ open-pull-requests-limit: 3
20
+ labels:
21
+ - ci
22
+ commit-message:
23
+ prefix: "ci(deps):"
@@ -0,0 +1,208 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ name: Tests (Python ${{ matrix.python-version }})
12
+ runs-on: ubuntu-latest
13
+ strategy:
14
+ matrix:
15
+ python-version: ["3.11", "3.12"]
16
+
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - name: Setup Python ${{ matrix.python-version }}
21
+ uses: actions/setup-python@v5
22
+ with:
23
+ python-version: ${{ matrix.python-version }}
24
+ cache: pip
25
+
26
+ - name: Install dependencies
27
+ run: |
28
+ pip install -e ".[dev]"
29
+ pip install torchvision pytest-cov
30
+
31
+ - name: Run tests with coverage
32
+ run: |
33
+ python -m pytest tests/ -v \
34
+ --cov=space_ml_sim \
35
+ --cov-report=term-missing \
36
+ --cov-report=xml:coverage.xml \
37
+ --cov-fail-under=80
38
+
39
+ - name: Upload coverage artifact
40
+ if: matrix.python-version == '3.12'
41
+ uses: actions/upload-artifact@v4
42
+ with:
43
+ name: coverage-report
44
+ path: coverage.xml
45
+
46
+ lint:
47
+ name: Lint & Format
48
+ runs-on: ubuntu-latest
49
+
50
+ steps:
51
+ - uses: actions/checkout@v4
52
+
53
+ - name: Setup Python
54
+ uses: actions/setup-python@v5
55
+ with:
56
+ python-version: "3.12"
57
+ cache: pip
58
+
59
+ - name: Install ruff
60
+ run: pip install ruff
61
+
62
+ - name: Check linting
63
+ run: ruff check src/ tests/
64
+
65
+ - name: Check formatting
66
+ run: ruff format --check src/ tests/
67
+
68
+ security:
69
+ name: Security Scanning
70
+ runs-on: ubuntu-latest
71
+
72
+ steps:
73
+ - uses: actions/checkout@v4
74
+
75
+ - name: Setup Python
76
+ uses: actions/setup-python@v5
77
+ with:
78
+ python-version: "3.12"
79
+ cache: pip
80
+
81
+ - name: Install project and security tools
82
+ run: |
83
+ pip install -e ".[dev]"
84
+ pip install pip-audit bandit
85
+
86
+ - name: Dependency vulnerability scan
87
+ run: |
88
+ pip freeze --exclude-editable > /tmp/requirements.txt
89
+ pip-audit --desc -r /tmp/requirements.txt \
90
+ --ignore-vuln CVE-2026-4539 \
91
+ || echo "::warning::pip-audit found vulnerabilities — review output above"
92
+
93
+ - name: Code security scan (bandit)
94
+ run: bandit -r src/ -c pyproject.toml -f json -o bandit-report.json || true
95
+
96
+ - name: Check bandit results
97
+ run: |
98
+ pip install bandit
99
+ bandit -r src/ -c pyproject.toml -ll
100
+
101
+ - name: Upload security report
102
+ if: always()
103
+ uses: actions/upload-artifact@v4
104
+ with:
105
+ name: bandit-report
106
+ path: bandit-report.json
107
+ if-no-files-found: ignore
108
+
109
+ license-check:
110
+ name: License Compliance
111
+ runs-on: ubuntu-latest
112
+
113
+ steps:
114
+ - uses: actions/checkout@v4
115
+
116
+ - name: Setup Python
117
+ uses: actions/setup-python@v5
118
+ with:
119
+ python-version: "3.12"
120
+ cache: pip
121
+
122
+ - name: Install project and license tool
123
+ run: |
124
+ pip install -e .
125
+ pip install pip-licenses
126
+
127
+ - name: Check dependency licenses
128
+ run: |
129
+ pip-licenses --format=table --with-license-file --no-license-path \
130
+ --fail-on="GNU General Public License v2 (GPLv2);GNU General Public License v3 (GPLv3)" \
131
+ --allow-only="MIT;BSD License;BSD-2-Clause;BSD-3-Clause;Apache Software License;ISC License (ISCL);Python Software Foundation License;Mozilla Public License 2.0 (MPL 2.0);The Unlicense (Unlicense);Public Domain;HPND;Historical Permission Notice and Disclaimer (HPND)" \
132
+ || echo "::warning::Some dependencies have non-standard licenses. Review pip-licenses output above."
133
+
134
+ benchmark:
135
+ name: Performance Benchmark
136
+ runs-on: ubuntu-latest
137
+
138
+ steps:
139
+ - uses: actions/checkout@v4
140
+
141
+ - name: Setup Python
142
+ uses: actions/setup-python@v5
143
+ with:
144
+ python-version: "3.12"
145
+ cache: pip
146
+
147
+ - name: Install dependencies
148
+ run: |
149
+ pip install -e ".[dev]"
150
+ pip install torchvision
151
+
152
+ - name: Run performance benchmarks
153
+ run: |
154
+ python -c "
155
+ import time, json, copy, torch, torch.nn as nn
156
+ from space_ml_sim.compute.fault_injector import FaultInjector
157
+ from space_ml_sim.environment.radiation import RadiationEnvironment
158
+ from space_ml_sim.models.chip_profiles import TERAFAB_D3
159
+ from space_ml_sim.core import Constellation
160
+
161
+ results = {}
162
+
163
+ # Benchmark 1: Fault injection speed (1000 faults into a small model)
164
+ model = nn.Sequential(nn.Linear(512, 512), nn.ReLU(), nn.Linear(512, 10))
165
+ injector = FaultInjector(RadiationEnvironment.leo_500km(), TERAFAB_D3)
166
+ start = time.perf_counter()
167
+ for _ in range(50):
168
+ m = copy.deepcopy(model)
169
+ injector.inject_weight_faults(m, num_faults=1000)
170
+ fault_time = (time.perf_counter() - start) / 50
171
+ results['fault_injection_1k_ms'] = round(fault_time * 1000, 2)
172
+
173
+ # Benchmark 2: Constellation step (100 sats, 1 step)
174
+ c = Constellation.walker_delta(10, 10, 550, 53, TERAFAB_D3)
175
+ start = time.perf_counter()
176
+ for _ in range(10):
177
+ c.step(dt_seconds=60.0)
178
+ step_time = (time.perf_counter() - start) / 10
179
+ results['constellation_step_100sats_ms'] = round(step_time * 1000, 2)
180
+
181
+ # Benchmark 3: Orbit propagation (1 orbit, 1s steps)
182
+ from space_ml_sim.core.orbit import OrbitConfig, propagate
183
+ config = OrbitConfig(altitude_km=550, inclination_deg=53, raan_deg=0, true_anomaly_deg=0)
184
+ start = time.perf_counter()
185
+ propagate(config, duration_minutes=95, step_seconds=1.0)
186
+ prop_time = time.perf_counter() - start
187
+ results['propagate_1orbit_1s_steps_ms'] = round(prop_time * 1000, 2)
188
+
189
+ print('=== BENCHMARK RESULTS ===')
190
+ for k, v in results.items():
191
+ print(f'{k}: {v} ms')
192
+
193
+ # Write results for comparison
194
+ with open('benchmark-results.json', 'w') as f:
195
+ json.dump(results, f, indent=2)
196
+
197
+ # Fail if any benchmark is unreasonably slow
198
+ assert results['fault_injection_1k_ms'] < 500, f\"Fault injection too slow: {results['fault_injection_1k_ms']}ms\"
199
+ assert results['constellation_step_100sats_ms'] < 1000, f\"Constellation step too slow: {results['constellation_step_100sats_ms']}ms\"
200
+ assert results['propagate_1orbit_1s_steps_ms'] < 2000, f\"Propagation too slow: {results['propagate_1orbit_1s_steps_ms']}ms\"
201
+ print('All benchmarks within limits.')
202
+ "
203
+
204
+ - name: Upload benchmark results
205
+ uses: actions/upload-artifact@v4
206
+ with:
207
+ name: benchmark-results
208
+ path: benchmark-results.json
@@ -0,0 +1,89 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ permissions:
9
+ id-token: write
10
+
11
+ jobs:
12
+ validate:
13
+ name: Validate Release
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - name: Setup Python
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.12"
22
+ cache: pip
23
+
24
+ - name: Install dependencies
25
+ run: |
26
+ pip install -e ".[dev]"
27
+ pip install torchvision pytest-cov
28
+
29
+ - name: Verify tag matches pyproject.toml version
30
+ run: |
31
+ TAG_VERSION="${GITHUB_REF_NAME#v}"
32
+ TOML_VERSION=$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")
33
+ if [ "$TAG_VERSION" != "$TOML_VERSION" ]; then
34
+ echo "::error::Tag version ($TAG_VERSION) does not match pyproject.toml ($TOML_VERSION)"
35
+ exit 1
36
+ fi
37
+ echo "Version match: $TAG_VERSION"
38
+
39
+ - name: Run full test suite
40
+ run: python -m pytest tests/ -v --cov=space_ml_sim --cov-fail-under=80
41
+
42
+ - name: Run security scan
43
+ run: |
44
+ pip install pip-audit bandit
45
+ pip freeze --exclude-editable > /tmp/requirements.txt
46
+ pip-audit --desc -r /tmp/requirements.txt \
47
+ --ignore-vuln CVE-2026-4539
48
+ bandit -r src/ -c pyproject.toml -ll
49
+
50
+ build:
51
+ name: Build Package
52
+ needs: validate
53
+ runs-on: ubuntu-latest
54
+ steps:
55
+ - uses: actions/checkout@v4
56
+
57
+ - name: Setup Python
58
+ uses: actions/setup-python@v5
59
+ with:
60
+ python-version: "3.12"
61
+
62
+ - name: Install build tools
63
+ run: pip install build
64
+
65
+ - name: Build package
66
+ run: python -m build
67
+
68
+ - name: Upload build artifacts
69
+ uses: actions/upload-artifact@v4
70
+ with:
71
+ name: dist
72
+ path: dist/
73
+
74
+ publish:
75
+ name: Publish to PyPI
76
+ needs: build
77
+ runs-on: ubuntu-latest
78
+ environment: pypi
79
+ permissions:
80
+ id-token: write
81
+ steps:
82
+ - name: Download build artifacts
83
+ uses: actions/download-artifact@v4
84
+ with:
85
+ name: dist
86
+ path: dist/
87
+
88
+ - name: Publish to PyPI
89
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,26 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+ *.so
5
+ *.egg-info/
6
+ dist/
7
+ build/
8
+ .eggs/
9
+ *.egg
10
+ .venv/
11
+ venv/
12
+ env/
13
+ .env
14
+ *.pth
15
+ *.pt
16
+ *.onnx
17
+ data/
18
+ *.png
19
+ *.jpg
20
+ *.html
21
+ .ruff_cache/
22
+ .pytest_cache/
23
+ .mypy_cache/
24
+ .coverage
25
+ htmlcov/
26
+ .DS_Store
@@ -0,0 +1,39 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ rev: v0.4.8
4
+ hooks:
5
+ - id: ruff
6
+ args: [--fix]
7
+ - id: ruff-format
8
+
9
+ - repo: https://github.com/PyCQA/bandit
10
+ rev: 1.7.9
11
+ hooks:
12
+ - id: bandit
13
+ args: [-c, pyproject.toml, -r, src/]
14
+ additional_dependencies: ["bandit[toml]"]
15
+
16
+ - repo: https://github.com/Yelp/detect-secrets
17
+ rev: v1.5.0
18
+ hooks:
19
+ - id: detect-secrets
20
+ args: [--baseline, .secrets.baseline]
21
+ exclude: LICENSE
22
+
23
+ - repo: https://github.com/pre-commit/pre-commit-hooks
24
+ rev: v4.6.0
25
+ hooks:
26
+ - id: trailing-whitespace
27
+ - id: end-of-file-fixer
28
+ - id: check-yaml
29
+ - id: check-added-large-files
30
+ args: [--maxkb=500]
31
+ - id: check-merge-conflict
32
+ - id: debug-statements
33
+
34
+ - repo: https://github.com/compilerla/conventional-pre-commit
35
+ rev: v3.3.0
36
+ hooks:
37
+ - id: conventional-pre-commit
38
+ stages: [commit-msg]
39
+ args: [feat, fix, refactor, docs, test, chore, perf, ci, style]
@@ -0,0 +1,133 @@
1
+ {
2
+ "version": "1.5.0",
3
+ "plugins_used": [
4
+ {
5
+ "name": "ArtifactoryDetector"
6
+ },
7
+ {
8
+ "name": "AWSKeyDetector"
9
+ },
10
+ {
11
+ "name": "AzureStorageKeyDetector"
12
+ },
13
+ {
14
+ "name": "Base64HighEntropyString",
15
+ "limit": 4.5
16
+ },
17
+ {
18
+ "name": "BasicAuthDetector"
19
+ },
20
+ {
21
+ "name": "CloudantDetector"
22
+ },
23
+ {
24
+ "name": "DiscordBotTokenDetector"
25
+ },
26
+ {
27
+ "name": "GitHubTokenDetector"
28
+ },
29
+ {
30
+ "name": "GitLabTokenDetector"
31
+ },
32
+ {
33
+ "name": "HexHighEntropyString",
34
+ "limit": 3.0
35
+ },
36
+ {
37
+ "name": "IbmCloudIamDetector"
38
+ },
39
+ {
40
+ "name": "IbmCosHmacDetector"
41
+ },
42
+ {
43
+ "name": "IPPublicDetector"
44
+ },
45
+ {
46
+ "name": "JwtTokenDetector"
47
+ },
48
+ {
49
+ "name": "KeywordDetector",
50
+ "keyword_exclude": ""
51
+ },
52
+ {
53
+ "name": "MailchimpDetector"
54
+ },
55
+ {
56
+ "name": "NpmDetector"
57
+ },
58
+ {
59
+ "name": "OpenAIDetector"
60
+ },
61
+ {
62
+ "name": "PrivateKeyDetector"
63
+ },
64
+ {
65
+ "name": "PypiTokenDetector"
66
+ },
67
+ {
68
+ "name": "SendGridDetector"
69
+ },
70
+ {
71
+ "name": "SlackDetector"
72
+ },
73
+ {
74
+ "name": "SoftlayerDetector"
75
+ },
76
+ {
77
+ "name": "SquareOAuthDetector"
78
+ },
79
+ {
80
+ "name": "StripeDetector"
81
+ },
82
+ {
83
+ "name": "TelegramBotTokenDetector"
84
+ },
85
+ {
86
+ "name": "TwilioKeyDetector"
87
+ }
88
+ ],
89
+ "filters_used": [
90
+ {
91
+ "path": "detect_secrets.filters.allowlist.is_line_allowlisted"
92
+ },
93
+ {
94
+ "path": "detect_secrets.filters.common.is_ignored_due_to_verification_policies",
95
+ "min_level": 2
96
+ },
97
+ {
98
+ "path": "detect_secrets.filters.heuristic.is_indirect_reference"
99
+ },
100
+ {
101
+ "path": "detect_secrets.filters.heuristic.is_likely_id_string"
102
+ },
103
+ {
104
+ "path": "detect_secrets.filters.heuristic.is_lock_file"
105
+ },
106
+ {
107
+ "path": "detect_secrets.filters.heuristic.is_not_alphanumeric_string"
108
+ },
109
+ {
110
+ "path": "detect_secrets.filters.heuristic.is_potential_uuid"
111
+ },
112
+ {
113
+ "path": "detect_secrets.filters.heuristic.is_prefixed_with_dollar_sign"
114
+ },
115
+ {
116
+ "path": "detect_secrets.filters.heuristic.is_sequential_string"
117
+ },
118
+ {
119
+ "path": "detect_secrets.filters.heuristic.is_swagger_file"
120
+ },
121
+ {
122
+ "path": "detect_secrets.filters.heuristic.is_templated_secret"
123
+ },
124
+ {
125
+ "path": "detect_secrets.filters.regex.should_exclude_file",
126
+ "pattern": [
127
+ "LICENSE"
128
+ ]
129
+ }
130
+ ],
131
+ "results": {},
132
+ "generated_at": "2026-03-26T15:53:05Z"
133
+ }
@@ -0,0 +1,26 @@
1
+ cff-version: 1.2.0
2
+ title: "space-ml-sim: Simulation Framework for AI Inference on Orbital Satellite Constellations"
3
+ message: "If you use this software in your research, please cite it using the metadata from this file."
4
+ type: software
5
+ authors:
6
+ - name: "space-ml-sim contributors"
7
+ repository-code: "https://github.com/yaitsmesj/space-ml-sim"
8
+ url: "https://github.com/yaitsmesj/space-ml-sim"
9
+ license: AGPL-3.0-or-later
10
+ version: 0.3.0
11
+ date-released: "2026-04-04"
12
+ keywords:
13
+ - satellite
14
+ - space radiation
15
+ - fault injection
16
+ - neural network reliability
17
+ - triple modular redundancy
18
+ - orbital computing
19
+ - LEO
20
+ abstract: >-
21
+ space-ml-sim is a simulation framework for studying the effects of
22
+ space radiation on AI inference running aboard orbital satellite
23
+ constellations. It provides parametric radiation environment models,
24
+ ML-aware fault injection into PyTorch models, fault tolerance
25
+ strategies (TMR, selective TMR, checkpoint rollback), and orbital
26
+ mechanics for LEO constellation simulation.