{
"request": "Triage Jira ticket MZCLD-3739: Define and implement backup, restore, and failover for Backstage and its catalog data",
"references": [
"https://mozilla-hub.atlassian.net/browse/MZCLD-3739"
],
"sourceContext": {
"issue": "MZCLD-3739"
}
}MZCLD-3739 is a Backlog-status planning ticket asking the team to define and validate backup/restore/failover procedures for Backstage and its catalog data. It has no comments and no linked runbook/design doc yet. The ticket is well-scoped (three clear sub-goals: backup scope/retention, tested restore procedure, and a deliberate failover/degraded-mode decision) but currently has no assignee, priority, or acceptance criteria visible, and no exploration has started on whether the catalog is primarily reconstructible from GitHub/GPA source vs. needing true DB backup. Recommend triaging it into a discovery spike plus follow-up implementation ticket(s), since 'decide + prove + document' work items are hard to size as a single ticket.
Triage notes: This ticket bundles three separable deliverables — (1) backup scope/retention decision, (2) a proven, timed restore procedure, and (3) a documented failover/degraded-mode decision. Recommend splitting into a short discovery spike first, then follow-up implementation ticket(s): 1. Spike: Determine reconstructibility — Confirm how much of the Backstage catalog is truly derivable from GitHub/GPA tenant re-ingestion vs. requiring database-level backup. This determines the shape of everything else and should be answered before committing to backup machinery. 2. Backup design ticket: Based on the spike's findings, decide what to back up (catalog DB, entity source files, config), set frequency/retention, and implement it. 3. Restore validation ticket: Write the restore runbook and actually execute a test restore, recording duration and results (link/attach a Confluence runbook once written). 4. Failover/degraded-mode decision ticket: Decide and document the behavior when Backstage is unavailable (read-only fallback, cached export, or hard failure for consumers), and implement/document accordingly. Suggest setting priority based on how critical Backstage has become as source-of-truth for MozCloud service data, and assigning the discovery spike first since its outcome will resize the remaining scope. No existing runbook/design doc was found linked to this ticket — one should be created and linked here as part of the restore/failover sub-tickets.
[
{
"capability": "jira.issue.read",
"args": {
"key": "MZCLD-3739"
},
"result": {
"key": "MZCLD-3739",
"summary": "Define and implement backup, restore, and failover for Backstage and its catalog data",
"status": "Backlog",
"description_text": "If Backstage becomes the single source of truth for MozCloud service data, losing that data \u2014 or losing access to it during an incident \u2014 becomes a real risk. We need a backup and failover story, and it needs to be proven rather than assumed. Scope Backup \u2014 decide what actually needs backing up (catalog database, entity source files, config) versus what is reconstructible from source. Set frequency and retention. Restore \u2014 write the restore procedure, then actually perform a test restore and record the result and how long it took. Failover / degraded mode \u2014 decide what happens when Backstage is unavailable. Is there a read-only fallback, a cached export, or do consumers simply fail? Whatever the answer, it should be a deliberate decision that is written down. Note on reconstructibility Much of the catalog is derived from GitHub and GPA tenant files, so a full restore may be less about database recovery and more about re-ingestion. Part of this ticket is establishing which it is \u2014 that determines how much backup machinery is warranted.",
"comment_count": 0,
"comments": []
}
}
]{
"model": "claude-sonnet-5",
"input_tokens": 3365,
"output_tokens": 1605,
"estimated_cost_usd": 0.03417
}[]