Skip to content

Commit 4571c13

Browse files
committed
Close distributed proof matrix acceptance rows
1 parent 58b3bdc commit 4571c13

11 files changed

Lines changed: 186 additions & 9 deletions

docs/gn_ten_proof_matrix.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,30 @@ path, and run GitHub or Linear live commands by prefixing them with
174174
CI until node-lab migration. It does not prove owner facades, domain
175175
semantics, parity, production security, per-run cookie application to peers,
176176
or release boot.
177+
- `gn_ten_distributed_context_roundtrip`: records the v2 Phase 8 context
178+
distributed proof. It runs the fugu Context ABI baseline and distributed
179+
context scenario from `examples/gn_ten_distributed_stack`, represents
180+
AppKit, Mezzanine, Citadel, OuterBrain, and AITrace as distinct peer-node
181+
owner profiles, and records context packet hash, authority refs, render
182+
handoff refs, trace refs, evidence posture, owner `:pg` groups, and
183+
envelope scanner facts. It does not prove router/model invocation,
184+
Execution Plane lower lanes, production security, release boot, live
185+
provider behavior, or fault recovery.
186+
- `gn_ten_distributed_router_model_roundtrip`: records the v2 Phase 9
187+
router/model distributed proof. It extends the context proof through the
188+
deterministic TRINITY router adapter, Mezzanine render handoff, Jido
189+
Integration fake/local model invocation, token/cost facts, stream fragment
190+
posture, and terminal AppKit projection. It does not prove the unbuilt
191+
`full_9_node` lower-lane proof, live provider behavior, production
192+
security, release boot, GEPA candidate generation, or TRINITY long-loop
193+
feedback behavior beyond the deterministic route fixture.
194+
- `gn_ten_distributed_partition_recovery`: records the v2 Phase 11 fault and
195+
recovery proof. It starts from the implemented `router_model_6_node` proof
196+
and records bounded receipts for peer crash, node disconnect/heal, facade
197+
timeout, stale DTO, duplicate delivery, and AITrace exporter failure. It
198+
does not prove WAN partition behavior, Kubernetes/container discovery,
199+
production Erlang distribution security, live provider retry/billing,
200+
Execution Plane lower-lane partition behavior, or release boot.
177201
- `gn_ten_distributed_parity`: records the v2 Phase 13 semantic parity proof.
178202
It runs the fugu router/model monolith baseline and distributed router/model
179203
proof from one command, hashes deterministic semantic fields with
@@ -191,6 +215,15 @@ path, and run GitHub or Linear live commands by prefixing them with
191215
feasibility fields are supplied. It does not prove 32/49-node local stress,
192216
sustained SLOs, production distribution security, release boot, or live
193217
provider behavior.
218+
- `gn_ten_distributed_release_peer`: records the v2 Phase 16 release-path
219+
parity prototype. It verifies a test-only release-wrapper manifest for the
220+
`execution_plane_node` profile, records owner app start, expected app
221+
version, facade ping, code-path mode, and receipt-shape parity with peer
222+
mode, and emits bounded open-defect receipts for missing manifest, version
223+
mismatch, unavailable facade, and receipt-shape mismatch. It does not prove
224+
production release packaging, release artifact minimality, an all-domain
225+
production release, production distribution security, container/VM
226+
networking, or live provider behavior.
194227
- `cost_budget_scanner`: verifies adaptive token, provider request,
195228
self-hosted GPU minute, endpoint startup, eval batch, replay, optimization
196229
search, provider pool turn, role budget, promotion, failed retry, budget

lib/mix/tasks/stack_lab.gn_ten.node_lab.attach.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ defmodule Mix.Tasks.StackLab.GnTen.NodeLab.Attach do
33

44
use Mix.Task
55

6-
alias StackLab.GnTenNodeLab.{RunState, Runner}
6+
alias StackLab.GnTenNodeLab.{Runner, RunState}
77

88
@shortdoc "Prints a redacted gn-ten node-lab attach recipe"
99

lib/mix/tasks/stack_lab.gn_ten.node_lab.down.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ defmodule Mix.Tasks.StackLab.GnTen.NodeLab.Down do
33

44
use Mix.Task
55

6-
alias StackLab.GnTenNodeLab.{RunState, Runner}
6+
alias StackLab.GnTenNodeLab.{Runner, RunState}
77

88
@shortdoc "Clears gn-ten node-lab run state"
99

lib/mix/tasks/stack_lab.gn_ten.node_lab.probe.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ defmodule Mix.Tasks.StackLab.GnTen.NodeLab.Probe do
33

44
use Mix.Task
55

6-
alias StackLab.GnTenNodeLab.{RunState, Runner}
6+
alias StackLab.GnTenNodeLab.{Runner, RunState}
77

88
@shortdoc "Probes a gn-ten node-lab logical node"
99

lib/mix/tasks/stack_lab.gn_ten.node_lab.status.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ defmodule Mix.Tasks.StackLab.GnTen.NodeLab.Status do
33

44
use Mix.Task
55

