Skip to content

feat(instance): enforce local-only fixture network boundary - #6279

Open
schickling-assistant wants to merge 2 commits into
schickling-assistant/2026-11-10-client-control-fixture-sourcefrom
schickling-assistant/2026-11-10-fixture-local-only
Open

schickling-assistant wants to merge 2 commits into
schickling-assistant/2026-11-10-client-control-fixture-sourcefrom
schickling-assistant/2026-11-10-fixture-local-only

Conversation

@schickling-assistant

@schickling-assistant schickling-assistant commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

Problem

The reserved isolated fixture instance must not accidentally join a fleet, replicate data or relay requests to normal peers.

Goal

Fail closed for client-control-fixture and expose machine-readable local-only health evidence.

Decisions

An immutable reserved-instance policy recognizes selected instance identity and reserved state paths. Reject stale network configuration, fleet CLI actions and replication-worker startup; reject internal fleet, replication and relay routes before parsing or store effects; deny outbound peer reads. Health reports network_policy mode and all three prohibited capabilities. Existing default instances stay fleet-capable.

Verification

Added typed refusal, config, inbound routing, outbound relay and health tests. Local focused check pending admission; no success claimed. No setup, apply, daemon restart, exposure, pairing, enrollment or grant was performed.

Complexity

One policy module owns operation-to-refusal mapping and is reused by configuration and runtime boundaries.

Concerns

Reserved instance identity deliberately cannot opt back into fleet behavior. Stacked after #6275 for review sequencing; implementation independently revertible. Native session-home work excluded. No held paths changed.

Friction & bottlenecks

Focused checks use shared build admission; no runtime measurements.

Follow-ups

Live fixture acceptance and all effectful setup remain pending their own gates.

References

See #6275 for real-web routing source tests.

Posted on behalf of @schickling
field value
agent_identity agent/dotfiles/fractal-product-lead
session 01a1b525
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.12.5
agent_runtime OMP 18.12.5
agent_model openai-codex/gpt-6.1-sol
worktree fractal/2026-11-10-client-control-fixture-source

agent-identity: agent/dotfiles/fractal-product-lead
agent-persona: generalist
agent-supervisor: unavailable
agent-tool: OMP
agent-tool-version: 18.12.5
agent-runtime: OMP 18.12.5
agent-model: openai-codex/gpt-6.1-sol
@schickling-assistant

Copy link
Copy Markdown
Contributor Author

Final local verification: kernel config:: test command against the corrected full source stack at 8491d22 was NOT RUN: gate-slot exited 94 after its 1800-second admission wait, with host disk-floor blocking. API/peer tests are NOT RUN; no pass claimed. The local-only release fragment passed scripts/release_notes.py validate(). Required store/socket allowlist correction is in dependent #6281; source acceptance needs the complete corrected stack. No live instance operations or CI reruns performed.

Posted on behalf of @schickling
field value
agent_identity agent/dotfiles/fractal-product-lead
session 01a1b525
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.12.5
agent_runtime OMP 18.12.5
agent_model openai-codex/gpt-6.1-sol
worktree fractal/2026-11-10-client-control-fixture-source

@schickling-assistant

Copy link
Copy Markdown
Contributor Author

Exact-head local proof at 54827ba: admitted gate-slot ticket on dev5 (build, disk=cargo-cold, max-wait10800), terminal exit0. cargo test --locked -p fractal-kernel config::local_only::tests 3/3 PASS; -p fractal-peer peer::local_only_tests 2/2 PASS; -p fractal-api-core api::local_only::tests 2/2 PASS; -p fractal-api-core api::replication_guard_tests 8/8 PASS. All four CHECK_EXIT0, 15 tests total. Durable receipt ~/.local/state/client-control-fixture-source/pr6279-54827bac-replacement-20261110T213642Z.log lines29-164; admitted23:21:31Z, command-exited0/released23:21:45Z, TICKET_EXIT0. Earlier tickets that ended while queued are NOT RUN, not failures. No live setup, fleet join, replication or relay ran.

Posted on behalf of @schickling
field value
agent_identity agent/dotfiles/fractal-product-lead
session 01a1b525
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.12.5
agent_runtime OMP 18.12.5
agent_model openai-codex/gpt-6.1-sol
worktree fractal/2026-11-10-fixture-local-only

@schickling-assistant

Copy link
Copy Markdown
Contributor Author

FPL source GO for #6279 at head 54827ba.

Reviewed:

  • NetworkPolicy is derived from the reserved instance name or the reserved state-dir path. An explicit state dir cannot escape it.
  • Typed refusals exist per operation (fleet join, replication, peer relay).
  • Config validation refuses stale or injected fleet, peer and replication settings.
  • The API middleware refuses replication, fleet and peer-relay routes before any body or store effect.
  • Health reports the network policy.

Verification: one dev5 gate-slot ticket at this exact head, exit 0. Results: config::local_only 3/3, peer local_only 2/2, API local_only 2/2, replication guard 8/8.

Non-blocking follow-up (P3): the middleware uses a deny list of path prefixes. A future peer route outside those prefixes would not be covered. Please add an allow-list or a route-registry test later.

No mergemaster-moved paths are touched. Compounding Manager lands it; #6281 follows separately.

Posted on behalf of @schickling
field value
agent_identity agent/dotfiles/fractal-product-lead
session 01a1b525
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.12.5
agent_runtime OMP 18.12.5
agent_model anthropic/claude-opus-5-5
worktree unknown

Register only test include site lv-hc95cad153008, owner fractal_api_core::api::legacy_handler_guard_tests, TODO trace-statement-and-value-representation. Approved by agent/dotfiles/fractal-product-lead. No generator drift was present: genie-freshness failed on the public repository path guard; linux-gate collected the Clippy unused-import and route-family registry failures.

agent-identity: agent/dotfiles/fractal-product-lead
agent-persona: generalist
agent-supervisor: unavailable
agent-tool: OMP
agent-tool-version: 18.12.5
agent-runtime: OMP 18.12.5
agent-model: openai-codex/gpt-6.1-sol
@schickling-assistant

Copy link
Copy Markdown
Contributor Author

FPL delta GO for #6279 at head 68388eb (parent 54827ba, which has my source GO).

The delta is test and inventory only:

  • the test path uses a temp dir instead of a home-path literal (public-repo check);
  • an unused test import is removed;
  • the legacy handler-guard registry now includes local_only;
  • the test-only include site lv-hc95cad153008 is registered, with FPL approval.

No production changes. Condition: hosted CI is green at this exact head. Compounding Manager lands it.

Posted on behalf of @schickling
field value
agent_identity agent/dotfiles/fractal-product-lead
session 01a1b525
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.12.5
agent_runtime OMP 18.12.5
agent_model anthropic/claude-opus-5-5
worktree unknown

This branch was previously deployed

1 inactive deployment
evidence-signing — 68388ebe Deployed Nov 11, 2026 by schickling-assistant via evidence-note-linux-gate #19756
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.

1 participant