# 2. Question Bank Management — Test Cases

User Type: **Super Administrator**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: question_bank_management.md — every feature, sub-feature, and rule covered

---

## Test Execution Policy
- Zero tolerance: any deviation from documented behavior = FAILED = bug
- Every bug is immediately logged/reported (Bug ID, feature, sub-feature,
  expected vs actual, severity) and fixed 100% before the group passes
- Feature group passes only at 100% test pass rate

## Coverage Matrix
| Feature | Sub-feature / Rule | Test IDs |
|---------|--------------------|----------|
| 2.1 Create and Curate Questions Manually | Manual question authoring: the question, options, correct answer, and explanation written by hand | TC-SA-08-02-001 |
| 2.1 Create and Curate Questions Manually | Question detail: the full content of the question (stem, options, answer, explanation) | TC-SA-08-02-002 |
| 2.1 Create and Curate Questions Manually | Curation: the bank reviewed for quality (accuracy, phrasing, clarity) | TC-SA-08-02-003 |
| 2.1 Create and Curate Questions Manually | Organization: the questions organized by topic, subject, and type | TC-SA-08-02-004 |
| 2.1 Create and Curate Questions Manually | Duplicate detection: similar questions flagged to avoid redundancy | TC-SA-08-02-005 |
| 2.1 Create and Curate Questions Manually | Quality standard: the questions meet the bank's quality bar | TC-SA-08-02-006 |
| 2.1 Create and Curate Questions Manually | Audit logging of question create/edit | TC-SA-08-02-007 |
| 2.1 Create and Curate Questions Manually | Rule: a manually authored question has the full detail (stem, options, answer, explanation); it is complete, not a stub | TC-SA-08-02-002 |
| 2.1 Create and Curate Questions Manually | Rule: the bank is curated for quality; an inaccurate or poorly phrased question is corrected, not left | TC-SA-08-02-003 |
| 2.1 Create and Curate Questions Manually | Rule: duplicates are flagged and consolidated; the bank is not redundant | TC-SA-08-02-005 |
| 2.1 Create and Curate Questions Manually | Rule: the questions are organized by topic, subject, and type; the right question is findable | TC-SA-08-02-004 |
| 2.1 Create and Curate Questions Manually | Rule: the quality standard is the bank's bar; a question below it is corrected before it is used | TC-SA-08-02-006 |
| 2.1 Create and Curate Questions Manually | Rule: question create/edit is audit-logged with the question, actor, and timestamp | TC-SA-08-02-007 |
| 2.2 AI-Generated Questions from Video Content | AI generation: questions generated from a video's content | TC-SA-08-02-008 |
| 2.2 AI-Generated Questions from Video Content | Draft status: the generated questions are drafts, not final | TC-SA-08-02-009 |
| 2.2 AI-Generated Questions from Video Content | Human review: the generated questions reviewed for accuracy before approval | TC-SA-08-02-010 |
| 2.2 AI-Generated Questions from Video Content | Approval: the reviewed questions approved into the bank (or corrected/rejected) | TC-SA-08-02-011 |
| 2.2 AI-Generated Questions from Video Content | Generation parameters: the question count, types, and difficulty requested | TC-SA-08-02-012 |
| 2.2 AI-Generated Questions from Video Content | Traceability: the AI-generated questions marked as such (the source video) | TC-SA-08-02-013 |
| 2.2 AI-Generated Questions from Video Content | Audit logging of generation and approval | TC-SA-08-02-014 |
| 2.2 AI-Generated Questions from Video Content | Rule: AI-generated questions are drafts; they enter the bank only after human review and approval | TC-SA-08-02-009 |
| 2.2 AI-Generated Questions from Video Content | Rule: the review checks accuracy (the question matches the content, the answer is correct); an inaccurate question is corrected or rejected | TC-SA-08-02-010 |
| 2.2 AI-Generated Questions from Video Content | Rule: the generation parameters (count, types, difficulty) are set per request; they are explicit | TC-SA-08-02-012 |
| 2.2 AI-Generated Questions from Video Content | Rule: the AI-generated questions are marked as such, with the source video; the origin is traceable | TC-SA-08-02-013 |
| 2.2 AI-Generated Questions from Video Content | Rule: a rejected question does not enter the bank; the rejection is recorded | TC-SA-08-02-015 |
| 2.2 AI-Generated Questions from Video Content | Rule: generation and approval are audit-logged with the video, questions, actor, and timestamp | TC-SA-08-02-014 |
| 2.3 Question Types, Difficulty Tagging, and Bloom's Taxonomy Alignment | Question types: multiple choice, fill-in-the-blank, true/false, short answer, essay | TC-SA-08-02-016 |
| 2.3 Question Types, Difficulty Tagging, and Bloom's Taxonomy Alignment | Difficulty tagging: the question tagged by difficulty (e.g., easy, medium, hard) | TC-SA-08-02-017 |
| 2.3 Question Types, Difficulty Tagging, and Bloom's Taxonomy Alignment | Bloom's Taxonomy alignment: the question mapped to a cognitive level (remember, understand, apply, analyze, evaluate, create) | TC-SA-08-02-018 |
| 2.3 Question Types, Difficulty Tagging, and Bloom's Taxonomy Alignment | Consistent classification: the attributes set for every question | TC-SA-08-02-019 |
| 2.3 Question Types, Difficulty Tagging, and Bloom's Taxonomy Alignment | Mix building: assessments built to a target mix of types, difficulties, and levels | TC-SA-08-02-020 |
| 2.3 Question Types, Difficulty Tagging, and Bloom's Taxonomy Alignment | Bank analysis: the bank analyzed by the classification dimensions | TC-SA-08-02-021 |
| 2.3 Question Types, Difficulty Tagging, and Bloom's Taxonomy Alignment | Audit logging of classification changes | TC-SA-08-02-022 |
| 2.3 Question Types, Difficulty Tagging, and Bloom's Taxonomy Alignment | Rule: every question has a type, a difficulty tag, and a Bloom's level; the classification is complete | TC-SA-08-02-019 |
| 2.3 Question Types, Difficulty Tagging, and Bloom's Taxonomy Alignment | Rule: the attributes reflect the question's actual format, challenge, and cognitive level; a mis-classification is corrected | TC-SA-08-02-023 |
| 2.3 Question Types, Difficulty Tagging, and Bloom's Taxonomy Alignment | Rule: the classification enables mix-based assessment building (a target mix of types, difficulties, levels) | TC-SA-08-02-020 |
| 2.3 Question Types, Difficulty Tagging, and Bloom's Taxonomy Alignment | Rule: the bank is analyzable by the dimensions; a coverage gap is visible, not silent | TC-SA-08-02-021 |
| 2.3 Question Types, Difficulty Tagging, and Bloom's Taxonomy Alignment | Rule: the classification is consistent across the bank; the same question type/level is classified the same way | TC-SA-08-02-024 |
| 2.3 Question Types, Difficulty Tagging, and Bloom's Taxonomy Alignment | Rule: classification changes are audit-logged with the question, attributes, and timestamp | TC-SA-08-02-022 |
| 2.4 Regular Question Refreshing | Refresh cycle: the regular review and update of the bank | TC-SA-08-02-025 |
| 2.4 Regular Question Refreshing | Outdated question replacement: stale questions replaced with current ones | TC-SA-08-02-026 |
| 2.4 Regular Question Refreshing | New question addition: fresh questions added to keep the bank current | TC-SA-08-02-027 |
| 2.4 Regular Question Refreshing | Rotation: the question set rotated so assessments are not repetitive | TC-SA-08-02-028 |
| 2.4 Regular Question Refreshing | Staleness detection: questions flagged as outdated (content changed, over-used) | TC-SA-08-02-029 |
| 2.4 Regular Question Refreshing | Refresh review: the refreshed bank reviewed for quality and coverage | TC-SA-08-02-030 |
| 2.4 Regular Question Refreshing | Audit logging of refresh actions | TC-SA-08-02-031 |
| 2.4 Regular Question Refreshing | Rule: the refresh is a regular cycle; it is not a one-time event | TC-SA-08-02-025 |
| 2.4 Regular Question Refreshing | Rule: an outdated question is replaced (retired and a current one added); it is not silently left stale | TC-SA-08-02-026 |
| 2.4 Regular Question Refreshing | Rule: rotation prevents repetitiveness; an over-used question is retired from active rotation (not deleted) | TC-SA-08-02-028 |
| 2.4 Regular Question Refreshing | Rule: the refresh is reviewed for quality and coverage; a gap introduced by the refresh is closed | TC-SA-08-02-030 |
| 2.4 Regular Question Refreshing | Rule: a retired question is preserved (not deleted); it is out of active rotation | TC-SA-08-02-032 |
| 2.4 Regular Question Refreshing | Rule: refresh actions are audit-logged with the questions, action, and timestamp | TC-SA-08-02-031 |

