Skip to content

Foundation: repair build path and add air-gapped Meteorium control plane - #9

Draft
devXyi wants to merge 5 commits into
mainfrom
codex/foundry-airgap-foundation
Draft

devXyi wants to merge 5 commits into
mainfrom
codex/foundry-airgap-foundation

Conversation

@devXyi

@devXyi devXyi commented Sep 19, 2026

Copy link
Copy Markdown
Owner

Verified changes

  • Removes the malformed tracked Rust filename that prevented a Windows checkout and made the repository non-buildable in this workspace.
  • Adds a dependency-free Node.js air-gap control plane and operator console.
  • Provides three constrained nodes: dataset intake, offline simulation, and audit verification. No tenant-supplied shell command is executed.
  • Persists a hash-chained audit ledger and validates it through an HTTP end-to-end test.
  • Adds an internal-network Compose deployment with loopback-only access, read-only root filesystem, dropped capabilities, and a persistent state volume.

Verification performed

node --test passes the full HTTP lifecycle: unauthorized request rejection, node discovery, offline dataset registration, simulation, audit verification, and run lookup.

Not claimed / not tested

  • The Docker deployment was not run because Docker is not installed in this workspace.
  • The legacy Go/Rust services were not compiled because Go and Cargo are not installed in this workspace.
  • The offline simulation response is explicitly marked demonstration-only; it is not a calibrated climate-risk model or a replacement for a local, validated Meteorium data/model package.

This is a reviewable foundational vertical slice, not a claim of parity with Palantir Foundry.

Copilot AI lite review requested due to automatic review settings September 19, 2026 10:53

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Unresolved findings remain, including a critical persistence issue.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 1 High severity · 4 Medium severity

Open (5)
What changed in this PR

Repairs the build path and adds a dependency-free, air-gapped Meteorium control plane with audit persistence and an operator console.

Changes:

  • Adds authenticated dataset, simulation, and audit APIs.
  • Adds hash-chained persistence and HTTP lifecycle tests.
  • Adds a hardened, loopback-only Compose deployment.
File Reviewed changes and final findings
docker-compose.airgap.yml Restricted Compose deployment.
airgap/​README.md Usage, deployment, and limitation documentation.
airgap/​Dockerfile Minimal Node.js container image.
airgap/​control-plane/​server.mjs Control-plane, execution, persistence, and ledger logic. Findings: spoofable operator attribution (moderate, 1 vote); inherited-property and default handling (moderate, 2 votes); orphaned running records after validation failures (moderate, 3 votes); unsynchronized persistence writes causing data loss (critical, 3 votes); null request bodies causing 500 responses (moderate, 2 votes); default binding to all interfaces (moderate, 2 votes).
airgap/​control-plane/​server.test.mjs End-to-end HTTP lifecycle tests.
airgap/​control-plane/​public/​terminal.html Operator console.
airgap/​control-plane/​package.json Dependency-free Node.js project metadata and scripts.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

run.completed_at = new Date().toISOString();
run.output = output;
await store.appendEvent({ actor, action: `node.${nodeId}.${command}`, resource: run.id, metadata: { status: run.status } });
await store.save();
Comment on lines +172 to +173
const scenario = requireString(input?.scenario || "baseline", "scenario", 32).toLowerCase();
if (!(scenario in SCENARIO_PREMIUM)) {
Comment on lines +225 to +230
store.state.runs.push(run);

let output;
if (nodeId === "meteorium-ingest") output = registerDataset(input, store.state);
if (nodeId === "meteorium-score") output = deterministicScore(input, store.state.datasets);
if (nodeId === "audit-ledger") output = verifyLedger(store.state.ledger);
Comment on lines +267 to +268
const body = await readJson(request);
const run = await executeRun(store, runMatch[1], body.command, body.input, actor);
if (process.argv[1] === fileURLToPath(import.meta.url)) {
const { server } = await createApp();
const port = Number(process.env.PORT || 8787);
server.listen(port, "0.0.0.0", () => console.log(`Prexus air-gap control plane listening on ${port}`));
Copilot AI review requested due to automatic review settings September 19, 2026 10:56

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

Unresolved control-plane validation, persistence, concurrency, audit attribution, and network-binding issues remain.

Review effort: Lite
Findings: 1 High severity · 4 Medium severity

Open (5)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants