ForgeMark
Sensitivity marking that is derived once and rendered identically everywhere a course is published
The interactive marking demonstrator lets you set a policy and watch the banner, portion tags, authority block, and the five publish gates update live. It mirrors the shipped marking logic and exposes nothing from the private editor.
Executive Summary
ForgeMark is the classification-marking layer inside CourseForge. Training content built for defense and government audiences routinely carries portions at different sensitivity levels, and each portion has to be marked to policy: a banner at the highest level present, a portion mark on every image and paragraph, and a derivative-classification statement that names the authority. Doing this by hand is slow and easy to get wrong, and the marking has to survive every way a course is published.
ForgeMark treats a course's marking policy as structured data, not manual annotation. An author sets the policy once; ForgeMark derives the banner, the portion tags, and the authority block from it, and renders them identically across the browser authoring preview, the SCORM 1.2 and SCORM 2004 packages, and the offline web bundle. Publishing is gated: a course whose markings fail contrast, exceed the allowed level, or carry an incomplete authority block does not ship.
Standards It Follows
The marking model follows the federal rules for portion marking and derivative classification, rather than an ad hoc scheme:
- 32 CFR 2001.22 to 2001.24 and the ISOO Marking Booklet: every portion (paragraph, title, bullet, image) is marked immediately, a banner reflects the highest portion at the top and bottom of the page, and a derivative-classification block names the authority.
- Level palette sourced from DoD 5220.22-M (NISPOM, Para 8-306a) and the Astro UXDS classification-marking tokens, so the colors match what reviewers expect rather than a designer's guess.
- Section 508 / WCAG 2.1 AA: the marking colors themselves are held to the 4.5:1 contrast floor, and a marking that fails it blocks publish.
The contrast ratios below were computed from the shipped color tokens. Automated contrast math is necessary but not sufficient for a Section 508 determination; formal conformance is a human review. ForgeMark enforces the measurable floor and leaves the determination to a reviewer.
The Classification Levels
The default US government scheme ships six levels. Each swatch below is rendered in the exact token ForgeMark uses, and the ratio column is the measured contrast of that swatch's text on its background.
| Level | Abbr | Background | Contrast |
|---|---|---|---|
| UNCLASSIFIED | U | #007a33 | 5.48:1 |
| CUI | CUI | #502b85 | 10.37:1 |
| CONFIDENTIAL | C | #0033a0 | 10.60:1 |
| SECRET | S | #c8102e | 5.88:1 |
| TOP SECRET | TS | #ff8c00 | 9.00:1 |
| TOP SECRET//SCI | TS//SCI | #fce83a | 16.74:1 |
Top Secret and Top Secret//SCI switch to black text, matching the marking convention for the amber and yellow bands. Every level clears the 4.5:1 AA floor. Caveats (NOFORN, REL TO, ORCON, FOUO, ITAR) attach to a marking and appear only at or above the level they apply from, so a caveat cannot be set on a portion that is too low to carry it. A corporate scheme (Public / Internal / Confidential / Restricted) ships alongside for non-government use.
Three Marking Layers
ForgeMark renders marking at three granularities, each with a job:
(S) or (S) NOFORN, placed at author-chosen anchors.(U) or (S//NOFORN).The banner level is derived, not typed: it is the higher of the course-wide applied level (a floor set once for the whole course) and the highest per-portion marking on the page. Marking a single image Secret raises that frame's banner to Secret without the author touching the banner. An individual portion can be marked below the course floor when it genuinely is lower, which is exactly the portion-marking case the standard exists for.
The Authority Block
A banner and portion marks show what a portion is. They do not make the product authoritative. The derivative-classification statement (32 CFR 2001.22) does, and ForgeMark renders it as a lower-left block on classified frames:
Classified By: J. Cardona, Program Manager
Derived From: Multiple Sources
Downgrade To: CONFIDENTIAL on 2028-01-01
Declassify On: 2035-08-14
The block is optional and course-level. When it is shown, the two mandatory lines (Classified
By and Declassify On) are required to publish, mirroring the rule that a real
classified product cannot ship without them. The same statement is stamped into the published
package's SCORM manifest, and the course title is prefixed with its highest classification, for
example [SECRET//NOFORN] Coffee 101, so the marking is visible in the LMS catalog
before a learner ever launches the course.
Rendered Identically Everywhere
A marking that looks right in the editor but drifts in the published package is worse than no marking. CourseForge renders shelled content through more than one path (the authoring preview, an HTML string builder, and the server publisher), so ForgeMark's marking logic exists as a pair of twin renderers, one in the browser and one on the server, held to matching output. The same policy produces the same banner, tags, and authority block whether an author is previewing a frame or an LMS is running the exported SCO.
The banner is placed by reflowing the navigation shell rather than floating over it. The shell scales its own stage to reserve the banner height, so the title, page counter, navigation, drawers, and the interactive runtimes all shift into the space between the top and bottom bands. Nothing is overlapped and nothing is clipped. This mattered for the self-scaling runtimes: an earlier overlay approach that added a competing scale broke the Adobe Animate player, which measures its own container. Reflowing the shell's single existing scale leaves that measurement intact.
Publishing Is Gated
Marking is only meaningful if a mismarked course cannot ship. ForgeMark adds hard gates to the publish preflight. Each is inert until a course actually sets a marking policy:
- Contrast: a level color, or a per-block color override, that fails WCAG AA (4.5:1) blocks publish.
- Mandatory marking: an unmarked visual-media block under a mandatory policy blocks publish.
- Maximum level: a portion marked above the course's allowed ceiling blocks publish.
- Caveat vocabulary: a caveat that is not in the course's approved vocabulary blocks publish.
- Authority completeness: a shown authority block missing Classified By or Declassify On blocks publish.
Marking Is Data, Not Markup
The policy that drives all of this is submitted from the browser, so it crosses a trust
boundary. ForgeMark never renders a submitted policy directly. A sanitizer coerces it into a
closed shape first: levels are sorted by precedence and de-duplicated, colors must be
#RRGGBB, level and caveat references are scoped to ids that actually exist, free
text is length-capped, and every enumerated field (banner mode, mark positions, scheme) is
constrained to a known set. A malformed or hostile policy resolves to a safe default or clears
the marking entirely; it can never inject markup or an off-vocabulary level into a published
package.
What This Demonstrates
ForgeMark is a small subsystem that touches the hard parts of the platform at once: a trust-boundary sanitizer, twin renderers held to byte-level parity, a runtime shell that reflows around injected chrome without breaking its own scaling, publish-time gates, and a real regulatory model rendered faithfully rather than approximated. The colors are sourced, the contrast is measured, and the accessibility floor is enforced at publish. It is the kind of feature where the work is in getting the governance and the render parity exactly right, not in the pixels.