The contract you asked for is recorded; neither side has built it yet
ai_stp#414 proposed an argv shape for software_install, software_update
and software_remove, and said you would not declare them on the wire until the
question had an answer. It has one, recorded in
docs/contracts/provider-protocol.md on the consumer side
(ai-engineers-guild/ai-stp@4fa361ab, and current on main):
--prefix is where the program goes; --target stays the configuration
directory. Different lifetimes, both absolute, never one flag for both.
- The plan carries an array,
software_artifacts. Each element is
platform, url, sha256, byte_length, entry_point.
apply receives a repeated --software-artifact, in the plan's order, so
a directory never hides which file answers which entry. software_remove is
plan and apply with no download phase and no --software-artifact at all.
- An unpinned platform refuses with
unsupported_platform.
- The purity of
plan for a declared program lifecycle is in conformance;
apply-operation stays in forbidden_in_safe_conformance.
- No new commands: the same
plan-operation and apply-operation, the same
journal, backup and plan-digest. The provider opens no socket.
Your four questions were answered exactly as you framed them, and the answer
took --prefix and the array shape as proposed rather than reworking them.
Where it stands, measured today
On our side the three operations exist once, as members of Operation in
apps/cli/src/ai_stp_cli/provider/protocol_v3.py. conformance_v3.py does not
mention software at all, and there is no planner, downloader, applier or
command. On yours, a code search across NDDev-OpenNetwork returns zero hits
for software_install in any of the seven *-setup-system repositories.
So the wire shape is settled and the code is absent on both sides. Neither of us
is waiting on the other any more, which is worth saying out loud, because
"waiting for the contract" was true last week and is not true now.
What we are doing, and the one thing we would like from you
We are building the consumer half against the recorded contract: the planner,
the download phase we hold, the applier that verifies sha256 and
byte_length before writing, the unsupported_platform refusal, and the
conformance case for the pure half. Until a provider declares the operations,
our side will refuse with unsupported_operation, and that refusal is what we
test first.
The ask: declare the three operations in provider-info when a build can
actually perform them — and not before, for exactly the reason you gave when
you declined to declare them earlier. One harness is enough to start; we would
rather exercise a real pair end to end on a disposable --prefix than have
seven declarations and nothing to run.
If any part of the recorded answer reads differently from what you proposed,
say so here before you build against it. Changing a declaration later changes
what a caller may ask for, and that is cheaper to fix in this thread than in a
release.
Nothing in this issue asks for a change to a shipped *-setup-system tree.
The contract you asked for is recorded; neither side has built it yet
ai_stp#414proposed an argv shape forsoftware_install,software_updateand
software_remove, and said you would not declare them on the wire until thequestion had an answer. It has one, recorded in
docs/contracts/provider-protocol.mdon the consumer side(
ai-engineers-guild/ai-stp@4fa361ab, and current onmain):--prefixis where the program goes;--targetstays the configurationdirectory. Different lifetimes, both absolute, never one flag for both.
software_artifacts. Each element isplatform,url,sha256,byte_length,entry_point.applyreceives a repeated--software-artifact, in the plan's order, soa directory never hides which file answers which entry.
software_removeisplan and apply with no download phase and no
--software-artifactat all.unsupported_platform.planfor a declared program lifecycle is in conformance;apply-operationstays inforbidden_in_safe_conformance.plan-operationandapply-operation, the samejournal, backup and
plan-digest. The provider opens no socket.Your four questions were answered exactly as you framed them, and the answer
took
--prefixand the array shape as proposed rather than reworking them.Where it stands, measured today
On our side the three operations exist once, as members of
Operationinapps/cli/src/ai_stp_cli/provider/protocol_v3.py.conformance_v3.pydoes notmention
softwareat all, and there is no planner, downloader, applier orcommand. On yours, a code search across
NDDev-OpenNetworkreturns zero hitsfor
software_installin any of the seven*-setup-systemrepositories.So the wire shape is settled and the code is absent on both sides. Neither of us
is waiting on the other any more, which is worth saying out loud, because
"waiting for the contract" was true last week and is not true now.
What we are doing, and the one thing we would like from you
We are building the consumer half against the recorded contract: the planner,
the download phase we hold, the applier that verifies
sha256andbyte_lengthbefore writing, theunsupported_platformrefusal, and theconformance case for the pure half. Until a provider declares the operations,
our side will refuse with
unsupported_operation, and that refusal is what wetest first.
The ask: declare the three operations in
provider-infowhen a build canactually perform them — and not before, for exactly the reason you gave when
you declined to declare them earlier. One harness is enough to start; we would
rather exercise a real pair end to end on a disposable
--prefixthan haveseven declarations and nothing to run.
If any part of the recorded answer reads differently from what you proposed,
say so here before you build against it. Changing a declaration later changes
what a caller may ask for, and that is cheaper to fix in this thread than in a
release.
Nothing in this issue asks for a change to a shipped
*-setup-systemtree.