Back to home page

EIC code displayed by LXR

 
 

    


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

0001 # ePIC Production Validation
0002 
0003 ePIC production validation connects three systems. epicprod runs automated ePIC
0004 production through PanDA, producing simulation and reconstruction data. Hydra, the
0005 ePIC validation application, produces validation plots from that data. argus-ai
0006 assesses those plots and returns a natural-language judgment. This document
0007 describes the loop and proposes the two interfaces that join the systems: the
0008 availability signal from epicprod to Hydra, and the assessment handoff from Hydra
0009 to argus-ai.
0010 
0011 This should be read as proposal, not established design.
0012 
0013 The assessment application is described in
0014 [argus-ai.md](https://github.com/BNLNPPS/corun-ai/blob/master/docs/argus-ai.md).
0015 The loop draws on the produced-data availability signal in
0016 [EPICPROD_DATA_LINEAGE.md](EPICPROD_DATA_LINEAGE.md) and the configuration record in
0017 [PCS.md](PCS.md).
0018 
0019 ## Components
0020 
0021 - **epicprod** — automated ePIC production through PanDA; the source of produced
0022   data and of the availability signal.
0023 - **PCS** — Physics Configuration System; the configuration and campaign record.
0024 - **Hydra** — the ePIC validation application; produces validation plots.
0025 - **argus-ai** — the assessment application; assesses a target and returns a
0026   natural-language result. See
0027   [argus-ai.md](https://github.com/BNLNPPS/corun-ai/blob/master/docs/argus-ai.md).
0028 
0029 ## The loop
0030 
0031 ```
0032 PanDA completes a task/dataset
0033   → epicprod signals availability (catalog + event)
0034     → Hydra produces validation plots
0035       → argus-ai assesses the plots → natural-language judgment
0036         → delivered to Mattermost and any registered endpoint
0037 ```
0038 
0039 ## Availability (epicprod → Hydra)
0040 
0041 Completion is determined by PanDA, which monitors task processing and is aware
0042 of completion. On that completion epicprod signals availability.
0043 
0044 The same availability information is offered two ways:
0045 
0046 - **Campaign-catalog JSON** — a comprehensive view of the current campaign: for
0047   each task/dataset, its configuration tags, campaign, request, status, and the
0048   produced Rucio references ([EPICPROD_DATA_LINEAGE.md](EPICPROD_DATA_LINEAGE.md))
0049   with file counts and completeness. A consumer reads it
0050   and compares against its previous read to find what is new and ready to validate.
0051   The catalog is described in [PCS.md](PCS.md).
0052 - **Live event** — a per-unit notification, the moment a unit becomes available,
0053   delivered over SSE to subscribers through the swf-remote streaming proxy
0054   ([SSE_PUSH.md](SSE_PUSH.md), [SSE_RELAY.md](SSE_RELAY.md)).
0055 
0056 The signal is per task/dataset — the unit that completes and can be validated —
0057 delivered as each becomes available. Completeness travels with it (file counts,
0058 expected against actual), so a unit can be offered for validation once it reaches a
0059 chosen threshold.
0060 
0061 ## Hydra
0062 
0063 Hydra takes the availability information and the produced-data references and
0064 returns validation plots.
0065 
0066 ## Assessment (Hydra → argus-ai)
0067 
0068 When a validation is available, Hydra would notify argus-ai, proposing an
0069 assessment of that task/dataset. Whether an assessment then runs automatically is a
0070 per-source, per-target setting, so the assessment rate stays under operator
0071 control. The assessment itself — its inputs, execution, and history and benchmark
0072 comparison — is described in
0073 [argus-ai.md](https://github.com/BNLNPPS/corun-ai/blob/master/docs/argus-ai.md).
0074 
0075 An assessment can also be triggered by user request via PanDAbot, which passes the
0076 request to argus-ai through corun-ai's MCP service and returns a natural-language
0077 assessment of the validation.
0078 
0079 One assessment can cover a single task/dataset or a group of them — a request or a
0080 benchmark — independent of the per-unit availability signal.
0081 
0082 ## Delivery
0083 
0084 When an assessment completes, argus-ai delivers the result to the destinations
0085 registered for that request: Mattermost via PanDAbot, and any registered REST
0086 endpoints. The requestor is recorded.
0087 
0088 ## Validation track
0089 
0090 Validation and its assessment are a first-class part of the production workflow,
0091 visible across the loop and recorded against the task/dataset.
0092 
0093 ## Related
0094 
0095 - [PCS.md](PCS.md) — the configuration and campaign record.
0096 - [EPICPROD_DATA_LINEAGE.md](EPICPROD_DATA_LINEAGE.md) — produced-dataset Rucio references; the availability signal draws on these.
0097 - [SSE_PUSH.md](SSE_PUSH.md), [SSE_RELAY.md](SSE_RELAY.md) — the notification mechanism the live event uses.
0098 - [argus-ai.md](https://github.com/BNLNPPS/corun-ai/blob/master/docs/argus-ai.md) — the assessment application.