[Feature]: Sync facade + DIRAC migration adapter spike
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 38/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- python
- Domain
- backend, cli, documentation, testing
Research direction
Start by reading the async interCEde protocols and IC-ADR-001, then review the DIRAC consumer conventions and IC-ADR-003 credential configuration named in the issue. Define the sync facade lifetime, document the complete DIRAC-to-interCEde mapping, and use the Slurm stack to exercise submit, status, fetch, and kill through the debug CLI in CI.
Written by the indexing model from the issue text.
Description
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 overLoadReporter.counts()+
CSMaxTotalJobs/MaxWaitingJobs;Tag: Token↔ IC-ADR-003 credential config; CS
ParametersDictkeys ↔ 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
- Sync facade shipped + tested (asserts refusal inside a running loop)
- 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).
- Dominant language
- Python
- Stars
- 3
- Forks
- 3
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from DIRACGrid/intercede
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
-
Difficulty 5/5 Over a week Newbie friendliness 28/100
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
All issues in DIRACGrid/intercede
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100