Skip to content

Commit 8b9ae09

Browse files
committed
feat: initial release v0.1.0
SCPN Phase Orchestrator — domain-agnostic coherence control compiler. - UPDE Kuramoto integrator (Euler + RK4) with pre-allocated scratch arrays - 3-channel oscillator model (Physical/Informational/Symbolic) - Coupling matrix management with exponential decay and template switching - Supervisor with regime FSM (Nominal/Degraded/Critical/Recovery) - spo-kernel Rust workspace (5 crates, 112 tests, PyO3 FFI) - 4 domainpacks: minimal_domain, queuewaves, geometry_walk, bio_stub - MkDocs documentation (20 pages) - CI: lint, typecheck, test (3.10-3.12), security, Rust check Co-Authored-By: Arcane Sapience <protoscience@anulum.li>
0 parents  commit 8b9ae09

File tree

159 files changed

+10541
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

159 files changed

+10541
-0
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# ──────────────────────────────────────────────────────────────────────
2+
# SCPN Phase Orchestrator — Bug report template
3+
# © 1998–2026 Miroslav Šotek. All rights reserved.
4+
# Contact: www.anulum.li | protoscience@anulum.li
5+
# License: GNU AGPL v3 | Commercial licensing available
6+
# ──────────────────────────────────────────────────────────────────────
7+
8+
name: Bug Report
9+
description: Report a bug
10+
labels: [bug]
11+
body:
12+
- type: textarea
13+
id: description
14+
attributes:
15+
label: Description
16+
description: Clear description of the bug.
17+
validations:
18+
required: true
19+
20+
- type: textarea
21+
id: steps
22+
attributes:
23+
label: Steps to Reproduce
24+
description: Minimal steps to reproduce the behavior.
25+
placeholder: |
26+
1. Install ...
27+
2. Run ...
28+
3. Observe ...
29+
validations:
30+
required: true
31+
32+
- type: textarea
33+
id: expected
34+
attributes:
35+
label: Expected Behavior
36+
description: What you expected to happen.
37+
validations:
38+
required: true
39+
40+
- type: textarea
41+
id: environment
42+
attributes:
43+
label: Environment
44+
description: System details.
45+
placeholder: |
46+
- OS: Ubuntu 24.04
47+
- Python: 3.12.3
48+
- Package version: 0.1.0
49+
validations:
50+
required: false
51+
52+
- type: textarea
53+
id: context
54+
attributes:
55+
label: Additional Context
56+
description: Any other relevant information.
57+
validations:
58+
required: false

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# ──────────────────────────────────────────────────────────────────────
2+
# SCPN Phase Orchestrator — Issue template configuration
3+
# © 1998–2026 Miroslav Šotek. All rights reserved.
4+
# Contact: www.anulum.li | protoscience@anulum.li
5+
# License: GNU AGPL v3 | Commercial licensing available
6+
# ──────────────────────────────────────────────────────────────────────
7+
8+
blank_issues_enabled: false
9+
contact_links:
10+
- name: Security Vulnerability
11+
url: https://github.com/anulum/scpn-phase-orchestrator/blob/main/SECURITY.md
12+
about: Report security vulnerabilities via SECURITY.md
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# ──────────────────────────────────────────────────────────────────────
2+
# SCPN Phase Orchestrator — Domainpack request template
3+
# © 1998–2026 Miroslav Šotek. All rights reserved.
4+
# Contact: www.anulum.li | protoscience@anulum.li
5+
# License: GNU AGPL v3 | Commercial licensing available
6+
# ──────────────────────────────────────────────────────────────────────
7+
8+
name: Domainpack Request
9+
description: Request a new domain binding
10+
labels: [domainpack]
11+
body:
12+
- type: textarea
13+
id: domain-description
14+
attributes:
15+
label: Domain Description
16+
description: What system or process does this domainpack target?
17+
validations:
18+
required: true
19+
20+
- type: textarea
21+
id: oscillator-candidates
22+
attributes:
23+
label: Oscillator Candidates
24+
description: What oscillates? Classify each as P (physical), I (informational), or S (symbolic).
25+
placeholder: |
26+
- voltage: P
27+
- heartbeat: P
28+
- market cycle: I
29+
validations:
30+
required: true
31+
32+
- type: textarea
33+
id: hierarchy-sketch
34+
attributes:
35+
label: Hierarchy Sketch
36+
description: Proposed layer structure mapping domain quantities to SCPN layers.
37+
placeholder: |
38+
L1: raw signal
39+
L2: extracted rhythm
40+
L3: ...
41+
validations:
42+
required: true
43+
44+
- type: textarea
45+
id: data-sources
46+
attributes:
47+
label: Data Sources
48+
description: What telemetry or signals are available?
49+
validations:
50+
required: false
51+
52+
- type: textarea
53+
id: prior-art
54+
attributes:
55+
label: Prior Art
56+
description: Existing control or analysis approaches for this domain.
57+
validations:
58+
required: false
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# ──────────────────────────────────────────────────────────────────────
2+
# SCPN Phase Orchestrator — Feature request template
3+
# © 1998–2026 Miroslav Šotek. All rights reserved.
4+
# Contact: www.anulum.li | protoscience@anulum.li
5+
# License: GNU AGPL v3 | Commercial licensing available
6+
# ──────────────────────────────────────────────────────────────────────
7+
8+
name: Feature Request
9+
description: Suggest a feature
10+
labels: [enhancement]
11+
body:
12+
- type: textarea
13+
id: problem
14+
attributes:
15+
label: Problem Description
16+
description: What problem does this feature solve?
17+
validations:
18+
required: true
19+
20+
- type: textarea
21+
id: solution
22+
attributes:
23+
label: Proposed Solution
24+
description: How should this feature work?
25+
validations:
26+
required: true
27+
28+
- type: textarea
29+
id: alternatives
30+
attributes:
31+
label: Alternatives Considered
32+
description: Other approaches you considered.
33+
validations:
34+
required: false
35+
36+
- type: textarea
37+
id: domain
38+
attributes:
39+
label: Domain Context
40+
description: Which domain or domainpack is this related to?
41+
validations:
42+
required: false

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
## Summary
2+
3+
<!-- Describe what this PR does and why. -->
4+
5+
## Checklist
6+
7+
- [ ] Tests pass (`pytest tests/ -v`)
8+
- [ ] `ruff check` clean
9+
- [ ] `ruff format` clean
10+
- [ ] Types checked where applicable (`mypy`)
11+
- [ ] Docs updated if API changed
12+
- [ ] Math validated (equations match spec)
13+
- [ ] No anti-slop violations (see CLAUDE.md policy)

