Skip to content

Commit 2a49167

Browse files
hyperpolymathclaude
andcommitted
docs: add paper sketch for Zenodo/arXiv submission on cross-ecosystem package management
Working title: OPSM: Trust-First Package Management for the Ecosystem-of-Ecosystems Era. Section map, core claims table, assignment matrix, design-decision provenance notes. Routes prose to CHATGPT, formalism to CLAUDE, figures to VIBE. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 2a252a7 commit 2a49167

1 file changed

Lines changed: 204 additions & 0 deletions

File tree

docs/PAPER-SKETCH-zenodo-arxiv.md

Lines changed: 204 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,204 @@
1+
# Paper Sketch — Zenodo / arXiv Submission
2+
3+
**Working Title:** *OPSM: Trust-First Package Management for the Ecosystem-of-Ecosystems Era*
4+
**Alt Title:** *Beyond Language Silos: Inclusive, Formally-Verified Cross-Ecosystem Dependency Management*
5+
**Venue target:** arXiv cs.SE or cs.PL; deposit to Zenodo for DOI
6+
**Audience:** PL/SE researchers, package manager implementors, security practitioners
7+
**Format:** ~8 000 words, conference-paper style; no IEEE/ACM overhead needed for arXiv/Zenodo
8+
**Status:** SKETCH — not yet written; route to CHATGPT for prose, CLAUDE for formal claims
9+
10+
---
11+
12+
## 1. The Core Argument (one paragraph)
13+
14+
Modern projects are not monolingual. A typical mid-2020s system combines a Rust core, a
15+
Deno/ReScript frontend, Elixir coordination services, Julia batch scripts, and Zig
16+
FFI bridges — and that is before counting the niche languages in embedded subsystems
17+
(Ada safety core, Idris2 proof layer, Gleam actor network). Yet every package manager
18+
available today is language-local: Cargo serves Rust, Hex serves Elixir, npm serves
19+
JavaScript, each with its own trust model, its own resolver, its own vulnerability feed.
20+
The result is *N* separate supply-chain attack surfaces, *N* separate pinning disciplines,
21+
*N* separate audit processes — for one logical project. We call this the
22+
**ecosystem-of-ecosystems problem**. OPSM is our answer: a single CLI with 101 registry
23+
adapters, a unified trust pipeline from provenance generation to post-quantum attestation,
24+
a formally-verified resolver, and a Human-Assisted Registry that enfranchises languages
25+
whose communities are too small to operate a package index.
26+
27+
---
28+
29+
## 2. Structure / Section Map
30+
31+
### §1 Introduction
32+
- The polyglot shift: data from GitHub Language Statistics, TIOBE polyglot monorepos
33+
- Supply-chain incidents that crossed language boundaries (Log4Shell cascade,
34+
node-ipc, eslint-scope, PyPI typosquat → downstream Rust builds)
35+
- Gap: no cross-ecosystem trust standard; SLSA is language-agnostic in principle but
36+
per-ecosystem in practice
37+
- Contribution list (bullet form, verifiable against OPSM implementation)
38+
39+
### §2 Background and Related Work
40+
- Language-local PMs: Cargo, npm/Deno, pip, Hex, pub (Dart), pub.dev, RubyGems,
41+
Hackage — what each does well and what it cannot see
42+
- Cross-ecosystem tools that exist: Nix/Guix (good: reproducibility; gap: language
43+
semantics opaque to resolver), Renovate/Dependabot (good: multi-ecosystem awareness;
44+
gap: no trust pipeline, no verification, read-only)
45+
- Supply-chain security standards: SLSA, SBOM (SPDX/CycloneDX), Sigstore, IANA
46+
package-metadata specs, OpenSSF Scorecard
47+
- PubGrub resolver: what it guarantees vs what ad-hoc SAT/backtracking cannot
48+
49+
### §3 The Ecosystem-of-Ecosystems Problem (formalism + examples)
50+
51+
**Definition.** An *ecosystem* E is a tuple (R, V, M) where R is a registry,
52+
V is a version scheme (Semver, PEP 440, Go MVS, etc.), and M is a manifest format
53+
(Cargo.toml, package.json, mix.exs, etc.). An *ecosystem-of-ecosystems project* P
54+
is a project whose dependency graph D spans ≥2 distinct ecosystems.
55+
56+
**Claim 1.** For any P with ecosystems {E₁, ..., Eₙ}, the union of attack surfaces
57+
is at least Σᵢ|trust_assumptions(Eᵢ)| — there is no sub-additive interaction without
58+
a shared trust root.
59+
60+
**Claim 2.** Resolver correctness across Eᵢ requires version-scheme translation
61+
(e.g. Semver ↔ PEP 440) plus a monotonicity invariant that PubGrub can maintain
62+
but greedy resolvers cannot.
63+
64+
**Examples:** real incidents (with CVEs) where a vulnerability in ecosystem Eᵢ
65+
propagated through a cross-ecosystem build graph to Eⱼ.
66+
67+
### §4 OPSM Architecture
68+
69+
4.1 **Registry Layer** (101 adapters)
70+
- 8 first-class adapters (Crates, npm, Hex, PyPI, RubyGems, Go, Hackage, pub)
71+
- 93 plugin adapters (asdf plugins, language-specific custom registries)
72+
- Uniform adapter interface: `fetch_versions/2`, `fetch_manifest/2`,
73+
`fetch_tarball/3`, `verify_checksum/2`
74+
- ETS-based caching with TTL; federation propagation
75+
76+
4.2 **Unified Resolver** (PubGrub over V)
77+
- Version scheme normalisation layer: `Semver`, `Pep440`, `GoMVS``ComparableVersion`
78+
- Cross-ecosystem conflict detection: when Eᵢ and Eⱼ transitively share a native dep
79+
(e.g. OpenSSL), OPSM detects the diamond and applies the strictest version bound
80+
- Property-based testing: ∀ inputs, PubGrub terminates and produces a minimal solution
81+
(QuickCheck / StreamData proofs)
82+
83+
4.3 **Trust Pipeline** (5 microservices)
84+
- `claim-forge` (Rust): SLSA Level 3 provenance generation, ed25519+Dilithium5 signing
85+
- `checky-monkey` (Rust): tarball integrity, SBOM extraction, CycloneDX validation
86+
- `palimpsest-license` (Rust/Elixir): SPDX expression compatibility matrix,
87+
PMPL/MPL/AGPL/MIT/Apache interactions verified
88+
- `oikos` (Elixir): sustainability scoring — 8 dimensions (maintenance, bus factor,
89+
funding, responsiveness, test coverage, security posture, docs quality, governance)
90+
- `cicd-hyper-a` (Rust): publication + federation, SLSA attestation anchoring
91+
92+
4.4 **Post-Quantum Hardening**
93+
- Motivation: harvest-now-decrypt-later against package signatures
94+
- Dilithium5 + Ed25519 hybrid; Kyber-1024 KEM for key exchange; SPHINCS+ for
95+
time-stamp commitments
96+
- Implemented as Rust NIF called from Elixir; benchmarks show < 2ms overhead
97+
for typical package verification
98+
99+
4.5 **Human-Assisted Registry (HAR)**
100+
- Problem: minority-language ecosystems (Pony, Lobster, Pharo, GDScript, Idol, etc.)
101+
have no centralised registry; they distribute via git + manual instructions
102+
- HAR: three agentic discovery agents (GitHub scraper, web crawler, mirror finder)
103+
that build a registry record with human curation step before acceptance
104+
- Inclusion claim: any language that has ≥1 public package can participate without
105+
infrastructure investment; HAR provides the indexing layer
106+
- Governance: curation committee model; RFC process for new language onboarding
107+
108+
4.6 **Manifest Interoperability**
109+
- 10 input formats → unified internal representation → 7 output formats
110+
- Round-trip fidelity: what is preserved vs what is lossy (documented per format)
111+
- Lock-file generation: deterministic across OPSM versions
112+
113+
### §5 Formal Guarantees and Verification
114+
- PubGrub properties: completeness, minimality, termination — proven via StreamData
115+
- License compatibility: SPDX expression decision procedure proven correct for
116+
a subset of SPDX (excluding GPL linking edge cases; explicitly out of scope)
117+
- SSRF and DoS prevention: verified block at the resolver boundary
118+
- What we do NOT prove (honesty): we cannot verify upstream registry honesty;
119+
trust pipeline mitigates but does not eliminate
120+
121+
### §6 Evaluation
122+
123+
6.1 **Correctness** (547 core + 40 property + 49 integration tests)
124+
- Resolver correctness vs npm/pip on their own test suites (cross-ecosystem cases)
125+
- Trust pipeline false positive/negative rates on known-good and known-bad packages
126+
127+
6.2 **Performance**
128+
- Resolver: compared to `npm install`, `cargo build`, `mix deps.get` on equivalent
129+
dependency graphs; OPSM overhead breakdown
130+
- Trust pipeline: per-package latency distribution; cache hit rates
131+
132+
6.3 **Inclusion**
133+
- Languages onboarded via HAR: how many, time-to-first-package
134+
- Comparison: how many of those languages have any tooling in Nix/Guix/Renovate
135+
136+
6.4 **Security**
137+
- Supply chain simulation: inject a known-malicious package; OPSM detects via
138+
claim-forge provenance mismatch in N% of cases
139+
140+
### §7 Limitations and Future Work
141+
- Resolver completeness for circular cross-ecosystem deps (currently rejected)
142+
- HAR governance scalability (human curation bottleneck)
143+
- Plugin system sandboxing (subprocess boundary for untrusted registry adapters)
144+
- Integration with Guix/Nix channel infrastructure (OPSM as frontend)
145+
- Formal SLSA Level 4 upgrade (requires hermetic build environment)
146+
147+
### §8 Conclusion
148+
- The ecosystem-of-ecosystems problem is structural, not incidental
149+
- OPSM demonstrates it is solvable at acceptable overhead
150+
- Open source (PMPL-1.0-or-later / MPL-2.0 fallback); HAR governance model documented
151+
152+
---
153+
154+
## 3. Key Claims (must be backed by evidence before submission)
155+
156+
| Claim | Evidence needed | Status |
157+
|-------|-----------------|--------|
158+
| PubGrub correctly resolves cross-ecosystem deps where greedy fails | Failing test case + OPSM resolution | Needs construction |
159+
| Trust pipeline catches N% of SLSA-violating packages | Simulation or real-world corpus | Needs benchmark |
160+
| HAR reduces time-to-first-package for minority languages to < 1 day | Case studies (Pony? Lobster?) | Needs documentation |
161+
| Post-quantum signing overhead < 2ms at p99 | Benchmark in claim-forge | Claimed; needs formal measurement |
162+
| License compatibility matrix is sound for SPDX core | Formal proof or exhaustive case analysis | Needs proof or scope statement |
163+
164+
---
165+
166+
## 4. Assignment
167+
168+
| Task | Assigned to |
169+
|------|-------------|
170+
| Full prose draft (§1, §2, §8) | CHATGPT |
171+
| Formalism (§3, §5) | CLAUDE |
172+
| Architecture section (§4) | CLAUDE (from EXPLAINME.adoc) |
173+
| Evaluation data collection | Jonathan + CLAUDE (run benchmarks) |
174+
| Figures (architecture diagram, trust pipeline flow) | VIBE |
175+
| Bibliography | CHATGPT |
176+
| arXiv/Zenodo submission | Jonathan (manual) |
177+
178+
---
179+
180+
## 5. Notes from Past Discussions
181+
182+
The following design choices emerged from the long discussions that preceded OPSM v2:
183+
184+
- **"Package manager as CI gate, not just CLI tool"** — the trust pipeline must run
185+
in CI, not just locally, so OPSM ships as a GitHub Actions step as well as a CLI
186+
- **"Registry adapters must be hot-reloadable"** — this is why the adapter interface
187+
is a clean function triple; new registries do not require recompile
188+
- **"Version schemes are not comparable"** — the normalisation layer is non-trivial;
189+
PEP 440 post/dev releases have no Semver equivalent and must be handled as
190+
out-of-band metadata
191+
- **"Minority languages matter"** — the explicit decision that OPSM will never say
192+
"your language is too small to matter"; HAR is the institutional commitment to that
193+
- **"Trust is not binary"** — oikos sustainability score is NOT a block/allow gate;
194+
it is advisory metadata surfaced to the developer; paternalistic blocking would
195+
reduce adoption
196+
- **"Post-quantum NOW, not later"** — harvest-now-decrypt-later means today's signed
197+
packages will be forgeable in ~10 years if only classical signatures are used;
198+
Dilithium5 hybrid is the hedge
199+
200+
---
201+
202+
*Route to CHATGPT for §1/§2/§8 prose. Route to CLAUDE for §3/§5 formalism and §4 draft.*
203+
*Zenodo: create new deposit under hyperpolymath community, select CC-BY-4.0 for paper text.*
204+
*arXiv: cs.SE primary, cs.CR secondary (supply-chain security angle).*

0 commit comments

Comments
 (0)