Progression tool
collect_progression_evidence returns a bounded, deterministic candidate set for
reviewing possible progression across explicit grade scopes in one framework.
It collects evidence only. It does not assert a prerequisite, learning sequence, or learning progression.
For workflow guidance, see Collect progression evidence.
Request
| Field | Type | Default / bound | Meaning |
|---|---|---|---|
frameworkId |
string | required | Exact framework family |
snapshotId |
string or null | null | Exact snapshot or unique-current routing |
topicOrStandard |
string | required; 1-512 characters | Topic, code, or exact identifier selected by focusMode |
focusMode |
enum | topic |
How to interpret topicOrStandard |
localGradeLabels |
array[string] | empty; max 32 | Exact source-facing grade/stage scopes |
normalizedGrades |
array[string] | empty; max 32 | Normalized grade retrieval facets |
candidateLimit |
integer | 8; 2-20 | Hard maximum retained candidate count |
At least one localGradeLabels or normalizedGrades value is required. Values must be
unique and nonblank.
Focus modes
statement_code remains subject to the selected package's code policy.
Topic example
{
"request": {
"frameworkId": "ghana-nacca-primary-english-language-basic-1-3",
"focusMode": "topic",
"topicOrStandard": "story structure",
"localGradeLabels": ["BASIC 1", "BASIC 2", "BASIC 3"],
"candidateLimit": 8
}
}
Exact-anchor example
{
"request": {
"frameworkId": "<framework-id>",
"focusMode": "node_id",
"topicOrStandard": "<node-id>",
"normalizedGrades": ["1", "2", "3"],
"candidateLimit": 8
}
}
Scope validation and canonicalization
Requested grade values are validated against the selected accepted package. Retained scope values are then placed in package-declared canonical order rather than caller input order.
The response preserves both local source-facing labels and normalized retrieval facets. Normalized grades remain discovery aids, not assertions of grade equivalence.
Candidate discovery
The service can discover candidates through the selected focus plus grade-scoped search and hierarchy evidence. It deduplicates candidates by exact node identity before applying the hard retained-candidate bound.
Every retained candidate records its discoveryMethods, so downstream reasoning can see
how the node entered the candidate set instead of treating all candidates as equivalent
in provenance.
Result contract
The result contains:
| Field | Meaning |
|---|---|
package |
Exact accepted graph package |
sourceMetadata |
Exact snapshot source metadata |
request |
Canonical resolved request summary |
discoveredCandidateCount |
Unique candidates discovered before selection |
retainedCandidateCount |
Candidates retained after deterministic selection |
excludedCandidateCount |
Candidates omitted by the bound |
excludedCandidateNodeIds |
Exact IDs of excluded candidates |
candidateLimitApplied |
Whether the candidate bound excluded any discovered candidates |
discoveryComplete |
Whether evidence discovery completed without limiting warnings |
scopeCoverage |
Discovered and retained counts for every requested grade scope |
selectionPolicy |
Deterministic selection-policy evidence |
retainedCandidates |
Up to 20 selected candidate records |
warnings |
Progression-evidence warnings |
Each retained candidate includes:
- exact
nodesource evidence; - local and normalized
facets; retrievalStatus: retrieval_candidate;selectionRank;matchedLocalGradeLabelsandmatchedNormalizedGrades;- one or more
discoveryMethods; - optional originating
searchHit; and - compact bounded hierarchy
context.
The compact context reports ancestor and root-path completion independently and retains non-empty relationship-resolution statuses.
Warning codes
context_incomplete
discovery_incomplete
no_candidates
scope_not_retained
scope_without_candidates
search_warning
A warning does not authorize the client to fill missing evidence by inference. Preserve it in any downstream progression review.
Candidate limit
candidateLimit is a hard server-enforced retained-candidate maximum from 2 through 20.
The response records whether the limit was applied and names excluded node IDs.
Increasing the bound changes the requested evidence set and should be treated as a new request, not as continuation pagination.
No progression assertion
Evidence order is not a source-authored progression
Grade-scoped candidate collection does not prove that one standard is prerequisite to another, that a learner should encounter them in a particular order, or that the framework defines a learning progression across them.
Use the inferred_progression_hypothesis prompt when you want the host model to perform
an explicitly labeled model inference over this evidence.
Common errors
| Error code | Typical cause |
|---|---|
framework_not_found |
Selected framework or snapshot is unavailable |
standard_not_found |
Exact focus identifier cannot be resolved |
capability_unavailable |
Requested focus/search capability is unavailable |
Invalid grade scopes or missing required scope values can also fail strict request or domain validation before evidence collection begins.