.github/dependabot.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# ──────────────────────────────────────────────────────────────────────
2+
# SCPN Phase Orchestrator — Dependency update configuration
3+
# © 1998–2026 Miroslav Šotek. All rights reserved.
4+
# Contact: www.anulum.li | protoscience@anulum.li
5+
# License: GNU AGPL v3 | Commercial licensing available
6+
# ──────────────────────────────────────────────────────────────────────
7+
8+
version: 2
9+
updates:
10+
- package-ecosystem: "github-actions"
11+
directory: "/"
12+
schedule:
13+
interval: "weekly"

.github/workflows/ci.yml

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# ──────────────────────────────────────────────────────────────────────
2+
# SCPN Phase Orchestrator — Continuous integration
3+
# © 1998–2026 Miroslav Šotek. All rights reserved.
4+
# Contact: www.anulum.li | protoscience@anulum.li
5+
# License: GNU AGPL v3 | Commercial licensing available
6+
# ──────────────────────────────────────────────────────────────────────
7+
8+
name: CI
9+
10+
on:
11+
push:
12+
branches: [main, develop]
13+
pull_request:
14+
branches: [main]
15+
16+
jobs:
17+
lint:
18+
runs-on: ubuntu-latest
19+
steps:
20+
- uses: actions/checkout@v4
21+
- uses: actions/setup-python@v5
22+
with:
23+
python-version: "3.12"
24+
- run: pip install -e ".[dev]"
25+
- run: ruff check src/ tests/
26+
- run: ruff format --check src/ tests/
27+
28+
typecheck:
29+
runs-on: ubuntu-latest
30+
steps:
31+
- uses: actions/checkout@v4
32+
- uses: actions/setup-python@v5
33+
with:
34+
python-version: "3.12"
35+
- run: pip install -e ".[dev]"
36+
- run: mypy src/scpn_phase_orchestrator/ --ignore-missing-imports
37+
38+
test:
39+
runs-on: ubuntu-latest
40+
strategy:
41+
matrix:
42+
python-version: ["3.10", "3.11", "3.12"]
43+
steps:
44+
- uses: actions/checkout@v4
45+
- uses: actions/setup-python@v5
46+
with:
47+
python-version: ${{ matrix.python-version }}
48+
- run: pip install -e ".[dev]"
49+
- run: pytest tests/ -v --tb=short --cov=scpn_phase_orchestrator --cov-report=term-missing
50+
51+
security:
52+
runs-on: ubuntu-latest
53+
steps:
54+
- uses: actions/checkout@v4
55+
- uses: actions/setup-python@v5
56+
with:
57+
python-version: "3.12"
58+
- run: pip install bandit
59+
- run: bandit -r src/ -c pyproject.toml
60+
61+
rust-check:
62+
runs-on: ubuntu-latest
63+
defaults:
64+
run:
65+
working-directory: spo-kernel
66+
steps:
67+
- uses: actions/checkout@v4
68+
- uses: dtolnay/rust-toolchain@stable
69+
- run: cargo fmt --check
70+
- run: cargo clippy -- -D warnings
71+
- run: cargo test
72+
73+
ci-gate:
74+
needs: [lint, typecheck, test, security, rust-check]
75+
runs-on: ubuntu-latest
76+
steps:
77+
- run: echo "All checks passed"

