# Features — ieb-inde-3

Evidence date: 2026-10-13. Inspected revision: `main` at `ce71caf`.

Provenance: **Implemented** unless a row says otherwise. Paths are under `INDE-3/Evolution Software Unified Framework/Evolution Software Unified Framework/` unless noted.

No feature roadmap, changelog, or removed-feature list exists in the repository. "Planned" and "deprecated" below are only what the tree itself shows.

## Current features

### Examination subject

| Feature | Where | Notes |
|---|---|---|
| Subject identity: year, level, paper, type, code, name, status, document password, time since status change | `oExaminationAuthoringandModeration` | Level, paper, type, and status are lookup ids. Year is a date; the pack number uses the year part. |
| Five resource roles | Same object | Examiner, reviewer, internal moderator, external moderator, assessment specialist. Stored as strings compared to `recId`. |
| Generated document password | `ExaminationAuthoringandModeration_form.ascx.cs` populate | Four characters, a number 0–1000, four characters. Read-only. Copy-to-clipboard button. Dated 2018-02-06. |
| Lock identity after create | Same populate | Code always disabled. Level, paper, name, type, and year disabled once `recId > 0`. |
| Reviewer-only status editing | Same populate | Status enabled only when the current user is the reviewer. |
| Hide main save below SuperUser | Same populate | Resource picklists disabled and both save buttons hidden when `userType` is below SuperUser. |
| New document pack for examiner and reviewer | Button for child surface `3037` | Hidden for the other three roles. |
| Status change log and mail | Save custom region, dated 2018-02-08 | Runs for the reviewer when an active pack exists. See business rules. |
| Assigned-subject list | `ExaminationAuthoringandModeration_grid.ascx.cs` | Below SuperUser, filter on `userDisplay` against the five resource columns. Dated 2018-02-08. |

### Document packs

| Feature | Where | Notes |
|---|---|---|
| Pack number and revision | Document pack, exam documents, internal mod, and external mod populate | Same generator in all four forms. |
| Revision from active pack count | `publ_ExaminationDocumentPack` | Used when revision text is `0`. |
| Immediate save of a new pack | Same populate | `PerformSave` when `recId == 0`. |
| Examination documents | `ExaminationDocumentPack_ExamDocs_form.ascx.cs` | New-document button is child surface `3038`. Visible to examiner and reviewer. |
| Upload complete | Button `DocumentUploadComplete` | Examiner sets status `1083`. Reviewer sets status `1084`. Writes an internal log. |

### Internal and external moderation

| Feature | Where | Notes |
|---|---|---|
| Eleven criteria on the question paper, marking guideline, and overall impression | `oExaminationDocumentPack` | Separate internal (`IM`) and external (`EM`) fields. Criteria 1–7 question paper, 8–10 marking guideline, 11 overall. Field 12 is the compliance summary, remarks, and completion date. |
| Moderator-only editing | `SetState` on each moderation form | External moderator on the external form. Internal moderator on the internal form. Main save buttons are then hidden. |
| Progress save and save moderation | Criterion buttons | External form checks `CurrentRole` is external moderator. Internal form checks internal moderator. |
| Compliance summary HTML | `examHandler.ReturnComplianceSummary` | Built when the overall summary id is greater than zero. Coloured by `ReturnComplianceClass` and `ReturnOverallComplianceClass`. |
| Criterion feedback rows | `CriterionFeedback.ascx.cs`, `oComplianceFeedbackCRITERION` | Number, reason for non-compliance, recommendation. Loaded through `sp_INDE_GetCriterionFeedbackData`. |
| External feedback modal | `OpenCriterion` on the external form | Opens `#modComplianceFeedback`. |

### Subject catalogue

| Feature | Where | Notes |
|---|---|---|
| Subject level, code, and name | `oSubjectManagement` | Status mail resolves the subject name from this row by `itemID`. |
| No INDE-3 custom save or lock | `SubjectManagement_form.ascx.cs` | The only custom branch is setup code `STUD-1`. |

### Mail

| Feature | Where | Notes |
|---|---|---|
| Status mail by role | `examHandler.EmailExamStatus` | Template `Examination Moderation Status`. Subject `IEB: {name} ({status})`. |
| Collaboration log mail | `examHandler.SaveCollaborationLog` | Always to the reviewer. Template `Examination Moderation Log`. |
| HTML status block | `ReturnCollaborationDetail` | Renders `oCollabDetailParcel` lines as a table. |

### Framework carried in the same tree

Admin pages, canvases, cart, products, loyalty, campaigns, the WCF service, scheduler, constructor, exporter, mobile, and the SQL project are present. They are the Evolution framework. No INDE-3 custom region was found that drives loyalty, cart, or MediSwitch.

`billingInstructions` is a billing-row control (account, supplier, tenant, landlord). It is not referenced by the examination custom regions that were read.

## Completed features

The examination custom regions are dated February 2018 and are in the imported tree. There is no release note that marks them complete. Provenance: **Inferred** from the dates and from the absence of a later product commit. The Git history itself is only the 2025-07-09 import.

## Planned features

None documented. `bitbucket-pipelines.yml` names a `develop` branch. That branch was not on the remote.

## In development

Nothing in the Git history is in progress. `main` is the 2025-07-09 import.

## Recently changed

The last product-bearing commit is `ce71caf` (2025-07-09, "Added INDE-3"), which adds the whole tree on top of a gitignore-only initial commit. It is an import, not a traced feature change.

## Deprecated or unused in this tree

| Item | Evidence |
|---|---|
| Local catalog `Framework_INDE-3` | Commented `conn` in the INDE-3 `Web.config`. The active key is `Framework_INDE-3_Demo`. |
| Personal mailbox override in status and log mail | Commented assignment. The active path uses the role address. |
| Control-disabling loops inside `SetState` | Commented. The live method toggles `saveGroup` and named buttons only. |
| `STUD-1` branch in Subject Management populate | Present, and it does not run unless setup code is `STUD-1`. |
| `billingInstructions` | Present. No examination caller was found. |
| `CEP.ConsoleTests` | Quote and inventory console project. Not an examination test suite. |
| SQL script folders for other customer codes | `data/Scripts` includes `INDE-1`, `INDE-2`, `INDE-6`, and others. No `INDE-3` folder. |

## Not in this repository

- `sonarqube_scan.bat`, reported at discovery, is not in git.
- A product name for INDE-3 in the readme. Exams is documented as INDE-1.
- Rocket.Chat, school, or cluster surfaces under `surface_custom`.
