Specification for the EMEP evaluation framework, covering the full candidate evaluation pipeline and explicit split isolation between Optimization, Validation, and Hidden Test sets.
The EvaluationEngine and BenchmarkEngine execute candidate assessment in EMEP. They run the full pipeline from model integrity checks through metric aggregation to candidate status assignment. This page specifies the complete evaluation flowchart, split isolation rules, and integration with the EvolutionEngine.
Candidate ModelThe input is a materialized candidate from the MergeEngine. It includes the model weights, genome, and parent references. The candidate must be in CANDIDATE lifecycle state.Integrity CheckThe EvaluationEngine verifies:
Model file checksums match the ArtifactStore record
Required metadata files are present
Tensor shapes are consistent with the genome specification
No NaN or Inf values in weight tensors (sampled check)
Failures produce INVALID status and terminate evaluation.Load ModelThe ModelLoader loads the candidate into the InferenceBackend. Loading includes device placement, dtype configuration, and optional quantization application. Memory usage is recorded at this stage.Select Benchmark ProfileThe BenchmarkEngine selects which benchmarks to run based on:
Experiment configuration
Candidate genome (for example code benchmarks for code-merge candidates)
Available compute budget
Profiles are pre-defined sets of benchmarks with specified splits and repetition counts.Run Benchmark SuiteBenchmarks execute against the Optimization Set. Each benchmark runs with fixed seeds and decoding parameters. Results are collected per-sample and per-benchmark.
The Hidden Test Set is never accessed during this phase. The Validation Set is also excluded during evolution. Only the Optimization Set drives evaluation results that feed back into the EvolutionEngine.
Collect MetricsRaw outputs are converted to metrics: accuracy, exact match, ROUGE, BLEU, calibrated log-likelihood, latency, throughput, and memory usage. Metrics are stored with full provenance: benchmark ID, sample ID, seed, and timestamp.Calculate ScoresPer-benchmark scores are computed from metrics. Scoring methods include:
Mean accuracy across samples
Macro-average across categories
Weighted combination for composite benchmarks
Aggregate ResultsScores are aggregated into a single result dictionary per candidate. Aggregation respects benchmark weights from the experiment configuration.Compare BaselineThe candidate’s aggregate scores are compared against the baseline model specified in the experiment. The baseline is typically the highest-performing parent or a previous release candidate.Regression CheckStatistical tests determine if the candidate is significantly worse than baseline on any critical metric. The RegressionEngine uses bootstrap confidence intervals. See Regression Evaluation for the full protocol.Fitness CalculationThe FitnessEngine computes scalar or vector fitness from the aggregated Optimization Set results. This value is passed back to the EvolutionEngine. See Fitness for formulas.Persist ResultsAll raw metrics, scores, and status are written to the ExperimentTracker and ArtifactStore. The candidate record is updated with evaluation timestamps and resource usage.Candidate StatusFinal status is assigned:
PASS: All checks passed, fitness above threshold
FAIL: Below minimum thresholds
REGRESSION: Statistically worse than baseline on critical metrics
Split isolation is enforced at the data layer, not just by convention. The DatasetRegistry tags every sample with its split, and the BenchmarkEngine validates that only Optimization Set samples are loaded during evolution-phase evaluation.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"EMEP","colors":{"primary":"#7C3AED","light":"#A78BFA","dark":"#5B21B6"},"appearance":{"strict":false},"background":{"decoration":"gradient","color":{"light":"#fafdfd","dark":"#0f1214"}},"seo":{"indexing":"all"},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"interaction":{"drilldown":true},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"ping-47788c6e","hasAudioNarration":false,"actualSubdomain":"ping-47788c6e","customDomains":["doc.blueapi.ir"],"gitSource":{"type":"github","owner":"sarmadaf24","repo":"evolutionarymodellplatform","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6a9d914c7dbaaddea3035369","collectionId":"c7cc67f8-369f-45fc-a29a-15a691f103b0","liveDeploymentHistoryId":"6a9d914c7dbaaddea3035369","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a9d914c7dbaaddea3035369","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"Interfaces \u0026 Governance","count":32},{"language":"default","tag":"Deployment \u0026 Ops","count":24},{"language":"default","tag":"Evolution \u0026 Evaluation","count":24},{"language":"default","tag":"Model Pipeline","count":20},{"language":"default","tag":"Platform","count":14},{"language":"default","tag":"Architecture","count":11},{"language":"default","tag":"Phases","count":10},{"language":"default","tag":"Testing","count":9},{"language":"default","tag":"Tracking \u0026 Reproducibility","count":9},{"language":"default","tag":"Evolution Engine","count":8}],"searchSettings":{"maxResults":7}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"evaluation/framework","slug":"/evaluation/framework","pageMetadata":{"title":"EvaluationEngine and BenchmarkEngine Framework","description":"Specification for the EMEP evaluation framework, covering the full candidate evaluation pipeline and explicit split isolation between Optimization, Validation, and Hidden Test sets.","sidebarTitle":"Evaluation Framework","href":"/evaluation/framework"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Specification for the EMEP evaluation framework, covering the full candidate evaluation pipeline and explicit split isolation between Optimization, Validation, and Hidden Test sets.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Info,Mermaid,Table,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Mermaid)_missingMdxReference(`Mermaid`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`The EvaluationEngine and BenchmarkEngine execute candidate assessment in EMEP. They run the full pipeline from model integrity checks through metric aggregation to candidate status assignment. This page specifies the complete evaluation flowchart, split isolation rules, and integration with the EvolutionEngine.`}),`\n`,_jsx(Heading,{level:`2`,id:`candidate-evaluation-flowchart`,children:`Candidate Evaluation Flowchart`}),`\n`,_jsx(Mermaid,{chart:`flowchart TD\n START([START]) --> CANDIDATE[Candidate Model]\n CANDIDATE --> INTEGRITY[Integrity Check]\n INTEGRITY -->|Fail| INVALID[Status: INVALID]\n INTEGRITY -->|Pass| LOAD[Load Model]\n LOAD --> PROFILE[Select Benchmark Profile]\n PROFILE --> RUN[Run Benchmark Suite]\n RUN --> COLLECT[Collect Metrics]\n COLLECT --> CALC[Calculate Scores]\n CALC --> AGG[Aggregate Results]\n AGG --> BASELINE[Compare Baseline]\n BASELINE --> REGRESS[Regression Check]\n REGRESS --> FITNESS[Fitness Calculation]\n FITNESS --> PERSIST[Persist Results]\n PERSIST --> STATUS[Candidate Status]\n STATUS --> END([END])\n INVALID --> END`}),`\n`,_jsx(Heading,{level:`2`,id:`phase-descriptions`,children:`Phase Descriptions`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Candidate Model`})}),`\n`,_jsx(_components.p,{children:`The input is a materialized candidate from the MergeEngine. It includes the model weights, genome, and parent references. The candidate must be in CANDIDATE lifecycle state.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Integrity Check`})}),`\n`,_jsx(_components.p,{children:`The EvaluationEngine verifies:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Model file checksums match the ArtifactStore record`}),`\n`,_jsx(_components.li,{children:`Required metadata files are present`}),`\n`,_jsx(_components.li,{children:`Tensor shapes are consistent with the genome specification`}),`\n`,_jsx(_components.li,{children:`No NaN or Inf values in weight tensors (sampled check)`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Failures produce INVALID status and terminate evaluation.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Load Model`})}),`\n`,_jsx(_components.p,{children:`The ModelLoader loads the candidate into the InferenceBackend. Loading includes device placement, dtype configuration, and optional quantization application. Memory usage is recorded at this stage.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Select Benchmark Profile`})}),`\n`,_jsx(_components.p,{children:`The BenchmarkEngine selects which benchmarks to run based on:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Experiment configuration`}),`\n`,_jsx(_components.li,{children:`Candidate genome (for example code benchmarks for code-merge candidates)`}),`\n`,_jsx(_components.li,{children:`Available compute budget`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Profiles are pre-defined sets of benchmarks with specified splits and repetition counts.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Run Benchmark Suite`})}),`\n`,_jsx(_components.p,{children:`Benchmarks execute against the Optimization Set. Each benchmark runs with fixed seeds and decoding parameters. Results are collected per-sample and per-benchmark.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`The Hidden Test Set is never accessed during this phase. The Validation Set is also excluded during evolution. Only the Optimization Set drives evaluation results that feed back into the EvolutionEngine.`})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Collect Metrics`})}),`\n`,_jsx(_components.p,{children:`Raw outputs are converted to metrics: accuracy, exact match, ROUGE, BLEU, calibrated log-likelihood, latency, throughput, and memory usage. Metrics are stored with full provenance: benchmark ID, sample ID, seed, and timestamp.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Calculate Scores`})}),`\n`,_jsx(_components.p,{children:`Per-benchmark scores are computed from metrics. Scoring methods include:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Mean accuracy across samples`}),`\n`,_jsx(_components.li,{children:`Macro-average across categories`}),`\n`,_jsx(_components.li,{children:`Weighted combination for composite benchmarks`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Aggregate Results`})}),`\n`,_jsx(_components.p,{children:`Scores are aggregated into a single result dictionary per candidate. Aggregation respects benchmark weights from the experiment configuration.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Compare Baseline`})}),`\n`,_jsx(_components.p,{children:`The candidate’s aggregate scores are compared against the baseline model specified in the experiment. The baseline is typically the highest-performing parent or a previous release candidate.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Regression Check`})}),`\n`,_jsxs(_components.p,{children:[`Statistical tests determine if the candidate is significantly worse than baseline on any critical metric. The RegressionEngine uses bootstrap confidence intervals. See `,_jsx(_components.a,{href:`/evaluation/regression-evaluation`,children:`Regression Evaluation`}),` for the full protocol.`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Fitness Calculation`})}),`\n`,_jsxs(_components.p,{children:[`The FitnessEngine computes scalar or vector fitness from the aggregated Optimization Set results. This value is passed back to the EvolutionEngine. See `,_jsx(_components.a,{href:`/evolution/fitness`,children:`Fitness`}),` for formulas.`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Persist Results`})}),`\n`,_jsx(_components.p,{children:`All raw metrics, scores, and status are written to the ExperimentTracker and ArtifactStore. The candidate record is updated with evaluation timestamps and resource usage.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Candidate Status`})}),`\n`,_jsx(_components.p,{children:`Final status is assigned:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`PASS`}),`: All checks passed, fitness above threshold`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`FAIL`}),`: Below minimum thresholds`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`REGRESSION`}),`: Statistically worse than baseline on critical metrics`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`INVALID`}),`: Integrity or loading failure`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`INCOMPLETE`}),`: Evaluation interrupted`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`split-isolation-diagram`,children:`Split Isolation Diagram`}),`\n`,_jsx(Mermaid,{chart:`flowchart LR\n subgraph Splits\n OPT[Optimization Set]\n VAL[Validation Set]\n HID[Hidden Test Set]\n end\n subgraph Consumers\n EVOL[EvolutionEngine]\n REPORT[Validation Report]\n FINAL[Final Assessment]\n end\n OPT --> EVOL\n OPT --> REPORT\n VAL --> REPORT\n HID --> FINAL\n HID -.->|Blocked| EVOL\n VAL -.->|Blocked| EVOL`}),`\n`,_jsx(Heading,{level:`2`,id:`integration-points`,children:`Integration Points`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Component`}),_jsx(_components.th,{children:`Role`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`ModelLoader`}),_jsx(_components.td,{children:`Loads candidate weights`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`InferenceBackend`}),_jsx(_components.td,{children:`Executes inference during benchmarks`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`BenchmarkEngine`}),_jsx(_components.td,{children:`Manages benchmark execution and metric collection`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`FitnessEngine`}),_jsx(_components.td,{children:`Computes fitness from results`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`RegressionEngine`}),_jsx(_components.td,{children:`Detects performance regression`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`ExperimentTracker`}),_jsx(_components.td,{children:`Logs all evaluation events`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`ArtifactStore`}),_jsx(_components.td,{children:`Stores model artifacts and results`})]})]})]}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`Split isolation is enforced at the data layer, not just by convention. The DatasetRegistry tags every sample with its split, and the BenchmarkEngine validates that only Optimization Set samples are loaded during evolution-phase evaluation.`})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"EvaluationEngine and BenchmarkEngine Framework","description":"Specification for the EMEP evaluation framework, covering the full candidate evaluation pipeline and explicit split isolation between Optimization, Validation, and Hidden Test sets.","sidebarTitle":"Evaluation Framework","href":"/evaluation/framework"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Candidate Evaluation Flowchart","slug":"candidate-evaluation-flowchart","depth":2,"children":[]},{"title":"Phase Descriptions","slug":"phase-descriptions","depth":2,"children":[]},{"title":"Split Isolation Diagram","slug":"split-isolation-diagram","depth":2,"children":[]},{"title":"Integration Points","slug":"integration-points","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"ping-47788c6e","siteName":"EMEP","title":"EvaluationEngine and BenchmarkEngine Framework - EMEP","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-06T12:16:45.364Z","originalFileLocation":"evaluation/framework.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Specification for the EMEP evaluation framework, covering the full candidate evaluation pipeline and explicit split isolation between Optimization, Validation, and Hidden Test sets.\">\u003cmeta data-mint-head name=\"application-name\" content=\"EMEP\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/ping-47788c6e/_generated/favicon/apple-touch-icon.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/ping-47788c6e/_generated/favicon/favicon-32x32.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/ping-47788c6e/_generated/favicon/favicon-16x16.png?v=3\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/ping-47788c6e/_generated/favicon/favicon.ico?v=3\">\u003cmeta data-mint-head property=\"og:title\" content=\"EvaluationEngine and BenchmarkEngine Framework - EMEP\">\u003cmeta data-mint-head property=\"og:description\" content=\"Specification for the EMEP evaluation framework, covering the full candidate evaluation pipeline and explicit split isolation between Optimization, Validation, and Hidden Test sets.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"EMEP\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://doc.blueapi.ir/evaluation/framework\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ping-47788c6e.mintlify.app/_mintlify/api/og/v2?division=Evaluation\u0026amp;title=EvaluationEngine+and+BenchmarkEngine+Framework\u0026amp;description=Specification+for+the+EMEP+evaluation+framework%2C+covering+the+full+candidate+evaluation+pipeline+and+explicit+split+isolation+between+Optimization%2C+Validation%2C+\u0026amp;theme=074c708ff2f145909468e7e3\u0026amp;signature=13e663bd238293bce481e1b57fd883d9a68e02380e0d91c45ffc3d55efba464f\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"EvaluationEngine and BenchmarkEngine Framework - EMEP\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Specification for the EMEP evaluation framework, covering the full candidate evaluation pipeline and explicit split isolation between Optimization, Validation, and Hidden Test sets.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ping-47788c6e.mintlify.app/_mintlify/api/og/v2?division=Evaluation\u0026amp;title=EvaluationEngine+and+BenchmarkEngine+Framework\u0026amp;description=Specification+for+the+EMEP+evaluation+framework%2C+covering+the+full+candidate+evaluation+pipeline+and+explicit+split+isolation+between+Optimization%2C+Validation%2C+\u0026amp;theme=074c708ff2f145909468e7e3\u0026amp;signature=13e663bd238293bce481e1b57fd883d9a68e02380e0d91c45ffc3d55efba464f\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/ping-47788c6e/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"EMEP\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7C3AED\">\u003clink data-mint-head rel=\"canonical\" href=\"https://doc.blueapi.ir/evaluation/framework\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/evaluation/framework.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://doc.blueapi.ir/#organization\",\"name\":\"EMEP\",\"url\":\"https://doc.blueapi.ir\"},{\"@type\":\"WebSite\",\"@id\":\"https://doc.blueapi.ir#website\",\"name\":\"EMEP\",\"url\":\"https://doc.blueapi.ir\",\"publisher\":{\"@id\":\"https://doc.blueapi.ir/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://doc.blueapi.ir/evaluation/framework#webpage\",\"url\":\"https://doc.blueapi.ir/evaluation/framework\",\"name\":\"EvaluationEngine and BenchmarkEngine Framework\",\"description\":\"Specification for the EMEP evaluation framework, covering the full candidate evaluation pipeline and explicit split isolation between Optimization, Validation, and Hidden Test sets.\",\"dateModified\":\"2026-09-06T12:16:45.364Z\",\"isPartOf\":{\"@id\":\"https://doc.blueapi.ir#website\"},\"breadcrumb\":{\"@id\":\"https://doc.blueapi.ir/evaluation/framework#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://doc.blueapi.ir/evaluation/framework#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"EMEP\",\"item\":\"https://doc.blueapi.ir\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"EvaluationEngine and BenchmarkEngine Framework\",\"item\":\"https://doc.blueapi.ir/evaluation/framework\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://doc.blueapi.ir/evaluation/framework#article\",\"headline\":\"EvaluationEngine and BenchmarkEngine Framework\",\"name\":\"EvaluationEngine and BenchmarkEngine Framework\",\"description\":\"Specification for the EMEP evaluation framework, covering the full candidate evaluation pipeline and explicit split isolation between Optimization, Validation, and Hidden Test sets.\",\"url\":\"https://doc.blueapi.ir/evaluation/framework\",\"mainEntityOfPage\":{\"@id\":\"https://doc.blueapi.ir/evaluation/framework#webpage\"},\"dateModified\":\"2026-09-06T12:16:45.364Z\",\"publisher\":{\"@id\":\"https://doc.blueapi.ir/#organization\"},\"isPartOf\":{\"@id\":\"https://doc.blueapi.ir#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"EMEP\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"EMEP","nav":{"global":null,"tabs":[{"tab":"Platform","pages":[{"title":"Platform","href":""}]},{"tab":"Architecture","pages":[{"title":"Architecture","href":"/architecture/system-architecture"}]},{"tab":"Model Pipeline","pages":[{"title":"Model Pipeline","href":"/compatibility/model-compatibility"}]},{"tab":"Evolution \u0026 Evaluation","groups":[{"group":"Evolution Engine","pages":[{"title":"EvolutionEngine Specification for EMEP","sidebarTitle":"EvolutionEngine","href":"/evolution/evolution-engine"},{"title":"Genome Encoding for Model Merge Candidates","sidebarTitle":"Genome","href":"/evolution/genome"},{"title":"Population Management in EMEP Evolution","sidebarTitle":"Population","href":"/evolution/population"},{"title":"Mutation Operators for Merge Genome Evolution","sidebarTitle":"Mutation","href":"/evolution/mutation"},{"title":"Crossover Operators for Merge Genome Combination","sidebarTitle":"Crossover","href":"/evolution/crossover"},{"title":"Selection Strategies for Evolutionary Search","sidebarTitle":"Selection","href":"/evolution/selection"},{"title":"Fitness Engine and Candidate Scoring","sidebarTitle":"Fitness","href":"/evolution/fitness"},{"title":"Multi-Objective Optimization with NSGA-II","description":"Specification for multi-objective optimization in EMEP using NSGA-II, covering non-dominated sorting, crowding distance, and Pareto front management.","sidebarTitle":"Multi-Objective","href":"/evolution/multi-objective-optimization"}]},{"group":"Evaluation","pages":[{"title":"EvaluationEngine and BenchmarkEngine Framework","sidebarTitle":"Evaluation Framework","href":"/evaluation/framework"},{"title":"Benchmark Record Schema and Configuration","description":"Specification for benchmark records in EMEP, covering schema fields, versioning, seeds, prompt templates, decoding parameters, and metric definitions.","sidebarTitle":"Benchmark Spec","href":"/evaluation/benchmark-specification"},{"title":"Benchmark Catalog by Category and Purpose","sidebarTitle":"Benchmark Catalog","href":"/evaluation/benchmark-catalog"},{"title":"Persian Language Evaluation Concerns and Benchmarks","sidebarTitle":"Persian Evaluation","href":"/evaluation/persian-evaluation"},{"title":"Safety Evaluation and Harmful Content Detection","sidebarTitle":"Safety Evaluation","href":"/evaluation/safety-evaluation"},{"title":"Regression Detection and Statistical Protocol","sidebarTitle":"Regression Evaluation","href":"/evaluation/regression-evaluation"},{"title":"Benchmark Integrity and Data Contamination Prevention","sidebarTitle":"Benchmark Integrity","href":"/evaluation/benchmark-integrity"}]},{"group":"Tracking \u0026 Reproducibility","pages":[{"title":"ExperimentTracker Event Stream and Responsibilities","sidebarTitle":"Experiment Tracking","href":"/tracking/experiment-tracking"},{"title":"Complete Experiment Record Schema","sidebarTitle":"Experiment Schema","href":"/tracking/experiment-schema"},{"title":"ModelRegistry API and State Management","sidebarTitle":"Model Registry","href":"/tracking/model-registry"},{"title":"DatasetRegistry for Versioned Data Management","sidebarTitle":"Dataset Registry","href":"/tracking/dataset-registry"},{"title":"ArtifactStore for Content-Addressed Model Storage","sidebarTitle":"Artifact Registry","href":"/tracking/artifact-registry"},{"title":"Model Lineage Graph and Ancestry Tracking","sidebarTitle":"Model Lineage","href":"/tracking/model-lineage"},{"title":"Reproducibility Requirements for EMEP Experiments","sidebarTitle":"Reproducibility","href":"/tracking/reproducibility"},{"title":"Step-by-Step Experiment Reproduction Protocol","sidebarTitle":"Reproducibility Protocol","href":"/tracking/reproducibility-protocol"},{"title":"Model Provenance Record and Verification Chain","sidebarTitle":"Model Provenance","href":"/tracking/model-provenance"}]}]},{"tab":"Deployment \u0026 Ops","pages":[{"title":"Deployment \u0026 Ops","href":"/deployment/quantization"}]},{"tab":"Interfaces \u0026 Governance","pages":[{"title":"Interfaces \u0026 Governance","href":"/interfaces/api-specification"}]}]},"basePath":"","title":"EvaluationEngine and BenchmarkEngine Framework - EMEP","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":[],"chunks":[]}