The Review Dashboard and Check My Dataset use configurable issue definitions to evaluate datasets and present validation results.
Both applications share the same autocheck framework and validation scripts, but use different issue definition files and present results in different ways:
The shared validation framework consists of:
Issue definitions determine how validation results are presented in each application, while the underlying autocheck scripts remain shared.
Issue Definition
│
▼
Review Checklist
│
├── Manual Review
│
└── Automatic Review
│
▼
Autocheck Script
│
▼
Autocheck Result
│
▼
Review Summary
│
▼
Feedback Email
The issue definition is the central configuration component. It determines:
Autochecks can optionally be linked to issue definitions to assist reviewers by automatically evaluating specific requirements.
Issue Definition
│
├── Optional Autocheck Script
│ │
│ ▼
│ Validation Result
│
▼
Presentation Rules
│
├── Overview
│ └── Issues requiring attention
│ + associated guidance
│
├── All Autocheck Results
│ └── Complete list of validation results
│
└── Tips to Improve Your Dataset
├── Conditional tips based on autocheck results
└── General recommendations without autochecks
In Check My Dataset, issue definitions determine:
The applications use separate issue definitions files.
Configuration file: config/dataset_issue_definitions.json
Issue definitions define the checklist items that reviewers use during the review process. Each issue appears as a checklist item in the Review Dashboard and can contribute to the automatically generated feedback when datasets are returned for revision.
Each issue has the following structure:
{
"unique_id": {
"category": "issue_category_to_group_issues",
"id": "same_as_unique_id",
"title": "Issue Name",
"condition": "Condition that the dataset should meet",
"warning": "Description shown when the issue is present",
"message": "Feedback sent to dataset contributors"
}
}
category
Groups issues together in the review checklist.
Common categories include:
id
unique identifier of the issue. This should match the issue name.
title
Human-readable title shown in the review checklist.
condition
Describes the expected situation. The reviewer sees this text in the checklist and confirms it when the requirement is met.
warning
Describes the situation when the issue is present. This text is shown in the review summary.
message
Detailed guidance for dataset contributors. The message is automatically added to feedback emails when the issue is selected during review. HTML tags may be used, including links to relevant documentation.
{
"readme": {
"category": "files",
"id": "readme",
"title": "README",
"condition": "README.txt or README.md file is present",
"warning": "A README.txt or README.md file is missing.",
"message": "A README.txt or README.md file is missing. For more information, see the README guidance..."
}
}
Checklist representation
The issue appears as a checklist item for reviewers (see screenshot)
Review summary representation
Issues that are not resolved appear in the review summary (see screenshot).
Configuration file: config/check_my_dataset_issue_definitions.json.
Each issue definition controls:
The Check My Dataset interface contains three sections:
Overview
The Overview section highlights issues that require the user’s attention.
An issue is displayed in this section when:
Display logic:
The purpose of this section is to provide a concise summary of all detected issues and warnings.
Because warning messages generated by autocheck scripts override the configured ‘overview_header’, issue definitions should be written so that the configured headers, warning messages, and explanatory content remain consistent when displayed together.
All autocheck results
The All autocheck results section contains every issue that had an autocheck script, regardless of the result.
For each issue:
Examples:
The purpose of this section is to provide a complete overview of all performed checks.
General tips to improve your dataset
The General tips to improve your dataset section contains additional guidance and recommendations.
Tips can be displayed:
The display behaviour is controlled by the ‘display_in_tips’ property.
Supported values
| Value | Description |
|---|---|
always |
Always display the tip |
never |
Never display the tip |
success |
Display only when the autocheck succeeds |
fail |
Display only when the autocheck fails |
warning |
Display only when the autocheck returns a warning |
fail_or_warning |
Display when the autocheck fails or returns a warning |
Display logic
Issue definitions do not need to be linked to an autocheck script. When no script is configured, the issue can still be used to provide general recommendations in the General tips to improve your dataset section. This allows the application to present dataset quality guidance even for aspects that cannot currently be evaluated automatically.
Examples include:
{
"category": "files",
"script": "totalDatasetFilesSizeIsLessThan50GB",
"title": "Dataset size",
"overview_header": "Dataset is larger than 50 GB",
"overview_content": "...",
"all_results_header": "Dataset is smaller than 50 GB",
"display_in_tips": "fail",
"tips_header": "Dataset size",
"tips_content": "..."
}
| Property | Description | Required | Comment |
|---|---|---|---|
category |
Determines under which category the issue is grouped | mandatory | Files, Metadata, Terms |
script |
The autocheck script associated with the issue | optional | can be omitted |
title |
Human-readable title of the issue | mandatory | appears in bold in Overview and Tips sections |
overview_header |
Default header shown in the Overview section | mandatory | no html possible |
overview_content |
Accordion content shown in the Overview section | recommended | html possible |
all_results_header |
Text displayed next to the check result | mandatory | appears in All results section |
display_in_tips |
Determines when the tip is displayed | mandatory | “always”, “never”, “success”, “fail”, “warning”, “fail_or_warning” |
tips_header |
Header shown in the Tips section | mandatory if displayed in Tips | appears in bold, no html possible |
tips_content |
Content shown when the accordion is expanded | recommended if displayed in Tips | html possible |
The platform supports both manual and automatic checks.
Manual checks require reviewer judgement and are evaluated directly by the reviewer. Manual checks are only available in the Review Dashboard and require an issue definition.
Automatic checks use validation scripts to evaluate dataset content and metadata.
The automated validation framework is shared by the Review Dashboard and Check My Dataset, ensuring consistent validation results across both applications.
An automatic check consists of:
Issue Definition
│
▼
Autocheck Definition
│
▼
Autocheck Script
│
▼
Autocheck Result
The reviewer remains responsible for the final review decision.
Autochecks support the review process but do not replace reviewer judgement.
Configuration file: config/automations/autochecks.json
Autocheck definitions serve two purposes:
{ “name”: “readme”, “helpText”: “<div>README.txt or README.md file is present…</div>” }
| Property | Description |
|---|---|
name |
Unique autocheck identifier used throughout the configuration |
helpText |
Description of the validation logic. HTML is supported |
The name property acts as the unique identifier of an autocheck and is used to connect issue definitions with validation scripts.
In the Review Dashboard, the helpText is displayed when reviewers click the question mark next to an autocheck in the review checklist. The help text explains the validation logic and helps reviewers interpret the validation result correctly.
Autocheck scripts perform the actual validation of dataset elements and metadata.
Location: rdm-review-dashboard-backend/src/autochecks
Important
Autocheck scripts are shared components used by both the Review Dashboard and Check My Dataset. Changes to validation logic or warning messages may therefore affect both applications.
Each script is responsible for:
Possible outcomes typically include:
Warning messages are shared across the Review Dashboard and Check My Dataset.
In the Review Dashboard, warning messages are displayed when hovering the corresponding checklist item to provide additional context to reviewers.
In Check My Dataset:
Warning messages should therefore be understandable to both reviewers and dataset contributors and should clearly explain why the check did not pass.
New autocheck scripts can be based on the provided template:
config/automations/template.py
from autochecks.check import CheckResult, DatasetContext
from datetime import datetime
def run(context: DatasetContext) -> CheckResult:
result: bool | None = None
message: str | None = None
return CheckResult(result, message, datetime.now())
Each autocheck script must implement a run() function that accepts a DatasetContext object and returns a CheckResult.
The ‘DatasetContext’ object provides access to information needed by the validation script.
Depending on the check, this can include:
The warning message provides additional information for reviewers.
Warning messages are displayed in the review dashboard and should clearly explain why the check did not pass.
The example below checks whether a dataset contains a README file.
from autochecks.check import CheckResult, DatasetContext
from utils.logging import logging
from datetime import datetime
import time
min_filesize = 15
readme_fnames = [
"readme.txt",
"readme.md",
"00_readme.txt",
"00_readme.md"
]
def get_files_with_name(files, namelist):
result = []
for file in files:
fname = file.get("dataFile").get("filename")
fsize = file.get("dataFile").get("filesize")
restricted = file.get("restricted")
if fname.lower() in namelist:
result.append({
"filename": fname,
"filesize": fsize,
"restricted": restricted
})
return result
def run(context: DatasetContext) -> CheckResult:
result = None
warning = ""
readmes = get_files_with_name(
context.files,
readme_fnames
)
for file in readmes:
if file.get("filesize") < min_filesize:
warning += (
f"{file.get('filename')} "
f"has length < {min_filesize} characters.\n"
)
if warning == "":
warning = None
if not warning and len(readmes) == 1:
result = True
return CheckResult(result, warning)
Coming soon
The process depends on whether the new check should be evaluated manually or automatically.
The Review Dashboard and Check My Dataset use separate issue definition files, but they share the same validation framework. Content across both applications should therefore remain aligned and consistent.
The following fields should remain aligned:
The following fields should remain aligned:
The Review Dashboard and Check My Dataset share the same autocheck scripts and warning messages.
Because the same warning text is reused in multiple contexts and for different audiences, warning messages should:
In Check My Dataset, warning messages can replace the configured overview_header. Therefore:
overview_headeroverview_contentall_results_headertips_headertips_contentUser-facing texts should:
Consistent wording across Review Dashboard checklists, validation results, warning messages, feedback messages, and recommendations improves the user experience and helps ensure that both applications provide coherent guidance.