## 2.1 Create and Curate Questions Manually

### TC-SA-08-02-001 — Manual question authoring: the question, options, correct answer, and explanation written by hand
**Type:** Positive
**Covers:** 2.1 → Manual question authoring: the question, options, correct answer, and explanation written by hand
**Preconditions:** A new question is needed for a topic.
**Steps:**
1. Author the question manually: write the stem, the options, the correct answer, and the explanation.
2. Save and verify the question is added to the bank.
**Expected Result:** The question is authored manually — the stem, options, correct answer, and explanation are written by hand and added to the bank.
**Priority:** Critical

### TC-SA-08-02-002 — Question detail: the full content of the question (stem, options, answer, explanation); it is complete, not a stub
**Type:** Negative
**Covers:** 2.1 → Question detail: the full content of the question (stem, options, answer, explanation); Rule: a manually authored question has the full detail (stem, options, answer, explanation); it is complete, not a stub
**Preconditions:** A question is being authored; the explanation is left blank (incomplete).
**Steps:**
1. Attempt to save the question with a missing detail (e.g., no explanation).
2. Verify the question is not saved as a stub (the full detail is required).
3. Complete the detail and verify the save succeeds.
**Expected Result:** The question has the full detail (stem, options, answer, explanation) — it is complete, not a stub.
**Priority:** Critical

