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
|
- Completed source provider docs: `docs/source_provider_guide.md` now covers
|
||||||
MCP HTTP, MCP stdio, Python sources, auth refs, OAuth refresh-token setup,
|
MCP HTTP, MCP stdio, Python sources, auth refs, OAuth refresh-token setup,
|
||||||
diagnostics, and the Google Drive MCP caveat.
|
diagnostics, and the Google Drive MCP caveat.
|
||||||
- Next design work: distinguish platform capability sources from external
|
- Completed platform source policy: `wf.*` process-provided sources are marked
|
||||||
source providers with metadata/policy on `CapabilitySource`. `wf.*` sources
|
as platform sources and no longer require self-bindings such as
|
||||||
such as `wf.std`, `wf.admin`, `wf.recipes`, and future `wf.source` should be
|
`wf.std=wf.std` in deployments.
|
||||||
process-provided platform sources, not account-bound source bindings.
|
- Next design work: add `wf.source` helper
|
||||||
- Next design work after platform source policy: add `wf.source` helper
|
|
||||||
capabilities for source-bound refs. Resource/prompt refs should be inert
|
capabilities for source-bound refs. Resource/prompt refs should be inert
|
||||||
pass-by-value data using `logical_source`; only explicit source-aware nodes
|
pass-by-value data using `logical_source`; only explicit source-aware nodes
|
||||||
should dereference them through runtime/platform context.
|
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
|
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:
|
def test_local_static_server_has_no_source_registry_admin(tmp_path) -> None:
|
||||||
server = build_local_static_workflow_server(tmp_path / "store")
|
server = build_local_static_workflow_server(tmp_path / "store")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user