# What Is the Pre‑Emit Self‑Critique System? Hallmark’s Six Scoring Axes Explained

> Master Hallmark's pre-emit self-critique system. Understand its six scoring axes and ensure artifact quality with this mandatory quality gate. Learn how to achieve optimal scores.

- Repository: [Hassan El Mghari/hallmark](https://github.com/Nutlope/hallmark)
- Tags: deep-dive
- Published: 2026-07-31

---

**The pre‑emit self‑critique is a mandatory quality gate in the Hallmark framework that scores every planned artifact on six independent axes before emission, forcing automatic revision until all scores reach 4 or higher on a 1–5 scale.**

In the `Nutlope/hallmark` repository, this system serves as the first line of defense against low‑quality generated content. Before any HTML, CSS, or Markdown file is written to disk, the model must evaluate its proposed output against six specific criteria and embed the results as a machine‑readable stamp on the first line of the file.

## How the Pre‑Emit Self‑Critique Works

The system operates as a blocking checkpoint. If any axis scores **3 or lower**, the generation loop restarts: the model revises the artifact and re‑scores until every axis hits the official pass threshold of **≥ 4**.

According to [`skills/hallmark/SKILL.md`](https://github.com/Nutlope/hallmark/blob/main/skills/hallmark/SKILL.md), this rule is non‑optional. It ensures that obvious design weaknesses, generic copy, or structural repetition are caught before downstream processes like the 58‑gate slop‑test begin.

### The Six Scoring Axes

The criteria are defined in [`skills/hallmark/references/slop-test.md`](https://github.com/Nutlope/hallmark/blob/main/skills/hallmark/references/slop-test.md) and abbreviated as **P, H, E, S, R, V**. Each measures a distinct quality dimension:

- **P – Philosophy**: Does the output articulate a clear *why* or deliberate point of view, rather than functioning as a generic layout?
- **H – Hierarchy**: Are primary, secondary, and tertiary information levels instantly recognizable through type scale, color weight, and layout ordering?
- **E – Execution**: Are implementation details (spacing, color contrast, interaction states, accessibility) precise and error‑free?
- **S – Specificity**: Does the output feel tailor‑made for the specific brief, or could it be any generic page?
- **R – Restraint**: Has every superfluous element—unnecessary decorations, duplicated components, or padding‑for‑padding’s‑sake—been removed?
- **V – Variety**: Does the output avoid reusing the exact structural fingerprint of a previous Hallmark page, ensuring a different archetype or variation?

## Implementation in the Hallmark Codebase

When scores are finalized, Hallmark stamps them into a comment that must appear as the **very first line** of the generated file. This format is strictly defined in the slop‑test reference:

```css
/* Hallmark · pre-emit critique: P5 H4 E5 S4 R5 V5 */

```

This stamp serves dual purposes. It acts as **machine‑readable metadata** for later automation steps (allowing the 58‑gate slop‑test to skip already‑verified weaknesses) and as a **human‑readable audit trail** for reviewers.

### Key Files Defining the System

| File | Purpose |
|------|---------|
| [`skills/hallmark/SKILL.md`](https://github.com/Nutlope/hallmark/blob/main/skills/hallmark/SKILL.md) | Declares the pre‑emit rule and describes revision loops |
| [`skills/hallmark/references/slop-test.md`](https://github.com/Nutlope/hallmark/blob/main/skills/hallmark/references/slop-test.md) | Provides the definitive table of axes and exact comment format |
| [`site/examples/wayfare/style.css`](https://github.com/Nutlope/hallmark/blob/main/site/examples/wayfare/style.css) | Real‑world CSS example with the critique stamp |
| [`site/_tests/13-alma/index.html`](https://github.com/Nutlope/hallmark/blob/main/site/_tests/13-alma/index.html) | HTML demonstration of the stamp in generated output |

## Code Examples

### Adding the Stamp to CSS

When generating stylesheets, prepend the critique comment before any rules:

```css
/* Hallmark · pre-emit critique: P5 H5 E5 S5 R4 V5 */
body {
  font-family: var(--font-body);
  line-height: 1.6;
}

```

*The comment must occupy line 1 so automated parsers in the Hallmark pipeline can locate it without scanning the entire file.*

### Adding the Stamp to Markdown

For Markdown outputs, use an HTML comment to ensure the stamp remains invisible in rendered views:

```markdown
<!-- Hallmark · pre-emit critique: P4 H4 E5 S3 R5 V5 -->

# Product Overview

This page introduces the new feature set...

```

Note that a score of **S3** in this example would trigger a revision loop, as it falls below the required threshold of 4.

### Programmatic Generation Pattern

Below is a pseudo‑code implementation showing how the critique integrates into a generation pipeline:

```javascript
function preEmitCritique(output) {
  const scores = {
    P: evaluatePhilosophy(output),
    H: evaluateHierarchy(output),
    E: evaluateExecution(output),
    S: evaluateSpecificity(output),
    R: evaluateRestraint(output),
    V: evaluateVariety(output),
  };
  
  // Check threshold: all must be >= 4
  const passed = Object.values(scores).every(s => s >= 4);
  
  const stamp = `/* Hallmark · pre-emit critique: P${scores.P} H${scores.H} E${scores.E} S${scores.S} R${scores.R} V${scores.V} */`;
  
  return {
    content: stamp + '\n' + output,
    passed,
    scores
  };
}

```

Each `evaluate*` function encapsulates the axis‑specific checklist from the Hallmark skill documentation, ensuring consistent scoring across different model generations.

## Summary

- The **pre‑emit self‑critique** is a mandatory gate in `Nutlope/hallmark` that blocks artifact emission until quality thresholds are met.
- Outputs are scored on **six axes**: Philosophy, Hierarchy, Execution, Specificity, Restraint, and Variety.
- Scores range from 1–5; a score of **3 or lower forces automatic revision** until all axes reach **≥ 4**.
- Results are stamped on **line 1** of every file using the format `/* Hallmark · pre-emit critique: P# H# E# S# R# V# */`.

- Reference implementations appear in [`SKILL.md`](https://github.com/Nutlope/hallmark/blob/main/SKILL.md), [`slop-test.md`](https://github.com/Nutlope/hallmark/blob/main/slop-test.md), and example files like [`wayfare/style.css`](https://github.com/Nutlope/hallmark/blob/main/wayfare/style.css).

## Frequently Asked Questions

### What happens if one axis scores below 4 but others are perfect?

The system enters a revision loop. According to the rules in [`skills/hallmark/SKILL.md`](https://github.com/Nutlope/hallmark/blob/main/skills/hallmark/SKILL.md), the model must regenerate the specific content failing that axis, adjust the design or copy to address the weakness, and re‑score until all six axes meet the ≥ 4 threshold. No file is emitted until this condition is satisfied.

### Can the pre‑emit stamp be removed after generation?

Removing the stamp breaks the audit trail and may cause downstream slop‑test gates to fail. The stamp is designed as permanent metadata that remains in the source file, allowing future automated checks to verify that the pre‑emit quality gate was actually passed.

### How does the Variety (V) axis prevent templated output?

The **Variety** axis explicitly checks against "reusing the exact structural fingerprint of a previous Hallmark page." This forces the model to compare the macro‑structure against known archetypes and select a different layout pattern or variation knob, ensuring each generated page feels distinct rather than templated.

### Where is the official documentation for the scoring criteria?

The definitive table of axes and scoring rubric lives in [`skills/hallmark/references/slop-test.md`](https://github.com/Nutlope/hallmark/blob/main/skills/hallmark/references/slop-test.md) within the repository. The enforcement rule and revision loop logic are documented in [`skills/hallmark/SKILL.md`](https://github.com/Nutlope/hallmark/blob/main/skills/hallmark/SKILL.md) under the "Pre‑Emit Self‑Critique" section.