### TC-SA-08-02-003 — Curation: the bank reviewed for quality (accuracy, phrasing, clarity); an inaccurate or poorly phrased question is corrected, not left
**Type:** Negative
**Covers:** 2.1 → Curation: the bank reviewed for quality (accuracy, phrasing, clarity); Rule: the bank is curated for quality; an inaccurate or poorly phrased question is corrected, not left
**Preconditions:** The bank contains a poorly phrased or inaccurate question.
**Steps:**
1. Review the bank for quality (accuracy, phrasing, clarity).
2. Identify the poorly phrased or inaccurate question.
3. Correct it and verify it is not left.
**Expected Result:** The bank is curated for quality — the inaccurate or poorly phrased question is corrected, not left.
**Priority:** High

### TC-SA-08-02-004 — Organization: the questions organized by topic, subject, and type; the right question is findable
**Type:** Positive
**Covers:** 2.1 → Organization: the questions organized by topic, subject, and type; Rule: the questions are organized by topic, subject, and type; the right question is findable
**Preconditions:** The bank contains questions across topics, subjects, and types.
**Steps:**
1. Organize the bank: the questions by topic, subject, and type.
2. Search for a question by topic and verify the right question is found quickly.
**Expected Result:** The questions are organized by topic, subject, and type — the right question is findable.
**Priority:** High

### TC-SA-08-02-005 — Duplicate detection: similar questions flagged to avoid redundancy; duplicates are flagged and consolidated; the bank is not redundant
**Type:** Negative
**Covers:** 2.1 → Duplicate detection: similar questions flagged to avoid redundancy; Rule: duplicates are flagged and consolidated; the bank is not redundant
**Preconditions:** A similar question already exists in the bank; a near-duplicate is being added.
**Steps:**
1. Add the near-duplicate question.
2. Verify the duplicate is flagged (a similar question already in the bank).
3. Consolidate: keep the better one, remove the redundant, and verify the bank is not redundant.
**Expected Result:** The duplicate is flagged — it is consolidated (the better one kept, the redundant removed); the bank is not redundant.
**Priority:** High