6-
alias StackLab.GnTenNodeLab.{RunState, Runner}
6+
alias StackLab.GnTenNodeLab.{Runner, RunState}
77

88
@shortdoc "Reports gn-ten node-lab status"
99

lib/mix/tasks/stack_lab.gn_ten.node_lab.up.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ defmodule Mix.Tasks.StackLab.GnTen.NodeLab.Up do
33

44
use Mix.Task
55

6-
alias StackLab.GnTenNodeLab.{RunState, Runner}
6+
alias StackLab.GnTenNodeLab.{Runner, RunState}
77

88
@shortdoc "Boots a gn-ten node-lab topology"
99

mix.exs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,17 @@ defmodule StackLab.Workspace.MixProject do
132132
compile: [args: ["compile", "--warnings-as-errors"]],
133133
test: [args: ["test"], mix_env: "test", color: true],
134134
credo: [args: ["credo"]],
135-
docs: [args: ["docs"]]
135+
docs: [
136+
args: ["do", "deps.get", "+", "docs"],
137+
env: {__MODULE__, :docs_task_env},
138+
mix_env: "dev"
139+
]
136140
]
137141
]
138142
end
139143

144+
def docs_task_env(_context), do: [{"MIX_ENV", "dev"}]
145+
140146
defp docs do
141147
[
142148
main: "workspace_readme",

proof_matrix.yml

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,89 @@ proofs:
178178
authoritative_audit?: false
179179
production_deployment_proven?: false
180180

181+
- id: gn_ten_distributed_context_roundtrip
182+
owner_repo: stack_lab
183+
contract_family: "300 architecture"
184+
status: implemented
185+
profile: local_full
186+
command: cd examples/gn_ten_distributed_stack && mix stack_lab.gn_ten.distributed.prove --profile context_6_node --json
187+
fixture: examples/gn_ten_distributed_stack/priv/topologies/context_6_node.exs
188+
receipt: receipt://stack_lab/gn_ten_distributed_context_roundtrip/latest
189+
proves:
190+
- the fugu Context ABI baseline and distributed context proof run from one StackLab proof package
191+
- AppKit, Mezzanine, Citadel, OuterBrain, and AITrace are represented as distinct owner-profile peer nodes
192+
- context packet hash, authority refs, render handoff refs, trace refs, evidence posture, owner pg groups, and envelope scanner facts are present
193+
- proof receipts exclude Erlang cookies, raw prompts, raw memory, provider payloads, credentials, local PIDs, and private tool output
194+
does_not_prove:
195+
- router or model invocation behavior
196+
- Execution Plane lower-lane behavior
197+
- production distribution security
198+
- release artifact boot
199+
- live provider behavior
200+
- fault recovery
201+
next_action: keep this as the required context prerequisite for router/model and parity proofs
202+
trace_receipt:
203+
schema: aitrace.single_node_proof_trace.v1
204+
ref: trace://stack_lab/gn_ten_distributed_context_roundtrip/latest
205+
posture:
206+
authoritative_audit?: false
207+
production_deployment_proven?: false
208+
209+
- id: gn_ten_distributed_router_model_roundtrip
210+
owner_repo: stack_lab
211+
contract_family: "300 architecture"
212+
status: implemented
213+
profile: local_full
214+
command: cd examples/gn_ten_distributed_stack && mix stack_lab.gn_ten.distributed.prove --profile router_model_6_node --json
215+
fixture: examples/gn_ten_distributed_stack/priv/topologies/router_model_6_node.exs
216+
receipt: receipt://stack_lab/gn_ten_distributed_router_model_roundtrip/latest
217+
proves:
218+
- the fugu router/model baseline and distributed router/model proof run from one StackLab proof package
219+
- route decision refs, render handoff refs, model invocation refs, token and cost facts, stream fragment posture, and terminal AppKit projection facts are present
220+
- Jido Integration model invocation stays behind owner DTOs and fake/local inference by default
221+
- router/model receipts reject raw provider payloads and preserve deterministic receipt hashes for parity
222+
does_not_prove:
223+
- full 9-node Execution Plane lower-lane proof
224+
- live provider behavior
225+
- production distribution security
226+
- release artifact boot
227+
- GEPA candidate generation
228+
- TRINITY long-loop feedback behavior beyond the deterministic route adapter fixture
229+
next_action: use this proof as the semantic input to parity and partition-recovery proofs; leave full_9_node open until lower-lane runtime is implemented
230+
trace_receipt:
231+
schema: aitrace.single_node_proof_trace.v1
232+
ref: trace://stack_lab/gn_ten_distributed_router_model_roundtrip/latest
233+
posture:
234+
authoritative_audit?: false
235+
production_deployment_proven?: false
236+
237+
- id: gn_ten_distributed_partition_recovery
238+
owner_repo: stack_lab
239+
contract_family: "300 architecture"
240+
status: implemented
241+
profile: local_full
242+
command: cd examples/gn_ten_distributed_stack && mix stack_lab.gn_ten.distributed.prove --profile partition_recovery --json
243+
fixture: examples/gn_ten_distributed_stack
244+
receipt: receipt://stack_lab/gn_ten_distributed_partition_recovery/latest
245+
proves:
246+
- StackLab records bounded fault receipts for peer crash, node disconnect and heal, facade timeout, stale DTO, duplicate delivery, and AITrace exporter failure
247+
- recovery receipts preserve owner safe actions, idempotency posture, outbox or deny posture, trace refs, and cleanup state
248+
- partition recovery starts from the implemented router_model_6_node proof rather than a separate untracked harness path
249+
does_not_prove:
250+
- WAN partition behavior
251+
- Kubernetes or container discovery
252+
- production Erlang distribution security
253+
- live provider retry or billing behavior
254+
- Execution Plane lower-lane partition behavior
255+
- release artifact boot
256+
next_action: keep fault fixtures as regression inputs for Phase 18 hardening
257+
trace_receipt:
258+
schema: aitrace.single_node_proof_trace.v1
259+
ref: trace://stack_lab/gn_ten_distributed_partition_recovery/latest
260+
posture:
261+
authoritative_audit?: false
262+
production_deployment_proven?: false
263+
181264
- id: gn_ten_distributed_parity
182265
owner_repo: stack_lab
183266
contract_family: "300 architecture"
@@ -234,6 +317,33 @@ proofs:
234317
authoritative_audit?: false
235318
production_deployment_proven?: false
236319

320+
- id: gn_ten_distributed_release_peer
321+
owner_repo: stack_lab
322+
contract_family: "300 architecture"
323+
status: implemented
324+
profile: local_full
325+
command: cd examples/gn_ten_distributed_stack && mix stack_lab.gn_ten.node_lab.release.verify --json
326+
fixture: examples/gn_ten_distributed_stack/priv/releases/execution_plane_node_release_peer.exs
327+
receipt: receipt://stack_lab/gn_ten_distributed_release_peer/latest
328+
proves:
329+
- one test-only release-wrapper manifest can boot the execution_plane_node profile and return a peer-mode-compatible node receipt shape
330+
- release-path verification records owner app start, expected app version, facade ping, code-path mode, and receipt-shape parity with peer mode
331+
- missing manifest, version mismatch, unavailable facade, and receipt-shape mismatch produce bounded open-defect receipts
332+
does_not_prove:
333+
- production release packaging
334+
- release artifact minimality
335+
- a single all-domain production release
336+
- production distribution security
337+
- container or VM networking
338+
- live provider behavior
339+
next_action: keep release mode as an opt-in parity prototype until peer-mode distributed semantics stay green under Phase 18 regressions
340+
trace_receipt:
341+
schema: aitrace.single_node_proof_trace.v1
342+
ref: trace://stack_lab/gn_ten_distributed_release_peer/latest
343+
posture:
344+
authoritative_audit?: false
345+
production_deployment_proven?: false
346+
237347
- id: product_no_bypass
238348
owner_repo: stack_lab
239349
contract_family: "300 architecture"

support/gn_ten_node_lab/test/stack_lab/gn_ten_node_lab/runner_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ defmodule StackLab.GnTenNodeLab.RunnerTest do
9797
defp temp_state_path do
9898
Path.join(
9999
System.tmp_dir!(),
100-
"stack_lab_node_lab_state_#{System.unique_integer([:positive])}.json"
100+
"stack_lab_node_lab_state_#{System.system_time(:nanosecond)}_#{System.unique_integer([:positive, :monotonic])}.json"
101101
)
102102
end
103103

test/stack_lab/gn_ten_proof_matrix_test.exs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,32 @@ defmodule StackLab.GnTen.ProofMatrixTest do
8686
assert report.schema_version == "gn_ten_proof_matrix_v1"
8787
assert report.workspace_ref == "workspace://nshkrdotcom/gn-ten"
8888
assert report.branch_policy == "main_only"
89-
assert report.proof_count == 24
90-
assert report.implemented_count == 24
89+
assert report.proof_count == 30
90+
assert report.implemented_count == 30
9191
assert report.partial_count == 0
9292
assert report.missing_proof_count == 0
9393
assert report.highest_risk_missing_proof == nil
9494
end
9595

96+
test "checked-in proof matrix closes implemented distributed StackLab claims" do
97+
assert {:ok, report} = ProofMatrix.validate()
98+
proof_ids = MapSet.new(Enum.map(report.proofs, & &1.id))
99+
100+
required_ids =
101+
MapSet.new(~w(
102+
gn_ten_distributed_topology_freeze
103+
gn_ten_distributed_preflight
104+
gn_ten_distributed_context_roundtrip
105+
gn_ten_distributed_router_model_roundtrip
106+
gn_ten_distributed_partition_recovery
107+
gn_ten_distributed_parity
108+
gn_ten_distributed_scale_12
109+
gn_ten_distributed_release_peer
110+
))
111+
112+
assert MapSet.subset?(required_ids, proof_ids)
113+
end
114+
96115
defp failure_code?(report, code) do
97116
Enum.any?(report.failures, &(&1.code == code))
98117
end

0 commit comments

Comments
 (0)