Zum Inhalt springen

The `selection-aggregate` Area (11th area)

Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.

Conformance language (MUST/SHOULD/MAY) follows BCP 14 [RFC2119]/[RFC8174] as defined in 00-overview.md.


Grading is organised into areas — one rubric per primitive type. Ten areas already exist with output schemas under prompts/output-schemas/: single-test, tools-aggregate-schema, tools-aggregate-namespace, namespace-description, namespace-skills, about-namespace, about-selection, selection-skills-L1, selection-skills-L2, selection-skills-L3. The eleventh area, selection-aggregate, is the one missing piece: it grades the selection as a whole.

The selection-wide dimensions — thresholds, topic coherence, member-against-about conformance, persona use-case fit, the group-bound tier path — have no per-skill or per-about home. Without selection-aggregate there is no gate for Grade A. This area MUST exist; its output schema, template, and skill triad MUST be built (the other ten already exist).

The area’s gradings are stored at selections/<selection>/_gradings/ (the selection-level _gradings/ folder).


selection-aggregate carries the selection-wide dimensions:

DimensionMeaning
Thresholdssoft >= 5 member namespaces (a group; Grade A not regular), hard >= 7 (Grade A regularly attainable). Fewer than 5 → no selection phases (n/a); 5–6 → no Grade A.
Topic coherenceThe members form a coherent topic, not an arbitrary bag.
domainConformanceThe members are checked against the About / Domain-Knowledge. This is distinct from about-selection, which checks the document’s own quality. Document quality is not the same as member conformance — two checks, no circularity.
personaUseCaseFitThe selection fits the declared personas’ use cases.
Group-bound tierThis is the area that opens the path to Grade A (gradingTier = group-bound). Provider-level grading alone caps at Grade B.
Cascade-stopThe aggregate stops the cascade when a hard precondition fails (e.g. members below threshold), rather than producing a misleading partial grade.

The output of every area shares a common envelope (from _master.schema.json plus the area-specific part) and a list of answers[]. The selection-aggregate output conforms to that envelope.

FieldValue
gradingIdunique grading identifier
schemaHashhash binding of the graded artifact
areaconst "selection-aggregate"
iteration1–5
timestampisland timestamp grammar
persona{ basePersonaId ∈ [ai-engineer, decision-maker, hackathon-builder, schema-maintainer], lensId }
answers[]the area answers (see below)
improvementHints[]actionable hints for the improve loop
harnessenum ["claude-code"]

Each answer has: questionId (^Q-…), score (1–5 or pass/fail/stale/n/a), reasoning, optional evidence, and naReason (required when score is n/a).

selection-aggregate carries one answer per carried dimension above (deterministic where decidable — e.g. the threshold count — non-deterministic where it requires judgment — e.g. topic coherence, persona fit). The deterministic threshold answer and the non-deterministic judgment answers are merged into the single area output; a deterministic-only result is not a valid area grading.

Validation uses draft 2020-12 (Ajv2020 + ajv-formats); _master is added once via addSchema.


The prompt template for selection-aggregate follows the same contract as the other ten areas’ templates: it states the area, injects the resolved member-resolution manifest (from index.json), the About / Domain-Knowledge, the declared personas, and the threshold counts, then asks one question per carried dimension. The template MUST include the Goal-Block and the surfacing convention (see 25-harness-and-goal.md).


Like every area, selection-aggregate is backed by a skill triad — the three-skill contract (start-gradeevaluateapply-improvement) that the harness runs as the inner micro-loop. The triad reads the frozen lockSnapshot and the member-resolution manifest, evaluates the carried dimensions, and emits improvementHints[] when the selection falls short. The triad MUST be built for this area (the other ten already have theirs).


selection-aggregate is the node selectionAggregate in the selection’s index.json. Its status follows the 5-status node enum; reaching stable here (with the hard threshold met and a group-bound evaluation present) is what allows the selection rollup to reach Grade A.