You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
Mapping doc covers every load-bearing DIRAC convention found in the consumer analysis
Debug-CLI spike drives a real backend (Slurm stack) through the facade in CI
Facade lifetime decision recorded
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).
Activity