Saved in:
| Main Author: | |
|---|---|
| Format: | Recurso digital |
| Language: | |
| Published: |
Zenodo
2026
|
| Online Access: | https://doi.org/10.5281/zenodo.19392138 |
| Tags: |
Add Tag
No Tags, Be the first to tag this record!
|
Table of Contents:
- <h1>Changelog</h1> <h2>v0.2.0 (unreleased)</h2> <h3>Security</h3> <ul> <li><strong>S-H1</strong>: MCP tools now validate file paths — reject traversal, absolute paths, directory components (CWE-22)</li> <li><strong>S-H2</strong>: OPA subprocess has 30s timeout with <code>OPA_TIMEOUT_SECONDS</code> constant (CWE-400)</li> <li><strong>S-H3</strong>: OPA stderr no longer leaked to caller (CWE-209)</li> <li><strong>S-M6</strong>: opa_smoke.sh uses mktemp + trap cleanup (CWE-377)</li> <li>.gitignore adds .env exclusion</li> </ul> <h3>Features</h3> <ul> <li><strong>Parallel rendering</strong>: <code>execution_mode: parallel</code> now produces fan-out DAG (no depends)</li> <li>Execution mode annotation (<code>orbital/execution-mode</code>) in rendered workflows</li> </ul> <h3>Code quality</h3> <ul> <li><strong>H-1</strong>: policy.py stdout/stderr handling fixed</li> <li><strong>H-2</strong>: workflow_name sanitized at creation time (unified truncation)</li> <li><strong>H-3</strong>: <code>sanitize_k8s_name</code> renamed to public API (no underscore)</li> <li><strong>H-4</strong>: eval_runner uses <code>__file__</code>-based paths (CWD-independent)</li> <li><code>mcp/__init__.py</code> added, <code>MissionPlan.events</code> enforces min_length=1</li> <li>Priority range documented (0-100 vs ORCHIDE 1-4)</li> </ul> <h3>Infrastructure</h3> <ul> <li>GitHub Actions CI pipeline with coverage + OPA cache</li> <li>Docker image: non-root user, .dockerignore, smoke tests</li> <li>Makefile PYTHONPATH fixed (<code>make test</code> works for fresh clones)</li> </ul> <h3>Testing</h3> <ul> <li>142+ tests (up from 98 in v0.1.0)</li> <li>MCP smoke tests (5 tools via async API)</li> <li>Docker smoke tests (3 tests, skip when no daemon)</li> <li>Security tests: path traversal (6), OPA timeout (3), policy output (4)</li> <li>Coverage ~78% (up from 57%)</li> </ul> <h3>Documentation</h3> <ul> <li>Strategic analysis document (docs/14_strategic_analysis.md)</li> <li>Full-review Phase 1-3 reports in .full-review/</li> </ul> <h2>v0.1.1 (2026-04-02)</h2> <h3>Changes since v0.1.0</h3> <ul> <li>Fix #8: compiler logs skipped non-acquisition events</li> <li>Fix #14: eval_runner auto-discovers golden cases via glob</li> <li>Fix schema gaps: orbit Field(ge=0), duration_seconds Field(ge=0), mission_id not empty</li> <li>Coverage 57% → 74%, compilation summary logging</li> <li>CI: pytest --cov, OPA cache, smoke all plans, pytest-cov==6.0.0</li> </ul> <h2>v0.1.0 (2026-04-02)</h2> <p>First release of the ground-side ORCHIDE-aligned mission plan compiler.</p> <h3>Core</h3> <ul> <li><strong>Mission plan schema</strong> aligned with ORCHIDE KubeCon EU 2026 slide 9: orbit, duration_seconds, landscape_type, StepPhase (preprocessing/ai/postprocessing), ExecutionMode (sequential/parallel).</li> <li><strong>Policy guardrails</strong>: 10 OPA/Rego deny rules covering mission_id, events, services, GPU fallback, zero priority, acceleration coherence, download constraints, empty steps, landscape type.</li> <li><strong>Custom translation layer</strong>: <code>compile_plan_to_intents()</code> produces <code>WorkflowIntent</code> IR with computed resource_hints (9 fields including execution_mode).</li> <li><strong>Argo Workflow renderer</strong>: DAG-based workflows with phase annotations, priority metadata, resource hints, RFC 1123 name sanitization. Passes <code>argo lint</code> v4.0.1.</li> <li><strong>Kueue Job renderer</strong>: optional admission mapping with GPU resource requests, nodeSelector, tolerations. Cluster admission confirmed via integration smoke test.</li> </ul> <h3>Contracts (interface definitions only — no runtime)</h3> <ul> <li><code>contracts/simulation.py</code>: 5 models (AcquisitionReplayEvent, DownloadWindowEvent, WorkflowTrigger, SimulationTimeline, SimulationResult)</li> <li><code>contracts/packaging.py</code>: 6 models (ApplicationIdentity, ApplicationInput/Output, RuntimePreference, PolicyHints, PackageManifest)</li> <li><code>contracts/storage.py</code>: 3 models (FileRegistration, FileQuery, FileRecord)</li> <li><code>contracts/monitor.py</code>: 3 models (MetricPoint, LogEntry, HealthStatus)</li> <li><code>contracts/communication.py</code>: 2 models + 1 enum (DownlinkRequest, UplinkAck, UplinkStatus)</li> <li><code>contracts/security.py</code>: 2 models (AuthToken, IntegrityCheck)</li> </ul> <h3>Agent tooling</h3> <ul> <li>Claude Code settings.json (defaultMode: plan, PostToolUse hook)</li> <li>12 agents, 10 commands, 8 skills (includes wshobson/agents selection)</li> <li>Market positioning document with cross-validated competitive analysis</li> </ul> <h3>Documentation</h3> <ul> <li>28 .md files aligned with ORCHIDE-complementary mission statement</li> <li>Source-to-ORCHIDE-slide mapping table in docs/04_architecture.md</li> <li>Validation layering table (schema vs policy defense-in-depth)</li> </ul> <h3>Testing</h3> <ul> <li>98 tests across 8 test files</li> <li>2 golden eval cases</li> <li>OPA smoke, Argo lint, Kueue integration smoke all passing</li> </ul>