test: prove platform sources need no bindings
This commit is contained in:
@@ -113,11 +113,10 @@ auth admin are implemented. The next work is polish, not new broad surfaces.
|
||||
- Completed source provider docs: `docs/source_provider_guide.md` now covers
|
||||
MCP HTTP, MCP stdio, Python sources, auth refs, OAuth refresh-token setup,
|
||||
diagnostics, and the Google Drive MCP caveat.
|
||||
- Next design work: distinguish platform capability sources from external
|
||||
source providers with metadata/policy on `CapabilitySource`. `wf.*` sources
|
||||
such as `wf.std`, `wf.admin`, `wf.recipes`, and future `wf.source` should be
|
||||
process-provided platform sources, not account-bound source bindings.
|
||||
- Next design work after platform source policy: add `wf.source` helper
|
||||
- Completed platform source policy: `wf.*` process-provided sources are marked
|
||||
as platform sources and no longer require self-bindings such as
|
||||
`wf.std=wf.std` in deployments.
|
||||
- Next design work: add `wf.source` helper
|
||||
capabilities for source-bound refs. Resource/prompt refs should be inert
|
||||
pass-by-value data using `logical_source`; only explicit source-aware nodes
|
||||
should dereference them through runtime/platform context.
|
||||
|
||||
@@ -146,6 +146,40 @@ async def test_local_static_server_inspects_and_reads_bounded_trace(tmp_path) ->
|
||||
assert len(trace["trace"]) == 1
|
||||
|
||||
|
||||
async def test_local_static_wf_std_deployment_runs_without_source_binding(
|
||||
tmp_path,
|
||||
) -> None:
|
||||
server = build_local_static_workflow_server(tmp_path / "store")
|
||||
api = server.api
|
||||
plan = _constant_plan()
|
||||
|
||||
artifact_result = await api.create_artifact_from_plan(
|
||||
artifact_id="server_constant_no_binding",
|
||||
version=1,
|
||||
title="Server Constant No Binding",
|
||||
plan=plan.model_copy(update={"name": "server_constant_no_binding"}),
|
||||
outcomes=["ok"],
|
||||
source_bindings={},
|
||||
)
|
||||
deployment_result = await api.save_deployment(
|
||||
{
|
||||
"id": "server_constant_no_binding.default",
|
||||
"artifact_id": "server_constant_no_binding",
|
||||
"artifact_version": 1,
|
||||
"bindings": {},
|
||||
}
|
||||
)
|
||||
run_result = await api.run_deployment(
|
||||
deployment_id="server_constant_no_binding.default",
|
||||
workflow_input={},
|
||||
)
|
||||
|
||||
assert artifact_result["artifact_id"] == "server_constant_no_binding"
|
||||
assert deployment_result["deployment_id"] == "server_constant_no_binding.default"
|
||||
assert run_result["status"] == "completed"
|
||||
assert run_result["output"]["result"] == "hello from server"
|
||||
|
||||
|
||||
def test_local_static_server_has_no_source_registry_admin(tmp_path) -> None:
|
||||
server = build_local_static_workflow_server(tmp_path / "store")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user