.github/workflows/docs.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# ──────────────────────────────────────────────────────────────────────
2+
# SCPN Phase Orchestrator — Documentation deployment
3+
# © 1998–2026 Miroslav Šotek. All rights reserved.
4+
# Contact: www.anulum.li | protoscience@anulum.li
5+
# License: GNU AGPL v3 | Commercial licensing available
6+
# ──────────────────────────────────────────────────────────────────────
7+
8+
name: Docs
9+
10+
on:
11+
push:
12+
branches: [main]
13+
paths:
14+
- "docs/**"
15+
- "mkdocs.yml"
16+
17+
permissions:
18+
contents: write
19+
20+
jobs:
21+
deploy:
22+
runs-on: ubuntu-latest
23+
steps:
24+
- uses: actions/checkout@v4
25+
- uses: actions/setup-python@v5
26+
with:
27+
python-version: "3.12"
28+
- run: pip install mkdocs-material
29+
- run: mkdocs gh-deploy --force

.github/workflows/publish.yml

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# ──────────────────────────────────────────────────────────────────────
2+
# SCPN Phase Orchestrator — Publish to PyPI
3+
# © 1998–2026 Miroslav Šotek. All rights reserved.
4+
# Contact: www.anulum.li | protoscience@anulum.li
5+
# License: GNU AGPL v3 | Commercial licensing available
6+
# ──────────────────────────────────────────────────────────────────────
7+
8+
name: Publish to PyPI
9+
10+
on:
11+
push:
12+
tags:
13+
- 'v*'
14+
15+
permissions:
16+
id-token: write
17+
contents: read
18+
19+
jobs:
20+
build:
21+
name: Build distribution
22+
runs-on: ubuntu-latest
23+
steps:
24+
- uses: actions/checkout@v4
25+
- uses: actions/setup-python@v5
26+
with:
27+
python-version: "3.12"
28+
- name: Install build tools
29+
run: python -m pip install --upgrade pip build
30+
- name: Build sdist and wheel
31+
run: python -m build
32+
- name: Upload artifacts
33+
uses: actions/upload-artifact@v4
34+
with:
35+
name: dist
36+
path: dist/
37+
38+
publish-pypi:
39+
name: Publish to PyPI
40+
needs: build
41+
runs-on: ubuntu-latest
42+
environment:
43+
name: pypi
44+
url: https://pypi.org/p/scpn-phase-orchestrator
45+
steps:
46+
- name: Download artifacts
47+
uses: actions/download-artifact@v7
48+
with:
49+
name: dist
50+
path: dist/
51+
- name: Publish to PyPI
52+
uses: pypa/gh-action-pypi-publish@release/v1
53+
54+
publish-testpypi:
55+
name: Publish to TestPyPI
56+
needs: build
57+
runs-on: ubuntu-latest
58+
continue-on-error: true
59+
environment:
60+
name: testpypi
61+
url: https://test.pypi.org/p/scpn-phase-orchestrator
62+
steps:
63+
- name: Download artifacts
64+
uses: actions/download-artifact@v7
65+
with:
66+
name: dist
67+
path: dist/
68+
- name: Publish to TestPyPI
69+
uses: pypa/gh-action-pypi-publish@release/v1
70+
with:
71+
repository-url: https://test.pypi.org/legacy/

0 commit comments

Comments
 (0)