### TC-SA-08-02-006 — Quality standard: the questions meet the bank's quality bar; a question below it is corrected before it is used
**Type:** Negative
**Covers:** 2.1 → Quality standard: the questions meet the bank's quality bar; Rule: the quality standard is the bank's bar; a question below it is corrected before it is used
**Preconditions:** A question below the quality bar exists in the bank.
**Steps:**
1. Identify the question below the quality bar.
2. Verify it is corrected before it is used in an assessment.
3. Verify the corrected question meets the bar.
**Expected Result:** The question below the quality bar is corrected before it is used — the bank's questions meet the bar.
**Priority:** High

### TC-SA-08-02-007 — Question create and edit events are audit-logged with the question, the actor, and the timestamp
**Type:** Positive
**Covers:** 2.1 → Audit logging of question create/edit; Rule: question create/edit is audit-logged with the question, actor, and timestamp
**Preconditions:** Questions have been created and edited.
**Steps:**
1. Open the audit trail and filter by "question".
2. Verify entries for create and edit show the question, the actor, and the timestamp.
**Expected Result:** The question create and edit events are audit-logged with the question, actor, and timestamp.
**Priority:** Critical

## 2.2 AI-Generated Questions from Video Content

### TC-SA-08-02-008 — AI generation: questions generated from a video's content
**Type:** Positive
**Covers:** 2.2 → AI generation: questions generated from a video's content
**Preconditions:** A video exists; AI question generation is available.
**Steps:**
1. Request AI-generated questions for the video (from the video's content).
2. Verify the platform's in-house AI generates the draft questions from the video content.
**Expected Result:** The questions are generated from the video's content by the in-house AI.
**Priority:** Critical

### TC-SA-08-02-009 — Draft status: the generated questions are drafts, not final; they enter the bank only after human review and approval
**Type:** Negative
**Covers:** 2.2 → Draft status: the generated questions are drafts, not final; Rule: AI-generated questions are drafts; they enter the bank only after human review and approval
**Preconditions:** AI-generated questions have been produced for a video.
**Steps:**
1. Verify the generated questions appear as drafts (not yet in the bank).
2. Verify they are not available for assessment building until reviewed and approved.
**Expected Result:** The generated questions are drafts — they enter the bank only after human review and approval.
**Priority:** Critical

### TC-SA-08-02-010 — Human review: the generated questions reviewed for accuracy before approval; the review checks accuracy (the question matches the content, the answer is correct)
**Type:** Negative
**Covers:** 2.2 → Human review: the generated questions reviewed for accuracy before approval; Rule: the review checks accuracy (the question matches the content, the answer is correct); an inaccurate question is corrected or rejected
**Preconditions:** AI-generated questions include an inaccurate or off-topic question.
**Steps:**
1. Review the generated questions for accuracy (the questions match the video's content and the answers are correct).
2. Identify the inaccurate or off-topic question.
3. Correct it (and approve the correction) or reject it.
**Expected Result:** The generated questions are reviewed for accuracy — the inaccurate question is corrected or rejected.
**Priority:** Critical

### TC-SA-08-02-011 — Approval: the reviewed questions approved into the bank (or corrected/rejected)
**Type:** Positive
**Covers:** 2.2 → Approval: the reviewed questions approved into the bank (or corrected/rejected)
**Preconditions:** AI-generated questions have been reviewed and are correct.
**Steps:**
1. Approve the correct questions into the bank.
2. Verify they are now available for assessment building.
**Expected Result:** The reviewed questions are approved into the bank — they are available for assessment building.
**Priority:** Critical

### TC-SA-08-02-012 — Generation parameters: the question count, types, and difficulty requested; they are set per request; they are explicit
**Type:** Positive
**Covers:** 2.2 → Generation parameters: the question count, types, and difficulty requested; Rule: the generation parameters (count, types, difficulty) are set per request; they are explicit
**Preconditions:** AI question generation is requested for a video.
**Steps:**
1. Set the generation parameters: the question count, the types, and the difficulty.
2. Verify the parameters are explicit per request.
3. Verify the generated questions match the parameters.
**Expected Result:** The generation parameters (count, types, difficulty) are set per request — they are explicit and the generated questions match.
**Priority:** High

### TC-SA-08-02-013 — Traceability: the AI-generated questions marked as such (the source video); the origin is traceable
**Type:** Positive
**Covers:** 2.2 → Traceability: the AI-generated questions marked as such (the source video); Rule: the AI-generated questions are marked as such, with the source video; the origin is traceable
**Preconditions:** AI-generated questions have been approved into the bank.
**Steps:**
1. Open an AI-generated question in the bank.
2. Verify it is marked as AI-generated, with the source video.
3. Verify the origin is traceable.
**Expected Result:** The AI-generated questions are marked as such, with the source video — the origin is traceable.
**Priority:** High

### TC-SA-08-02-014 — Generation and approval events are audit-logged with the video, the questions, the actor, and the timestamp
**Type:** Positive
**Covers:** 2.2 → Audit logging of generation and approval; Rule: generation and approval are audit-logged with the video, questions, actor, and timestamp
**Preconditions:** AI question generation and approval events have occurred.
**Steps:**
1. Open the audit trail and filter by "AI question".
2. Verify entries for generation and approval show the video, the questions, the actor, and the timestamp.
**Expected Result:** The generation and approval events are audit-logged with the video, questions, actor, and timestamp.
**Priority:** Critical

### TC-SA-08-02-015 — A rejected question does not enter the bank; the rejection is recorded
**Type:** Negative
**Covers:** 2.2 → Rule: a rejected question does not enter the bank; the rejection is recorded
**Preconditions:** An AI-generated question is rejected during review.
**Steps:**
1. Reject the inaccurate question.
2. Verify it does not enter the bank (it is not available for assessment building).
3. Verify the rejection is recorded.
**Expected Result:** The rejected question does not enter the bank — the rejection is recorded.
**Priority:** High

## 2.3 Question Types, Difficulty Tagging, and Bloom's Taxonomy Alignment

### TC-SA-08-02-016 — Question types: multiple choice, fill-in-the-blank, true/false, short answer, essay
**Type:** Positive
**Covers:** 2.3 → Question types: multiple choice, fill-in-the-blank, true/false, short answer, essay
**Preconditions:** Questions of various types are being created.
**Steps:**
1. Set the type for each question: multiple choice, fill-in-the-blank, true/false, short answer, or essay.
2. Verify each type is available and matches the question's actual format.
**Expected Result:** The question types (multiple choice, fill-in-the-blank, true/false, short answer, essay) are set — each matches the question's actual format.
**Priority:** Critical

### TC-SA-08-02-017 — Difficulty tagging: the question tagged by difficulty (e.g., easy, medium, hard)
**Type:** Positive
**Covers:** 2.3 → Difficulty tagging: the question tagged by difficulty (e.g., easy, medium, hard)
**Preconditions:** A question is being classified.
**Steps:**
1. Tag the difficulty (easy, medium, hard), reflecting the question's actual challenge level.
2. Verify the tag is set.
**Expected Result:** The difficulty tag is set — it reflects the question's actual challenge level.
**Priority:** High

### TC-SA-08-02-018 — Bloom's Taxonomy alignment: the question mapped to a cognitive level (remember, understand, apply, analyze, evaluate, create)
**Type:** Positive
**Covers:** 2.3 → Bloom's Taxonomy alignment: the question mapped to a cognitive level (remember, understand, apply, analyze, evaluate, create)
**Preconditions:** A question is being classified.
**Steps:**
1. Map the Bloom's Taxonomy level (the cognitive level the question targets: remember, understand, apply, analyze, evaluate, create).
2. Verify the mapping is set.
**Expected Result:** The Bloom's Taxonomy level is mapped — the cognitive level the question targets is set.
**Priority:** High

### TC-SA-08-02-019 — Consistent classification: the attributes set for every question; every question has a type, a difficulty tag, and a Bloom's level; the classification is complete
**Type:** Negative
**Covers:** 2.3 → Consistent classification: the attributes set for every question; Rule: every question has a type, a difficulty tag, and a Bloom's level; the classification is complete
**Preconditions:** A question is missing a classification attribute (e.g., no Bloom's level).
**Steps:**
1. Attempt to use the question in an assessment with a missing classification attribute.
2. Verify the classification is incomplete and the missing attribute is flagged.
3. Set the missing attribute and verify the classification is complete.
**Expected Result:** Every question has a type, a difficulty tag, and a Bloom's level — the classification is complete.
**Priority:** Critical

### TC-SA-08-02-020 — Mix building: assessments built to a target mix of types, difficulties, and levels; the classification enables mix-based assessment building
**Type:** Positive
**Covers:** 2.3 → Mix building: assessments built to a target mix of types, difficulties, and levels; Rule: the classification enables mix-based assessment building (a target mix of types, difficulties, levels)
**Preconditions:** The bank has questions classified by type, difficulty, and level.
**Steps:**
1. Build an assessment to a target mix: the types, the difficulties, and the cognitive levels.
2. Verify the assessment is balanced (not all easy, not all one type).
**Expected Result:** The assessment is built to a target mix — the types, difficulties, and levels are balanced.
**Priority:** High

### TC-SA-08-02-021 — Bank analysis: the bank analyzed by the classification dimensions; a coverage gap is visible, not silent
**Type:** Negative
**Covers:** 2.3 → Bank analysis: the bank analyzed by the classification dimensions; Rule: the bank is analyzable by the dimensions; a coverage gap is visible, not silent
**Preconditions:** The bank has no hard questions on a topic (a coverage gap).
**Steps:**
1. Analyze the bank by the classification dimensions: the coverage per type, difficulty, and level.
2. Verify the gap (no hard questions on a topic) is visible, not silent.
**Expected Result:** The bank is analyzed by the dimensions — the coverage gap (no hard questions on a topic) is visible, not silent.
**Priority:** High

### TC-SA-08-02-022 — Classification changes are audit-logged with the question, the attributes, and the timestamp
**Type:** Positive
**Covers:** 2.3 → Audit logging of classification changes; Rule: classification changes are audit-logged with the question, attributes, and timestamp
**Preconditions:** Question classification attributes have been changed.
**Steps:**
1. Open the audit trail and filter by "classification".
2. Verify entries show the question, the attributes changed, and the timestamp.
**Expected Result:** The classification changes are audit-logged with the question, attributes, and timestamp.
**Priority:** Critical

### TC-SA-08-02-023 — A mis-classification is corrected; the attributes reflect the question's actual format, challenge, and cognitive level
**Type:** Negative
**Covers:** 2.3 → Rule: the attributes reflect the question's actual format, challenge, and cognitive level; a mis-classification is corrected
**Preconditions:** A question has a wrong difficulty tag (mis-classified).
**Steps:**
1. Identify the mis-classified question (a wrong difficulty tag).
2. Correct the attribute to reflect the question's actual challenge level.
3. Verify the change is recorded.
**Expected Result:** The mis-classification is corrected — the attributes reflect the question's actual format, challenge, and cognitive level.
**Priority:** High

### TC-SA-08-02-024 — The classification is consistent across the bank; the same question type/level is classified the same way
**Type:** Edge
**Covers:** 2.3 → Rule: the classification is consistent across the bank; the same question type/level is classified the same way
**Preconditions:** The bank has multiple questions of the same type and level.
**Steps:**
1. Review the classification across the bank.
2. Verify the same question type/level is classified the same way (consistent).
**Expected Result:** The classification is consistent across the bank — the same question type/level is classified the same way.
**Priority:** Medium

## 2.4 Regular Question Refreshing

### TC-SA-08-02-025 — Refresh cycle: the regular review and update of the bank; the refresh is a regular cycle; it is not a one-time event
**Type:** Positive
**Covers:** 2.4 → Refresh cycle: the regular review and update of the bank; Rule: the refresh is a regular cycle; it is not a one-time event
**Preconditions:** The question bank exists; the refresh cycle is configured.
**Steps:**
1. On the refresh cycle, review the bank for staleness.
2. Verify the refresh is a regular cycle (recurring), not a one-time event.
**Expected Result:** The refresh is a regular cycle — the bank is reviewed and updated regularly, not as a one-time event.
**Priority:** High

### TC-SA-08-02-026 — Outdated question replacement: stale questions replaced with current ones; an outdated question is replaced (retired and a current one added); it is not silently left stale
**Type:** Negative
**Covers:** 2.4 → Outdated question replacement: stale questions replaced with current ones; Rule: an outdated question is replaced (retired and a current one added); it is not silently left stale
**Preconditions:** A question is flagged as outdated (the content it covers changed).
**Steps:**
1. Identify the outdated question.
2. Retire it and add a current replacement (authored or AI-generated and reviewed).
3. Verify it is not silently left stale.
**Expected Result:** The outdated question is replaced — it is retired and a current one is added; it is not silently left stale.
**Priority:** Critical

### TC-SA-08-02-027 — New question addition: fresh questions added to keep the bank current
**Type:** Positive
**Covers:** 2.4 → New question addition: fresh questions added to keep the bank current
**Preconditions:** The bank needs fresh questions (covering updated content, filling coverage gaps).
**Steps:**
1. Add new questions to keep the bank current (covering the updated content, filling the coverage gaps).
2. Verify the new questions meet the quality bar.
**Expected Result:** New questions are added — the bank is kept current, covering the updated content and filling the gaps.
**Priority:** High

### TC-SA-08-02-028 — Rotation: the question set rotated so assessments are not repetitive; an over-used question is retired from active rotation (not deleted)
**Type:** Positive
**Covers:** 2.4 → Rotation: the question set rotated so assessments are not repetitive; Rule: rotation prevents repetitiveness; an over-used question is retired from active rotation (not deleted)
**Preconditions:** A question is over-used (appearing in too many assessments).
**Steps:**
1. Rotate the question set: the questions used in assessments are rotated.
2. Retire the over-used question from active rotation (it is not deleted, but it is not reused).
3. Verify the assessments are not repetitive or memorizable.
**Expected Result:** The question set is rotated — the over-used question is retired from active rotation (not deleted); the assessments are not repetitive.
**Priority:** High

### TC-SA-08-02-029 — Staleness detection: questions flagged as outdated (content changed, over-used)
**Type:** Positive
**Covers:** 2.4 → Staleness detection: questions flagged as outdated (content changed, over-used)
**Preconditions:** The bank contains questions whose content changed or that are over-used.
**Steps:**
1. Run the staleness detection on the bank.
2. Verify the questions flagged as outdated (the content they cover changed, or they are over-used) are identified.
**Expected Result:** The stale questions are flagged — the content they cover changed, or they are over-used.
**Priority:** High

### TC-SA-08-02-030 — Refresh review: the refreshed bank reviewed for quality and coverage; a gap introduced by the refresh is closed
**Type:** Negative
**Covers:** 2.4 → Refresh review: the refreshed bank reviewed for quality and coverage; Rule: the refresh is reviewed for quality and coverage; a gap introduced by the refresh is closed
**Preconditions:** A refresh introduced a coverage gap (a topic lost its questions).
**Steps:**
1. Review the refreshed bank for quality and coverage.
2. Identify the gap introduced by the refresh.
3. Close the gap (add the missing questions) and verify the coverage is adequate.
**Expected Result:** The refreshed bank is reviewed — the gap introduced by the refresh is closed; the coverage is adequate.
**Priority:** High

### TC-SA-08-02-031 — Refresh actions are audit-logged with the questions, the action (replace/add/rotate/retire), and the timestamp
**Type:** Positive
**Covers:** 2.4 → Audit logging of refresh actions; Rule: refresh actions are audit-logged with the questions, action, and timestamp
**Preconditions:** Refresh actions (replace, add, rotate, retire) have occurred.
**Steps:**
1. Open the audit trail and filter by "refresh".
2. Verify entries show the questions, the action (replace/add/rotate/retire), and the timestamp.
**Expected Result:** The refresh actions are audit-logged with the questions, action, and timestamp.
**Priority:** Critical

### TC-SA-08-02-032 — A retired question is preserved (not deleted); it is out of active rotation
**Type:** Edge
**Covers:** 2.4 → Rule: a retired question is preserved (not deleted); it is out of active rotation
**Preconditions:** A question is retired from active rotation.
**Steps:**
1. Retire the question from active rotation.
2. Verify it is preserved (not deleted) in the bank.
3. Verify it is out of active rotation (not reused in assessments).
**Expected Result:** The retired question is preserved (not deleted) — it is out of active rotation.
**Priority:** High
