Back to home page

EIC code displayed by LXR

 
 

    


Warning, /swf-monitor/docs/EPICPROD_TASK_CATALOG.md is written in an unsupported language. File is not indexed.

0001 # ePIC Production Task Catalog
0002 
0003 The ePIC Production Task Catalog is the PCS-backed catalog of production
0004 tasks for epicprod. It replaces the static GitHub/Jekyll dataset page with
0005 a campaign-aware view of production tasks. Campaigns are shown as tabs or
0006 tab-like sections ordered left to right in time: past campaigns, the
0007 current campaign, and the next campaign being prepared. The current and
0008 future campaign views are dynamic interfaces for campaign task management.
0009 
0010 The present static catalog is
0011 `eic/epic-prod/docs/_documentation/default_datasets.md`
0012 (rendered at https://eic.github.io/epic-prod/documentation/default_datasets).
0013 
0014 Complementing the catalog is a production request path, where PWGs and DSCs
0015 submit requests that the production team turns into tasks. The catalog links
0016 back to originating requests, and request records link forward to derived
0017 tasks. Initial request fields are based on the current
0018 [production request spreadsheet](https://docs.google.com/spreadsheets/d/1BJeq3AYwefNC9m3palH6T0SHMxmRmHpOzLTSa_6SZIU/edit?gid=0#gid=0).
0019 
0020 The following diagram shows the automated production workflow and the
0021 catalog's place in it.
0022 
0023 ![ePIC Automated Production Workflow](epicprod_task_catalog.svg)
0024 
0025 ## Relationship to Other Documents
0026 
0027 This document implements the Dynamic Public Catalog described in
0028 `PCS_DATASET_REQUEST_WORKFLOW.md`.
0029 
0030 For submission, operators filter, review, select, and submit tasks from the
0031 catalog. Submission details are covered by `JEDI_INTEGRATION.md`.
0032 Inspection, cloning, and editing use the task workbench reached from the
0033 catalog.
0034 
0035 ## Scope
0036 
0037 - Full-page catalog views for campaigns with task inventory, filtering, sorting,
0038   and bulk selection.
0039 - Task Composition views as the workbench for inspection, cloning, and editing.
0040 - Catalog fields: PWG, priority, Use flags, submission path, input source,
0041   and BG-mixing state.
0042 - Third-party EVGEN input tracking and Rucio sourcing.
0043 - Backfill and sync from the CSV manifest source used by production.
0044 - Operator actions, auth, audit, and publication checks.
0045 - Production request interface modeled on the current request spreadsheet.
0046 
0047 ## 2. Submission Paths
0048 
0049 The catalog supports multiple submission paths. PCS composes tasks; the
0050 catalog stages them by campaign lifecycle; the selected submission path
0051 handles dispatch when the operator presses Submit on the Current Campaign
0052 view.
0053 
0054 Submission paths in use and planned:
0055 
0056 | Submission path | How invoked |
0057 |---|---|
0058 | HTCondor batch submission via `submit_csv.sh` | CSV manifest → env-prefix shell command → `condor_submit`. Source: `job_submission_condor/scripts/submit_csv.sh`. |
0059 | PanDA workload management | Per `JEDI_INTEGRATION.md`: CSV manifest → `taskParamMap` → PanDA task submission. |
0060 | PanDA-orchestrated multi-stage workflows | `internal_evgen` workflow mode in `ProdConfig`, per `PCS_DATASET_REQUEST_WORKFLOW.md`. |
0061 
0062 Catalog entries need a submission path and the parameters required by that
0063 path. The submission path is carried on `ProdConfig` as
0064 `ProdConfig.data['submission_path'] ∈ {condor, panda, internal_evgen}`
0065 (default `condor`), alongside the existing `workflow_mode` and the env-var
0066 or taskParam set used by current submission code. See `PCS.md` § Production
0067 Configs for the `ProdConfig.data` key reference.
0068 
0069 ## 3. Current Production Practice
0070 
0071 The prod team's working submission notebook
0072 ([dataset Colab](https://colab.research.google.com/drive/197q6hE1tZ0ghewcpK06vc3O7qcPf8nTz?usp=sharing);
0073 [repo snapshot](datasets-colab-snapshot-20260517.ipynb))
0074 has operator-set fields with maps to PCS: detector version
0075 and config, container tag, output controls, Rucio registration, x509 auth,
0076 input CSV path, and signal/background settings for BG-mixing.
0077 
0078 The catalog supports batch operations on groups of related tasks, such as
0079 all beam energies for a process or all Q² bins for a DIS configuration.
0080 Bulk actions include submit, archive, clone, and withdraw on the filtered
0081 task list.
0082 
0083 Background-mixing campaigns combine signal CSVs with sets of background
0084 configurations. The catalog
0085 supports parameterized expansion of a signal task into a matrix of
0086 BG-variant tasks, each variant an individual catalog entry.
0087 
0088 CSV manifest paths encode physics parameters (beam energies, Q² ranges,
0089 generator versions). Catalog intake parses these on import.
0090 
0091 ## 4. Third-Party Inputs
0092 
0093 PWGs and DSCs may request production from EVGEN samples produced outside the
0094 standard campaign dataset pipeline. The request record preserves the
0095 declared source, such as a JLab path, URL, file list, or collaboration
0096 storage location, in `simu_path` and related source metadata.
0097 
0098 Current handling records the declared source and production-team status
0099 fields in the request record. Task creation requires an input source usable
0100 by the submission path, so third-party EVGEN inputs must be available from
0101 Rucio before derived tasks use them.
0102 
0103 The schema represents both source layers: `simu_path` preserves the
0104 declared external source, and `rucio_source` records the Rucio DID or
0105 container once the input is registered.
0106 
0107 The workflow for registering third-party EVGEN samples in Rucio is still to
0108 be defined. The catalog records the result once a Rucio source is available.
0109 
0110 ## 5. Production Request Records
0111 
0112 PWG and DSC production requests are upstream records that precede Dataset
0113 or ProdTask records. A requester describes the desired sample, the
0114 production team checks input availability and validation status, and one or
0115 more catalog tasks can later link back to the originating request.
0116 
0117 The `prod_requests` table starts from the request spreadsheet fields:
0118 
0119 | Field | Meaning |
0120 |---|---|
0121 | `requestor` | PWG or DSC making the request. |
0122 | `simu_path` | Declared simulation or EVGEN input location. |
0123 | `gen_config` | Generator configuration text from the request. |
0124 | `nevents` | Requested event count. |
0125 | `background` | Requested background condition, if specified. |
0126 | `new_request` | Whether the row is marked as a new request. |
0127 | `pre_tdr_use` | Pre-TDR use flag or value. |
0128 | `early_science_use` | Early-science use flag or value. |
0129 | `other_use` | Other use flag or value. |
0130 | `description` | Free-text request description. |
0131 | `priority` | Requester or production-priority value. |
0132 
0133 System fields needed for operation:
0134 
0135 | Field | Meaning |
0136 |---|---|
0137 | `status` | Request state, e.g. new, review, blocked, ready, linked, closed. |
0138 | `source_url` | Source spreadsheet or form URL. |
0139 | `source_row` | Source row identifier for idempotent import and traceability. |
0140 | `created_by` | User or importer that created the record. |
0141 | `created_at` | Creation timestamp. |
0142 | `updated_at` | Last update timestamp. |
0143 
0144 Production-team fields added during processing:
0145 
0146 | Field | Meaning |
0147 |---|---|
0148 | `input_status` | Whether declared inputs are located, registered, and usable. |
0149 | `rucio_source` | Rucio DID or container for the registered input source. |
0150 | `validation_status` | Validation summary string. |
0151 | `prod_task_links` | Relation to ProdTask records derived from the request. |
0152 
0153 Production requests use a dedicated 2-panel page: a filterable request list
0154 on the left, and request details, processing fields, and linked tasks on
0155 the right. The request page feeds the task catalog but remains separate
0156 from the campaign tabs for past, current, and next production tasks.
0157 
0158 ## 6. Full-Page Catalog View
0159 
0160 The catalog is the primary page for browsing production tasks across
0161 campaigns. It is organized as campaign tabs or tab-like sections, with time
0162 flowing left to right: past campaigns, current campaign, and next campaign.
0163 Tab/header color uses ergonomic pastels: grey for past campaigns, green for
0164 the current campaign, and blue for future campaigns.
0165 
0166 Past campaign sections are frozen archives of completed production tasks.
0167 The current campaign contains active production tasks and the status needed
0168 for follow-up: submission path, task status, output state, monitoring
0169 badges, retry state, and links to PanDA Monitor, Rucio Monitor, and
0170 swf-monitor detail pages. The current campaign has a top-level **clone to
0171 new campaign** action for creating the next campaign from the current task
0172 set.
0173 
0174 The next campaign contains tasks being prepared for submission. Next-campaign
0175 tasks are public, but not submittable until an ops user marks them ready.
0176 Future campaign name and description fields are editable.
0177 
0178 Each task row shows the fields needed for comparison and action: campaign,
0179 requestor, physics tags, priority, Use flags, input source, submission path,
0180 BG-mixing state, status, output dataset, and linked request when present.
0181 
0182 Rows link to the task workbench for detailed inspection, editing, copying,
0183 and review. The workbench is a 2-panel view: the left panel is a task list
0184 for comparative inspection, selecting related tasks, and copying parameters
0185 from existing tasks; the right panel is the focused task detail, with
0186 editable fields, controls, validation and status, cloning/copying, and
0187 submission-readiness actions.
0188 
0189 The workbench left panel reuses the catalog task-list and filter component.
0190 In the workbench it omits the campaign tabs, indicates the campaign of the
0191 focused task, and uses a reduced column/control set appropriate for
0192 comparative inspection and parameter copying.
0193 
0194 The current workbench URL is:
0195 
0196     https://pandaserver02.sdcc.bnl.gov/swf-monitor/pcs/tasks/compose/?tab=tasks
0197 
0198 Supported catalog actions include submit, clone, archive, withdraw,
0199 priority update, readiness update, and BG-mixing matrix expansion. Actions
0200 apply either to a single task or to the current selected set.
0201 
0202 The Current Campaign view shows the production status needed for action,
0203 with status panels, drill-down links, inline alarm badges, and external
0204 dashboard links. Four feeds are relevant:
0205 
0206 - **PanDA Monitor** — task and job state, retry counts, site status, alarm
0207   signals (the `nfinalfailed`/`computed_finalfailurerate` family in
0208   `monitor_app/panda/api.py`), plus the April 21 Production WG dashboard
0209   requirement: "Develop dashboard that display usage across all resources
0210   in PanDA over time: How are we doing in terms of utilizing our
0211   allocations?" ([meeting notes](https://docs.google.com/document/d/1JA8GIQae30Ru62kgDN2pzqK90XBbQKz4LffXYbWNgIY/edit?tab=t.0#heading=h.y3evqgz3sc98)).
0212   The Iris allocation dashboard shown in those notes is a useful model:
0213   tabs for CPU, GPU, Jobs, Storage, Roles, Groups, Details, and History;
0214   summary fields for allocation, charged hours, available hours, remaining
0215   percent, machine/raw hours used, average charge factor, request/award,
0216   threshold status, and premium usage; and a time-series view comparing
0217   charged usage, machine usage, and estimated charge rate.
0218 - **Rucio Monitor** — output dataset replicas and RSE status for the
0219   campaign's scope.
0220 - **swf-monitor** — PCS and campaign-level state owned by this app.
0221 - **corun-ai** — AI-driven monitoring and diagnostics; callbacks already
0222   wired via `monitor_app/panda/corun_callback.py` to the PandaBot Mattermost
0223   channel.
0224 
0225 Feed implementation remains in the source subsystems.
0226 
0227 ## 7. Filters and Selection
0228 
0229 Catalog filters cover the fields used to find task sets: campaign stage,
0230 campaign, requestor, physics tags, priority, Use flags, status, readiness,
0231 submission path, input source, BG-mixing state, output state, and linked
0232 request.
0233 
0234 Filters are displayed in a shared layout that works in both the full-page
0235 catalog and the workbench. In the full-page catalog, filters sit above the
0236 campaign task list. In the 2-panel workbench, the same filters sit at the
0237 top of the left panel above the task list.
0238 
0239 The active tab, filters, sort order, selected rows, and focused task are
0240 encoded in URL state so catalog views are bookmarkable and shareable. The
0241 same filter model is exposed through the task list API and MCP tooling.
0242 
0243 Selection supports bulk actions on the filtered task list. Selection state
0244 is explicit: operators can select individual rows, all visible rows, or all
0245 rows matching the current filter. Bulk actions show the selected count and
0246 apply only after confirmation.
0247 
0248 Draft means not yet submittable. Draft tasks remain visible in the catalog.
0249 Ops users can mark a draft task ready when required fields, input source,
0250 submission path, and validation status are complete.
0251 
0252 ## 8. Backfill & CSV Manifest Source of Truth
0253 
0254 Current production submission is driven by CSV manifests, not by direct
0255 selection of JLab EVGEN directories. The dataset Colab passes relative CSV
0256 paths such as `EXCLUSIVE/DVCS/...csv`, `DIS/NC/...csv`, and `SIDIS/...csv`
0257 to `scripts/submit_csv.sh`; `submit_csv.sh` resolves those paths from the
0258 GitLab CI artifacts for the `EIC/campaigns/datasets` project, under:
0259 
0260     results/nightly/${DETECTOR_CONFIG:-epic_craterlake}/main/datasets/timings/
0261 
0262 The relevant source points are:
0263 
0264 - [`job_submission_condor/scripts/submit_csv.sh`](https://github.com/eic/job_submission_condor/blob/main/scripts/submit_csv.sh):
0265   `BASEURL=https://eicweb.phy.anl.gov/api/v4/projects/491/jobs/artifacts/${DATASET_TAG:-main}/raw/${RESULTS}/datasets/timings/`
0266 - [`job_submission_condor/scripts/csv_to_chunks.sh`](https://github.com/eic/job_submission_condor/blob/main/scripts/csv_to_chunks.sh):
0267   fetches
0268   `${BASEURL}${FILE}?job=collect` unless a local file is supplied.
0269 - [`EIC/campaigns/datasets`](https://eicweb.phy.anl.gov/EIC/campaigns/datasets)
0270   `config_data`: source for BG-mixing JSON files referenced by `BG_FILES`.
0271 
0272 PCS catalogs the production CSV manifest source: `DATASET_TAG`, detector
0273 config, relative manifest path, parsed physics parameters, manifest
0274 availability, BG config references, and the corresponding Rucio DID when
0275 EVGEN inputs are registered. The public Campaign Datasets page is planning
0276 documentation rather than the operational input catalog.
0277 
0278 ## 9. Column Mapping to the Canonical Default Datasets Page
0279 
0280 The PCS catalog covers every column shown on the static canonical page
0281 [default_datasets](https://eic.github.io/epic-prod/documentation/default_datasets)
0282 (source: `eic/epic-prod/docs/_documentation/default_datasets.md`). The
0283 mapping below states where each canonical column appears in the PCS
0284 catalog and notes the few presentational departures.
0285 
0286 | Canonical column | PCS catalog location |
0287 |---|---|
0288 | Index | `#` column. |
0289 | DSC or PWG | Requestor column. Uppercased at ingest; PWG background color preserved. |
0290 | Dataset Path | Dataset cell, top line; clickable to the task detail page. |
0291 | Generator/Dataset Version | Dataset cell, secondary line; clickable when the value is a URL. |
0292 | Number of Events | `N events (M)` column; values rendered in millions. |
0293 | Background | Background column; rendered as `Yes` / blank to match the convention used by the other binary indicators. The canonical page renders the literal `Yes` / `No`. |
0294 | New Request | `New` column. |
0295 | Pre-TDR Use | `pTDR` column. The PCS field is defined as *possible pre-TDR use*, so `Maybe` values from the CSV are imported as truthy. |
0296 | Early Science Use | `ES` column. |
0297 | Other Use | The Use filter row carries an `Other (n)` toggle; rows whose raw value is informative (anything beyond `Yes` / `No` / `Maybe`) also render a third paired row `Other use: <text>`. The PCS catalog drops the dedicated `Other` column the canonical page uses. |
0298 | Description | Second paired row under each task. |
0299 | Priority | Priority column. |
0300 
0301 The PCS catalog additionally renders system state (the `Status` column),
0302 the originating CSV `Issue` URL (appended next to the description), a
0303 bulk-selection checkbox, and the live filter / sort bar. None of these
0304 are present on the canonical page.