@disclosureos/schema 1.0.0 → 2.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +87 -0
- package/README.md +93 -1
- package/dist/experimental/v2/index.d.ts +1602 -0
- package/dist/experimental/v2/index.js +4532 -0
- package/dist/experimental/v2/index.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +45 -7
- package/schema/enriched-observation.schema.json +31 -2
- package/schema/experimental/acquisition-bindings-0.1.0.schema.json +127 -0
- package/schema/experimental/dataset-release-0.1.0.schema.json +279 -0
- package/schema/experimental/historical-testimony-selection-0.1.0.schema.json +102 -0
- package/schema/experimental/instrument-research-review-0.1.0.schema.json +627 -0
- package/schema/experimental/measurement-bindings-0.1.0.schema.json +199 -0
- package/schema/experimental/migration-compatibility-0.1.0.schema.json +189 -0
- package/schema/experimental/migration-legacy-scores-0.1.0.schema.json +116 -0
- package/schema/experimental/migration-resolution-0.1.0.schema.json +120 -0
- package/schema/experimental/migration-review-0.1.0.schema.json +223 -0
- package/schema/experimental/physical-sample-selection-0.1.0.schema.json +278 -0
- package/schema/experimental/profile-evaluation-0.1.0.schema.json +231 -0
- package/schema/experimental/profile-preparation-0.1.0.schema.json +177 -0
- package/schema/experimental/released-document-selection-0.1.0.schema.json +102 -0
- package/schema/experimental/reproduction-packet-0.1.0.schema.json +252 -0
- package/schema/experimental/research-evaluation-0.1.0.schema.json +174 -0
- package/schema/experimental/source-intake-0.1.0.schema.json +497 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/experimental/v2/assessment-documentation.ts","../../../src/experimental/v2/acquisition-bindings-schema.ts","../../../src/experimental/v2/acquisition-bindings.ts","../../../src/experimental/v2/measurement-bindings.ts","../../../src/experimental/v2/research-prerequisites.ts","../../../src/experimental/v2/reproduction-packet.ts","../../../src/experimental/v2/dataset-release.ts","../../../src/experimental/v2/source-intake.ts","../../../src/experimental/v2/documentation-completion.ts","../../../src/experimental/v2/research-completion.ts","../../../src/experimental/v2/evaluation-provenance.ts","../../../src/experimental/v2/released-documents.ts","../../../src/experimental/v2/historical-testimony.ts","../../../src/experimental/v2/physical-samples.ts","../../../src/experimental/v2/profile-evaluation.ts","../../../src/experimental/v2/profile-preparation.ts","../../../src/experimental/v2/migration-review.ts","../../../src/experimental/v2/migration-resolution.ts","../../../src/experimental/v2/migration-legacy-scores.ts","../../../src/experimental/v2/migration-compatibility.ts"],"names":["assets","ref","hash","digest","checkMethod","method","pointer","path","parseExperimentalClaimHistory","issue","artifact","id","z","parseAcquisitionContext","m","seen","acquisition","pin","compareUtcInstants","text","unknown","review","action","decode","i","dependency","serialize","input","common"],"mappings":"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","file":"index.js","sourcesContent":["import { parseExperimentalClaimHistory } from '@disclosureos/records/experimental/v2';\nimport type { ClaimHistoryIssueCode, ExperimentalClaimHistory, HistoricalClaim } from '@disclosureos/records/experimental/v2';\n\nexport const ASSESSMENT_DOCUMENTATION_PROFILE = Object.freeze({\n id: 'urn:disclosureos:experimental:profile:assessment-documentation', version: '0.1.0', scope: 'documentary_only',\n} as const);\ntype Status = 'passed' | 'failed' | 'not_checked';\nexport type DocumentationIssueCode = ClaimHistoryIssueCode | 'PROFILE.NO_ASSESSMENTS' | 'PROFILE.UNASSESSED'\n | 'PROFILE.INPUTS_REQUIRED' | 'PROFILE.METHOD_CONTEXT' | 'PROFILE.LOCATOR_REQUIRED' | 'PROFILE.DIGEST_REQUIRED'\n | 'PROFILE.MEASUREMENT_REQUIRED' | 'PROFILE.MEASUREMENT_UNCERTAINTY' | 'PROFILE.INSTRUMENT_PRODUCT_REQUIRED'\n | 'PROFILE.EVENT_TIME' | 'PROFILE.FRAME_CONTEXT' | 'EXTERNAL.ASSET_UNAVAILABLE' | 'EXTERNAL.DIGEST_MISMATCH'\n | 'EXTERNAL.HASH_UNAVAILABLE' | 'EXTERNAL.EMPTY_ASSET';\nexport interface DocumentationIssue {\n code: DocumentationIssueCode; stage: 'structural' | 'semantic' | 'profile' | 'external';\n severity: 'error' | 'warning'; pointer: string; message: string;\n}\nexport interface AssetCheck { ref: string; status: Status; expectedSha256?: string; actualSha256?: string }\nexport interface AssessmentDocumentation {\n claimRef: string; status: Status; inputRefs: string[]; sourceRefs: string[]; productRefs: string[];\n measurementRefs: string[]; assets: AssetCheck[]; issues: DocumentationIssue[];\n}\nexport interface DocumentationOptions {\n /** Exact complete bytes keyed by source:/product: reference. No URLs are fetched. */\n assets?: ReadonlyMap<string, Uint8Array>;\n}\nexport interface DocumentationResult {\n success: boolean;\n profile: typeof ASSESSMENT_DOCUMENTATION_PROFILE;\n contract: ReturnType<typeof parseExperimentalClaimHistory>['contract'];\n checks: { structural: Status; semantic: Status; profile: Status; external: Status };\n scientific: 'not_checked'; locatorContents: 'not_checked'; methodExecution: 'not_checked';\n assessments: AssessmentDocumentation[]; issues: DocumentationIssue[];\n}\n\ntype Observation = ExperimentalClaimHistory['observation'];\nfunction inventories(observation: Observation, claims: HistoricalClaim[]) {\n return {\n sources: new Map(observation.sources.map((v, i) => [`source:${v.id}`, { value: v, pointer: `/observation/sources/${i}` }])),\n products: new Map(observation.products.map((v, i) => [`product:${v.id}`, { value: v, pointer: `/observation/products/${i}` }])),\n methods: new Map(observation.methods.map((v, i) => [`method:${v.id}`, { value: v, pointer: `/observation/methods/${i}` }])),\n frames: new Map(observation.frames.map((v, i) => [`frame:${v.id}`, { value: v, pointer: `/observation/frames/${i}` }])),\n measurements: new Map(observation.measurements.map((v, i) => [`measurement:${v.id}`, { value: v, pointer: `/observation/measurements/${i}` }])),\n assertions: new Map(observation.assertions.map((v, i) => [`assertion:${v.id}`, { value: v, pointer: `/observation/assertions/${i}` }])),\n processes: new Map(observation.processing.map((v, i) => [`process:${v.id}`, { value: v, pointer: `/observation/processing/${i}` }])),\n claims: new Map(claims.map((v, i) => [`claim:${v.id}`, { value: v, pointer: `/claims/${i}` }])),\n };\n}\n\n/** Documentary preflight plus local byte integrity, not scientific or locator-content verification. */\nexport async function evaluateAssessmentDocumentation(input: unknown, options: DocumentationOptions = {}): Promise<DocumentationResult> {\n const parsed = parseExperimentalClaimHistory(input);\n const result: DocumentationResult = {\n success: false, profile: ASSESSMENT_DOCUMENTATION_PROFILE, contract: parsed.contract,\n checks: { ...parsed.checks, profile: 'not_checked' }, scientific: 'not_checked', locatorContents: 'not_checked', methodExecution: 'not_checked',\n assessments: [], issues: [...parsed.issues],\n };\n if (!parsed.success) return result;\n const observation = parsed.data.observation;\n const inv = inventories(observation, parsed.data.claims);\n // Snapshot caller-owned bytes before the first asynchronous operation.\n const assets = new Map([...options.assets ?? []].map(([ref, bytes]) => [ref, Uint8Array.from(bytes)]));\n const hashes = new Map<string, Promise<string | undefined>>();\n function hash(ref: string): Promise<string | undefined> {\n const cached = hashes.get(ref);\n if (cached) return cached;\n const bytes = assets.get(ref);\n const pending = (async () => {\n if (!bytes) return undefined;\n try {\n const digest = await globalThis.crypto.subtle.digest('SHA-256', bytes);\n return [...new Uint8Array(digest)].map(byte => byte.toString(16).padStart(2, '0')).join('');\n } catch { return undefined; }\n })();\n hashes.set(ref, pending);\n return pending;\n }\n // Primary support excludes uncertainty annotations and revision links: neither establishes measurement lineage.\n function dependencies(ref: string): string[] {\n const claim = inv.claims.get(ref)?.value;\n if (claim) return claim.kind === 'source_assertion' ? [claim.provenance.sourceRef] : claim.inputRefs;\n const measurement = inv.measurements.get(ref)?.value;\n if (measurement) return measurement.sourceRefs;\n const assertion = inv.assertions.get(ref)?.value;\n if (assertion) return [assertion.provenance.sourceRef];\n const product = inv.products.get(ref)?.value;\n if (product) return product.kind === 'raw' ? product.sourceRefs : [product.generatedBy];\n return inv.processes.get(ref)?.value.inputRefs ?? [];\n }\n function closure(roots: readonly string[]): Set<string> {\n const seen = new Set<string>();\n const queue = [...roots];\n for (let i = 0; i < queue.length; i++) {\n const ref = queue[i]!;\n if (seen.has(ref)) continue;\n seen.add(ref);\n queue.push(...dependencies(ref));\n }\n return seen;\n }\n for (const claimRef of parsed.currentClaimRefs) {\n const entry = inv.claims.get(claimRef)!;\n const claim = entry.value;\n if (claim.kind !== 'assessment') continue;\n const report: AssessmentDocumentation = { claimRef, status: 'not_checked', inputRefs: [...claim.inputRefs], sourceRefs: [], productRefs: [], measurementRefs: [], assets: [], issues: [] };\n const issue = (code: DocumentationIssueCode, pointer: string, message: string, stage: 'profile' | 'external' = 'profile', severity: 'error' | 'warning' = 'error') => report.issues.push({code, pointer, message, stage, severity});\n if (claim.status === 'unassessed') {\n issue('PROFILE.UNASSESSED', `${entry.pointer}/status`, 'No evaluator assessment has been made.', 'profile', 'warning');\n result.assessments.push(report);\n continue;\n }\n const support = closure(claim.inputRefs);\n report.sourceRefs = [...support].filter(ref => inv.sources.has(ref));\n report.productRefs = [...support].filter(ref => inv.products.has(ref));\n report.measurementRefs = [...support].filter(ref => inv.measurements.has(ref));\n const requiredAssets = new Set<string>(report.productRefs);\n const located = new Set<string>();\n function checkMethod(ref: string): void {\n const method = inv.methods.get(ref);\n if (method && !method.value.description) issue('PROFILE.METHOD_CONTEXT', `${method.pointer}/description`, 'The referenced method needs a declared description; correctness is not verified.');\n }\n checkMethod(claim.methodRef);\n for (const ref of support) {\n const statement = inv.claims.get(ref);\n const assertion = inv.assertions.get(ref);\n const provenance = statement?.value.kind === 'source_assertion' ? statement.value.provenance : assertion?.value.provenance;\n const path = statement?.pointer ?? assertion?.pointer;\n if (provenance && path) {\n requiredAssets.add(provenance.sourceRef);\n if (!provenance.locator) issue('PROFILE.LOCATOR_REQUIRED', `${path}/provenance/locator`, 'A supporting statement or value assertion requires a source passage locator.');\n else located.add(provenance.sourceRef);\n }\n const process = inv.processes.get(ref)?.value;\n if (process) checkMethod(process.methodRef);\n const measurement = inv.measurements.get(ref)?.value;\n if (measurement?.selection) checkMethod(measurement.selection.methodRef);\n if (statement?.value.kind === 'assessment' && statement.value.status === 'assessed') checkMethod(statement.value.methodRef);\n }\n // A non-instrument source is documentary content, not merely an acquisition descriptor.\n for (const ref of report.sourceRefs) {\n const source = inv.sources.get(ref)!;\n if (source.value.kind === 'instrument_data') continue;\n requiredAssets.add(ref);\n if (!located.has(ref)) issue('PROFILE.LOCATOR_REQUIRED', source.pointer, 'A directly cited documentary source needs a passage locator through an assertion.');\n }\n if (!claim.inputRefs.length || !requiredAssets.size) issue('PROFILE.INPUTS_REQUIRED', `${entry.pointer}/inputRefs`, 'Assessment requires traceable source content or data products; descriptors alone are insufficient.');\n if (claim.outcome === 'confirmed') {\n const measurementSubject = claim.subject.kind === 'measurement' ? `measurement:${claim.subject.measurementId}` : undefined;\n const relevant = report.measurementRefs.filter(ref => !measurementSubject || ref === measurementSubject);\n if (!relevant.length) issue('PROFILE.MEASUREMENT_REQUIRED', `${entry.pointer}/inputRefs`, 'A confirmed declaration requires a measurement input matching its subject.');\n if (observation.eventTime.state !== 'known' && observation.eventTime.state !== 'approximate') issue('PROFILE.EVENT_TIME', '/observation/eventTime', 'Instrument documentation requires a supplied event time; an archival unknown remains valid outside this profile.');\n for (const ref of relevant) {\n const measurement = inv.measurements.get(ref)!;\n if (measurement.value.value.uncertainty.kind === 'unknown') issue('PROFILE.MEASUREMENT_UNCERTAINTY', `${measurement.pointer}/value/uncertainty`, 'Measurement uncertainty has not been characterized in the record.');\n const lineage = closure([ref]);\n if (![...lineage].some(item => {\n const raw = inv.products.get(item)?.value;\n return raw?.kind === 'raw' && raw.sourceRefs.some(source => inv.sources.get(source)?.value.kind === 'instrument_data');\n })) issue('PROFILE.INSTRUMENT_PRODUCT_REQUIRED', `${measurement.pointer}/sourceRefs`, 'Measurement support must reach a raw product declaring an instrument-data source.');\n const hasProductLocator = [...lineage].some(item => {\n const assertion = inv.assertions.get(item)?.value;\n return assertion?.provenance.sourceRef.startsWith('product:') && assertion.provenance.locator !== undefined;\n });\n if (!hasProductLocator) issue('PROFILE.LOCATOR_REQUIRED', `${measurement.pointer}/sourceRefs`, 'Measurement needs a value assertion locating its value within a supporting product.');\n if (measurement.value.frameRef) {\n const frame = inv.frames.get(measurement.value.frameRef)!;\n if (frame.value.definition.state === 'unknown') issue('PROFILE.FRAME_CONTEXT', `${frame.pointer}/definition`, 'The declared measurement frame is unknown.');\n }\n // Quantified uncertainty is supplementary provenance, never a substitute for primary product lineage.\n if (measurement.value.value.uncertainty.kind !== 'unknown') for (const source of measurement.value.value.uncertainty.sourceRefs) requiredAssets.add(source);\n }\n }\n for (const ref of requiredAssets) {\n const asset = inv.sources.get(ref) ?? inv.products.get(ref);\n if (!asset) continue; // Local resolution was already checked by the records parser.\n const digest = asset.value.digest?.value;\n const check: AssetCheck = {ref, status:'not_checked'};\n if (digest) check.expectedSha256 = digest;\n report.assets.push(check);\n if (!digest) { issue('PROFILE.DIGEST_REQUIRED', `${asset.pointer}/digest`, 'Supporting content requires a pinned SHA-256 digest.'); continue; }\n const bytes = assets.get(ref);\n if (!bytes) { issue('EXTERNAL.ASSET_UNAVAILABLE', asset.pointer, `No local bytes supplied for ${ref}; a URI or digest alone is not verification.`, 'external', 'warning'); continue; }\n if (!bytes.length) { check.status = 'failed'; issue('EXTERNAL.EMPTY_ASSET', asset.pointer, 'Empty content cannot support this assessment.', 'external'); continue; }\n const actual = await hash(ref);\n if (!actual) { issue('EXTERNAL.HASH_UNAVAILABLE', asset.pointer, 'SHA-256 verification is unavailable in this runtime.', 'external', 'warning'); continue; }\n check.actualSha256 = actual;\n check.status = actual === digest ? 'passed' : 'failed';\n if (check.status === 'failed') issue('EXTERNAL.DIGEST_MISMATCH', `${asset.pointer}/digest`, 'Supplied bytes do not match the pinned SHA-256 digest.', 'external');\n }\n report.status = report.issues.some(item => item.severity === 'error') ? 'failed'\n : report.assets.some(asset => asset.status === 'not_checked') ? 'not_checked' : 'passed';\n result.assessments.push(report);\n }\n result.issues.push(...result.assessments.flatMap(report => report.issues));\n if (!result.assessments.length) result.issues.push({code:'PROFILE.NO_ASSESSMENTS',stage:'profile',severity:'warning',pointer:'/claims',message:'There are no current evaluator assessments to check.'});\n result.checks.profile = result.assessments.some(report => report.status === 'failed') ? 'failed'\n : !result.assessments.length || result.assessments.some(report => report.status === 'not_checked') ? 'not_checked' : 'passed';\n // Any proven integrity failure fails the external stage; other external meaning remains unchecked.\n result.checks.external = result.assessments.some(report => report.assets.some(asset => asset.status === 'failed')) ? 'failed' : 'not_checked';\n result.success = result.checks.profile === 'passed';\n return result;\n}\n","import { z } from 'zod';\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst ref = (kind: string) => z.string().regex(new RegExp(`^${kind}:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\\\s\\\\S])`));\nexport const ACQUISITION_BINDINGS_SCHEMA_ID = 'urn:disclosureos:experimental:acquisition-bindings:0.1.0';\nexport const AcquisitionBindingsSchema = z.strictObject({\n kind: z.literal('acquisition_bindings'), schemaVersion: z.literal('0.1.0'), id,\n historyId: id, observationId: id, contextId: id,\n sources: z.array(z.strictObject({ sourceRef: ref('source'), instrumentRef: ref('instrument') })),\n products: z.array(z.strictObject({ observationProductRef: ref('product'), contextProductRef: ref('product') })),\n extensions: z.record(z.string().regex(/^[a-z][a-z0-9_-]*(?:\\.[a-z0-9_-]+)+(?![\\s\\S])/), z.json()).optional(),\n});\nexport type AcquisitionBindings = z.infer<typeof AcquisitionBindingsSchema>;\nexport function acquisitionBindingsJsonSchema(): Record<string, unknown> {\n return { ...z.toJSONSchema(AcquisitionBindingsSchema, { target: 'draft-2020-12' }), $id: ACQUISITION_BINDINGS_SCHEMA_ID };\n}\n","import { parseExperimentalClaimHistory } from '@disclosureos/records/experimental/v2';\nimport type { ClaimHistoryIssueCode } from '@disclosureos/records/experimental/v2';\nimport { parseAcquisitionContext } from '@disclosureos/instruments/experimental/v2';\nimport type { AcquisitionContextIssueCode, ContextArtifact } from '@disclosureos/instruments/experimental/v2';\nimport { AcquisitionBindingsSchema, ACQUISITION_BINDINGS_SCHEMA_ID } from './acquisition-bindings-schema';\n\nexport const ACQUISITION_BINDINGS_PROFILE = Object.freeze({\n id: 'urn:disclosureos:experimental:profile:acquisition-bindings', version: '0.1.0', scope: 'product_identity_and_declared_context',\n} as const);\ntype Status = 'passed' | 'failed' | 'not_checked';\nexport type BindingIssueCode = ClaimHistoryIssueCode | AcquisitionContextIssueCode | 'BINDING.DOCUMENT_ID'\n | 'BINDING.SOURCE_KIND' | 'BINDING.RAW_REQUIRED' | 'BINDING.DIGEST_MISMATCH' | 'BINDING.FORMAT_MISMATCH'\n | 'BINDING.SOURCE_IDENTITY' | 'BINDING.PRODUCT_REQUIRED' | 'BINDING.SOURCE_REQUIRED' | 'BINDING.DIGEST_REQUIRED'\n | 'BINDING.CONTEXT_INCOMPLETE' | 'BINDING.NO_INSTRUMENT_PRODUCTS' | 'EXTERNAL.ASSET_UNAVAILABLE'\n | 'EXTERNAL.DIGEST_MISMATCH' | 'EXTERNAL.SIZE_MISMATCH' | 'EXTERNAL.HASH_UNAVAILABLE' | 'EXTERNAL.EMPTY_ASSET';\nexport interface BindingIssue {\n code: BindingIssueCode; stage: 'structural' | 'semantic' | 'profile' | 'external'; severity: 'error' | 'warning'; pointer: string; message: string;\n}\nexport interface BindingAssetCheck {\n ref: string; status: Status; pointer: string; expectedSha256: string; expectedByteLength: number;\n actualSha256?: string; actualByteLength?: number;\n}\nexport interface ProductBindingCheck {\n observationProductRef: string; contextProductRef: string; acquisitionRef: string; instrumentRef: string;\n assetRefs: string[]; status: Status; issues: BindingIssue[];\n}\nexport interface AcquisitionBindingOptions {\n /** Context-scoped keys: product:ID, manifest:ID, calibration:ID/report, calibration:ID/review. */\n assets?: ReadonlyMap<string, Uint8Array>;\n}\nexport interface AcquisitionBindingResult {\n success: boolean; profile: typeof ACQUISITION_BINDINGS_PROFILE;\n contracts: { history: ReturnType<typeof parseExperimentalClaimHistory>['contract']; context: ReturnType<typeof parseAcquisitionContext>['contract']; bindings: {schemaId: typeof ACQUISITION_BINDINGS_SCHEMA_ID; rulesetVersion: '0.1.0'} };\n checks: { structural: Status; semantic: Status; profile: Status; external: Status };\n scientific: 'not_checked'; identityAuthenticity: 'not_checked'; artifactContents: 'not_checked';\n bindings: ProductBindingCheck[]; assets: BindingAssetCheck[]; issues: BindingIssue[];\n}\nconst pointer = (path: readonly PropertyKey[]) => path.map(p => `/${String(p).replace(/~/g,'~0').replace(/\\//g,'~1')}`).join('');\n\n/** Explicit cross-document links and local byte identity. Does not authenticate an instrument or calibrate a measurement. */\nexport async function evaluateAcquisitionBindings(historyInput: unknown, contextInput: unknown, bindingsInput: unknown, options: AcquisitionBindingOptions = {}): Promise<AcquisitionBindingResult> {\n const history = parseExperimentalClaimHistory(historyInput);\n const context = parseAcquisitionContext(contextInput);\n const bindingParse = AcquisitionBindingsSchema.safeParse(bindingsInput);\n const result: AcquisitionBindingResult = {\n success: false, profile: ACQUISITION_BINDINGS_PROFILE,\n contracts: {history: history.contract, context: context.contract, bindings: {schemaId: ACQUISITION_BINDINGS_SCHEMA_ID, rulesetVersion:'0.1.0'}},\n checks: {structural:'passed',semantic:'not_checked',profile:'not_checked',external:'not_checked'},\n scientific:'not_checked', identityAuthenticity:'not_checked', artifactContents:'not_checked', bindings:[], assets:[],\n issues:[...history.issues.map(issue=>({...issue,pointer:`/history${issue.pointer}`})),...context.issues.map(issue=>({...issue,pointer:`/context${issue.pointer}`}))],\n };\n if (!bindingParse.success) result.issues.push(...bindingParse.error.issues.map(issue=>({code:'STRUCT.VALUE' as const,stage:'structural' as const,severity:'error' as const,pointer:`/bindings${pointer(issue.path)}`,message:issue.message})));\n if (history.checks.structural==='failed' || context.checks.structural==='failed' || !bindingParse.success) {\n result.checks.structural='failed';\n result.issues=result.issues.filter(issue=>issue.stage==='structural');\n return result;\n }\n if (!history.success || !context.success) {result.checks.semantic='failed';return result;}\n const bindingData=bindingParse.data;\n const observation=history.data.observation;\n const issue=(code:BindingIssueCode, path:string, message:string, stage:'semantic'|'profile'|'external'='semantic', severity:'error'|'warning'='error')=>result.issues.push({code,stage,severity,pointer:path,message});\n for (const [field,expected] of [['historyId',history.data.id],['observationId',observation.id],['contextId',context.data.id]] as const) {\n if(bindingData[field]!==expected) issue('BINDING.DOCUMENT_ID',`/bindings/${field}`,'Binding document identifies a different input document.');\n }\n const sources=new Map(observation.sources.map(v=>[`source:${v.id}`,v]));\n const products=new Map(observation.products.map((v,i)=>[`product:${v.id}`,{value:v,pointer:`/history/observation/products/${i}`}]));\n const instruments=new Map(context.data.instruments.map(v=>[`instrument:${v.id}`,v]));\n const contextProducts=new Map(context.data.products.map((v,i)=>[`product:${v.id}`,{value:v,pointer:`/context/products/${i}`} ]));\n const acquisitions=new Map(context.data.acquisitions.map(v=>[`acquisition:${v.id}`,v]));\n const resolutions=new Map(context.acquisitions.map(v=>[v.acquisitionRef,v]));\n const manifests=new Map(context.data.manifests.map((v,i)=>[`manifest:${v.id}`,{value:v,pointer:`/context/manifests/${i}`} ]));\n const calibrations=new Map(context.data.calibrations.map((v,i)=>[`calibration:${v.id}`,{value:v,pointer:`/context/calibrations/${i}`} ]));\n const sourceBindings=new Map<string,string>();\n for(const [i,binding] of bindingData.sources.entries()) {\n const path=`/bindings/sources/${i}`;\n if(sourceBindings.has(binding.sourceRef)) issue('REF.UNIQUE_ID',`${path}/sourceRef`,'Observation source has more than one instrument binding.');\n sourceBindings.set(binding.sourceRef,binding.instrumentRef);\n const source=sources.get(binding.sourceRef);\n if(!source) issue('REF.LOCAL_RESOLUTION',`${path}/sourceRef`,'Observation source is not declared.');\n else if(source.kind!=='instrument_data') issue('BINDING.SOURCE_KIND',`${path}/sourceRef`,'Only an instrument-data source can be bound as a producing instrument.');\n if(!instruments.has(binding.instrumentRef)) issue('REF.LOCAL_RESOLUTION',`${path}/instrumentRef`,'Context instrument is not declared.');\n }\n const observationBindings=new Set<string>();\n const contextBindings=new Set<string>();\n for(const [i,binding] of bindingData.products.entries()) {\n const path=`/bindings/products/${i}`;\n if(observationBindings.has(binding.observationProductRef)) issue('REF.UNIQUE_ID',`${path}/observationProductRef`,'Observation product is bound more than once.');\n if(contextBindings.has(binding.contextProductRef)) issue('REF.UNIQUE_ID',`${path}/contextProductRef`,'Context product is bound more than once; this profile requires one-to-one product mappings.');\n observationBindings.add(binding.observationProductRef);contextBindings.add(binding.contextProductRef);\n const product=products.get(binding.observationProductRef)?.value;\n const target=contextProducts.get(binding.contextProductRef)?.value;\n if(!product) issue('REF.LOCAL_RESOLUTION',`${path}/observationProductRef`,'Observation product is not declared.');\n if(!target) issue('REF.LOCAL_RESOLUTION',`${path}/contextProductRef`,'Context product is not declared.');\n if(!product || !target) continue;\n if(product.kind!=='raw') {issue('BINDING.RAW_REQUIRED',`${path}/observationProductRef`,'Derived products cannot be relabeled as raw acquisition products.');continue;}\n if(product.digest && product.digest.value!==target.artifact.digest.value) issue('BINDING.DIGEST_MISMATCH',path,'The linked product declarations pin different SHA-256 digests.');\n if(product.format!==target.artifact.mediaType) issue('BINDING.FORMAT_MISMATCH',path,'Declared product format and context media type must match exactly; no format conversion is inferred.');\n const producingSources=product.sourceRefs.filter(ref=>sources.get(ref)?.kind==='instrument_data');\n if(!producingSources.length) issue('BINDING.SOURCE_KIND',`${path}/observationProductRef`,'Raw product does not declare an instrument-data source.');\n const acquisition=acquisitions.get(target.acquisitionRef)!;\n for(const ref of producingSources) {\n const instrument=sourceBindings.get(ref);\n if(instrument && instrument!==acquisition.instrumentRef) issue('BINDING.SOURCE_IDENTITY',path,'A producing source is mapped to a different instrument than the product acquisition.');\n }\n }\n if(result.issues.some(item=>item.stage==='semantic' && item.severity==='error')) {result.checks.semantic='failed';return result;}\n result.checks.semantic='passed';\n const required=[...products].filter(([,entry])=>entry.value.kind==='raw' && entry.value.sourceRefs.some(ref=>sources.get(ref)?.kind==='instrument_data'));\n for(const [ref,entry] of required) if(!observationBindings.has(ref)) issue('BINDING.PRODUCT_REQUIRED',entry.pointer,'Instrument raw product needs an explicit acquisition-product binding.','profile');\n if(!required.length) issue('BINDING.NO_INSTRUMENT_PRODUCTS','/history/observation/products','No instrument raw products are present to evaluate.','profile','warning');\n const artifacts=new Map<string,{artifact:ContextArtifact;pointer:string}>();\n const register=(ref:string,artifact:ContextArtifact,path:string,report:ProductBindingCheck)=>{\n artifacts.set(ref,{artifact,pointer:path});\n if(!report.assetRefs.includes(ref)) report.assetRefs.push(ref);\n };\n for(const [i,binding] of bindingData.products.entries()) {\n const product=products.get(binding.observationProductRef)!;\n const target=contextProducts.get(binding.contextProductRef)!;\n const acquisition=acquisitions.get(target.value.acquisitionRef)!;\n const resolution=resolutions.get(target.value.acquisitionRef)!;\n const report:ProductBindingCheck={...binding,acquisitionRef:target.value.acquisitionRef,instrumentRef:acquisition.instrumentRef,assetRefs:[],status:'not_checked',issues:[]};\n const fail=(code:BindingIssueCode,path:string,message:string)=>report.issues.push({code,stage:'profile',severity:'error',pointer:path,message});\n if(!product.value.digest) fail('BINDING.DIGEST_REQUIRED',`${product.pointer}/digest`,'Observation product must pin the same bytes as its context product.');\n if(product.value.kind==='raw') for(const ref of product.value.sourceRefs) if(sources.get(ref)?.kind==='instrument_data' && !sourceBindings.has(ref)) {\n fail('BINDING.SOURCE_REQUIRED',`/bindings/products/${i}`,'Each declared producing instrument source needs an explicit instrument binding.');\n }\n if(resolution.status==='incomplete') fail('BINDING.CONTEXT_INCOMPLETE',`/bindings/products/${i}/contextProductRef`,'Selected acquisition has unknown or unresolved context; see the context diagnostics.');\n register(binding.contextProductRef,target.value.artifact,`${target.pointer}/artifact`,report);\n if(acquisition.manifest.state==='pinned') {\n const manifest=manifests.get(acquisition.manifest.ref)!;\n register(acquisition.manifest.ref,manifest.value.artifact,`${manifest.pointer}/artifact`,report);\n }\n for(const ref of resolution.calibrationRefs) {\n const calibration=calibrations.get(ref)!;\n if(calibration.value.report.state==='known') register(`${ref}/report`,calibration.value.report.artifact,`${calibration.pointer}/report/artifact`,report);\n if(calibration.value.review.state==='reviewed') register(`${ref}/review`,calibration.value.review.report,`${calibration.pointer}/review/report`,report);\n }\n result.bindings.push(report);\n }\n // Snapshot before the first await. Both documents and the binding schema have already cloned their inputs.\n const assets=new Map([...options.assets??[]].map(([ref,bytes])=>[ref,Uint8Array.from(bytes)]));\n for(const [ref,entry] of artifacts) {\n const check:BindingAssetCheck={ref,status:'not_checked',pointer:entry.pointer,expectedSha256:entry.artifact.digest.value,expectedByteLength:entry.artifact.byteLength};\n result.assets.push(check);\n const bytes=assets.get(ref);\n if(!bytes) {issue('EXTERNAL.ASSET_UNAVAILABLE',entry.pointer,`No complete local bytes supplied for ${ref}.`,'external','warning');continue;}\n check.actualByteLength=bytes.byteLength;\n if(!bytes.byteLength || bytes.byteLength!==entry.artifact.byteLength) {\n check.status='failed';issue(!bytes.byteLength?'EXTERNAL.EMPTY_ASSET':'EXTERNAL.SIZE_MISMATCH',entry.pointer,'Supplied nonempty bytes must match the declared byte length.','external');continue;\n }\n try {\n const digest=await globalThis.crypto.subtle.digest('SHA-256',bytes);\n check.actualSha256=[...new Uint8Array(digest)].map(value=>value.toString(16).padStart(2,'0')).join('');\n check.status=check.actualSha256===entry.artifact.digest.value?'passed':'failed';\n if(check.status==='failed') issue('EXTERNAL.DIGEST_MISMATCH',entry.pointer,'Supplied bytes do not match the pinned SHA-256 digest.','external');\n } catch {issue('EXTERNAL.HASH_UNAVAILABLE',entry.pointer,'SHA-256 is unavailable; byte identity is not checked.','external','warning');}\n }\n const assetChecks=new Map(result.assets.map(check=>[check.ref,check]));\n for(const report of result.bindings) {\n const statuses=report.assetRefs.map(ref=>assetChecks.get(ref)!.status);\n report.status=report.issues.length || statuses.includes('failed')?'failed':statuses.includes('not_checked')?'not_checked':'passed';\n result.issues.push(...report.issues);\n }\n result.checks.profile=result.issues.some(item=>item.severity==='error')?'failed'\n : !required.length || result.bindings.some(report=>report.status==='not_checked')?'not_checked':'passed';\n result.checks.external=result.assets.some(check=>check.status==='failed')?'failed':'not_checked';\n result.success=result.checks.profile==='passed';\n return result;\n}\n","import { z } from \"zod\";\nimport {\n compareUtcInstants,\n parseExperimentalClaimHistory,\n} from \"@disclosureos/records/experimental/v2\";\nimport { parseAcquisitionContext } from \"@disclosureos/instruments/experimental/v2\";\nimport { AcquisitionBindingsSchema } from \"./acquisition-bindings-schema\";\nimport { evaluateAcquisitionBindings } from \"./acquisition-bindings\";\nimport type {\n AcquisitionBindingOptions,\n AcquisitionBindingResult,\n} from \"./acquisition-bindings\";\n\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst ref = (kind: string) =>\n z\n .string()\n .regex(new RegExp(`^${kind}:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\\\s\\\\S])`));\n// Calendar validity and ordering are semantic rules, shared with the records UTC comparator.\nconst instant = z.string().min(1);\nconst time = z.union([\n z.strictObject({ state: z.literal(\"unknown\"), reason: z.string().min(1) }),\n z.strictObject({\n state: z.literal(\"known\"),\n kind: z.literal(\"instant\"),\n value: instant,\n timeScale: z.literal(\"UTC\"),\n }),\n z.strictObject({\n state: z.literal(\"known\"),\n kind: z.literal(\"interval\"),\n start: instant,\n end: instant,\n timeScale: z.literal(\"UTC\"),\n }),\n]);\nexport const MEASUREMENT_BINDINGS_SCHEMA_ID =\n \"urn:disclosureos:experimental:measurement-bindings:0.1.0\";\nexport const MEASUREMENT_BINDINGS_PROFILE = Object.freeze({\n id: \"urn:disclosureos:experimental:profile:measurement-bindings\",\n version: \"0.1.0\",\n scope: \"single_channel_declared_capture\",\n} as const);\nexport const MeasurementBindingsSchema = z.strictObject({\n kind: z.literal(\"measurement_bindings\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n historyId: id,\n observationId: id,\n contextId: id,\n acquisitionBindingsId: id,\n measurements: z.array(\n z.strictObject({\n measurementRef: ref(\"measurement\"),\n observationProductRef: ref(\"product\"),\n channelId: id,\n time,\n })\n ),\n extensions: z\n .record(\n z.string().regex(/^[a-z][a-z0-9_-]*(?:\\.[a-z0-9_-]+)+(?![\\s\\S])/),\n z.json()\n )\n .optional(),\n});\nexport type MeasurementBindings = z.infer<typeof MeasurementBindingsSchema>;\nexport function measurementBindingsJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(MeasurementBindingsSchema, { target: \"draft-2020-12\" }),\n $id: MEASUREMENT_BINDINGS_SCHEMA_ID,\n };\n}\ntype Status = \"passed\" | \"failed\" | \"not_checked\";\nexport interface MeasurementBindingIssue {\n code: string;\n stage: \"structural\" | \"semantic\" | \"profile\" | \"external\";\n severity: \"error\" | \"warning\";\n pointer: string;\n message: string;\n}\nexport interface MeasurementBindingResult {\n success: boolean;\n profile: typeof MEASUREMENT_BINDINGS_PROFILE;\n contract: {\n schemaId: typeof MEASUREMENT_BINDINGS_SCHEMA_ID;\n rulesetVersion: \"0.1.0\";\n };\n checks: {\n structural: Status;\n semantic: Status;\n profile: Status;\n external: Status;\n };\n issues: MeasurementBindingIssue[];\n acquisition: AcquisitionBindingResult | null;\n scientific: \"not_checked\";\n clockUncertainty: \"not_checked\";\n artifactContents: \"not_checked\";\n}\nconst pointer = (path: readonly PropertyKey[]) =>\n path\n .map((p) => `/${String(p).replace(/~/g, \"~0\").replace(/\\//g, \"~1\")}`)\n .join(\"\");\n\n/** Checks declared single-channel support and nominal capture containment, then verifies local acquisition bytes. */\nexport async function evaluateMeasurementBindings(\n historyInput: unknown,\n contextInput: unknown,\n acquisitionBindingsInput: unknown,\n measurementBindingsInput: unknown,\n options: AcquisitionBindingOptions = {}\n): Promise<MeasurementBindingResult> {\n const h = parseExperimentalClaimHistory(historyInput);\n const c = parseAcquisitionContext(contextInput);\n const a = AcquisitionBindingsSchema.safeParse(acquisitionBindingsInput);\n const m = MeasurementBindingsSchema.safeParse(measurementBindingsInput);\n const result: MeasurementBindingResult = {\n success: false,\n profile: MEASUREMENT_BINDINGS_PROFILE,\n contract: {\n schemaId: MEASUREMENT_BINDINGS_SCHEMA_ID,\n rulesetVersion: \"0.1.0\",\n },\n checks: {\n structural: \"passed\",\n semantic: \"not_checked\",\n profile: \"not_checked\",\n external: \"not_checked\",\n },\n issues: [],\n acquisition: null,\n scientific: \"not_checked\",\n clockUncertainty: \"not_checked\",\n artifactContents: \"not_checked\",\n };\n const issue = (\n code: string,\n path: string,\n message: string,\n stage: MeasurementBindingIssue[\"stage\"] = \"semantic\"\n ) =>\n result.issues.push({\n code,\n stage,\n severity: \"error\",\n pointer: path,\n message,\n });\n for (const [parsed, prefix] of [\n [h, \"/history\"],\n [c, \"/context\"],\n ] as const)\n result.issues.push(\n ...parsed.issues.map((i) => ({ ...i, pointer: prefix + i.pointer }))\n );\n for (const [parsed, prefix] of [\n [a, \"/bindings\"],\n [m, \"/measurements\"],\n ] as const)\n if (!parsed.success)\n for (const i of parsed.error.issues)\n issue(\n \"STRUCT.VALUE\",\n prefix + pointer(i.path),\n i.message,\n \"structural\"\n );\n if (\n h.checks.structural === \"failed\" ||\n c.checks.structural === \"failed\" ||\n !a.success ||\n !m.success\n ) {\n result.checks.structural = \"failed\";\n result.issues = result.issues.filter((i) => i.stage === \"structural\");\n return result;\n }\n if (!h.success || !c.success) {\n result.checks.semantic = \"failed\";\n return result;\n }\n const observation = h.data.observation;\n for (const [field, expected] of [\n [\"historyId\", h.data.id],\n [\"observationId\", observation.id],\n [\"contextId\", c.data.id],\n [\"acquisitionBindingsId\", a.data.id],\n ] as const)\n if (m.data[field] !== expected)\n issue(\n \"MEASUREMENT.DOCUMENT_ID\",\n `/measurements/${field}`,\n \"Mapping identifies a different input document.\"\n );\n const products = new Map(\n observation.products.map((p) => [`product:${p.id}`, p])\n );\n const sources = new Map(\n observation.sources.map((s) => [`source:${s.id}`, s])\n );\n const assertions = new Map(\n observation.assertions.map((s) => [`assertion:${s.id}`, s])\n );\n const processes = new Map(\n observation.processing.map((p) => [`process:${p.id}`, p])\n );\n const measurements = new Map(\n observation.measurements.map((m) => [`measurement:${m.id}`, m])\n );\n const lineage = (refs: readonly string[]) => {\n const queue = [...refs],\n seen = new Set<string>(),\n raw = new Set<string>();\n let instrument = false;\n while (queue.length) {\n const ref = queue.pop()!;\n if (seen.has(ref)) continue;\n seen.add(ref);\n const source = sources.get(ref);\n if (source?.kind === \"instrument_data\") instrument = true;\n const assertion = assertions.get(ref);\n if (assertion) queue.push(assertion.provenance.sourceRef);\n const product = products.get(ref);\n if (product?.kind === \"raw\") {\n raw.add(ref);\n queue.push(...product.sourceRefs);\n } else if (product?.kind === \"derived\")\n queue.push(...processes.get(product.generatedBy)!.inputRefs);\n }\n return { raw, instrument };\n };\n const seen = new Set<string>();\n for (const [i, binding] of m.data.measurements.entries()) {\n const path = `/measurements/measurements/${i}`;\n if (seen.has(binding.measurementRef))\n issue(\n \"MEASUREMENT.DUPLICATE\",\n `${path}/measurementRef`,\n \"One channel mapping per measurement is allowed in this profile.\"\n );\n seen.add(binding.measurementRef);\n const measurement = measurements.get(binding.measurementRef);\n if (!measurement) {\n issue(\n \"MEASUREMENT.REFERENCE\",\n `${path}/measurementRef`,\n \"Measurement does not exist.\"\n );\n continue;\n }\n const support = lineage(measurement.sourceRefs);\n if (!support.raw.has(binding.observationProductRef))\n issue(\n \"MEASUREMENT.LINEAGE\",\n `${path}/observationProductRef`,\n \"Bound raw product must occur in primary measurement lineage; uncertainty and unused assertions do not supply support.\"\n );\n const instrumentRaw = [...support.raw].filter(\n (ref) => products.get(ref)?.kind === \"raw\" && lineage([ref]).instrument\n );\n if (instrumentRaw.length > 1)\n issue(\n \"MEASUREMENT.MULTI_PRODUCT\",\n path,\n \"Multiple instrument raw products require a future explicit fusion profile.\"\n );\n const link = a.data.products.find(\n (p) => p.observationProductRef === binding.observationProductRef\n );\n const product =\n link &&\n c.data.products.find((p) => `product:${p.id}` === link.contextProductRef);\n const acquisition =\n product &&\n c.data.acquisitions.find(\n (p) => `acquisition:${p.id}` === product.acquisitionRef\n );\n if (\n products.get(binding.observationProductRef)?.kind !== \"raw\" ||\n !acquisition\n ) {\n issue(\n \"MEASUREMENT.PRODUCT\",\n `${path}/observationProductRef`,\n \"Mapping requires an explicitly acquisition-bound raw product.\"\n );\n continue;\n }\n const pin = acquisition.manifest;\n const manifest =\n pin.state === \"pinned\"\n ? c.data.manifests.find((p) => `manifest:${p.id}` === pin.ref)\n : undefined;\n const channel = manifest?.channels.find((p) => p.id === binding.channelId);\n if (\n !channel ||\n !acquisition.channels.some((p) => p.channelId === binding.channelId)\n )\n issue(\n \"MEASUREMENT.CHANNEL\",\n `${path}/channelId`,\n \"Channel must be declared by the pinned manifest and captured by this acquisition.\"\n );\n if (channel && channel.quantity !== measurement.quantity)\n issue(\n \"MEASUREMENT.QUANTITY\",\n path,\n \"Measurement quantity must exactly match the channel; no derived-quantity conversion is inferred.\"\n );\n if (channel && channel.unit !== measurement.value.unit)\n issue(\n \"MEASUREMENT.UNIT\",\n path,\n \"Measurement unit must exactly match the channel; no unit conversion is inferred.\"\n );\n const t = binding.time,\n capture = acquisition.time;\n if (t.state === \"unknown\") {\n issue(\n \"MEASUREMENT.TIME_UNKNOWN\",\n `${path}/time`,\n \"Explicit measurement capture time is required for this profile.\",\n \"profile\"\n );\n continue;\n }\n const start = t.kind === \"instant\" ? t.value : t.start,\n end = t.kind === \"instant\" ? t.value : t.end;\n if (\n compareUtcInstants(start, start) === undefined ||\n compareUtcInstants(end, end) === undefined\n ) {\n issue(\n \"MEASUREMENT.TIME_INVALID\",\n `${path}/time`,\n \"Time must be a valid Gregorian UTC instant with seconds and an explicit offset.\"\n );\n continue;\n }\n if (t.kind === \"interval\" && compareUtcInstants(start, end) !== -1) {\n issue(\n \"MEASUREMENT.TIME_ORDER\",\n `${path}/time`,\n \"Intervals are nonempty and half-open.\"\n );\n continue;\n }\n if (capture.state === \"unknown\") {\n issue(\n \"MEASUREMENT.CAPTURE_UNKNOWN\",\n path,\n \"Acquisition capture time is unknown.\",\n \"profile\"\n );\n continue;\n }\n const contained =\n capture.kind === \"instant\"\n ? t.kind === \"instant\" && compareUtcInstants(start, capture.value) === 0\n : compareUtcInstants(start, capture.start) !== -1 &&\n (t.kind === \"instant\"\n ? compareUtcInstants(end, capture.end) === -1\n : compareUtcInstants(end, capture.end) !== 1);\n if (!contained)\n issue(\n \"MEASUREMENT.OUTSIDE_CAPTURE\",\n `${path}/time`,\n \"Measurement time must lie within its acquisition; interval ends are exclusive.\"\n );\n }\n let applicable = 0;\n for (const [ref, measurement] of measurements)\n if (lineage(measurement.sourceRefs).instrument) {\n applicable++;\n if (!seen.has(ref))\n issue(\n \"MEASUREMENT.REQUIRED\",\n \"/measurements/measurements\",\n `Instrument-supported ${ref} needs an explicit channel and capture-time mapping.`,\n \"profile\"\n );\n }\n result.checks.semantic = result.issues.some(\n (i) => i.stage === \"semantic\" && i.severity === \"error\"\n )\n ? \"failed\"\n : \"passed\";\n if (result.issues.some((i) => i.severity === \"error\")) {\n result.checks.profile = \"failed\";\n return result;\n }\n // All parsers clone synchronously; the nested evaluator snapshots bytes before its first await.\n const acquisition = await evaluateAcquisitionBindings(\n h.data,\n c.data,\n a.data,\n options\n );\n result.acquisition = acquisition;\n result.issues.push(...acquisition.issues);\n result.checks.structural = acquisition.checks.structural;\n result.checks.semantic = acquisition.checks.semantic;\n result.checks.external = acquisition.checks.external;\n result.checks.profile =\n acquisition.checks.structural === \"failed\" ||\n acquisition.checks.semantic === \"failed\"\n ? \"not_checked\"\n : acquisition.checks.profile;\n if (!applicable && result.checks.profile === \"passed\") {\n result.checks.profile = \"not_checked\";\n result.issues.push({\n code: \"MEASUREMENT.NOT_APPLICABLE\",\n stage: \"profile\",\n severity: \"warning\",\n pointer: \"/history/observation/measurements\",\n message: \"No instrument-supported measurements are present.\",\n });\n }\n result.success = result.checks.profile === \"passed\";\n return result;\n}\n","import { z } from \"zod\";\nimport {\n compareUtcInstants,\n parseExperimentalClaimHistory,\n} from \"@disclosureos/records/experimental/v2\";\nimport { parseAcquisitionContext } from \"@disclosureos/instruments/experimental/v2\";\nimport { AcquisitionBindingsSchema } from \"./acquisition-bindings-schema\";\nimport {\n MeasurementBindingsSchema,\n evaluateMeasurementBindings,\n} from \"./measurement-bindings\";\nimport type {\n MeasurementBindingIssue,\n MeasurementBindingResult,\n} from \"./measurement-bindings\";\nimport { evaluateAssessmentDocumentation } from \"./assessment-documentation\";\nimport type { DocumentationResult } from \"./assessment-documentation\";\n\nconst text = z.string().min(1).regex(/\\S/);\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst ref = (kind: string) =>\n z\n .string()\n .regex(new RegExp(`^${kind}:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\\\s\\\\S])`));\n// This package owns its schemas; only plain data crosses package boundaries.\nconst artifact = z.strictObject({\n digest: z.strictObject({\n algorithm: z.literal(\"sha256\"),\n value: z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/),\n }),\n mediaType: text,\n byteLength: z.number().int().min(1).max(Number.MAX_SAFE_INTEGER),\n});\nconst method = z.strictObject({ id: text, version: text, description: text });\nconst review = z.union([\n z.strictObject({ state: z.literal(\"unreviewed\") }),\n z.strictObject({\n state: z.literal(\"reviewed\"),\n reviewedBy: text,\n reviewedAt: text,\n outcome: z.enum([\"accepted\", \"rejected\", \"inconclusive\"]),\n rationale: text,\n method,\n report: artifact,\n }),\n]);\nconst timingFields = {\n lower: text,\n upper: text,\n timeScale: z.literal(\"UTC\"),\n assumptions: z.array(text).min(1),\n review,\n};\nconst timing = z.union([\n z.strictObject({ kind: z.literal(\"unknown\"), reason: text }),\n z.strictObject({ kind: z.literal(\"bound\"), ...timingFields }),\n z.strictObject({\n kind: z.literal(\"coverage_interval\"),\n ...timingFields,\n coverageProbability: z.number().gt(0).lt(1),\n }),\n]);\nexport const INSTRUMENT_RESEARCH_REVIEW_SCHEMA_ID =\n \"urn:disclosureos:experimental:instrument-research-review:0.1.0\";\nexport const INSTRUMENT_RESEARCH_PREREQUISITES_PROFILE = Object.freeze({\n id: \"urn:disclosureos:experimental:profile:instrument-research-prerequisites\",\n version: \"0.1.0\",\n scope: \"reviewed_declared_inputs\",\n} as const);\nexport const InstrumentResearchReviewSchema = z.strictObject({\n kind: z.literal(\"instrument_research_review\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n historyId: id,\n observationId: id,\n contextId: id,\n acquisitionBindingsId: id,\n measurementBindingsId: id,\n purpose: method,\n measurements: z.array(\n z.strictObject({\n measurementRef: ref(\"measurement\"),\n calibrationRef: ref(\"calibration\"),\n calibrationUse: review,\n timing,\n })\n ),\n extensions: z\n .record(\n z.string().regex(/^[a-z][a-z0-9_-]*(?:\\.[a-z0-9_-]+)+(?![\\s\\S])/),\n z.json()\n )\n .optional(),\n});\nexport type InstrumentResearchReview = z.infer<\n typeof InstrumentResearchReviewSchema\n>;\nexport function instrumentResearchReviewJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(InstrumentResearchReviewSchema, {\n target: \"draft-2020-12\",\n }),\n $id: INSTRUMENT_RESEARCH_REVIEW_SCHEMA_ID,\n };\n}\ntype Status = \"passed\" | \"failed\" | \"not_checked\";\nexport interface InstrumentResearchOptions {\n observationAssets?: ReadonlyMap<string, Uint8Array>;\n contextAssets?: ReadonlyMap<string, Uint8Array>;\n /** Separate namespace: measurement:ID/calibration-use and measurement:ID/timing. */\n reviewAssets?: ReadonlyMap<string, Uint8Array>;\n}\nexport interface ResearchReviewAssetCheck {\n ref: string;\n status: Status;\n expectedSha256: string;\n expectedByteLength: number;\n actualSha256?: string;\n actualByteLength?: number;\n}\nexport interface InstrumentResearchResult {\n success: boolean;\n profile: typeof INSTRUMENT_RESEARCH_PREREQUISITES_PROFILE;\n contract: {\n schemaId: typeof INSTRUMENT_RESEARCH_REVIEW_SCHEMA_ID;\n rulesetVersion: \"0.1.0\";\n };\n checks: {\n structural: Status;\n semantic: Status;\n profile: Status;\n external: Status;\n };\n review: { id: string; purpose: InstrumentResearchReview[\"purpose\"] } | null;\n issues: MeasurementBindingIssue[];\n documentation: DocumentationResult | null;\n measurements: MeasurementBindingResult | null;\n reviewAssets: ResearchReviewAssetCheck[];\n scientificEligibility: \"not_checked\";\n calibrationAdequacy: \"not_checked\";\n timingModel: \"not_checked\";\n reviewerAuthenticity: \"not_checked\";\n}\nconst pointer = (path: readonly PropertyKey[]) =>\n path\n .map((p) => `/${String(p).replace(/~/g, \"~0\").replace(/\\//g, \"~1\")}`)\n .join(\"\");\nconst snapshot = (assets?: ReadonlyMap<string, Uint8Array>) =>\n new Map(\n [...(assets ?? [])].map(([ref, bytes]) => [ref, Uint8Array.from(bytes)])\n );\n\n/** Assesses documented prerequisites, not scientific validity or reviewer competence. */\nexport async function evaluateInstrumentResearchPrerequisites(\n historyInput: unknown,\n contextInput: unknown,\n acquisitionBindingsInput: unknown,\n measurementBindingsInput: unknown,\n reviewInput: unknown,\n options: InstrumentResearchOptions = {}\n): Promise<InstrumentResearchResult> {\n const h = parseExperimentalClaimHistory(historyInput),\n c = parseAcquisitionContext(contextInput),\n a = AcquisitionBindingsSchema.safeParse(acquisitionBindingsInput),\n m = MeasurementBindingsSchema.safeParse(measurementBindingsInput),\n r = InstrumentResearchReviewSchema.safeParse(reviewInput);\n const result: InstrumentResearchResult = {\n success: false,\n profile: INSTRUMENT_RESEARCH_PREREQUISITES_PROFILE,\n contract: {\n schemaId: INSTRUMENT_RESEARCH_REVIEW_SCHEMA_ID,\n rulesetVersion: \"0.1.0\",\n },\n checks: {\n structural: \"passed\",\n semantic: \"not_checked\",\n profile: \"not_checked\",\n external: \"not_checked\",\n },\n review: r.success ? { id: r.data.id, purpose: r.data.purpose } : null,\n issues: [],\n documentation: null,\n measurements: null,\n reviewAssets: [],\n scientificEligibility: \"not_checked\",\n calibrationAdequacy: \"not_checked\",\n timingModel: \"not_checked\",\n reviewerAuthenticity: \"not_checked\",\n };\n const issue = (\n code: string,\n path: string,\n message: string,\n stage: MeasurementBindingIssue[\"stage\"] = \"profile\",\n severity: \"error\" | \"warning\" = \"error\"\n ) => result.issues.push({ code, stage, severity, pointer: path, message });\n for (const [parsed, prefix] of [\n [h, \"/history\"],\n [c, \"/context\"],\n ] as const)\n result.issues.push(\n ...parsed.issues.map((i) => ({ ...i, pointer: prefix + i.pointer }))\n );\n for (const [parsed, prefix] of [\n [a, \"/bindings\"],\n [m, \"/measurements\"],\n [r, \"/review\"],\n ] as const)\n if (!parsed.success)\n for (const i of parsed.error.issues)\n issue(\n \"STRUCT.VALUE\",\n prefix + pointer(i.path),\n i.message,\n \"structural\"\n );\n if (\n h.checks.structural === \"failed\" ||\n c.checks.structural === \"failed\" ||\n !a.success ||\n !m.success ||\n !r.success\n ) {\n result.checks.structural = \"failed\";\n result.issues = result.issues.filter((i) => i.stage === \"structural\");\n return result;\n }\n if (!h.success || !c.success) {\n result.checks.semantic = \"failed\";\n return result;\n }\n for (const [field, expected] of [\n [\"historyId\", h.data.id],\n [\"observationId\", h.data.observation.id],\n [\"contextId\", c.data.id],\n [\"acquisitionBindingsId\", a.data.id],\n [\"measurementBindingsId\", m.data.id],\n ] as const)\n if (r.data[field] !== expected)\n issue(\n \"RESEARCH.DOCUMENT_ID\",\n `/review/${field}`,\n \"Review identifies a different input document.\",\n \"semantic\"\n );\n const artifacts = new Map<\n string,\n { value: z.infer<typeof artifact>; path: string }\n >();\n const inspectReview = (\n value: z.infer<typeof review>,\n ref: string,\n path: string,\n notBefore: string | undefined\n ) => {\n if (value.state !== \"reviewed\") {\n issue(\n \"RESEARCH.REVIEW_REQUIRED\",\n path,\n \"An explicit review is required.\"\n );\n return;\n }\n if (compareUtcInstants(value.reviewedAt, value.reviewedAt) === undefined)\n issue(\n \"RESEARCH.REVIEW_TIME\",\n `${path}/reviewedAt`,\n \"Review time must be a valid UTC instant.\",\n \"semantic\"\n );\n else if (\n notBefore &&\n compareUtcInstants(value.reviewedAt, notBefore) === -1\n )\n issue(\n \"RESEARCH.REVIEW_ORDER\",\n `${path}/reviewedAt`,\n \"Review cannot precede the inputs it evaluates.\",\n \"semantic\"\n );\n if (value.outcome !== \"accepted\")\n issue(\n \"RESEARCH.REVIEW_NOT_ACCEPTED\",\n `${path}/outcome`,\n \"Rejected or inconclusive review cannot satisfy the prerequisites.\"\n );\n artifacts.set(ref, { value: value.report, path: `${path}/report` });\n };\n const seen = new Set<string>();\n for (const [i, entry] of r.data.measurements.entries()) {\n const path = `/review/measurements/${i}`;\n if (seen.has(entry.measurementRef))\n issue(\n \"RESEARCH.DUPLICATE\",\n `${path}/measurementRef`,\n \"Each measurement has one review in this document.\",\n \"semantic\"\n );\n seen.add(entry.measurementRef);\n const binding = m.data.measurements.find(\n (b) => b.measurementRef === entry.measurementRef\n );\n const measurement = h.data.observation.measurements.find(\n (v) => `measurement:${v.id}` === entry.measurementRef\n );\n if (!binding || !measurement) {\n issue(\n \"RESEARCH.MEASUREMENT\",\n `${path}/measurementRef`,\n \"Review must identify an existing mapped measurement.\",\n \"semantic\"\n );\n continue;\n }\n const productRef = a.data.products.find(\n (p) => p.observationProductRef === binding.observationProductRef\n )?.contextProductRef;\n const product = c.data.products.find(\n (p) => `product:${p.id}` === productRef\n );\n const acquisition = c.data.acquisitions.find(\n (p) => `acquisition:${p.id}` === product?.acquisitionRef\n );\n const calibrationPin = acquisition?.channels.find(\n (channel) => channel.channelId === binding.channelId\n )?.calibration;\n const calibration = c.data.calibrations.find(\n (p) => `calibration:${p.id}` === entry.calibrationRef\n );\n if (\n !acquisition ||\n !calibration ||\n calibrationPin?.state !== \"pinned\" ||\n calibrationPin.ref !== entry.calibrationRef\n ) {\n issue(\n \"RESEARCH.CALIBRATION_PIN\",\n `${path}/calibrationRef`,\n \"Use review must identify the exact calibration pinned by the captured channel.\",\n \"semantic\"\n );\n continue;\n }\n if (\n calibration.review.state !== \"reviewed\" ||\n calibration.review.outcome !== \"accepted\"\n )\n issue(\n \"RESEARCH.CALIBRATION_REVIEW\",\n path,\n \"The pinned calibration also requires an accepted calibration review.\"\n );\n if (measurement.value.uncertainty.kind === \"unknown\")\n issue(\n \"RESEARCH.MEASUREMENT_UNCERTAINTY\",\n path,\n \"Measurement uncertainty must be explicitly quantified.\"\n );\n const nominal = binding.time;\n const nominalEnd =\n nominal.state === \"known\"\n ? nominal.kind === \"instant\"\n ? nominal.value\n : nominal.end\n : undefined;\n inspectReview(\n entry.calibrationUse,\n `${entry.measurementRef}/calibration-use`,\n `${path}/calibrationUse`,\n nominalEnd\n );\n if (\n entry.calibrationUse.state === \"reviewed\" &&\n calibration.review.state === \"reviewed\" &&\n compareUtcInstants(\n entry.calibrationUse.reviewedAt,\n calibration.review.reviewedAt\n ) === -1\n )\n issue(\n \"RESEARCH.REVIEW_ORDER\",\n `${path}/calibrationUse/reviewedAt`,\n \"Use review cannot precede the pinned calibration review.\",\n \"semantic\"\n );\n const t = entry.timing;\n if (t.kind === \"unknown\") {\n issue(\n \"RESEARCH.TIMING_REQUIRED\",\n `${path}/timing`,\n \"An explicitly interpreted timing interval is required; no bound is inferred from clock magnitude.\"\n );\n continue;\n }\n inspectReview(\n t.review,\n `${entry.measurementRef}/timing`,\n `${path}/timing/review`,\n t.upper\n );\n if (\n compareUtcInstants(t.lower, t.lower) === undefined ||\n compareUtcInstants(t.upper, t.upper) === undefined\n ) {\n issue(\n \"RESEARCH.TIME_INVALID\",\n `${path}/timing`,\n \"Interval limits must be valid UTC instants.\",\n \"semantic\"\n );\n continue;\n }\n if (compareUtcInstants(t.lower, t.upper) === 1) {\n issue(\n \"RESEARCH.TIME_ORDER\",\n `${path}/timing`,\n \"Closed timing interval lower limit must not exceed upper limit.\",\n \"semantic\"\n );\n continue;\n }\n if (nominal.state === \"unknown\")\n issue(\n \"RESEARCH.NOMINAL_TIME\",\n path,\n \"Nominal measurement time must be known.\"\n );\n else {\n const start = nominal.kind === \"instant\" ? nominal.value : nominal.start;\n const end = nominal.kind === \"instant\" ? nominal.value : nominal.end;\n if (\n compareUtcInstants(t.lower, start) === 1 ||\n compareUtcInstants(t.upper, end) === -1\n )\n issue(\n \"RESEARCH.NOMINAL_ENCLOSURE\",\n `${path}/timing`,\n \"Reviewed interval must enclose the whole nominal measurement, not shift it elsewhere.\",\n \"semantic\"\n );\n }\n const deploymentPin = acquisition.deployment;\n const deployment =\n deploymentPin.state === \"pinned\"\n ? c.data.deployments.find(\n (d) => `deployment:${d.id}` === deploymentPin.ref\n )\n : undefined;\n const windows = [\n [\"capture\", acquisition.time],\n [\"calibration\", calibration.validity],\n [\"deployment\", deployment?.period],\n ] as const;\n for (const [name, window] of windows) {\n if (!window || window.state === \"unknown\") {\n issue(\"RESEARCH.WINDOW_UNKNOWN\", path, `${name} window is unresolved.`);\n continue;\n }\n const contained =\n \"kind\" in window && window.kind === \"instant\"\n ? compareUtcInstants(t.lower, window.value) === 0 &&\n compareUtcInstants(t.upper, window.value) === 0\n : \"start\" in window &&\n compareUtcInstants(t.lower, window.start) !== -1 &&\n compareUtcInstants(t.upper, window.end) === -1;\n if (!contained)\n issue(\n \"RESEARCH.TIMING_OUTSIDE_WINDOW\",\n `${path}/timing`,\n `Closed timing interval must fit inside the ${name} window; its end is exclusive.`\n );\n }\n }\n for (const binding of m.data.measurements)\n if (!seen.has(binding.measurementRef))\n issue(\n \"RESEARCH.REVIEW_MISSING\",\n \"/review/measurements\",\n `Missing review for ${binding.measurementRef}.`\n );\n result.checks.semantic = result.issues.some(\n (i) => i.stage === \"semantic\" && i.severity === \"error\"\n )\n ? \"failed\"\n : \"passed\";\n if (result.issues.some((i) => i.severity === \"error\")) {\n result.checks.profile = \"failed\";\n return result;\n }\n const observationAssets = snapshot(options.observationAssets),\n contextAssets = snapshot(options.contextAssets),\n reviewAssets = snapshot(options.reviewAssets);\n // Start both evaluators against cloned documents before yielding; neither accepts caller-provided success flags.\n const [documentation, measurements] = await Promise.all([\n evaluateAssessmentDocumentation(h.data, { assets: observationAssets }),\n evaluateMeasurementBindings(h.data, c.data, a.data, m.data, {\n assets: contextAssets,\n }),\n ]);\n result.documentation = documentation;\n result.measurements = measurements;\n result.issues.push(\n ...documentation.issues.map((i) => ({\n ...i,\n pointer: `/documentation${i.pointer}`,\n })),\n ...measurements.issues\n );\n for (const [ref, { value, path }] of artifacts) {\n const check: ResearchReviewAssetCheck = {\n ref,\n status: \"not_checked\",\n expectedSha256: value.digest.value,\n expectedByteLength: value.byteLength,\n };\n result.reviewAssets.push(check);\n const bytes = reviewAssets.get(ref);\n if (!bytes) {\n issue(\n \"RESEARCH.REPORT_UNAVAILABLE\",\n path,\n `No local bytes supplied for ${ref}.`,\n \"external\",\n \"warning\"\n );\n continue;\n }\n check.actualByteLength = bytes.byteLength;\n if (bytes.byteLength !== value.byteLength) {\n check.status = \"failed\";\n issue(\n \"RESEARCH.REPORT_SIZE\",\n path,\n \"Review report byte length differs.\",\n \"external\"\n );\n continue;\n }\n try {\n const hash = await globalThis.crypto.subtle.digest(\"SHA-256\", bytes);\n check.actualSha256 = [...new Uint8Array(hash)]\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n check.status =\n check.actualSha256 === value.digest.value ? \"passed\" : \"failed\";\n if (check.status === \"failed\")\n issue(\n \"RESEARCH.REPORT_DIGEST\",\n path,\n \"Review report digest differs.\",\n \"external\"\n );\n } catch {\n issue(\n \"RESEARCH.HASH_UNAVAILABLE\",\n path,\n \"SHA-256 unavailable; report is unchecked.\",\n \"external\",\n \"warning\"\n );\n }\n }\n const nested = [documentation, measurements];\n result.checks.structural = nested.some(\n (n) => n.checks.structural === \"failed\"\n )\n ? \"failed\"\n : \"passed\";\n result.checks.semantic =\n result.checks.structural === \"failed\"\n ? \"not_checked\"\n : nested.some((n) => n.checks.semantic === \"failed\")\n ? \"failed\"\n : \"passed\";\n result.checks.external =\n nested.some((n) => n.checks.external === \"failed\") ||\n result.reviewAssets.some((v) => v.status === \"failed\")\n ? \"failed\"\n : \"not_checked\";\n result.checks.profile =\n result.checks.structural === \"failed\" || result.checks.semantic === \"failed\"\n ? \"not_checked\"\n : nested.some((n) => n.checks.profile === \"failed\") ||\n result.checks.external === \"failed\"\n ? \"failed\"\n : nested.some((n) => n.checks.profile === \"not_checked\") ||\n result.reviewAssets.some((v) => v.status === \"not_checked\") ||\n !r.data.measurements.length\n ? \"not_checked\"\n : \"passed\";\n result.success = result.checks.profile === \"passed\";\n return result;\n}\n","import { z } from \"zod\";\nimport {parseExperimentalClaimHistory} from \"@disclosureos/records/experimental/v2\";\nimport { evaluateInstrumentResearchPrerequisites } from \"./research-prerequisites\";\nimport type { InstrumentResearchResult } from \"./research-prerequisites\";\nconst text = z.string().min(1).regex(/\\S/);\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst assets = z.array(z.strictObject({ ref: text, fileRef: id }));\nexport const REPRODUCTION_PACKET_SCHEMA_ID =\n \"urn:disclosureos:experimental:reproduction-packet:0.1.0\";\nexport const REPRODUCTION_PACKET_PROFILE = Object.freeze({\n id: \"urn:disclosureos:experimental:profile:reproduction-packet\",\n version: \"0.1.0\",\n scope: \"exact_bytes_and_research_prerequisites\",\n} as const);\nexport const ReproductionPacketSchema = z.strictObject({\n kind: z.literal(\"reproduction_packet\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n researchProfile: z.literal(\n \"urn:disclosureos:experimental:profile:instrument-research-prerequisites:0.1.0\"\n ),\n files: z\n .array(\n z.strictObject({\n id,\n sha256: z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/),\n byteLength: z.number().int().min(1).max(Number.MAX_SAFE_INTEGER),\n })\n )\n .min(1),\n documents: z.strictObject({\n history: id,\n context: id,\n acquisitionBindings: id,\n measurementBindings: id,\n review: id,\n }),\n assets: z.strictObject({\n observation: assets,\n context: assets,\n review: assets,\n }),\n method: z.strictObject({\n id: text,\n version: text,\n description: text,\n inputRef: id,\n expectedOutputRef: id,\n measurementRef: z\n .string()\n .regex(/^measurement:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/),\n unit: text,\n absoluteTolerance: z.number().min(0),\n implementations: z\n .array(z.strictObject({ id, artifactRef: id, environmentRef: id }))\n .min(1),\n }),\n});\nexport type ReproductionPacket = z.infer<typeof ReproductionPacketSchema>;\nexport function reproductionPacketJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(ReproductionPacketSchema, { target: \"draft-2020-12\" }),\n $id: REPRODUCTION_PACKET_SCHEMA_ID,\n };\n}\ntype Status = \"passed\" | \"failed\" | \"not_checked\";\nexport interface ReproductionFileCheck {\n id: string;\n status: Status;\n expectedSha256: string;\n expectedByteLength: number;\n actualSha256?: string;\n actualByteLength?: number;\n}\nexport interface ReproductionPacketResult {\n success: boolean;\n profile: typeof REPRODUCTION_PACKET_PROFILE;\n contract: {\n schemaId: typeof REPRODUCTION_PACKET_SCHEMA_ID;\n rulesetVersion: \"0.1.0\";\n };\n checks: {\n structural: Status;\n semantic: Status;\n profile: Status;\n external: Status;\n };\n packetId?: string;\n method?: ReproductionPacket[\"method\"];\n files: ReproductionFileCheck[];\n issues: { code: string; pointer: string; message: string }[];\n research: InstrumentResearchResult | null;\n methodExecution: \"not_checked\";\n environmentExecution: \"not_checked\";\n scientificEligibility: \"not_checked\";\n}\n/** Pins exact supplied bytes and composes research prerequisites. Never fetches files or executes bundled code. */\nexport async function evaluateReproductionPacket(\n input: unknown,\n options: { files?: ReadonlyMap<string, Uint8Array> } = {}\n): Promise<ReproductionPacketResult> {\n const parsed = ReproductionPacketSchema.safeParse(input);\n const result: ReproductionPacketResult = {\n success: false,\n profile: REPRODUCTION_PACKET_PROFILE,\n contract: {\n schemaId: REPRODUCTION_PACKET_SCHEMA_ID,\n rulesetVersion: \"0.1.0\",\n },\n checks: {\n structural: \"passed\",\n semantic: \"not_checked\",\n profile: \"not_checked\",\n external: \"not_checked\",\n },\n files: [],\n issues: [],\n research: null,\n methodExecution: \"not_checked\",\n environmentExecution: \"not_checked\",\n scientificEligibility: \"not_checked\",\n };\n const issue = (code: string, pointer: string, message: string) =>\n result.issues.push({ code, pointer, message });\n if (!parsed.success) {\n result.checks.structural = \"failed\";\n for (const i of parsed.error.issues)\n issue(\n \"PACKET.STRUCTURE\",\n \"/\" +\n i.path\n .map((p) => String(p).replace(/~/g, \"~0\").replace(/\\//g, \"~1\"))\n .join(\"/\"),\n i.message\n );\n return result;\n }\n const packet = parsed.data;\n result.packetId = packet.id;\n result.method = packet.method;\n const inventory = new Set<string>();\n for (const [i, file] of packet.files.entries()) {\n if (inventory.has(file.id))\n issue(\"PACKET.DUPLICATE\", `/files/${i}/id`, \"File IDs must be unique.\");\n inventory.add(file.id);\n }\n const used = new Set<string>();\n const requireRef = (ref: string, path: string) => {\n used.add(ref);\n if (!inventory.has(ref))\n issue(\"PACKET.REFERENCE\", path, \"File reference is not inventoried.\");\n };\n for (const [name, ref] of Object.entries(packet.documents))\n requireRef(ref, `/documents/${name}`);\n for (const [namespace, entries] of Object.entries(packet.assets)) {\n const seen = new Set<string>();\n for (const [i, entry] of entries.entries()) {\n if (seen.has(entry.ref))\n issue(\n \"PACKET.DUPLICATE\",\n `/assets/${namespace}/${i}/ref`,\n \"Asset aliases must be unique within their namespace.\"\n );\n seen.add(entry.ref);\n requireRef(entry.fileRef, `/assets/${namespace}/${i}/fileRef`);\n }\n }\n requireRef(packet.method.inputRef, \"/method/inputRef\");\n requireRef(packet.method.expectedOutputRef, \"/method/expectedOutputRef\");\n const implementations = new Set<string>();\n for (const [i, impl] of packet.method.implementations.entries()) {\n if (implementations.has(impl.id))\n issue(\n \"PACKET.DUPLICATE\",\n `/method/implementations/${i}/id`,\n \"Implementation IDs must be unique.\"\n );\n implementations.add(impl.id);\n requireRef(impl.artifactRef, `/method/implementations/${i}/artifactRef`);\n requireRef(\n impl.environmentRef,\n `/method/implementations/${i}/environmentRef`\n );\n }\n for (const ref of inventory)\n if (!used.has(ref))\n issue(\n \"PACKET.UNUSED_FILE\",\n \"/files\",\n `Unreferenced file ${ref}; inventory must describe the evaluated packet.`\n );\n if (result.issues.length) {\n result.checks.semantic = \"failed\";\n return result;\n }\n result.checks.semantic = \"passed\";\n const files = new Map(\n [...(options.files ?? [])].map(([id, bytes]) => [\n id,\n Uint8Array.from(bytes),\n ])\n );\n for (const [i, file] of packet.files.entries()) {\n const check: ReproductionFileCheck = {\n id: file.id,\n status: \"not_checked\",\n expectedSha256: file.sha256,\n expectedByteLength: file.byteLength,\n };\n result.files.push(check);\n const bytes = files.get(file.id);\n if (!bytes) {\n issue(\n \"PACKET.MISSING_FILE\",\n `/files/${i}`,\n `Local bytes for ${file.id} are unavailable.`\n );\n continue;\n }\n check.actualByteLength = bytes.byteLength;\n if (bytes.byteLength !== file.byteLength) {\n check.status = \"failed\";\n issue(\n \"PACKET.SIZE\",\n `/files/${i}`,\n \"Byte length differs from the pinned input.\"\n );\n continue;\n }\n try {\n const digest = await globalThis.crypto.subtle.digest(\"SHA-256\", bytes);\n check.actualSha256 = [...new Uint8Array(digest)]\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n check.status = check.actualSha256 === file.sha256 ? \"passed\" : \"failed\";\n if (check.status === \"failed\")\n issue(\n \"PACKET.DIGEST\",\n `/files/${i}`,\n \"Digest differs from the pinned input.\"\n );\n } catch {\n issue(\n \"PACKET.HASH_UNAVAILABLE\",\n `/files/${i}`,\n \"SHA-256 unavailable; input identity is unchecked.\"\n );\n }\n }\n if (result.files.some((f) => f.status === \"failed\")) {\n result.checks.external = \"failed\";\n result.checks.profile = \"failed\";\n return result;\n }\n if (result.files.some((f) => f.status === \"not_checked\")) return result;\n const documents: Record<string, unknown> = {};\n for (const [name, ref] of Object.entries(packet.documents))\n try {\n const bytes = files.get(ref)!;\n const decoded = new TextDecoder(\"utf-8\", {\n fatal: true,\n ignoreBOM: true,\n }).decode(bytes);\n documents[name] = JSON.parse(decoded) as unknown;\n } catch {\n issue(\n \"PACKET.JSON\",\n `/documents/${name}`,\n \"Pinned document must be valid UTF-8 JSON without a BOM.\"\n );\n }\n if (result.issues.length) {\n result.checks.semantic = \"failed\";\n return result;\n }\n const maps = Object.fromEntries(\n Object.entries(packet.assets).map(([namespace, entries]) => [\n namespace,\n new Map(entries.map((entry) => [entry.ref, files.get(entry.fileRef)!])),\n ])\n );\n result.research = await evaluateInstrumentResearchPrerequisites(\n documents.history,\n documents.context,\n documents.acquisitionBindings,\n documents.measurementBindings,\n documents.review,\n {\n observationAssets: maps.observation!,\n contextAssets: maps.context!,\n reviewAssets: maps.review!,\n }\n );\n result.issues.push(\n ...result.research.issues.map((i) => ({\n code: i.code,\n pointer: `/research${i.pointer}`,\n message: i.message,\n }))\n );\n result.checks = { ...result.research.checks };\n result.success = result.research.success;\n if(result.success){\n const history=parseExperimentalClaimHistory(documents.history);\n const measurement=history.success ? history.data.observation.measurements.find(m=>`measurement:${m.id}`===packet.method.measurementRef) : undefined;\n if(!measurement || measurement.value.unit!==packet.method.unit){\n issue('PACKET.MEASUREMENT','/method/measurementRef','Method target must identify an existing measurement with the declared output unit.');\n result.checks.semantic='failed';result.checks.profile='not_checked';result.success=false;\n }\n }\n return result;\n}\n","import { z } from \"zod\";\nimport {\n compareUtcInstants,\n parseExperimentalClaimHistory,\n} from \"@disclosureos/records/experimental/v2\";\nimport { parseAcquisitionContext } from \"@disclosureos/instruments/experimental/v2\";\nimport type { AcquisitionContext } from \"@disclosureos/instruments/experimental/v2\";\nimport {\n ReproductionPacketSchema,\n evaluateReproductionPacket,\n} from \"./reproduction-packet\";\nimport type { ReproductionPacketResult } from \"./reproduction-packet\";\nconst text = z.string().min(1).regex(/\\S/),\n id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst ref = (kind: string) =>\n z\n .string()\n .regex(new RegExp(`^${kind}:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\\\s\\\\S])`));\nconst unknown = z.strictObject({ state: z.literal(\"unknown\"), reason: text });\nexport const DATASET_RELEASE_SCHEMA_ID =\n \"urn:disclosureos:experimental:dataset-release:0.1.0\";\nexport const DATASET_RELEASE_PROFILE = Object.freeze({\n id: \"urn:disclosureos:experimental:profile:dataset-release\",\n version: \"0.1.0\",\n scope: \"pinned_packets_and_nominal_session_membership\",\n} as const);\nexport const DatasetReleaseSchema = z.strictObject({\n kind: z.literal(\"dataset_release\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n version: text,\n title: text,\n description: text,\n createdAt: text,\n access: z.enum([\"public\", \"restricted\", \"unknown\"]),\n license: z.union([\n unknown,\n z.strictObject({ state: z.literal(\"declared\"), identifier: text }),\n ]),\n packets: z\n .array(\n z.strictObject({\n id,\n packetId: id,\n sha256: z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/),\n byteLength: z.number().int().min(1).max(Number.MAX_SAFE_INTEGER),\n })\n )\n .min(1),\n sessions: z\n .array(\n z.strictObject({\n id,\n title: text,\n time: z.union([\n unknown,\n z.strictObject({\n state: z.literal(\"known\"),\n start: text,\n end: text,\n timeScale: z.literal(\"UTC\"),\n }),\n ]),\n members: z\n .array(\n z.strictObject({\n packetRef: ref(\"packet\"),\n acquisitionRef: ref(\"acquisition\"),\n })\n )\n .min(1),\n })\n )\n .min(1),\n extensions: z\n .record(\n z.string().regex(/^[a-z][a-z0-9_-]*(?:\\.[a-z0-9_-]+)+(?![\\s\\S])/),\n z.json()\n )\n .optional(),\n});\nexport type DatasetRelease = z.infer<typeof DatasetReleaseSchema>;\nexport function datasetReleaseJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(DatasetReleaseSchema, { target: \"draft-2020-12\" }),\n $id: DATASET_RELEASE_SCHEMA_ID,\n };\n}\nexport interface DatasetPacketInput {\n manifest: Uint8Array;\n files: ReadonlyMap<string, Uint8Array>;\n}\ntype Status = \"passed\" | \"failed\" | \"not_checked\";\nexport interface DatasetIssue {\n code: string;\n pointer: string;\n message: string;\n stage: \"structural\" | \"semantic\" | \"profile\" | \"external\";\n}\nexport interface DatasetReleaseResult {\n success: boolean;\n profile: typeof DATASET_RELEASE_PROFILE;\n contract: {\n schemaId: typeof DATASET_RELEASE_SCHEMA_ID;\n rulesetVersion: \"0.1.0\";\n };\n checks: {\n structural: Status;\n semantic: Status;\n profile: Status;\n external: Status;\n };\n release?: { id: string; version: string };\n issues: DatasetIssue[];\n packets: {\n packetRef: string;\n manifestStatus: Status;\n expectedSha256: string;\n expectedByteLength: number;\n actualSha256?: string;\n actualByteLength?: number;\n validation: ReproductionPacketResult | null;\n }[];\n sessions: {\n sessionRef: string;\n status: Status;\n members: {\n packetRef: string;\n acquisitionRef: string;\n classification?: string;\n status: Status;\n }[];\n }[];\n scientificEligibility: \"not_checked\";\n authorization: \"not_checked\";\n crossInstrumentIdentity: \"not_checked\";\n}\nconst pointer = (path: readonly PropertyKey[]) =>\n path\n .map((p) => `/${String(p).replace(/~/g, \"~0\").replace(/\\//g, \"~1\")}`)\n .join(\"\");\nconst decode = (bytes: Uint8Array): unknown =>\n JSON.parse(\n new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true }).decode(bytes)\n ) as unknown;\n/** Verifies exact packet manifests and explicit nominal session membership. Does not infer simultaneity or physical identity. */\nexport async function evaluateDatasetRelease(\n input: unknown,\n options: { packets?: ReadonlyMap<string, DatasetPacketInput> } = {}\n): Promise<DatasetReleaseResult> {\n const parsed = DatasetReleaseSchema.safeParse(input);\n const result: DatasetReleaseResult = {\n success: false,\n profile: DATASET_RELEASE_PROFILE,\n contract: { schemaId: DATASET_RELEASE_SCHEMA_ID, rulesetVersion: \"0.1.0\" },\n checks: {\n structural: \"passed\",\n semantic: \"not_checked\",\n profile: \"not_checked\",\n external: \"not_checked\",\n },\n issues: [],\n packets: [],\n sessions: [],\n scientificEligibility: \"not_checked\",\n authorization: \"not_checked\",\n crossInstrumentIdentity: \"not_checked\",\n };\n const issue = (\n code: string,\n path: string,\n message: string,\n stage: DatasetIssue[\"stage\"] = \"semantic\"\n ) => result.issues.push({ code, pointer: path, message, stage });\n if (!parsed.success) {\n result.checks.structural = \"failed\";\n for (const i of parsed.error.issues)\n issue(\"DATASET.STRUCTURE\", pointer(i.path), i.message, \"structural\");\n return result;\n }\n const release = parsed.data;\n result.release = { id: release.id, version: release.version };\n if (compareUtcInstants(release.createdAt, release.createdAt) === undefined)\n issue(\n \"DATASET.TIME\",\n \"/createdAt\",\n \"Release creation time must be a valid UTC instant.\"\n );\n const ids = new Set<string>(),\n packetIds = new Set<string>();\n for (const [i, p] of release.packets.entries()) {\n if (ids.has(p.id) || packetIds.has(p.packetId))\n issue(\n \"DATASET.DUPLICATE\",\n `/packets/${i}`,\n \"Packet entry IDs and declared packet IDs must each be unique.\"\n );\n ids.add(p.id);\n packetIds.add(p.packetId);\n }\n const sessions = new Set<string>(),\n members = new Set<string>();\n for (const [i, s] of release.sessions.entries()) {\n if (sessions.has(s.id))\n issue(\n \"DATASET.DUPLICATE\",\n `/sessions/${i}/id`,\n \"Session IDs must be unique.\"\n );\n sessions.add(s.id);\n if (\n s.time.state === \"known\" &&\n (compareUtcInstants(s.time.start, s.time.start) === undefined ||\n compareUtcInstants(s.time.end, s.time.end) === undefined ||\n compareUtcInstants(s.time.start, s.time.end) !== -1)\n )\n issue(\n \"DATASET.TIME\",\n `/sessions/${i}/time`,\n \"Known sessions require a nonempty half-open UTC interval.\"\n );\n for (const [j, m] of s.members.entries()) {\n const key = `${m.packetRef}/${m.acquisitionRef}`;\n if (members.has(key))\n issue(\n \"DATASET.DUPLICATE_MEMBERSHIP\",\n `/sessions/${i}/members/${j}`,\n \"A packet acquisition belongs to exactly one session.\"\n );\n members.add(key);\n if (!ids.has(m.packetRef.slice(7)))\n issue(\n \"DATASET.PACKET_REFERENCE\",\n `/sessions/${i}/members/${j}/packetRef`,\n \"Packet is not inventoried.\"\n );\n }\n }\n if (result.issues.length) {\n result.checks.semantic = \"failed\";\n return result;\n }\n // Clone every packet and byte buffer before hashing any input.\n const packets = new Map(\n [...(options.packets ?? [])].map(([id, p]) => [\n id,\n {\n manifest: Uint8Array.from(p.manifest),\n files: new Map([...p.files].map(([id, b]) => [id, Uint8Array.from(b)])),\n },\n ])\n );\n const contexts = new Map<string, AcquisitionContext>();\n const contextPins = new Map<string, string>(),\n observationOwners = new Map<string, string>();\n for (const [i, entry] of release.packets.entries()) {\n const path = `/packets/${i}`,\n packetRef = `packet:${entry.id}`;\n const report: DatasetReleaseResult[\"packets\"][number] = {\n packetRef,\n manifestStatus: \"not_checked\",\n expectedSha256: entry.sha256,\n expectedByteLength: entry.byteLength,\n validation: null,\n };\n result.packets.push(report);\n const supplied = packets.get(entry.id);\n if (!supplied) {\n issue(\n \"DATASET.PACKET_UNAVAILABLE\",\n path,\n \"Pinned packet is not supplied.\",\n \"external\"\n );\n continue;\n }\n report.actualByteLength = supplied.manifest.byteLength;\n if (report.actualByteLength !== entry.byteLength) {\n report.manifestStatus = \"failed\";\n issue(\n \"DATASET.PACKET_SIZE\",\n path,\n \"Packet manifest length differs.\",\n \"external\"\n );\n continue;\n }\n try {\n report.actualSha256 = [\n ...new Uint8Array(\n await globalThis.crypto.subtle.digest(\"SHA-256\", supplied.manifest)\n ),\n ]\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n report.manifestStatus =\n report.actualSha256 === entry.sha256 ? \"passed\" : \"failed\";\n } catch {\n issue(\n \"DATASET.HASH_UNAVAILABLE\",\n path,\n \"SHA-256 unavailable.\",\n \"external\"\n );\n continue;\n }\n if (report.manifestStatus === \"failed\") {\n issue(\n \"DATASET.PACKET_DIGEST\",\n path,\n \"Packet manifest digest differs.\",\n \"external\"\n );\n continue;\n }\n let packet: unknown;\n try {\n packet = decode(supplied.manifest);\n } catch {\n issue(\n \"DATASET.PACKET_JSON\",\n path,\n \"Packet manifest must be valid UTF-8 JSON without a BOM.\"\n );\n continue;\n }\n const p = ReproductionPacketSchema.safeParse(packet);\n report.validation = await evaluateReproductionPacket(packet, {\n files: supplied.files,\n });\n if (!p.success) {\n issue(\n \"DATASET.PACKET_INVALID\",\n path,\n \"Pinned packet structure is invalid.\"\n );\n continue;\n }\n if (p.data.id !== entry.packetId)\n issue(\n \"DATASET.PACKET_ID\",\n path,\n \"Pinned packet identifies a different packet ID.\"\n );\n if (!report.validation.success) {\n issue(\n \"DATASET.PACKET_INCOMPLETE\",\n path,\n \"Member packet does not pass its profile; see nested diagnostics.\",\n \"profile\"\n );\n continue;\n }\n // A passed packet has already verified and parsed these exact document bytes.\n const context = parseAcquisitionContext(\n decode(supplied.files.get(p.data.documents.context)!)\n );\n const history = parseExperimentalClaimHistory(\n decode(supplied.files.get(p.data.documents.history)!)\n );\n if (!context.success || !history.success) {\n issue(\n \"DATASET.PACKET_INVALID\",\n path,\n \"Member documents cannot be resolved.\"\n );\n continue;\n }\n contexts.set(packetRef, context.data);\n const contextDigest = p.data.files.find(\n (f) => f.id === p.data.documents.context\n )!.sha256;\n if (\n contextPins.has(context.data.id) &&\n contextPins.get(context.data.id) !== contextDigest\n )\n issue(\n \"DATASET.CONTEXT_CONFLICT\",\n path,\n \"One context ID cannot identify different pinned bytes in the same release.\"\n );\n contextPins.set(context.data.id, contextDigest);\n if (observationOwners.has(history.data.observation.id))\n issue(\n \"DATASET.OBSERVATION_DUPLICATE\",\n path,\n \"An observation ID cannot be included through multiple packets in one release.\"\n );\n observationOwners.set(history.data.observation.id, packetRef);\n }\n const canonicalSessions = new Map<string, string>();\n for (const [i, s] of release.sessions.entries()) {\n const report: DatasetReleaseResult[\"sessions\"][number] = {\n sessionRef: `session:${s.id}`,\n status: \"passed\",\n members: [],\n };\n result.sessions.push(report);\n if (s.time.state === \"unknown\") {\n report.status = \"not_checked\";\n issue(\n \"DATASET.SESSION_TIME_UNKNOWN\",\n `/sessions/${i}/time`,\n \"Session time is unknown.\",\n \"profile\"\n );\n }\n for (const [j, m] of s.members.entries()) {\n const path = `/sessions/${i}/members/${j}`;\n const member: DatasetReleaseResult[\"sessions\"][number][\"members\"][number] =\n { ...m, status: \"not_checked\" };\n report.members.push(member);\n const context = contexts.get(m.packetRef);\n if (!context) continue;\n const acquisition = context.acquisitions.find(\n (a) => `acquisition:${a.id}` === m.acquisitionRef\n );\n if (!acquisition) {\n member.status = \"failed\";\n issue(\n \"DATASET.ACQUISITION_REFERENCE\",\n path,\n \"Acquisition is not declared by this packet context.\"\n );\n continue;\n }\n member.classification = acquisition.classification;\n const canonical = `${context.id}/${m.acquisitionRef}`;\n const assigned = canonicalSessions.get(canonical);\n if (assigned && assigned !== s.id) {\n member.status = \"failed\";\n issue(\n \"DATASET.SESSION_CONFLICT\",\n path,\n \"A shared context acquisition cannot belong to different sessions.\"\n );\n continue;\n }\n canonicalSessions.set(canonical, s.id);\n const t = acquisition.time;\n if (t.state === \"unknown\" || s.time.state === \"unknown\") continue;\n const start = t.kind === \"instant\" ? t.value : t.start,\n end = t.kind === \"instant\" ? t.value : t.end;\n const fits =\n compareUtcInstants(start, s.time.start) !== -1 &&\n (t.kind === \"instant\"\n ? compareUtcInstants(end, s.time.end) === -1\n : compareUtcInstants(end, s.time.end) !== 1);\n member.status = fits ? \"passed\" : \"failed\";\n if (!fits)\n issue(\n \"DATASET.OUTSIDE_SESSION\",\n path,\n \"Entire acquisition must fit within the session; session ends are exclusive.\"\n );\n }\n report.status = report.members.some((m) => m.status === \"failed\")\n ? \"failed\"\n : report.members.some((m) => m.status === \"not_checked\") ||\n report.status === \"not_checked\"\n ? \"not_checked\"\n : \"passed\";\n }\n for (const [packetRef, context] of contexts)\n for (const acquisition of context.acquisitions)\n if (!members.has(`${packetRef}/acquisition:${acquisition.id}`))\n issue(\n \"DATASET.MEMBERSHIP_REQUIRED\",\n \"/sessions\",\n `Missing session membership for ${packetRef}/acquisition:${acquisition.id}.`\n );\n result.checks.semantic = result.issues.some((i) => i.stage === \"semantic\")\n ? \"failed\"\n : contexts.size < release.packets.length\n ? \"not_checked\"\n : \"passed\";\n result.checks.external = result.packets.some(\n (p) =>\n p.manifestStatus === \"failed\" ||\n p.validation?.checks.external === \"failed\"\n )\n ? \"failed\"\n : \"not_checked\";\n const failedPacket = result.packets.some(\n (p) =>\n p.validation &&\n (p.validation.checks.structural === \"failed\" ||\n p.validation.checks.semantic === \"failed\" ||\n p.validation.checks.profile === \"failed\")\n );\n result.checks.profile =\n result.checks.semantic === \"failed\" ||\n result.checks.external === \"failed\" ||\n failedPacket ||\n result.sessions.some((s) => s.status === \"failed\")\n ? \"failed\"\n : result.packets.some(\n (p) => p.manifestStatus !== \"passed\" || !p.validation?.success\n ) || result.sessions.some((s) => s.status === \"not_checked\")\n ? \"not_checked\"\n : \"passed\";\n result.success = result.checks.profile === \"passed\";\n return result;\n}\n","import { z } from \"zod\";\nimport { compareUtcInstants } from \"@disclosureos/records/experimental/v2\";\nconst text = z.string().min(1).regex(/\\S/),\n id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst unknown = z.strictObject({ state: z.literal(\"unknown\"), reason: text });\nconst declaration = z.union([\n unknown,\n z.strictObject({ state: z.literal(\"declared\"), value: text }),\n]);\nexport const SOURCE_INTAKE_SCHEMA_ID =\n \"urn:disclosureos:experimental:source-intake:0.1.0\";\nexport const SOURCE_INTAKE_PROFILE = Object.freeze({\n id: \"urn:disclosureos:experimental:profile:source-intake\",\n version: \"0.1.0\",\n scope: \"local_file_receipt_identity\",\n} as const);\nexport const SourceIntakeSchema = z.strictObject({\n kind: z.literal(\"source_intake\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n receivedAt: text,\n source: z.strictObject({\n publisher: declaration,\n uri: z\n .url()\n .regex(/^https:\\/\\//)\n .optional(),\n }),\n access: z.enum([\"public\", \"restricted\", \"unknown\"]),\n license: declaration,\n artifacts: z\n .array(\n z.strictObject({\n id,\n originalName: text,\n role: z.enum([\n \"unknown\",\n \"native_raw\",\n \"derived\",\n \"source_export\",\n \"documentation\",\n ]),\n format: declaration,\n sha256: z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/),\n byteLength: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER),\n context: z.strictObject({\n instrument: declaration,\n calibration: declaration,\n clock: declaration,\n acquisitionTime: z.union([\n unknown,\n z.strictObject({\n state: z.literal(\"declared\"),\n kind: z.literal(\"instant\"),\n value: text,\n timeScale: z.literal(\"UTC\"),\n }),\n z.strictObject({\n state: z.literal(\"declared\"),\n kind: z.literal(\"interval\"),\n start: text,\n end: text,\n timeScale: z.literal(\"UTC\"),\n }),\n ]),\n }),\n })\n )\n .min(1),\n extensions: z\n .record(\n z.string().regex(/^[a-z][a-z0-9_-]*(?:\\.[a-z0-9_-]+)+(?![\\s\\S])/),\n z.json()\n )\n .optional(),\n});\nexport type SourceIntake = z.infer<typeof SourceIntakeSchema>;\nexport function sourceIntakeJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(SourceIntakeSchema, { target: \"draft-2020-12\" }),\n $id: SOURCE_INTAKE_SCHEMA_ID,\n };\n}\ntype Status = \"passed\" | \"failed\" | \"not_checked\";\nexport interface SourceIntakeResult {\n success: boolean;\n profile: typeof SOURCE_INTAKE_PROFILE;\n contract: {\n schemaId: typeof SOURCE_INTAKE_SCHEMA_ID;\n rulesetVersion: \"0.1.0\";\n };\n checks: {\n structural: Status;\n semantic: Status;\n profile: Status;\n external: Status;\n };\n issues: {\n code: string;\n stage: \"structural\" | \"semantic\" | \"external\";\n pointer: string;\n message: string;\n }[];\n gaps: { pointer: string; reason: string; nextAction: string }[];\n files: {\n id: string;\n status: Status;\n expectedSha256: string;\n expectedByteLength: number;\n actualSha256?: string;\n actualByteLength?: number;\n }[];\n researchEligibility: \"not_checked\";\n artifactContents: \"not_checked\";\n authorization: \"not_checked\";\n}\nconst pointer = (path: readonly PropertyKey[]) =>\n path\n .map((p) => `/${String(p).replace(/~/g, \"~0\").replace(/\\//g, \"~1\")}`)\n .join(\"\");\n/** Receipt integrity only: missing context never requires fabricated observations or reviews. */\nexport async function evaluateSourceIntake(\n input: unknown,\n options: { files?: ReadonlyMap<string, Uint8Array> } = {}\n): Promise<SourceIntakeResult> {\n const parsed = SourceIntakeSchema.safeParse(input);\n const result: SourceIntakeResult = {\n success: false,\n profile: SOURCE_INTAKE_PROFILE,\n contract: { schemaId: SOURCE_INTAKE_SCHEMA_ID, rulesetVersion: \"0.1.0\" },\n checks: {\n structural: \"passed\",\n semantic: \"not_checked\",\n profile: \"not_checked\",\n external: \"not_checked\",\n },\n issues: [],\n gaps: [],\n files: [],\n researchEligibility: \"not_checked\",\n artifactContents: \"not_checked\",\n authorization: \"not_checked\",\n };\n const issue = (\n code: string,\n stage: SourceIntakeResult[\"issues\"][number][\"stage\"],\n path: string,\n message: string\n ) => result.issues.push({ code, stage, pointer: path, message });\n if (!parsed.success) {\n result.checks.structural = \"failed\";\n for (const i of parsed.error.issues)\n issue(\"INTAKE.STRUCTURE\", \"structural\", pointer(i.path), i.message);\n return result;\n }\n const data = parsed.data;\n if (compareUtcInstants(data.receivedAt, data.receivedAt) === undefined)\n issue(\n \"INTAKE.TIME\",\n \"semantic\",\n \"/receivedAt\",\n \"Receipt time must be a valid UTC instant.\"\n );\n const gap = (path: string, reason: string, nextAction: string) =>\n result.gaps.push({ pointer: path, reason, nextAction });\n if (data.source.publisher.state === \"unknown\")\n gap(\n \"/source/publisher\",\n data.source.publisher.reason,\n \"Record the source publisher.\"\n );\n if (data.license.state === \"unknown\")\n gap(\n \"/license\",\n data.license.reason,\n \"Confirm applicable license and permitted use.\"\n );\n if (data.access === \"unknown\")\n gap(\n \"/access\",\n \"Access conditions not established.\",\n \"Confirm sharing restrictions before publication.\"\n );\n const seen = new Set<string>();\n for (const [i, a] of data.artifacts.entries()) {\n const path = `/artifacts/${i}`;\n if (seen.has(a.id))\n issue(\n \"INTAKE.DUPLICATE\",\n \"semantic\",\n `${path}/id`,\n \"Artifact IDs must be unique.\"\n );\n seen.add(a.id);\n if (a.role === \"unknown\")\n gap(\n `${path}/role`,\n \"Artifact role not established.\",\n \"Determine whether this is native raw data, a derived product, a source export, or documentation.\"\n );\n for (const [key, value] of Object.entries({\n format: a.format,\n ...a.context,\n })) {\n const field =\n key === \"format\" ? `${path}/format` : `${path}/context/${key}`;\n if (value.state === \"unknown\")\n gap(field, value.reason, `Obtain source documentation for ${key}.`);\n }\n const t = a.context.acquisitionTime;\n if (t.state === \"declared\") {\n const start = t.kind === \"instant\" ? t.value : t.start,\n end = t.kind === \"instant\" ? t.value : t.end;\n if (\n compareUtcInstants(start, start) === undefined ||\n compareUtcInstants(end, end) === undefined ||\n (t.kind === \"interval\" && compareUtcInstants(start, end) !== -1)\n )\n issue(\n \"INTAKE.TIME\",\n \"semantic\",\n `${path}/context/acquisitionTime`,\n \"Declared capture time requires valid UTC instants and a nonempty half-open interval.\"\n );\n }\n if (a.byteLength === 0)\n gap(\n `${path}/byteLength`,\n \"Empty file.\",\n \"Determine whether the empty file is expected; it supplies no measurement content.\"\n );\n }\n if (result.issues.length) {\n result.checks.semantic = \"failed\";\n return result;\n }\n result.checks.semantic = \"passed\";\n const files = new Map(\n [...(options.files ?? [])].map(([id, b]) => [id, Uint8Array.from(b)])\n );\n for (const [i, a] of data.artifacts.entries()) {\n const path = `/artifacts/${i}`,\n check: SourceIntakeResult[\"files\"][number] = {\n id: a.id,\n status: \"not_checked\",\n expectedSha256: a.sha256,\n expectedByteLength: a.byteLength,\n };\n result.files.push(check);\n const bytes = files.get(a.id);\n if (!bytes) {\n issue(\n \"INTAKE.FILE_UNAVAILABLE\",\n \"external\",\n path,\n \"No local file bytes supplied.\"\n );\n continue;\n }\n check.actualByteLength = bytes.length;\n if (bytes.length !== a.byteLength) {\n check.status = \"failed\";\n issue(\n \"INTAKE.SIZE\",\n \"external\",\n path,\n \"File length differs from the receipt.\"\n );\n continue;\n }\n try {\n check.actualSha256 = [\n ...new Uint8Array(\n await globalThis.crypto.subtle.digest(\"SHA-256\", bytes)\n ),\n ]\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n check.status = check.actualSha256 === a.sha256 ? \"passed\" : \"failed\";\n if (check.status === \"failed\")\n issue(\n \"INTAKE.DIGEST\",\n \"external\",\n path,\n \"File digest differs from the receipt.\"\n );\n } catch {\n issue(\n \"INTAKE.HASH_UNAVAILABLE\",\n \"external\",\n path,\n \"SHA-256 unavailable; file identity unchecked.\"\n );\n }\n }\n result.checks.external = result.files.some((f) => f.status === \"failed\")\n ? \"failed\"\n : \"not_checked\";\n result.checks.profile = result.files.some((f) => f.status === \"failed\")\n ? \"failed\"\n : result.files.some((f) => f.status === \"not_checked\")\n ? \"not_checked\"\n : \"passed\";\n result.success = result.checks.profile === \"passed\";\n return result;\n}\n","import { parseExperimentalClaimHistory } from \"@disclosureos/records/experimental/v2\";\nimport type { ClaimSubject } from \"@disclosureos/records/experimental/v2\";\nimport { evaluateAssessmentDocumentation } from \"./assessment-documentation\";\nimport type {\n DocumentationOptions,\n DocumentationResult,\n DocumentationIssue,\n} from \"./assessment-documentation\";\n\nexport const DOCUMENTATION_COMPLETION_POLICY = Object.freeze({\n id: \"urn:disclosureos:experimental:policy:documentation-completion\",\n version: \"0.1.0\",\n scope: \"assessment_documentation_requirements\",\n} as const);\nexport const DOCUMENTATION_REQUIREMENTS = Object.freeze(\n (\n [\n { id: \"assessment\", label: \"Attributed evaluator assessment\" },\n {\n id: \"documentary_support\",\n label: \"Traceable support, method descriptions and passage locators\",\n },\n { id: \"content_digests\", label: \"Supporting content digests\" },\n {\n id: \"content_integrity\",\n label: \"Local supporting content verification\",\n },\n {\n id: \"measurement\",\n label: \"Measurement matching the confirmed subject\",\n },\n { id: \"event_time\", label: \"Supplied event time\" },\n {\n id: \"measurement_uncertainty\",\n label: \"Characterized measurement uncertainty\",\n },\n {\n id: \"raw_product_lineage\",\n label: \"Primary instrument product lineage\",\n },\n { id: \"reference_frames\", label: \"Declared measurement frame context\" },\n ] as const\n ).map((value) => Object.freeze(value))\n);\nexport type DocumentationRequirementId =\n (typeof DOCUMENTATION_REQUIREMENTS)[number][\"id\"];\nexport type CompletionStatus =\n | \"satisfied\"\n | \"missing\"\n | \"failed\"\n | \"not_checked\"\n | \"not_applicable\";\nexport interface DocumentationAction extends DocumentationIssue {\n nextAction: string;\n}\nexport interface DocumentationRequirement {\n id: DocumentationRequirementId;\n label: string;\n importance: \"required\";\n applicability: \"applicable\" | \"not_applicable\" | \"not_checked\";\n status: CompletionStatus;\n reason: string;\n actions: DocumentationAction[];\n blockedBy: DocumentationRequirementId[];\n}\nexport interface AssessmentDocumentationCompletion {\n claimRef: string;\n topic: string;\n subject: ClaimSubject;\n /** The existing documentary profile remains authoritative. */\n documentationStatus: \"passed\" | \"failed\" | \"not_checked\";\n requirements: DocumentationRequirement[];\n /** Counts of checklist groups, not evidence volume, percentages, weights or scores. */\n counts: Record<CompletionStatus, number>;\n}\nexport interface DocumentationCompletionResult {\n policy: typeof DOCUMENTATION_COMPLETION_POLICY;\n applicability: {\n state: \"applicable\" | \"not_applicable\" | \"not_checked\";\n reason: string;\n };\n validation: DocumentationResult;\n assessments: AssessmentDocumentationCompletion[];\n actions: DocumentationAction[];\n scientificEligibility: \"not_checked\";\n artifactContents: \"not_checked\";\n methodExecution: \"not_checked\";\n}\nconst nextActions: Partial<Record<DocumentationIssue[\"code\"], string>> = {\n \"PROFILE.NO_ASSESSMENTS\":\n \"Preserve source assertions as supplied. Use this profile when an evaluator assessment exists; do not fabricate one.\",\n \"PROFILE.UNASSESSED\":\n \"Retain unassessed status until an attributed evaluation and method are available.\",\n \"PROFILE.INPUTS_REQUIRED\":\n \"Link the assessment to actual source content or data products. Instrument descriptors alone do not supply support.\",\n \"PROFILE.METHOD_CONTEXT\":\n \"Add the referenced method description from its documentation; preserve the declared method version.\",\n \"PROFILE.LOCATOR_REQUIRED\":\n \"Supply a passage or product-value locator from the original source; do not invent a page, timestamp or value location.\",\n \"PROFILE.DIGEST_REQUIRED\":\n \"Compute and record SHA-256 from the exact supporting content when it is available. Keep unavailable content unresolved.\",\n \"PROFILE.MEASUREMENT_REQUIRED\":\n \"Link a supported measurement matching the declared subject. If unavailable, retain the declaration with this gap.\",\n \"PROFILE.MEASUREMENT_UNCERTAINTY\":\n \"Obtain the documented uncertainty model and magnitude. Keep unknown uncertainty explicit until it can be characterized.\",\n \"PROFILE.INSTRUMENT_PRODUCT_REQUIRED\":\n \"Provide the measurement provenance reaching a native raw product and its declared instrument-data source.\",\n \"PROFILE.EVENT_TIME\":\n \"Supply a documented known or approximate event time with its provenance. Do not substitute a default date.\",\n \"PROFILE.FRAME_CONTEXT\":\n \"Document the referenced measurement frame; retain unknown frame context if its definition is unavailable.\",\n \"EXTERNAL.ASSET_UNAVAILABLE\":\n \"Supply the exact local bytes for the referenced content. A URL or digest alone does not complete verification.\",\n \"EXTERNAL.DIGEST_MISMATCH\":\n \"Resolve the content/version mismatch against the original source. Do not replace a pin merely to make validation pass.\",\n \"EXTERNAL.EMPTY_ASSET\":\n \"Obtain the nonempty supporting content; an empty file cannot support this assessment.\",\n \"EXTERNAL.HASH_UNAVAILABLE\":\n \"Rerun byte verification in a runtime with SHA-256 support; verification remains unchecked.\",\n};\nconst action = (issue: DocumentationIssue): DocumentationAction => ({\n ...issue,\n nextAction:\n nextActions[issue.code] ??\n \"Correct the structural or reference inconsistency at this pointer using the source record; preserve the original input for review.\",\n});\nconst codes = {\n documentary_support: [\n \"PROFILE.INPUTS_REQUIRED\",\n \"PROFILE.METHOD_CONTEXT\",\n \"PROFILE.LOCATOR_REQUIRED\",\n ],\n content_digests: [\"PROFILE.DIGEST_REQUIRED\"],\n content_integrity: [\n \"EXTERNAL.ASSET_UNAVAILABLE\",\n \"EXTERNAL.DIGEST_MISMATCH\",\n \"EXTERNAL.EMPTY_ASSET\",\n \"EXTERNAL.HASH_UNAVAILABLE\",\n ],\n measurement: [\"PROFILE.MEASUREMENT_REQUIRED\"],\n event_time: [\"PROFILE.EVENT_TIME\"],\n measurement_uncertainty: [\"PROFILE.MEASUREMENT_UNCERTAINTY\"],\n raw_product_lineage: [\"PROFILE.INSTRUMENT_PRODUCT_REQUIRED\"],\n reference_frames: [\"PROFILE.FRAME_CONTEXT\"],\n assessment: [\"PROFILE.UNASSESSED\"],\n} satisfies Record<DocumentationRequirementId, string[]>;\n\n/** Explain the existing documentary profile; never accept caller-asserted completion flags. */\nexport async function evaluateDocumentationCompletion(\n input: unknown,\n options: DocumentationOptions = {}\n): Promise<DocumentationCompletionResult> {\n // Capture both applicability and validator input before asynchronous byte checks.\n const parsed = parseExperimentalClaimHistory(input);\n const validation = await evaluateAssessmentDocumentation(\n parsed.success ? parsed.data : input,\n options\n );\n const result: DocumentationCompletionResult = {\n policy: DOCUMENTATION_COMPLETION_POLICY,\n applicability: {\n state: \"not_checked\",\n reason:\n \"A structurally and semantically valid claim history is required before determining applicability.\",\n },\n validation,\n assessments: [],\n actions: validation.issues.map(action),\n scientificEligibility: \"not_checked\",\n artifactContents: \"not_checked\",\n methodExecution: \"not_checked\",\n };\n if (!parsed.success) return result;\n result.applicability = validation.assessments.length\n ? {\n state: \"applicable\",\n reason:\n \"Current evaluator-assessment entries are present, including explicitly unassessed entries.\",\n }\n : {\n state: \"not_applicable\",\n reason:\n \"There are no current evaluator-assessment entries. Source assertions alone do not require an invented evaluation.\",\n };\n const claims = new Map(parsed.data.claims.map((c) => [`claim:${c.id}`, c]));\n const measurements = new Map(\n parsed.data.observation.measurements.map((m) => [`measurement:${m.id}`, m])\n );\n for (const report of validation.assessments) {\n const claim = claims.get(report.claimRef);\n if (!claim || claim.kind !== \"assessment\") continue;\n const assessed = claim.status === \"assessed\",\n confirmed = assessed && claim.outcome === \"confirmed\";\n const subjectRef =\n claim.subject.kind === \"measurement\"\n ? `measurement:${claim.subject.measurementId}`\n : undefined;\n const relevant = report.measurementRefs.filter(\n (ref) => !subjectRef || ref === subjectRef\n );\n const requirements: DocumentationRequirement[] = [];\n for (const definition of DOCUMENTATION_REQUIREMENTS) {\n const id = definition.id;\n const issues = report.issues.filter((i) =>\n (codes[id] as readonly string[]).includes(i.code)\n );\n const row: DocumentationRequirement = {\n id,\n label: definition.label,\n importance: \"required\",\n applicability: \"applicable\",\n status: \"satisfied\",\n reason:\n \"The pinned documentary profile completed this requirement without an unresolved diagnostic.\",\n actions: issues.map(action),\n blockedBy: [],\n };\n if (id === \"assessment\") {\n if (!assessed) {\n row.status = \"missing\";\n row.reason =\n \"No attributed evaluator assessment has been recorded; unassessed remains a valid state.\";\n }\n } else {\n const instrument = ![\n \"documentary_support\",\n \"content_digests\",\n \"content_integrity\",\n ].includes(id);\n if (!assessed) {\n row.blockedBy = [\"assessment\"];\n row.status = \"not_checked\";\n row.reason =\n \"The evaluator assessment is unassessed; dependent requirements have not been checked.\";\n if (instrument) row.applicability = \"not_checked\";\n } else if (instrument && !confirmed) {\n row.status = \"not_applicable\";\n row.applicability = \"not_applicable\";\n row.reason =\n \"This documentary profile applies this instrument requirement only to assessed confirmed declarations.\";\n } else if (\n [\n \"measurement_uncertainty\",\n \"raw_product_lineage\",\n \"reference_frames\",\n ].includes(id) &&\n !relevant.length\n ) {\n row.blockedBy = [\"measurement\"];\n row.status = \"not_checked\";\n row.reason =\n \"A measurement matching the subject is required before this check can run.\";\n } else if (\n id === \"reference_frames\" &&\n !relevant.some((ref) => measurements.get(ref)?.frameRef)\n ) {\n row.status = \"not_applicable\";\n row.applicability = \"not_applicable\";\n row.reason =\n \"No relevant measurement declares a frame reference; this does not establish that a frame is scientifically unnecessary.\";\n } else if (\n [\"content_digests\", \"content_integrity\"].includes(id) &&\n !report.assets.length\n ) {\n row.blockedBy = [\"documentary_support\"];\n row.status = \"not_checked\";\n row.reason =\n \"Traceable supporting content is required before pins and local bytes can be checked.\";\n } else if (id === \"content_integrity\") {\n if (report.assets.some((a) => a.status === \"failed\")) {\n row.status = \"failed\";\n row.reason =\n \"Supplied content is empty or differs from its pinned digest.\";\n } else if (\n issues.some((i) => i.code === \"EXTERNAL.ASSET_UNAVAILABLE\")\n ) {\n row.status = \"missing\";\n row.reason =\n \"Required local content was not supplied; byte verification is incomplete.\";\n } else if (report.assets.some((a) => a.status === \"not_checked\")) {\n if (report.issues.some((i) => i.code === \"PROFILE.DIGEST_REQUIRED\"))\n row.blockedBy = [\"content_digests\"];\n row.status = \"not_checked\";\n row.reason =\n \"Byte verification is incomplete; resolve missing pins or runtime hashing support first.\";\n }\n } else if (issues.length) {\n row.status = \"missing\";\n row.reason =\n \"Required documentation is missing or explicitly unknown.\";\n }\n }\n requirements.push(row);\n }\n const counts: Record<CompletionStatus, number> = {\n satisfied: 0,\n missing: 0,\n failed: 0,\n not_checked: 0,\n not_applicable: 0,\n };\n for (const row of requirements) counts[row.status]++;\n result.assessments.push({\n claimRef: report.claimRef,\n topic: claim.topic,\n subject: claim.subject,\n documentationStatus: report.status,\n requirements,\n counts,\n });\n }\n return result;\n}\n","import { parseAcquisitionContext } from \"@disclosureos/instruments/experimental/v2\";\nimport { MeasurementBindingsSchema } from \"./measurement-bindings\";\nimport type { MeasurementBindingIssue } from \"./measurement-bindings\";\nimport {\n InstrumentResearchReviewSchema,\n evaluateInstrumentResearchPrerequisites,\n} from \"./research-prerequisites\";\nimport type {\n InstrumentResearchOptions,\n InstrumentResearchResult,\n} from \"./research-prerequisites\";\n\nexport const INSTRUMENT_RESEARCH_COMPLETION_POLICY = Object.freeze({\n id: \"urn:disclosureos:experimental:policy:instrument-research-completion\",\n version: \"0.1.0\",\n scope: \"selected_instrument_research_prerequisites\",\n} as const);\nexport const INSTRUMENT_RESEARCH_REQUIREMENTS = Object.freeze(\n (\n [\n {\n id: \"input_consistency\",\n label: \"Reported structural and semantic consistency\",\n },\n { id: \"review_scope\", label: \"Nonempty mapped measurement review scope\" },\n {\n id: \"reviewed_context\",\n label: \"Calibration, uncertainty and interpreted timing prerequisites\",\n },\n {\n id: \"assessment_documentation\",\n label: \"Assessment documentation and supporting bytes\",\n },\n {\n id: \"measurement_acquisition\",\n label: \"Measurement and acquisition bindings with supporting bytes\",\n },\n {\n id: \"report_integrity\",\n label: \"Calibration-use and timing review report integrity\",\n },\n ] as const\n ).map((v) => Object.freeze(v))\n);\nexport type ResearchRequirementId =\n (typeof INSTRUMENT_RESEARCH_REQUIREMENTS)[number][\"id\"];\nexport type ResearchCompletionStatus =\n | \"satisfied\"\n | \"missing\"\n | \"failed\"\n | \"not_checked\";\nexport interface ResearchCompletionAction extends MeasurementBindingIssue {\n nextAction: string;\n measurementRef?: string;\n}\nexport interface ResearchCompletionRequirement {\n id: ResearchRequirementId;\n label: string;\n importance: \"required\";\n status: ResearchCompletionStatus;\n reason: string;\n blockedBy: ResearchRequirementId[];\n actions: ResearchCompletionAction[];\n}\nexport interface InstrumentResearchCompletionResult {\n policy: typeof INSTRUMENT_RESEARCH_COMPLETION_POLICY;\n applicability: { state: \"selected\"; reason: string };\n validation: InstrumentResearchResult;\n requirements: ResearchCompletionRequirement[];\n counts: Record<ResearchCompletionStatus, number>;\n actions: ResearchCompletionAction[];\n scientificEligibility: \"not_checked\";\n calibrationAdequacy: \"not_checked\";\n timingModel: \"not_checked\";\n reviewerAuthenticity: \"not_checked\";\n}\nconst missingCodes = new Set([\n \"RESEARCH.REVIEW_MISSING\",\n \"RESEARCH.REVIEW_REQUIRED\",\n \"RESEARCH.TIMING_REQUIRED\",\n \"RESEARCH.NOMINAL_TIME\",\n \"RESEARCH.WINDOW_UNKNOWN\",\n \"RESEARCH.MEASUREMENT_UNCERTAINTY\",\n \"RESEARCH.REPORT_UNAVAILABLE\",\n \"EXTERNAL.ASSET_UNAVAILABLE\",\n \"BINDING.CONTEXT_INCOMPLETE\",\n \"BINDING.DIGEST_REQUIRED\",\n \"BINDING.PRODUCT_REQUIRED\",\n \"BINDING.SOURCE_REQUIRED\",\n \"MEASUREMENT.TIME_UNKNOWN\",\n \"MEASUREMENT.CAPTURE_UNKNOWN\",\n \"MEASUREMENT.REQUIRED\",\n \"PROFILE.INPUTS_REQUIRED\",\n \"PROFILE.METHOD_CONTEXT\",\n \"PROFILE.LOCATOR_REQUIRED\",\n \"PROFILE.DIGEST_REQUIRED\",\n \"PROFILE.MEASUREMENT_REQUIRED\",\n \"PROFILE.MEASUREMENT_UNCERTAINTY\",\n \"PROFILE.INSTRUMENT_PRODUCT_REQUIRED\",\n \"PROFILE.EVENT_TIME\",\n \"PROFILE.FRAME_CONTEXT\",\n]);\nconst advice: Record<string, string> = {\n \"RESEARCH.DOCUMENT_ID\":\n \"Resolve the document/version mismatch using the original review and input inventory; do not relabel unrelated inputs.\",\n \"RESEARCH.DUPLICATE\":\n \"Resolve duplicate measurement reviews explicitly; do not select an arbitrary first entry.\",\n \"RESEARCH.MEASUREMENT\":\n \"Identify the reviewed measurement and its documented mapping before evaluating research prerequisites.\",\n \"RESEARCH.CALIBRATION_PIN\":\n \"Resolve the exact calibration pinned by the captured channel. Do not substitute a later or more favorable calibration.\",\n \"RESEARCH.REVIEW_MISSING\":\n \"Supply the missing measurement review when available. Preserve the gap rather than fabricating a review.\",\n \"RESEARCH.REVIEW_REQUIRED\":\n \"Obtain the purpose-specific review and its supporting report; retain unreviewed status until that work exists.\",\n \"RESEARCH.REVIEW_NOT_ACCEPTED\":\n \"Preserve the rejected or inconclusive review. Resolve its findings through documented further work; do not relabel it accepted to pass.\",\n \"RESEARCH.REVIEW_TIME\":\n \"Correct the review timestamp from the review record using a valid UTC instant.\",\n \"RESEARCH.REVIEW_ORDER\":\n \"Resolve the review chronology against the actual input and review records; do not backdate or invent an evaluation.\",\n \"RESEARCH.MEASUREMENT_UNCERTAINTY\":\n \"Obtain the documented measurement uncertainty model and magnitude; retain unknown uncertainty until characterized.\",\n \"RESEARCH.TIMING_REQUIRED\":\n \"Obtain an explicitly interpreted timing interval, assumptions and review. A clock magnitude alone does not define an interval.\",\n \"RESEARCH.TIME_INVALID\":\n \"Correct the interval limits from the documented timing interpretation using valid UTC instants.\",\n \"RESEARCH.TIME_ORDER\":\n \"Resolve the reversed interval limits against the timing record; do not silently swap them.\",\n \"RESEARCH.NOMINAL_TIME\":\n \"Obtain the nominal capture time and its meaning from the source metadata; retain unknown timing until established.\",\n \"RESEARCH.NOMINAL_ENCLOSURE\":\n \"Resolve why the timing interval does not enclose the whole nominal measurement; do not shift a measurement into a convenient window.\",\n \"RESEARCH.WINDOW_UNKNOWN\":\n \"Obtain the applicable capture, deployment or calibration interval identified in the diagnostic; retain unresolved history.\",\n \"RESEARCH.TIMING_OUTSIDE_WINDOW\":\n \"Resolve timing and validity against the original capture, deployment and calibration records; do not trim uncertainty bounds to fit.\",\n \"RESEARCH.REPORT_UNAVAILABLE\":\n \"Supply exact local bytes for the named review report. A declared digest or review label is not byte verification.\",\n \"RESEARCH.REPORT_SIZE\":\n \"Resolve the report/version mismatch against the source; do not change the expected length merely to pass.\",\n \"RESEARCH.REPORT_DIGEST\":\n \"Resolve the report/version mismatch against the source; do not replace the digest merely to pass.\",\n \"RESEARCH.HASH_UNAVAILABLE\":\n \"Rerun report verification in a runtime with SHA-256 support; verification remains unchecked.\",\n \"EXTERNAL.ASSET_UNAVAILABLE\":\n \"Supply the exact local supporting bytes in the indicated namespace; do not infer verification from a URL.\",\n \"EXTERNAL.HASH_UNAVAILABLE\":\n \"Rerun byte verification in a runtime with SHA-256 support; verification remains unchecked.\",\n \"EXTERNAL.DIGEST_MISMATCH\":\n \"Resolve the content/version mismatch against the original source rather than replacing the pin to pass.\",\n \"EXTERNAL.SIZE_MISMATCH\":\n \"Resolve the source artifact/version mismatch rather than adjusting the expected length to pass.\",\n \"EXTERNAL.EMPTY_ASSET\":\n \"Obtain the nonempty supporting source content; an empty file cannot supply this support.\",\n \"BINDING.CONTEXT_INCOMPLETE\":\n \"Resolve the specific acquisition-context gaps in the nested binding result, preserving unknown clock and calibration history.\",\n \"MEASUREMENT.UNIT\":\n \"Resolve the channel/unit mismatch from documented definitions. This profile performs no implicit unit conversion.\",\n \"MEASUREMENT.QUANTITY\":\n \"Resolve the quantity/channel meaning against the manifest; do not equate different quantities by their labels.\",\n};\n\n/** Guidance for the explicitly selected profile. All validation is delegated, including early exits. */\nexport async function evaluateInstrumentResearchCompletion(\n historyInput: unknown,\n contextInput: unknown,\n acquisitionBindingsInput: unknown,\n measurementBindingsInput: unknown,\n reviewInput: unknown,\n options: InstrumentResearchOptions = {}\n): Promise<InstrumentResearchCompletionResult> {\n const review = InstrumentResearchReviewSchema.safeParse(reviewInput),\n mapping = MeasurementBindingsSchema.safeParse(measurementBindingsInput),\n context = parseAcquisitionContext(contextInput);\n const validation = await evaluateInstrumentResearchPrerequisites(\n historyInput,\n context.success ? context.data : contextInput,\n acquisitionBindingsInput,\n mapping.success ? mapping.data : measurementBindingsInput,\n review.success ? review.data : reviewInput,\n options\n );\n function reviewEntry(issue: MeasurementBindingIssue) {\n const match = /^\\/review\\/measurements\\/(\\d+)(?:\\/|$)/.exec(issue.pointer);\n return match && review.success\n ? review.data.measurements[Number(match[1])]\n : undefined;\n }\n function calibrationRejected(issue: MeasurementBindingIssue): boolean {\n const entry = reviewEntry(issue),\n calibration =\n context.success && entry\n ? context.data.calibrations.find(\n (c) => `calibration:${c.id}` === entry.calibrationRef\n )\n : undefined;\n return (\n calibration?.review.state === \"reviewed\" &&\n calibration.review.outcome !== \"accepted\"\n );\n }\n function action(issue: MeasurementBindingIssue): ResearchCompletionAction {\n const entry = reviewEntry(issue);\n const nextAction =\n issue.code === \"RESEARCH.CALIBRATION_REVIEW\"\n ? calibrationRejected(issue)\n ? \"Preserve the rejected or inconclusive calibration review. Resolve applicability through documented further review; do not relabel the outcome accepted.\"\n : \"Obtain the review of the exact pinned calibration and its report; preserve unreviewed or unknown status while unavailable.\"\n : advice[issue.code] ??\n (issue.code.startsWith(\"PROFILE.\")\n ? \"Follow the documentary requirement at this pointer using original source content; preserve unknown or unassessed states rather than inventing support.\"\n : \"Resolve the stated structural, reference or binding inconsistency using the source documents; preserve original inputs for review.\");\n return {\n ...issue,\n nextAction,\n ...(entry ? { measurementRef: entry.measurementRef } : {}),\n };\n }\n const actions = validation.issues.map(action);\n function status(\n issues: readonly MeasurementBindingIssue[],\n fallback: ResearchCompletionStatus\n ): ResearchCompletionStatus {\n if (\n issues.some(\n (i) =>\n i.severity === \"error\" &&\n !missingCodes.has(i.code) &&\n (i.code !== \"RESEARCH.CALIBRATION_REVIEW\" || calibrationRejected(i))\n )\n )\n return \"failed\";\n if (\n issues.some(\n (i) =>\n missingCodes.has(i.code) || i.code === \"RESEARCH.CALIBRATION_REVIEW\"\n )\n )\n return \"missing\";\n return fallback;\n }\n const requirements: ResearchCompletionRequirement[] =\n INSTRUMENT_RESEARCH_REQUIREMENTS.map((r) => ({\n ...r,\n importance: \"required\",\n status: \"not_checked\",\n reason: \"The prerequisite check has not completed.\",\n blockedBy: [],\n actions: [],\n }));\n const item = (id: ResearchRequirementId) =>\n requirements.find((r) => r.id === id)!;\n const inputs = item(\"input_consistency\");\n inputs.actions = actions.filter(\n (i) => i.stage === \"structural\" || i.stage === \"semantic\"\n );\n inputs.status =\n validation.checks.structural === \"failed\" ||\n validation.checks.semantic === \"failed\"\n ? \"failed\"\n : validation.checks.structural === \"passed\" &&\n validation.checks.semantic === \"passed\"\n ? \"satisfied\"\n : \"not_checked\";\n inputs.reason =\n \"Describes only the structural and semantic checks actually reported. Binding checks that never ran remain unchecked in their own phase.\";\n const scope = item(\"review_scope\");\n scope.actions = actions.filter((i) => i.code === \"RESEARCH.REVIEW_MISSING\");\n const covered =\n review.success &&\n mapping.success &&\n review.data.measurements.length > 0 &&\n mapping.data.measurements.length > 0 &&\n mapping.data.measurements.every((m) =>\n review.data.measurements.some(\n (r) => r.measurementRef === m.measurementRef\n )\n );\n if (inputs.status !== \"satisfied\") {\n scope.blockedBy = [\"input_consistency\"];\n scope.reason =\n \"Resolve input consistency before treating review membership as established.\";\n } else {\n scope.status = covered ? \"satisfied\" : \"missing\";\n scope.reason = covered\n ? \"A nonempty mapped review inventory is present; this does not establish that the inventory is exhaustive.\"\n : \"A nonempty mapped measurement review scope is required. Omission is not an inapplicability exemption.\";\n }\n const reviewed = item(\"reviewed_context\");\n reviewed.actions = actions.filter(\n (i) =>\n i.code.startsWith(\"RESEARCH.\") &&\n i.stage === \"profile\" &&\n i.code !== \"RESEARCH.REVIEW_MISSING\"\n );\n if (reviewed.actions.length) {\n reviewed.status = status(reviewed.actions, \"not_checked\");\n reviewed.reason =\n \"Calibration, uncertainty or timing prerequisites have unresolved diagnostics; preserved review outcomes remain authoritative.\";\n } else if (inputs.status !== \"satisfied\") {\n reviewed.blockedBy = [\"input_consistency\"];\n reviewed.reason =\n \"Input consistency prevents a completed review-prerequisite determination.\";\n } else if (scope.status !== \"satisfied\") {\n reviewed.blockedBy = [\"review_scope\"];\n reviewed.reason =\n \"Establish the mapped review scope before claiming review-prerequisite completion.\";\n } else if (\n validation.documentation !== null &&\n validation.measurements !== null\n ) {\n reviewed.status = \"satisfied\";\n reviewed.reason =\n \"The review preflight passed and the validator proceeded to its downstream checks. Scientific adequacy remains unchecked.\";\n } else {\n reviewed.blockedBy = [\"input_consistency\", \"review_scope\"];\n }\n for (const [id, nested] of [\n [\"assessment_documentation\", validation.documentation],\n [\"measurement_acquisition\", validation.measurements],\n ] as const) {\n const row = item(id);\n row.actions = nested\n ? nested.issues.map((i) =>\n action(\n id === \"assessment_documentation\"\n ? { ...i, pointer: \"/documentation\" + i.pointer }\n : i\n )\n )\n : [];\n if (!nested) {\n row.blockedBy =\n inputs.status !== \"satisfied\"\n ? [\"input_consistency\"]\n : scope.status !== \"satisfied\"\n ? [\"review_scope\"]\n : [\"reviewed_context\"];\n row.reason =\n \"The research validator stopped before this phase; no positive result is inferred from absent diagnostics.\";\n } else {\n row.status =\n nested.checks.profile === \"passed\"\n ? \"satisfied\"\n : status(\n row.actions,\n nested.checks.profile === \"failed\" ? \"failed\" : \"not_checked\"\n );\n row.reason =\n \"Reports the invoked nested profile. Consult its full diagnostics and per-asset results in validation.\";\n }\n }\n const reports = item(\"report_integrity\");\n reports.actions = actions.filter(\n (i) => i.code.startsWith(\"RESEARCH.\") && i.stage === \"external\"\n );\n if (!validation.reviewAssets.length) {\n reports.blockedBy =\n inputs.status !== \"satisfied\"\n ? [\"input_consistency\"]\n : scope.status !== \"satisfied\"\n ? [\"review_scope\"]\n : [\"reviewed_context\"];\n reports.reason =\n \"No review-report verification completed; an empty check list is not a pass.\";\n } else {\n reports.status = validation.reviewAssets.some((a) => a.status === \"failed\")\n ? \"failed\"\n : status(\n reports.actions,\n validation.reviewAssets.some((a) => a.status === \"not_checked\")\n ? \"not_checked\"\n : \"satisfied\"\n );\n reports.reason =\n \"Reports only local calibration-use and timing report byte identity. Reviewer identity and scientific validity are unchecked.\";\n }\n const counts: Record<ResearchCompletionStatus, number> = {\n satisfied: 0,\n missing: 0,\n failed: 0,\n not_checked: 0,\n };\n for (const r of requirements) counts[r.status]++;\n return {\n policy: INSTRUMENT_RESEARCH_COMPLETION_POLICY,\n applicability: {\n state: \"selected\",\n reason:\n \"The caller explicitly selected the instrument-research profile. Empty inventories or missing reviews are not automatic exemptions.\",\n },\n validation,\n requirements,\n counts,\n actions,\n scientificEligibility: \"not_checked\",\n calibrationAdequacy: \"not_checked\",\n timingModel: \"not_checked\",\n reviewerAuthenticity: \"not_checked\",\n };\n}\n","import { z } from \"zod\";\nimport {\n ReproductionPacketSchema,\n evaluateReproductionPacket,\n REPRODUCTION_PACKET_PROFILE,\n} from \"./reproduction-packet\";\nimport type {\n ReproductionPacketResult,\n ReproductionFileCheck,\n} from \"./reproduction-packet\";\nimport {\n evaluateInstrumentResearchCompletion,\n INSTRUMENT_RESEARCH_COMPLETION_POLICY,\n} from \"./research-completion\";\nimport type { InstrumentResearchCompletionResult } from \"./research-completion\";\nimport { INSTRUMENT_RESEARCH_PREREQUISITES_PROFILE } from \"./research-prerequisites\";\nimport { ASSESSMENT_DOCUMENTATION_PROFILE } from \"./assessment-documentation\";\nimport { ACQUISITION_BINDINGS_PROFILE } from \"./acquisition-bindings\";\nimport { MEASUREMENT_BINDINGS_PROFILE } from \"./measurement-bindings\";\nconst text = z.string().min(1).regex(/\\S/);\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst pin = z.strictObject({\n sha256: z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/),\n byteLength: z.number().int().min(1).max(Number.MAX_SAFE_INTEGER),\n});\nconst dependency = z.strictObject({\n ref: id,\n id: text,\n version: text,\n ...pin.shape,\n});\nexport const RESEARCH_EVALUATION_SCHEMA_ID =\n \"urn:disclosureos:experimental:research-evaluation:0.1.0\";\nexport const RESEARCH_EVALUATION_POLICY = Object.freeze({\n id: \"urn:disclosureos:experimental:policy:research-evaluation\",\n version: \"0.1.0\",\n scope: \"local_byte_identity_and_computed_prerequisites\",\n} as const);\nexport const ResearchEvaluationSchema = z.strictObject({\n kind: z.literal(\"research_evaluation\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n workflow: z.literal(\"research-completion:0.1.0\"),\n packet: pin,\n dependencies: z.strictObject({\n vocabularies: z.array(dependency).min(1),\n implementation: dependency,\n environment: dependency,\n }),\n});\nexport type ResearchEvaluation = z.infer<typeof ResearchEvaluationSchema>;\nexport function researchEvaluationJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(ResearchEvaluationSchema, { target: \"draft-2020-12\" }),\n $id: RESEARCH_EVALUATION_SCHEMA_ID,\n };\n}\ntype Status = \"passed\" | \"failed\" | \"not_checked\";\nexport interface ResearchEvaluationOptions {\n packetBytes?: Uint8Array;\n files?: ReadonlyMap<string, Uint8Array>;\n dependencyFiles?: ReadonlyMap<string, Uint8Array>;\n}\nexport interface ResearchEvaluationOutput {\n packet: ReproductionPacketResult;\n completion: InstrumentResearchCompletionResult;\n}\nexport interface ResearchEvaluationReceipt {\n format: \"disclosureos-research-evaluation-receipt:0.1.0\";\n serialization: \"sorted-json-utf8:0.1.0\";\n request: { sha256: string; byteLength: number };\n output: { sha256: string; byteLength: number };\n /** These exact strings are hashed as UTF-8; no trailing newline is added. */\n requestJson: string;\n outputJson: string;\n}\nexport interface ResearchEvaluationResult {\n success: boolean;\n policy: typeof RESEARCH_EVALUATION_POLICY;\n checks: {\n structural: Status;\n semantic: Status;\n external: Status;\n evaluation: Status;\n receipt: Status;\n };\n issues: { code: string; pointer: string; message: string }[];\n files: ReproductionFileCheck[];\n packetValidation: ReproductionPacketResult | null;\n output: ResearchEvaluationOutput | null;\n receipt: ResearchEvaluationReceipt | null;\n implementationExecution: \"not_attested\";\n environmentExecution: \"not_attested\";\n vocabularyMembership: \"not_checked\";\n scientificEligibility: \"not_checked\";\n}\n// JSON values only: sorted object keys, preserved array order, standard JSON number/string encoding.\nfunction serialize(value: unknown): string {\n if (Array.isArray(value))\n return (\n \"[\" +\n value.map((v) => serialize(v === undefined ? null : v)).join(\",\") +\n \"]\"\n );\n if (value && typeof value === \"object\") {\n const record = value as Record<string, unknown>;\n return (\n \"{\" +\n Object.keys(record)\n .filter((k) => record[k] !== undefined)\n .sort()\n .map((k) => JSON.stringify(k) + \":\" + serialize(record[k]))\n .join(\",\") +\n \"}\"\n );\n }\n return JSON.stringify(value);\n}\nasync function digest(bytes: Uint8Array): Promise<string> {\n const buffer = Uint8Array.from(bytes);\n return [\n ...new Uint8Array(await globalThis.crypto.subtle.digest(\"SHA-256\", buffer)),\n ]\n .map((v) => v.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\nfunction decode(bytes: Uint8Array): unknown {\n return JSON.parse(\n new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true }).decode(bytes)\n ) as unknown;\n}\n/** Executes only the fixed built-in workflow. Supplied artifacts are pinned, never fetched or executed. */\nexport async function evaluateResearchEvaluation(\n input: unknown,\n options: ResearchEvaluationOptions = {}\n): Promise<ResearchEvaluationResult> {\n const parsed = ResearchEvaluationSchema.safeParse(input);\n const result: ResearchEvaluationResult = {\n success: false,\n policy: RESEARCH_EVALUATION_POLICY,\n checks: {\n structural: \"passed\",\n semantic: \"not_checked\",\n external: \"not_checked\",\n evaluation: \"not_checked\",\n receipt: \"not_checked\",\n },\n issues: [],\n files: [],\n packetValidation: null,\n output: null,\n receipt: null,\n implementationExecution: \"not_attested\",\n environmentExecution: \"not_attested\",\n vocabularyMembership: \"not_checked\",\n scientificEligibility: \"not_checked\",\n };\n const issue = (code: string, pointer: string, message: string) =>\n result.issues.push({ code, pointer, message });\n if (!parsed.success) {\n result.checks.structural = \"failed\";\n for (const i of parsed.error.issues)\n issue(\n \"EVALUATION.STRUCTURE\",\n \"/\" +\n i.path\n .map((p) => String(p).replace(/~/g, \"~0\").replace(/\\//g, \"~1\"))\n .join(\"/\"),\n i.message\n );\n return result;\n }\n const request = parsed.data;\n const dependencies = [\n ...request.dependencies.vocabularies,\n request.dependencies.implementation,\n request.dependencies.environment,\n ];\n const refs = new Set<string>(),\n vocabularies = new Set<string>();\n for (const [i, d] of dependencies.entries()) {\n if (refs.has(d.ref))\n issue(\n \"EVALUATION.DUPLICATE\",\n \"/dependencies\",\n `Dependency reference ${d.ref} is duplicated.`\n );\n refs.add(d.ref);\n if (i < request.dependencies.vocabularies.length) {\n if (vocabularies.has(d.id))\n issue(\n \"EVALUATION.VOCABULARY\",\n \"/dependencies/vocabularies\",\n \"Each vocabulary identity must have exactly one declared version.\"\n );\n vocabularies.add(d.id);\n }\n }\n if (result.issues.length) {\n result.checks.semantic = \"failed\";\n return result;\n }\n result.checks.semantic = \"passed\";\n // Copy every document/file namespace before the first asynchronous hash.\n const packetBytes = options.packetBytes\n ? Uint8Array.from(options.packetBytes)\n : undefined;\n const files = new Map(\n [...(options.files ?? [])].map(([ref, bytes]) => [\n ref,\n Uint8Array.from(bytes),\n ])\n );\n const dependencyFiles = new Map(\n [...(options.dependencyFiles ?? [])].map(([ref, bytes]) => [\n ref,\n Uint8Array.from(bytes),\n ])\n );\n const checks = [\n {\n id: \"packet\",\n pin: request.packet,\n bytes: packetBytes,\n pointer: \"/packet\",\n },\n ...dependencies.map((d, i) => ({\n id: `dependency:${d.ref}`,\n pin: d,\n bytes: dependencyFiles.get(d.ref),\n pointer:\n i < request.dependencies.vocabularies.length\n ? `/dependencies/vocabularies/${i}`\n : i === request.dependencies.vocabularies.length\n ? \"/dependencies/implementation\"\n : \"/dependencies/environment\",\n })),\n ];\n for (const item of checks) {\n const check: ReproductionFileCheck = {\n id: item.id,\n status: \"not_checked\",\n expectedSha256: item.pin.sha256,\n expectedByteLength: item.pin.byteLength,\n };\n result.files.push(check);\n if (!item.bytes) {\n issue(\n \"EVALUATION.MISSING_FILE\",\n item.pointer,\n \"Required local bytes are unavailable.\"\n );\n continue;\n }\n check.actualByteLength = item.bytes.byteLength;\n if (item.bytes.byteLength !== item.pin.byteLength) {\n check.status = \"failed\";\n issue(\n \"EVALUATION.SIZE\",\n item.pointer,\n \"Bytes differ from the declared length.\"\n );\n continue;\n }\n try {\n check.actualSha256 = await digest(item.bytes);\n check.status =\n check.actualSha256 === item.pin.sha256 ? \"passed\" : \"failed\";\n if (check.status === \"failed\")\n issue(\n \"EVALUATION.DIGEST\",\n item.pointer,\n \"Bytes differ from the declared SHA-256.\"\n );\n } catch {\n issue(\n \"EVALUATION.HASH_UNAVAILABLE\",\n item.pointer,\n \"SHA-256 unavailable; byte identity remains unchecked.\"\n );\n }\n }\n if (result.files.some((c) => c.status !== \"passed\")) {\n if (result.files.some((c) => c.status === \"failed\"))\n result.checks.external = \"failed\";\n return result;\n }\n let packetInput: unknown;\n try {\n packetInput = decode(packetBytes!);\n } catch {\n result.checks.semantic = \"failed\";\n issue(\n \"EVALUATION.JSON\",\n \"/packet\",\n \"Packet must be valid UTF-8 JSON without a BOM.\"\n );\n return result;\n }\n const packet = ReproductionPacketSchema.safeParse(packetInput);\n const packetResult = await evaluateReproductionPacket(packetInput, { files });\n result.packetValidation = packetResult;\n // Packet diagnostics are preserved even when no computed completion can be produced.\n if (!packet.success || packetResult.research === null) {\n result.checks.semantic =\n packetResult.checks.structural === \"failed\" ||\n packetResult.checks.semantic === \"failed\"\n ? \"failed\"\n : result.checks.semantic;\n result.checks.external = packetResult.files.some(\n (c) => c.status === \"failed\"\n )\n ? \"failed\"\n : packet.success &&\n packetResult.files.length === packet.data.files.length &&\n packetResult.files.every((c) => c.status === \"passed\")\n ? \"passed\"\n : \"not_checked\";\n result.issues.push(\n ...packetResult.issues.map((i) => ({\n ...i,\n pointer: \"/packet\" + i.pointer,\n }))\n );\n // Expose inner file failures so callers can distinguish missing bytes from invalid documents.\n result.files.push(\n ...packetResult.files.map((f) => ({ ...f, id: `packet-file:${f.id}` }))\n );\n return result;\n }\n result.files.push(\n ...packetResult.files.map((f) => ({ ...f, id: `packet-file:${f.id}` }))\n );\n result.checks.external = \"passed\";\n const documents = Object.fromEntries(\n Object.entries(packet.data.documents).map(([name, ref]) => [\n name,\n decode(files.get(ref)!),\n ])\n );\n const maps = Object.fromEntries(\n Object.entries(packet.data.assets).map(([ns, entries]) => [\n ns,\n new Map(entries.map((e) => [e.ref, files.get(e.fileRef)!])),\n ])\n );\n const completion = await evaluateInstrumentResearchCompletion(\n documents.history,\n documents.context,\n documents.acquisitionBindings,\n documents.measurementBindings,\n documents.review,\n {\n observationAssets: maps.observation!,\n contextAssets: maps.context!,\n reviewAssets: maps.review!,\n }\n );\n result.output = { packet: packetResult, completion };\n result.checks.evaluation =\n packetResult.success && completion.validation.success\n ? \"passed\"\n : Object.values(packetResult.checks).includes(\"failed\") ||\n Object.values(completion.validation.checks).includes(\"failed\")\n ? \"failed\"\n : \"not_checked\";\n result.issues.push(\n ...packetResult.issues.map((i) => ({\n ...i,\n pointer: \"/output/packet\" + i.pointer,\n }))\n );\n // Rule identities are generated from this evaluator, never accepted as caller-supplied success flags or callbacks.\n const requestJson = serialize({\n manifest: request,\n rules: {\n evaluation: RESEARCH_EVALUATION_POLICY,\n packet: REPRODUCTION_PACKET_PROFILE,\n research: INSTRUMENT_RESEARCH_PREREQUISITES_PROFILE,\n completion: INSTRUMENT_RESEARCH_COMPLETION_POLICY,\n documentation: ASSESSMENT_DOCUMENTATION_PROFILE,\n acquisition: ACQUISITION_BINDINGS_PROFILE,\n measurements: MEASUREMENT_BINDINGS_PROFILE,\n },\n limits: {\n implementationExecution: result.implementationExecution,\n environmentExecution: result.environmentExecution,\n vocabularyMembership: result.vocabularyMembership,\n scientificEligibility: result.scientificEligibility,\n },\n });\n const outputJson = serialize(result.output),\n encoder = new TextEncoder();\n try {\n const requestBytes = encoder.encode(requestJson),\n outputBytes = encoder.encode(outputJson);\n result.receipt = {\n format: \"disclosureos-research-evaluation-receipt:0.1.0\",\n serialization: \"sorted-json-utf8:0.1.0\",\n request: {\n sha256: await digest(requestBytes),\n byteLength: requestBytes.byteLength,\n },\n output: {\n sha256: await digest(outputBytes),\n byteLength: outputBytes.byteLength,\n },\n requestJson,\n outputJson,\n };\n result.checks.receipt = \"passed\";\n } catch {\n issue(\n \"EVALUATION.HASH_UNAVAILABLE\",\n \"/receipt\",\n \"Output hashing unavailable; no receipt was produced.\"\n );\n }\n result.success =\n result.checks.evaluation === \"passed\" && result.checks.receipt === \"passed\";\n return result;\n}\n","import { z } from \"zod\";\nimport { parseExperimentalClaimHistory } from \"@disclosureos/records/experimental/v2\";\nconst text = z.string().min(1).regex(/\\S/),\n id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nexport const RELEASED_DOCUMENT_SELECTION_SCHEMA_ID =\n \"urn:disclosureos:experimental:released-document-selection:0.1.0\";\nexport const RELEASED_DOCUMENT_PROFILE = Object.freeze({\n id: \"urn:disclosureos:experimental:profile:released-document-provenance\",\n version: \"0.1.0\",\n scope: \"selected_document_sources_and_direct_extractions\",\n maturity: \"experimental\",\n} as const);\nexport const ReleasedDocumentSelectionSchema = z.strictObject({\n kind: z.literal(\"released_document_selection\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n historyId: id,\n observationId: id,\n documents: z\n .array(\n z.strictObject({\n sourceRef: z\n .string()\n .regex(/^source:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/),\n release: z.discriminatedUnion(\"state\", [\n z.strictObject({\n state: z.literal(\"known\"),\n releasedBy: text,\n reference: text,\n }),\n z.strictObject({ state: z.literal(\"unknown\"), reason: text }),\n ]),\n })\n )\n .min(1),\n});\nexport type ReleasedDocumentSelection = z.infer<\n typeof ReleasedDocumentSelectionSchema\n>;\nexport function releasedDocumentSelectionJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(ReleasedDocumentSelectionSchema, {\n target: \"draft-2020-12\",\n }),\n $id: RELEASED_DOCUMENT_SELECTION_SCHEMA_ID,\n };\n}\nexport const RELEASED_DOCUMENT_REQUIREMENTS = Object.freeze(\n (\n [\n {\n id: \"document_source\",\n importance: \"required\",\n label: \"Declared public document source\",\n },\n {\n id: \"release_citation\",\n importance: \"required\",\n label: \"Attributed release citation\",\n },\n {\n id: \"content_digest\",\n importance: \"required\",\n label: \"Declared document SHA-256\",\n },\n {\n id: \"content_integrity\",\n importance: \"required\",\n label: \"Exact local document bytes\",\n },\n {\n id: \"extraction_traceability\",\n importance: \"required\",\n label:\n \"Locators and extractor identities for supplied direct extractions\",\n },\n {\n id: \"source_title\",\n importance: \"recommended\",\n label: \"Human-readable source title\",\n },\n {\n id: \"source_uri\",\n importance: \"recommended\",\n label: \"Source retrieval reference\",\n },\n {\n id: \"source_attribution\",\n importance: \"recommended\",\n label: \"Source-side attribution for supplied direct extractions\",\n },\n ] as const\n ).map((v) => Object.freeze(v))\n);\nexport type ReleasedDocumentRequirementId =\n (typeof RELEASED_DOCUMENT_REQUIREMENTS)[number][\"id\"];\ntype Status = \"passed\" | \"failed\" | \"not_checked\";\nexport type ReleasedDocumentCompletionStatus =\n | \"satisfied\"\n | \"missing\"\n | \"failed\"\n | \"not_checked\"\n | \"not_applicable\";\nexport interface ReleasedDocumentIssue {\n code: string;\n stage: \"structural\" | \"semantic\" | \"profile\" | \"external\" | \"recommendation\";\n severity: \"error\" | \"warning\";\n pointer: string;\n message: string;\n nextAction: string;\n}\nexport interface ReleasedDocumentRequirement {\n id: ReleasedDocumentRequirementId;\n label: string;\n importance: \"required\" | \"recommended\";\n status: ReleasedDocumentCompletionStatus;\n reason: string;\n blockedBy: ReleasedDocumentRequirementId[];\n issues: ReleasedDocumentIssue[];\n}\nexport interface ReleasedDocumentReport {\n sourceRef: string;\n status: Status;\n requirements: ReleasedDocumentRequirement[];\n extractionRefs: string[];\n asset: {\n status: Status;\n expectedSha256?: string;\n actualSha256?: string;\n byteLength?: number;\n };\n}\nexport interface ReleasedDocumentResult {\n success: boolean;\n profile: typeof RELEASED_DOCUMENT_PROFILE;\n selection: ReleasedDocumentSelection | null;\n validation: ReturnType<typeof parseExperimentalClaimHistory>;\n checks: {\n structural: Status;\n semantic: Status;\n profile: Status;\n external: Status;\n };\n documents: ReleasedDocumentReport[];\n issues: ReleasedDocumentIssue[];\n releaseAuthenticity: \"not_checked\";\n redistributionRights: \"not_checked\";\n locatorContents: \"not_checked\";\n extractionAccuracy: \"not_checked\";\n assessmentSupport: \"not_checked\";\n scientificEligibility: \"not_checked\";\n}\n/** Selected documentary provenance only. Assessments and scientific sufficiency are not evaluated. */\nexport async function evaluateReleasedDocuments(\n historyInput: unknown,\n selectionInput: unknown,\n options: { assets?: ReadonlyMap<string, Uint8Array> } = {}\n): Promise<ReleasedDocumentResult> {\n const validation = parseExperimentalClaimHistory(historyInput),\n selection = ReleasedDocumentSelectionSchema.safeParse(selectionInput);\n const result: ReleasedDocumentResult = {\n success: false,\n profile: RELEASED_DOCUMENT_PROFILE,\n selection: selection.success ? selection.data : null,\n validation,\n checks: {\n structural: validation.checks.structural,\n semantic: validation.checks.semantic,\n profile: \"not_checked\",\n external: \"not_checked\",\n },\n documents: [],\n issues: validation.issues.map((i) => ({\n ...i,\n nextAction:\n \"Resolve the reported history inconsistency against the original records.\",\n })),\n releaseAuthenticity: \"not_checked\",\n redistributionRights: \"not_checked\",\n locatorContents: \"not_checked\",\n extractionAccuracy: \"not_checked\",\n assessmentSupport: \"not_checked\",\n scientificEligibility: \"not_checked\",\n };\n if (!selection.success) {\n result.checks.structural = \"failed\";\n result.checks.semantic = \"not_checked\";\n for (const i of selection.error.issues)\n result.issues.push({\n code: \"DOCUMENT.SELECTION\",\n stage: \"structural\",\n severity: \"error\",\n pointer:\n \"/selection/\" +\n i.path\n .map((p) => String(p).replace(/~/g, \"~0\").replace(/\\//g, \"~1\"))\n .join(\"/\"),\n message: i.message,\n nextAction:\n \"Supply a nonempty explicit document selection using existing source references; do not invent release metadata.\",\n });\n return result;\n }\n if (!validation.success) return result;\n const chosen = selection.data,\n history = validation.data;\n const problem = (code: string, pointer: string, message: string) =>\n result.issues.push({\n code,\n stage: \"semantic\",\n severity: \"error\",\n pointer,\n message,\n nextAction:\n \"Resolve the selection against the exact history and source inventory.\",\n });\n if (chosen.historyId !== history.id)\n problem(\n \"DOCUMENT.HISTORY_ID\",\n \"/selection/historyId\",\n \"Selected history ID differs from the supplied history\"\n );\n if (chosen.observationId !== history.observation.id)\n problem(\n \"DOCUMENT.OBSERVATION_ID\",\n \"/selection/observationId\",\n \"Selected observation ID differs from the supplied history\"\n );\n const selected = new Set<string>();\n for (const [i, d] of chosen.documents.entries()) {\n if (selected.has(d.sourceRef))\n problem(\n \"DOCUMENT.DUPLICATE\",\n `/selection/documents/${i}/sourceRef`,\n \"A source may be selected only once\"\n );\n selected.add(d.sourceRef);\n if (\n !history.observation.sources.some((s) => `source:${s.id}` === d.sourceRef)\n )\n problem(\n \"DOCUMENT.SOURCE_REF\",\n `/selection/documents/${i}/sourceRef`,\n \"Selected source is absent from this history\"\n );\n }\n if (result.issues.length) {\n result.checks.semantic = \"failed\";\n return result;\n }\n const assets = new Map(\n [...(options.assets ?? [])].map(([ref, b]) => [ref, Uint8Array.from(b)])\n );\n const current = new Set(validation.currentClaimRefs);\n for (const [i, d] of chosen.documents.entries()) {\n const sourceIndex = history.observation.sources.findIndex(\n (s) => `source:${s.id}` === d.sourceRef\n ),\n source = history.observation.sources[sourceIndex]!,\n path = `/observation/sources/${sourceIndex}`;\n const row: ReleasedDocumentReport = {\n sourceRef: d.sourceRef,\n status: \"not_checked\",\n requirements: RELEASED_DOCUMENT_REQUIREMENTS.map((r) => ({\n ...r,\n status: \"not_checked\",\n reason: \"Prerequisites not checked yet\",\n blockedBy: [],\n issues: [],\n })),\n extractionRefs: [],\n asset: { status: \"not_checked\" },\n };\n result.documents.push(row);\n const requirement = (id: ReleasedDocumentRequirementId) =>\n row.requirements.find((r) => r.id === id)!;\n const pass = (id: ReleasedDocumentRequirementId, reason: string) => {\n const r = requirement(id);\n r.status = \"satisfied\";\n r.reason = reason;\n };\n const gap = (\n id: ReleasedDocumentRequirementId,\n status: ReleasedDocumentCompletionStatus,\n code: string,\n pointer: string,\n message: string,\n nextAction: string,\n stage: ReleasedDocumentIssue[\"stage\"] = \"profile\",\n severity: ReleasedDocumentIssue[\"severity\"] = \"error\"\n ) => {\n const r = requirement(id);\n r.status = status;\n r.reason = message;\n const issue = { code, pointer, message, nextAction, stage, severity };\n r.issues.push(issue);\n result.issues.push(issue);\n };\n if (source.kind !== \"document\" || source.access !== \"public\") {\n gap(\n \"document_source\",\n (source.kind !== \"document\" && source.kind !== \"unknown\") ||\n (source.access !== \"public\" && source.access !== \"unknown\")\n ? \"failed\"\n : \"missing\",\n \"DOCUMENT.SOURCE_KIND_ACCESS\",\n path,\n \"This selected profile requires a declared public document source.\",\n \"Check source kind and access against the source record. Retain restrictions and unknown states; do not relabel a source to pass.\"\n );\n for (const r of row.requirements)\n if (r.id !== \"document_source\") {\n r.blockedBy = [\"document_source\"];\n r.reason =\n \"Selected source does not yet establish the declared applicability of this profile.\";\n }\n row.status = \"failed\";\n continue;\n }\n pass(\n \"document_source\",\n \"The record declares a public document; this is not verification of release authenticity or rights.\"\n );\n if (d.release.state === \"known\")\n pass(\n \"release_citation\",\n \"A release attribution and reference are declared; their truth is not independently verified.\"\n );\n else\n gap(\n \"release_citation\",\n \"missing\",\n \"DOCUMENT.RELEASE_CITATION\",\n `/selection/documents/${i}/release`,\n \"Release attribution/reference is explicitly unknown.\",\n \"Obtain the release authority or publisher and its citation from the source record; preserve unknown status until available.\"\n );\n if (source.digest) {\n pass(\"content_digest\", \"SHA-256 is declared on the selected source.\");\n row.asset.expectedSha256 = source.digest.value;\n } else\n gap(\n \"content_digest\",\n \"missing\",\n \"DOCUMENT.DIGEST_REQUIRED\",\n path + \"/digest\",\n \"The selected document has no SHA-256 pin.\",\n \"Compute a digest from the exact preserved source bytes and record their provenance; do not invent a pin.\"\n );\n if (!source.digest) {\n const r = requirement(\"content_integrity\");\n r.blockedBy = [\"content_digest\"];\n r.reason = \"A declared source digest is required before byte comparison.\";\n } else {\n const bytes = assets.get(d.sourceRef);\n if (!bytes)\n gap(\n \"content_integrity\",\n \"missing\",\n \"DOCUMENT.BYTES_UNAVAILABLE\",\n path,\n \"Exact local document bytes are unavailable.\",\n \"Supply the original document bytes locally under the selected source reference. URLs are not fetched.\",\n \"external\",\n \"warning\"\n );\n else {\n row.asset.byteLength = bytes.length;\n if (!bytes.length) {\n row.asset.status = \"failed\";\n gap(\n \"content_integrity\",\n \"failed\",\n \"DOCUMENT.EMPTY_BYTES\",\n path,\n \"Empty bytes cannot supply this document.\",\n \"Obtain the nonempty source file; do not change the pin to accept an empty file.\",\n \"external\"\n );\n } else\n try {\n const hash = await globalThis.crypto.subtle.digest(\n \"SHA-256\",\n bytes\n );\n row.asset.actualSha256 = [...new Uint8Array(hash)]\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n if (row.asset.actualSha256 === source.digest.value) {\n row.asset.status = \"passed\";\n pass(\n \"content_integrity\",\n \"The exact supplied nonempty bytes match the declared digest.\"\n );\n } else {\n row.asset.status = \"failed\";\n gap(\n \"content_integrity\",\n \"failed\",\n \"DOCUMENT.DIGEST_MISMATCH\",\n path,\n \"Supplied bytes differ from the selected document pin.\",\n \"Resolve the source/version mismatch; do not replace the digest merely to pass.\",\n \"external\"\n );\n }\n } catch {\n gap(\n \"content_integrity\",\n \"not_checked\",\n \"DOCUMENT.HASH_UNAVAILABLE\",\n path,\n \"SHA-256 is unavailable.\",\n \"Rerun byte comparison in a runtime with SHA-256 support.\",\n \"external\",\n \"warning\"\n );\n }\n }\n }\n const extractions = [\n ...history.claims.flatMap((c, index) =>\n c.kind === \"source_assertion\" &&\n current.has(`claim:${c.id}`) &&\n c.provenance.sourceRef === d.sourceRef\n ? [\n {\n ref: `claim:${c.id}`,\n provenance: c.provenance,\n pointer: `/claims/${index}/provenance`,\n },\n ]\n : []\n ),\n ...history.observation.assertions.flatMap((a, index) =>\n a.provenance.sourceRef === d.sourceRef\n ? [\n {\n ref: `assertion:${a.id}`,\n provenance: a.provenance,\n pointer: `/observation/assertions/${index}/provenance`,\n },\n ]\n : []\n ),\n ];\n row.extractionRefs = extractions.map((e) => e.ref);\n if (!extractions.length) {\n for (const id of [\n \"extraction_traceability\",\n \"source_attribution\",\n ] as const) {\n const r = requirement(id);\n r.status = \"not_applicable\";\n r.reason =\n \"No current source statements or value assertions directly cite this selected document.\";\n }\n } else {\n pass(\n \"extraction_traceability\",\n \"Supplied direct extractions declare locators and extractor identities; passage content is unchecked.\"\n );\n pass(\n \"source_attribution\",\n \"Supplied direct extractions declare source-side attribution.\"\n );\n for (const e of extractions) {\n if (!e.provenance.locator)\n gap(\n \"extraction_traceability\",\n \"missing\",\n \"DOCUMENT.LOCATOR_REQUIRED\",\n e.pointer + \"/locator\",\n \"A direct extraction lacks a locator.\",\n \"Identify the actual source passage or value location; do not invent a page, pointer or time range.\"\n );\n if (!e.provenance.extractedBy)\n gap(\n \"extraction_traceability\",\n \"missing\",\n \"DOCUMENT.EXTRACTOR_REQUIRED\",\n e.pointer + \"/extractedBy\",\n \"A direct extraction lacks an extractor identity.\",\n \"Record who or what actually made the extraction; do not attribute it to an assumed reviewer.\"\n );\n if (!e.provenance.attributedTo)\n gap(\n \"source_attribution\",\n \"missing\",\n \"DOCUMENT.ATTRIBUTION_RECOMMENDED\",\n e.pointer + \"/attributedTo\",\n \"Source-side attribution is not supplied.\",\n \"Add source-side attribution when the document identifies it; preserve unknown authorship.\",\n \"recommendation\",\n \"warning\"\n );\n }\n }\n for (const [id, value, field] of [\n [\"source_title\", source.title, \"title\"],\n [\"source_uri\", source.uri, \"uri\"],\n ] as const) {\n if (value)\n pass(\n id,\n \"The source supplies this citation aid; correctness and availability are unchecked.\"\n );\n else\n gap(\n id,\n \"missing\",\n \"DOCUMENT.\" + field.toUpperCase() + \"_RECOMMENDED\",\n path + \"/\" + field,\n \"This non-blocking citation aid is absent.\",\n \"Add the \" +\n field +\n \" from the source record when available; do not fabricate metadata.\",\n \"recommendation\",\n \"warning\"\n );\n }\n const required = row.requirements.filter(\n (r) => r.importance === \"required\"\n );\n row.status = required.some((r) =>\n r.issues.some((i) => i.severity === \"error\")\n )\n ? \"failed\"\n : required.some(\n (r) => r.status !== \"satisfied\" && r.status !== \"not_applicable\"\n )\n ? \"not_checked\"\n : \"passed\";\n }\n result.checks.external = result.documents.some(\n (r) => r.asset.status === \"failed\"\n )\n ? \"failed\"\n : result.documents.every((r) => r.asset.status === \"passed\")\n ? \"passed\"\n : \"not_checked\";\n result.checks.profile = result.documents.some((r) => r.status === \"failed\")\n ? \"failed\"\n : result.documents.every((r) => r.status === \"passed\")\n ? \"passed\"\n : \"not_checked\";\n result.success = result.checks.profile === \"passed\";\n return result;\n}\n","import { z } from \"zod\";\nimport { parseExperimentalClaimHistory } from \"@disclosureos/records/experimental/v2\";\nconst text = z.string().min(1).regex(/\\S/),\n id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nexport const HISTORICAL_TESTIMONY_SELECTION_SCHEMA_ID =\n \"urn:disclosureos:experimental:historical-testimony-selection:0.1.0\";\nexport const HISTORICAL_TESTIMONY_PROFILE = Object.freeze({\n id: \"urn:disclosureos:experimental:profile:historical-testimony-provenance\",\n version: \"0.1.0\",\n scope: \"selected_testimony_sources_and_direct_extractions\",\n maturity: \"experimental\",\n} as const);\nexport const HistoricalTestimonySelectionSchema = z.strictObject({\n kind: z.literal(\"historical_testimony_selection\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n historyId: id,\n observationId: id,\n accounts: z\n .array(\n z.strictObject({\n sourceRef: z\n .string()\n .regex(/^source:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/),\n recording: z.discriminatedUnion(\"state\", [\n z.strictObject({\n state: z.literal(\"known\"),\n recordedBy: text,\n reference: text,\n }),\n z.strictObject({ state: z.literal(\"unknown\"), reason: text }),\n ]),\n })\n )\n .min(1),\n});\nexport type HistoricalTestimonySelection = z.infer<\n typeof HistoricalTestimonySelectionSchema\n>;\nexport function historicalTestimonySelectionJsonSchema(): Record<\n string,\n unknown\n> {\n return {\n ...z.toJSONSchema(HistoricalTestimonySelectionSchema, {\n target: \"draft-2020-12\",\n }),\n $id: HISTORICAL_TESTIMONY_SELECTION_SCHEMA_ID,\n };\n}\nexport const HISTORICAL_TESTIMONY_REQUIREMENTS = Object.freeze(\n (\n [\n {\n id: \"testimony_source\",\n importance: \"required\",\n label: \"Declared testimony source\",\n },\n {\n id: \"recording_citation\",\n importance: \"required\",\n label: \"Attributed recording citation\",\n },\n {\n id: \"content_digest\",\n importance: \"required\",\n label: \"Declared account SHA-256\",\n },\n {\n id: \"content_integrity\",\n importance: \"required\",\n label: \"Exact local account bytes\",\n },\n {\n id: \"extraction_traceability\",\n importance: \"required\",\n label:\n \"Locators, speaker attribution and extractor identities for supplied direct extractions\",\n },\n {\n id: \"source_title\",\n importance: \"recommended\",\n label: \"Human-readable source title\",\n },\n {\n id: \"source_uri\",\n importance: \"recommended\",\n label: \"Source retrieval reference\",\n },\n ] as const\n ).map((v) => Object.freeze(v))\n);\nexport type HistoricalTestimonyRequirementId =\n (typeof HISTORICAL_TESTIMONY_REQUIREMENTS)[number][\"id\"];\ntype Status = \"passed\" | \"failed\" | \"not_checked\";\nexport type HistoricalTestimonyCompletionStatus =\n | \"satisfied\"\n | \"missing\"\n | \"failed\"\n | \"not_checked\"\n | \"not_applicable\";\nexport interface HistoricalTestimonyIssue {\n code: string;\n stage: \"structural\" | \"semantic\" | \"profile\" | \"external\" | \"recommendation\";\n severity: \"error\" | \"warning\";\n pointer: string;\n message: string;\n nextAction: string;\n}\nexport interface HistoricalTestimonyRequirement {\n id: HistoricalTestimonyRequirementId;\n label: string;\n importance: \"required\" | \"recommended\";\n status: HistoricalTestimonyCompletionStatus;\n reason: string;\n blockedBy: HistoricalTestimonyRequirementId[];\n issues: HistoricalTestimonyIssue[];\n}\nexport interface HistoricalTestimonyReport {\n sourceRef: string;\n status: Status;\n requirements: HistoricalTestimonyRequirement[];\n extractionRefs: string[];\n asset: {\n status: Status;\n expectedSha256?: string;\n actualSha256?: string;\n byteLength?: number;\n };\n}\nexport interface HistoricalTestimonyResult {\n success: boolean;\n profile: typeof HISTORICAL_TESTIMONY_PROFILE;\n selection: HistoricalTestimonySelection | null;\n validation: ReturnType<typeof parseExperimentalClaimHistory>;\n checks: {\n structural: Status;\n semantic: Status;\n profile: Status;\n external: Status;\n };\n accounts: HistoricalTestimonyReport[];\n issues: HistoricalTestimonyIssue[];\n recordingAuthenticity: \"not_checked\";\n speakerIdentity: \"not_checked\";\n accountAccuracy: \"not_checked\";\n firsthandKnowledge: \"not_checked\";\n witnessIndependence: \"not_checked\";\n redistributionRights: \"not_checked\";\n locatorContents: \"not_checked\";\n extractionAccuracy: \"not_checked\";\n assessmentSupport: \"not_checked\";\n scientificEligibility: \"not_checked\";\n}\n/** Selected testimony provenance only. Assessments and scientific sufficiency are not evaluated. */\nexport async function evaluateHistoricalTestimony(\n historyInput: unknown,\n selectionInput: unknown,\n options: { assets?: ReadonlyMap<string, Uint8Array> } = {}\n): Promise<HistoricalTestimonyResult> {\n const validation = parseExperimentalClaimHistory(historyInput),\n selection = HistoricalTestimonySelectionSchema.safeParse(selectionInput);\n const result: HistoricalTestimonyResult = {\n success: false,\n profile: HISTORICAL_TESTIMONY_PROFILE,\n selection: selection.success ? selection.data : null,\n validation,\n checks: {\n structural: validation.checks.structural,\n semantic: validation.checks.semantic,\n profile: \"not_checked\",\n external: \"not_checked\",\n },\n accounts: [],\n issues: validation.issues.map((i) => ({\n ...i,\n nextAction:\n \"Resolve the reported history inconsistency against the original records.\",\n })),\n recordingAuthenticity: \"not_checked\",\n speakerIdentity: \"not_checked\",\n accountAccuracy: \"not_checked\",\n firsthandKnowledge: \"not_checked\",\n witnessIndependence: \"not_checked\",\n redistributionRights: \"not_checked\",\n locatorContents: \"not_checked\",\n extractionAccuracy: \"not_checked\",\n assessmentSupport: \"not_checked\",\n scientificEligibility: \"not_checked\",\n };\n if (!selection.success) {\n result.checks.structural = \"failed\";\n result.checks.semantic = \"not_checked\";\n for (const i of selection.error.issues)\n result.issues.push({\n code: \"TESTIMONY.SELECTION\",\n stage: \"structural\",\n severity: \"error\",\n pointer:\n \"/selection/\" +\n i.path\n .map((p) => String(p).replace(/~/g, \"~0\").replace(/\\//g, \"~1\"))\n .join(\"/\"),\n message: i.message,\n nextAction:\n \"Supply a nonempty explicit testimony selection using existing source references; do not invent recording metadata.\",\n });\n return result;\n }\n if (!validation.success) return result;\n const chosen = selection.data,\n history = validation.data;\n const problem = (code: string, pointer: string, message: string) =>\n result.issues.push({\n code,\n stage: \"semantic\",\n severity: \"error\",\n pointer,\n message,\n nextAction:\n \"Resolve the selection against the exact history and source inventory.\",\n });\n if (chosen.historyId !== history.id)\n problem(\n \"TESTIMONY.HISTORY_ID\",\n \"/selection/historyId\",\n \"Selected history ID differs from the supplied history\"\n );\n if (chosen.observationId !== history.observation.id)\n problem(\n \"TESTIMONY.OBSERVATION_ID\",\n \"/selection/observationId\",\n \"Selected observation ID differs from the supplied history\"\n );\n const selected = new Set<string>();\n for (const [i, d] of chosen.accounts.entries()) {\n if (selected.has(d.sourceRef))\n problem(\n \"TESTIMONY.DUPLICATE\",\n `/selection/accounts/${i}/sourceRef`,\n \"A source may be selected only once\"\n );\n selected.add(d.sourceRef);\n if (\n !history.observation.sources.some((s) => `source:${s.id}` === d.sourceRef)\n )\n problem(\n \"TESTIMONY.SOURCE_REF\",\n `/selection/accounts/${i}/sourceRef`,\n \"Selected source is absent from this history\"\n );\n }\n if (result.issues.length) {\n result.checks.semantic = \"failed\";\n return result;\n }\n const assets = new Map(\n [...(options.assets ?? [])].map(([ref, b]) => [ref, Uint8Array.from(b)])\n );\n const current = new Set(validation.currentClaimRefs);\n for (const [i, d] of chosen.accounts.entries()) {\n const sourceIndex = history.observation.sources.findIndex(\n (s) => `source:${s.id}` === d.sourceRef\n ),\n source = history.observation.sources[sourceIndex]!,\n path = `/observation/sources/${sourceIndex}`;\n const row: HistoricalTestimonyReport = {\n sourceRef: d.sourceRef,\n status: \"not_checked\",\n requirements: HISTORICAL_TESTIMONY_REQUIREMENTS.map((r) => ({\n ...r,\n status: \"not_checked\",\n reason: \"Prerequisites not checked yet\",\n blockedBy: [],\n issues: [],\n })),\n extractionRefs: [],\n asset: { status: \"not_checked\" },\n };\n result.accounts.push(row);\n const requirement = (id: HistoricalTestimonyRequirementId) =>\n row.requirements.find((r) => r.id === id)!;\n const pass = (id: HistoricalTestimonyRequirementId, reason: string) => {\n const r = requirement(id);\n r.status = \"satisfied\";\n r.reason = reason;\n };\n const gap = (\n id: HistoricalTestimonyRequirementId,\n status: HistoricalTestimonyCompletionStatus,\n code: string,\n pointer: string,\n message: string,\n nextAction: string,\n stage: HistoricalTestimonyIssue[\"stage\"] = \"profile\",\n severity: HistoricalTestimonyIssue[\"severity\"] = \"error\"\n ) => {\n const r = requirement(id);\n r.status = status;\n r.reason = message;\n const issue = { code, pointer, message, nextAction, stage, severity };\n r.issues.push(issue);\n result.issues.push(issue);\n };\n if (source.kind !== \"testimony\") {\n gap(\n \"testimony_source\",\n source.kind !== \"unknown\" ? \"failed\" : \"missing\",\n \"TESTIMONY.SOURCE_KIND\",\n path,\n \"This selected profile requires a declared testimony source.\",\n \"Check source kind against the account record. Retain access restrictions and unknown states; do not relabel a source to pass.\"\n );\n for (const r of row.requirements)\n if (r.id !== \"testimony_source\") {\n r.blockedBy = [\"testimony_source\"];\n r.reason =\n \"Selected source does not yet establish the declared applicability of this profile.\";\n }\n row.status = \"failed\";\n continue;\n }\n pass(\n \"testimony_source\",\n \"The record declares testimony. Access is preserved; this is not verification of identity, authenticity or rights.\"\n );\n if (d.recording.state === \"known\")\n pass(\n \"recording_citation\",\n \"A recording attribution and reference are declared; their truth is not independently verified.\"\n );\n else\n gap(\n \"recording_citation\",\n \"missing\",\n \"TESTIMONY.RECORDING_CITATION\",\n `/selection/accounts/${i}/recording`,\n \"Recording attribution/reference is explicitly unknown.\",\n \"Obtain the person or organization responsible for preserving the account and its citation from the source record; preserve unknown status until available.\"\n );\n if (source.digest) {\n pass(\"content_digest\", \"SHA-256 is declared on the selected source.\");\n row.asset.expectedSha256 = source.digest.value;\n } else\n gap(\n \"content_digest\",\n \"missing\",\n \"TESTIMONY.DIGEST_REQUIRED\",\n path + \"/digest\",\n \"The selected account has no SHA-256 pin.\",\n \"Compute a digest from the exact preserved source bytes and record their provenance; do not invent a pin.\"\n );\n if (!source.digest) {\n const r = requirement(\"content_integrity\");\n r.blockedBy = [\"content_digest\"];\n r.reason = \"A declared source digest is required before byte comparison.\";\n } else {\n const bytes = assets.get(d.sourceRef);\n if (!bytes)\n gap(\n \"content_integrity\",\n \"missing\",\n \"TESTIMONY.BYTES_UNAVAILABLE\",\n path,\n \"Exact local account bytes are unavailable.\",\n \"Supply the original account bytes locally under the selected source reference. URLs are not fetched.\",\n \"external\",\n \"warning\"\n );\n else {\n row.asset.byteLength = bytes.length;\n if (!bytes.length) {\n row.asset.status = \"failed\";\n gap(\n \"content_integrity\",\n \"failed\",\n \"TESTIMONY.EMPTY_BYTES\",\n path,\n \"Empty bytes cannot supply this account.\",\n \"Obtain the nonempty account file; do not change the pin to accept an empty file.\",\n \"external\"\n );\n } else\n try {\n const hash = await globalThis.crypto.subtle.digest(\n \"SHA-256\",\n bytes\n );\n row.asset.actualSha256 = [...new Uint8Array(hash)]\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n if (row.asset.actualSha256 === source.digest.value) {\n row.asset.status = \"passed\";\n pass(\n \"content_integrity\",\n \"The exact supplied nonempty bytes match the declared digest.\"\n );\n } else {\n row.asset.status = \"failed\";\n gap(\n \"content_integrity\",\n \"failed\",\n \"TESTIMONY.DIGEST_MISMATCH\",\n path,\n \"Supplied bytes differ from the selected account pin.\",\n \"Resolve the source/version mismatch; do not replace the digest merely to pass.\",\n \"external\"\n );\n }\n } catch {\n gap(\n \"content_integrity\",\n \"not_checked\",\n \"TESTIMONY.HASH_UNAVAILABLE\",\n path,\n \"SHA-256 is unavailable.\",\n \"Rerun byte comparison in a runtime with SHA-256 support.\",\n \"external\",\n \"warning\"\n );\n }\n }\n }\n const extractions = [\n ...history.claims.flatMap((c, index) =>\n c.kind === \"source_assertion\" &&\n current.has(`claim:${c.id}`) &&\n c.provenance.sourceRef === d.sourceRef\n ? [\n {\n ref: `claim:${c.id}`,\n provenance: c.provenance,\n pointer: `/claims/${index}/provenance`,\n },\n ]\n : []\n ),\n ...history.observation.assertions.flatMap((a, index) =>\n a.provenance.sourceRef === d.sourceRef\n ? [\n {\n ref: `assertion:${a.id}`,\n provenance: a.provenance,\n pointer: `/observation/assertions/${index}/provenance`,\n },\n ]\n : []\n ),\n ];\n row.extractionRefs = extractions.map((e) => e.ref);\n if (!extractions.length) {\n for (const id of [\"extraction_traceability\"] as const) {\n const r = requirement(id);\n r.status = \"not_applicable\";\n r.reason =\n \"No current source statements or value assertions directly cite this selected account.\";\n }\n } else {\n pass(\n \"extraction_traceability\",\n \"Supplied direct extractions declare locators, speaker attribution and extractor identities; passage content is unchecked.\"\n );\n for (const e of extractions) {\n if (!e.provenance.locator)\n gap(\n \"extraction_traceability\",\n \"missing\",\n \"TESTIMONY.LOCATOR_REQUIRED\",\n e.pointer + \"/locator\",\n \"A direct extraction lacks a locator.\",\n \"Identify the actual source passage or value location; do not invent a page, pointer or time range.\"\n );\n if (!e.provenance.extractedBy)\n gap(\n \"extraction_traceability\",\n \"missing\",\n \"TESTIMONY.EXTRACTOR_REQUIRED\",\n e.pointer + \"/extractedBy\",\n \"A direct extraction lacks an extractor identity.\",\n \"Record who or what actually made the extraction; do not attribute it to an assumed reviewer.\"\n );\n if (!e.provenance.attributedTo)\n gap(\n \"extraction_traceability\",\n \"missing\",\n \"TESTIMONY.SPEAKER_REQUIRED\",\n e.pointer + \"/attributedTo\",\n \"A direct extraction lacks speaker attribution.\",\n \"Record the speaker label actually used in the account, including a documented pseudonym when appropriate; do not infer identity from the recorder.\"\n );\n }\n }\n for (const [id, value, field] of [\n [\"source_title\", source.title, \"title\"],\n [\"source_uri\", source.uri, \"uri\"],\n ] as const) {\n if (value)\n pass(\n id,\n \"The source supplies this citation aid; correctness and availability are unchecked.\"\n );\n else\n gap(\n id,\n \"missing\",\n \"TESTIMONY.\" + field.toUpperCase() + \"_RECOMMENDED\",\n path + \"/\" + field,\n \"This non-blocking citation aid is absent.\",\n \"Add the \" +\n field +\n \" from the source record when available; do not fabricate metadata.\",\n \"recommendation\",\n \"warning\"\n );\n }\n const required = row.requirements.filter(\n (r) => r.importance === \"required\"\n );\n row.status = required.some((r) =>\n r.issues.some((i) => i.severity === \"error\")\n )\n ? \"failed\"\n : required.some(\n (r) => r.status !== \"satisfied\" && r.status !== \"not_applicable\"\n )\n ? \"not_checked\"\n : \"passed\";\n }\n result.checks.external = result.accounts.some(\n (r) => r.asset.status === \"failed\"\n )\n ? \"failed\"\n : result.accounts.every((r) => r.asset.status === \"passed\")\n ? \"passed\"\n : \"not_checked\";\n result.checks.profile = result.accounts.some((r) => r.status === \"failed\")\n ? \"failed\"\n : result.accounts.every((r) => r.status === \"passed\")\n ? \"passed\"\n : \"not_checked\";\n result.success = result.checks.profile === \"passed\";\n return result;\n}\n","import { z } from \"zod\";\nimport { parseExperimentalClaimHistory } from \"@disclosureos/records/experimental/v2\";\nconst text = z.string().min(1).regex(/\\S/);\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst sourceRef = z\n .string()\n .regex(/^source:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst unknown = z.strictObject({ state: z.literal(\"unknown\"), reason: text });\nexport const PHYSICAL_SAMPLE_SELECTION_SCHEMA_ID =\n \"urn:disclosureos:experimental:physical-sample-selection:0.1.0\";\nexport const PHYSICAL_SAMPLE_PROFILE = Object.freeze({\n id: \"urn:disclosureos:experimental:profile:physical-sample-provenance\",\n version: \"0.1.0\",\n scope: \"selected_collected_specimen_custody_declarations\",\n maturity: \"experimental\",\n} as const);\nexport const PhysicalSampleSelectionSchema = z.strictObject({\n kind: z.literal(\"physical_sample_selection\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n historyId: id,\n observationId: id,\n samples: z\n .array(\n z.strictObject({\n id,\n lineage: z.enum([\n \"collected_specimen\",\n \"derived_sample\",\n \"mixture\",\n \"unknown\",\n ]),\n label: z.discriminatedUnion(\"state\", [\n z.strictObject({ state: z.literal(\"known\"), value: text }),\n unknown,\n ]),\n collection: z.discriminatedUnion(\"state\", [\n z.strictObject({\n state: z.literal(\"known\"),\n collectedBy: text,\n recordRef: sourceRef,\n }),\n unknown,\n ]),\n custody: z.discriminatedUnion(\"state\", [\n z.strictObject({\n state: z.literal(\"documented\"),\n transfers: z.array(\n z.strictObject({ id, from: text, to: text, recordRef: sourceRef })\n ),\n }),\n unknown,\n ]),\n currentCustodian: z.discriminatedUnion(\"state\", [\n z.strictObject({\n state: z.literal(\"known\"),\n holder: text,\n recordRef: sourceRef,\n }),\n unknown,\n ]),\n catalogIdentifier: text.optional(),\n })\n )\n .min(1),\n});\nexport type PhysicalSampleSelection = z.infer<\n typeof PhysicalSampleSelectionSchema\n>;\nexport function physicalSampleSelectionJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(PhysicalSampleSelectionSchema, {\n target: \"draft-2020-12\",\n }),\n $id: PHYSICAL_SAMPLE_SELECTION_SCHEMA_ID,\n };\n}\nexport const PHYSICAL_SAMPLE_REQUIREMENTS = Object.freeze(\n (\n [\n {\n id: \"sample_scope\",\n importance: \"required\",\n label: \"Declared collected specimen\",\n },\n {\n id: \"sample_identity\",\n importance: \"required\",\n label: \"Recorded specimen label\",\n },\n {\n id: \"collection_record\",\n importance: \"required\",\n label: \"Attributed collection record\",\n },\n {\n id: \"custody_record\",\n importance: \"required\",\n label: \"Declared handoff continuity\",\n },\n {\n id: \"current_custodian\",\n importance: \"required\",\n label: \"Cited current custodian\",\n },\n {\n id: \"record_integrity\",\n importance: \"required\",\n label: \"Exact cited record bytes\",\n },\n {\n id: \"catalog_identifier\",\n importance: \"recommended\",\n label: \"External catalog identifier\",\n },\n ] as const\n ).map((r) => Object.freeze(r))\n);\nexport type PhysicalSampleRequirementId =\n (typeof PHYSICAL_SAMPLE_REQUIREMENTS)[number][\"id\"];\ntype Status = \"passed\" | \"failed\" | \"not_checked\";\nexport interface PhysicalSampleIssue {\n code: string;\n stage: \"structural\" | \"semantic\" | \"profile\" | \"external\" | \"recommendation\";\n severity: \"error\" | \"warning\";\n pointer: string;\n message: string;\n nextAction: string;\n}\nexport interface PhysicalSampleRequirement {\n id: PhysicalSampleRequirementId;\n importance: \"required\" | \"recommended\";\n label: string;\n status: \"satisfied\" | \"missing\" | \"failed\" | \"not_checked\";\n reason: string;\n blockedBy: PhysicalSampleRequirementId[];\n issues: PhysicalSampleIssue[];\n}\nexport interface PhysicalSampleRecordCheck {\n sourceRef: string;\n status: Status;\n expectedSha256?: string;\n actualSha256?: string;\n byteLength?: number;\n}\nexport interface PhysicalSampleReport {\n sampleId: string;\n status: Status;\n requirements: PhysicalSampleRequirement[];\n records: PhysicalSampleRecordCheck[];\n}\nexport interface PhysicalSampleResult {\n success: boolean;\n profile: typeof PHYSICAL_SAMPLE_PROFILE;\n selection: PhysicalSampleSelection | null;\n validation: ReturnType<typeof parseExperimentalClaimHistory>;\n checks: {\n structural: Status;\n semantic: Status;\n profile: Status;\n external: Status;\n };\n samples: PhysicalSampleReport[];\n issues: PhysicalSampleIssue[];\n specimenIdentity: \"not_checked\";\n collectionAuthenticity: \"not_checked\";\n custodyAuthenticity: \"not_checked\";\n custodyCompleteness: \"not_checked\";\n custodyChronology: \"not_checked\";\n recordContents: \"not_checked\";\n contaminationControl: \"not_checked\";\n composition: \"not_checked\";\n origin: \"not_checked\";\n redistributionRights: \"not_checked\";\n assessmentSupport: \"not_checked\";\n scientificEligibility: \"not_checked\";\n}\nfunction references(\n sample: PhysicalSampleSelection[\"samples\"][number]\n): string[] {\n return [\n ...new Set([\n ...(sample.collection.state === \"known\"\n ? [sample.collection.recordRef]\n : []),\n ...(sample.custody.state === \"documented\"\n ? sample.custody.transfers.map((t) => t.recordRef)\n : []),\n ...(sample.currentCustodian.state === \"known\"\n ? [sample.currentCustodian.recordRef]\n : []),\n ]),\n ];\n}\n/** Documentary declarations only; never establishes physical identity, custody truth or origin. */\nexport async function evaluatePhysicalSamples(\n historyInput: unknown,\n selectionInput: unknown,\n options: { assets?: ReadonlyMap<string, Uint8Array> } = {}\n): Promise<PhysicalSampleResult> {\n const validation = parseExperimentalClaimHistory(historyInput),\n parsed = PhysicalSampleSelectionSchema.safeParse(selectionInput);\n const result: PhysicalSampleResult = {\n success: false,\n profile: PHYSICAL_SAMPLE_PROFILE,\n selection: parsed.success ? parsed.data : null,\n validation,\n checks: {\n structural: validation.checks.structural,\n semantic: validation.checks.semantic,\n profile: \"not_checked\",\n external: \"not_checked\",\n },\n samples: [],\n issues: validation.issues.map((i) => ({\n ...i,\n nextAction:\n \"Resolve the reported history inconsistency against the original records.\",\n })),\n specimenIdentity: \"not_checked\",\n collectionAuthenticity: \"not_checked\",\n custodyAuthenticity: \"not_checked\",\n custodyCompleteness: \"not_checked\",\n custodyChronology: \"not_checked\",\n recordContents: \"not_checked\",\n contaminationControl: \"not_checked\",\n composition: \"not_checked\",\n origin: \"not_checked\",\n redistributionRights: \"not_checked\",\n assessmentSupport: \"not_checked\",\n scientificEligibility: \"not_checked\",\n };\n if (!parsed.success) {\n result.checks.structural = \"failed\";\n result.checks.semantic = \"not_checked\";\n for (const i of parsed.error.issues)\n result.issues.push({\n code: \"SAMPLE.SELECTION\",\n stage: \"structural\",\n severity: \"error\",\n pointer:\n \"/selection/\" +\n i.path\n .map((p) => String(p).replace(/~/g, \"~0\").replace(/\\//g, \"~1\"))\n .join(\"/\"),\n message: i.message,\n nextAction:\n \"Supply an explicit sample selection and retain unknown declarations with reasons.\",\n });\n return result;\n }\n if (!validation.success) return result;\n const selection = parsed.data,\n history = validation.data;\n const problem = (code: string, pointer: string, message: string) =>\n result.issues.push({\n code,\n stage: \"semantic\",\n severity: \"error\",\n pointer,\n message,\n nextAction:\n \"Resolve the selection against the exact history and source inventory; do not invent references.\",\n });\n if (selection.historyId !== history.id)\n problem(\n \"SAMPLE.HISTORY_ID\",\n \"/selection/historyId\",\n \"Selected history ID differs from supplied history.\"\n );\n if (selection.observationId !== history.observation.id)\n problem(\n \"SAMPLE.OBSERVATION_ID\",\n \"/selection/observationId\",\n \"Selected observation ID differs from supplied history.\"\n );\n const sources = new Map(\n history.observation.sources.map((s) => [`source:${s.id}`, s])\n );\n const sampleIds = new Set<string>();\n for (const [i, s] of selection.samples.entries()) {\n const path = `/selection/samples/${i}`;\n if (sampleIds.has(s.id))\n problem(\n \"SAMPLE.DUPLICATE\",\n path + \"/id\",\n \"Sample ID is selected more than once.\"\n );\n sampleIds.add(s.id);\n for (const ref of references(s))\n if (!sources.has(ref))\n problem(\n \"SAMPLE.SOURCE_REF\",\n path,\n `Cited record ${ref} is absent from this history.`\n );\n if (s.custody.state === \"documented\") {\n const ids = new Set<string>();\n for (const [j, t] of s.custody.transfers.entries()) {\n if (ids.has(t.id))\n problem(\n \"SAMPLE.TRANSFER_ID\",\n path + `/custody/transfers/${j}/id`,\n \"Transfer ID is repeated within this sample.\"\n );\n ids.add(t.id);\n }\n }\n }\n if (result.issues.length) {\n result.checks.semantic = \"failed\";\n return result;\n }\n const assets = new Map(\n [...(options.assets ?? [])].map(([ref, b]) => [ref, Uint8Array.from(b)])\n );\n for (const [i, s] of selection.samples.entries()) {\n const path = `/selection/samples/${i}`;\n const row: PhysicalSampleReport = {\n sampleId: s.id,\n status: \"not_checked\",\n requirements: PHYSICAL_SAMPLE_REQUIREMENTS.map((r) => ({\n ...r,\n status: \"not_checked\",\n reason: \"Prerequisites have not been checked.\",\n blockedBy: [],\n issues: [],\n })),\n records: [],\n };\n result.samples.push(row);\n const requirement = (id: PhysicalSampleRequirementId) =>\n row.requirements.find((r) => r.id === id)!;\n const pass = (id: PhysicalSampleRequirementId, reason: string) => {\n const r = requirement(id);\n r.status = \"satisfied\";\n r.reason = reason;\n };\n const gap = (\n id: PhysicalSampleRequirementId,\n status: PhysicalSampleRequirement[\"status\"],\n code: string,\n pointer: string,\n message: string,\n nextAction: string,\n stage: PhysicalSampleIssue[\"stage\"] = \"profile\",\n severity: PhysicalSampleIssue[\"severity\"] = \"error\"\n ) => {\n const r = requirement(id);\n r.status = status;\n r.reason = message;\n const issue = { code, pointer, message, nextAction, stage, severity };\n r.issues.push(issue);\n result.issues.push(issue);\n };\n if (s.lineage !== \"collected_specimen\") {\n gap(\n \"sample_scope\",\n s.lineage === \"unknown\" ? \"missing\" : \"failed\",\n \"SAMPLE.SCOPE\",\n path + \"/lineage\",\n \"This profile covers declared collected specimens only.\",\n \"Retain unknown, derived-sample or mixture lineage. A derivation/mixing profile is needed; do not relabel material to pass.\"\n );\n for (const r of row.requirements)\n if (r.id !== \"sample_scope\") {\n r.blockedBy = [\"sample_scope\"];\n r.reason = \"The selected lineage is outside this profile or unknown.\";\n }\n row.status = \"failed\";\n continue;\n }\n pass(\n \"sample_scope\",\n \"A collected specimen is declared; its physical lineage is not authenticated.\"\n );\n if (s.label.state === \"known\")\n pass(\n \"sample_identity\",\n \"A specimen label is declared; no physical object or global uniqueness is verified.\"\n );\n else\n gap(\n \"sample_identity\",\n \"missing\",\n \"SAMPLE.LABEL\",\n path + \"/label\",\n \"The specimen label is unknown.\",\n \"Obtain the recorded specimen label or preserve its unknown state. Do not invent a physical identity.\"\n );\n if (s.collection.state === \"known\")\n pass(\n \"collection_record\",\n \"A collector and source record are declared; collection contents and circumstances are unchecked.\"\n );\n else\n gap(\n \"collection_record\",\n \"missing\",\n \"SAMPLE.COLLECTION\",\n path + \"/collection\",\n \"Collection attribution and its record are unknown.\",\n \"Obtain collection documentation and attribution from the actual records; retain gaps until available.\"\n );\n if (s.currentCustodian.state === \"known\")\n pass(\n \"current_custodian\",\n \"A current custodian and source record are declared; actual possession is unchecked.\"\n );\n else\n gap(\n \"current_custodian\",\n \"missing\",\n \"SAMPLE.CURRENT_CUSTODIAN\",\n path + \"/currentCustodian\",\n \"Current custodian and its supporting record are unknown.\",\n \"Obtain the current custody declaration with its source record; do not infer possession from an old handoff.\"\n );\n if (s.custody.state === \"unknown\")\n gap(\n \"custody_record\",\n \"missing\",\n \"SAMPLE.CUSTODY\",\n path + \"/custody\",\n \"The handoff sequence is explicitly unknown.\",\n \"Obtain the recorded handoff sequence or retain unknown custody; an empty list must not stand for missing history.\"\n );\n else {\n // Local conflicts can be checked even when the collection or endpoint is unknown.\n let previous =\n s.collection.state === \"known\" ? s.collection.collectedBy : undefined;\n for (const [j, t] of s.custody.transfers.entries()) {\n if (t.from === t.to)\n gap(\n \"custody_record\",\n \"failed\",\n \"SAMPLE.SELF_TRANSFER\",\n path + `/custody/transfers/${j}`,\n \"A declared handoff has the same sender and recipient.\",\n \"Resolve the handoff against the source record; an inventory check is not a custody transfer.\"\n );\n if (previous !== undefined && t.from !== previous)\n gap(\n \"custody_record\",\n \"failed\",\n \"SAMPLE.CUSTODY_BREAK\",\n path + `/custody/transfers/${j}/from`,\n \"The handoff sender differs from the preceding declared holder.\",\n \"Reconcile the actual holder identifiers or document missing transfers. Do not fabricate a bridging handoff.\"\n );\n previous = t.to;\n }\n if (\n previous !== undefined &&\n s.currentCustodian.state === \"known\" &&\n previous !== s.currentCustodian.holder\n )\n gap(\n \"custody_record\",\n \"failed\",\n \"SAMPLE.CUSTODY_ENDPOINT\",\n path + \"/currentCustodian/holder\",\n \"The declared current custodian differs from the final holder in the supplied sequence.\",\n \"Reconcile the endpoint against the source records; preserve missing custody history.\"\n );\n const r = requirement(\"custody_record\");\n if (!r.issues.length) {\n if (\n s.collection.state !== \"known\" ||\n s.currentCustodian.state !== \"known\"\n ) {\n r.blockedBy = [\n ...(s.collection.state !== \"known\"\n ? [\"collection_record\" as const]\n : []),\n ...(s.currentCustodian.state !== \"known\"\n ? [\"current_custodian\" as const]\n : []),\n ];\n r.reason =\n \"Collection and current-custodian declarations are needed to check both sequence endpoints.\";\n } else\n pass(\n \"custody_record\",\n s.custody.transfers.length\n ? \"Supplied handoff identifiers connect from collector to declared current custodian; completeness and chronology are unchecked.\"\n : \"An explicit zero-handoff declaration retains the collector as current custodian; actual custody is unchecked.\"\n );\n }\n }\n const refs = references(s);\n if (!refs.length) {\n const r = requirement(\"record_integrity\");\n r.blockedBy = [\"collection_record\", \"current_custodian\"];\n r.reason = \"No collection, handoff or current-custody records are cited.\";\n } else {\n for (const ref of refs) {\n const source = sources.get(ref)!,\n check: PhysicalSampleRecordCheck = {\n sourceRef: ref,\n status: \"not_checked\",\n };\n row.records.push(check);\n const pointer = `/observation/sources/${history.observation.sources.indexOf(\n source\n )}`;\n if (!source.digest) {\n gap(\n \"record_integrity\",\n \"missing\",\n \"SAMPLE.DIGEST_REQUIRED\",\n pointer + \"/digest\",\n \"A cited record lacks a SHA-256 pin.\",\n \"Pin the exact preserved record bytes with their provenance; never hash the sample label as a substitute.\"\n );\n continue;\n }\n check.expectedSha256 = source.digest.value;\n const bytes = assets.get(ref);\n if (!bytes) {\n gap(\n \"record_integrity\",\n \"missing\",\n \"SAMPLE.BYTES_UNAVAILABLE\",\n pointer,\n \"Exact cited record bytes are unavailable.\",\n \"Supply the cited record locally under its source reference, respecting access restrictions. URLs are not fetched.\",\n \"external\",\n \"warning\"\n );\n continue;\n }\n check.byteLength = bytes.length;\n if (!bytes.length) {\n check.status = \"failed\";\n gap(\n \"record_integrity\",\n \"failed\",\n \"SAMPLE.EMPTY_BYTES\",\n pointer,\n \"An empty file cannot supply this record.\",\n \"Obtain the nonempty original record; do not change its pin to accept empty bytes.\",\n \"external\"\n );\n continue;\n }\n try {\n const hash = await globalThis.crypto.subtle.digest(\"SHA-256\", bytes);\n check.actualSha256 = [...new Uint8Array(hash)]\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n if (check.actualSha256 === source.digest.value)\n check.status = \"passed\";\n else {\n check.status = \"failed\";\n gap(\n \"record_integrity\",\n \"failed\",\n \"SAMPLE.DIGEST_MISMATCH\",\n pointer,\n \"Supplied record bytes differ from the declared digest.\",\n \"Resolve the source/version mismatch against preserved records; do not replace the pin merely to pass.\",\n \"external\"\n );\n }\n } catch {\n gap(\n \"record_integrity\",\n \"not_checked\",\n \"SAMPLE.HASH_UNAVAILABLE\",\n pointer,\n \"SHA-256 is unavailable.\",\n \"Rerun record-byte checks in a runtime with SHA-256 support.\",\n \"external\",\n \"warning\"\n );\n }\n }\n const r = requirement(\"record_integrity\");\n // Aggregate every cited record: a later warning must never hide an earlier failure.\n if (row.records.every((v) => v.status === \"passed\"))\n pass(\n \"record_integrity\",\n \"All cited record bytes match their declared pins; the specimen and record contents remain unchecked.\"\n );\n else if (r.issues.some((v) => v.severity === \"error\"))\n r.status =\n r.issues.some((v) => v.code === \"SAMPLE.DIGEST_REQUIRED\") &&\n !row.records.some((v) => v.status === \"failed\")\n ? \"missing\"\n : \"failed\";\n else\n r.status = r.issues.some((v) => v.code === \"SAMPLE.BYTES_UNAVAILABLE\")\n ? \"missing\"\n : \"not_checked\";\n if (r.status !== \"satisfied\")\n r.reason = r.issues.some((i) => i.severity === \"error\")\n ? \"At least one cited record lacks its pin or failed byte comparison; inspect all record diagnostics.\"\n : \"At least one cited record could not be checked; inspect all record diagnostics.\";\n }\n if (s.catalogIdentifier)\n pass(\n \"catalog_identifier\",\n \"An external catalog identifier is declared; registration, resolution and uniqueness are unchecked.\"\n );\n else\n gap(\n \"catalog_identifier\",\n \"missing\",\n \"SAMPLE.CATALOG_RECOMMENDED\",\n path + \"/catalogIdentifier\",\n \"An external catalog identifier is not supplied.\",\n \"Retain an existing catalog or persistent sample identifier when available. Do not invent registration.\",\n \"recommendation\",\n \"warning\"\n );\n const required = row.requirements.filter(\n (r) => r.importance === \"required\"\n );\n row.status = required.some((r) =>\n r.issues.some((i) => i.severity === \"error\")\n )\n ? \"failed\"\n : required.every((r) => r.status === \"satisfied\")\n ? \"passed\"\n : \"not_checked\";\n }\n const records = result.samples.flatMap((s) => s.records);\n result.checks.external = records.some((r) => r.status === \"failed\")\n ? \"failed\"\n : result.samples.every(\n (s) =>\n s.records.length > 0 && s.records.every((r) => r.status === \"passed\")\n )\n ? \"passed\"\n : \"not_checked\";\n result.checks.profile = result.samples.some((s) => s.status === \"failed\")\n ? \"failed\"\n : result.samples.every((s) => s.status === \"passed\")\n ? \"passed\"\n : \"not_checked\";\n result.success = result.checks.profile === \"passed\";\n return result;\n}\n","import { z } from \"zod\";\nimport {\n evaluateReleasedDocuments,\n RELEASED_DOCUMENT_PROFILE,\n} from \"./released-documents\";\nimport type { ReleasedDocumentResult } from \"./released-documents\";\nimport {\n evaluateHistoricalTestimony,\n HISTORICAL_TESTIMONY_PROFILE,\n} from \"./historical-testimony\";\nimport type { HistoricalTestimonyResult } from \"./historical-testimony\";\nimport {\n evaluatePhysicalSamples,\n PHYSICAL_SAMPLE_PROFILE,\n} from \"./physical-samples\";\nimport type { PhysicalSampleResult } from \"./physical-samples\";\nconst text = z.string().min(1).regex(/\\S/);\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst pin = z.strictObject({\n sha256: z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/),\n byteLength: z.number().int().min(1).max(Number.MAX_SAFE_INTEGER),\n});\nconst dependency = z.strictObject({\n ref: id,\n id: text,\n version: text,\n ...pin.shape,\n});\nexport const PROFILE_EVALUATION_SCHEMA_ID =\n \"urn:disclosureos:experimental:profile-evaluation:0.1.0\";\nexport const PROFILE_EVALUATION_POLICY = Object.freeze({\n id: \"urn:disclosureos:experimental:policy:profile-evaluation\",\n version: \"0.1.0\",\n scope: \"pinned_inputs_and_computed_provenance_profile\",\n} as const);\nexport const ProfileEvaluationSchema = z.strictObject({\n kind: z.literal(\"profile_evaluation\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n workflow: z.enum([\n \"released-documents:0.1.0\",\n \"historical-testimony:0.1.0\",\n \"physical-samples:0.1.0\",\n ]),\n history: pin,\n selection: pin,\n assets: z.array(\n z.strictObject({\n ref: z.string().regex(/^source:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/),\n fileRef: id,\n ...pin.shape,\n })\n ),\n dependencies: z.strictObject({\n vocabularies: z.array(dependency).min(1),\n implementation: dependency,\n environment: dependency,\n }),\n});\nexport type ProfileEvaluation = z.infer<typeof ProfileEvaluationSchema>;\nexport function profileEvaluationJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(ProfileEvaluationSchema, {\n target: \"draft-2020-12\",\n }),\n $id: PROFILE_EVALUATION_SCHEMA_ID,\n };\n}\nexport interface ProfileEvaluationOptions {\n historyBytes?: Uint8Array;\n selectionBytes?: Uint8Array;\n assetFiles?: ReadonlyMap<string, Uint8Array>;\n dependencyFiles?: ReadonlyMap<string, Uint8Array>;\n}\ntype Status = \"passed\" | \"failed\" | \"not_checked\";\nexport interface ProfileEvaluationReceipt {\n format: \"disclosureos-profile-evaluation-receipt:0.1.0\";\n serialization: \"sorted-json-utf8:0.1.0\";\n request: { sha256: string; byteLength: number };\n output: { sha256: string; byteLength: number };\n requestJson: string;\n outputJson: string;\n}\nexport interface ProfileEvaluationResult {\n success: boolean;\n policy: typeof PROFILE_EVALUATION_POLICY;\n checks: {\n structural: Status;\n semantic: Status;\n external: Status;\n profile: Status;\n receipt: Status;\n };\n issues: { code: string; pointer: string; message: string }[];\n files: {\n ref: string;\n status: Status;\n expectedSha256: string;\n expectedByteLength: number;\n actualSha256?: string;\n actualByteLength?: number;\n }[];\n profile:\n | ReleasedDocumentResult\n | HistoricalTestimonyResult\n | PhysicalSampleResult\n | null;\n receipt: ProfileEvaluationReceipt | null;\n unselectedArtifactIntegrity: \"not_checked\";\n vocabularyMembership: \"not_checked\";\n scientificEligibility: \"not_checked\";\n statisticalIndependence: \"not_checked\";\n implementationExecution: \"not_attested\";\n environmentExecution: \"not_attested\";\n}\nfunction serialize(value: unknown): string {\n if (Array.isArray(value))\n return (\n \"[\" +\n value.map((v) => serialize(v === undefined ? null : v)).join(\",\") +\n \"]\"\n );\n if (value && typeof value === \"object\") {\n const v = value as Record<string, unknown>;\n return (\n \"{\" +\n Object.keys(v)\n .filter((k) => v[k] !== undefined)\n .sort()\n .map((k) => JSON.stringify(k) + \":\" + serialize(v[k]))\n .join(\",\") +\n \"}\"\n );\n }\n return JSON.stringify(value);\n}\nasync function digest(bytes: Uint8Array): Promise<string> {\n return [\n ...new Uint8Array(\n await globalThis.crypto.subtle.digest(\"SHA-256\", Uint8Array.from(bytes))\n ),\n ]\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n/** Runs only a fixed built-in provenance profile over pinned local inputs. Supplied dependencies are never executed. */\nexport async function evaluateProfileEvaluation(\n input: unknown,\n options: ProfileEvaluationOptions = {}\n): Promise<ProfileEvaluationResult> {\n const parsed = ProfileEvaluationSchema.safeParse(input);\n const result: ProfileEvaluationResult = {\n success: false,\n policy: PROFILE_EVALUATION_POLICY,\n checks: {\n structural: \"passed\",\n semantic: \"not_checked\",\n external: \"not_checked\",\n profile: \"not_checked\",\n receipt: \"not_checked\",\n },\n issues: [],\n files: [],\n profile: null,\n receipt: null,\n unselectedArtifactIntegrity: \"not_checked\",\n vocabularyMembership: \"not_checked\",\n scientificEligibility: \"not_checked\",\n statisticalIndependence: \"not_checked\",\n implementationExecution: \"not_attested\",\n environmentExecution: \"not_attested\",\n };\n const issue = (code: string, pointer: string, message: string) =>\n result.issues.push({ code, pointer, message });\n if (!parsed.success) {\n result.checks.structural = \"failed\";\n for (const i of parsed.error.issues)\n issue(\n \"PROFILE_EVALUATION.STRUCTURE\",\n \"/\" +\n i.path\n .map((p) => String(p).replace(/~/g, \"~0\").replace(/\\//g, \"~1\"))\n .join(\"/\"),\n i.message\n );\n return result;\n }\n const manifest = parsed.data;\n const dependencies = [\n ...manifest.dependencies.vocabularies.map((value, i) => ({\n value,\n pointer: `/dependencies/vocabularies/${i}`,\n })),\n {\n value: manifest.dependencies.implementation,\n pointer: \"/dependencies/implementation\",\n },\n {\n value: manifest.dependencies.environment,\n pointer: \"/dependencies/environment\",\n },\n ];\n const refs = new Set<string>(),\n vocabularies = new Set<string>();\n for (const d of dependencies) {\n if (refs.has(d.value.ref))\n issue(\n \"PROFILE_EVALUATION.DUPLICATE\",\n d.pointer + \"/ref\",\n \"Dependency references must be unique\"\n );\n refs.add(d.value.ref);\n }\n for (const [i, v] of manifest.dependencies.vocabularies.entries()) {\n if (vocabularies.has(v.id))\n issue(\n \"PROFILE_EVALUATION.VOCABULARY\",\n `/dependencies/vocabularies/${i}/id`,\n \"Each vocabulary identity requires one declared version\"\n );\n vocabularies.add(v.id);\n }\n const assetRefs = new Set<string>(),\n fileRefs = new Set<string>();\n for (const [i, a] of manifest.assets.entries()) {\n if (assetRefs.has(a.ref) || fileRefs.has(a.fileRef))\n issue(\n \"PROFILE_EVALUATION.ASSET_DUPLICATE\",\n `/assets/${i}`,\n \"Asset source and file references must each be unique\"\n );\n assetRefs.add(a.ref);\n fileRefs.add(a.fileRef);\n }\n if (result.issues.length) {\n result.checks.semantic = \"failed\";\n return result;\n }\n result.checks.semantic = \"passed\";\n const historyBytes = options.historyBytes\n ? Uint8Array.from(options.historyBytes)\n : undefined;\n const selectionBytes = options.selectionBytes\n ? Uint8Array.from(options.selectionBytes)\n : undefined;\n const assetFiles = new Map(\n [...(options.assetFiles ?? [])].map(([ref, bytes]) => [\n ref,\n Uint8Array.from(bytes),\n ])\n );\n const files = new Map(\n [...(options.dependencyFiles ?? [])].map(([ref, bytes]) => [\n ref,\n Uint8Array.from(bytes),\n ])\n );\n const inputs = [\n {\n ref: \"history\",\n pin: manifest.history,\n bytes: historyBytes,\n pointer: \"/history\",\n },\n {\n ref: \"selection\",\n pin: manifest.selection,\n bytes: selectionBytes,\n pointer: \"/selection\",\n },\n ...manifest.assets.map((a, i) => ({\n ref: `asset:${a.fileRef}`,\n pin: a,\n bytes: assetFiles.get(a.fileRef),\n pointer: `/assets/${i}`,\n })),\n ...dependencies.map((d) => ({\n ref: `dependency:${d.value.ref}`,\n pin: d.value,\n bytes: files.get(d.value.ref),\n pointer: d.pointer,\n })),\n ];\n for (const input of inputs) {\n const check: ProfileEvaluationResult[\"files\"][number] = {\n ref: input.ref,\n status: \"not_checked\",\n expectedSha256: input.pin.sha256,\n expectedByteLength: input.pin.byteLength,\n };\n result.files.push(check);\n if (!input.bytes) {\n issue(\n \"PROFILE_EVALUATION.MISSING_FILE\",\n input.pointer,\n \"Required local bytes are unavailable\"\n );\n continue;\n }\n check.actualByteLength = input.bytes.byteLength;\n if (input.bytes.byteLength !== input.pin.byteLength) {\n check.status = \"failed\";\n issue(\n \"PROFILE_EVALUATION.SIZE\",\n input.pointer,\n \"Byte length differs from the declared input\"\n );\n continue;\n }\n try {\n check.actualSha256 = await digest(input.bytes);\n check.status =\n check.actualSha256 === input.pin.sha256 ? \"passed\" : \"failed\";\n if (check.status === \"failed\")\n issue(\n \"PROFILE_EVALUATION.DIGEST\",\n input.pointer,\n \"SHA-256 differs from the declared input\"\n );\n } catch {\n issue(\n \"PROFILE_EVALUATION.HASH_UNAVAILABLE\",\n input.pointer,\n \"SHA-256 unavailable; byte identity remains unchecked\"\n );\n }\n }\n if (result.files.some((f) => f.status !== \"passed\")) {\n if (result.files.some((f) => f.status === \"failed\"))\n result.checks.external = \"failed\";\n return result;\n }\n result.checks.external = \"passed\";\n const documents: Record<string, unknown> = {};\n for (const [name, bytes] of [\n [\"history\", historyBytes!],\n [\"selection\", selectionBytes!],\n ] as const) {\n try {\n documents[name] = JSON.parse(\n new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true }).decode(bytes)\n ) as unknown;\n } catch {\n result.checks.semantic = \"failed\";\n issue(\n \"PROFILE_EVALUATION.JSON\",\n \"/\" + name,\n name + \" must be valid UTF-8 JSON without a BOM\"\n );\n return result;\n }\n }\n const { history, selection } = documents;\n const assets = new Map(\n manifest.assets.map((a) => [a.ref, assetFiles.get(a.fileRef)!])\n );\n result.profile =\n manifest.workflow === \"released-documents:0.1.0\"\n ? await evaluateReleasedDocuments(history, selection, { assets })\n : manifest.workflow === \"historical-testimony:0.1.0\"\n ? await evaluateHistoricalTestimony(history, selection, { assets })\n : await evaluatePhysicalSamples(history, selection, { assets });\n result.checks.profile = result.profile.success\n ? \"passed\"\n : Object.values(result.profile.checks).includes(\"failed\")\n ? \"failed\"\n : \"not_checked\";\n result.issues.push(\n ...result.profile.issues.map((i) => ({\n code: i.code,\n pointer: \"/profile\" + i.pointer,\n message: i.message,\n }))\n );\n const requestJson = serialize({\n manifest,\n rules: {\n evaluation: PROFILE_EVALUATION_POLICY,\n profile:\n manifest.workflow === \"released-documents:0.1.0\"\n ? RELEASED_DOCUMENT_PROFILE\n : manifest.workflow === \"historical-testimony:0.1.0\"\n ? HISTORICAL_TESTIMONY_PROFILE\n : PHYSICAL_SAMPLE_PROFILE,\n },\n limits: {\n unselectedArtifactIntegrity: result.unselectedArtifactIntegrity,\n vocabularyMembership: result.vocabularyMembership,\n scientificEligibility: result.scientificEligibility,\n statisticalIndependence: result.statisticalIndependence,\n implementationExecution: result.implementationExecution,\n environmentExecution: result.environmentExecution,\n },\n });\n const outputJson = serialize({ profile: result.profile });\n try {\n const requestBytes = new TextEncoder().encode(requestJson),\n outputBytes = new TextEncoder().encode(outputJson);\n result.receipt = {\n format: \"disclosureos-profile-evaluation-receipt:0.1.0\",\n serialization: \"sorted-json-utf8:0.1.0\",\n request: {\n sha256: await digest(requestBytes),\n byteLength: requestBytes.byteLength,\n },\n output: {\n sha256: await digest(outputBytes),\n byteLength: outputBytes.byteLength,\n },\n requestJson,\n outputJson,\n };\n result.checks.receipt = \"passed\";\n } catch {\n issue(\n \"PROFILE_EVALUATION.HASH_UNAVAILABLE\",\n \"/receipt\",\n \"Receipt hashing unavailable; no receipt was produced\"\n );\n }\n result.success =\n result.checks.profile === \"passed\" && result.checks.receipt === \"passed\";\n return result;\n}\n","import { z } from \"zod\";\nimport { ProfileEvaluationSchema } from \"./profile-evaluation\";\nconst path = z\n .string()\n .regex(\n /^(?:[A-Za-z0-9][A-Za-z0-9._ -]*\\/)*[A-Za-z0-9][A-Za-z0-9._ -]*(?![\\s\\S])/\n );\nconst dependency =\n ProfileEvaluationSchema.shape.dependencies.shape.implementation\n .omit({ sha256: true, byteLength: true })\n .extend({ path });\nexport const PROFILE_PREPARATION_SCHEMA_ID =\n \"urn:disclosureos:experimental:profile-preparation:0.1.0\";\nexport const ProfilePreparationSchema = z.strictObject({\n kind: z.literal(\"profile_preparation\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id: ProfileEvaluationSchema.shape.id,\n workflow: ProfileEvaluationSchema.shape.workflow,\n history: path,\n selection: path,\n assets: z.array(\n ProfileEvaluationSchema.shape.assets.element\n .omit({ sha256: true, byteLength: true })\n .extend({ path })\n ),\n dependencies: z.strictObject({\n vocabularies: z.array(dependency).min(1),\n implementation: dependency,\n environment: dependency,\n }),\n});\nexport type ProfilePreparation = z.infer<typeof ProfilePreparationSchema>;\nexport function profilePreparationJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(ProfilePreparationSchema, { target: \"draft-2020-12\" }),\n $id: PROFILE_PREPARATION_SCHEMA_ID,\n };\n}\n","import { z } from \"zod\";\nconst text = z.string().min(1).regex(/\\S/);\nconst common = {\n sourceId: text,\n sourcePointers: z\n .array(z.string().regex(/^\\/(?:[^~]|~[01])*(?![\\s\\S])/))\n .min(1),\n rationale: text,\n value: z.json(),\n};\nexport const MIGRATION_REVIEW_SCHEMA_ID =\n \"urn:disclosureos:experimental:migration-review:0.1.0\";\n/** Plan structure only. Target values and references require the v2 semantic parser. */\nexport const MigrationReviewSchema = z.strictObject({\n kind: z.literal(\"legacy_migration_review\"),\n schemaVersion: z.literal(\"0.1.0\"),\n namespace: z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}(?![\\s\\S])/),\n source: z.strictObject({\n sha256: z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/),\n byteLength: z\n .number()\n .int()\n .min(1)\n .max(8 * 1024 * 1024),\n }),\n reviewedBy: text,\n reviewedAt: z.iso\n .datetime({ offset: true, precision: 0 })\n .regex(/^(?!0000)/)\n .regex(/T[0-9]{2}:[0-9]{2}:[0-9]{2}/),\n decisions: z\n .array(\n z.discriminatedUnion(\"field\", [\n z.strictObject({ ...common, field: z.literal(\"eventTime\") }),\n z.strictObject({\n ...common,\n field: z.literal(\"position\"),\n frames: z.array(z.json()),\n }),\n ])\n )\n .min(1)\n .max(20000),\n});\nexport type MigrationReview = z.infer<typeof MigrationReviewSchema>;\nexport function migrationReviewJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(MigrationReviewSchema, { target: \"draft-2020-12\" }),\n $id: MIGRATION_REVIEW_SCHEMA_ID,\n };\n}\n","import { z } from \"zod\";\nconst hash = z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/);\nconst text = z.string().min(1).regex(/\\S/);\nconst common = {\n identity: z.string().regex(/^legacy-[a-f0-9]{64}(?![\\s\\S])/),\n rationale: text,\n};\nexport const MIGRATION_RESOLUTION_SCHEMA_ID =\n \"urn:disclosureos:experimental:migration-resolution:0.1.0\";\n/** Structure only: membership, exact pins and duplicate decisions require the resolver. */\nexport const MigrationResolutionSchema = z.strictObject({\n kind: z.literal(\"legacy_migration_resolution\"),\n schemaVersion: z.literal(\"0.1.0\"),\n ledger: z.strictObject({\n sha256: hash,\n byteLength: z\n .number()\n .int()\n .min(1)\n .max(256 * 1024 * 1024),\n }),\n decidedBy: text,\n decidedAt: z.iso.datetime({ offset: true, precision: 0 }).regex(/^(?!0000)/),\n decisions: z\n .array(\n z.discriminatedUnion(\"action\", [\n z.strictObject({\n ...common,\n action: z.literal(\"select\"),\n revision: hash,\n }),\n z.strictObject({ ...common, action: z.literal(\"defer\") }),\n ])\n )\n .max(20000),\n});\nexport type MigrationResolution = z.infer<typeof MigrationResolutionSchema>;\nexport function migrationResolutionJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(MigrationResolutionSchema, { target: \"draft-2020-12\" }),\n $id: MIGRATION_RESOLUTION_SCHEMA_ID,\n };\n}\n","import { z } from \"zod\";\nconst text = z.string().min(1).regex(/\\S/);\nexport const MIGRATION_LEGACY_SCORES_SCHEMA_ID =\n \"urn:disclosureos:experimental:migration-legacy-scores:0.1.0\";\n/** Declared association and output contract only; neither identity nor methodology is authenticated. */\nexport const MigrationLegacyScoresSchema = z.strictObject({\n kind: z.literal(\"legacy_score_preservation_plan\"),\n schemaVersion: z.literal(\"0.1.0\"),\n namespace: z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}(?![\\s\\S])/),\n source: z.strictObject({\n sha256: z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/),\n byteLength: z\n .number()\n .int()\n .min(1)\n .max(8 * 1024 * 1024),\n }),\n reviewedBy: text,\n reviewedAt: z.iso\n .datetime({ offset: true, precision: 0 })\n .regex(/^(?!0000)/)\n .regex(/T[0-9]{2}:[0-9]{2}:[0-9]{2}/),\n decisions: z\n .array(\n z.strictObject({\n sourcePointer: z.string().regex(/^(?:|\\/(?:0|[1-9][0-9]*))(?![\\s\\S])/),\n sourceId: text,\n resultKind: z.enum([\"completeness\", \"compellingness\"]),\n outputContractVersion: text,\n methodologyVersion: text,\n rationale: text,\n })\n )\n .max(10000),\n});\nexport type MigrationLegacyScores = z.infer<typeof MigrationLegacyScoresSchema>;\nexport function migrationLegacyScoresJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(MigrationLegacyScoresSchema, { target: \"draft-2020-12\" }),\n $id: MIGRATION_LEGACY_SCORES_SCHEMA_ID,\n };\n}\n","import { z } from \"zod\";\nconst text = z.string().min(1).regex(/\\S/);\nconst pin = {\n sha256: z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/),\n byteLength: z\n .number()\n .int()\n .min(1)\n .max(2 * 1024 * 1024),\n};\nconst blob = z.strictObject({ ...pin, bytes: z.string().min(1) });\nexport const MIGRATION_COMPATIBILITY_SCHEMA_ID =\n \"urn:disclosureos:experimental:migration-compatibility:0.1.0\";\nexport const MigrationCompatibilitySchema = z.strictObject({\n kind: z.literal(\"legacy_sensor_revision_review\"),\n schemaVersion: z.literal(\"0.1.0\"),\n source: z.strictObject({\n sha256: pin.sha256,\n byteLength: z\n .number()\n .int()\n .min(1)\n .max(8 * 1024 * 1024),\n }),\n namespace: z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}(?![\\s\\S])/),\n reviewedBy: text,\n reviewedAt: z.iso\n .datetime({ offset: true, precision: 0 })\n .regex(/^(?!0000)/)\n .regex(/T[0-9]{2}:[0-9]{2}:[0-9]{2}/),\n context: blob,\n decisions: z\n .array(\n z.strictObject({\n sourceId: text,\n sensorPointer: z\n .string()\n .regex(\n /^\\/sensorEvidence\\/sensors\\/(?:0|[1-9][0-9]*)\\/sensorRef(?![\\s\\S])/\n ),\n legacyRef: text,\n acquisitionRef: text,\n manifest: blob,\n provenance: blob,\n provenanceLocator: text,\n rationale: text,\n })\n )\n .max(10000),\n});\nexport type MigrationCompatibility = z.infer<\n typeof MigrationCompatibilitySchema\n>;\nexport function migrationCompatibilityJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(MigrationCompatibilitySchema, {\n target: \"draft-2020-12\",\n }),\n $id: MIGRATION_COMPATIBILITY_SCHEMA_ID,\n };\n}\n"]}
|