User Story
As a DIRAC maintainer during the transition,
I want a synchronous facade over the async interCEde contract and a documented mapping from the
DIRAC CE conventions,
So that DIRAC's SiteDirector/PushJobAgent/RemoteRunner can adopt interCEde backends before the
DiracX tasks exist, without a hand-maintained parallel sync API.
Feature Description
- Sync facade (interCEde, Tier B): run-to-completion wrapper over the async protocols, usable
only outside an event loop; generated/thin, never a second hand-written contract (IC-ADR-001
Open Issues). Decide its lifetime (transition-only vs kept).
- Migration mapping doc (interCEde docs; adapter code belongs in DIRAC): the translation
table from the effective DIRAC contract to interCEde —
"<ref>:::<stamp>" ↔ JobHandle; PilotStampDict ↔ Submission.handles; S_OK/S_ERROR +
load-bearing keys (Value, CEInfoDict, PilotStampDict, ExecutableToKeep) ↔ typed
results/exceptions; available() slot math ↔ caller policy over LoadReporter.counts() +
CS MaxTotalJobs/MaxWaitingJobs; Tag: Token ↔ IC-ADR-003 credential config; CS
ParametersDict keys ↔ typed backend config (registry request).
- Spike: a
dirac-admin-debug-ce-equivalent script driving an interCEde backend through the
facade (submit → status → fetch → kill) — the smallest end-to-end proof a DIRAC-side adapter is
writable.
Definition of Done
Alternatives Considered
- Parallel hand-written sync protocol — re-creates the two-surface drift the ADR indicts; rejected.
- Putting the S_OK/S_ERROR adapter inside interCEde — DIRAC vocabulary doesn't belong in a
WMS-agnostic library; only the facade (sync-over-async) is interCEde's.
Additional Context
Deferred consumers to keep in mind while writing the mapping: PushJobAgent
(outputs=["/"] → OutputSpec "everything"), RemoteRunner (same lifecycle), WMSUtilities
(killPilotsInQueues bulk kill).
User Story
As a DIRAC maintainer during the transition,
I want a synchronous facade over the async interCEde contract and a documented mapping from the
DIRAC CE conventions,
So that DIRAC's SiteDirector/PushJobAgent/RemoteRunner can adopt interCEde backends before the
DiracX tasks exist, without a hand-maintained parallel sync API.
Feature Description
only outside an event loop; generated/thin, never a second hand-written contract (IC-ADR-001
Open Issues). Decide its lifetime (transition-only vs kept).
table from the effective DIRAC contract to interCEde —
"<ref>:::<stamp>"↔JobHandle;PilotStampDict↔Submission.handles;S_OK/S_ERROR+load-bearing keys (
Value,CEInfoDict,PilotStampDict,ExecutableToKeep) ↔ typedresults/exceptions;
available()slot math ↔ caller policy overLoadReporter.counts()+CS
MaxTotalJobs/MaxWaitingJobs;Tag: Token↔ IC-ADR-003 credential config; CSParametersDictkeys ↔ typed backend config (registry request).dirac-admin-debug-ce-equivalent script driving an interCEde backend through thefacade (submit → status → fetch → kill) — the smallest end-to-end proof a DIRAC-side adapter is
writable.
Definition of Done
Alternatives Considered
WMS-agnostic library; only the facade (sync-over-async) is interCEde's.
Additional Context
Deferred consumers to keep in mind while writing the mapping: PushJobAgent
(
outputs=["/"]→OutputSpec"everything"), RemoteRunner (same lifecycle), WMSUtilities(
killPilotsInQueuesbulk kill).