evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
{
"context": "Evaluates how effectively the solution uses notion-client to recursively hydrate relation-linked pages, merge their record maps, and control traversal depth. Emphasizes correct use of built-in relation hydration options over hand-rolled HTTP while preventing redundant fetches.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Relation flagging",
"description": "Uses NotionAPI.getPage with the fetchRelationPages option enabled (or equivalent call flow) to pull relation-linked pages for the base page rather than manual HTTP requests.",
"max_score": 30
},
{
"name": "Recursive traversal",
"description": "Iteratively applies fetchRelationPages(recordMap) and subsequent getPage calls to walk relation graphs until no new IDs remain, merging returned block maps into the aggregate record map.",
"max_score": 20
},
{
"name": "Missing blocks",
"description": "When includeMissingBlocks is true, ensures relation page retrieval also fetches child blocks by enabling fetchMissingBlocks on getPage or by invoking getBlocks for missing IDs sourced from relation pages.",
"max_score": 15
},
{
"name": "Depth control",
"description": "Respects the maxDepth option by halting additional fetchRelationPages/getPage cycles once the depth limit is reached, while still returning earlier relation data.",
"max_score": 15
},
{
"name": "Deduping relations",
"description": "Tracks seen relation page IDs (e.g., via extractRelationPageIdsFromBlock or equivalent) to avoid repeated getPage/fetchRelationPages calls for the same page.",
"max_score": 10
},
{
"name": "Opt-out path",
"description": "When hydrateRelations is disabled, skips fetchRelationPages-related calls and returns only the base getPage result without relation blocks.",
"max_score": 10
}
]
}