@disclosureos/schema 2.0.0-beta.3 → 2.0.0-beta.4
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 +78 -7
- package/dist/experimental/v2/index.d.ts +4425 -81
- package/dist/experimental/v2/index.js +7952 -334
- package/dist/experimental/v2/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +34 -6
- package/schema/enriched-observation.schema.json +16 -16
- package/schema/experimental/archival-case-presentation-0.1.0.schema.json +742 -0
- package/schema/experimental/case-presentation-0.1.0.schema.json +431 -0
- package/schema/experimental/context-case-presentation-0.1.0.schema.json +697 -0
- package/schema/experimental/lidar-point-cloud-profile-0.1.0.schema.json +416 -0
- package/schema/experimental/material-case-presentation-0.1.0.schema.json +802 -0
- package/schema/experimental/passive-sonar-profile-0.1.0.schema.json +238 -0
- package/schema/experimental/product-source-selection-0.1.0.schema.json +673 -0
- package/schema/experimental/radar-profile-0.1.0.schema.json +1232 -0
- package/schema/experimental/satellite-raster-profile-0.1.0.schema.json +406 -0
- package/schema/experimental/secondary-radar-profile-0.1.0.schema.json +154 -0
- package/schema/experimental/sonar-profile-0.1.0.schema.json +197 -0
- package/schema/experimental/steered-radar-profile-0.1.0.schema.json +214 -0
- package/schema/experimental/testimony-case-presentation-0.1.0.schema.json +682 -0
- package/schema/experimental/vocabulary-bindings-0.1.0.schema.json +167 -0
- package/schema/experimental/vocabulary-catalog-0.1.0.schema.json +155 -0
- package/schema/experimental/vocabulary-term-reference-0.1.0.schema.json +61 -0
|
@@ -1 +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","../../../src/experimental/v2/context-review.ts","../../../src/experimental/v2/entity-history-review.ts","../../../src/experimental/v2/research-entities-review.ts","../../../src/experimental/v2/archival-review.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","resolve","equal","contextAssertions","parseExperimentalObservation","resolveEntity","resolveCitation","parseObservationContext","value","declaration"],"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","import {\n parseContextClaimHistory,\n parseObservationContext,\n parseExperimentalObservation,\n contextAssertions,\n type DocumentSnapshotRef,\n type ContextReference,\n type ContextIssue,\n type ObservationContext,\n type ExperimentalObservation,\n} from \"@disclosureos/records/experimental/v2\";\nimport { parseAcquisitionContext } from \"@disclosureos/instruments/experimental/v2\";\n\nexport interface ContextReviewOptions {\n /** Exact UTF-8 document bytes keyed by SHA-256. Nothing is fetched or normalized. */\n documents: ReadonlyMap<string, Uint8Array>;\n}\nexport interface ContextReviewResult {\n success: boolean;\n issues: ContextIssue[];\n snapshots: Array<\n DocumentSnapshotRef & { status: \"passed\" | \"failed\" | \"unavailable\" }\n >;\n checks: {\n structural: 'passed' | 'failed';\n semantic: 'passed' | 'failed' | 'not_checked';\n profile: 'not_checked';\n external: 'passed' | 'failed' | 'not_checked';\n };\n currentClaimRefs: string[];\n integrityScope: \"supplied_context_observation_and_acquisition_snapshot_bytes\";\n temporalNormalization: \"not_checked\";\n sourceArtifactIntegrity: \"not_checked\";\n scientificInterpretation: \"not_checked\";\n multiSensorFusion: \"not_checked\";\n}\n/** Closed C1 role table: no unit guessing, conversion or unrestricted quantity synonyms. */\nexport const CONTEXT_MEASUREMENT_ROLES = {\n size: {\n entities: [\"reported_object\"],\n quantities: [\"size\", \"length\"],\n units: [\"m\", \"km\"],\n },\n count: { entities: [\"reported_object\"], quantities: [\"count\"], units: [\"1\"] },\n speed: {\n entities: [\"reported_object\", \"platform\"],\n quantities: [\"speed\"],\n units: [\"m/s\", \"km/h\"],\n },\n altitude: {\n entities: [\"reported_object\", \"platform\", \"place\"],\n quantities: [\"altitude\", \"elevation\"],\n units: [\"m\", \"km\"],\n },\n heading: {\n entities: [\"reported_object\", \"platform\"],\n quantities: [\"heading\"],\n units: [\"deg\"],\n },\n ambient_temperature: {\n entities: [\"environment\"],\n quantities: [\"temperature\", \"ambient_temperature\"],\n units: [\"Cel\", \"K\"],\n },\n relative_humidity: {\n entities: [\"environment\"],\n quantities: [\"relative_humidity\"],\n units: [\"%\"],\n },\n wind_speed: {\n entities: [\"environment\"],\n quantities: [\"wind_speed\"],\n units: [\"m/s\", \"km/h\"],\n },\n moon_illumination: {\n entities: [\"environment\"],\n quantities: [\"moon_illumination\"],\n units: [\"%\", \"1\"],\n },\n duration: {\n entities: [\"temporal\", \"collection\"],\n quantities: [\"duration\"],\n units: [\"s\", \"min\", \"h\"],\n },\n distance: {\n entities: [\"place\"],\n quantities: [\"distance\"],\n units: [\"m\", \"km\"],\n },\n bearing: { entities: [\"place\"], quantities: [\"bearing\"], units: [\"deg\"] },\n water_depth: {\n entities: [\"place\"],\n quantities: [\"water_depth\"],\n units: [\"m\"],\n },\n coordinate_precision: {\n entities: [\"place\"],\n quantities: [\"coordinate_precision\"],\n units: [\"m\"],\n },\n time_alignment: {\n entities: [\"collection\"],\n quantities: [\"time_alignment_uncertainty\"],\n units: [\"s\", \"ms\"],\n },\n} as const;\nfunction equal(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (!a || !b || typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (Array.isArray(a) || Array.isArray(b))\n return (\n Array.isArray(a) &&\n Array.isArray(b) &&\n a.length === b.length &&\n a.every((v, i) => equal(v, b[i]))\n );\n const x = a as Record<string, unknown>,\n y = b as Record<string, unknown>;\n return (\n Object.keys(x).length === Object.keys(y).length &&\n Object.keys(x).every(\n (k) => Object.prototype.hasOwnProperty.call(y, k) && equal(x[k], y[k]),\n )\n );\n}\nexport async function evaluateContextClaimHistory(\n input: unknown,\n options: ContextReviewOptions,\n): Promise<ContextReviewResult> {\n const history = parseContextClaimHistory(input);\n const issues: ContextIssue[] = history.issues.map((i) => ({\n code: i.code,\n stage: i.stage,\n pointer: i.pointer,\n message: i.message,\n }));\n const snapshots: ContextReviewResult[\"snapshots\"] = [];\n const contexts = new Map<string, ObservationContext>();\n const problem = (\n code: string,\n pointer: string,\n message: string,\n stage: ContextIssue[\"stage\"] = \"semantic\",\n ) => issues.push({ code, pointer, message, stage });\n async function load(\n ref: DocumentSnapshotRef,\n pointer: string,\n ): Promise<unknown> {\n const supplied = options.documents.get(ref.sha256);\n const bytes = supplied ? Uint8Array.from(supplied) : undefined;\n if (!bytes) {\n snapshots.push({ ...ref, status: \"unavailable\" });\n problem(\n \"SNAPSHOT.UNAVAILABLE\",\n pointer,\n \"Required snapshot bytes were not supplied.\",\n \"external\",\n );\n return;\n }\n if (\n [\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(\"\") !== ref.sha256\n ) {\n snapshots.push({ ...ref, status: \"failed\" });\n problem(\n \"SNAPSHOT.DIGEST\",\n pointer,\n \"Supplied bytes do not match the reference digest.\",\n \"external\",\n );\n return;\n }\n let value: unknown;\n try {\n value = JSON.parse(\n new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes),\n );\n } catch {\n snapshots.push({ ...ref, status: \"failed\" });\n problem(\n \"SNAPSHOT.JSON\",\n pointer,\n \"Snapshot is not a UTF-8 JSON document.\",\n \"external\",\n );\n return;\n }\n snapshots.push({ ...ref, status: \"passed\" });\n if (\n !value ||\n typeof value !== \"object\" ||\n (value as { id?: unknown }).id !== ref.documentId\n ) {\n problem(\n \"SNAPSHOT.IDENTITY\",\n pointer,\n \"Snapshot document ID does not match its reference.\",\n );\n return;\n }\n return value;\n }\n async function checkContext(\n context: ObservationContext,\n observation: ExperimentalObservation,\n p: string,\n ) {\n const sources = new Map<\n string,\n | ExperimentalObservation[\"sources\"][number]\n | ExperimentalObservation[\"products\"][number]\n >([\n ...observation.sources.map((s) => [`source:${s.id}`, s] as const),\n ...observation.products.map((s) => [`product:${s.id}`, s] as const),\n ]);\n const methods = new Map(\n observation.methods.map((m) => [`method:${m.id}`, m]),\n );\n const measurements = new Map(\n observation.measurements.map((m) => [m.id, m]),\n );\n let acquisitionIds: Set<string> | undefined;\n if (context.acquisitionRef) {\n const value = await load(context.acquisitionRef, `${p}/acquisitionRef`);\n if (value !== undefined) {\n const acquisition = parseAcquisitionContext(value);\n if (!acquisition.success)\n problem(\n \"CONTEXT.ACQUISITION\",\n `${p}/acquisitionRef`,\n \"Acquisition snapshot does not satisfy its declared contract.\",\n acquisition.checks.structural === \"failed\"\n ? \"structural\"\n : \"semantic\",\n );\n else\n acquisitionIds = new Set(\n acquisition.data.acquisitions.map((a) => a.id),\n );\n }\n }\n for (const [index, entity] of context.entities.entries()) {\n const ep = `${p}/entities/${index}`;\n for (const { field, assertion } of contextAssertions(entity)) {\n const prov = assertion.content.provenance;\n if (prov) {\n const source = sources.get(prov.sourceRef);\n if (!source)\n problem(\n \"REF.LOCAL_RESOLUTION\",\n ep,\n \"Context source is absent from the scoped observation.\",\n );\n else if (\n source.digest &&\n prov.sourceDigest &&\n source.digest.value !== prov.sourceDigest.value\n )\n problem(\n \"SOURCE.DIGEST_MISMATCH\",\n ep,\n \"Source digest declarations differ.\",\n );\n }\n const value = assertion.content.value;\n if (value === undefined) continue;\n if (field === \"productRefs\")\n for (const ref of value as string[])\n if (!sources.has(ref))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n ep,\n \"Collection artifact is not declared.\",\n );\n if (field === \"acquisitionIds\")\n for (const id of value as string[])\n if (!acquisitionIds?.has(id))\n problem(\n \"REF.ACQUISITION\",\n ep,\n \"Acquisition ID needs a supplied, valid acquisition snapshot.\",\n );\n if (field === \"position\") {\n const checked = parseExperimentalObservation({\n ...observation,\n position: { state: \"known\", value, sourceRefs: [prov!.sourceRef] },\n });\n if (!checked.success)\n problem(\n \"CONTEXT.POSITION\",\n ep,\n \"Context position must satisfy the observation frame, unit and source-reference rules.\",\n );\n }\n }\n for (const selection of entity.selections ?? []) {\n if (\n methods.get(selection.methodRef)?.version !== selection.methodVersion\n )\n problem(\n \"METHOD.VERSION_MISMATCH\",\n ep,\n \"Selection method/version must match the observation inventory.\",\n );\n }\n const proximityLinks = contextAssertions(entity).flatMap(\n ({ field, assertion }) => {\n if (field !== \"proximity\" || !assertion.content.value) return [];\n const value = assertion.content.value as {\n targetPlaceId: string;\n distanceMeasurementId?: string;\n bearingMeasurementId?: string;\n };\n return [\n ...(value.distanceMeasurementId\n ? [\n {\n id: assertion.id,\n role: \"distance\" as const,\n measurementId: value.distanceMeasurementId,\n relatedPlaceId: value.targetPlaceId,\n },\n ]\n : []),\n ...(value.bearingMeasurementId\n ? [\n {\n id: assertion.id,\n role: \"bearing\" as const,\n measurementId: value.bearingMeasurementId,\n relatedPlaceId: value.targetPlaceId,\n },\n ]\n : []),\n ];\n },\n );\n for (const link of [...(entity.measurements ?? []), ...proximityLinks]) {\n const role = CONTEXT_MEASUREMENT_ROLES[link.role];\n const measurement = measurements.get(link.measurementId);\n if (!measurement) {\n problem(\n \"REF.MEASUREMENT\",\n ep,\n \"Measurement is absent from the scoped observation.\",\n );\n continue;\n }\n if (\n !(role.entities as readonly string[]).includes(entity.kind) ||\n !(role.quantities as readonly string[]).includes(\n measurement.quantity,\n ) ||\n !(role.units as readonly string[]).includes(measurement.value.unit)\n )\n problem(\n \"CONTEXT.MEASUREMENT_ROLE\",\n ep,\n \"Measurement entity, quantity and unit must match the declared role.\",\n );\n const value = measurement.value.value;\n if (\n [\n \"count\",\n \"size\",\n \"speed\",\n \"wind_speed\",\n \"duration\",\n \"distance\",\n \"water_depth\",\n \"coordinate_precision\",\n \"time_alignment\",\n ].includes(link.role) &&\n value < 0\n )\n problem(\n \"CONTEXT.MEASUREMENT_RANGE\",\n ep,\n \"This role cannot be negative.\",\n );\n if (link.role === \"count\" && !Number.isInteger(value))\n problem(\"CONTEXT.MEASUREMENT_RANGE\", ep, \"Count must be an integer.\");\n if (\n [\"heading\", \"bearing\"].includes(link.role) &&\n (value < 0 || value > 360)\n )\n problem(\n \"CONTEXT.MEASUREMENT_RANGE\",\n ep,\n \"Direction must lie between zero and 360 degrees.\",\n );\n if (\n [\"relative_humidity\", \"moon_illumination\"].includes(link.role) &&\n (value < 0 || value > (measurement.value.unit === \"1\" ? 1 : 100))\n )\n problem(\n \"CONTEXT.MEASUREMENT_RANGE\",\n ep,\n \"Fraction lies outside its unit range.\",\n );\n if ([\"distance\", \"bearing\"].includes(link.role) && !link.relatedPlaceId)\n problem(\n \"CONTEXT.RELATED_PLACE\",\n ep,\n \"Distance and bearing must identify the other place.\",\n );\n }\n }\n }\n if (history.success) {\n for (const [i, ref] of history.data.contextRefs.entries()) {\n const p = `/contextRefs/${i}`;\n const value = await load(ref, p);\n if (value === undefined) continue;\n const parsed = parseObservationContext(value);\n if (!parsed.success) {\n issues.push(\n ...parsed.issues.map((i) => ({ ...i, pointer: p + i.pointer })),\n );\n continue;\n }\n const context = parsed.data;\n const observationBytes = await load(\n context.observationRef,\n `${p}/observationRef`,\n );\n if (observationBytes === undefined) continue;\n const observation = parseExperimentalObservation(observationBytes);\n if (\n !observation.success ||\n !equal(observationBytes, history.data.observation)\n ) {\n problem(\n \"CONTEXT.OBSERVATION_SCOPE\",\n p,\n \"Context must select the same complete observation snapshot as the history.\",\n observation.checks.structural === \"failed\"\n ? \"structural\"\n : \"semantic\",\n );\n continue;\n }\n await checkContext(context, observation.data, p);\n contexts.set(ref.sha256, context);\n }\n function resolve(\n reference: ContextReference,\n pointer: string,\n assertionId?: string,\n ) {\n const context = contexts.get(reference.document.sha256);\n if (!context) return; // Missing/invalid required document was already reported.\n const entity = context.entities.find(\n (e) => e.kind === reference.target.kind && e.id === reference.target.id,\n );\n if (!entity) {\n problem(\n \"REF.ENTITY\",\n pointer,\n \"Typed entity is absent from the selected snapshot.\",\n );\n return;\n }\n const assertions = contextAssertions(entity);\n if (\n reference.target.field &&\n !assertions.some((a) => a.field === reference.target.field)\n )\n problem(\n \"REF.FIELD\",\n pointer,\n \"Target field has no supplied assertions.\",\n );\n if (\n assertionId &&\n (!reference.target.field ||\n !assertions.some(\n (a) =>\n a.field === reference.target.field &&\n a.assertion.id === assertionId,\n ))\n )\n problem(\n \"REF.ASSERTION\",\n pointer,\n \"Assessment input must select an existing assertion on its named field.\",\n );\n }\n for (const [i, claim] of history.data.claims.entries()) {\n if (claim.subject.kind === \"context\")\n resolve(claim.subject.reference, `/claims/${i}/subject`);\n if (claim.kind === \"assessment\")\n for (const [j, ref] of (claim.contextInputRefs ?? []).entries())\n resolve(ref, `/claims/${i}/contextInputRefs/${j}`, ref.assertionId);\n }\n }\n const external = snapshots.some((s) => s.status === \"failed\")\n ? \"failed\"\n : snapshots.some((s) => s.status === \"unavailable\") || !snapshots.length\n ? \"not_checked\"\n : \"passed\";\n return {\n success: history.success && issues.length === 0,\n issues,\n snapshots,\n checks: {\n structural: issues.some((i) => i.stage === \"structural\")\n ? \"failed\"\n : history.checks.structural,\n semantic:\n history.checks.structural === \"failed\" ||\n issues.some((i) => i.stage === \"structural\")\n ? \"not_checked\"\n : issues.some((i) => i.stage !== \"external\")\n ? \"failed\"\n : issues.length\n ? \"not_checked\"\n : \"passed\",\n profile: \"not_checked\",\n external,\n },\n currentClaimRefs:\n history.success && issues.length === 0 ? history.currentClaimRefs : [],\n integrityScope:\n \"supplied_context_observation_and_acquisition_snapshot_bytes\",\n temporalNormalization: \"not_checked\",\n sourceArtifactIntegrity: \"not_checked\",\n scientificInterpretation: \"not_checked\",\n multiSensorFusion: \"not_checked\",\n };\n}\n","// Shared supplied-snapshot checks. Each public entry chooses its explicit version;\n// no history or entity document is projected through an older parser.\nimport {\n parseResearchClaimHistory,\n parseArchivalClaimHistory,\n parseArchivalEntities,\n archivalArtifactReferences,\n type ArchivalEntities,\n type ArchivalEntityReference,\n type EditionCitation,\n parseObservationContext,\n parseExperimentalObservation,\n contextAssertions,\n parseResearchEntities,\n researchEntityAssertions,\n researchEntityContextReferences,\n type ResearchEntities,\n type ResearchEntityReference,\n type DocumentSnapshotRef,\n type ContextReference,\n type ContextIssue,\n type ObservationContext,\n type ExperimentalObservation,\n} from \"@disclosureos/records/experimental/v2\";\nimport { parseAcquisitionContext } from \"@disclosureos/instruments/experimental/v2\";\n\nexport interface ResearchReviewOptions {\n /** Exact UTF-8 document bytes keyed by SHA-256. Nothing is fetched or normalized. */\n documents: ReadonlyMap<string, Uint8Array>;\n}\nexport interface ResearchReviewResult {\n success: boolean;\n issues: ContextIssue[];\n snapshots: Array<\n DocumentSnapshotRef & { status: \"passed\" | \"failed\" | \"unavailable\" }\n >;\n checks: {\n structural: \"passed\" | \"failed\";\n semantic: \"passed\" | \"failed\" | \"not_checked\";\n profile: \"not_checked\";\n external: \"passed\" | \"failed\" | \"not_checked\";\n };\n currentClaimRefs: string[];\n integrityScope: \"supplied_entities_context_observation_and_acquisition_snapshot_bytes\";\n temporalNormalization: \"not_checked\";\n sourceArtifactIntegrity: \"not_checked\";\n scientificInterpretation: \"not_checked\";\n multiSensorFusion: \"not_checked\";\n}\n// Reuse C1's closed measurement role table without changing the published evaluator.\nimport { CONTEXT_MEASUREMENT_ROLES as RESEARCH_CONTEXT_MEASUREMENT_ROLES } from \"./context-review\";\nfunction equal(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (!a || !b || typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (Array.isArray(a) || Array.isArray(b))\n return (\n Array.isArray(a) &&\n Array.isArray(b) &&\n a.length === b.length &&\n a.every((v, i) => equal(v, b[i]))\n );\n const x = a as Record<string, unknown>,\n y = b as Record<string, unknown>;\n return (\n Object.keys(x).length === Object.keys(y).length &&\n Object.keys(x).every(\n (k) => Object.prototype.hasOwnProperty.call(y, k) && equal(x[k], y[k]),\n )\n );\n}\nexport async function evaluateEntityHistory(\n input: unknown,\n options: ResearchReviewOptions,\n archival: boolean,\n): Promise<ResearchReviewResult> {\n const history = archival\n ? parseArchivalClaimHistory(input)\n : parseResearchClaimHistory(input);\n const issues: ContextIssue[] = history.issues.map((i) => ({\n code: i.code,\n stage: i.stage,\n pointer: i.pointer,\n message: i.message,\n }));\n const snapshots: ResearchReviewResult[\"snapshots\"] = [];\n const contexts = new Map<string, ObservationContext>();\n const entityDocuments = new Map<\n string,\n ResearchEntities | ArchivalEntities\n >();\n const problem = (\n code: string,\n pointer: string,\n message: string,\n stage: ContextIssue[\"stage\"] = \"semantic\",\n ) => issues.push({ code, pointer, message, stage });\n async function load(\n ref: DocumentSnapshotRef,\n pointer: string,\n ): Promise<unknown> {\n const supplied = options.documents.get(ref.sha256);\n const bytes = supplied ? Uint8Array.from(supplied) : undefined;\n if (!bytes) {\n snapshots.push({ ...ref, status: \"unavailable\" });\n problem(\n \"SNAPSHOT.UNAVAILABLE\",\n pointer,\n \"Required snapshot bytes were not supplied.\",\n \"external\",\n );\n return;\n }\n if (\n [\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(\"\") !== ref.sha256\n ) {\n snapshots.push({ ...ref, status: \"failed\" });\n problem(\n \"SNAPSHOT.DIGEST\",\n pointer,\n \"Supplied bytes do not match the reference digest.\",\n \"external\",\n );\n return;\n }\n let value: unknown;\n try {\n value = JSON.parse(\n new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes),\n );\n } catch {\n snapshots.push({ ...ref, status: \"failed\" });\n problem(\n \"SNAPSHOT.JSON\",\n pointer,\n \"Snapshot is not a UTF-8 JSON document.\",\n \"external\",\n );\n return;\n }\n snapshots.push({ ...ref, status: \"passed\" });\n if (\n !value ||\n typeof value !== \"object\" ||\n (value as { id?: unknown }).id !== ref.documentId\n ) {\n problem(\n \"SNAPSHOT.IDENTITY\",\n pointer,\n \"Snapshot document ID does not match its reference.\",\n );\n return;\n }\n return value;\n }\n async function checkContext(\n context: ObservationContext,\n observation: ExperimentalObservation,\n p: string,\n ) {\n const sources = new Map<\n string,\n | ExperimentalObservation[\"sources\"][number]\n | ExperimentalObservation[\"products\"][number]\n >([\n ...observation.sources.map((s) => [`source:${s.id}`, s] as const),\n ...observation.products.map((s) => [`product:${s.id}`, s] as const),\n ]);\n const methods = new Map(\n observation.methods.map((m) => [`method:${m.id}`, m]),\n );\n const measurements = new Map(\n observation.measurements.map((m) => [m.id, m]),\n );\n let acquisitionIds: Set<string> | undefined;\n if (context.acquisitionRef) {\n const value = await load(context.acquisitionRef, `${p}/acquisitionRef`);\n if (value !== undefined) {\n const acquisition = parseAcquisitionContext(value);\n if (!acquisition.success)\n problem(\n \"CONTEXT.ACQUISITION\",\n `${p}/acquisitionRef`,\n \"Acquisition snapshot does not satisfy its declared contract.\",\n acquisition.checks.structural === \"failed\"\n ? \"structural\"\n : \"semantic\",\n );\n else\n acquisitionIds = new Set(\n acquisition.data.acquisitions.map((a) => a.id),\n );\n }\n }\n for (const [index, entity] of context.entities.entries()) {\n const ep = `${p}/entities/${index}`;\n for (const { field, assertion } of contextAssertions(entity)) {\n const prov = assertion.content.provenance;\n if (prov) {\n const source = sources.get(prov.sourceRef);\n if (!source)\n problem(\n \"REF.LOCAL_RESOLUTION\",\n ep,\n \"Context source is absent from the scoped observation.\",\n );\n else if (\n source.digest &&\n prov.sourceDigest &&\n source.digest.value !== prov.sourceDigest.value\n )\n problem(\n \"SOURCE.DIGEST_MISMATCH\",\n ep,\n \"Source digest declarations differ.\",\n );\n }\n const value = assertion.content.value;\n if (value === undefined) continue;\n if (field === \"productRefs\")\n for (const ref of value as string[])\n if (!sources.has(ref))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n ep,\n \"Collection artifact is not declared.\",\n );\n if (field === \"acquisitionIds\")\n for (const id of value as string[])\n if (!acquisitionIds?.has(id))\n problem(\n \"REF.ACQUISITION\",\n ep,\n \"Acquisition ID needs a supplied, valid acquisition snapshot.\",\n );\n if (field === \"position\") {\n const checked = parseExperimentalObservation({\n ...observation,\n position: { state: \"known\", value, sourceRefs: [prov!.sourceRef] },\n });\n if (!checked.success)\n problem(\n \"CONTEXT.POSITION\",\n ep,\n \"Context position must satisfy the observation frame, unit and source-reference rules.\",\n );\n }\n }\n for (const selection of entity.selections ?? []) {\n if (\n methods.get(selection.methodRef)?.version !== selection.methodVersion\n )\n problem(\n \"METHOD.VERSION_MISMATCH\",\n ep,\n \"Selection method/version must match the observation inventory.\",\n );\n }\n const proximityLinks = contextAssertions(entity).flatMap(\n ({ field, assertion }) => {\n if (field !== \"proximity\" || !assertion.content.value) return [];\n const value = assertion.content.value as {\n targetPlaceId: string;\n distanceMeasurementId?: string;\n bearingMeasurementId?: string;\n };\n return [\n ...(value.distanceMeasurementId\n ? [\n {\n id: assertion.id,\n role: \"distance\" as const,\n measurementId: value.distanceMeasurementId,\n relatedPlaceId: value.targetPlaceId,\n },\n ]\n : []),\n ...(value.bearingMeasurementId\n ? [\n {\n id: assertion.id,\n role: \"bearing\" as const,\n measurementId: value.bearingMeasurementId,\n relatedPlaceId: value.targetPlaceId,\n },\n ]\n : []),\n ];\n },\n );\n for (const link of [...(entity.measurements ?? []), ...proximityLinks]) {\n const role = RESEARCH_CONTEXT_MEASUREMENT_ROLES[link.role];\n const measurement = measurements.get(link.measurementId);\n if (!measurement) {\n problem(\n \"REF.MEASUREMENT\",\n ep,\n \"Measurement is absent from the scoped observation.\",\n );\n continue;\n }\n if (\n !(role.entities as readonly string[]).includes(entity.kind) ||\n !(role.quantities as readonly string[]).includes(\n measurement.quantity,\n ) ||\n !(role.units as readonly string[]).includes(measurement.value.unit)\n )\n problem(\n \"CONTEXT.MEASUREMENT_ROLE\",\n ep,\n \"Measurement entity, quantity and unit must match the declared role.\",\n );\n const value = measurement.value.value;\n if (\n [\n \"count\",\n \"size\",\n \"speed\",\n \"wind_speed\",\n \"duration\",\n \"distance\",\n \"water_depth\",\n \"coordinate_precision\",\n \"time_alignment\",\n ].includes(link.role) &&\n value < 0\n )\n problem(\n \"CONTEXT.MEASUREMENT_RANGE\",\n ep,\n \"This role cannot be negative.\",\n );\n if (link.role === \"count\" && !Number.isInteger(value))\n problem(\"CONTEXT.MEASUREMENT_RANGE\", ep, \"Count must be an integer.\");\n if (\n [\"heading\", \"bearing\"].includes(link.role) &&\n (value < 0 || value > 360)\n )\n problem(\n \"CONTEXT.MEASUREMENT_RANGE\",\n ep,\n \"Direction must lie between zero and 360 degrees.\",\n );\n if (\n [\"relative_humidity\", \"moon_illumination\"].includes(link.role) &&\n (value < 0 || value > (measurement.value.unit === \"1\" ? 1 : 100))\n )\n problem(\n \"CONTEXT.MEASUREMENT_RANGE\",\n ep,\n \"Fraction lies outside its unit range.\",\n );\n if ([\"distance\", \"bearing\"].includes(link.role) && !link.relatedPlaceId)\n problem(\n \"CONTEXT.RELATED_PLACE\",\n ep,\n \"Distance and bearing must identify the other place.\",\n );\n }\n }\n }\n if (history.success) {\n for (const [i, ref] of history.data.contextRefs.entries()) {\n const p = `/contextRefs/${i}`;\n const value = await load(ref, p);\n if (value === undefined) continue;\n const parsed = parseObservationContext(value);\n if (!parsed.success) {\n issues.push(\n ...parsed.issues.map((i) => ({ ...i, pointer: p + i.pointer })),\n );\n continue;\n }\n const context = parsed.data;\n const observationBytes = await load(\n context.observationRef,\n `${p}/observationRef`,\n );\n if (observationBytes === undefined) continue;\n const observation = parseExperimentalObservation(observationBytes);\n if (\n !observation.success ||\n !equal(observationBytes, history.data.observation)\n ) {\n problem(\n \"CONTEXT.OBSERVATION_SCOPE\",\n p,\n \"Context must select the same complete observation snapshot as the history.\",\n observation.checks.structural === \"failed\"\n ? \"structural\"\n : \"semantic\",\n );\n continue;\n }\n await checkContext(context, observation.data, p);\n contexts.set(ref.sha256, context);\n }\n for (const [i, ref] of history.data.entityRefs.entries()) {\n const p = `/entityRefs/${i}`;\n const value = await load(ref, p);\n if (value === undefined) continue;\n const parsed = archival\n ? parseArchivalEntities(value)\n : parseResearchEntities(value);\n if (!parsed.success) {\n issues.push(\n ...parsed.issues.map((i) => ({ ...i, pointer: p + i.pointer })),\n );\n continue;\n }\n const entities = parsed.data;\n const raw = await load(entities.observationRef, `${p}/observationRef`);\n if (raw === undefined) continue;\n const observation = parseExperimentalObservation(raw);\n if (!observation.success || !equal(raw, history.data.observation)) {\n problem(\n \"ENTITIES.OBSERVATION_SCOPE\",\n p,\n \"Research entities must select the same complete observation snapshot as the history.\",\n );\n continue;\n }\n const contextSnapshots = new Set(\n history.data.contextRefs.map((r) => JSON.stringify(r)),\n );\n for (const r of entities.contextRefs)\n if (!contextSnapshots.has(JSON.stringify(r)))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n p,\n \"Entity context dependency must be declared in the history and checked.\",\n );\n const sources = new Map<\n string,\n | ExperimentalObservation[\"sources\"][number]\n | ExperimentalObservation[\"products\"][number]\n >([\n ...observation.data.sources.map((x) => [`source:${x.id}`, x] as const),\n ...observation.data.products.map(\n (x) => [`product:${x.id}`, x] as const,\n ),\n ]);\n for (const [j, entity] of entities.entities.entries()) {\n const ep = `${p}/entities/${j}`;\n for (const { field, assertion } of researchEntityAssertions(entity)) {\n const prov = assertion.content.provenance;\n if (prov) {\n const source = sources.get(prov.sourceRef);\n if (!source)\n problem(\n \"REF.LOCAL_RESOLUTION\",\n ep,\n \"Entity source is absent from the scoped observation.\",\n );\n else if (\n source.digest &&\n prov.sourceDigest &&\n source.digest.value !== prov.sourceDigest.value\n )\n problem(\n \"SOURCE.DIGEST_MISMATCH\",\n ep,\n \"Source digest declarations differ.\",\n );\n }\n const value = assertion.content.value;\n const refs =\n field === \"sourceDocument\" && typeof value === \"string\"\n ? [value]\n : field === \"supportRefs\" && Array.isArray(value)\n ? value\n : [];\n for (const r of refs)\n if (!sources.has(r))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n ep,\n \"Account or procedure artifact is not declared in the observation.\",\n );\n }\n if (archival) {\n for (const ref of archivalArtifactReferences(entity)) {\n const source = sources.get(ref.sourceRef);\n if (!source?.digest || source.digest.value !== ref.digest.value)\n problem(\n \"ARCHIVE.ARTIFACT_IDENTITY\",\n ep,\n \"Archival artifact must name the same SHA-256 declaration as the scoped observation inventory.\",\n );\n }\n if (entity.kind === \"digital_artifact\")\n for (const assertion of entity.fields.declaredHashes ?? [])\n if (\"value\" in assertion.content)\n for (const declaration of assertion.content.value)\n if (\n declaration.hash.algorithm === \"sha256\" &&\n declaration.appliesTo.kind === \"artifact\" &&\n declaration.hash.value.toLowerCase() !==\n declaration.appliesTo.reference.digest.value\n )\n problem(\n \"ARCHIVE.HASH_DECLARATION\",\n ep,\n \"Declared SHA-256 differs from the selected artifact identity. No original-file or legacy hash verification is implied.\",\n );\n }\n for (const reference of researchEntityContextReferences(entity))\n resolve(reference, ep);\n }\n entityDocuments.set(ref.sha256, entities);\n }\n function resolveEntity(\n reference: ResearchEntityReference | ArchivalEntityReference,\n pointer: string,\n assertionId?: string,\n ) {\n const document = entityDocuments.get(reference.document.sha256);\n if (!document) return;\n const entity = document.entities.find(\n (e) => e.kind === reference.target.kind && e.id === reference.target.id,\n );\n if (!entity) {\n problem(\n \"REF.ENTITY\",\n pointer,\n \"Typed entity is absent from the selected snapshot.\",\n );\n return;\n }\n const assertions = researchEntityAssertions(entity);\n if (\n reference.target.field &&\n !assertions.some((a) => a.field === reference.target.field)\n )\n problem(\n \"REF.FIELD\",\n pointer,\n \"Target field has no supplied assertions.\",\n );\n if (\n assertionId &&\n (!reference.target.field ||\n !assertions.some(\n (a) =>\n a.field === reference.target.field &&\n a.assertion.id === assertionId,\n ))\n )\n problem(\n \"REF.ASSERTION\",\n pointer,\n \"Input must select an existing assertion on its named field.\",\n );\n }\n function resolve(\n reference: ContextReference,\n pointer: string,\n assertionId?: string,\n ) {\n const context = contexts.get(reference.document.sha256);\n if (!context) return; // Missing/invalid required document was already reported.\n const entity = context.entities.find(\n (e) => e.kind === reference.target.kind && e.id === reference.target.id,\n );\n if (!entity) {\n problem(\n \"REF.ENTITY\",\n pointer,\n \"Typed entity is absent from the selected snapshot.\",\n );\n return;\n }\n const assertions = contextAssertions(entity);\n if (\n reference.target.field &&\n !assertions.some((a) => a.field === reference.target.field)\n )\n problem(\n \"REF.FIELD\",\n pointer,\n \"Target field has no supplied assertions.\",\n );\n if (\n assertionId &&\n (!reference.target.field ||\n !assertions.some(\n (a) =>\n a.field === reference.target.field &&\n a.assertion.id === assertionId,\n ))\n )\n problem(\n \"REF.ASSERTION\",\n pointer,\n \"Assessment input must select an existing assertion on its named field.\",\n );\n }\n function resolveCitation(citation: EditionCitation, pointer: string) {\n const document = entityDocuments.get(citation.document.sha256);\n if (!document) return; // The unavailable or invalid snapshot was already reported.\n const edition = document.entities.find(\n (e) => e.kind === \"source_edition\" && e.id === citation.editionId,\n );\n if (!edition || edition.kind !== \"source_edition\") {\n problem(\n \"REF.ENTITY\",\n pointer,\n \"Citation edition is absent from the selected entity snapshot.\",\n );\n return;\n }\n if (\n edition.artifact.sourceRef !== citation.artifact.sourceRef ||\n edition.artifact.digest.value !== citation.artifact.digest.value\n )\n problem(\n \"ARCHIVE.CITATION_SCOPE\",\n pointer,\n \"Citation artifact differs from the selected edition, even if titles or page numbers match.\",\n );\n const pages = edition.fields.pageCount;\n if (\n citation.locator.kind === \"page\" &&\n pages?.length === 1 &&\n pages[0]!.content.state === \"known\" &&\n citation.locator.page > pages[0]!.content.value\n )\n problem(\n \"ARCHIVE.PAGE_BOUNDS\",\n pointer,\n \"Citation exceeds the edition's explicitly declared page count.\",\n );\n }\n for (const [i, claim] of history.data.claims.entries()) {\n if (archival) {\n if (\"editionCitation\" in claim && claim.editionCitation)\n resolveCitation(\n claim.editionCitation,\n `/claims/${i}/editionCitation`,\n );\n if (\"editionInputRefs\" in claim)\n for (const [j, citation] of (claim.editionInputRefs ?? []).entries())\n resolveCitation(citation, `/claims/${i}/editionInputRefs/${j}`);\n }\n if (claim.subject.kind === \"entity\")\n resolveEntity(claim.subject.reference, `/claims/${i}/subject`);\n if (claim.kind === \"assessment\")\n for (const [j, ref] of (claim.entityInputRefs ?? []).entries())\n resolveEntity(\n ref,\n `/claims/${i}/entityInputRefs/${j}`,\n ref.assertionId,\n );\n if (claim.subject.kind === \"context\")\n resolve(claim.subject.reference, `/claims/${i}/subject`);\n if (claim.kind === \"assessment\")\n for (const [j, ref] of (claim.contextInputRefs ?? []).entries())\n resolve(ref, `/claims/${i}/contextInputRefs/${j}`, ref.assertionId);\n }\n }\n const external = snapshots.some((s) => s.status === \"failed\")\n ? \"failed\"\n : snapshots.some((s) => s.status === \"unavailable\") || !snapshots.length\n ? \"not_checked\"\n : \"passed\";\n return {\n success: history.success && issues.length === 0,\n issues,\n snapshots,\n checks: {\n structural: issues.some((i) => i.stage === \"structural\")\n ? \"failed\"\n : history.checks.structural,\n semantic:\n history.checks.structural === \"failed\" ||\n issues.some((i) => i.stage === \"structural\")\n ? \"not_checked\"\n : issues.some((i) => i.stage !== \"external\")\n ? \"failed\"\n : issues.length\n ? \"not_checked\"\n : \"passed\",\n profile: \"not_checked\",\n external,\n },\n currentClaimRefs:\n history.success && issues.length === 0 ? history.currentClaimRefs : [],\n integrityScope:\n \"supplied_entities_context_observation_and_acquisition_snapshot_bytes\",\n temporalNormalization: \"not_checked\",\n sourceArtifactIntegrity: \"not_checked\",\n scientificInterpretation: \"not_checked\",\n multiSensorFusion: \"not_checked\",\n };\n}\n","import {\n evaluateEntityHistory,\n type ResearchReviewOptions,\n type ResearchReviewResult,\n} from \"./entity-history-review\";\nexport type {\n ResearchReviewOptions,\n ResearchReviewResult,\n} from \"./entity-history-review\";\nexport async function evaluateResearchClaimHistory(\n input: unknown,\n options: ResearchReviewOptions,\n): Promise<ResearchReviewResult> {\n return evaluateEntityHistory(input, options, false);\n}\n","import {\n evaluateEntityHistory,\n type ResearchReviewOptions,\n type ResearchReviewResult,\n} from \"./entity-history-review\";\nexport type ArchivalReviewOptions = ResearchReviewOptions;\nexport type ArchivalReviewResult = ResearchReviewResult;\n/** Checks 0.4 histories and exact 0.2 entity snapshots; never fetches source files or authenticates them. */\nexport async function evaluateArchivalClaimHistory(\n input: unknown,\n options: ArchivalReviewOptions,\n): Promise<ArchivalReviewResult> {\n return evaluateEntityHistory(input, options, true);\n}\n"]}
|
|
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","../../../src/experimental/v2/context-review.ts","../../../src/experimental/v2/laboratory-dependencies.ts","../../../src/experimental/v2/entity-history-review.ts","../../../src/experimental/v2/research-entities-review.ts","../../../src/experimental/v2/archival-review.ts","../../../src/experimental/v2/laboratory-review.ts","../../../src/experimental/v2/case-review.ts","../../../src/experimental/v2/case-history-review.ts","../../../src/experimental/v2/case-links-review.ts","../../../src/experimental/v2/case-presentation.ts","../../../src/experimental/v2/context-case-presentation.ts","../../../src/experimental/v2/presentation-snapshots.ts","../../../src/experimental/v2/testimony-case-presentation.ts","../../../src/experimental/v2/archival-case-presentation.ts","../../../src/experimental/v2/material-case-presentation.ts","../../../src/experimental/v2/product-source-reader.ts","../../../src/experimental/v2/product-source-selection.ts","../../../src/experimental/v2/radar-profile-schema.ts","../../../src/experimental/v2/radar-profile-reader.ts","../../../src/experimental/v2/radar-profile.ts","../../../src/experimental/v2/advanced-radar-profile-schema.ts","../../../src/experimental/v2/advanced-radar-profile-reader.ts","../../../src/experimental/v2/advanced-radar-profile.ts","../../../src/experimental/v2/sonar-profile-schema.ts","../../../src/experimental/v2/sonar-profile-reader.ts","../../../src/experimental/v2/sonar-profile.ts","../../../src/experimental/v2/passive-sonar-profile-schema.ts","../../../src/experimental/v2/passive-sonar-profile-reader.ts","../../../src/experimental/v2/passive-sonar-profile.ts","../../../src/experimental/v2/lidar-profile-schema.ts","../../../src/experimental/v2/lidar-profile-reader.ts","../../../src/experimental/v2/lidar-profile.ts","../../../src/experimental/v2/satellite-raster-profile-schema.ts","../../../src/experimental/v2/satellite-raster-profile-reader.ts","../../../src/experimental/v2/satellite-raster-profile.ts","../../../src/experimental/v2/vocabulary-bindings.ts"],"names":["assets","ref","bytes","hash","digest","checkMethod","method","pointer","path","parseExperimentalClaimHistory","issue","field","artifact","id","z","parseAcquisitionContext","m","seen","acquisition","pin","compareUtcInstants","text","key","unknown","review","action","decode","selected","index","i","dependency","serialize","input","common","resolve","sample","p","declaration","equal","contextAssertions","parseExperimentalObservation","resolveEntity","researchEntityAssertions","resolveCitation","citation","parseObservationContext","value","snapshot","parseCaseRecord","observation","e","caseSnapshotKey","invalid","parseResearchEntities","parseArchivalEntities","parseLaboratoryEntities","instant","parseCaseClaimHistory","parseCaseLinks","histories","parsed","c","ids","parseContextClaimHistory","base","a","add","citations","citationIds","r","parseResearchClaimHistory","parseArchivalClaimHistory","parseLaboratoryClaimHistory","refs","x","labels","axis","integer","time","table","array","frame","first","last","finite","decimal","epoch","compareOffset","scaled","product","layout","validUtc","catalog"],"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","import {\n parseContextClaimHistory,\n parseObservationContext,\n parseExperimentalObservation,\n contextAssertions,\n type DocumentSnapshotRef,\n type ContextReference,\n type ContextIssue,\n type ObservationContext,\n type ExperimentalObservation,\n} from \"@disclosureos/records/experimental/v2\";\nimport { parseAcquisitionContext } from \"@disclosureos/instruments/experimental/v2\";\n\nexport interface ContextReviewOptions {\n /** Exact UTF-8 document bytes keyed by SHA-256. Nothing is fetched or normalized. */\n documents: ReadonlyMap<string, Uint8Array>;\n}\nexport interface ContextReviewResult {\n success: boolean;\n issues: ContextIssue[];\n snapshots: Array<\n DocumentSnapshotRef & { status: \"passed\" | \"failed\" | \"unavailable\" }\n >;\n checks: {\n structural: 'passed' | 'failed';\n semantic: 'passed' | 'failed' | 'not_checked';\n profile: 'not_checked';\n external: 'passed' | 'failed' | 'not_checked';\n };\n currentClaimRefs: string[];\n integrityScope: \"supplied_context_observation_and_acquisition_snapshot_bytes\";\n temporalNormalization: \"not_checked\";\n sourceArtifactIntegrity: \"not_checked\";\n scientificInterpretation: \"not_checked\";\n multiSensorFusion: \"not_checked\";\n}\n/** Closed C1 role table: no unit guessing, conversion or unrestricted quantity synonyms. */\nexport const CONTEXT_MEASUREMENT_ROLES = {\n size: {\n entities: [\"reported_object\"],\n quantities: [\"size\", \"length\"],\n units: [\"m\", \"km\"],\n },\n count: { entities: [\"reported_object\"], quantities: [\"count\"], units: [\"1\"] },\n speed: {\n entities: [\"reported_object\", \"platform\"],\n quantities: [\"speed\"],\n units: [\"m/s\", \"km/h\"],\n },\n altitude: {\n entities: [\"reported_object\", \"platform\", \"place\"],\n quantities: [\"altitude\", \"elevation\"],\n units: [\"m\", \"km\"],\n },\n heading: {\n entities: [\"reported_object\", \"platform\"],\n quantities: [\"heading\"],\n units: [\"deg\"],\n },\n ambient_temperature: {\n entities: [\"environment\"],\n quantities: [\"temperature\", \"ambient_temperature\"],\n units: [\"Cel\", \"K\"],\n },\n relative_humidity: {\n entities: [\"environment\"],\n quantities: [\"relative_humidity\"],\n units: [\"%\"],\n },\n wind_speed: {\n entities: [\"environment\"],\n quantities: [\"wind_speed\"],\n units: [\"m/s\", \"km/h\"],\n },\n moon_illumination: {\n entities: [\"environment\"],\n quantities: [\"moon_illumination\"],\n units: [\"%\", \"1\"],\n },\n duration: {\n entities: [\"temporal\", \"collection\"],\n quantities: [\"duration\"],\n units: [\"s\", \"min\", \"h\"],\n },\n distance: {\n entities: [\"place\"],\n quantities: [\"distance\"],\n units: [\"m\", \"km\"],\n },\n bearing: { entities: [\"place\"], quantities: [\"bearing\"], units: [\"deg\"] },\n water_depth: {\n entities: [\"place\"],\n quantities: [\"water_depth\"],\n units: [\"m\"],\n },\n coordinate_precision: {\n entities: [\"place\"],\n quantities: [\"coordinate_precision\"],\n units: [\"m\"],\n },\n time_alignment: {\n entities: [\"collection\"],\n quantities: [\"time_alignment_uncertainty\"],\n units: [\"s\", \"ms\"],\n },\n} as const;\nfunction equal(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (!a || !b || typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (Array.isArray(a) || Array.isArray(b))\n return (\n Array.isArray(a) &&\n Array.isArray(b) &&\n a.length === b.length &&\n a.every((v, i) => equal(v, b[i]))\n );\n const x = a as Record<string, unknown>,\n y = b as Record<string, unknown>;\n return (\n Object.keys(x).length === Object.keys(y).length &&\n Object.keys(x).every(\n (k) => Object.prototype.hasOwnProperty.call(y, k) && equal(x[k], y[k]),\n )\n );\n}\nexport async function evaluateContextClaimHistory(\n input: unknown,\n options: ContextReviewOptions,\n): Promise<ContextReviewResult> {\n const history = parseContextClaimHistory(input);\n const issues: ContextIssue[] = history.issues.map((i) => ({\n code: i.code,\n stage: i.stage,\n pointer: i.pointer,\n message: i.message,\n }));\n const snapshots: ContextReviewResult[\"snapshots\"] = [];\n const contexts = new Map<string, ObservationContext>();\n const problem = (\n code: string,\n pointer: string,\n message: string,\n stage: ContextIssue[\"stage\"] = \"semantic\",\n ) => issues.push({ code, pointer, message, stage });\n async function load(\n ref: DocumentSnapshotRef,\n pointer: string,\n ): Promise<unknown> {\n const supplied = options.documents.get(ref.sha256);\n const bytes = supplied ? Uint8Array.from(supplied) : undefined;\n if (!bytes) {\n snapshots.push({ ...ref, status: \"unavailable\" });\n problem(\n \"SNAPSHOT.UNAVAILABLE\",\n pointer,\n \"Required snapshot bytes were not supplied.\",\n \"external\",\n );\n return;\n }\n if (\n [\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(\"\") !== ref.sha256\n ) {\n snapshots.push({ ...ref, status: \"failed\" });\n problem(\n \"SNAPSHOT.DIGEST\",\n pointer,\n \"Supplied bytes do not match the reference digest.\",\n \"external\",\n );\n return;\n }\n let value: unknown;\n try {\n value = JSON.parse(\n new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes),\n );\n } catch {\n snapshots.push({ ...ref, status: \"failed\" });\n problem(\n \"SNAPSHOT.JSON\",\n pointer,\n \"Snapshot is not a UTF-8 JSON document.\",\n \"external\",\n );\n return;\n }\n snapshots.push({ ...ref, status: \"passed\" });\n if (\n !value ||\n typeof value !== \"object\" ||\n (value as { id?: unknown }).id !== ref.documentId\n ) {\n problem(\n \"SNAPSHOT.IDENTITY\",\n pointer,\n \"Snapshot document ID does not match its reference.\",\n );\n return;\n }\n return value;\n }\n async function checkContext(\n context: ObservationContext,\n observation: ExperimentalObservation,\n p: string,\n ) {\n const sources = new Map<\n string,\n | ExperimentalObservation[\"sources\"][number]\n | ExperimentalObservation[\"products\"][number]\n >([\n ...observation.sources.map((s) => [`source:${s.id}`, s] as const),\n ...observation.products.map((s) => [`product:${s.id}`, s] as const),\n ]);\n const methods = new Map(\n observation.methods.map((m) => [`method:${m.id}`, m]),\n );\n const measurements = new Map(\n observation.measurements.map((m) => [m.id, m]),\n );\n let acquisitionIds: Set<string> | undefined;\n if (context.acquisitionRef) {\n const value = await load(context.acquisitionRef, `${p}/acquisitionRef`);\n if (value !== undefined) {\n const acquisition = parseAcquisitionContext(value);\n if (!acquisition.success)\n problem(\n \"CONTEXT.ACQUISITION\",\n `${p}/acquisitionRef`,\n \"Acquisition snapshot does not satisfy its declared contract.\",\n acquisition.checks.structural === \"failed\"\n ? \"structural\"\n : \"semantic\",\n );\n else\n acquisitionIds = new Set(\n acquisition.data.acquisitions.map((a) => a.id),\n );\n }\n }\n for (const [index, entity] of context.entities.entries()) {\n const ep = `${p}/entities/${index}`;\n for (const { field, assertion } of contextAssertions(entity)) {\n const prov = assertion.content.provenance;\n if (prov) {\n const source = sources.get(prov.sourceRef);\n if (!source)\n problem(\n \"REF.LOCAL_RESOLUTION\",\n ep,\n \"Context source is absent from the scoped observation.\",\n );\n else if (\n source.digest &&\n prov.sourceDigest &&\n source.digest.value !== prov.sourceDigest.value\n )\n problem(\n \"SOURCE.DIGEST_MISMATCH\",\n ep,\n \"Source digest declarations differ.\",\n );\n }\n const value = assertion.content.value;\n if (value === undefined) continue;\n if (field === \"productRefs\")\n for (const ref of value as string[])\n if (!sources.has(ref))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n ep,\n \"Collection artifact is not declared.\",\n );\n if (field === \"acquisitionIds\")\n for (const id of value as string[])\n if (!acquisitionIds?.has(id))\n problem(\n \"REF.ACQUISITION\",\n ep,\n \"Acquisition ID needs a supplied, valid acquisition snapshot.\",\n );\n if (field === \"position\") {\n const checked = parseExperimentalObservation({\n ...observation,\n position: { state: \"known\", value, sourceRefs: [prov!.sourceRef] },\n });\n if (!checked.success)\n problem(\n \"CONTEXT.POSITION\",\n ep,\n \"Context position must satisfy the observation frame, unit and source-reference rules.\",\n );\n }\n }\n for (const selection of entity.selections ?? []) {\n if (\n methods.get(selection.methodRef)?.version !== selection.methodVersion\n )\n problem(\n \"METHOD.VERSION_MISMATCH\",\n ep,\n \"Selection method/version must match the observation inventory.\",\n );\n }\n const proximityLinks = contextAssertions(entity).flatMap(\n ({ field, assertion }) => {\n if (field !== \"proximity\" || !assertion.content.value) return [];\n const value = assertion.content.value as {\n targetPlaceId: string;\n distanceMeasurementId?: string;\n bearingMeasurementId?: string;\n };\n return [\n ...(value.distanceMeasurementId\n ? [\n {\n id: assertion.id,\n role: \"distance\" as const,\n measurementId: value.distanceMeasurementId,\n relatedPlaceId: value.targetPlaceId,\n },\n ]\n : []),\n ...(value.bearingMeasurementId\n ? [\n {\n id: assertion.id,\n role: \"bearing\" as const,\n measurementId: value.bearingMeasurementId,\n relatedPlaceId: value.targetPlaceId,\n },\n ]\n : []),\n ];\n },\n );\n for (const link of [...(entity.measurements ?? []), ...proximityLinks]) {\n const role = CONTEXT_MEASUREMENT_ROLES[link.role];\n const measurement = measurements.get(link.measurementId);\n if (!measurement) {\n problem(\n \"REF.MEASUREMENT\",\n ep,\n \"Measurement is absent from the scoped observation.\",\n );\n continue;\n }\n if (\n !(role.entities as readonly string[]).includes(entity.kind) ||\n !(role.quantities as readonly string[]).includes(\n measurement.quantity,\n ) ||\n !(role.units as readonly string[]).includes(measurement.value.unit)\n )\n problem(\n \"CONTEXT.MEASUREMENT_ROLE\",\n ep,\n \"Measurement entity, quantity and unit must match the declared role.\",\n );\n const value = measurement.value.value;\n if (\n [\n \"count\",\n \"size\",\n \"speed\",\n \"wind_speed\",\n \"duration\",\n \"distance\",\n \"water_depth\",\n \"coordinate_precision\",\n \"time_alignment\",\n ].includes(link.role) &&\n value < 0\n )\n problem(\n \"CONTEXT.MEASUREMENT_RANGE\",\n ep,\n \"This role cannot be negative.\",\n );\n if (link.role === \"count\" && !Number.isInteger(value))\n problem(\"CONTEXT.MEASUREMENT_RANGE\", ep, \"Count must be an integer.\");\n if (\n [\"heading\", \"bearing\"].includes(link.role) &&\n (value < 0 || value > 360)\n )\n problem(\n \"CONTEXT.MEASUREMENT_RANGE\",\n ep,\n \"Direction must lie between zero and 360 degrees.\",\n );\n if (\n [\"relative_humidity\", \"moon_illumination\"].includes(link.role) &&\n (value < 0 || value > (measurement.value.unit === \"1\" ? 1 : 100))\n )\n problem(\n \"CONTEXT.MEASUREMENT_RANGE\",\n ep,\n \"Fraction lies outside its unit range.\",\n );\n if ([\"distance\", \"bearing\"].includes(link.role) && !link.relatedPlaceId)\n problem(\n \"CONTEXT.RELATED_PLACE\",\n ep,\n \"Distance and bearing must identify the other place.\",\n );\n }\n }\n }\n if (history.success) {\n for (const [i, ref] of history.data.contextRefs.entries()) {\n const p = `/contextRefs/${i}`;\n const value = await load(ref, p);\n if (value === undefined) continue;\n const parsed = parseObservationContext(value);\n if (!parsed.success) {\n issues.push(\n ...parsed.issues.map((i) => ({ ...i, pointer: p + i.pointer })),\n );\n continue;\n }\n const context = parsed.data;\n const observationBytes = await load(\n context.observationRef,\n `${p}/observationRef`,\n );\n if (observationBytes === undefined) continue;\n const observation = parseExperimentalObservation(observationBytes);\n if (\n !observation.success ||\n !equal(observationBytes, history.data.observation)\n ) {\n problem(\n \"CONTEXT.OBSERVATION_SCOPE\",\n p,\n \"Context must select the same complete observation snapshot as the history.\",\n observation.checks.structural === \"failed\"\n ? \"structural\"\n : \"semantic\",\n );\n continue;\n }\n await checkContext(context, observation.data, p);\n contexts.set(ref.sha256, context);\n }\n function resolve(\n reference: ContextReference,\n pointer: string,\n assertionId?: string,\n ) {\n const context = contexts.get(reference.document.sha256);\n if (!context) return; // Missing/invalid required document was already reported.\n const entity = context.entities.find(\n (e) => e.kind === reference.target.kind && e.id === reference.target.id,\n );\n if (!entity) {\n problem(\n \"REF.ENTITY\",\n pointer,\n \"Typed entity is absent from the selected snapshot.\",\n );\n return;\n }\n const assertions = contextAssertions(entity);\n if (\n reference.target.field &&\n !assertions.some((a) => a.field === reference.target.field)\n )\n problem(\n \"REF.FIELD\",\n pointer,\n \"Target field has no supplied assertions.\",\n );\n if (\n assertionId &&\n (!reference.target.field ||\n !assertions.some(\n (a) =>\n a.field === reference.target.field &&\n a.assertion.id === assertionId,\n ))\n )\n problem(\n \"REF.ASSERTION\",\n pointer,\n \"Assessment input must select an existing assertion on its named field.\",\n );\n }\n for (const [i, claim] of history.data.claims.entries()) {\n if (claim.subject.kind === \"context\")\n resolve(claim.subject.reference, `/claims/${i}/subject`);\n if (claim.kind === \"assessment\")\n for (const [j, ref] of (claim.contextInputRefs ?? []).entries())\n resolve(ref, `/claims/${i}/contextInputRefs/${j}`, ref.assertionId);\n }\n }\n const external = snapshots.some((s) => s.status === \"failed\")\n ? \"failed\"\n : snapshots.some((s) => s.status === \"unavailable\") || !snapshots.length\n ? \"not_checked\"\n : \"passed\";\n return {\n success: history.success && issues.length === 0,\n issues,\n snapshots,\n checks: {\n structural: issues.some((i) => i.stage === \"structural\")\n ? \"failed\"\n : history.checks.structural,\n semantic:\n history.checks.structural === \"failed\" ||\n issues.some((i) => i.stage === \"structural\")\n ? \"not_checked\"\n : issues.some((i) => i.stage !== \"external\")\n ? \"failed\"\n : issues.length\n ? \"not_checked\"\n : \"passed\",\n profile: \"not_checked\",\n external,\n },\n currentClaimRefs:\n history.success && issues.length === 0 ? history.currentClaimRefs : [],\n integrityScope:\n \"supplied_context_observation_and_acquisition_snapshot_bytes\",\n temporalNormalization: \"not_checked\",\n sourceArtifactIntegrity: \"not_checked\",\n scientificInterpretation: \"not_checked\",\n multiSensorFusion: \"not_checked\",\n };\n}\n","import {\n researchEntityAssertions,\n type LaboratoryEntities,\n type ExperimentalObservation,\n type DocumentSnapshotRef,\n type ContextIssue,\n} from \"@disclosureos/records/experimental/v2\";\nimport { PhysicalSampleSelectionSchema } from \"./physical-samples\";\ntype Problem = (\n code: string,\n pointer: string,\n message: string,\n stage?: ContextIssue[\"stage\"],\n) => void;\n/** Resolve declarations against supplied snapshots and the scoped inventory. Never fetch report bytes or evaluate laboratory competence. */\nexport async function checkLaboratoryDependencies(\n entities: LaboratoryEntities,\n observation: ExperimentalObservation,\n historyId: string,\n pointer: string,\n load: (ref: DocumentSnapshotRef, pointer: string) => Promise<unknown>,\n problem: Problem,\n) {\n const sources = new Map<\n string,\n | ExperimentalObservation[\"sources\"][number]\n | ExperimentalObservation[\"products\"][number]\n >([\n ...observation.sources.map((s) => [`source:${s.id}`, s] as const),\n ...observation.products.map((s) => [`product:${s.id}`, s] as const),\n ]);\n const measurements = new Map(observation.measurements.map((m) => [m.id, m]));\n const methods = new Map(\n observation.methods.map((m) => [`method:${m.id}`, m]),\n );\n const selections = new Map<\n string,\n ReturnType<typeof PhysicalSampleSelectionSchema.parse>\n >();\n const known = (\n e: LaboratoryEntities[\"entities\"][number],\n field: string,\n ): unknown => {\n const values = researchEntityAssertions(e).filter((a) => a.field === field);\n return values.length === 1 && values[0]!.assertion.content.state === \"known\"\n ? values[0]!.assertion.content.value\n : undefined;\n };\n for (const [i, e] of entities.entities.entries()) {\n const p = `${pointer}/entities/${i}`;\n if (e.kind === \"material\" && e.selectionRef) {\n const ref = e.selectionRef;\n // Validate every explicit reference identity even if its digest was seen before.\n const raw = await load(ref.document, `${p}/selectionRef/document`);\n if (raw === undefined) continue;\n const parsed = PhysicalSampleSelectionSchema.safeParse(raw);\n if (!parsed.success) {\n problem(\n \"MATERIAL.SELECTION_CONTRACT\",\n p,\n \"Selection does not satisfy its explicit contract.\",\n \"structural\",\n );\n continue;\n }\n const selection = parsed.data;\n if (\n selection.observationId !== observation.id ||\n selection.historyId !== historyId\n )\n problem(\n \"MATERIAL.SELECTION_SCOPE\",\n p,\n \"Selection must belong to this observation and history identity.\",\n );\n if (\n new Set(selection.samples.map((s) => s.id)).size !==\n selection.samples.length\n )\n problem(\"REF.UNIQUE_ID\", p, \"Selection specimen identities repeat.\");\n for (const sample of selection.samples) {\n const refs: string[] = [];\n if (sample.collection.state === \"known\")\n refs.push(sample.collection.recordRef);\n if (sample.currentCustodian.state === \"known\")\n refs.push(sample.currentCustodian.recordRef);\n if (sample.custody.state === \"documented\") {\n if (\n new Set(sample.custody.transfers.map((t) => t.id)).size !==\n sample.custody.transfers.length\n )\n problem(\n \"REF.UNIQUE_ID\",\n p,\n \"Selected transfer identities repeat within a specimen.\",\n );\n refs.push(...sample.custody.transfers.map((t) => t.recordRef));\n }\n for (const r of refs)\n if (!sources.has(r))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n p,\n \"Selection record is absent from the scoped observation inventory.\",\n );\n }\n const sample = selection.samples.find((s) => s.id === ref.sampleId);\n if (!sample)\n problem(\n \"MATERIAL.SELECTION_SAMPLE\",\n p,\n \"Selected specimen does not exist in the exact snapshot.\",\n );\n else if (e.lineage.kind !== \"unknown\" && sample.lineage !== \"unknown\") {\n const preparationId =\n e.lineage.kind === \"derived\" ? e.lineage.preparationId : undefined;\n const preparation = entities.entities.find(\n (p) => p.kind === \"material_preparation\" && p.id === preparationId,\n );\n const expected =\n e.lineage.kind === \"collected\"\n ? \"collected_specimen\"\n : preparation?.kind === \"material_preparation\" &&\n preparation.operation === \"mixture\"\n ? \"mixture\"\n : \"derived_sample\";\n if (sample.lineage !== expected)\n problem(\n \"MATERIAL.SELECTION_LINEAGE\",\n p,\n \"Known specimen lineage differs from the selected specimen declaration.\",\n );\n }\n selections.set(ref.document.sha256, selection);\n }\n if (e.kind !== \"laboratory_analysis\" && e.kind !== \"laboratory_result\")\n continue;\n for (const a of e.fields.reportArtifacts ?? [])\n if (\"value\" in a.content)\n for (const ref of a.content.value) {\n const source = sources.get(ref.sourceRef);\n if (!source?.digest || source.digest.value !== ref.digest.value)\n problem(\n \"LAB.REPORT_IDENTITY\",\n p,\n \"Report must name the same SHA-256 declaration as the scoped inventory; report bytes remain unchecked.\",\n );\n }\n if (e.kind === \"laboratory_analysis\") {\n for (const a of e.fields.method ?? [])\n if (\"value\" in a.content) {\n const method = a.content.value;\n if (methods.get(method.methodRef)?.version !== method.methodVersion)\n problem(\n \"METHOD.VERSION_MISMATCH\",\n `${p}/fields/method`,\n \"Laboratory method and version must match the observation inventory.\",\n );\n }\n } else {\n for (const a of e.fields.result ?? [])\n if (\"value\" in a.content && a.content.value.kind === \"quantitative\") {\n const result = a.content.value,\n measurement = measurements.get(result.measurementId);\n if (!measurement) {\n problem(\n \"REF.MEASUREMENT\",\n `${p}/fields/result`,\n \"Quantitative result must resolve to the scoped observation measurement.\",\n );\n continue;\n }\n if (\n result.limit.state === \"reported\" &&\n result.limit.value.unit !== measurement.value.unit\n )\n problem(\n \"UNIT.MISMATCH\",\n `${p}/fields/result`,\n \"Analytical threshold and measurement units must agree exactly; no conversion is inferred.\",\n );\n }\n }\n }\n for (const [i, e] of entities.entities.entries()) {\n if (e.kind !== \"material_custody_action\" || !e.transferRef) continue;\n const p = `${pointer}/entities/${i}/transferRef`,\n ref = e.transferRef;\n const sample = selections\n .get(ref.document.sha256)\n ?.samples.find((s) => s.id === ref.sampleId);\n // The required selection is loaded by its material; unavailable or invalid snapshots already fail.\n if (!sample) continue;\n const transfers =\n sample.custody.state === \"documented\" ? sample.custody.transfers : [];\n const index = transfers.findIndex((t) => t.id === ref.transferId),\n transfer = transfers[index];\n if (!transfer) {\n problem(\n \"MATERIAL.SELECTION_TRANSFER\",\n p,\n \"Transfer is absent from the selected specimen's declared custody.\",\n );\n continue;\n }\n for (const field of [\"from\", \"to\"] as const) {\n const declaration = known(e, field);\n if (typeof declaration === \"string\" && declaration !== transfer[field])\n problem(\n \"MATERIAL.TRANSFER_PARTY\",\n p,\n \"An unambiguous transfer party differs from the selected transfer declaration.\",\n );\n }\n if (e.predecessor.kind === \"start\" && index !== 0)\n problem(\n \"MATERIAL.TRANSFER_ORDER\",\n p,\n \"A selected later transfer cannot be described as the start of its chain.\",\n );\n if (e.predecessor.kind === \"action\") {\n const predecessorId = e.predecessor.id;\n const prior = entities.entities.find(\n (p) => p.kind === \"material_custody_action\" && p.id === predecessorId,\n );\n if (\n prior?.kind === \"material_custody_action\" &&\n prior.transferRef?.document.sha256 === ref.document.sha256 &&\n transfers[index - 1]?.id !== prior.transferRef.transferId\n )\n problem(\n \"MATERIAL.TRANSFER_ORDER\",\n p,\n \"Selected predecessor order must agree with the existing specimen transfer sequence.\",\n );\n }\n }\n}\n","// Shared supplied-snapshot checks. Each public entry chooses its explicit version;\n// no history or entity document is projected through an older parser.\nimport {\n parseLaboratoryClaimHistory,\n parseLaboratoryEntities,\n type LaboratoryEntities,\n type LaboratoryEntityReference,\n type LaboratoryEditionCitation,\n parseResearchClaimHistory,\n parseArchivalClaimHistory,\n parseArchivalEntities,\n archivalArtifactReferences,\n type ArchivalEntities,\n type ArchivalEntityReference,\n type EditionCitation,\n parseObservationContext,\n parseExperimentalObservation,\n contextAssertions,\n parseResearchEntities,\n researchEntityAssertions,\n researchEntityContextReferences,\n type ResearchEntities,\n type ResearchEntityReference,\n type DocumentSnapshotRef,\n type ContextReference,\n type ContextIssue,\n type ObservationContext,\n type ExperimentalObservation,\n} from \"@disclosureos/records/experimental/v2\";\nimport { checkLaboratoryDependencies } from \"./laboratory-dependencies\";\nimport { parseAcquisitionContext } from \"@disclosureos/instruments/experimental/v2\";\n\nexport interface ResearchReviewOptions {\n /** Exact UTF-8 document bytes keyed by SHA-256. Nothing is fetched or normalized. */\n documents: ReadonlyMap<string, Uint8Array>;\n}\nexport interface ResearchReviewResult {\n success: boolean;\n issues: ContextIssue[];\n snapshots: Array<\n DocumentSnapshotRef & { status: \"passed\" | \"failed\" | \"unavailable\" }\n >;\n checks: {\n structural: \"passed\" | \"failed\";\n semantic: \"passed\" | \"failed\" | \"not_checked\";\n profile: \"not_checked\";\n external: \"passed\" | \"failed\" | \"not_checked\";\n };\n currentClaimRefs: string[];\n integrityScope: \"supplied_entities_context_observation_and_acquisition_snapshot_bytes\";\n temporalNormalization: \"not_checked\";\n sourceArtifactIntegrity: \"not_checked\";\n scientificInterpretation: \"not_checked\";\n multiSensorFusion: \"not_checked\";\n}\n// Reuse C1's closed measurement role table without changing the published evaluator.\nimport { CONTEXT_MEASUREMENT_ROLES as RESEARCH_CONTEXT_MEASUREMENT_ROLES } from \"./context-review\";\nfunction equal(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (!a || !b || typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (Array.isArray(a) || Array.isArray(b))\n return (\n Array.isArray(a) &&\n Array.isArray(b) &&\n a.length === b.length &&\n a.every((v, i) => equal(v, b[i]))\n );\n const x = a as Record<string, unknown>,\n y = b as Record<string, unknown>;\n return (\n Object.keys(x).length === Object.keys(y).length &&\n Object.keys(x).every(\n (k) => Object.prototype.hasOwnProperty.call(y, k) && equal(x[k], y[k]),\n )\n );\n}\nexport async function evaluateEntityHistory(\n input: unknown,\n options: ResearchReviewOptions,\n mode: \"research\" | \"archival\" | \"laboratory\",\n): Promise<ResearchReviewResult> {\n const archival = mode !== \"research\";\n const history =\n mode === \"laboratory\"\n ? parseLaboratoryClaimHistory(input)\n : archival\n ? parseArchivalClaimHistory(input)\n : parseResearchClaimHistory(input);\n const issues: ContextIssue[] = history.issues.map((i) => ({\n code: i.code,\n stage: i.stage,\n pointer: i.pointer,\n message: i.message,\n }));\n const snapshots: ResearchReviewResult[\"snapshots\"] = [];\n const contexts = new Map<string, ObservationContext>();\n const entityDocuments = new Map<\n string,\n ResearchEntities | ArchivalEntities | LaboratoryEntities\n >();\n const problem = (\n code: string,\n pointer: string,\n message: string,\n stage: ContextIssue[\"stage\"] = \"semantic\",\n ) => issues.push({ code, pointer, message, stage });\n async function load(\n ref: DocumentSnapshotRef,\n pointer: string,\n ): Promise<unknown> {\n const supplied = options.documents.get(ref.sha256);\n const bytes = supplied ? Uint8Array.from(supplied) : undefined;\n if (!bytes) {\n snapshots.push({ ...ref, status: \"unavailable\" });\n problem(\n \"SNAPSHOT.UNAVAILABLE\",\n pointer,\n \"Required snapshot bytes were not supplied.\",\n \"external\",\n );\n return;\n }\n if (\n [\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(\"\") !== ref.sha256\n ) {\n snapshots.push({ ...ref, status: \"failed\" });\n problem(\n \"SNAPSHOT.DIGEST\",\n pointer,\n \"Supplied bytes do not match the reference digest.\",\n \"external\",\n );\n return;\n }\n let value: unknown;\n try {\n value = JSON.parse(\n new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes),\n );\n } catch {\n snapshots.push({ ...ref, status: \"failed\" });\n problem(\n \"SNAPSHOT.JSON\",\n pointer,\n \"Snapshot is not a UTF-8 JSON document.\",\n \"external\",\n );\n return;\n }\n snapshots.push({ ...ref, status: \"passed\" });\n if (\n !value ||\n typeof value !== \"object\" ||\n (value as { id?: unknown }).id !== ref.documentId\n ) {\n problem(\n \"SNAPSHOT.IDENTITY\",\n pointer,\n \"Snapshot document ID does not match its reference.\",\n );\n return;\n }\n return value;\n }\n async function checkContext(\n context: ObservationContext,\n observation: ExperimentalObservation,\n p: string,\n ) {\n const sources = new Map<\n string,\n | ExperimentalObservation[\"sources\"][number]\n | ExperimentalObservation[\"products\"][number]\n >([\n ...observation.sources.map((s) => [`source:${s.id}`, s] as const),\n ...observation.products.map((s) => [`product:${s.id}`, s] as const),\n ]);\n const methods = new Map(\n observation.methods.map((m) => [`method:${m.id}`, m]),\n );\n const measurements = new Map(\n observation.measurements.map((m) => [m.id, m]),\n );\n let acquisitionIds: Set<string> | undefined;\n if (context.acquisitionRef) {\n const value = await load(context.acquisitionRef, `${p}/acquisitionRef`);\n if (value !== undefined) {\n const acquisition = parseAcquisitionContext(value);\n if (!acquisition.success)\n problem(\n \"CONTEXT.ACQUISITION\",\n `${p}/acquisitionRef`,\n \"Acquisition snapshot does not satisfy its declared contract.\",\n acquisition.checks.structural === \"failed\"\n ? \"structural\"\n : \"semantic\",\n );\n else\n acquisitionIds = new Set(\n acquisition.data.acquisitions.map((a) => a.id),\n );\n }\n }\n for (const [index, entity] of context.entities.entries()) {\n const ep = `${p}/entities/${index}`;\n for (const { field, assertion } of contextAssertions(entity)) {\n const prov = assertion.content.provenance;\n if (prov) {\n const source = sources.get(prov.sourceRef);\n if (!source)\n problem(\n \"REF.LOCAL_RESOLUTION\",\n ep,\n \"Context source is absent from the scoped observation.\",\n );\n else if (\n source.digest &&\n prov.sourceDigest &&\n source.digest.value !== prov.sourceDigest.value\n )\n problem(\n \"SOURCE.DIGEST_MISMATCH\",\n ep,\n \"Source digest declarations differ.\",\n );\n }\n const value = assertion.content.value;\n if (value === undefined) continue;\n if (field === \"productRefs\")\n for (const ref of value as string[])\n if (!sources.has(ref))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n ep,\n \"Collection artifact is not declared.\",\n );\n if (field === \"acquisitionIds\")\n for (const id of value as string[])\n if (!acquisitionIds?.has(id))\n problem(\n \"REF.ACQUISITION\",\n ep,\n \"Acquisition ID needs a supplied, valid acquisition snapshot.\",\n );\n if (field === \"position\") {\n const checked = parseExperimentalObservation({\n ...observation,\n position: { state: \"known\", value, sourceRefs: [prov!.sourceRef] },\n });\n if (!checked.success)\n problem(\n \"CONTEXT.POSITION\",\n ep,\n \"Context position must satisfy the observation frame, unit and source-reference rules.\",\n );\n }\n }\n for (const selection of entity.selections ?? []) {\n if (\n methods.get(selection.methodRef)?.version !== selection.methodVersion\n )\n problem(\n \"METHOD.VERSION_MISMATCH\",\n ep,\n \"Selection method/version must match the observation inventory.\",\n );\n }\n const proximityLinks = contextAssertions(entity).flatMap(\n ({ field, assertion }) => {\n if (field !== \"proximity\" || !assertion.content.value) return [];\n const value = assertion.content.value as {\n targetPlaceId: string;\n distanceMeasurementId?: string;\n bearingMeasurementId?: string;\n };\n return [\n ...(value.distanceMeasurementId\n ? [\n {\n id: assertion.id,\n role: \"distance\" as const,\n measurementId: value.distanceMeasurementId,\n relatedPlaceId: value.targetPlaceId,\n },\n ]\n : []),\n ...(value.bearingMeasurementId\n ? [\n {\n id: assertion.id,\n role: \"bearing\" as const,\n measurementId: value.bearingMeasurementId,\n relatedPlaceId: value.targetPlaceId,\n },\n ]\n : []),\n ];\n },\n );\n for (const link of [...(entity.measurements ?? []), ...proximityLinks]) {\n const role = RESEARCH_CONTEXT_MEASUREMENT_ROLES[link.role];\n const measurement = measurements.get(link.measurementId);\n if (!measurement) {\n problem(\n \"REF.MEASUREMENT\",\n ep,\n \"Measurement is absent from the scoped observation.\",\n );\n continue;\n }\n if (\n !(role.entities as readonly string[]).includes(entity.kind) ||\n !(role.quantities as readonly string[]).includes(\n measurement.quantity,\n ) ||\n !(role.units as readonly string[]).includes(measurement.value.unit)\n )\n problem(\n \"CONTEXT.MEASUREMENT_ROLE\",\n ep,\n \"Measurement entity, quantity and unit must match the declared role.\",\n );\n const value = measurement.value.value;\n if (\n [\n \"count\",\n \"size\",\n \"speed\",\n \"wind_speed\",\n \"duration\",\n \"distance\",\n \"water_depth\",\n \"coordinate_precision\",\n \"time_alignment\",\n ].includes(link.role) &&\n value < 0\n )\n problem(\n \"CONTEXT.MEASUREMENT_RANGE\",\n ep,\n \"This role cannot be negative.\",\n );\n if (link.role === \"count\" && !Number.isInteger(value))\n problem(\"CONTEXT.MEASUREMENT_RANGE\", ep, \"Count must be an integer.\");\n if (\n [\"heading\", \"bearing\"].includes(link.role) &&\n (value < 0 || value > 360)\n )\n problem(\n \"CONTEXT.MEASUREMENT_RANGE\",\n ep,\n \"Direction must lie between zero and 360 degrees.\",\n );\n if (\n [\"relative_humidity\", \"moon_illumination\"].includes(link.role) &&\n (value < 0 || value > (measurement.value.unit === \"1\" ? 1 : 100))\n )\n problem(\n \"CONTEXT.MEASUREMENT_RANGE\",\n ep,\n \"Fraction lies outside its unit range.\",\n );\n if ([\"distance\", \"bearing\"].includes(link.role) && !link.relatedPlaceId)\n problem(\n \"CONTEXT.RELATED_PLACE\",\n ep,\n \"Distance and bearing must identify the other place.\",\n );\n }\n }\n }\n if (history.success) {\n for (const [i, ref] of history.data.contextRefs.entries()) {\n const p = `/contextRefs/${i}`;\n const value = await load(ref, p);\n if (value === undefined) continue;\n const parsed = parseObservationContext(value);\n if (!parsed.success) {\n issues.push(\n ...parsed.issues.map((i) => ({ ...i, pointer: p + i.pointer })),\n );\n continue;\n }\n const context = parsed.data;\n const observationBytes = await load(\n context.observationRef,\n `${p}/observationRef`,\n );\n if (observationBytes === undefined) continue;\n const observation = parseExperimentalObservation(observationBytes);\n if (\n !observation.success ||\n !equal(observationBytes, history.data.observation)\n ) {\n problem(\n \"CONTEXT.OBSERVATION_SCOPE\",\n p,\n \"Context must select the same complete observation snapshot as the history.\",\n observation.checks.structural === \"failed\"\n ? \"structural\"\n : \"semantic\",\n );\n continue;\n }\n await checkContext(context, observation.data, p);\n contexts.set(ref.sha256, context);\n }\n for (const [i, ref] of history.data.entityRefs.entries()) {\n const p = `/entityRefs/${i}`;\n const value = await load(ref, p);\n if (value === undefined) continue;\n const parsed =\n mode === \"laboratory\"\n ? parseLaboratoryEntities(value)\n : archival\n ? parseArchivalEntities(value)\n : parseResearchEntities(value);\n if (!parsed.success) {\n issues.push(\n ...parsed.issues.map((i) => ({ ...i, pointer: p + i.pointer })),\n );\n continue;\n }\n const entities = parsed.data;\n const raw = await load(entities.observationRef, `${p}/observationRef`);\n if (raw === undefined) continue;\n const observation = parseExperimentalObservation(raw);\n if (!observation.success || !equal(raw, history.data.observation)) {\n problem(\n \"ENTITIES.OBSERVATION_SCOPE\",\n p,\n \"Research entities must select the same complete observation snapshot as the history.\",\n );\n continue;\n }\n const contextSnapshots = new Set(\n history.data.contextRefs.map((r) => JSON.stringify(r)),\n );\n for (const r of entities.contextRefs)\n if (!contextSnapshots.has(JSON.stringify(r)))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n p,\n \"Entity context dependency must be declared in the history and checked.\",\n );\n const sources = new Map<\n string,\n | ExperimentalObservation[\"sources\"][number]\n | ExperimentalObservation[\"products\"][number]\n >([\n ...observation.data.sources.map((x) => [`source:${x.id}`, x] as const),\n ...observation.data.products.map(\n (x) => [`product:${x.id}`, x] as const,\n ),\n ]);\n for (const [j, entity] of entities.entities.entries()) {\n const ep = `${p}/entities/${j}`;\n for (const { field, assertion } of researchEntityAssertions(entity)) {\n const prov = assertion.content.provenance;\n if (prov) {\n const source = sources.get(prov.sourceRef);\n if (!source)\n problem(\n \"REF.LOCAL_RESOLUTION\",\n ep,\n \"Entity source is absent from the scoped observation.\",\n );\n else if (\n source.digest &&\n prov.sourceDigest &&\n source.digest.value !== prov.sourceDigest.value\n )\n problem(\n \"SOURCE.DIGEST_MISMATCH\",\n ep,\n \"Source digest declarations differ.\",\n );\n }\n const value = assertion.content.value;\n const refs =\n field === \"sourceDocument\" && typeof value === \"string\"\n ? [value]\n : field === \"supportRefs\" && Array.isArray(value)\n ? value\n : [];\n for (const r of refs)\n if (!sources.has(r))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n ep,\n \"Account or procedure artifact is not declared in the observation.\",\n );\n }\n if (archival) {\n for (const ref of \"artifact\" in entity ? archivalArtifactReferences(entity) : []) {\n const source = sources.get(ref.sourceRef);\n if (!source?.digest || source.digest.value !== ref.digest.value)\n problem(\n \"ARCHIVE.ARTIFACT_IDENTITY\",\n ep,\n \"Archival artifact must name the same SHA-256 declaration as the scoped observation inventory.\",\n );\n }\n if (entity.kind === \"digital_artifact\")\n for (const assertion of entity.fields.declaredHashes ?? [])\n if (\"value\" in assertion.content)\n for (const declaration of assertion.content.value)\n if (\n declaration.hash.algorithm === \"sha256\" &&\n declaration.appliesTo.kind === \"artifact\" &&\n declaration.hash.value.toLowerCase() !==\n declaration.appliesTo.reference.digest.value\n )\n problem(\n \"ARCHIVE.HASH_DECLARATION\",\n ep,\n \"Declared SHA-256 differs from the selected artifact identity. No original-file or legacy hash verification is implied.\",\n );\n }\n for (const reference of researchEntityContextReferences(entity))\n resolve(reference, ep);\n }\n if (entities.schemaVersion === \"0.4.0\")\n await checkLaboratoryDependencies(\n entities,\n observation.data,\n history.data.id,\n p,\n load,\n problem,\n );\n entityDocuments.set(ref.sha256, entities);\n }\n function resolveEntity(\n reference:\n | ResearchEntityReference\n | ArchivalEntityReference\n | LaboratoryEntityReference,\n pointer: string,\n assertionId?: string,\n ) {\n const document = entityDocuments.get(reference.document.sha256);\n if (!document) return;\n const entity = document.entities.find(\n (e) => e.kind === reference.target.kind && e.id === reference.target.id,\n );\n if (!entity) {\n problem(\n \"REF.ENTITY\",\n pointer,\n \"Typed entity is absent from the selected snapshot.\",\n );\n return;\n }\n const assertions = researchEntityAssertions(entity);\n if (\n reference.target.field &&\n !assertions.some((a) => a.field === reference.target.field)\n )\n problem(\n \"REF.FIELD\",\n pointer,\n \"Target field has no supplied assertions.\",\n );\n if (\n assertionId &&\n (!reference.target.field ||\n !assertions.some(\n (a) =>\n a.field === reference.target.field &&\n a.assertion.id === assertionId,\n ))\n )\n problem(\n \"REF.ASSERTION\",\n pointer,\n \"Input must select an existing assertion on its named field.\",\n );\n }\n function resolve(\n reference: ContextReference,\n pointer: string,\n assertionId?: string,\n ) {\n const context = contexts.get(reference.document.sha256);\n if (!context) return; // Missing/invalid required document was already reported.\n const entity = context.entities.find(\n (e) => e.kind === reference.target.kind && e.id === reference.target.id,\n );\n if (!entity) {\n problem(\n \"REF.ENTITY\",\n pointer,\n \"Typed entity is absent from the selected snapshot.\",\n );\n return;\n }\n const assertions = contextAssertions(entity);\n if (\n reference.target.field &&\n !assertions.some((a) => a.field === reference.target.field)\n )\n problem(\n \"REF.FIELD\",\n pointer,\n \"Target field has no supplied assertions.\",\n );\n if (\n assertionId &&\n (!reference.target.field ||\n !assertions.some(\n (a) =>\n a.field === reference.target.field &&\n a.assertion.id === assertionId,\n ))\n )\n problem(\n \"REF.ASSERTION\",\n pointer,\n \"Assessment input must select an existing assertion on its named field.\",\n );\n }\n function resolveCitation(\n citation: EditionCitation | LaboratoryEditionCitation,\n pointer: string,\n ) {\n const document = entityDocuments.get(citation.document.sha256);\n if (!document) return; // The unavailable or invalid snapshot was already reported.\n const edition = document.entities.find(\n (e) => e.kind === \"source_edition\" && e.id === citation.editionId,\n );\n if (!edition || edition.kind !== \"source_edition\") {\n problem(\n \"REF.ENTITY\",\n pointer,\n \"Citation edition is absent from the selected entity snapshot.\",\n );\n return;\n }\n if (\n edition.artifact.sourceRef !== citation.artifact.sourceRef ||\n edition.artifact.digest.value !== citation.artifact.digest.value\n )\n problem(\n \"ARCHIVE.CITATION_SCOPE\",\n pointer,\n \"Citation artifact differs from the selected edition, even if titles or page numbers match.\",\n );\n const pages = edition.fields.pageCount;\n if (\n citation.locator.kind === \"page\" &&\n pages?.length === 1 &&\n pages[0]!.content.state === \"known\" &&\n citation.locator.page > pages[0]!.content.value\n )\n problem(\n \"ARCHIVE.PAGE_BOUNDS\",\n pointer,\n \"Citation exceeds the edition's explicitly declared page count.\",\n );\n }\n for (const [i, claim] of history.data.claims.entries()) {\n if (archival) {\n if (\"editionCitation\" in claim && claim.editionCitation)\n resolveCitation(\n claim.editionCitation,\n `/claims/${i}/editionCitation`,\n );\n if (\"editionInputRefs\" in claim)\n for (const [j, citation] of (claim.editionInputRefs ?? []).entries())\n resolveCitation(citation, `/claims/${i}/editionInputRefs/${j}`);\n }\n if (claim.subject.kind === \"entity\")\n resolveEntity(claim.subject.reference, `/claims/${i}/subject`);\n if (claim.kind === \"assessment\")\n for (const [j, ref] of (claim.entityInputRefs ?? []).entries())\n resolveEntity(\n ref,\n `/claims/${i}/entityInputRefs/${j}`,\n ref.assertionId,\n );\n if (claim.subject.kind === \"context\")\n resolve(claim.subject.reference, `/claims/${i}/subject`);\n if (claim.kind === \"assessment\")\n for (const [j, ref] of (claim.contextInputRefs ?? []).entries())\n resolve(ref, `/claims/${i}/contextInputRefs/${j}`, ref.assertionId);\n }\n }\n const external = snapshots.some((s) => s.status === \"failed\")\n ? \"failed\"\n : snapshots.some((s) => s.status === \"unavailable\") || !snapshots.length\n ? \"not_checked\"\n : \"passed\";\n return {\n success: history.success && issues.length === 0,\n issues,\n snapshots,\n checks: {\n structural: issues.some((i) => i.stage === \"structural\")\n ? \"failed\"\n : history.checks.structural,\n semantic:\n history.checks.structural === \"failed\" ||\n issues.some((i) => i.stage === \"structural\")\n ? \"not_checked\"\n : issues.some((i) => i.stage !== \"external\")\n ? \"failed\"\n : issues.length\n ? \"not_checked\"\n : \"passed\",\n profile: \"not_checked\",\n external,\n },\n currentClaimRefs:\n history.success && issues.length === 0 ? history.currentClaimRefs : [],\n integrityScope:\n \"supplied_entities_context_observation_and_acquisition_snapshot_bytes\",\n temporalNormalization: \"not_checked\",\n sourceArtifactIntegrity: \"not_checked\",\n scientificInterpretation: \"not_checked\",\n multiSensorFusion: \"not_checked\",\n };\n}\n","import {\n evaluateEntityHistory,\n type ResearchReviewOptions,\n type ResearchReviewResult,\n} from \"./entity-history-review\";\nexport type {\n ResearchReviewOptions,\n ResearchReviewResult,\n} from \"./entity-history-review\";\nexport async function evaluateResearchClaimHistory(\n input: unknown,\n options: ResearchReviewOptions,\n): Promise<ResearchReviewResult> {\n return evaluateEntityHistory(input, options, \"research\");\n}\n","import {\n evaluateEntityHistory,\n type ResearchReviewOptions,\n type ResearchReviewResult,\n} from \"./entity-history-review\";\nexport type ArchivalReviewOptions = ResearchReviewOptions;\nexport type ArchivalReviewResult = ResearchReviewResult;\n/** Checks 0.4 histories and exact 0.2 entity snapshots; never fetches source files or authenticates them. */\nexport async function evaluateArchivalClaimHistory(\n input: unknown,\n options: ArchivalReviewOptions,\n): Promise<ArchivalReviewResult> {\n return evaluateEntityHistory(input, options, \"archival\");\n}\n","import {\n evaluateEntityHistory,\n type ResearchReviewOptions,\n type ResearchReviewResult,\n} from \"./entity-history-review\";\nexport type LaboratoryReviewOptions = ResearchReviewOptions;\nexport type LaboratoryReviewResult = Omit<\n ResearchReviewResult,\n \"integrityScope\"\n> & {\n integrityScope: \"supplied_entities_context_observation_acquisition_and_specimen_selection_snapshot_bytes\";\n};\n/** Explicit 0.5 history and 0.4 entities. Snapshot checks do not validate physical specimens, laboratory execution or source artifact bytes. */\nexport async function evaluateLaboratoryClaimHistory(\n input: unknown,\n options: LaboratoryReviewOptions,\n): Promise<LaboratoryReviewResult> {\n const result = await evaluateEntityHistory(input, options, \"laboratory\");\n return {\n ...result,\n integrityScope:\n \"supplied_entities_context_observation_acquisition_and_specimen_selection_snapshot_bytes\",\n };\n}\n","import {\n parseCaseRecord,\n caseProvenances,\n parseExperimentalObservation,\n type DocumentSnapshotRef,\n type ContextIssue,\n type ExperimentalObservation,\n} from \"@disclosureos/records/experimental/v2\";\n\nexport interface CaseReviewOptions {\n /** Exact UTF-8 document bytes keyed by SHA-256. Only explicitly scoped snapshots are read. */\n documents: ReadonlyMap<string, Uint8Array>;\n}\nexport interface CaseReviewResult {\n success: boolean;\n issues: ContextIssue[];\n snapshots: Array<\n DocumentSnapshotRef & { status: \"passed\" | \"failed\" | \"unavailable\" }\n >;\n checks: {\n structural: \"passed\" | \"failed\";\n semantic: \"passed\" | \"failed\" | \"not_checked\";\n external: \"passed\" | \"failed\" | \"not_checked\";\n profile: \"not_checked\";\n };\n declaredChronology: \"acyclic\" | \"failed\" | \"incomplete\" | \"not_checked\";\n integrityScope: \"supplied_observation_snapshot_bytes\";\n sourceArtifactIntegrity: \"not_checked\";\n scientificInterpretation: \"not_checked\";\n temporalNormalization: \"not_checked\";\n}\n/** Resolves the case's closed observation scope. Does not fetch URLs, authenticate sources or assess relationships. */\nexport async function evaluateCaseRecord(\n input: unknown,\n options: CaseReviewOptions,\n): Promise<CaseReviewResult> {\n const parsed = parseCaseRecord(input);\n const result: CaseReviewResult = {\n success: false,\n issues: [...parsed.issues],\n snapshots: [],\n checks: { ...parsed.checks },\n declaredChronology: parsed.issues.some(\n (i) => i.code === \"CASE.CHRONOLOGY_CYCLE\",\n )\n ? \"failed\"\n : \"not_checked\",\n integrityScope: \"supplied_observation_snapshot_bytes\",\n sourceArtifactIntegrity: \"not_checked\",\n scientificInterpretation: \"not_checked\",\n temporalNormalization: \"not_checked\",\n };\n if (!parsed.success) return result;\n const data = parsed.data;\n // Copy all used buffers before the first await; callers cannot change a later snapshot mid-evaluation.\n const supplied = new Map(\n data.observationRefs.map((r) => {\n const bytes = options.documents.get(r.sha256);\n return [r.sha256, bytes ? Uint8Array.from(bytes) : undefined] as const;\n }),\n );\n const observations = new Map<string, ExperimentalObservation>();\n const problem = (code: string, pointer: string, message: string) =>\n result.issues.push({ code, stage: \"external\", pointer, message });\n for (const [i, ref] of data.observationRefs.entries()) {\n const p = `/observationRefs/${i}`,\n bytes = supplied.get(ref.sha256);\n const snapshot = {\n ...ref,\n status: \"failed\" as \"passed\" | \"failed\" | \"unavailable\",\n };\n result.snapshots.push(snapshot);\n if (!bytes) {\n snapshot.status = \"unavailable\";\n problem(\n \"SNAPSHOT.UNAVAILABLE\",\n p,\n \"Required observation snapshot bytes were not supplied.\",\n );\n continue;\n }\n const hash = Array.from(\n new Uint8Array(await crypto.subtle.digest(\"SHA-256\", bytes)),\n )\n .map((n) => n.toString(16).padStart(2, \"0\"))\n .join(\"\");\n if (hash !== ref.sha256) {\n problem(\n \"SNAPSHOT.DIGEST\",\n p,\n \"Supplied bytes do not match the declared digest.\",\n );\n continue;\n }\n let raw: unknown;\n try {\n raw = JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes));\n } catch {\n problem(\"SNAPSHOT.JSON\", p, \"Snapshot is not valid UTF-8 JSON.\");\n continue;\n }\n const observation = parseExperimentalObservation(raw);\n if (!observation.success) {\n problem(\n \"SNAPSHOT.CONTRACT\",\n p,\n \"Snapshot does not satisfy the declared observation contract and semantics.\",\n );\n continue;\n }\n if (observation.data.id !== ref.documentId) {\n problem(\n \"SNAPSHOT.IDENTITY\",\n p,\n \"Snapshot observation ID differs from the case reference.\",\n );\n continue;\n }\n observations.set(ref.documentId, observation.data);\n snapshot.status = \"passed\";\n }\n for (const { pointer, provenance: p } of caseProvenances(data)) {\n const observation = observations.get(p.observationId);\n if (!observation) continue;\n const [kind, id] = p.sourceRef.split(\":\");\n const artifact = (\n kind === \"source\" ? observation.sources : observation.products\n ).find((s) => s.id === id);\n if (!artifact)\n problem(\n \"CASE.SOURCE_SCOPE\",\n pointer,\n \"Citation does not resolve in its declared observation snapshot.\",\n );\n else if (\n p.sourceDigest &&\n artifact.digest &&\n p.sourceDigest.value !== artifact.digest.value\n )\n problem(\n \"SOURCE.DIGEST_MISMATCH\",\n pointer,\n \"Source digest declarations disagree. Source bytes have not been checked.\",\n );\n }\n for (const [i, e] of data.entities.entries())\n if (e.kind === \"investigation\")\n for (const [j, a] of (e.fields.methodReferences ?? []).entries())\n if (\"value\" in a.content)\n for (const [k, m] of a.content.value.entries()) {\n const observation = observations.get(m.observationId);\n if (!observation) continue;\n if (!observation.methods.some((method) => method.id === m.methodId))\n problem(\n \"CASE.METHOD_RESOLUTION\",\n `/entities/${i}/fields/methodReferences/${j}/content/value/${k}`,\n \"Method is absent from its pinned observation snapshot.\",\n );\n }\n result.success = result.issues.length === 0;\n result.checks.external = result.success ? \"passed\" : \"failed\";\n result.declaredChronology = result.success ? \"acyclic\" : \"incomplete\";\n return result;\n}\n","import {\n parseCaseClaimHistory,\n parseCaseRecord,\n parseExperimentalObservation,\n caseSnapshotKey,\n type CaseRecord,\n type CaseEntityTarget,\n type DocumentSnapshotRef,\n type ExperimentalObservation,\n type ContextIssue,\n} from \"@disclosureos/records/experimental/v2\";\nimport { evaluateCaseRecord, type CaseReviewOptions } from \"./case-review\";\n\nexport interface CaseHistoryReviewResult {\n success: boolean;\n issues: ContextIssue[];\n snapshots: Array<\n DocumentSnapshotRef & { status: \"passed\" | \"failed\" | \"unavailable\" }\n >;\n checks: {\n structural: \"passed\" | \"failed\";\n semantic: \"passed\" | \"failed\" | \"not_checked\";\n external: \"passed\" | \"failed\" | \"not_checked\";\n profile: \"not_checked\";\n };\n currentClaimRefs: string[];\n integrityScope: \"supplied_case_and_observation_snapshot_bytes\";\n sourceArtifactIntegrity: \"not_checked\";\n scientificInterpretation: \"not_checked\";\n temporalNormalization: \"not_checked\";\n lifecycleChanges: \"not_performed\";\n}\n/** Validates declared assessments and their inputs, not the scientific truth of their outcomes. */\nexport async function evaluateCaseClaimHistory(\n input: unknown,\n options: CaseReviewOptions,\n): Promise<CaseHistoryReviewResult> {\n const history = parseCaseClaimHistory(input);\n const result: CaseHistoryReviewResult = {\n success: false,\n issues: [...history.issues],\n snapshots: [],\n checks: { ...history.checks },\n currentClaimRefs: [],\n integrityScope: \"supplied_case_and_observation_snapshot_bytes\",\n sourceArtifactIntegrity: \"not_checked\",\n scientificInterpretation: \"not_checked\",\n temporalNormalization: \"not_checked\",\n lifecycleChanges: \"not_performed\",\n };\n if (!history.success) return result;\n const data = history.data,\n copies = new Map<string, Uint8Array>();\n const copy = (hash: string) => {\n if (!copies.has(hash)) {\n const value = options.documents.get(hash);\n if (value) copies.set(hash, Uint8Array.from(value));\n }\n };\n // Discover only the declared cases' observation dependencies before the first await.\n // The peek grants no trust: each case is hashed and fully validated below.\n for (const ref of data.caseRefs) copy(ref.sha256);\n for (const ref of data.caseRefs) {\n try {\n const bytes = copies.get(ref.sha256);\n if (!bytes) continue;\n const peek = parseCaseRecord(\n JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes)),\n );\n if (peek.success)\n peek.data.observationRefs.forEach((r) => copy(r.sha256));\n } catch {\n /* Invalid case bytes are reported by the verified loader. */\n }\n }\n const problem = (code: string, pointer: string, message: string) =>\n result.issues.push({ code, stage: \"external\", pointer, message });\n const snapshots = new Map<\n string,\n CaseHistoryReviewResult[\"snapshots\"][number]\n >();\n async function load(ref: DocumentSnapshotRef, p: string): Promise<unknown> {\n const item = {\n ...ref,\n status: \"failed\" as \"passed\" | \"failed\" | \"unavailable\",\n };\n snapshots.set(caseSnapshotKey(ref), item);\n const bytes = copies.get(ref.sha256);\n if (!bytes) {\n item.status = \"unavailable\";\n problem(\n \"SNAPSHOT.UNAVAILABLE\",\n p,\n \"Required snapshot bytes were not supplied.\",\n );\n return;\n }\n const digest = Array.from(\n new Uint8Array(await crypto.subtle.digest(\"SHA-256\", bytes)),\n )\n .map((n) => n.toString(16).padStart(2, \"0\"))\n .join(\"\");\n if (digest !== ref.sha256) {\n problem(\n \"SNAPSHOT.DIGEST\",\n p,\n \"Supplied bytes differ from the declared digest.\",\n );\n return;\n }\n try {\n return JSON.parse(\n new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes),\n );\n } catch {\n problem(\"SNAPSHOT.JSON\", p, \"Snapshot is not valid UTF-8 JSON.\");\n }\n }\n const cases = new Map<string, CaseRecord>(),\n observations = new Map<string, ExperimentalObservation>();\n for (const [i, ref] of data.caseRefs.entries()) {\n const p = `/caseRefs/${i}`,\n raw = await load(ref, p);\n if (raw === undefined) continue;\n const parsed = parseCaseRecord(raw);\n if (!parsed.success) {\n problem(\n \"SNAPSHOT.CONTRACT\",\n p,\n \"Case snapshot does not satisfy its declared contract and local semantics.\",\n );\n continue;\n }\n if (parsed.data.id !== ref.documentId) {\n problem(\"SNAPSHOT.IDENTITY\", p, \"Case ID differs from its reference.\");\n continue;\n }\n snapshots.get(caseSnapshotKey(ref))!.status = \"passed\";\n cases.set(caseSnapshotKey(ref), parsed.data);\n const checked = await evaluateCaseRecord(parsed.data, {\n documents: copies,\n });\n result.issues.push(\n ...checked.issues.map((issue) => ({\n ...issue,\n pointer: p + issue.pointer,\n })),\n );\n for (const snapshot of checked.snapshots)\n snapshots.set(caseSnapshotKey(snapshot), snapshot);\n for (const snapshot of checked.snapshots)\n if (\n snapshot.status === \"passed\" &&\n !observations.has(caseSnapshotKey(snapshot))\n ) {\n const observation = parseExperimentalObservation(\n JSON.parse(\n new TextDecoder(\"utf-8\", { fatal: true }).decode(\n copies.get(snapshot.sha256)!,\n ),\n ),\n );\n if (observation.success)\n observations.set(caseSnapshotKey(snapshot), observation.data);\n }\n }\n function observation(\n r: { case: DocumentSnapshotRef; observationId: string },\n p: string,\n ) {\n const owner = cases.get(caseSnapshotKey(r.case));\n if (!owner) return;\n const ref = owner.observationRefs.find(\n (s) => s.documentId === r.observationId,\n );\n if (!ref) {\n problem(\n \"CASE.OBSERVATION_SCOPE\",\n p,\n \"Observation is absent from the referenced case revision.\",\n );\n return;\n }\n const value = observations.get(caseSnapshotKey(ref));\n return value ? { value, ref } : undefined;\n }\n function entity(\n document: DocumentSnapshotRef,\n target: CaseEntityTarget,\n p: string,\n ) {\n const owner = cases.get(caseSnapshotKey(document));\n if (!owner) return;\n const e = owner.entities.find(\n (e) => e.kind === target.kind && e.id === target.id,\n );\n if (!e) {\n problem(\n \"CASE.ENTITY_RESOLUTION\",\n p,\n \"Case entity identity or kind does not resolve.\",\n );\n return;\n }\n if (\n \"field\" in target &&\n target.field &&\n (!(\"fields\" in e) ||\n !Object.prototype.hasOwnProperty.call(e.fields, target.field))\n )\n problem(\n \"CASE.FIELD_RESOLUTION\",\n p,\n \"Referenced field was not supplied on this entity.\",\n );\n return e;\n }\n for (const [i, c] of data.claims.entries()) {\n const p = `/claims/${i}`;\n if (c.subject.kind === \"case_entity\")\n entity(\n c.subject.reference.document,\n c.subject.reference.target,\n `${p}/subject`,\n );\n if (c.subject.kind === \"case_relation\") {\n const from = observation(c.subject.from, `${p}/subject/from`),\n to = observation(c.subject.to, `${p}/subject/to`);\n if (from && to && caseSnapshotKey(from.ref) === caseSnapshotKey(to.ref))\n problem(\n \"CASE.SELF_RELATION\",\n `${p}/subject`,\n \"Both relationship endpoints resolve to the same observation snapshot.\",\n );\n }\n if (c.kind === \"source_assertion\") {\n const owner = observation(c.provenance, `${p}/provenance`);\n if (!owner) continue;\n const [kind, id] = c.provenance.sourceRef.split(\":\");\n const artifact = (\n kind === \"source\" ? owner.value.sources : owner.value.products\n ).find((a) => a.id === id);\n if (!artifact)\n problem(\n \"CASE.SOURCE_SCOPE\",\n `${p}/provenance`,\n \"Source does not resolve in its declared observation snapshot.\",\n );\n else if (\n artifact.digest &&\n c.provenance.sourceDigest &&\n artifact.digest.value !== c.provenance.sourceDigest.value\n )\n problem(\n \"SOURCE.DIGEST_MISMATCH\",\n `${p}/provenance`,\n \"Source digest declarations disagree; source bytes are not checked.\",\n );\n } else {\n for (const [j, r] of (c.caseInputRefs ?? []).entries()) {\n const q = `${p}/caseInputRefs/${j}`,\n e = entity(r.document, r.target, q);\n if (!e) continue;\n if (r.kind === \"case_assertion\") {\n const fields =\n \"fields\" in e\n ? (e.fields as Record<string, Array<{ id: string }> | undefined>)\n : undefined;\n if (!fields?.[r.target.field]?.some((a) => a.id === r.assertionId))\n problem(\n \"CASE.ASSERTION_RESOLUTION\",\n q,\n \"Assertion must belong to the selected entity field in the pinned case.\",\n );\n }\n }\n for (const [j, r] of (c.observationInputRefs ?? []).entries()) {\n const q = `${p}/observationInputRefs/${j}`,\n o = observation(r, q)?.value;\n if (!o) continue;\n const [kind, id] = r.ref.split(\":\");\n const rows =\n kind === \"source\"\n ? o.sources\n : kind === \"product\"\n ? o.products\n : kind === \"assertion\"\n ? o.assertions\n : o.measurements;\n if (!rows.some((e) => e.id === id))\n problem(\n \"CASE.INPUT_RESOLUTION\",\n q,\n \"Input is absent from its scoped observation snapshot.\",\n );\n }\n if (c.status === \"assessed\") {\n const o = observation(c.methodRef, `${p}/methodRef`)?.value;\n if (!o) continue;\n const method = o.methods.find((m) => m.id === c.methodRef.methodId);\n if (!method)\n problem(\n \"CASE.METHOD_RESOLUTION\",\n `${p}/methodRef`,\n \"Assessment method is absent from its scoped observation.\",\n );\n else if (method.version !== c.methodVersion)\n problem(\n \"METHOD.VERSION_MISMATCH\",\n `${p}/methodVersion`,\n \"Method version differs from the pinned observation declaration.\",\n );\n }\n }\n }\n result.success = result.issues.length === 0;\n result.checks.external = result.success ? \"passed\" : \"failed\";\n result.currentClaimRefs = result.success ? history.currentClaimRefs : [];\n result.snapshots = [...snapshots.values()];\n return result;\n}\n","import {\n parseCaseLinks,\n parseCaseRecord,\n parseExperimentalObservation,\n parseObservationContext,\n parseResearchEntities,\n parseArchivalEntities,\n parseMaterialEntities,\n parseLaboratoryEntities,\n caseSnapshotKey,\n type DocumentSnapshotRef,\n type ContextIssue,\n type ExperimentalObservation,\n} from \"@disclosureos/records/experimental/v2\";\nimport { evaluateCaseRecord, type CaseReviewOptions } from \"./case-review\";\nimport { SourceIntakeSchema, evaluateSourceIntake } from \"./source-intake\";\n\nexport interface CaseLinksReviewResult {\n success: boolean;\n issues: ContextIssue[];\n snapshots: Array<\n DocumentSnapshotRef & { status: \"passed\" | \"failed\" | \"unavailable\" }\n >;\n checks: {\n structural: \"passed\" | \"failed\";\n semantic: \"passed\" | \"failed\" | \"not_checked\";\n external: \"passed\" | \"failed\" | \"not_checked\";\n profile: \"not_checked\";\n };\n resolvedLinkIds: string[];\n supplements: Array<{\n linkId: string;\n uncheckedRefs: string[];\n referenceValidation: \"not_checked\";\n }>;\n integrityScope: \"supplied_case_observation_and_linked_document_bytes\";\n supplementReferenceValidation: \"not_checked\";\n sourceArtifactIntegrity: \"not_checked\";\n authorization: \"not_checked\";\n scientificInterpretation: \"not_checked\";\n}\n/** Association integrity only. Linked research documents retain their own full reference/profile checks. */\nexport async function evaluateCaseLinks(\n input: unknown,\n options: CaseReviewOptions,\n): Promise<CaseLinksReviewResult> {\n const parsed = parseCaseLinks(input);\n const result: CaseLinksReviewResult = {\n success: false,\n issues: [...parsed.issues],\n snapshots: [],\n checks: { ...parsed.checks },\n resolvedLinkIds: [],\n supplements: [],\n integrityScope: \"supplied_case_observation_and_linked_document_bytes\",\n supplementReferenceValidation: \"not_checked\",\n sourceArtifactIntegrity: \"not_checked\",\n authorization: \"not_checked\",\n scientificInterpretation: \"not_checked\",\n };\n if (!parsed.success) return result;\n const data = parsed.data,\n copies = new Map<string, Uint8Array>();\n const copy = (hash: string) => {\n if (!copies.has(hash)) {\n const bytes = options.documents.get(hash);\n if (bytes) copies.set(hash, Uint8Array.from(bytes));\n }\n };\n copy(data.caseRef.sha256);\n data.links.forEach((l) =>\n copy(l.kind === \"intake\" ? l.document.sha256 : l.reference.document.sha256),\n );\n try {\n const bytes = copies.get(data.caseRef.sha256);\n if (bytes) {\n const peek = parseCaseRecord(\n JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes)),\n );\n if (peek.success)\n peek.data.observationRefs.forEach((r) => copy(r.sha256));\n }\n } catch {\n /* Verified loader reports malformed input. */\n }\n const problem = (code: string, pointer: string, message: string) =>\n result.issues.push({ code, stage: \"external\", pointer, message });\n const snapshots = new Map<\n string,\n CaseLinksReviewResult[\"snapshots\"][number]\n >();\n const loaded = new Map<string, unknown>();\n async function load(ref: DocumentSnapshotRef, p: string): Promise<unknown> {\n const key = caseSnapshotKey(ref);\n if (loaded.has(key)) return loaded.get(key);\n const snapshot = {\n ...ref,\n status: \"failed\" as \"passed\" | \"failed\" | \"unavailable\",\n };\n snapshots.set(key, snapshot);\n const bytes = copies.get(ref.sha256);\n if (!bytes) {\n snapshot.status = \"unavailable\";\n problem(\n \"SNAPSHOT.UNAVAILABLE\",\n p,\n \"Required snapshot bytes were not supplied.\",\n );\n return;\n }\n const digest = Array.from(\n new Uint8Array(await crypto.subtle.digest(\"SHA-256\", bytes)),\n )\n .map((n) => n.toString(16).padStart(2, \"0\"))\n .join(\"\");\n if (digest !== ref.sha256) {\n problem(\n \"SNAPSHOT.DIGEST\",\n p,\n \"Supplied bytes differ from the declared digest.\",\n );\n return;\n }\n let raw: unknown;\n try {\n raw = JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes));\n } catch {\n problem(\"SNAPSHOT.JSON\", p, \"Snapshot is not valid UTF-8 JSON.\");\n return;\n }\n if (\n !raw ||\n typeof raw !== \"object\" ||\n !(\"id\" in raw) ||\n raw.id !== ref.documentId\n ) {\n problem(\n \"SNAPSHOT.IDENTITY\",\n p,\n \"Document ID differs from the declared reference.\",\n );\n return;\n }\n loaded.set(key, raw);\n return raw;\n }\n const finish = () => {\n result.snapshots = [...snapshots.values()];\n result.success = result.issues.length === 0;\n result.checks.external = result.success ? \"passed\" : \"failed\";\n result.resolvedLinkIds = result.success ? data.links.map((l) => l.id) : [];\n return result;\n };\n const rawCase = await load(data.caseRef, \"/caseRef\");\n if (rawCase === undefined) return finish();\n const owner = parseCaseRecord(rawCase);\n if (!owner.success) {\n problem(\n \"SNAPSHOT.CONTRACT\",\n \"/caseRef\",\n \"Case snapshot does not satisfy its explicit contract and local semantics.\",\n );\n return finish();\n }\n snapshots.get(caseSnapshotKey(data.caseRef))!.status = \"passed\";\n const checked = await evaluateCaseRecord(owner.data, { documents: copies });\n result.issues.push(\n ...checked.issues.map((i) => ({ ...i, pointer: \"/caseRef\" + i.pointer })),\n );\n const observations = new Map<string, ExperimentalObservation>();\n for (const s of checked.snapshots) {\n snapshots.set(caseSnapshotKey(s), s);\n if (s.status === \"passed\") {\n const o = parseExperimentalObservation(\n JSON.parse(\n new TextDecoder(\"utf-8\", { fatal: true }).decode(\n copies.get(s.sha256)!,\n ),\n ),\n );\n if (o.success) observations.set(s.documentId, o.data);\n }\n }\n for (const [i, l] of data.links.entries()) {\n const p = `/links/${i}`,\n observationRef = owner.data.observationRefs.find(\n (r) => r.documentId === l.observationId,\n ),\n observation = observations.get(l.observationId);\n if (!observationRef) {\n problem(\n \"CASE.OBSERVATION_SCOPE\",\n p,\n \"Link observation is outside the case snapshot.\",\n );\n continue;\n }\n const prov = l.basis.provenance,\n sourceOwner = observations.get(prov.observationId);\n if (\n !owner.data.observationRefs.some(\n (r) => r.documentId === prov.observationId,\n )\n )\n problem(\n \"CASE.OBSERVATION_SCOPE\",\n `${p}/basis`,\n \"Basis provenance is outside the case snapshot.\",\n );\n else if (sourceOwner) {\n const [kind, id] = prov.sourceRef.split(\":\");\n const source = (\n kind === \"source\" ? sourceOwner.sources : sourceOwner.products\n ).find((s) => s.id === id);\n if (!source)\n problem(\n \"CASE.SOURCE_SCOPE\",\n `${p}/basis`,\n \"Basis source does not resolve in the selected observation.\",\n );\n else if (\n source.digest &&\n prov.sourceDigest &&\n source.digest.value !== prov.sourceDigest.value\n )\n problem(\n \"SOURCE.DIGEST_MISMATCH\",\n `${p}/basis`,\n \"Declared source digests differ.\",\n );\n }\n const ref = l.kind === \"intake\" ? l.document : l.reference.document,\n raw = await load(ref, p);\n if (raw === undefined) continue;\n if (l.kind === \"intake\") {\n const intake = SourceIntakeSchema.safeParse(raw);\n if (!intake.success) {\n problem(\n \"SNAPSHOT.CONTRACT\",\n p,\n \"Intake snapshot does not satisfy its explicit contract.\",\n );\n continue;\n }\n const validation = await evaluateSourceIntake(intake.data);\n const invalid = validation.issues.filter((i) => i.stage !== \"external\");\n if (invalid.length) {\n result.issues.push(\n ...invalid.map((i) => ({ ...i, pointer: p + i.pointer })),\n );\n continue;\n }\n snapshots.get(caseSnapshotKey(ref))!.status = \"passed\";\n for (const [j, a] of (l.artifactLinks ?? []).entries()) {\n const q = `${p}/artifactLinks/${j}`,\n artifact = intake.data.artifacts.find(\n (item) => item.id === a.artifactId,\n );\n if (!artifact) {\n problem(\n \"INTAKE.ARTIFACT_RESOLUTION\",\n q,\n \"Receipt artifact identity does not resolve.\",\n );\n continue;\n }\n if (!observation) continue;\n const [kind, id] = a.observationRef.split(\":\");\n const inventory = (\n kind === \"source\" ? observation.sources : observation.products\n ).find((item) => item.id === id);\n if (!inventory)\n problem(\n \"CASE.INPUT_RESOLUTION\",\n q,\n \"Observation artifact reference does not resolve.\",\n );\n else if (!inventory.digest)\n problem(\n \"INTAKE.DIGEST_UNAVAILABLE\",\n q,\n \"Observation inventory needs a declared SHA-256 for this explicit artifact association.\",\n );\n else if (inventory.digest.value !== artifact.sha256)\n problem(\n \"INTAKE.DIGEST_MISMATCH\",\n q,\n \"Receipt and observation inventory declare different artifact bytes.\",\n );\n }\n continue;\n }\n const supplement =\n l.kind === \"context\"\n ? parseObservationContext(raw)\n : ref.schemaId ===\n \"urn:disclosureos:experimental:research-entities:0.1.0\"\n ? parseResearchEntities(raw)\n : ref.schemaId ===\n \"urn:disclosureos:experimental:research-entities:0.2.0\"\n ? parseArchivalEntities(raw)\n : ref.schemaId ===\n \"urn:disclosureos:experimental:research-entities:0.3.0\"\n ? parseMaterialEntities(raw)\n : parseLaboratoryEntities(raw);\n if (!supplement.success) {\n problem(\n \"SNAPSHOT.CONTRACT\",\n p,\n \"Supplement does not satisfy its explicit contract and local semantics.\",\n );\n continue;\n }\n snapshots.get(caseSnapshotKey(ref))!.status = \"passed\";\n result.supplements.push({\n linkId: l.id,\n uncheckedRefs: [...supplement.uncheckedRefs],\n referenceValidation: \"not_checked\",\n });\n if (\n caseSnapshotKey(supplement.data.observationRef) !==\n caseSnapshotKey(observationRef)\n )\n problem(\n \"CASE.SUPPLEMENT_SCOPE\",\n p,\n \"Supplement selects different observation bytes from the case scope.\",\n );\n const target = l.reference.target;\n if (target) {\n const e = supplement.data.entities.find(\n (e) => e.id === target.id && e.kind === target.kind,\n );\n if (!e)\n problem(\n \"CASE.ENTITY_RESOLUTION\",\n p,\n \"Supplement entity kind or identity does not resolve.\",\n );\n else if (\n target.field &&\n !Object.prototype.hasOwnProperty.call(e.fields, target.field)\n )\n problem(\n \"CASE.FIELD_RESOLUTION\",\n p,\n \"Selected field is not supplied on this entity.\",\n );\n }\n }\n return finish();\n}\n","import { z } from 'zod';\nimport {\n parseCaseRecord,\n parseCaseClaimHistory,\n parseCaseLinks,\n parseExperimentalObservation,\n caseSnapshotKey,\n type DocumentSnapshotRef,\n type CaseHistoricalClaim,\n} from '@disclosureos/records/experimental/v2';\nimport { evaluateCaseRecord } from './case-review';\nimport { evaluateCaseClaimHistory } from './case-history-review';\nimport { evaluateCaseLinks } from './case-links-review';\n\n// Schemas are owned here. Records contributes parsers and plain data, never Zod objects.\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst text = z.string().min(1).max(20000).regex(/\\S/);\nconst short = text.max(500);\nconst sha256 = z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/);\nconst snapshot = z.strictObject({ documentId: id, schemaId: short, sha256 });\nconst caseRef = snapshot.extend({\n schemaId: z.literal('urn:disclosureos:experimental:case-record:0.1.0'),\n});\nconst historyRef = snapshot.extend({\n schemaId: z.literal('urn:disclosureos:experimental:case-claim-history:0.1.0'),\n});\nconst linksRef = snapshot.extend({\n schemaId: z.literal('urn:disclosureos:experimental:case-links:0.1.0'),\n});\nconst artifactRef = z.string().regex(/^(source|product):[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst instant = z.iso\n .datetime({ offset: true })\n .regex(/^(?!0000)/)\n .regex(/T[0-9]{2}:[0-9]{2}:[0-9]{2}/);\nconst citations = z.array(id).min(1);\nconst citation = z.strictObject({\n id,\n label: short,\n description: text.optional(),\n target: z.discriminatedUnion('kind', [\n z.strictObject({ kind: z.literal('case') }),\n z.strictObject({ kind: z.literal('artifact'), observationId: id, ref: artifactRef }),\n z.strictObject({ kind: z.literal('supplement'), linkId: id }),\n ]),\n});\nconst attachment = z.strictObject({\n id,\n kind: z.enum(['image', 'video', 'audio', 'document', 'data']),\n role: z.enum(['primary', 'supporting', 'thumbnail']),\n observationId: id,\n ref: artifactRef,\n sha256,\n caption: text,\n credit: short,\n rights: text,\n alt: short.optional(),\n dimensions: z\n .strictObject({ width: z.number().int().positive(), height: z.number().int().positive() })\n .optional(),\n durationSeconds: z.number().nonnegative().optional(),\n citationIds: citations,\n mimeType: short.optional(),\n fileSizeBytes: z.number().int().nonnegative().optional(),\n thumbnailAttachmentId: id.optional(),\n});\nexport const CASE_PRESENTATION_SCHEMA_ID = 'urn:disclosureos:experimental:case-presentation:0.1.0';\n/** An editorial selection, not a public-safe research document or an access grant. */\nexport const CasePresentationSchema = z.strictObject({\n kind: z.literal('case_presentation'),\n schemaVersion: z.literal('0.1.0'),\n publicId: id,\n caseRef,\n linksRef: linksRef.optional(),\n title: short,\n summary: text,\n updatedAt: instant,\n status: z.enum(['draft', 'published', 'archived', 'withdrawn']),\n citations: z.array(citation),\n blocks: z.array(z.strictObject({ id, heading: short.optional(), text, citationIds: citations })),\n findings: z.array(\n z.strictObject({\n id,\n historyRef,\n claimId: id,\n title: short,\n summary: text,\n reviewerLabel: short,\n citationIds: citations,\n }),\n ),\n attachments: z.array(attachment),\n featuredAttachmentId: id.optional(),\n notices: z.array(\n z.strictObject({\n id,\n kind: z.enum(['scope', 'correction', 'archive', 'withdrawal', 'rights']),\n text,\n }),\n ),\n});\nexport type CasePresentation = z.infer<typeof CasePresentationSchema>;\nexport function casePresentationJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(CasePresentationSchema, { target: 'draft-2020-12', reused: 'ref' }),\n $id: CASE_PRESENTATION_SCHEMA_ID,\n };\n}\nexport function parseCasePresentation(input: unknown) {\n const parsed = CasePresentationSchema.safeParse(input);\n if (!parsed.success) return { success: false as const };\n const d = parsed.data;\n const unique = (xs: { id: string }[]) => new Set(xs.map((x) => x.id)).size === xs.length;\n if (![d.citations, d.blocks, d.findings, d.attachments, d.notices].every(unique))\n return { success: false as const };\n const ids = new Set(d.citations.map((c) => c.id));\n for (const item of [...d.blocks, ...d.findings, ...d.attachments]) {\n if (\n new Set(item.citationIds).size !== item.citationIds.length ||\n item.citationIds.some((i) => !ids.has(i))\n )\n return { success: false as const };\n }\n if (d.citations.some((c) => c.target.kind === 'supplement') && !d.linksRef)\n return { success: false as const };\n if (d.featuredAttachmentId && !d.attachments.some((a) => a.id === d.featuredAttachmentId))\n return { success: false as const };\n if (d.status === 'archived' && !d.notices.some((n) => n.kind === 'archive'))\n return { success: false as const };\n if (d.status === 'withdrawn' && !d.notices.some((n) => n.kind === 'withdrawal'))\n return { success: false as const };\n for (const a of d.attachments) {\n if (\n a.thumbnailAttachmentId &&\n (a.role === 'thumbnail' ||\n !d.attachments.some(\n (t) => t.id === a.thumbnailAttachmentId && t.kind === 'image' && t.role === 'thumbnail',\n ))\n )\n return { success: false as const };\n if ((a.kind === 'image' && !a.alt) || (a.role === 'thumbnail' && a.kind !== 'image'))\n return { success: false as const };\n if (a.dimensions && !['image', 'video'].includes(a.kind)) return { success: false as const };\n if (a.durationSeconds !== undefined && !['audio', 'video'].includes(a.kind))\n return { success: false as const };\n }\n return { success: true as const, data: d };\n}\n\n/** Trusted server decision, supplied separately after reviewing exact presentation and media bytes.\n * Never accept this object from an anonymous request, a record, or its access labels. */\nexport interface CasePublicationApproval {\n presentationSha256: string;\n policyVersion: string;\n}\nexport interface PublicCasePayload {\n kind: 'public_case';\n schemaVersion: '0.1.0';\n publicId: string;\n title: string;\n summary: string;\n updatedAt: string;\n status: 'published' | 'archived';\n citations: Array<{ id: string; label: string; description?: string }>;\n blocks: Array<{ id: string; heading?: string; text: string; citationIds: string[] }>;\n findings: Array<{\n id: string;\n title: string;\n summary: string;\n reviewerLabel: string;\n citationIds: string[];\n status: 'assessed' | 'unassessed';\n outcome?: 'reported' | 'confirmed' | 'absent' | 'inconclusive';\n revision: 'current' | 'superseded';\n }>;\n attachments: Array<{\n id: string;\n kind: CasePresentation['attachments'][number]['kind'];\n role: CasePresentation['attachments'][number]['role'];\n href: string;\n caption: string;\n credit: string;\n rights: string;\n alt?: string;\n dimensions?: { width: number; height: number };\n durationSeconds?: number;\n mimeType?: string;\n fileSizeBytes?: number;\n thumbnailAttachmentId?: string;\n citationIds: string[];\n }>;\n featuredAttachmentId?: string;\n assessmentNotice?: string;\n notices: Array<{ id: string; kind: CasePresentation['notices'][number]['kind']; text: string }>;\n}\nexport type PublicCaseResult =\n | { success: true; data: PublicCasePayload }\n | {\n success: false;\n code: 'APPROVAL_REQUIRED' | 'INVALID_PRESENTATION' | 'NOT_PUBLISHED' | 'INVALID_REFERENCES';\n };\nconst approvalSchema = z.strictObject({ presentationSha256: sha256, policyVersion: short });\nasync function digest(bytes: Uint8Array): Promise<string> {\n return Array.from(new Uint8Array(await crypto.subtle.digest('SHA-256', Uint8Array.from(bytes))))\n .map((n) => n.toString(16).padStart(2, '0'))\n .join('');\n}\nconst decode = (bytes: Uint8Array): unknown =>\n JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(bytes));\n\n/** Fail-closed public projection. It never returns source documents or diagnostic values.\n * Approval authenticity, publication revocation, cache invalidation and asset delivery remain server responsibilities. */\nexport async function buildPublicCase(\n presentationBytes: Uint8Array,\n options: { documents: ReadonlyMap<string, Uint8Array>; approval?: CasePublicationApproval },\n): Promise<PublicCaseResult> {\n const approved = approvalSchema.safeParse(options.approval);\n if (!approved.success) return { success: false, code: 'APPROVAL_REQUIRED' };\n const bytes = Uint8Array.from(presentationBytes);\n let parsed: ReturnType<typeof parseCasePresentation>;\n try {\n parsed = parseCasePresentation(decode(bytes));\n } catch {\n return { success: false, code: 'INVALID_PRESENTATION' };\n }\n if (!parsed.success) return { success: false, code: 'INVALID_PRESENTATION' };\n const d = parsed.data;\n if (d.status === 'draft' || d.status === 'withdrawn')\n return { success: false, code: 'NOT_PUBLISHED' };\n\n // Capture declared dependencies before the first await; never copy unrelated entries.\n const copies = new Map<string, Uint8Array>();\n const copy = (hash: string) => {\n const b = options.documents.get(hash);\n if (b && !copies.has(hash)) copies.set(hash, Uint8Array.from(b));\n };\n const refs = [\n d.caseRef,\n ...(d.linksRef ? [d.linksRef] : []),\n ...d.findings.map((f) => f.historyRef),\n ];\n refs.forEach((r) => copy(r.sha256));\n try {\n const c = copies.get(d.caseRef.sha256);\n if (c) {\n const p = parseCaseRecord(decode(c));\n if (p.success) p.data.observationRefs.forEach((r) => copy(r.sha256));\n }\n for (const f of d.findings) {\n const b = copies.get(f.historyRef.sha256);\n if (!b) continue;\n const h = parseCaseClaimHistory(decode(b));\n if (h.success)\n for (const r of h.data.caseRefs) {\n copy(r.sha256);\n const cb = copies.get(r.sha256);\n if (cb) {\n const p = parseCaseRecord(decode(cb));\n if (p.success) p.data.observationRefs.forEach((o) => copy(o.sha256));\n }\n }\n }\n if (d.linksRef) {\n const b = copies.get(d.linksRef.sha256);\n if (b) {\n const links = parseCaseLinks(decode(b));\n if (links.success)\n links.data.links.forEach((l) =>\n copy(l.kind === 'intake' ? l.document.sha256 : l.reference.document.sha256),\n );\n }\n }\n } catch {\n return { success: false, code: 'INVALID_REFERENCES' };\n }\n if ((await digest(bytes)) !== approved.data.presentationSha256)\n return { success: false, code: 'APPROVAL_REQUIRED' };\n const load = async (ref: DocumentSnapshotRef) => {\n const b = copies.get(ref.sha256);\n if (!b || (await digest(b)) !== ref.sha256) throw new Error('reference');\n const raw = decode(b);\n if (!raw || typeof raw !== 'object' || !('id' in raw) || raw.id !== ref.documentId)\n throw new Error('reference');\n return raw;\n };\n const invalid = (): PublicCaseResult => ({ success: false, code: 'INVALID_REFERENCES' });\n try {\n const owner = parseCaseRecord(await load(d.caseRef));\n if (!owner.success || !(await evaluateCaseRecord(owner.data, { documents: copies })).success)\n return invalid();\n const observations = new Map(\n owner.data.observationRefs.map((r) => {\n const p = parseExperimentalObservation(decode(copies.get(r.sha256)!));\n if (!p.success) throw new Error('reference');\n return [r.documentId, p.data] as const;\n }),\n );\n const artifact = (observationId: string, ref: string) => {\n const o = observations.get(observationId);\n const [kind, id] = ref.split(':');\n return (kind === 'source' ? o?.sources : o?.products)?.find((a) => a.id === id);\n };\n const linkedIds = new Set<string>();\n if (d.linksRef) {\n const links = parseCaseLinks(await load(d.linksRef));\n if (!links.success || caseSnapshotKey(links.data.caseRef) !== caseSnapshotKey(d.caseRef))\n return invalid();\n const result = await evaluateCaseLinks(links.data, { documents: copies });\n if (!result.success) return invalid();\n result.resolvedLinkIds.forEach((id) => linkedIds.add(id));\n }\n for (const c of d.citations) {\n if (c.target.kind === 'artifact' && !artifact(c.target.observationId, c.target.ref))\n return invalid();\n if (c.target.kind === 'supplement' && !linkedIds.has(c.target.linkId)) return invalid();\n }\n for (const a of d.attachments) {\n const value = artifact(a.observationId, a.ref);\n if (!value?.digest || value.digest.value !== a.sha256) return invalid();\n }\n const findings: PublicCasePayload['findings'] = [];\n const histories = new Map<string, { claims: CaseHistoricalClaim[]; current: Set<string> }>();\n for (const f of d.findings) {\n const key = caseSnapshotKey(f.historyRef);\n let h = histories.get(key);\n if (!h) {\n const parsed = parseCaseClaimHistory(await load(f.historyRef));\n if (!parsed.success) return invalid();\n const result = await evaluateCaseClaimHistory(parsed.data, { documents: copies });\n if (!result.success) return invalid();\n h = { claims: parsed.data.claims, current: new Set(result.currentClaimRefs) };\n histories.set(key, h);\n }\n const c = h.claims.find((c) => c.id === f.claimId);\n if (!c || c.kind !== 'assessment') return invalid();\n const subjectCases =\n c.subject.kind === 'case'\n ? [c.subject.document]\n : c.subject.kind === 'case_entity'\n ? [c.subject.reference.document]\n : [c.subject.from.case, c.subject.to.case];\n if (subjectCases.some((r) => caseSnapshotKey(r) !== caseSnapshotKey(d.caseRef)))\n return invalid();\n findings.push({\n id: f.id,\n title: f.title,\n summary: f.summary,\n reviewerLabel: f.reviewerLabel,\n citationIds: [...f.citationIds],\n status: c.status,\n ...(c.status === 'assessed' ? { outcome: c.outcome } : {}),\n revision: h.current.has(`claim:${c.id}`) ? 'current' : 'superseded',\n });\n }\n // Deliberate field allowlist: no spreading of research records, references or approval data.\n return {\n success: true,\n data: {\n kind: 'public_case',\n schemaVersion: '0.1.0',\n publicId: d.publicId,\n title: d.title,\n summary: d.summary,\n updatedAt: d.updatedAt,\n status: d.status,\n citations: d.citations.map((c) => ({\n id: c.id,\n label: c.label,\n ...(c.description !== undefined ? { description: c.description } : {}),\n })),\n blocks: d.blocks.map((b) => ({\n id: b.id,\n text: b.text,\n citationIds: [...b.citationIds],\n ...(b.heading !== undefined ? { heading: b.heading } : {}),\n })),\n findings,\n ...(findings.length\n ? {\n assessmentNotice:\n 'These are attributed assessments. Reference checks do not independently verify their conclusions.',\n }\n : {}),\n attachments: d.attachments.map((a) => ({\n id: a.id,\n kind: a.kind,\n role: a.role,\n href: `/case-assets/${d.publicId}/${a.id}`,\n caption: a.caption,\n credit: a.credit,\n rights: a.rights,\n citationIds: [...a.citationIds],\n ...(a.alt !== undefined ? { alt: a.alt } : {}),\n ...(a.dimensions\n ? { dimensions: { width: a.dimensions.width, height: a.dimensions.height } }\n : {}),\n ...(a.durationSeconds !== undefined ? { durationSeconds: a.durationSeconds } : {}),\n ...(a.mimeType !== undefined ? { mimeType: a.mimeType } : {}),\n ...(a.fileSizeBytes !== undefined ? { fileSizeBytes: a.fileSizeBytes } : {}),\n ...(a.thumbnailAttachmentId ? { thumbnailAttachmentId: a.thumbnailAttachmentId } : {}),\n })),\n ...(d.featuredAttachmentId ? { featuredAttachmentId: d.featuredAttachmentId } : {}),\n notices: d.notices.map((n) => ({ id: n.id, kind: n.kind, text: n.text })),\n },\n };\n } catch {\n return invalid();\n }\n}\n\n/** One projection supplies all text outputs. Use data for text-node rendering;\n * never interpolate these strings into raw HTML, script tags or Markdown. */\nexport async function buildPublicCaseOutputs(\n presentationBytes: Uint8Array,\n options: Parameters<typeof buildPublicCase>[1],\n) {\n const result = await buildPublicCase(presentationBytes, options);\n if (!result.success) return result;\n return formatPublicCaseOutputs(result.data);\n}\n\n/** Text formatting over an already approved public allowlist; this function does not grant approval. */\nexport function formatPublicCaseOutputs<T extends Omit<PublicCasePayload, 'schemaVersion'> & { schemaVersion: string }>(\n d: T, additionalLines: string[] = [], additionalSearch: string[] = [],\n) {\n const escape = (s: string) => s.replace(/[!-/:-@\\[-`{-~]/g, '\\\\$&');\n const lines = [`# ${escape(d.title)}`, '', escape(d.summary), ''];\n if (d.assessmentNotice) lines.push(escape(d.assessmentNotice), '');\n for (const n of d.notices) lines.push(`**${escape(n.kind)}:** ${escape(n.text)}`, '');\n for (const b of d.blocks) {\n if (b.heading) lines.push(`## ${escape(b.heading)}`, '');\n lines.push(escape(b.text), '', `Sources: ${b.citationIds.map(escape).join(', ')}`, '');\n }\n for (const f of d.findings)\n lines.push(\n `## ${escape(f.title)}`,\n '',\n escape(f.summary),\n '',\n `${escape(f.reviewerLabel)} · ${f.status}${f.outcome ? ` / ${f.outcome}` : ''} · ${f.revision}`,\n '',\n `Sources: ${f.citationIds.map(escape).join(', ')}`,\n '',\n );\n for (const a of d.attachments)\n lines.push(\n `[${escape(a.caption)}](${a.href})`,\n '',\n `${escape(a.credit)}. ${escape(a.rights)}`,\n '',\n `Sources: ${a.citationIds.map(escape).join(', ')}`,\n '',\n );\n lines.push(...additionalLines);\n if (d.citations.length) lines.push('## Sources', '');\n for (const c of d.citations)\n lines.push(\n `${escape(c.id)}: ${escape(c.label)}${c.description ? ` — ${escape(c.description)}` : ''}`,\n '',\n );\n return {\n success: true as const,\n data: d,\n json: JSON.stringify(d, null, 2) + '\\n',\n markdown: lines.join('\\n'),\n search: {\n publicId: d.publicId,\n title: d.title,\n text: [\n d.summary,\n ...(d.assessmentNotice ? [d.assessmentNotice] : []),\n ...d.blocks.map((b) => b.text),\n ...d.findings.map((f) => `${f.summary} ${f.status} ${f.outcome ?? ''} ${f.revision}`),\n ...d.notices.map((n) => n.text),\n ...additionalSearch,\n ].join('\\n'),\n },\n metadata: { title: d.title, description: d.summary },\n };\n}\n","import { z } from \"zod\";\nimport {\n parseObservationContext,\n parseContextClaimHistory,\n parseCaseRecord,\n contextAssertions,\n caseSnapshotKey,\n type DocumentSnapshotRef,\n} from \"@disclosureos/records/experimental/v2\";\nimport { evaluateContextClaimHistory } from \"./context-review\";\nimport {\n CasePresentationSchema,\n parseCasePresentation,\n buildPublicCase,\n formatPublicCaseOutputs,\n type PublicCasePayload,\n type CasePublicationApproval,\n} from \"./case-presentation\";\n\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst text = z.string().min(1).max(20000).regex(/\\S/);\nconst hash = z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/);\nconst ref = (schemaId: string) =>\n z.strictObject({\n documentId: id,\n schemaId: z.literal(schemaId),\n sha256: hash,\n });\nconst citationIds = z.array(id).min(1);\nconst field = z.strictObject({\n id,\n label: text,\n entityId: id,\n field: z.enum([\"name\", \"shape\", \"alignmentDescription\"]),\n assertions: z\n .array(\n z.strictObject({ assertionId: id, attributionLabel: text, citationIds }),\n )\n .min(1),\n});\nexport const CONTEXT_CASE_PRESENTATION_SCHEMA_ID =\n \"urn:disclosureos:experimental:context-case-presentation:0.1.0\";\n/** Explicit, bounded context selection around the existing editorial presentation. */\nexport const ContextCasePresentationSchema = z.strictObject({\n kind: z.literal(\"context_case_presentation\"),\n schemaVersion: z.literal(\"0.1.0\"),\n presentation: CasePresentationSchema,\n context: z.strictObject({\n document: ref(\"urn:disclosureos:experimental:observation-context:0.1.0\"),\n history: ref(\"urn:disclosureos:experimental:claim-history:0.2.0\"),\n fields: z.array(field),\n measurements: z.array(\n z.strictObject({\n id,\n label: text,\n entityId: id,\n bindingId: id,\n citationIds,\n }),\n ),\n tracks: z.array(\n z.strictObject({\n id,\n label: text,\n collectionId: id,\n assertionId: id,\n productId: id,\n citationIds,\n }),\n ),\n reviews: z.array(\n z.strictObject({\n id,\n claimId: id,\n fieldId: id,\n title: text,\n summary: text,\n reviewerLabel: text,\n methodLabel: text,\n citationIds,\n }),\n ),\n }),\n});\nexport type ContextCasePresentation = z.infer<\n typeof ContextCasePresentationSchema\n>;\nexport function contextCasePresentationJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(ContextCasePresentationSchema, {\n target: \"draft-2020-12\",\n reused: \"ref\",\n }),\n $id: CONTEXT_CASE_PRESENTATION_SCHEMA_ID,\n };\n}\nexport function parseContextCasePresentation(input: unknown) {\n const p = ContextCasePresentationSchema.safeParse(input);\n if (!p.success || !parseCasePresentation(p.data.presentation).success)\n return { success: false as const };\n const c = p.data.context;\n const unique = (ids: string[]) => new Set(ids).size === ids.length;\n if (\n ![c.fields, c.measurements, c.tracks, c.reviews].every((xs) =>\n unique(xs.map((x) => x.id)),\n )\n )\n return { success: false as const };\n const ids = new Set(p.data.presentation.citations.map((c) => c.id));\n const selections = [\n ...c.fields.flatMap((f) => f.assertions),\n ...c.measurements,\n ...c.tracks,\n ...c.reviews,\n ];\n if (\n selections.some(\n (s) => !unique(s.citationIds) || s.citationIds.some((i) => !ids.has(i)),\n )\n )\n return { success: false as const };\n if (\n c.fields.some((f) => !unique(f.assertions.map((a) => a.assertionId))) ||\n c.reviews.some((r) => !c.fields.some((f) => f.id === r.fieldId))\n )\n return { success: false as const };\n return { success: true as const, data: p.data };\n}\nexport interface PublicContextSelection {\n fields: Array<{\n id: string;\n label: string;\n assertions: Array<{\n id: string;\n state: string;\n value?: string;\n reason?: string;\n attributionLabel: string;\n citationIds: string[];\n }>;\n reviewIds: string[];\n }>;\n measurements: Array<{\n id: string;\n label: string;\n value: number;\n unit: string;\n uncertainty: string;\n method: string;\n citationIds: string[];\n }>;\n tracks: Array<{\n id: string;\n label: string;\n format: string;\n citationIds: string[];\n }>;\n reviews: Array<{\n id: string;\n fieldId: string;\n title: string;\n summary: string;\n reviewerLabel: string;\n status: \"assessed\" | \"unassessed\";\n outcome?: string;\n revision: \"current\" | \"superseded\";\n method: string;\n citationIds: string[];\n }>;\n limitations: string[];\n}\nexport type PublicContextCasePayload = Omit<\n PublicCasePayload,\n \"schemaVersion\"\n> & { schemaVersion: \"0.2.0\"; context: PublicContextSelection };\nconst bytes = (v: unknown) => new TextEncoder().encode(JSON.stringify(v));\nconst decode = (b: Uint8Array): unknown =>\n JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(b));\nconst digest = async (b: Uint8Array) =>\n Array.from(\n new Uint8Array(await crypto.subtle.digest(\"SHA-256\", Uint8Array.from(b))),\n )\n .map((n) => n.toString(16).padStart(2, \"0\"))\n .join(\"\");\nconst invalid = () => ({\n success: false as const,\n code: \"INVALID_REFERENCES\" as const,\n});\n\n/** No fetching. Approval covers exact envelope bytes, including selected snapshot identities.\n * Access labels do not grant disclosure. Only selected primitives and approved editorial labels leave this function. */\nexport async function buildPublicContextCase(\n input: Uint8Array,\n options: {\n documents: ReadonlyMap<string, Uint8Array>;\n approval?: CasePublicationApproval;\n },\n) {\n const approval = z\n .strictObject({ presentationSha256: hash, policyVersion: text })\n .safeParse(options.approval);\n if (!approval.success)\n return { success: false as const, code: \"APPROVAL_REQUIRED\" as const };\n const inputBytes = Uint8Array.from(input);\n let parsed: ReturnType<typeof parseContextCasePresentation>;\n try {\n parsed = parseContextCasePresentation(decode(inputBytes));\n } catch {\n return { success: false as const, code: \"INVALID_PRESENTATION\" as const };\n }\n if (!parsed.success)\n return { success: false as const, code: \"INVALID_PRESENTATION\" as const };\n const d = parsed.data,\n selection = d.context;\n // Capture selected context/history dependencies before the first await.\n const copies = new Map<string, Uint8Array>();\n const copy = (ref: DocumentSnapshotRef) => {\n const b = options.documents.get(ref.sha256);\n if (b && !copies.has(ref.sha256))\n copies.set(ref.sha256, Uint8Array.from(b));\n };\n [selection.document, selection.history, d.presentation.caseRef].forEach(copy);\n try {\n const h = parseContextClaimHistory(\n decode(copies.get(selection.history.sha256)!),\n );\n if (!h.success) return invalid();\n for (const r of h.data.contextRefs) {\n copy(r);\n const c = parseObservationContext(decode(copies.get(r.sha256)!));\n if (!c.success) return invalid();\n copy(c.data.observationRef);\n if (c.data.acquisitionRef) copy(c.data.acquisitionRef);\n }\n // Capture the base graph before awaiting. Its approval is derived only after\n // the full envelope approval passes below.\n const baseDocuments = new Map<string, Uint8Array>();\n // Base graph capture is handled by buildPublicCase; use an immutable view for its delayed call.\n // Only supplied objects named by the base case/history/link graph are included.\n const pending: DocumentSnapshotRef[] = [\n d.presentation.caseRef,\n ...d.presentation.findings.map((f) => f.historyRef),\n ...(d.presentation.linksRef ? [d.presentation.linksRef] : []),\n ];\n for (let i = 0; i < pending.length; i++) {\n const r = pending[i]!;\n if (baseDocuments.has(r.sha256)) continue;\n const b = options.documents.get(r.sha256);\n if (!b) return invalid();\n const captured = Uint8Array.from(b);\n baseDocuments.set(r.sha256, captured);\n // Known graph edges only; the base builder validates their schema and identity.\n const value = decode(captured) as {\n observationRefs?: DocumentSnapshotRef[];\n caseRefs?: DocumentSnapshotRef[];\n links?: Array<{\n kind: string;\n document: DocumentSnapshotRef;\n reference: { document: DocumentSnapshotRef };\n }>;\n };\n pending.push(...(value.observationRefs ?? []), ...(value.caseRefs ?? []));\n for (const link of value.links ?? [])\n pending.push(\n link.kind === \"intake\" ? link.document : link.reference.document,\n );\n }\n if ((await digest(inputBytes)) !== approval.data.presentationSha256)\n return { success: false as const, code: \"APPROVAL_REQUIRED\" as const };\n const baseBytes = bytes(d.presentation);\n const base = await buildPublicCase(baseBytes, {\n documents: baseDocuments,\n approval: {\n presentationSha256: await digest(baseBytes),\n policyVersion: approval.data.policyVersion,\n },\n });\n if (!base.success) return base;\n const load = async (ref: DocumentSnapshotRef) => {\n const b = copies.get(ref.sha256);\n if (!b || (await digest(b)) !== ref.sha256) throw new Error(\"reference\");\n const v = decode(b) as { id?: string };\n if (v.id !== ref.documentId) throw new Error(\"reference\");\n return v;\n };\n const context = parseObservationContext(await load(selection.document));\n const history = parseContextClaimHistory(await load(selection.history));\n const owner = parseCaseRecord(await load(d.presentation.caseRef));\n if (!context.success || !history.success || !owner.success)\n return invalid();\n if (\n !owner.data.observationRefs.some(\n (r) =>\n caseSnapshotKey(r) === caseSnapshotKey(context.data.observationRef),\n ) ||\n !history.data.contextRefs.some(\n (r) => caseSnapshotKey(r) === caseSnapshotKey(selection.document),\n )\n )\n return invalid();\n const result = await evaluateContextClaimHistory(history.data, {\n documents: copies,\n });\n if (!result.success) return invalid();\n const observation = history.data.observation;\n if (observation.id !== context.data.observationRef.documentId)\n return invalid();\n const citeRefs = (ids: string[], required: string[]) => {\n const selected = ids.map(\n (id) => d.presentation.citations.find((c) => c.id === id)!.target,\n );\n if (\n required.some(\n (ref) =>\n !selected.some(\n (t) =>\n t.kind === \"artifact\" &&\n t.observationId === observation.id &&\n t.ref === ref,\n ),\n )\n )\n throw new Error(\"citation\");\n };\n const publicContext: PublicContextSelection = {\n fields: [],\n measurements: [],\n tracks: [],\n reviews: [],\n limitations: [\n \"Source descriptions and numeric readings retain their supplied scope. Snapshot checks do not establish source authenticity or scientific validity.\",\n \"The selected tracks are separate records. Clock alignment and multi-sensor fusion have not been verified.\",\n ],\n };\n for (const f of selection.fields) {\n const entity = context.data.entities.find((e) => e.id === f.entityId);\n const allowed = {\n name: \"place\",\n shape: \"reported_object\",\n alignmentDescription: \"collection\",\n };\n if (\n !entity ||\n entity.kind !== allowed[f.field] ||\n entity.selections?.some((s) => s.field === f.field)\n )\n return invalid();\n const assertions: PublicContextSelection[\"fields\"][number][\"assertions\"] =\n [];\n for (const chosen of f.assertions) {\n const a = contextAssertions(entity).find(\n (a) => a.field === f.field && a.assertion.id === chosen.assertionId,\n )?.assertion;\n if (!a || ![\"known\", \"unknown\"].includes(a.content.state))\n return invalid();\n const value = a.content.value;\n if (value !== undefined && typeof value !== \"string\") return invalid();\n citeRefs(\n chosen.citationIds,\n a.content.provenance ? [a.content.provenance.sourceRef] : [],\n );\n assertions.push({\n id: chosen.assertionId,\n state: a.content.state,\n ...(typeof value === \"string\" ? { value } : {}),\n ...(a.content.state === \"unknown\" && \"reason\" in a.content && typeof a.content.reason === \"string\"\n ? { reason: a.content.reason }\n : {}),\n attributionLabel: chosen.attributionLabel,\n citationIds: [...chosen.citationIds],\n });\n }\n publicContext.fields.push({\n id: f.id,\n label: f.label,\n assertions,\n reviewIds: selection.reviews\n .filter((r) => r.fieldId === f.id)\n .map((r) => r.id),\n });\n }\n for (const m of selection.measurements) {\n const entity = context.data.entities.find(\n (e) => e.id === m.entityId && e.kind === \"environment\",\n );\n const binding =\n entity && \"measurements\" in entity\n ? entity.measurements?.find((mb) => mb.id === m.bindingId)\n : undefined;\n if (!binding || binding.role !== \"ambient_temperature\") return invalid();\n const measurement = observation.measurements.find(\n (m) => m.id === binding.measurementId,\n );\n if (!measurement || measurement.selection) return invalid();\n const u = measurement.value.uncertainty;\n citeRefs(m.citationIds, [\n ...measurement.sourceRefs,\n ...(u.kind === \"unknown\" ? [] : u.sourceRefs),\n ]);\n // Measurement selection methods compare assertions; they are not acquisition methods.\n publicContext.measurements.push({\n id: m.id,\n label: m.label,\n value: measurement.value.value,\n unit: measurement.value.unit,\n uncertainty:\n u.kind === \"unknown\"\n ? `Unknown (${u.reason.replace(/_/g, \" \")})`\n : `${u.kind}: ${u.magnitude} ${u.unit}${u.kind === \"expanded\" ? `; coverage factor ${u.coverageFactor}${u.coverageProbability === undefined ? \"\" : `; coverage probability ${u.coverageProbability}`}` : \"\"}`,\n method:\n \"An acquisition method was not supplied for this reading.\",\n citationIds: [...m.citationIds],\n });\n }\n for (const t of selection.tracks) {\n const entity = context.data.entities.find(\n (e) => e.id === t.collectionId && e.kind === \"collection\",\n );\n const assertion =\n entity &&\n contextAssertions(entity).find(\n (a) => a.field === \"productRefs\" && a.assertion.id === t.assertionId,\n )?.assertion;\n if (\n !assertion ||\n !Array.isArray(assertion.content.value) ||\n !assertion.content.value.includes(`product:${t.productId}`)\n )\n return invalid();\n const product = observation.products.find((p) => p.id === t.productId);\n if (!product) return invalid();\n citeRefs(t.citationIds, [`product:${product.id}`]);\n publicContext.tracks.push({\n id: t.id,\n label: t.label,\n format: product.format,\n citationIds: [...t.citationIds],\n });\n }\n for (const r of selection.reviews) {\n const claim = history.data.claims.find((c) => c.id === r.claimId);\n const selectedField = selection.fields.find((f) => f.id === r.fieldId)!;\n if (\n !claim ||\n claim.kind !== \"assessment\" ||\n claim.subject.kind !== \"context\"\n )\n return invalid();\n const subject = claim.subject.reference;\n if (\n caseSnapshotKey(subject.document) !==\n caseSnapshotKey(selection.document) ||\n subject.target.id !== selectedField.entityId ||\n subject.target.field !== selectedField.field\n )\n return invalid();\n // Every contextual input must be visible among this field's selected assertions.\n if (\n (claim.contextInputRefs ?? []).some(\n (i) =>\n caseSnapshotKey(i.document) !==\n caseSnapshotKey(selection.document) ||\n i.target.id !== selectedField.entityId ||\n i.target.field !== selectedField.field ||\n !selectedField.assertions.some(\n (a) => a.assertionId === i.assertionId,\n ),\n )\n )\n return invalid();\n // This first bounded reader supports direct artifact inputs only; no hidden claim chains.\n if (claim.inputRefs.some((i) => !/^(source|product):/.test(i)))\n return invalid();\n citeRefs(r.citationIds, claim.inputRefs);\n publicContext.reviews.push({\n id: r.id,\n fieldId: r.fieldId,\n title: r.title,\n summary: r.summary,\n reviewerLabel: r.reviewerLabel,\n status: claim.status,\n ...(claim.status === \"assessed\" ? { outcome: claim.outcome } : {}),\n revision: result.currentClaimRefs.includes(`claim:${claim.id}`)\n ? \"current\"\n : \"superseded\",\n method:\n claim.status === \"assessed\"\n ? `${r.methodLabel} (version ${claim.methodVersion})`\n : \"No assessment method supplied.\",\n citationIds: [...r.citationIds],\n });\n }\n return {\n success: true as const,\n data: {\n ...base.data,\n schemaVersion: \"0.2.0\" as const,\n assessmentNotice:\n \"These are attributed assessments. Reference checks do not independently verify their conclusions.\",\n context: publicContext,\n },\n };\n } catch {\n return invalid();\n }\n}\n\nexport async function buildPublicContextCaseOutputs(\n input: Uint8Array,\n options: Parameters<typeof buildPublicContextCase>[1],\n) {\n const result = await buildPublicContextCase(input, options);\n if (!result.success) return result;\n const c = result.data.context,\n escape = (s: string) => s.replace(/[!-/:-@\\[-`{-~]/g, \"\\\\$&\");\n const lines: string[] = [],\n search: string[] = [];\n const add = (title: string, body: string[], citations: string[]) => {\n lines.push(\n `## ${escape(title)}`,\n \"\",\n ...body.map(escape),\n \"\",\n `Sources: ${citations.map(escape).join(\", \")}`,\n \"\",\n );\n search.push(title, ...body);\n };\n for (const f of c.fields)\n add(\n f.label,\n f.assertions.map(\n (a) =>\n `${a.value ?? a.state}${a.reason ? ` (${a.reason})` : \"\"} · ${a.attributionLabel}`,\n ),\n [...new Set(f.assertions.flatMap((a) => a.citationIds))],\n );\n for (const m of c.measurements)\n add(\n m.label,\n [`${m.value} ${m.unit}`, `Uncertainty: ${m.uncertainty}`, m.method],\n m.citationIds,\n );\n for (const t of c.tracks)\n add(t.label, [`Separate product: ${t.format}`], t.citationIds);\n for (const r of c.reviews)\n add(\n r.title,\n [\n r.summary,\n `${r.reviewerLabel} · ${r.status} · ${r.outcome ?? \"\"} · ${r.revision}`,\n r.method,\n ],\n r.citationIds,\n );\n lines.push(...c.limitations.map(escape));\n search.push(...c.limitations);\n return formatPublicCaseOutputs(result.data, lines, search);\n}\n","import type { DocumentSnapshotRef } from \"@disclosureos/records/experimental/v2\";\nconst decode = (b: Uint8Array): unknown =>\n JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(b));\n/** Capture declared graph edges before awaiting. Callers must validate every used schema and identity. */\nexport function capturePresentationSnapshots(\n documents: ReadonlyMap<string, Uint8Array>,\n roots: DocumentSnapshotRef[]\n) {\n const copies = new Map<string, Uint8Array>();\n const pending = [...roots];\n for (let i = 0; i < pending.length; i++) {\n const r = pending[i]!;\n if (copies.has(r.sha256)) continue;\n const b = documents.get(r.sha256);\n if (!b) throw Error(\"Missing snapshot\");\n const captured = Uint8Array.from(b);\n copies.set(r.sha256, captured);\n const v = decode(captured) as {\n entities?: Array<{\n selectionRef?: { document: DocumentSnapshotRef };\n transferRef?: { document: DocumentSnapshotRef };\n }>;\n observationRef?: DocumentSnapshotRef;\n acquisitionRef?: DocumentSnapshotRef;\n contextRefs?: DocumentSnapshotRef[];\n entityRefs?: DocumentSnapshotRef[];\n observationRefs?: DocumentSnapshotRef[];\n caseRefs?: DocumentSnapshotRef[];\n links?: Array<{\n kind: string;\n document: DocumentSnapshotRef;\n reference: { document: DocumentSnapshotRef };\n }>;\n };\n pending.push(\n ...(v.observationRef ? [v.observationRef] : []),\n ...(v.acquisitionRef ? [v.acquisitionRef] : []),\n ...(v.contextRefs ?? []),\n ...(v.entityRefs ?? []),\n ...(v.observationRefs ?? []),\n ...(v.caseRefs ?? [])\n );\n for (const e of v.entities ?? []) {\n if (e.selectionRef) pending.push(e.selectionRef.document);\n if (e.transferRef) pending.push(e.transferRef.document);\n }\n for (const l of v.links ?? [])\n pending.push(l.kind === \"intake\" ? l.document : l.reference.document);\n }\n return copies;\n}\n","import { z } from \"zod\";\nimport { capturePresentationSnapshots } from \"./presentation-snapshots\";\nimport {\n parseResearchEntities,\n parseResearchClaimHistory,\n parseObservationContext,\n parseCaseRecord,\n researchEntityAssertions,\n contextAssertions,\n caseSnapshotKey,\n type DocumentSnapshotRef,\n type ResearchEntity,\n} from \"@disclosureos/records/experimental/v2\";\nimport { evaluateResearchClaimHistory } from \"./research-entities-review\";\nimport {\n CasePresentationSchema,\n parseCasePresentation,\n buildPublicCase,\n formatPublicCaseOutputs,\n type CasePublicationApproval,\n type PublicCasePayload,\n} from \"./case-presentation\";\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst text = z.string().min(1).max(20000).regex(/\\S/);\nconst hash = z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/);\nconst ref = (schema: string) =>\n z.strictObject({\n documentId: id,\n schemaId: z.literal(`urn:disclosureos:experimental:${schema}`),\n sha256: hash,\n });\nconst citations = z.array(id).min(1);\nexport const TESTIMONY_CASE_PRESENTATION_SCHEMA_ID =\n \"urn:disclosureos:experimental:testimony-case-presentation:0.1.0\";\n/** A bounded selection of a public pseudonym, recorded accounts and a qualification review. */\nexport const TestimonyCasePresentationSchema = z.strictObject({\n kind: z.literal(\"testimony_case_presentation\"),\n schemaVersion: z.literal(\"0.1.0\"),\n presentation: CasePresentationSchema,\n testimony: z.strictObject({\n document: ref(\"research-entities:0.1.0\"),\n context: ref(\"observation-context:0.1.0\"),\n history: ref(\"claim-history:0.3.0\"),\n event: z.strictObject({\n entityId: id,\n assertionId: id,\n citationIds: citations,\n }),\n witness: z.strictObject({\n entityId: id,\n identityAssertionId: id,\n experienceAssertionId: id,\n citationIds: citations,\n }),\n accounts: z\n .array(\n z.strictObject({\n id,\n label: text,\n entityId: id,\n speakerAssertionId: id,\n recordedAssertionId: id,\n sourceAssertionId: id,\n contentAssertionId: id.optional(),\n eventAssertionId: id.optional(),\n oathAssertionId: id.optional(),\n citationIds: citations,\n }),\n )\n .min(1),\n review: z.strictObject({\n id,\n claimId: id,\n title: text,\n summary: text,\n reviewerLabel: text,\n methodLabel: text,\n citationIds: citations,\n }),\n }),\n});\nexport function testimonyCasePresentationJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(TestimonyCasePresentationSchema, {\n target: \"draft-2020-12\",\n reused: \"ref\",\n }),\n $id: TESTIMONY_CASE_PRESENTATION_SCHEMA_ID,\n };\n}\nexport function parseTestimonyCasePresentation(input: unknown) {\n const p = TestimonyCasePresentationSchema.safeParse(input);\n if (!p.success || !parseCasePresentation(p.data.presentation).success)\n return { success: false as const };\n const s = p.data.testimony,\n unique = (xs: string[]) => new Set(xs).size === xs.length;\n const citationIds = new Set(p.data.presentation.citations.map((c) => c.id));\n if (\n !unique(s.accounts.map((a) => a.id)) ||\n !unique(s.accounts.map((a) => a.entityId)) ||\n [s.event, s.witness, ...s.accounts, s.review].some(\n (x) =>\n !unique(x.citationIds) ||\n x.citationIds.some((i) => !citationIds.has(i)),\n )\n )\n return { success: false as const };\n return { success: true as const, data: p.data };\n}\nexport interface PublicTestimonySelection {\n event: {\n label: string;\n precision: \"quarter\";\n year: number;\n quarter: number;\n citationIds: string[];\n };\n witness: {\n id: string;\n label: string;\n identityKind: \"pseudonym\";\n experienceYears: number;\n relevantTime: string;\n citationIds: string[];\n };\n accounts: Array<{\n id: string;\n label: string;\n witnessId: string;\n recordedYear: string;\n eventPeriod?: string;\n content?: string;\n contentNotice?: string;\n oath: string;\n citationIds: string[];\n }>;\n review: {\n id: string;\n title: string;\n summary: string;\n reviewerLabel: string;\n status: \"assessed\";\n outcome: string;\n revision: \"current\" | \"superseded\";\n independence: string;\n method: string;\n citationIds: string[];\n };\n limitations: string[];\n}\nexport type PublicTestimonyCasePayload = Omit<\n PublicCasePayload,\n \"schemaVersion\"\n> & { schemaVersion: \"0.3.0\"; testimony: PublicTestimonySelection };\nconst bytes = (v: unknown) => new TextEncoder().encode(JSON.stringify(v));\nconst decode = (b: Uint8Array): unknown =>\n JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(b));\nconst digest = async (b: Uint8Array) =>\n Array.from(\n new Uint8Array(await crypto.subtle.digest(\"SHA-256\", Uint8Array.from(b))),\n )\n .map((n) => n.toString(16).padStart(2, \"0\"))\n .join(\"\");\nconst invalid = () => ({\n success: false as const,\n code: \"INVALID_REFERENCES\" as const,\n});\n/** Approval pins the entire selection. Only allowlisted primitives leave this builder. No fetches. */\nexport async function buildPublicTestimonyCase(\n input: Uint8Array,\n options: {\n documents: ReadonlyMap<string, Uint8Array>;\n approval?: CasePublicationApproval;\n },\n) {\n const approval = z\n .strictObject({ presentationSha256: hash, policyVersion: text })\n .safeParse(options.approval);\n if (!approval.success)\n return { success: false as const, code: \"APPROVAL_REQUIRED\" as const };\n const inputBytes = Uint8Array.from(input);\n let parsed: ReturnType<typeof parseTestimonyCasePresentation>;\n try {\n parsed = parseTestimonyCasePresentation(decode(inputBytes));\n } catch {\n return { success: false as const, code: \"INVALID_PRESENTATION\" as const };\n }\n if (!parsed.success)\n return { success: false as const, code: \"INVALID_PRESENTATION\" as const };\n const d = parsed.data,\n s = d.testimony;\n try {\n // Snapshot the declared graph before any await. Private extra map entries are never read.\n const copies = capturePresentationSnapshots(options.documents, [\n s.document,\n s.context,\n s.history,\n d.presentation.caseRef,\n ...d.presentation.findings.map((f) => f.historyRef),\n ...(d.presentation.linksRef ? [d.presentation.linksRef] : []),\n ]);\n if ((await digest(inputBytes)) !== approval.data.presentationSha256)\n return { success: false as const, code: \"APPROVAL_REQUIRED\" as const };\n const baseBytes = bytes(d.presentation);\n const base = await buildPublicCase(baseBytes, {\n documents: copies,\n approval: {\n presentationSha256: await digest(baseBytes),\n policyVersion: approval.data.policyVersion,\n },\n });\n if (!base.success) return base;\n const load = async (r: DocumentSnapshotRef) => {\n const b = copies.get(r.sha256);\n if (!b || (await digest(b)) !== r.sha256) throw Error(\"snapshot\");\n const v = decode(b) as { id?: string };\n if (v.id !== r.documentId) throw Error(\"identity\");\n return v;\n };\n const entities = parseResearchEntities(await load(s.document)),\n context = parseObservationContext(await load(s.context)),\n history = parseResearchClaimHistory(await load(s.history)),\n owner = parseCaseRecord(await load(d.presentation.caseRef));\n if (\n !entities.success ||\n !context.success ||\n !history.success ||\n !owner.success\n )\n return invalid();\n const same = (a: DocumentSnapshotRef, b: DocumentSnapshotRef) =>\n caseSnapshotKey(a) === caseSnapshotKey(b);\n if (\n !same(entities.data.observationRef, context.data.observationRef) ||\n !owner.data.observationRefs.some((r) =>\n same(r, entities.data.observationRef),\n ) ||\n !history.data.entityRefs.some((r) => same(r, s.document)) ||\n !history.data.contextRefs.some((r) => same(r, s.context)) ||\n !entities.data.contextRefs.some((r) => same(r, s.context))\n )\n return invalid();\n const evaluation = await evaluateResearchClaimHistory(history.data, {\n documents: copies,\n });\n if (!evaluation.success) return invalid();\n const observationId = entities.data.observationRef.documentId;\n const cite = (ids: string[], refs: string[]) => {\n const targets = ids.map(\n (id) => d.presentation.citations.find((c) => c.id === id)!.target,\n );\n if (\n refs.some(\n (ref) =>\n !targets.some(\n (t) =>\n t.kind === \"artifact\" &&\n t.observationId === observationId &&\n t.ref === ref,\n ),\n )\n )\n throw Error(\"citation\");\n };\n const assertion = (\n entity: ResearchEntity,\n field: string,\n assertionId: string,\n citationIds: string[],\n ) => {\n const list = researchEntityAssertions(entity).filter(\n (a) => a.field === field,\n );\n // Multiple declarations/precision states need their own presentation rather than silent collapse.\n if (list.length !== 1) throw Error(\"multiple declarations\");\n const a = list.find((a) => a.assertion.id === assertionId)?.assertion;\n if (!a || ![\"known\", \"unknown\"].includes(a.content.state))\n throw Error(\"assertion\");\n cite(\n citationIds,\n a.content.provenance ? [a.content.provenance.sourceRef] : [],\n );\n return a.content;\n };\n const temporal = context.data.entities.find(\n (e) => e.kind === \"temporal\" && e.id === s.event.entityId,\n );\n if (\n !temporal ||\n temporal.selections?.some((x) => x.field === \"calendarPeriod\")\n )\n return invalid();\n const periods = contextAssertions(temporal).filter(\n (a) => a.field === \"calendarPeriod\",\n );\n const period = periods.find((a) => a.assertion.id === s.event.assertionId)\n ?.assertion.content;\n const pv = z\n .strictObject({\n kind: z.literal(\"quarter\"),\n year: z.number().int(),\n quarter: z.number().int().min(1).max(4),\n })\n .safeParse(period?.value);\n if (periods.length !== 1 || period?.state !== \"known\" || !pv.success)\n return invalid();\n cite(\n s.event.citationIds,\n period.provenance ? [period.provenance.sourceRef] : [],\n );\n const eventLabel = `${[\"First\", \"Second\", \"Third\", \"Fourth\"][pv.data.quarter - 1]} quarter of ${pv.data.year}`;\n const witness = entities.data.entities.find(\n (e) => e.kind === \"witness\" && e.id === s.witness.entityId,\n );\n if (!witness) return invalid();\n const identity = assertion(\n witness,\n \"publicIdentity\",\n s.witness.identityAssertionId,\n s.witness.citationIds,\n );\n const publicIdentity = z\n .strictObject({ kind: z.literal(\"pseudonym\"), display: text })\n .safeParse(identity.value);\n if (identity.state !== \"known\" || !publicIdentity.success) return invalid();\n const matchesEvent = (v: unknown) => {\n const r = z\n .object({\n document: z.object({\n documentId: z.string(),\n schemaId: z.string(),\n sha256: z.string(),\n }),\n target: z.object({\n kind: z.literal(\"temporal\"),\n id: z.string(),\n field: z.string().optional(),\n }),\n })\n .safeParse(v);\n return (\n r.success &&\n same(r.data.document, s.context) &&\n r.data.target.id === s.event.entityId &&\n (!r.data.target.field || r.data.target.field === \"calendarPeriod\")\n );\n };\n const experience = assertion(\n witness,\n \"experienceYears\",\n s.witness.experienceAssertionId,\n s.witness.citationIds,\n );\n const qualification = z\n .object({\n value: z.number().min(0),\n relevantTime: z.object({\n kind: z.literal(\"context\"),\n reference: z.unknown(),\n }),\n })\n .safeParse(experience.value);\n if (\n experience.state !== \"known\" ||\n !qualification.success ||\n !matchesEvent(qualification.data.relevantTime.reference)\n )\n return invalid();\n const publicAccounts: PublicTestimonySelection[\"accounts\"] = [];\n for (const a of s.accounts) {\n const account = entities.data.entities.find(\n (e) => e.kind === \"account\" && e.id === a.entityId,\n );\n if (!account) return invalid();\n if (\n researchEntityAssertions(account).some(\n (x) => x.field === \"dateCertainty\",\n )\n )\n return invalid();\n const speaker = assertion(\n account,\n \"speakerWitnessIds\",\n a.speakerAssertionId,\n a.citationIds,\n );\n if (\n speaker.state !== \"known\" ||\n !Array.isArray(speaker.value) ||\n speaker.value.length !== 1 ||\n speaker.value[0] !== witness.id\n )\n return invalid();\n const recorded = assertion(\n account,\n \"recordedTime\",\n a.recordedAssertionId,\n a.citationIds,\n );\n const year = z\n .strictObject({\n kind: z.literal(\"year\"),\n value: z.string().regex(/^\\d{4}$/),\n })\n .safeParse(recorded.value);\n if (recorded.state !== \"known\" || !year.success) return invalid();\n const source = assertion(\n account,\n \"sourceDocument\",\n a.sourceAssertionId,\n a.citationIds,\n );\n if (source.state !== \"known\" || typeof source.value !== \"string\")\n return invalid();\n cite(a.citationIds, [source.value]);\n let content: string | undefined,\n eventPeriod: string | undefined,\n oath = \"Not selected for this public view\";\n if (a.contentAssertionId) {\n const c = assertion(\n account,\n \"content\",\n a.contentAssertionId,\n a.citationIds,\n );\n if (c.state !== \"known\" || typeof c.value !== \"string\")\n return invalid();\n content = c.value;\n }\n if (a.eventAssertionId) {\n const e = assertion(\n account,\n \"eventContext\",\n a.eventAssertionId,\n a.citationIds,\n );\n if (e.state !== \"known\" || !matchesEvent(e.value)) return invalid();\n eventPeriod = eventLabel;\n }\n if (a.oathAssertionId) {\n const o = assertion(\n account,\n \"underOath\",\n a.oathAssertionId,\n a.citationIds,\n );\n if (o.state === \"unknown\" && \"reason\" in o)\n oath = `Unknown (${String(o.reason).replace(/_/g, \" \")})`;\n else if (typeof o.value === \"boolean\")\n oath = o.value ? \"Reported under oath\" : \"Reported not under oath\";\n else return invalid();\n }\n publicAccounts.push({\n id: a.id,\n label: a.label,\n witnessId: \"witness\",\n recordedYear: year.data.value,\n ...(eventPeriod ? { eventPeriod } : {}),\n ...(content\n ? { content }\n : {\n contentNotice:\n \"Account wording is not included in this public selection.\",\n }),\n oath,\n citationIds: [...a.citationIds],\n });\n }\n const r = s.review,\n claim = history.data.claims.find((c) => c.id === r.claimId);\n if (\n !claim ||\n claim.kind !== \"assessment\" ||\n claim.status !== \"assessed\" ||\n claim.topic !== \"reported_qualification\" ||\n claim.subject.kind !== \"entity\"\n )\n return invalid();\n const target = claim.subject.reference;\n const qualificationRef = (i: typeof target) =>\n same(i.document, s.document) &&\n i.target.kind === \"witness\" &&\n i.target.id === witness.id &&\n i.target.field === \"experienceYears\";\n if (\n !qualificationRef(target) ||\n !claim.entityInputRefs?.length ||\n claim.entityInputRefs.some(\n (i) =>\n !qualificationRef(i) ||\n i.assertionId !== s.witness.experienceAssertionId,\n ) ||\n (claim.contextInputRefs ?? []).length ||\n claim.inputRefs.some((i) => !/^source:/.test(i))\n )\n return invalid();\n cite(r.citationIds, claim.inputRefs);\n // A qualification review does not establish the independence of accounts.\n if (claim.witnessReview?.multipleIndependent !== \"unknown\")\n return invalid();\n const testimony: PublicTestimonySelection = {\n event: {\n label: eventLabel,\n precision: \"quarter\",\n year: pv.data.year,\n quarter: pv.data.quarter,\n citationIds: [...s.event.citationIds],\n },\n witness: {\n id: \"witness\",\n label: publicIdentity.data.display,\n identityKind: \"pseudonym\",\n experienceYears: qualification.data.value,\n relevantTime: eventLabel,\n citationIds: [...s.witness.citationIds],\n },\n accounts: publicAccounts,\n review: {\n id: r.id,\n title: r.title,\n summary: r.summary,\n reviewerLabel: r.reviewerLabel,\n status: claim.status,\n outcome: claim.outcome,\n revision: evaluation.currentClaimRefs.includes(`claim:${claim.id}`)\n ? \"current\"\n : \"superseded\",\n independence: \"Unknown\",\n method: `${r.methodLabel} (version ${claim.methodVersion})`,\n citationIds: [...r.citationIds],\n },\n limitations: [\n \"The selected accounts refer to one witness. Multiple accounts do not establish independent witnesses.\",\n \"Event time retains quarter precision; recording time retains year precision. No exact event instant is inferred.\",\n \"The qualification is a source declaration. The review does not authenticate the witness or assign a credibility score.\",\n \"Source artifact bytes, consent to publish underlying files and scientific conclusions have not been verified. Procedures and unselected fields are outside this public selection.\",\n ],\n };\n return {\n success: true as const,\n data: {\n ...base.data,\n schemaVersion: \"0.3.0\" as const,\n assessmentNotice:\n \"These are attributed assessments. Reference checks do not independently verify their conclusions.\",\n testimony,\n },\n };\n } catch {\n return invalid();\n }\n}\nexport async function buildPublicTestimonyCaseOutputs(\n input: Uint8Array,\n options: Parameters<typeof buildPublicTestimonyCase>[1],\n) {\n const result = await buildPublicTestimonyCase(input, options);\n if (!result.success) return result;\n const t = result.data.testimony,\n escape = (s: string) => s.replace(/[!-/:-@\\[-`{-~]/g, \"\\\\$&\");\n const lines: string[] = [],\n search: string[] = [];\n const add = (title: string, body: string[], ids: string[]) => {\n lines.push(\n `## ${escape(title)}`,\n \"\",\n ...body.map(escape),\n \"\",\n `Sources: ${ids.map(escape).join(\", \")}`,\n \"\",\n );\n search.push(title, ...body);\n };\n add(\"Reported event\", [t.event.label], t.event.citationIds);\n add(\n t.witness.label,\n [\n `Public pseudonym; reported experience: ${t.witness.experienceYears} years, relevant to ${t.witness.relevantTime}.`,\n ],\n t.witness.citationIds,\n );\n for (const a of t.accounts)\n add(\n a.label,\n [\n `Recorded: ${a.recordedYear}; ${t.witness.label}`,\n `Event period: ${a.eventPeriod ?? \"Not selected for this account\"}`,\n a.content ?? a.contentNotice!,\n `Under oath: ${a.oath}`,\n ],\n a.citationIds,\n );\n const r = t.review;\n add(\n r.title,\n [\n r.summary,\n `${r.reviewerLabel} · ${r.status} · ${r.outcome} · ${r.revision}`,\n `Independent witnesses: ${r.independence}`,\n r.method,\n ],\n r.citationIds,\n );\n lines.push(...t.limitations.map(escape));\n search.push(...t.limitations);\n return formatPublicCaseOutputs(result.data, lines, search);\n}\n","import { z } from \"zod\";\nimport {\n parseArchivalEntities,\n parseArchivalClaimHistory,\n parseCaseRecord,\n researchEntityAssertions,\n caseSnapshotKey,\n type DocumentSnapshotRef,\n type ArchivalEntity,\n type EditionCitation,\n} from \"@disclosureos/records/experimental/v2\";\nimport { evaluateArchivalClaimHistory } from \"./archival-review\";\nimport { capturePresentationSnapshots } from \"./presentation-snapshots\";\nimport {\n CasePresentationSchema,\n parseCasePresentation,\n buildPublicCase,\n formatPublicCaseOutputs,\n type CasePublicationApproval,\n type PublicCasePayload,\n} from \"./case-presentation\";\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/),\n text = z.string().min(1).max(20000).regex(/\\S/),\n hash = z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/);\nconst ref = (schema: string) =>\n z.strictObject({\n documentId: id,\n schemaId: z.literal(`urn:disclosureos:experimental:${schema}`),\n sha256: hash,\n });\nconst citationIds = z.array(id).min(1);\nconst fieldNames = [\n \"originalClassification\",\n \"classificationLevel\",\n \"redactionLevel\",\n \"redactionDescription\",\n \"redactionPercent\",\n] as const;\nconst labels: Record<(typeof fieldNames)[number], string> = {\n originalClassification: \"Original marking\",\n classificationLevel: \"Current marking\",\n redactionLevel: \"Redactions\",\n redactionDescription: \"Redaction description\",\n redactionPercent: \"Redaction percentage\",\n};\nexport const ARCHIVAL_CASE_PRESENTATION_SCHEMA_ID =\n \"urn:disclosureos:experimental:archival-case-presentation:0.1.0\";\nexport const ArchivalCasePresentationSchema = z.strictObject({\n kind: z.literal(\"archival_case_presentation\"),\n schemaVersion: z.literal(\"0.1.0\"),\n presentation: CasePresentationSchema,\n archival: z.strictObject({\n document: ref(\"research-entities:0.2.0\"),\n history: ref(\"claim-history:0.4.0\"),\n editions: z\n .array(\n z.strictObject({\n id,\n label: text,\n entityId: id,\n titleAssertionId: id,\n pageCountAssertionId: id,\n attachmentId: id.optional(),\n citationIds,\n fields: z.array(\n z.strictObject({ field: z.enum(fieldNames), assertionId: id }),\n ),\n events: z.array(\n z.strictObject({\n id,\n entityId: id,\n typeAssertionId: id,\n dateAssertionId: id,\n citationIds,\n }),\n ),\n digital: z.strictObject({\n entityId: id,\n custodyStatusAssertionId: id.optional(),\n declaredHashesAssertionId: id.optional(),\n actions: z.array(\n z.strictObject({\n id,\n entityId: id,\n actionAssertionId: id,\n dateAssertionId: id,\n citationIds,\n }),\n ),\n }),\n }),\n )\n .min(1),\n passages: z.array(\n z.strictObject({ id, claimId: id, attributionLabel: text, citationIds }),\n ),\n review: z.strictObject({\n id,\n claimId: id,\n title: text,\n summary: text,\n reviewerLabel: text,\n methodLabel: text,\n citationIds,\n }),\n }),\n});\nexport function archivalCasePresentationJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(ArchivalCasePresentationSchema, {\n target: \"draft-2020-12\",\n reused: \"ref\",\n }),\n $id: ARCHIVAL_CASE_PRESENTATION_SCHEMA_ID,\n };\n}\nexport function parseArchivalCasePresentation(input: unknown) {\n const p = ArchivalCasePresentationSchema.safeParse(input);\n if (!p.success || !parseCasePresentation(p.data.presentation).success)\n return { success: false as const };\n const s = p.data.archival,\n unique = (xs: string[]) => new Set(xs).size === xs.length,\n citations = new Set(p.data.presentation.citations.map((c) => c.id));\n const lists = [\n s.editions,\n s.passages,\n ...s.editions.flatMap((e) => [e.events, e.digital.actions]),\n ];\n if (\n lists.some((xs) => !unique(xs.map((x) => x.id))) ||\n !unique(s.editions.map((e) => e.entityId)) ||\n !unique(s.editions.map((e) => e.digital.entityId)) ||\n !unique(s.passages.map((p) => p.claimId))\n )\n return { success: false as const };\n if (\n s.editions.some(\n (e) =>\n !unique(e.fields.map((f) => f.field)) ||\n !unique(e.events.map((x) => x.entityId)) ||\n !unique(e.digital.actions.map((x) => x.entityId)),\n )\n )\n return { success: false as const };\n if (\n [\n ...s.editions,\n ...s.editions.flatMap((e) => [...e.events, ...e.digital.actions]),\n ...s.passages,\n s.review,\n ].some(\n (x) =>\n !unique(x.citationIds) || x.citationIds.some((i) => !citations.has(i)),\n )\n )\n return { success: false as const };\n return { success: true as const, data: p.data };\n}\ntype PublicValue = { state: \"known\" | \"unknown\"; value: string };\nexport interface PublicArchivalSelection {\n editions: Array<{\n id: string;\n label: string;\n title: string;\n pages: number;\n sourceCitationId: string;\n citationIds: string[];\n fields: Array<PublicValue & { id: string; label: string }>;\n events: Array<\n PublicValue & { id: string; type: string; citationIds: string[] }\n >;\n digital: {\n sha256: string;\n attachmentId?: string;\n custodyStatus?: PublicValue;\n declaredHashes: Array<{\n algorithm: string;\n value: string;\n scope: \"unavailable_original\";\n }>;\n actions: Array<{\n id: string;\n action: string;\n occurredAt: PublicValue;\n predecessor:\n | { kind: \"action\"; id: string }\n | { kind: \"start\" }\n | { kind: \"unknown\" };\n citationIds: string[];\n }>;\n };\n }>;\n passages: Array<{\n id: string;\n text: string;\n attributionLabel: string;\n editionId: string;\n page: number;\n citationIds: string[];\n }>;\n review: {\n id: string;\n title: string;\n summary: string;\n reviewerLabel: string;\n status: \"assessed\";\n outcome: string;\n revision: \"current\" | \"superseded\";\n method: string;\n inputs: Array<{ editionId: string; page: number }>;\n citationIds: string[];\n };\n limitations: string[];\n}\nexport type PublicArchivalCasePayload = Omit<\n PublicCasePayload,\n \"schemaVersion\"\n> & { schemaVersion: \"0.4.0\"; archival: PublicArchivalSelection };\nconst bytes = (v: unknown) => new TextEncoder().encode(JSON.stringify(v)),\n decode = (b: Uint8Array): unknown =>\n JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(b));\nconst digest = async (b: Uint8Array) =>\n Array.from(\n new Uint8Array(await crypto.subtle.digest(\"SHA-256\", Uint8Array.from(b))),\n )\n .map((n) => n.toString(16).padStart(2, \"0\"))\n .join(\"\");\nconst invalid = () => ({\n success: false as const,\n code: \"INVALID_REFERENCES\" as const,\n});\n/** Only selected edition declarations, page-bound passages and attributed review details are public. No fetching. */\nexport async function buildPublicArchivalCase(\n input: Uint8Array,\n options: {\n documents: ReadonlyMap<string, Uint8Array>;\n approval?: CasePublicationApproval;\n },\n) {\n const approval = z\n .strictObject({ presentationSha256: hash, policyVersion: text })\n .safeParse(options.approval);\n if (!approval.success)\n return { success: false as const, code: \"APPROVAL_REQUIRED\" as const };\n const inputBytes = Uint8Array.from(input);\n let parsed: ReturnType<typeof parseArchivalCasePresentation>;\n try {\n parsed = parseArchivalCasePresentation(decode(inputBytes));\n } catch {\n return { success: false as const, code: \"INVALID_PRESENTATION\" as const };\n }\n if (!parsed.success)\n return { success: false as const, code: \"INVALID_PRESENTATION\" as const };\n const d = parsed.data,\n s = d.archival;\n try {\n const copies = capturePresentationSnapshots(options.documents, [\n s.document,\n s.history,\n d.presentation.caseRef,\n ...d.presentation.findings.map((f) => f.historyRef),\n ...(d.presentation.linksRef ? [d.presentation.linksRef] : []),\n ]);\n if ((await digest(inputBytes)) !== approval.data.presentationSha256)\n return { success: false as const, code: \"APPROVAL_REQUIRED\" as const };\n const baseBytes = bytes(d.presentation),\n base = await buildPublicCase(baseBytes, {\n documents: copies,\n approval: {\n presentationSha256: await digest(baseBytes),\n policyVersion: approval.data.policyVersion,\n },\n });\n if (!base.success) return base;\n const load = async (r: DocumentSnapshotRef) => {\n const b = copies.get(r.sha256);\n if (!b || (await digest(b)) !== r.sha256) throw Error(\"snapshot\");\n const v = decode(b) as { id?: string };\n if (v.id !== r.documentId) throw Error(\"identity\");\n return v;\n };\n const entities = parseArchivalEntities(await load(s.document)),\n history = parseArchivalClaimHistory(await load(s.history)),\n owner = parseCaseRecord(await load(d.presentation.caseRef));\n if (!entities.success || !history.success || !owner.success)\n return invalid();\n const same = (a: DocumentSnapshotRef, b: DocumentSnapshotRef) =>\n caseSnapshotKey(a) === caseSnapshotKey(b);\n if (\n !owner.data.observationRefs.some((r) =>\n same(r, entities.data.observationRef),\n ) ||\n !history.data.entityRefs.some((r) => same(r, s.document))\n )\n return invalid();\n const evaluation = await evaluateArchivalClaimHistory(history.data, {\n documents: copies,\n });\n if (!evaluation.success) return invalid();\n const observationId = entities.data.observationRef.documentId;\n const cite = (ids: string[], refs: string[]) => {\n const targets = ids.map(\n (id) => d.presentation.citations.find((c) => c.id === id)!.target,\n );\n if (\n refs.some(\n (ref) =>\n !targets.some(\n (t) =>\n t.kind === \"artifact\" &&\n t.observationId === observationId &&\n t.ref === ref,\n ),\n )\n )\n throw Error(\"citation\");\n };\n const assertion = (\n entity: ArchivalEntity,\n field: string,\n assertionId: string,\n ids: string[],\n ) => {\n const list = researchEntityAssertions(entity).filter(\n (a) => a.field === field,\n );\n if (list.length !== 1) throw Error(\"multiple declarations\");\n const a = list.find((a) => a.assertion.id === assertionId)?.assertion\n .content;\n if (!a || ![\"known\", \"unknown\"].includes(a.state)) throw Error(\"state\");\n cite(ids, a.provenance ? [a.provenance.sourceRef] : []);\n return a;\n };\n type Content = ReturnType<typeof assertion>;\n const value = (c: Content, date = false): PublicValue => {\n if (c.state === \"unknown\" && \"reason\" in c)\n return {\n state: \"unknown\",\n value: `Unknown (${String(c.reason).replace(/_/g, \" \")})`,\n };\n if (date) {\n const p = z\n .strictObject({ kind: z.literal(\"date\"), value: z.string() })\n .safeParse(c.value);\n if (!p.success) throw Error(\"date precision\");\n return { state: \"known\", value: p.data.value };\n }\n if (typeof c.value !== \"string\" && typeof c.value !== \"number\")\n throw Error(\"value\");\n return { state: \"known\", value: String(c.value) };\n };\n const knownString = (c: Content) => {\n if (c.state !== \"known\" || typeof c.value !== \"string\")\n throw Error(\"value\");\n return c.value;\n };\n const publicEditions: PublicArchivalSelection[\"editions\"] = [];\n for (const e of s.editions) {\n const edition = entities.data.entities.find(\n (x) => x.kind === \"source_edition\" && x.id === e.entityId,\n ),\n digital = entities.data.entities.find(\n (x) => x.kind === \"digital_artifact\" && x.id === e.digital.entityId,\n );\n if (\n edition?.kind !== \"source_edition\" ||\n digital?.kind !== \"digital_artifact\" ||\n edition.artifact.sourceRef !== digital.artifact.sourceRef ||\n edition.artifact.digest.value !== digital.artifact.digest.value\n )\n return invalid();\n cite(e.citationIds, [edition.artifact.sourceRef]);\n const title = knownString(\n assertion(edition, \"title\", e.titleAssertionId, e.citationIds),\n ),\n pages = assertion(\n edition,\n \"pageCount\",\n e.pageCountAssertionId,\n e.citationIds,\n );\n if (pages.state !== \"known\" || typeof pages.value !== \"number\")\n return invalid();\n if (e.attachmentId) {\n const a = d.presentation.attachments.find(\n (a) => a.id === e.attachmentId,\n );\n if (\n !a ||\n a.observationId !== observationId ||\n a.ref !== edition.artifact.sourceRef ||\n a.sha256 !== edition.artifact.digest.value\n )\n return invalid();\n }\n const fields = e.fields.map((f) => ({\n id: f.field,\n label: labels[f.field],\n ...value(assertion(edition, f.field, f.assertionId, e.citationIds)),\n }));\n const events: PublicArchivalSelection[\"editions\"][number][\"events\"] = [];\n for (const event of e.events) {\n const entry = entities.data.entities.find(\n (x) => x.kind === \"document_event\" && x.id === event.entityId,\n );\n if (entry?.kind !== \"document_event\" || entry.editionId !== edition.id)\n return invalid();\n const type = knownString(\n assertion(\n entry,\n \"eventType\",\n event.typeAssertionId,\n event.citationIds,\n ),\n );\n if (![\"release\", \"declassification\"].includes(type)) return invalid();\n events.push({\n id: event.id,\n type,\n ...value(\n assertion(\n entry,\n \"occurredAt\",\n event.dateAssertionId,\n event.citationIds,\n ),\n true,\n ),\n citationIds: [...event.citationIds],\n });\n }\n const custodyStatus = e.digital.custodyStatusAssertionId\n ? value(\n assertion(\n digital,\n \"custodyStatus\",\n e.digital.custodyStatusAssertionId,\n e.citationIds,\n ),\n )\n : undefined;\n const declaredHashes: PublicArchivalSelection[\"editions\"][number][\"digital\"][\"declaredHashes\"] =\n [];\n if (e.digital.declaredHashesAssertionId) {\n const content = assertion(\n digital,\n \"declaredHashes\",\n e.digital.declaredHashesAssertionId,\n e.citationIds,\n );\n const hashes = z\n .array(\n z.object({\n hash: z.object({\n algorithm: z.literal(\"md5\"),\n value: z.string().regex(/^[a-fA-F0-9]{32}$/),\n }),\n appliesTo: z.object({ kind: z.literal(\"unavailable_original\") }),\n }),\n )\n .min(1)\n .safeParse(content.value);\n if (content.state !== \"known\" || !hashes.success) return invalid();\n for (const h of hashes.data)\n declaredHashes.push({\n algorithm: h.hash.algorithm,\n value: h.hash.value,\n scope: \"unavailable_original\",\n });\n }\n const actions: PublicArchivalSelection[\"editions\"][number][\"digital\"][\"actions\"] =\n [];\n for (const chosen of e.digital.actions) {\n const a = entities.data.entities.find(\n (x) =>\n x.kind === \"digital_custody_action\" && x.id === chosen.entityId,\n );\n if (a?.kind !== \"digital_custody_action\" || a.artifactId !== digital.id)\n return invalid();\n let predecessor: (typeof actions)[number][\"predecessor\"];\n if (a.predecessor.kind === \"action\") {\n const parentId = a.predecessor.id;\n const parent = e.digital.actions.find((x) => x.entityId === parentId);\n if (!parent) return invalid();\n predecessor = { kind: \"action\", id: parent.id };\n } else predecessor = { kind: a.predecessor.kind };\n actions.push({\n id: chosen.id,\n action: knownString(\n assertion(\n a,\n \"action\",\n chosen.actionAssertionId,\n chosen.citationIds,\n ),\n ),\n occurredAt: value(\n assertion(\n a,\n \"occurredAt\",\n chosen.dateAssertionId,\n chosen.citationIds,\n ),\n true,\n ),\n predecessor,\n citationIds: [...chosen.citationIds],\n });\n }\n // Order by explicit predecessor edges, never source-array order. Unknown predecessors stay gaps.\n const ordered: typeof actions = [];\n let pending = [...actions];\n while (pending.length) {\n const ready = pending.filter(\n (a) =>\n a.predecessor.kind !== \"action\" ||\n ordered.some(\n (x) =>\n a.predecessor.kind === \"action\" && x.id === a.predecessor.id,\n ),\n );\n if (!ready.length) return invalid();\n ready.sort((a, b) => a.id.localeCompare(b.id));\n ordered.push(...ready);\n pending = pending.filter((a) => !ready.includes(a));\n }\n const sourceCitationId = e.citationIds.find((id) => {\n const t = d.presentation.citations.find((c) => c.id === id)!.target;\n return (\n t.kind === \"artifact\" &&\n t.observationId === observationId &&\n t.ref === edition.artifact.sourceRef\n );\n })!;\n publicEditions.push({\n id: e.id,\n label: e.label,\n title,\n pages: pages.value,\n sourceCitationId,\n citationIds: [...e.citationIds],\n fields,\n events,\n digital: {\n sha256: edition.artifact.digest.value,\n ...(e.attachmentId ? { attachmentId: e.attachmentId } : {}),\n ...(custodyStatus ? { custodyStatus } : {}),\n declaredHashes,\n actions: ordered,\n },\n });\n }\n const pageCitation = (c: EditionCitation, ids: string[]) => {\n if (!same(c.document, s.document) || c.locator.kind !== \"page\")\n throw Error(\"edition\");\n const chosen = s.editions.find((e) => e.entityId === c.editionId),\n edition = publicEditions.find((e) => e.id === chosen?.id);\n if (\n !chosen ||\n !edition ||\n edition.digital.sha256 !== c.artifact.digest.value ||\n c.locator.page > edition.pages\n )\n throw Error(\"edition\");\n const raw = entities.data.entities.find(\n (e) => e.kind === \"source_edition\" && e.id === chosen.entityId,\n );\n if (\n raw?.kind !== \"source_edition\" ||\n raw.artifact.sourceRef !== c.artifact.sourceRef\n )\n throw Error(\"artifact\");\n cite(ids, [c.artifact.sourceRef]);\n return { editionId: edition.id, page: c.locator.page };\n };\n const passages: PublicArchivalSelection[\"passages\"] = [];\n for (const p of s.passages) {\n const c = history.data.claims.find((c) => c.id === p.claimId);\n if (\n !c ||\n c.kind !== \"source_assertion\" ||\n !c.editionCitation ||\n c.subject.kind !== \"entity\" ||\n c.subject.reference.target.kind !== \"source_edition\" ||\n c.subject.reference.target.id !== c.editionCitation.editionId ||\n !same(c.subject.reference.document, s.document) ||\n c.subject.reference.target.field\n )\n return invalid();\n cite(p.citationIds, [c.provenance.sourceRef]);\n passages.push({\n id: p.id,\n text: c.text,\n attributionLabel: p.attributionLabel,\n ...pageCitation(c.editionCitation, p.citationIds),\n citationIds: [...p.citationIds],\n });\n }\n const r = s.review,\n c = history.data.claims.find((c) => c.id === r.claimId);\n if (\n !c ||\n c.kind !== \"assessment\" ||\n c.status !== \"assessed\" ||\n c.topic !== \"edition_relationship\" ||\n c.subject.kind !== \"entity\" ||\n c.subject.reference.target.kind !== \"source_edition\" ||\n c.subject.reference.target.field ||\n !same(c.subject.reference.document, s.document) ||\n !s.editions.some(\n (e) =>\n c.subject.kind === \"entity\" &&\n e.entityId === c.subject.reference.target.id,\n ) ||\n !c.editionInputRefs?.length ||\n (c.entityInputRefs ?? []).length ||\n (c.contextInputRefs ?? []).length ||\n c.inputRefs.some((i) => !/^source:/.test(i))\n )\n return invalid();\n cite(r.citationIds, c.inputRefs);\n const inputs = c.editionInputRefs.map((i) =>\n pageCitation(i, r.citationIds),\n );\n const archival: PublicArchivalSelection = {\n editions: publicEditions,\n passages,\n review: {\n id: r.id,\n title: r.title,\n summary: r.summary,\n reviewerLabel: r.reviewerLabel,\n status: c.status,\n outcome: c.outcome,\n revision: evaluation.currentClaimRefs.includes(`claim:${c.id}`)\n ? \"current\"\n : \"superseded\",\n method: `${r.methodLabel} (version ${c.methodVersion})`,\n inputs,\n citationIds: [...r.citationIds],\n },\n limitations: [\n \"Each citation belongs to a specific edition and page. A shared title does not make editions interchangeable.\",\n \"Release and declassification are separate declarations. A release date does not supply a missing declassification date.\",\n \"Custody actions follow declared predecessor links. A gap is not a complete chain, and array order is not a timeline.\",\n \"Checks cover supplied structured snapshots and references. File delivery checks matching bytes separately; neither check establishes authenticity or faithful reproduction.\",\n \"An MD5 declaration for an unavailable original cannot verify either supplied edition. Unselected fields and checks remain outside this public view.\",\n ],\n };\n return {\n success: true as const,\n data: {\n ...base.data,\n schemaVersion: \"0.4.0\" as const,\n assessmentNotice:\n \"These are attributed assessments. Reference checks do not independently verify their conclusions.\",\n archival,\n },\n };\n } catch {\n return invalid();\n }\n}\nexport async function buildPublicArchivalCaseOutputs(\n input: Uint8Array,\n options: Parameters<typeof buildPublicArchivalCase>[1],\n) {\n const result = await buildPublicArchivalCase(input, options);\n if (!result.success) return result;\n const a = result.data.archival,\n escape = (s: string) => s.replace(/[!-/:-@\\[-`{-~]/g, \"\\\\$&\"),\n lines: string[] = [],\n search: string[] = [];\n const add = (title: string, body: string[], ids: string[]) => {\n lines.push(\n `## ${escape(title)}`,\n \"\",\n ...body.map(escape),\n \"\",\n `Sources: ${ids.map(escape).join(\", \")}`,\n \"\",\n );\n search.push(title, ...body);\n };\n for (const e of a.editions) {\n add(\n e.label,\n [\n `${e.title}; ${e.pages} pages`,\n ...e.fields.map((f) => `${f.label}: ${f.value}`),\n `Declared file SHA-256: ${e.digital.sha256}`,\n ...(e.digital.custodyStatus\n ? [`Custody: ${e.digital.custodyStatus.value}`]\n : []),\n ...e.digital.declaredHashes.map(\n (h) =>\n `${h.algorithm}: ${h.value}; unavailable original, not verified against this edition`,\n ),\n ],\n e.citationIds,\n );\n for (const event of e.events)\n add(`${e.label}: ${event.type}`, [event.value], event.citationIds);\n for (const action of e.digital.actions)\n add(\n `${e.label}: ${action.action}`,\n [\n `When: ${action.occurredAt.value}`,\n `Predecessor: ${action.predecessor.kind === \"action\" ? action.predecessor.id : action.predecessor.kind === \"unknown\" ? \"Earlier custody not supplied\" : \"Declared start\"}`,\n ],\n action.citationIds,\n );\n }\n const editionLabel = (id: string) =>\n a.editions.find((e) => e.id === id)!.label;\n for (const p of a.passages)\n add(\n `${editionLabel(p.editionId)}, page ${p.page}`,\n [p.text, p.attributionLabel],\n p.citationIds,\n );\n const r = a.review;\n add(\n r.title,\n [\n r.summary,\n `${r.reviewerLabel} · ${r.outcome} · ${r.revision}`,\n r.method,\n ...r.inputs.map((i) => `${editionLabel(i.editionId)}, page ${i.page}`),\n ],\n r.citationIds,\n );\n lines.push(...a.limitations.map(escape));\n search.push(...a.limitations);\n return formatPublicCaseOutputs(result.data, lines, search);\n}\n","import { z } from \"zod\";\nimport {\n parseLaboratoryEntities,\n parseLaboratoryClaimHistory,\n parseCaseRecord,\n researchEntityAssertions,\n caseSnapshotKey,\n type DocumentSnapshotRef,\n type LaboratoryEntity,\n} from \"@disclosureos/records/experimental/v2\";\nimport { evaluateLaboratoryClaimHistory } from \"./laboratory-review\";\nimport { capturePresentationSnapshots } from \"./presentation-snapshots\";\nimport {\n CasePresentationSchema,\n parseCasePresentation,\n buildPublicCase,\n formatPublicCaseOutputs,\n type CasePublicationApproval,\n type PublicCasePayload,\n} from \"./case-presentation\";\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/),\n text = z.string().min(1).max(20000).regex(/\\S/),\n hash = z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/);\nconst ref = (schema: string) =>\n z.strictObject({\n documentId: id,\n schemaId: z.literal(`urn:disclosureos:experimental:${schema}`),\n sha256: hash,\n });\nconst citationIds = z.array(id).min(1);\nconst selected = { id, entityId: id, label: text, citationIds };\nexport const MATERIAL_CASE_PRESENTATION_SCHEMA_ID =\n \"urn:disclosureos:experimental:material-case-presentation:0.1.0\";\nexport const MaterialCasePresentationSchema = z.strictObject({\n kind: z.literal(\"material_case_presentation\"),\n schemaVersion: z.literal(\"0.1.0\"),\n presentation: CasePresentationSchema,\n material: z.strictObject({\n document: ref(\"research-entities:0.4.0\"),\n history: ref(\"claim-history:0.5.0\"),\n traces: z.array(\n z.strictObject({ ...selected, descriptionAssertionId: id })\n ),\n specimens: z\n .array(\n z.strictObject({\n ...selected,\n fields: z.array(\n z.strictObject({\n field: z.enum([\n \"type\",\n \"description\",\n \"collectionTime\",\n \"reportedCustodyStatus\",\n ]),\n assertionId: id,\n })\n ),\n actions: z.array(\n z.strictObject({\n id,\n entityId: id,\n actionAssertionId: id,\n dateAssertionId: id,\n citationIds,\n })\n ),\n })\n )\n .min(1),\n preparations: z.array(\n z.strictObject({\n ...selected,\n methodAssertionId: id,\n dateAssertionId: id,\n })\n ),\n analyses: z\n .array(\n z.strictObject({\n ...selected,\n methodAssertionId: id,\n methodLabel: text,\n dateAssertionId: id,\n })\n )\n .min(1),\n results: z\n .array(\n z.strictObject({\n ...selected,\n resultAssertionId: id,\n analyteAssertionId: id.optional(),\n })\n )\n .min(1),\n review: z.strictObject({\n id,\n claimId: id,\n title: text,\n summary: text,\n reviewerLabel: text,\n methodLabel: text,\n citationIds,\n }),\n }),\n});\nexport function materialCasePresentationJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(MaterialCasePresentationSchema, {\n target: \"draft-2020-12\",\n reused: \"ref\",\n }),\n $id: MATERIAL_CASE_PRESENTATION_SCHEMA_ID,\n };\n}\nexport function parseMaterialCasePresentation(input: unknown) {\n const p = MaterialCasePresentationSchema.safeParse(input);\n if (!p.success || !parseCasePresentation(p.data.presentation).success)\n return { success: false as const };\n const s = p.data.material,\n unique = (xs: string[]) => new Set(xs).size === xs.length,\n citations = new Set(p.data.presentation.citations.map((c) => c.id)),\n lists = [\n s.traces,\n s.specimens,\n s.preparations,\n s.analyses,\n s.results,\n ...s.specimens.map((x) => x.actions),\n ];\n if (\n lists.some(\n (xs) => !unique(xs.map((x) => x.id)) || !unique(xs.map((x) => x.entityId))\n ) ||\n s.specimens.some((x) => !unique(x.fields.map((f) => f.field))) ||\n [...lists.flat(), s.review].some(\n (x) =>\n !unique(x.citationIds) || x.citationIds.some((i) => !citations.has(i))\n )\n )\n return { success: false as const };\n return { success: true as const, data: p.data };\n}\ntype PublicValue = { state: \"known\" | \"unknown\"; value: string };\ntype PublicItem = { id: string; label: string; citationIds: string[] };\ntype Limit = {\n kind: \"detection\" | \"quantification\";\n magnitude: number;\n unit: string;\n basis: string;\n};\ntype Uncertainty =\n | { kind: \"unknown\"; reason: string }\n | {\n kind: \"standard\" | \"bound\" | \"expanded\";\n magnitude: number;\n unit: string;\n coverageFactor?: number;\n coverageProbability?: number;\n };\nexport interface PublicMaterialSelection {\n traces: Array<PublicItem & { description: string }>;\n specimens: Array<\n PublicItem & {\n lineage:\n | { kind: \"collected\" | \"unknown\" }\n | { kind: \"derived\"; preparationId: string };\n fields: Array<PublicValue & { id: string; label: string }>;\n actions: Array<{\n id: string;\n action: string;\n occurredAt: PublicValue;\n predecessor:\n | { kind: \"start\" | \"unknown\" }\n | { kind: \"action\"; id: string };\n citationIds: string[];\n }>;\n }\n >;\n preparations: Array<\n PublicItem & {\n operation: string;\n inputs: string[];\n outputs: string[];\n method: string;\n occurredAt: PublicValue;\n }\n >;\n analyses: Array<\n PublicItem & {\n inputs: string[];\n preparations: string[];\n resultIds: string[];\n method: string;\n occurredAt: PublicValue;\n }\n >;\n results: Array<\n PublicItem & {\n analysisId: string;\n materialId: string;\n analyte?: PublicValue;\n value:\n | {\n kind: \"quantitative\";\n quantity: string;\n magnitude: number;\n unit: string;\n uncertainty: Uncertainty;\n limit:\n | { state: \"reported\"; value: Limit }\n | { state: \"unknown\" | \"not_applicable\" };\n }\n | { kind: \"below_limit\"; limit: Limit }\n | { kind: \"qualitative\"; text: string };\n }\n >;\n review: {\n id: string;\n title: string;\n summary: string;\n reviewerLabel: string;\n status: \"assessed\";\n outcome: string;\n revision: \"current\" | \"superseded\";\n method: string;\n resultIds: string[];\n citationIds: string[];\n };\n limitations: string[];\n}\nexport type PublicMaterialCasePayload = Omit<\n PublicCasePayload,\n \"schemaVersion\"\n> & { schemaVersion: \"0.5.0\"; material: PublicMaterialSelection };\nconst bytes = (v: unknown) => new TextEncoder().encode(JSON.stringify(v)),\n decode = (b: Uint8Array): unknown =>\n JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(b));\nconst digest = async (b: Uint8Array) =>\n Array.from(\n new Uint8Array(await crypto.subtle.digest(\"SHA-256\", Uint8Array.from(b)))\n )\n .map((n) => n.toString(16).padStart(2, \"0\"))\n .join(\"\");\nconst invalid = () => ({\n success: false as const,\n code: \"INVALID_REFERENCES\" as const,\n});\n/** Explicit public projection of specimen lineage and selected results. No source-file fetching or scientific validation. */\nexport async function buildPublicMaterialCase(\n input: Uint8Array,\n options: {\n documents: ReadonlyMap<string, Uint8Array>;\n approval?: CasePublicationApproval;\n }\n) {\n const approval = z\n .strictObject({ presentationSha256: hash, policyVersion: text })\n .safeParse(options.approval);\n if (!approval.success)\n return { success: false as const, code: \"APPROVAL_REQUIRED\" as const };\n const inputBytes = Uint8Array.from(input);\n let parsed: ReturnType<typeof parseMaterialCasePresentation>;\n try {\n parsed = parseMaterialCasePresentation(decode(inputBytes));\n } catch {\n return { success: false as const, code: \"INVALID_PRESENTATION\" as const };\n }\n if (!parsed.success)\n return { success: false as const, code: \"INVALID_PRESENTATION\" as const };\n const d = parsed.data,\n s = d.material;\n try {\n const copies = capturePresentationSnapshots(options.documents, [\n s.document,\n s.history,\n d.presentation.caseRef,\n ...d.presentation.findings.map((f) => f.historyRef),\n ...(d.presentation.linksRef ? [d.presentation.linksRef] : []),\n ]);\n if ((await digest(inputBytes)) !== approval.data.presentationSha256)\n return { success: false as const, code: \"APPROVAL_REQUIRED\" as const };\n const baseBytes = bytes(d.presentation),\n base = await buildPublicCase(baseBytes, {\n documents: copies,\n approval: {\n presentationSha256: await digest(baseBytes),\n policyVersion: approval.data.policyVersion,\n },\n });\n if (!base.success) return base;\n const load = async (r: DocumentSnapshotRef) => {\n const b = copies.get(r.sha256);\n if (!b || (await digest(b)) !== r.sha256) throw Error(\"snapshot\");\n const v = decode(b) as { id?: string };\n if (v.id !== r.documentId) throw Error(\"identity\");\n return v;\n };\n const entities = parseLaboratoryEntities(await load(s.document)),\n history = parseLaboratoryClaimHistory(await load(s.history)),\n owner = parseCaseRecord(await load(d.presentation.caseRef));\n if (!entities.success || !history.success || !owner.success)\n return invalid();\n const same = (a: DocumentSnapshotRef, b: DocumentSnapshotRef) =>\n caseSnapshotKey(a) === caseSnapshotKey(b);\n if (\n !owner.data.observationRefs.some((r) =>\n same(r, entities.data.observationRef)\n ) ||\n !history.data.entityRefs.some((r) => same(r, s.document))\n )\n return invalid();\n const evaluation = await evaluateLaboratoryClaimHistory(history.data, {\n documents: copies,\n });\n if (!evaluation.success) return invalid();\n const observation = history.data.observation;\n // The laboratory evaluator compares the full embedded observation to the entity snapshot.\n const cite = (ids: string[], refs: string[]) => {\n const targets = ids.map(\n (id) => d.presentation.citations.find((c) => c.id === id)!.target\n );\n if (\n refs.some(\n (ref) =>\n !targets.some(\n (t) =>\n t.kind === \"artifact\" &&\n t.observationId === observation.id &&\n t.ref === ref\n )\n )\n )\n throw Error(\"citation\");\n };\n const entity = <K extends LaboratoryEntity[\"kind\"]>(\n kind: K,\n entityId: string\n ): Extract<LaboratoryEntity, { kind: K }> => {\n const e = entities.data.entities.find(\n (e) => e.kind === kind && e.id === entityId\n );\n if (!e) throw Error(\"entity\");\n return e as Extract<LaboratoryEntity, { kind: K }>;\n };\n const assertion = (\n e: LaboratoryEntity,\n field: string,\n assertionId: string,\n ids: string[]\n ) => {\n const list = researchEntityAssertions(e).filter((a) => a.field === field);\n if (list.length !== 1) throw Error(\"competing declarations\");\n const c = list.find((a) => a.assertion.id === assertionId)?.assertion\n .content;\n if (!c || ![\"known\", \"unknown\"].includes(c.state)) throw Error(\"state\");\n cite(ids, c.provenance ? [c.provenance.sourceRef] : []);\n return c;\n };\n type Content = ReturnType<typeof assertion>;\n const value = (c: Content, date = false): PublicValue => {\n if (c.state === \"unknown\")\n return { state: \"unknown\", value: \"Unknown (not supplied)\" };\n if (date) {\n const p = z\n .strictObject({ kind: z.literal(\"date\"), value: z.string() })\n .safeParse(c.value);\n if (!p.success) throw Error(\"date precision\");\n return { state: \"known\", value: p.data.value };\n }\n if (typeof c.value !== \"string\" && typeof c.value !== \"number\")\n throw Error(\"value\");\n return { state: \"known\", value: String(c.value) };\n };\n const knownString = (c: Content) => {\n if (c.state !== \"known\" || typeof c.value !== \"string\")\n throw Error(\"value\");\n return c.value;\n };\n const publicId = (\n list: Array<{ id: string; entityId: string }>,\n entityId: string\n ) => {\n const x = list.find((x) => x.entityId === entityId);\n if (!x) throw Error(\"unselected dependency\");\n return x.id;\n };\n const item = (x: (typeof s.specimens)[number]): PublicItem => ({\n id: x.id,\n label: x.label,\n citationIds: [...x.citationIds],\n });\n const simpleItem = (x: {\n id: string;\n label: string;\n citationIds: string[];\n }): PublicItem => ({\n id: x.id,\n label: x.label,\n citationIds: [...x.citationIds],\n });\n const labels = {\n type: \"Material type\",\n description: \"Description\",\n collectionTime: \"Collection date\",\n reportedCustodyStatus: \"Reported custody\",\n };\n const specimens: PublicMaterialSelection[\"specimens\"] = s.specimens.map(\n (x) => {\n const e = entity(\"material\", x.entityId);\n const lineage =\n e.lineage.kind === \"derived\"\n ? {\n kind: \"derived\" as const,\n preparationId: publicId(\n s.preparations,\n e.lineage.preparationId\n ),\n }\n : { kind: e.lineage.kind };\n const actions: PublicMaterialSelection[\"specimens\"][number][\"actions\"] =\n x.actions.map((a) => {\n const raw = entity(\"material_custody_action\", a.entityId);\n if (raw.materialId !== e.id) throw Error(\"custody scope\");\n const predecessor =\n raw.predecessor.kind === \"action\"\n ? {\n kind: \"action\" as const,\n id: publicId(x.actions, raw.predecessor.id),\n }\n : { kind: raw.predecessor.kind };\n return {\n id: a.id,\n action: knownString(\n assertion(raw, \"action\", a.actionAssertionId, a.citationIds)\n ),\n occurredAt: value(\n assertion(raw, \"occurredAt\", a.dateAssertionId, a.citationIds),\n true\n ),\n predecessor,\n citationIds: [...a.citationIds],\n };\n });\n const ordered: typeof actions = [];\n let pending = [...actions];\n while (pending.length) {\n const ready = pending.filter(\n (a) =>\n a.predecessor.kind !== \"action\" ||\n ordered.some(\n (x) =>\n a.predecessor.kind === \"action\" && x.id === a.predecessor.id\n )\n );\n if (!ready.length) throw Error(\"cycle\");\n ready.sort((a, b) => a.id.localeCompare(b.id));\n ordered.push(...ready);\n pending = pending.filter((a) => !ready.includes(a));\n }\n return {\n ...item(x),\n lineage,\n fields: x.fields.map((f) => ({\n id: f.field,\n label: labels[f.field],\n ...value(\n assertion(e, f.field, f.assertionId, x.citationIds),\n f.field === \"collectionTime\"\n ),\n })),\n actions: ordered,\n };\n }\n );\n const preparations: PublicMaterialSelection[\"preparations\"] =\n s.preparations.map((x) => {\n const e = entity(\"material_preparation\", x.entityId);\n return {\n ...simpleItem(x),\n operation: e.operation,\n inputs: e.inputMaterialIds.map((i) => publicId(s.specimens, i)),\n outputs: e.outputMaterialIds.map((i) => publicId(s.specimens, i)),\n method: knownString(\n assertion(e, \"method\", x.methodAssertionId, x.citationIds)\n ),\n occurredAt: value(\n assertion(e, \"performedAt\", x.dateAssertionId, x.citationIds),\n true\n ),\n };\n });\n const analyses: PublicMaterialSelection[\"analyses\"] = s.analyses.map(\n (x) => {\n const e = entity(\"laboratory_analysis\", x.entityId),\n c = assertion(e, \"method\", x.methodAssertionId, x.citationIds),\n m = z\n .strictObject({ methodRef: text, methodVersion: text })\n .safeParse(c.value);\n if (c.state !== \"known\" || !m.success) throw Error(\"method\");\n return {\n ...simpleItem(x),\n inputs: e.inputMaterialIds.map((i) => publicId(s.specimens, i)),\n preparations: (e.preparationIds ?? []).map((i) =>\n publicId(s.preparations, i)\n ),\n resultIds: e.resultIds.map((i) => publicId(s.results, i)),\n method: `${x.methodLabel} (version ${m.data.methodVersion})`,\n occurredAt: value(\n assertion(e, \"performedAt\", x.dateAssertionId, x.citationIds),\n true\n ),\n };\n }\n );\n const limit = (v: Limit): Limit => ({\n kind: v.kind,\n magnitude: v.magnitude,\n unit: v.unit,\n basis: v.basis,\n });\n const results: PublicMaterialSelection[\"results\"] = s.results.map((x) => {\n const e = entity(\"laboratory_result\", x.entityId),\n c = assertion(e, \"result\", x.resultAssertionId, x.citationIds);\n // The parser owns the result union; exact selection above rejects alternatives and non-known states.\n const selected = e.fields.result?.find(\n (a) => a.id === x.resultAssertionId\n )?.content;\n if (c.state !== \"known\" || selected?.state !== \"known\")\n throw Error(\"result\");\n const raw = selected.value;\n let result: PublicMaterialSelection[\"results\"][number][\"value\"];\n if (raw.kind === \"quantitative\") {\n const m = observation.measurements.find(\n (m) => m.id === raw.measurementId\n );\n if (!m) throw Error(\"measurement\");\n cite(x.citationIds, m.sourceRefs);\n const u = m.value.uncertainty;\n let uncertainty: Uncertainty;\n if (u.kind === \"unknown\")\n uncertainty = { kind: \"unknown\", reason: u.reason };\n else {\n cite(x.citationIds, u.sourceRefs);\n uncertainty = {\n kind: u.kind,\n magnitude: u.magnitude,\n unit: u.unit,\n ...(u.kind === \"expanded\"\n ? {\n coverageFactor: u.coverageFactor,\n ...(u.coverageProbability !== undefined\n ? { coverageProbability: u.coverageProbability }\n : {}),\n }\n : {}),\n };\n }\n result = {\n kind: raw.kind,\n quantity: m.quantity,\n magnitude: m.value.value,\n unit: m.value.unit,\n uncertainty,\n limit:\n raw.limit.state === \"reported\"\n ? { state: \"reported\", value: limit(raw.limit.value) }\n : { state: raw.limit.state },\n };\n } else if (raw.kind === \"below_limit\")\n result = { kind: raw.kind, limit: limit(raw.limit) };\n else result = { kind: raw.kind, text: raw.text };\n return {\n ...simpleItem(x),\n analysisId: publicId(s.analyses, e.analysisId),\n materialId: publicId(s.specimens, e.materialId),\n ...(x.analyteAssertionId\n ? {\n analyte: value(\n assertion(e, \"analyte\", x.analyteAssertionId, x.citationIds)\n ),\n }\n : {}),\n value: result,\n };\n });\n const traces = s.traces.map((x) => ({\n ...simpleItem(x),\n description: knownString(\n assertion(\n entity(\"material_trace\", x.entityId),\n \"description\",\n x.descriptionAssertionId,\n x.citationIds\n )\n ),\n }));\n const r = s.review,\n c = history.data.claims.find((c) => c.id === r.claimId);\n if (\n !c ||\n c.kind !== \"assessment\" ||\n c.status !== \"assessed\" ||\n c.topic !== \"analytical_limitations\" ||\n c.subject.kind !== \"entity\" ||\n !same(c.subject.reference.document, s.document) ||\n c.subject.reference.target.kind !== \"laboratory_result\" ||\n c.subject.reference.target.field !== \"result\" ||\n !c.entityInputRefs?.length ||\n (c.contextInputRefs ?? []).length ||\n (c.editionInputRefs ?? []).length\n )\n return invalid();\n const subjectId = c.subject.reference.target.id;\n const reviewed = c.entityInputRefs.map((i) => {\n if (\n !same(i.document, s.document) ||\n i.target.kind !== \"laboratory_result\" ||\n i.target.field !== \"result\"\n )\n throw Error(\"review scope\");\n const chosen = s.results.find(\n (x) =>\n x.entityId === i.target.id && x.resultAssertionId === i.assertionId\n );\n if (!chosen) throw Error(\"review input\");\n return chosen.id;\n });\n if (!c.entityInputRefs.some((i) => i.target.id === subjectId))\n return invalid();\n const refs: string[] = [];\n for (const input of c.inputRefs) {\n if (input.startsWith(\"source:\") || input.startsWith(\"product:\")) {\n refs.push(input);\n continue;\n }\n if (!input.startsWith(\"measurement:\")) return invalid();\n const measurementId = input.slice(\"measurement:\".length);\n if (\n !s.results.some(\n (x) =>\n reviewed.includes(x.id) &&\n entity(\"laboratory_result\", x.entityId).fields.result?.some(\n (a) =>\n a.id === x.resultAssertionId &&\n a.content.state === \"known\" &&\n a.content.value.kind === \"quantitative\" &&\n a.content.value.measurementId === measurementId\n )\n )\n )\n return invalid();\n const m = observation.measurements.find((m) => m.id === measurementId);\n if (!m) return invalid();\n refs.push(...m.sourceRefs);\n }\n for (const chosen of s.results.filter((x) => reviewed.includes(x.id))) {\n const a = assertion(\n entity(\"laboratory_result\", chosen.entityId),\n \"result\",\n chosen.resultAssertionId,\n r.citationIds\n );\n if (a.provenance) refs.push(a.provenance.sourceRef);\n }\n cite(r.citationIds, refs);\n const material: PublicMaterialSelection = {\n traces,\n specimens,\n preparations,\n analyses,\n results,\n review: {\n id: r.id,\n title: r.title,\n summary: r.summary,\n reviewerLabel: r.reviewerLabel,\n status: c.status,\n outcome: c.outcome,\n revision: evaluation.currentClaimRefs.includes(`claim:${c.id}`)\n ? \"current\"\n : \"superseded\",\n method: `${r.methodLabel} (version ${c.methodVersion})`,\n resultIds: [...new Set(reviewed)],\n citationIds: [...r.citationIds],\n },\n limitations: [\n \"Results belong to the analyzed specimen. They do not automatically apply to its parent, sibling aliquots or a nearby trace.\",\n \"A below-limit result is not zero or absence. A detection threshold is not measurement uncertainty.\",\n \"Custody follows declared predecessor links; a preparation relationship does not supply missing handoffs.\",\n \"Reference checks cover supplied structured snapshots. They do not verify physical specimens, report bytes, laboratory execution or scientific conclusions.\",\n \"Unselected information remains outside this public view. Composition alone does not determine an unusual origin.\",\n ],\n };\n return {\n success: true as const,\n data: {\n ...base.data,\n schemaVersion: \"0.5.0\" as const,\n assessmentNotice:\n \"These are attributed assessments. Reference checks do not independently verify their conclusions.\",\n material,\n },\n };\n } catch {\n return invalid();\n }\n}\nexport async function buildPublicMaterialCaseOutputs(\n input: Uint8Array,\n options: Parameters<typeof buildPublicMaterialCase>[1]\n) {\n const r = await buildPublicMaterialCase(input, options);\n if (!r.success) return r;\n const m = r.data.material,\n escape = (s: string) => s.replace(/[!-/:-@\\[-`{-~]/g, \"\\\\$&\"),\n lines: string[] = [],\n search: string[] = [];\n const add = (title: string, body: string[], ids: string[]) => {\n lines.push(\n `## ${escape(title)}`,\n \"\",\n ...body.map(escape),\n \"\",\n `Sources: ${ids.map(escape).join(\", \")}`,\n \"\"\n );\n search.push(title, ...body);\n };\n const specimen = (id: string) => m.specimens.find((x) => x.id === id)!.label;\n for (const t of m.traces)\n add(\n t.label,\n [t.description, \"Trace only; no specimen relationship is inferred.\"],\n t.citationIds\n );\n for (const s of m.specimens) {\n add(\n s.label,\n [\n `Lineage: ${s.lineage.kind}`,\n ...s.fields.map((f) => `${f.label}: ${f.value}`),\n ],\n s.citationIds\n );\n for (const a of s.actions)\n add(\n `${s.label}: ${a.action}`,\n [\n `When: ${a.occurredAt.value}`,\n `Predecessor: ${\n a.predecessor.kind === \"action\"\n ? a.predecessor.id\n : a.predecessor.kind === \"unknown\"\n ? \"Earlier custody not supplied\"\n : \"Declared start\"\n }`,\n ],\n a.citationIds\n );\n }\n for (const p of m.preparations)\n add(\n p.label,\n [\n p.operation,\n `Inputs: ${p.inputs.map(specimen).join(\", \")}`,\n `Outputs: ${p.outputs.map(specimen).join(\", \")}`,\n p.method,\n `When: ${p.occurredAt.value}`,\n ],\n p.citationIds\n );\n for (const a of m.analyses)\n add(\n a.label,\n [\n `Inputs: ${a.inputs.map(specimen).join(\", \")}`,\n a.method,\n `When: ${a.occurredAt.value}`,\n ],\n a.citationIds\n );\n for (const x of m.results) {\n const v = x.value,\n body = [\n `Specimen: ${specimen(x.materialId)}`,\n ...(x.analyte ? [`Analyte: ${x.analyte.value}`] : []),\n ];\n const threshold = (l: Limit) =>\n `${l.kind} limit: ${l.magnitude} ${l.unit}; ${l.basis}`;\n if (v.kind === \"quantitative\") {\n body.push(`${v.quantity}: ${v.magnitude} ${v.unit}`);\n const u = v.uncertainty;\n body.push(\n u.kind === \"unknown\"\n ? `Uncertainty: unknown (${u.reason})`\n : `Uncertainty: ${u.kind}, ${u.magnitude} ${u.unit}${\n u.kind === \"expanded\"\n ? `; coverage factor ${u.coverageFactor}${\n u.coverageProbability !== undefined\n ? `; coverage probability ${u.coverageProbability}`\n : \"\"\n }`\n : \"\"\n }`\n );\n body.push(\n v.limit.state === \"reported\"\n ? threshold(v.limit.value)\n : `Limit: ${v.limit.state}`\n );\n } else if (v.kind === \"below_limit\")\n body.push(`Below ${threshold(v.limit)}`);\n else body.push(v.text);\n add(x.label, body, x.citationIds);\n }\n add(\n m.review.title,\n [\n m.review.summary,\n `${m.review.reviewerLabel} · ${m.review.outcome} · ${m.review.revision}`,\n m.review.method,\n `Reviewed results: ${m.review.resultIds\n .map((id) => m.results.find((x) => x.id === id)!.label)\n .join(\", \")}`,\n ],\n m.review.citationIds\n );\n lines.push(...m.limitations.map(escape));\n search.push(...m.limitations);\n return formatPublicCaseOutputs(r.data, lines, search);\n}\n","/** Dependency-free reference reader. Validate declarations with the canonical\n * evaluator before relying on them. No rendering, network or media decoder. */\nexport type Rational = { numerator: number; denominator: number };\nexport type SourceAxis =\n | { kind: \"index\"; name: string; length: number; firstIndex: number }\n | {\n kind: \"regular\";\n name: string;\n length: number;\n origin: number;\n step: number;\n unit: string;\n }\n | {\n kind: \"time\";\n name: string;\n length: number;\n start: string;\n stepSeconds: Rational;\n };\ntype CommonLayout = {\n id: string;\n productRef: string;\n digest: { algorithm: \"sha256\"; value: string };\n byteLength: number;\n mediaType: string;\n};\nexport type ProductSourceLayout = CommonLayout &\n (\n | {\n kind: \"binary_array\";\n elementType: \"float32\" | \"float64\" | \"int16\" | \"uint16\" | \"uint8\";\n byteOrder: \"little\" | \"big\";\n order: \"row_major\";\n byteOffset: number;\n axes: SourceAxis[];\n quantity: string;\n unit: string;\n }\n | {\n kind: \"csv_table\";\n encoding: \"utf-8\";\n delimiter: \",\";\n header: true;\n rowCount: number;\n columns: string[];\n partition?: { column: string; equals: string } | undefined;\n sample?:\n | {\n valueColumn: string;\n unitColumn: string;\n quantityColumn: string;\n timeColumn: string;\n }\n | undefined;\n }\n | {\n kind: \"video\";\n frameCount: number;\n framesPerSecond: Rational;\n start: string;\n }\n );\nexport type ProductSourceSelector =\n | { kind: \"array_element\"; indices: number[] }\n | { kind: \"table_row\"; row: number }\n | { kind: \"video_frame\"; frame: number };\nexport type RelativeSourceTime = {\n start: string;\n offsetSeconds: Rational;\n durationSeconds?: Rational;\n};\nexport type ProductSourceRead = {\n byteOffset?: number;\n byteLength?: number;\n coordinates?: Record<\n string,\n number | { value: number; unit: string } | RelativeSourceTime\n >;\n time?: RelativeSourceTime | string;\n value?: number;\n unit?: string;\n quantity?: string;\n cells?: Record<string, string>;\n frame?: number;\n mediaDecoding: \"not_applicable\" | \"not_checked\";\n};\nexport const sourceElementBytes = {\n float32: 4,\n float64: 8,\n int16: 2,\n uint16: 2,\n uint8: 1,\n} as const;\nconst integer = (value: number) => Number.isSafeInteger(value) && value >= 0;\nconst safe = (value: number) => {\n if (!integer(value)) throw new Error(\"Unsafe integer arithmetic\");\n return value;\n};\n\n/** RFC 4180-style comma records, UTF-8, with LF or CRLF; row indices exclude the\n * header and count logical records, not physical lines. No whitespace coercion. */\nexport function readSourceCsv(bytes: Uint8Array): string[][] {\n const text = new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes);\n const rows: string[][] = [];\n let row: string[] = [],\n cell = \"\",\n quoted = false,\n closed = false;\n const field = () => {\n row.push(cell);\n cell = \"\";\n closed = false;\n };\n const record = () => {\n field();\n rows.push(row);\n row = [];\n };\n for (let i = 0; i < text.length; i++) {\n const c = text[i]!;\n if (quoted) {\n if (c === '\"') {\n if (text[i + 1] === '\"') {\n cell += '\"';\n i++;\n } else {\n quoted = false;\n closed = true;\n }\n } else cell += c;\n } else if (c === \",\") field();\n else if (c === \"\\n\" || c === \"\\r\") {\n if (c === \"\\r\" && text[++i] !== \"\\n\") throw new Error(\"Bare CR in CSV\");\n record();\n } else if (c === '\"' && cell === \"\" && !closed) quoted = true;\n else {\n if (closed || c === '\"') throw new Error(\"Malformed CSV quoting\");\n cell += c;\n }\n }\n if (quoted) throw new Error(\"Unterminated CSV quote\");\n if (cell !== \"\" || row.length || closed) record();\n return rows;\n}\n\n/** Locate a selected source sample and, when bytes are provided, read it.\n * Video output is only a declared frame interval; it never claims decoding. */\nexport function readProductSourceSelection(\n layout: ProductSourceLayout,\n selector: ProductSourceSelector,\n bytes?: Uint8Array\n): ProductSourceRead {\n if (bytes && bytes.byteLength !== layout.byteLength)\n throw new Error(\"Source byte length mismatch\");\n if (layout.kind === \"binary_array\" && selector.kind === \"array_element\") {\n if (selector.indices.length !== layout.axes.length)\n throw new Error(\"Array rank mismatch\");\n let element = 0;\n const coordinates: NonNullable<ProductSourceRead[\"coordinates\"]> = {};\n for (const [i, axis] of layout.axes.entries()) {\n const index = selector.indices[i]!;\n if (!integer(index) || index >= axis.length)\n throw new Error(\"Array index outside extent\");\n element = safe(safe(element * axis.length) + index);\n coordinates[axis.name] =\n axis.kind === \"index\"\n ? safe(axis.firstIndex + index)\n : axis.kind === \"regular\"\n ? { value: axis.origin + index * axis.step, unit: axis.unit }\n : {\n start: axis.start,\n offsetSeconds: {\n numerator: safe(index * axis.stepSeconds.numerator),\n denominator: axis.stepSeconds.denominator,\n },\n };\n }\n const byteLength = sourceElementBytes[layout.elementType];\n const byteOffset = safe(layout.byteOffset + safe(element * byteLength));\n if (safe(byteOffset + byteLength) > layout.byteLength)\n throw new Error(\"Array element outside artifact\");\n const result: ProductSourceRead = {\n byteOffset,\n byteLength,\n coordinates,\n quantity: layout.quantity,\n unit: layout.unit,\n mediaDecoding: \"not_applicable\",\n };\n const timeAxis = layout.axes.find((axis) => axis.kind === \"time\");\n if (timeAxis)\n result.time = coordinates[timeAxis.name] as RelativeSourceTime;\n if (bytes) {\n const view = new DataView(\n bytes.buffer,\n bytes.byteOffset,\n bytes.byteLength\n ),\n little = layout.byteOrder === \"little\";\n result.value =\n layout.elementType === \"float32\"\n ? view.getFloat32(byteOffset, little)\n : layout.elementType === \"float64\"\n ? view.getFloat64(byteOffset, little)\n : layout.elementType === \"int16\"\n ? view.getInt16(byteOffset, little)\n : layout.elementType === \"uint16\"\n ? view.getUint16(byteOffset, little)\n : view.getUint8(byteOffset);\n if (!Number.isFinite(result.value))\n throw new Error(\n \"Selected sample is nonfinite; missing-value encodings are not supported by this profile\"\n );\n }\n return result;\n }\n if (layout.kind === \"csv_table\" && selector.kind === \"table_row\") {\n if (!integer(selector.row) || selector.row >= layout.rowCount)\n throw new Error(\"CSV row outside extent\");\n if (!bytes) return { mediaDecoding: \"not_applicable\" };\n const rows = readSourceCsv(bytes),\n header = rows.shift();\n if (\n !header ||\n header.length !== layout.columns.length ||\n header.some((value, i) => value !== layout.columns[i])\n )\n throw new Error(\"CSV header mismatch\");\n if (\n rows.length !== layout.rowCount ||\n rows.some((row) => row.length !== layout.columns.length)\n )\n throw new Error(\"CSV row shape mismatch\");\n const cells = Object.fromEntries(\n layout.columns.map((name, i) => [name, rows[selector.row]![i]!])\n ) as Record<string, string>;\n if (\n layout.partition &&\n cells[layout.partition.column] !== layout.partition.equals\n )\n throw new Error(\"Selected row belongs to a different product partition\");\n const result: ProductSourceRead = {\n cells,\n mediaDecoding: \"not_applicable\",\n };\n if (layout.sample) {\n const sample = layout.sample,\n raw = cells[sample.valueColumn]!;\n if (\n !/^[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/.test(\n raw\n ) ||\n !Number.isFinite(Number(raw))\n )\n throw new Error(\"CSV sample is not a finite decimal number\");\n result.value = Number(raw);\n result.unit = cells[sample.unitColumn]!;\n result.quantity = cells[sample.quantityColumn]!;\n result.time = cells[sample.timeColumn]!;\n }\n return result;\n }\n if (layout.kind === \"video\" && selector.kind === \"video_frame\") {\n if (!integer(selector.frame) || selector.frame >= layout.frameCount)\n throw new Error(\"Video frame outside extent\");\n return {\n frame: selector.frame,\n time: {\n start: layout.start,\n offsetSeconds: {\n numerator: safe(selector.frame * layout.framesPerSecond.denominator),\n denominator: layout.framesPerSecond.numerator,\n },\n durationSeconds: {\n numerator: layout.framesPerSecond.denominator,\n denominator: layout.framesPerSecond.numerator,\n },\n },\n mediaDecoding: \"not_checked\",\n };\n }\n throw new Error(\"Selector does not match source layout\");\n}\n","import { z } from \"zod\";\nimport {\n parseExperimentalObservation,\n compareUtcInstants,\n} from \"@disclosureos/records/experimental/v2\";\nimport {\n readProductSourceSelection,\n readSourceCsv,\n sourceElementBytes,\n} from \"./product-source-reader\";\nimport type { ProductSourceRead } from \"./product-source-reader\";\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])`));\nconst integer = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER);\nconst positive = integer.min(1);\nconst rational = z.strictObject({ numerator: positive, denominator: positive });\nconst digest = z.strictObject({\n algorithm: z.literal(\"sha256\"),\n value: z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/),\n});\nconst axis = z.discriminatedUnion(\"kind\", [\n z.strictObject({\n kind: z.literal(\"index\"),\n name: id,\n length: positive,\n firstIndex: integer,\n }),\n z.strictObject({\n kind: z.literal(\"regular\"),\n name: id,\n length: positive,\n origin: z.number(),\n step: z.number().positive(),\n unit: text,\n }),\n z.strictObject({\n kind: z.literal(\"time\"),\n name: id,\n length: positive,\n start: text,\n stepSeconds: rational,\n }),\n]);\nconst common = {\n id,\n productRef: ref(\"product\"),\n digest,\n byteLength: positive,\n mediaType: text,\n};\nconst csvLayout = z.strictObject({\n ...common,\n kind: z.literal(\"csv_table\"),\n encoding: z.literal(\"utf-8\"),\n delimiter: z.literal(\",\"),\n header: z.literal(true),\n rowCount: positive,\n columns: z.array(text).min(1),\n partition: z.strictObject({ column: text, equals: text }).optional(),\n sample: z\n .strictObject({\n valueColumn: text,\n unitColumn: text,\n quantityColumn: text,\n timeColumn: text,\n })\n .optional(),\n});\nexport const ProductSourceLayoutSchema = z.union([\n z.strictObject({\n ...common,\n kind: z.literal(\"binary_array\"),\n elementType: z.enum([\"float32\", \"float64\", \"int16\", \"uint16\", \"uint8\"]),\n byteOrder: z.enum([\"little\", \"big\"]),\n order: z.literal(\"row_major\"),\n byteOffset: integer,\n axes: z.array(axis).min(1).max(8),\n quantity: text,\n unit: text,\n }),\n csvLayout,\n csvLayout.extend({\n rowCount: z.literal(0),\n partition: z.never().optional(),\n sample: z.never().optional(),\n }),\n z.strictObject({\n ...common,\n kind: z.literal(\"video\"),\n frameCount: positive,\n framesPerSecond: rational,\n start: text,\n }),\n]);\nexport const ProductSourceSelectorSchema = z.discriminatedUnion(\"kind\", [\n z.strictObject({\n kind: z.literal(\"array_element\"),\n indices: z.array(integer).min(1).max(8),\n }),\n z.strictObject({ kind: z.literal(\"table_row\"), row: integer }),\n z.strictObject({ kind: z.literal(\"video_frame\"), frame: integer }),\n]);\nexport const PRODUCT_SOURCE_SELECTION_SCHEMA_ID =\n \"urn:disclosureos:experimental:product-source-selection:0.1.0\";\nexport const PRODUCT_SOURCE_SELECTION_PROFILE = Object.freeze({\n id: \"urn:disclosureos:experimental:profile:product-source-selection\",\n version: \"0.1.0\",\n scope: \"declared_layout_and_selected_source_content\",\n} as const);\nexport const ProductSourceSelectionSchema = z.strictObject({\n kind: z.literal(\"product_source_selection\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n observationId: id,\n layouts: z.array(ProductSourceLayoutSchema).min(1),\n selections: z\n .array(\n z.strictObject({\n id,\n layoutRef: ref(\"layout\"),\n selector: ProductSourceSelectorSchema,\n measurementRef: ref(\"measurement\").optional(),\n })\n )\n .min(1),\n});\nexport type ProductSourceSelection = z.infer<\n typeof ProductSourceSelectionSchema\n>;\nexport function productSourceSelectionJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(ProductSourceSelectionSchema, {\n target: \"draft-2020-12\",\n }),\n $id: PRODUCT_SOURCE_SELECTION_SCHEMA_ID,\n };\n}\ntype Status = \"passed\" | \"failed\" | \"not_checked\";\nexport interface ProductSourceSelectionIssue {\n code: string;\n stage: \"structural\" | \"semantic\" | \"external\";\n pointer: string;\n message: string;\n}\nexport interface ProductSourceSelectionResult {\n success: boolean;\n profile: typeof PRODUCT_SOURCE_SELECTION_PROFILE;\n checks: {\n structural: Status;\n semantic: Status;\n external: Status;\n content: Status;\n };\n issues: ProductSourceSelectionIssue[];\n selections: {\n id: string;\n productRef: string;\n status: Status;\n content?: ProductSourceRead;\n }[];\n scientific: \"not_checked\";\n calibration: \"not_checked\";\n mediaDecoding: \"not_checked\";\n}\nexport async function evaluateProductSourceSelection(\n observationInput: unknown,\n selectionInput: unknown,\n options: { assets?: ReadonlyMap<string, Uint8Array> } = {}\n): Promise<ProductSourceSelectionResult> {\n const observation = parseExperimentalObservation(observationInput),\n selection = ProductSourceSelectionSchema.safeParse(selectionInput);\n const result: ProductSourceSelectionResult = {\n success: false,\n profile: PRODUCT_SOURCE_SELECTION_PROFILE,\n checks: {\n structural: \"passed\",\n semantic: \"not_checked\",\n external: \"not_checked\",\n content: \"not_checked\",\n },\n issues: [],\n selections: [],\n scientific: \"not_checked\",\n calibration: \"not_checked\",\n mediaDecoding: \"not_checked\",\n };\n const issue = (\n code: string,\n stage: ProductSourceSelectionIssue[\"stage\"],\n pointer: string,\n message: string\n ) => result.issues.push({ code, stage, pointer, message });\n if (!observation.success)\n for (const entry of observation.issues.filter(\n (i) => i.severity === \"error\"\n ))\n issue(\n entry.code,\n entry.stage === \"structural\" ? \"structural\" : \"semantic\",\n \"/observation\" + entry.pointer,\n entry.message\n );\n if (!selection.success)\n for (const entry of selection.error.issues)\n issue(\n \"STRUCT.VALUE\",\n \"structural\",\n \"/selection/\" + entry.path.join(\"/\"),\n entry.message\n );\n if (observation.checks.structural === \"failed\" || !selection.success) {\n result.checks.structural = \"failed\";\n return result;\n }\n if (!observation.success) {\n result.checks.semantic = \"failed\";\n return result;\n }\n const data = selection.data,\n record = observation.data;\n if (data.observationId !== record.id)\n issue(\n \"SELECTION.OBSERVATION\",\n \"semantic\",\n \"/selection/observationId\",\n \"Selection identifies a different observation.\"\n );\n const products = new Map(record.products.map((p) => [`product:${p.id}`, p]));\n const layouts = new Map<string, z.infer<typeof ProductSourceLayoutSchema>>(),\n productLayouts = new Set<string>(),\n selectionIds = new Set<string>();\n const validTime = (time: string) =>\n compareUtcInstants(time, time) !== undefined;\n for (const [i, layout] of data.layouts.entries()) {\n const pointer = `/selection/layouts/${i}`;\n if (\n layouts.has(`layout:${layout.id}`) ||\n productLayouts.has(layout.productRef)\n )\n issue(\n \"SELECTION.UNIQUE\",\n \"semantic\",\n pointer,\n \"Layout IDs and product mappings must be unique.\"\n );\n layouts.set(`layout:${layout.id}`, layout);\n productLayouts.add(layout.productRef);\n const product = products.get(layout.productRef);\n if (\n !product ||\n product.digest?.value !== layout.digest.value ||\n product.format !== layout.mediaType\n )\n issue(\n \"SELECTION.PRODUCT\",\n \"semantic\",\n pointer,\n \"Layout must pin an existing product digest and exact media type.\"\n );\n if (layout.kind === \"binary_array\") {\n let extent = sourceElementBytes[layout.elementType];\n const names = new Set<string>();\n let timeAxes = 0;\n for (const a of layout.axes) {\n extent *= a.length;\n if (names.has(a.name) || !Number.isSafeInteger(extent))\n issue(\n \"SELECTION.AXIS\",\n \"semantic\",\n pointer,\n \"Unique axes and safe integer array extents are required.\"\n );\n names.add(a.name);\n if (\n a.kind === \"index\" &&\n !Number.isSafeInteger(a.firstIndex + a.length - 1)\n )\n issue(\n \"SELECTION.AXIS\",\n \"semantic\",\n pointer,\n \"Index coordinate exceeds safe integer range.\"\n );\n if (\n a.kind === \"regular\" &&\n !Number.isFinite(a.origin + (a.length - 1) * a.step)\n )\n issue(\n \"SELECTION.AXIS\",\n \"semantic\",\n pointer,\n \"Regular axis coordinate overflows.\"\n );\n if (a.kind === \"time\") {\n timeAxes++;\n if (\n !validTime(a.start) ||\n !Number.isSafeInteger((a.length - 1) * a.stepSeconds.numerator)\n )\n issue(\n \"SELECTION.TIME\",\n \"semantic\",\n pointer,\n \"Time axis must have valid UTC origin and safe rational offsets.\"\n );\n }\n }\n if (\n timeAxes > 1 ||\n !Number.isSafeInteger(layout.byteOffset + extent) ||\n layout.byteOffset + extent !== layout.byteLength\n )\n issue(\n \"SELECTION.EXTENT\",\n \"semantic\",\n pointer,\n \"Array extent plus leading offset must exactly cover the declared artifact; at most one time axis is allowed.\"\n );\n } else if (layout.kind === \"csv_table\") {\n if (\n new Set(layout.columns).size !== layout.columns.length ||\n (layout.partition &&\n !layout.columns.includes(layout.partition.column)) ||\n (layout.sample &&\n Object.values(layout.sample).some(\n (column) => !layout.columns.includes(column)\n ))\n )\n issue(\n \"SELECTION.COLUMNS\",\n \"semantic\",\n pointer,\n \"CSV columns must be unique and include all selected fields.\"\n );\n if (layout.mediaType !== \"text/csv\")\n issue(\n \"SELECTION.FORMAT\",\n \"semantic\",\n pointer,\n \"CSV layout requires text/csv.\"\n );\n } else if (\n !validTime(layout.start) ||\n !Number.isSafeInteger(\n layout.frameCount * layout.framesPerSecond.denominator\n ) ||\n !layout.mediaType.startsWith(\"video/\")\n )\n issue(\n \"SELECTION.VIDEO\",\n \"semantic\",\n pointer,\n \"Video requires a video media type, valid UTC origin and safe declared frame intervals.\"\n );\n }\n const measurements = new Map(\n record.measurements.map((m) => [`measurement:${m.id}`, m])\n );\n const processes = new Map(\n record.processing.map((p) => [`process:${p.id}`, p])\n );\n const supports = (refs: readonly string[], target: string): boolean => {\n const queue = [...refs],\n seen = new Set<string>();\n while (queue.length) {\n const ref = queue.pop()!;\n if (ref === target) return true;\n if (seen.has(ref)) continue;\n seen.add(ref);\n const p = products.get(ref);\n if (p?.kind === \"derived\")\n queue.push(...processes.get(p.generatedBy)!.inputRefs);\n const assertion = record.assertions.find(\n (a) => `assertion:${a.id}` === ref\n );\n if (assertion) queue.push(assertion.provenance.sourceRef);\n }\n return false;\n };\n for (const [i, item] of data.selections.entries()) {\n const pointer = `/selection/selections/${i}`,\n layout = layouts.get(item.layoutRef);\n if (selectionIds.has(item.id))\n issue(\n \"SELECTION.UNIQUE\",\n \"semantic\",\n pointer,\n \"Selection IDs must be unique.\"\n );\n selectionIds.add(item.id);\n if (!layout) {\n issue(\"SELECTION.LAYOUT\", \"semantic\", pointer, \"Layout does not exist.\");\n continue;\n }\n try {\n readProductSourceSelection(layout, item.selector);\n } catch (error) {\n issue(\"SELECTION.LOCATOR\", \"semantic\", pointer, String(error));\n }\n if (item.measurementRef) {\n const measurement = measurements.get(item.measurementRef);\n if (\n !measurement ||\n !supports(measurement.sourceRefs, layout.productRef) ||\n layout.kind === \"video\" ||\n (layout.kind === \"csv_table\" && !layout.sample)\n )\n issue(\n \"SELECTION.MEASUREMENT\",\n \"semantic\",\n pointer,\n \"Measurement requires scalar extraction from its primary product lineage.\"\n );\n }\n }\n if (result.issues.length) {\n result.checks.semantic = \"failed\";\n return result;\n }\n result.checks.semantic = \"passed\";\n // Snapshot caller-owned assets before the first await; parsers cloned documents.\n const assets = new Map(\n [...(options.assets ?? [])].map(([ref, value]) => [\n ref,\n Uint8Array.from(value),\n ])\n );\n const verified = new Set<string>();\n for (const layout of data.layouts) {\n const value = assets.get(layout.productRef);\n if (!value) continue;\n if (value.byteLength !== layout.byteLength) {\n issue(\n \"EXTERNAL.SIZE\",\n \"external\",\n layout.productRef,\n \"Artifact byte length differs.\"\n );\n continue;\n }\n const sha = [\n ...new Uint8Array(await crypto.subtle.digest(\"SHA-256\", value)),\n ]\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n if (sha !== layout.digest.value)\n issue(\n \"EXTERNAL.DIGEST\",\n \"external\",\n layout.productRef,\n \"Artifact digest differs.\"\n );\n else verified.add(layout.productRef);\n }\n result.checks.external = result.issues.length\n ? \"failed\"\n : verified.size === data.layouts.length\n ? \"passed\"\n : \"not_checked\";\n const invalidEmptyLayouts = new Set<string>();\n // An empty table has no selectable row, so validate its retained header even\n // when no selection can point into it. Empty content is not missing content.\n for (const layout of data.layouts) {\n if (\n layout.kind !== \"csv_table\" ||\n layout.rowCount !== 0 ||\n !verified.has(layout.productRef)\n )\n continue;\n try {\n const rows = readSourceCsv(assets.get(layout.productRef)!);\n if (\n rows.length !== 1 ||\n JSON.stringify(rows[0]) !== JSON.stringify(layout.columns)\n )\n throw new Error(\n \"Empty CSV must contain exactly its declared header and no rows.\"\n );\n } catch (error) {\n invalidEmptyLayouts.add(layout.productRef);\n issue(\"SELECTION.CONTENT\", \"external\", layout.productRef, String(error));\n }\n }\n for (const [i, item] of data.selections.entries()) {\n const layout = layouts.get(item.layoutRef)!;\n if (!verified.has(layout.productRef)) {\n result.selections.push({\n id: item.id,\n productRef: layout.productRef,\n status: assets.has(layout.productRef) ? \"failed\" : \"not_checked\",\n });\n continue;\n }\n try {\n const content = readProductSourceSelection(\n layout,\n item.selector,\n assets.get(layout.productRef)!\n );\n if (typeof content.time === \"string\" && !validTime(content.time))\n throw new Error(\"CSV sample time is not valid UTC\");\n if (item.measurementRef) {\n const m = measurements.get(item.measurementRef)!;\n if (\n content.value !== m.value.value ||\n content.unit !== m.value.unit ||\n content.quantity !== m.quantity\n )\n throw new Error(\n \"Selected source value, unit or quantity does not match the measurement\"\n );\n }\n result.selections.push({\n id: item.id,\n productRef: layout.productRef,\n status: \"passed\",\n content,\n });\n } catch (error) {\n issue(\n \"SELECTION.CONTENT\",\n \"external\",\n `/selection/selections/${i}`,\n String(error)\n );\n result.selections.push({\n id: item.id,\n productRef: layout.productRef,\n status: \"failed\",\n });\n }\n }\n result.checks.content =\n invalidEmptyLayouts.size ||\n result.selections.some((s) => s.status === \"failed\")\n ? \"failed\"\n : result.selections.every((s) => s.status === \"passed\")\n ? \"passed\"\n : \"not_checked\";\n result.success =\n result.checks.external === \"passed\" && result.checks.content === \"passed\";\n return result;\n}\n","import { z } from \"zod\";\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\n/** Optional semantic profile over retained products, not a declaration of sensor capability. */\nconst base = z.strictObject({\n kind: z.literal(\"radar_profile\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n observationId: id,\n contextId: id,\n sourceSelectionId: id,\n acquisitionRef: ref(\"acquisition\"),\n acquisitionProductRef: ref(\"product\"),\n channelId: id,\n frameRef: ref(\"frame\"),\n origin: z.strictObject({ eastM: z.number(), northM: z.number() }),\n timeOrigin: z.iso.datetime({ offset: true }),\n mode: z.literal(\"rotating_scan\"),\n dataOrigin: z.enum([\"synthetic\", \"instrument\"]),\n bearingConvention: z.literal(\"clockwise_from_north\"),\n rangeConvention: z.literal(\"horizontal_range\"),\n beamReference: z.literal(\"north\").optional(),\n platform: z.never().optional(),\n preprocessing: z.never().optional(),\n projection: z.never().optional(),\n beamWidthConvention: z.literal(\"full_width_half_maximum_power\"),\n processingAvailability: z.literal(\"scan_end\"),\n detectionPosition: z.discriminatedUnion(\"kind\", [\n z.strictObject({ kind: z.literal(\"cell_center\") }),\n z.strictObject({\n kind: z.literal(\"power_weighted_neighborhood\"),\n azimuthRadius: z.number().int().min(1).max(32),\n rangeRadius: z.number().int().min(1).max(32),\n backgroundPower: z.number().min(0),\n }),\n ]),\n products: z.strictObject({\n scanSchedule: ref(\"product\"),\n returns: ref(\"product\"),\n thresholds: ref(\"product\"),\n detections: ref(\"product\"),\n tracks: ref(\"product\"),\n associations: ref(\"product\"),\n truth: ref(\"product\").optional(),\n platformPose: z.never().optional(),\n siteFeatures: ref(\"product\").optional(),\n }),\n uncertainty: z.strictObject({\n kind: z.literal(\"gaussian_position_covariance\"),\n axes: z.tuple([z.literal(\"east\"), z.literal(\"north\")]),\n unit: z.literal(\"m2\"),\n confidenceProbability: z.number().gt(0).lt(1),\n conditioning: z.never().optional(),\n }),\n});\n\nconst moving = base.extend({\n platform: z.strictObject({\n kind: z.literal(\"moving\"),\n environment: z.enum([\"airborne\", \"shipborne\"]),\n poseSampling: z.literal(\"dwell_midpoint\"),\n attitudeModel: z.literal(\"level_yaw_only\"),\n }),\n beamReference: z.enum([\"north\", \"platform_heading\"]),\n products: base.shape.products.extend({ platformPose: ref(\"product\") }),\n uncertainty: base.shape.uncertainty.extend({\n conditioning: z.literal(\"declared_pose_and_projection\"),\n }),\n});\n\nconst referenceMean = base.extend({\n preprocessing: z.strictObject({\n kind: z.literal(\"reference_mean_subtraction\"),\n referenceAcquisitionRef: ref(\"acquisition\"),\n referenceAcquisitionProductRef: ref(\"product\"),\n referenceChannelId: id,\n arithmetic: z.literal(\"float32_outputs\"),\n exclusionMeaning: z.literal(\"detector_policy\"),\n }),\n products: base.shape.products.extend({\n referenceCapture: ref(\"product\"),\n backgroundPower: ref(\"product\"),\n eligibility: ref(\"product\"),\n processedReturns: ref(\"product\"),\n }),\n});\n\n// Explicit branches retain parity between the runtime and portable JSON Schema.\n// Fixed observations remain valid without platform-specific declarations.\nexport const RadarProfileSchema = z.union([\n base,\n referenceMean,\n moving,\n moving.extend({\n rangeConvention: z.literal(\"slant_range\"),\n projection: z.strictObject({\n kind: z.literal(\"declared_horizontal_plane\"),\n upM: z.number(),\n assumption: z.literal(\"all_returns_on_plane\"),\n }),\n }),\n]);\n\nexport const RADAR_PROFILE_SCHEMA_ID =\n \"urn:disclosureos:experimental:radar-profile:0.1.0\";\nexport const RADAR_PROFILE = Object.freeze({\n id: \"urn:disclosureos:experimental:profile:rotating-radar\",\n version: \"0.1.0\",\n scope: \"retained_rotating_scan_products_and_declared_processing\",\n} as const);\nexport type RadarProfile = z.infer<typeof RadarProfileSchema>;\n\nexport function radarProfileJsonSchema(): Record<string, unknown> {\n const schema = z.toJSONSchema(RadarProfileSchema, {\n target: \"draft-2020-12\",\n });\n // Zod emits prefixItems without the fixed tuple extent. Match the runtime\n // two-axis contract in independent JSON Schema implementations as well.\n for (const branch of schema.anyOf ?? []) {\n if (typeof branch !== \"object\") continue;\n const uncertainty = branch.properties?.uncertainty;\n const axes =\n typeof uncertainty === \"object\"\n ? uncertainty.properties?.axes\n : undefined;\n if (typeof axes === \"object\") {\n axes.minItems = 2;\n axes.maxItems = 2;\n }\n }\n return { ...schema, $id: RADAR_PROFILE_SCHEMA_ID };\n}\n","import {\n readSourceCsv,\n type ProductSourceLayout,\n} from \"./product-source-reader\";\n\nexport const RADAR_TABLE_COLUMNS = Object.freeze({\n scanSchedule: [\n \"scan_index\",\n \"azimuth_index\",\n \"start_s\",\n \"end_s\",\n \"beam_azimuth_deg\",\n \"beam_width_deg\",\n ],\n platformPose: [\n \"scan_index\",\n \"azimuth_index\",\n \"time_s\",\n \"east_m\",\n \"north_m\",\n \"up_m\",\n \"heading_deg\",\n ],\n detections: [\n \"detection_id\",\n \"scan_index\",\n \"azimuth_index\",\n \"range_index\",\n \"time_s\",\n \"east_m\",\n \"north_m\",\n \"power\",\n ],\n tracks: [\n \"track_id\",\n \"scan_index\",\n \"time_s\",\n \"state\",\n \"east_m\",\n \"north_m\",\n \"velocity_east_m_s\",\n \"velocity_north_m_s\",\n \"cov_ee_m2\",\n \"cov_en_m2\",\n \"cov_nn_m2\",\n ],\n associations: [\"track_id\", \"scan_index\", \"detection_id\"],\n truth: [\"target_id\", \"scan_index\", \"time_s\", \"east_m\", \"north_m\"],\n siteFeatures: [\n \"feature_id\",\n \"kind\",\n \"label\",\n \"vertex_index\",\n \"east_m\",\n \"north_m\",\n \"closed\",\n ],\n} as const);\nexport interface RadarDwell {\n scan_index: number;\n azimuth_index: number;\n start_s: number;\n end_s: number;\n beam_azimuth_deg: number;\n beam_width_deg: number;\n}\nexport interface RadarPlatformPose {\n scan_index: number;\n azimuth_index: number;\n time_s: number;\n east_m: number;\n north_m: number;\n up_m: number;\n heading_deg: number;\n}\n\n/** Minimal geometry declaration, usable without a schema runtime in a browser. */\nexport interface RadarGeometry {\n origin: { eastM: number; northM: number };\n platform?: { kind: \"moving\" } | undefined;\n beamReference?: \"north\" | \"platform_heading\" | undefined;\n rangeConvention: \"horizontal_range\" | \"slant_range\";\n projection?: { kind: \"declared_horizontal_plane\"; upM: number } | undefined;\n}\n\n/** Project a cell using its own retained dwell pose. A null means that the\n * declared slant range cannot reach the plane; it must never become a zero-range hit.\n * This is a conditional geometric calculation, not measured target height. */\nexport function radarCellPosition(\n profile: RadarGeometry,\n pose: RadarPlatformPose | undefined,\n beamAzimuthDeg: number,\n rangeM: number\n): {\n eastM: number;\n northM: number;\n horizontalRangeM: number;\n bearingDeg: number;\n} | null {\n if (\n !Number.isFinite(rangeM) ||\n rangeM < 0 ||\n !Number.isFinite(beamAzimuthDeg)\n )\n throw new Error(\n \"Radar cell coordinates must be finite with nonnegative range.\"\n );\n if (\n (profile.platform || profile.beamReference === \"platform_heading\") &&\n !pose\n )\n throw new Error(\"Moving radar cells require a retained dwell pose.\");\n if (\n pose &&\n ![pose.east_m, pose.north_m, pose.up_m, pose.heading_deg].every(\n Number.isFinite\n )\n )\n throw new Error(\"Radar pose coordinates must be finite.\");\n const bearingDeg =\n (((beamAzimuthDeg +\n (profile.beamReference === \"platform_heading\"\n ? pose?.heading_deg ?? 0\n : 0)) %\n 360) +\n 360) %\n 360;\n let horizontalRangeM = rangeM;\n if (profile.rangeConvention === \"slant_range\") {\n if (!pose || !profile.projection)\n throw new Error(\"Slant range requires a pose and declared target plane.\");\n const height = pose.up_m - profile.projection.upM;\n if (rangeM < Math.abs(height)) return null;\n horizontalRangeM = Math.sqrt(\n Math.max(0, (rangeM - Math.abs(height)) * (rangeM + Math.abs(height)))\n );\n }\n const angle = (bearingDeg * Math.PI) / 180;\n return {\n eastM:\n (profile.platform ? pose!.east_m : profile.origin.eastM) +\n horizontalRangeM * Math.sin(angle),\n northM:\n (profile.platform ? pose!.north_m : profile.origin.northM) +\n horizontalRangeM * Math.cos(angle),\n horizontalRangeM,\n bearingDeg,\n };\n}\n\nexport interface RadarDetection {\n detection_id: string;\n scan_index: number;\n azimuth_index: number;\n range_index: number;\n time_s: number;\n east_m: number;\n north_m: number;\n power: number;\n}\nexport interface RadarTrack {\n track_id: string;\n scan_index: number;\n time_s: number;\n state: \"tentative\" | \"confirmed\" | \"coasting\";\n east_m: number;\n north_m: number;\n velocity_east_m_s: number;\n velocity_north_m_s: number;\n cov_ee_m2: number;\n cov_en_m2: number;\n cov_nn_m2: number;\n}\nexport interface RadarAssociation {\n track_id: string;\n scan_index: number;\n detection_id: string;\n}\nexport interface RadarTruth {\n target_id: string;\n scan_index: number;\n time_s: number;\n east_m: number;\n north_m: number;\n}\nexport interface RadarSiteFeatureVertex {\n feature_id: string;\n kind: \"runway\" | \"taxiway\" | \"apron\" | \"structure\" | \"reference\";\n label: string;\n vertex_index: number;\n east_m: number;\n north_m: number;\n closed: 0 | 1;\n}\nexport interface RadarDecodedProducts {\n scanSchedule: RadarDwell[];\n platformPose: RadarPlatformPose[];\n detections: RadarDetection[];\n tracks: RadarTrack[];\n associations: RadarAssociation[];\n truth: RadarTruth[];\n returns: number[];\n thresholds: number[];\n referenceCapture: number[];\n backgroundPower: number[];\n eligibility: number[];\n processedReturns: number[];\n siteFeatures: RadarSiteFeatureVertex[];\n}\nexport type RadarProductRoles = Record<\n | \"scanSchedule\"\n | \"returns\"\n | \"thresholds\"\n | \"detections\"\n | \"tracks\"\n | \"associations\",\n string\n> & {\n truth?: string | undefined;\n platformPose?: string | undefined;\n referenceCapture?: string | undefined;\n backgroundPower?: string | undefined;\n eligibility?: string | undefined;\n processedReturns?: string | undefined;\n siteFeatures?: string | undefined;\n};\n\nconst finite = (cell: string): number => {\n if (!/^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/.test(cell))\n throw new Error(\"Radar table contains a non-numeric cell.\");\n const n = Number(cell);\n if (!Number.isFinite(n))\n throw new Error(\"Radar table contains a non-finite value.\");\n return n;\n};\n\n/** Byte decoder only. Call the profile evaluator first or verify the same pinned bytes externally.\n * This function does not hash assets, certify calibration, validate associations or fit tracks. */\nexport function readRadarProducts(\n layouts: readonly ProductSourceLayout[],\n products: RadarProductRoles,\n assets: ReadonlyMap<string, Uint8Array>\n): RadarDecodedProducts {\n const layoutMap = new Map(\n layouts.map((layout) => [layout.productRef, layout])\n );\n const table = (role: keyof typeof RADAR_TABLE_COLUMNS) => {\n const product = products[role];\n if (!product) return [];\n const layout = layoutMap.get(product),\n bytes = assets.get(product);\n if (\n !layout ||\n layout.kind !== \"csv_table\" ||\n !bytes ||\n bytes.byteLength !== layout.byteLength\n )\n throw new Error(`Missing or mismatched ${role} table.`);\n if (layout.partition || layout.sample)\n throw new Error(\n `Radar ${role} tables must declare the complete table without a partition or scalar sample mapping.`\n );\n const columns = RADAR_TABLE_COLUMNS[role],\n records = readSourceCsv(bytes),\n header = records.shift();\n if (\n JSON.stringify(header) !== JSON.stringify(columns) ||\n JSON.stringify(layout.columns) !== JSON.stringify(columns) ||\n records.length !== layout.rowCount\n )\n throw new Error(`Invalid ${role} columns or row count.`);\n return records.map((row) => {\n if (row.length !== columns.length)\n throw new Error(`Invalid ${role} row width.`);\n return Object.fromEntries(\n columns.map((column, i) => {\n const cell = row[i]!;\n if (column.endsWith(\"_id\")) {\n if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(cell))\n throw new Error(`Invalid ${role} identifier.`);\n return [column, cell];\n }\n if (column === \"kind\") {\n if (\n ![\n \"runway\",\n \"taxiway\",\n \"apron\",\n \"structure\",\n \"reference\",\n ].includes(cell)\n )\n throw new Error(\"Invalid site feature kind.\");\n return [column, cell];\n }\n if (column === \"label\") {\n if (!/\\S/.test(cell))\n throw new Error(\"Site feature labels must be nonblank.\");\n return [column, cell];\n }\n if (column === \"closed\" && cell !== \"0\" && cell !== \"1\")\n throw new Error(\"Site feature closed flag must be 0 or 1.\");\n if (column === \"state\") {\n if (![\"tentative\", \"confirmed\", \"coasting\"].includes(cell))\n throw new Error(\"Invalid track state.\");\n return [column, cell];\n }\n return [column, finite(cell)];\n })\n );\n });\n };\n const array = (\n role:\n | \"returns\"\n | \"thresholds\"\n | \"referenceCapture\"\n | \"backgroundPower\"\n | \"eligibility\"\n | \"processedReturns\"\n ) => {\n const ref = products[role];\n if (!ref) return [];\n const layout = layoutMap.get(ref),\n bytes = assets.get(ref),\n elementBytes = role === \"eligibility\" ? 1 : 4;\n if (\n !layout ||\n layout.kind !== \"binary_array\" ||\n layout.elementType !== (role === \"eligibility\" ? \"uint8\" : \"float32\") ||\n layout.byteOrder !== \"little\" ||\n !bytes ||\n bytes.byteLength !== layout.byteLength ||\n layout.byteOffset < 0 ||\n !Number.isSafeInteger(layout.byteOffset)\n )\n throw new Error(`Invalid ${role} array.`);\n const count = layout.axes.reduce((n, axis) => n * axis.length, 1);\n if (\n !Number.isSafeInteger(count) ||\n layout.byteOffset + count * elementBytes !== bytes.byteLength\n )\n throw new Error(`Invalid ${role} extent.`);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength),\n values: number[] = [];\n for (let i = 0; i < count; i++) {\n const n =\n elementBytes === 1\n ? view.getUint8(layout.byteOffset + i)\n : view.getFloat32(layout.byteOffset + i * 4, true);\n if (!Number.isFinite(n)) throw new Error(`Non-finite ${role} sample.`);\n values.push(n);\n }\n return values;\n };\n return {\n scanSchedule: table(\"scanSchedule\") as unknown as RadarDwell[],\n platformPose: table(\"platformPose\") as unknown as RadarPlatformPose[],\n detections: table(\"detections\") as unknown as RadarDetection[],\n tracks: table(\"tracks\") as unknown as RadarTrack[],\n associations: table(\"associations\") as unknown as RadarAssociation[],\n truth: table(\"truth\") as unknown as RadarTruth[],\n returns: array(\"returns\"),\n thresholds: array(\"thresholds\"),\n referenceCapture: array(\"referenceCapture\"),\n backgroundPower: array(\"backgroundPower\"),\n eligibility: array(\"eligibility\"),\n processedReturns: array(\"processedReturns\"),\n siteFeatures: table(\"siteFeatures\") as unknown as RadarSiteFeatureVertex[],\n };\n}\n\n/** 2-D Gaussian probability contour multiplier. This is not a calibrated error bound. */\nexport function radarCovarianceScaleSquared(probability: number): number {\n if (!Number.isFinite(probability) || probability <= 0 || probability >= 1)\n throw new Error(\"Probability must be strictly between zero and one.\");\n return -2 * Math.log1p(-probability);\n}\n","import {\n parseExperimentalObservation,\n compareUtcInstants,\n} from \"@disclosureos/records/experimental/v2\";\nimport { parseAcquisitionContext } from \"@disclosureos/instruments/experimental/v2\";\nimport {\n ProductSourceSelectionSchema,\n evaluateProductSourceSelection,\n} from \"./product-source-selection\";\nimport {\n RadarProfileSchema,\n RADAR_PROFILE,\n type RadarProfile,\n} from \"./radar-profile-schema\";\nimport {\n readRadarProducts,\n radarCellPosition,\n type RadarDecodedProducts,\n} from \"./radar-profile-reader\";\nimport type { ProductSourceLayout } from \"./product-source-reader\";\n\nexport interface RadarProfileIssue {\n code: string;\n pointer: string;\n message: string;\n}\nexport interface RadarProfileResult {\n success: boolean;\n profile: typeof RADAR_PROFILE;\n issues: RadarProfileIssue[];\n checks: {\n structure: \"passed\" | \"failed\";\n sources: \"passed\" | \"failed\" | \"not_checked\";\n semantics: \"passed\" | \"failed\" | \"not_checked\";\n };\n scientific: \"not_checked\";\n physicalCalibration: \"not_checked\";\n trackingPerformance: \"not_checked\";\n data?: {\n declaration: RadarProfile;\n layouts: ProductSourceLayout[];\n products: RadarDecodedProducts;\n };\n}\n\nconst close = (a: number, b: number, tolerance = 1e-6) =>\n Math.abs(a - b) <= tolerance * Math.max(1, Math.abs(a), Math.abs(b));\n// Translation of a coordinate frame must not relax localization accuracy.\nconst positionClose = (a: number, b: number) =>\n Math.abs(a - b) <=\n 1e-6 + 32 * Number.EPSILON * Math.max(1, Math.abs(a), Math.abs(b));\nconst index = (n: number, length: number) =>\n Number.isSafeInteger(n) && n >= 0 && n < length;\nconst key = (id: string, scan: number) => `${id}/${scan}`;\n\n// Compare declared decimal seconds without collapsing sub-millisecond UTC digits.\nconst decimal = (value: string): { n: bigint; d: bigint } => {\n const match = /^(-?)(\\d+)(?:\\.(\\d+))?(?:e([+-]?\\d+))?$/i.exec(value)!;\n const fraction = match[3] ?? \"\",\n exponent = Number(match[4] ?? 0) - fraction.length;\n const coefficient = BigInt(`${match[1]}${match[2]}${fraction}`);\n return exponent >= 0\n ? { n: coefficient * 10n ** BigInt(exponent), d: 1n }\n : { n: coefficient, d: 10n ** BigInt(-exponent) };\n};\nconst epoch = (instant: string) => {\n const fraction = /\\.(\\d+)(?=Z|[+-]\\d{2}:\\d{2}$)/.exec(instant);\n const whole = instant.replace(/\\.\\d+(?=Z|[+-]\\d{2}:\\d{2}$)/, \"\");\n const part = decimal(`0.${fraction?.[1] ?? \"0\"}`);\n return { n: BigInt(Date.parse(whole) / 1000) * part.d + part.n, d: part.d };\n};\nconst compareOffset = (origin: string, seconds: number, boundary: string) => {\n const a = epoch(origin),\n offset = decimal(String(seconds)),\n b = epoch(boundary);\n const delta = (a.n * offset.d + offset.n * a.d) * b.d - b.n * a.d * offset.d;\n return delta < 0n ? -1 : delta > 0n ? 1 : 0;\n};\n\n/** Validates a fixed or declared moving-platform full-rotation product profile.\n * It checks declared lineage and retained numerical consistency, not detector performance,\n * target identity, physical calibration, antenna adequacy or Gaussian error coverage. */\nexport async function evaluateRadarProfile(\n observationInput: unknown,\n contextInput: unknown,\n selectionInput: unknown,\n profileInput: unknown,\n options: { assets?: ReadonlyMap<string, Uint8Array> } = {}\n): Promise<RadarProfileResult> {\n const result: RadarProfileResult = {\n success: false,\n profile: RADAR_PROFILE,\n issues: [],\n checks: {\n structure: \"passed\",\n sources: \"not_checked\",\n semantics: \"not_checked\",\n },\n scientific: \"not_checked\",\n physicalCalibration: \"not_checked\",\n trackingPerformance: \"not_checked\",\n };\n const issue = (code: string, pointer: string, message: string) => {\n result.issues.push({ code, pointer, message });\n };\n const parsed = RadarProfileSchema.safeParse(profileInput),\n observation = parseExperimentalObservation(observationInput),\n context = parseAcquisitionContext(contextInput),\n selection = ProductSourceSelectionSchema.safeParse(selectionInput);\n if (\n !parsed.success ||\n !observation.success ||\n !context.success ||\n !selection.success\n ) {\n result.checks.structure = \"failed\";\n issue(\n \"RADAR.PREREQUISITE\",\n \"/\",\n \"Profile, observation, acquisition context and source selection must satisfy their contracts.\"\n );\n return result;\n }\n const profile = parsed.data,\n obs = observation.data,\n ctx = context.data,\n sources = selection.data;\n if (\n profile.observationId !== obs.id ||\n profile.contextId !== ctx.id ||\n profile.sourceSelectionId !== sources.id ||\n sources.observationId !== obs.id\n )\n issue(\n \"RADAR.IDENTITY\",\n \"/\",\n \"Profile identifiers must select these exact documents.\"\n );\n const roleRefs = Object.values(profile.products).filter(\n (ref): ref is string => ref !== undefined\n );\n if (new Set(roleRefs).size !== roleRefs.length)\n issue(\n \"RADAR.ROLE_ALIAS\",\n \"/products\",\n \"Each radar role must reference a distinct retained product.\"\n );\n if (profile.products.truth && profile.dataOrigin !== \"synthetic\")\n issue(\n \"RADAR.TRUTH_ORIGIN\",\n \"/products/truth\",\n \"The optional truth oracle is only defined for explicitly synthetic products.\"\n );\n const frame = obs.frames.find(\n (frame) => `frame:${frame.id}` === profile.frameRef\n );\n if (!frame || frame.kind !== \"cartesian\" || frame.unit !== \"m\")\n issue(\n \"RADAR.FRAME\",\n \"/frameRef\",\n \"Radar positions require a declared Cartesian frame in meters.\"\n );\n const acquisition = ctx.acquisitions.find(\n (item) => `acquisition:${item.id}` === profile.acquisitionRef\n ),\n capture = ctx.products.find(\n (item) => `product:${item.id}` === profile.acquisitionProductRef\n );\n if (\n !acquisition ||\n !capture ||\n capture.acquisitionRef !== profile.acquisitionRef\n )\n issue(\n \"RADAR.ACQUISITION\",\n \"/acquisitionProductRef\",\n \"The retained capture must belong to the selected acquisition.\"\n );\n const layouts = new Map(\n sources.layouts.map((layout) => [layout.productRef, layout])\n );\n for (const [role, ref] of Object.entries(profile.products))\n if (ref && !layouts.has(ref))\n issue(\n \"RADAR.LAYOUT\",\n `/products/${role}`,\n \"The role needs a standard source layout.\"\n );\n const returns = layouts.get(profile.products.returns),\n thresholds = layouts.get(profile.products.thresholds);\n if (\n !returns ||\n returns.kind !== \"binary_array\" ||\n !thresholds ||\n thresholds.kind !== \"binary_array\"\n )\n issue(\n \"RADAR.ARRAY_LAYOUT\",\n \"/products\",\n \"Returns and thresholds must be standard binary arrays.\"\n );\n if (\n result.issues.length ||\n !returns ||\n returns.kind !== \"binary_array\" ||\n !thresholds ||\n thresholds.kind !== \"binary_array\"\n ) {\n result.checks.semantics = \"failed\";\n return result;\n }\n const [scanAxis, azimuthAxis, rangeAxis] = returns.axes;\n const manifestRef =\n acquisition?.manifest.state === \"pinned\"\n ? acquisition.manifest.ref\n : undefined;\n const manifest = ctx.manifests.find(\n (item) => `manifest:${item.id}` === manifestRef\n );\n const channel = manifest?.channels.find(\n (item) => item.id === profile.channelId\n );\n if (\n !acquisition?.channels.some(\n (item) => item.channelId === profile.channelId\n ) ||\n !channel ||\n channel.quantity !== returns.quantity ||\n channel.unit !== returns.unit\n ) {\n issue(\n \"RADAR.CHANNEL\",\n \"/channelId\",\n \"Return power must select an acquisition channel from its pinned manifest with matching quantity and unit.\"\n );\n }\n if (\n returns.axes.length !== 3 ||\n !scanAxis ||\n scanAxis.kind !== \"index\" ||\n scanAxis.name !== \"scan\" ||\n scanAxis.firstIndex !== 0 ||\n !azimuthAxis ||\n azimuthAxis.kind !== \"regular\" ||\n azimuthAxis.name !== \"azimuth\" ||\n azimuthAxis.unit !== \"deg\" ||\n azimuthAxis.origin < 0 ||\n azimuthAxis.origin >= azimuthAxis.step ||\n !close(azimuthAxis.step * azimuthAxis.length, 360) ||\n !rangeAxis ||\n rangeAxis.kind !== \"regular\" ||\n rangeAxis.name !== \"range\" ||\n rangeAxis.unit !== \"m\" ||\n rangeAxis.origin < 0\n )\n issue(\n \"RADAR.AXES\",\n \"/products/returns\",\n \"Required axes are zero-based scan, full clockwise azimuth rotation (degrees, bin centers), and nonnegative range centers (meters) in the declared range convention.\"\n );\n for (const [role, layout] of [\n [\"returns\", returns],\n [\"thresholds\", thresholds],\n ] as const) {\n if (\n layout.elementType !== \"float32\" ||\n layout.byteOrder !== \"little\" ||\n layout.quantity !== \"normalized_return_power\" ||\n layout.unit !== \"1\"\n )\n issue(\n \"RADAR.POWER_LAYOUT\",\n `/products/${role}`,\n \"This profile requires little-endian float32 normalized return power with unit 1.\"\n );\n }\n if (JSON.stringify(returns.axes) !== JSON.stringify(thresholds.axes))\n issue(\n \"RADAR.THRESHOLD_AXES\",\n \"/products/thresholds\",\n \"Thresholds must share every return-cell coordinate.\"\n );\n if (\n capture &&\n (capture.artifact.digest.value !== returns.digest.value ||\n capture.artifact.byteLength !== returns.byteLength ||\n capture.artifact.mediaType !== returns.mediaType)\n )\n issue(\n \"RADAR.CAPTURE_BINDING\",\n \"/acquisitionProductRef\",\n \"Acquisition artifact and retained return layout must identify the same bytes.\"\n );\n if (profile.preprocessing) {\n const prep = profile.preprocessing;\n const reference = layouts.get(profile.products.referenceCapture),\n background = layouts.get(profile.products.backgroundPower),\n processed = layouts.get(profile.products.processedReturns),\n eligibility = layouts.get(profile.products.eligibility);\n const spatialAxes = returns.axes.slice(1);\n for (const [role, layout] of [\n [\"referenceCapture\", reference],\n [\"backgroundPower\", background],\n [\"processedReturns\", processed],\n ] as const) {\n if (\n !layout ||\n layout.kind !== \"binary_array\" ||\n layout.elementType !== \"float32\" ||\n layout.byteOrder !== \"little\" ||\n layout.quantity !== \"normalized_return_power\" ||\n layout.unit !== \"1\"\n )\n issue(\n \"RADAR.PREPROCESS_LAYOUT\",\n `/products/${role}`,\n \"Preprocessing powers require retained little-endian float32 normalized return power, unit 1.\"\n );\n }\n if (\n !reference ||\n reference.kind !== \"binary_array\" ||\n reference.axes.length !== 3 ||\n reference.axes[0]?.kind !== \"index\" ||\n reference.axes[0].name !== \"reference_scan\" ||\n reference.axes[0].firstIndex !== 0 ||\n JSON.stringify(reference.axes.slice(1)) !== JSON.stringify(spatialAxes)\n )\n issue(\n \"RADAR.REFERENCE_AXES\",\n \"/products/referenceCapture\",\n \"Reference scans must share the capture's exact angular and range cells, with a zero-based reference_scan axis.\"\n );\n if (\n !background ||\n background.kind !== \"binary_array\" ||\n JSON.stringify(background.axes) !== JSON.stringify(spatialAxes)\n )\n issue(\n \"RADAR.BACKGROUND_AXES\",\n \"/products/backgroundPower\",\n \"Background coordinates must equal the capture's azimuth and range axes.\"\n );\n if (\n !processed ||\n processed.kind !== \"binary_array\" ||\n JSON.stringify(processed.axes) !== JSON.stringify(returns.axes)\n )\n issue(\n \"RADAR.PROCESSED_AXES\",\n \"/products/processedReturns\",\n \"Processed power must retain every raw capture coordinate.\"\n );\n if (\n !eligibility ||\n eligibility.kind !== \"binary_array\" ||\n eligibility.elementType !== \"uint8\" ||\n eligibility.byteOrder !== \"little\" ||\n eligibility.quantity !== \"detection_eligibility\" ||\n eligibility.unit !== \"1\" ||\n JSON.stringify(eligibility.axes) !== JSON.stringify(spatialAxes)\n )\n issue(\n \"RADAR.ELIGIBILITY_LAYOUT\",\n \"/products/eligibility\",\n \"Detector policy is a uint8 azimuth/range array, unit 1, with 1 eligible and 0 excluded.\"\n );\n const referenceAcquisition = ctx.acquisitions.find(\n (a) => `acquisition:${a.id}` === prep.referenceAcquisitionRef\n ),\n referenceCapture = ctx.products.find(\n (p) => `product:${p.id}` === prep.referenceAcquisitionProductRef\n );\n if (\n !referenceAcquisition ||\n !referenceCapture ||\n referenceCapture.acquisitionRef !== prep.referenceAcquisitionRef ||\n referenceCapture.kind !== \"raw\" ||\n prep.referenceAcquisitionRef === profile.acquisitionRef ||\n referenceAcquisition.instrumentRef !== acquisition?.instrumentRef ||\n referenceAcquisition.manifest.state !== \"pinned\" ||\n referenceAcquisition.manifest.ref !== manifestRef ||\n !referenceAcquisition.channels.some(\n (c) => c.channelId === prep.referenceChannelId\n ) ||\n prep.referenceChannelId !== profile.channelId\n )\n issue(\n \"RADAR.REFERENCE_ACQUISITION\",\n \"/preprocessing\",\n \"An independent reference acquisition must bind the same instrument, pinned manifest and channel.\"\n );\n if (\n reference &&\n referenceCapture &&\n (referenceCapture.artifact.digest.value !== reference.digest.value ||\n referenceCapture.artifact.byteLength !== reference.byteLength ||\n referenceCapture.artifact.mediaType !== reference.mediaType)\n )\n issue(\n \"RADAR.REFERENCE_BINDING\",\n \"/preprocessing/referenceAcquisitionProductRef\",\n \"Reference acquisition artifact and reference layout must identify the same bytes.\"\n );\n if (\n referenceAcquisition?.time.state !== \"known\" ||\n referenceAcquisition.time.kind !== \"interval\" ||\n acquisition?.time.state !== \"known\" ||\n acquisition.time.kind !== \"interval\" ||\n (compareUtcInstants(\n referenceAcquisition.time.end,\n acquisition.time.start\n ) !== -1 &&\n compareUtcInstants(\n referenceAcquisition.time.end,\n acquisition.time.start\n ) !== 0)\n )\n issue(\n \"RADAR.REFERENCE_TIME\",\n \"/preprocessing/referenceAcquisitionRef\",\n \"The retained reference interval must finish no later than the main capture starts.\"\n );\n }\n const products = new Map(\n obs.products.map((product) => [`product:${product.id}`, product])\n ),\n processes = new Map(\n obs.processing.map((process) => [`process:${process.id}`, process])\n );\n if (products.get(profile.products.returns)?.kind !== \"raw\")\n issue(\n \"RADAR.RETURNS_ORIGIN\",\n \"/products/returns\",\n \"The retained return array is the input capture for this profile. Derived inputs need a separately specified profile.\"\n );\n const ancestors = (ref: string) => {\n const found = new Set<string>(),\n queue = [ref];\n for (let i = 0; i < queue.length; i++) {\n const current = queue[i]!;\n if (found.has(current)) continue;\n found.add(current);\n const product = products.get(current),\n process = processes.get(current);\n if (product?.kind === \"derived\") queue.push(product.generatedBy);\n if (product?.kind === \"raw\") queue.push(...product.sourceRefs);\n if (process) queue.push(...process.inputRefs);\n }\n return found;\n };\n for (const role of [\n \"thresholds\",\n \"detections\",\n \"tracks\",\n \"associations\",\n ] as const)\n if (products.get(profile.products[role])?.kind !== \"derived\")\n issue(\n \"RADAR.PROCESSING\",\n `/products/${role}`,\n \"Calculated radar products must have explicit processing lineage.\"\n );\n if (profile.preprocessing) {\n if (products.get(profile.products.referenceCapture)?.kind !== \"raw\")\n issue(\n \"RADAR.REFERENCE_ORIGIN\",\n \"/products/referenceCapture\",\n \"Reference power must be its own retained raw capture.\"\n );\n for (const role of [\"backgroundPower\", \"processedReturns\"] as const)\n if (products.get(profile.products[role])?.kind !== \"derived\")\n issue(\n \"RADAR.PROCESSING\",\n `/products/${role}`,\n \"Calculated preprocessing products require explicit processing lineage.\"\n );\n if (\n !ancestors(profile.products.backgroundPower).has(\n profile.products.referenceCapture\n )\n )\n issue(\n \"RADAR.BACKGROUND_LINEAGE\",\n \"/products/backgroundPower\",\n \"Background reduction must depend on the retained independent reference capture.\"\n );\n const processedInputs = ancestors(profile.products.processedReturns);\n if (\n !processedInputs.has(profile.products.returns) ||\n !processedInputs.has(profile.products.backgroundPower)\n )\n issue(\n \"RADAR.PROCESSED_LINEAGE\",\n \"/products/processedReturns\",\n \"Residual power must depend on raw capture and retained reference background.\"\n );\n }\n const detectionInputs = ancestors(profile.products.detections),\n trackInputs = ancestors(profile.products.tracks),\n thresholdInputs = ancestors(profile.products.thresholds),\n associationInputs = ancestors(profile.products.associations);\n if (!thresholdInputs.has(profile.products.returns))\n issue(\n \"RADAR.THRESHOLD_LINEAGE\",\n \"/products/thresholds\",\n \"Threshold generation must declare the retained return capture as an input.\"\n );\n if (\n !detectionInputs.has(profile.products.returns) ||\n !detectionInputs.has(profile.products.thresholds)\n )\n issue(\n \"RADAR.DETECTION_LINEAGE\",\n \"/products/detections\",\n \"Detection processing must depend on returns and thresholds.\"\n );\n if (\n profile.preprocessing &&\n (!thresholdInputs.has(profile.products.processedReturns) ||\n !detectionInputs.has(profile.products.processedReturns) ||\n !detectionInputs.has(profile.products.eligibility))\n )\n issue(\n \"RADAR.PREPROCESS_LINEAGE\",\n \"/products/detections\",\n \"Thresholds and detection processing must depend on processed power; detection also needs the retained eligibility policy.\"\n );\n if (\n !trackInputs.has(profile.products.detections) ||\n !associationInputs.has(profile.products.detections)\n )\n issue(\n \"RADAR.TRACK_LINEAGE\",\n \"/products/tracks\",\n \"Track estimates and associations must depend on detections.\"\n );\n if (\n profile.platform &&\n (!detectionInputs.has(profile.products.platformPose!) ||\n !detectionInputs.has(profile.products.scanSchedule))\n )\n issue(\n \"RADAR.PLATFORM_LINEAGE\",\n \"/products/detections\",\n \"Moving-platform localization must depend on the retained pose and scan schedule.\"\n );\n if (profile.products.truth) {\n // Block both the oracle product and its exclusive source payload. Shared methods/configuration\n // can describe a generator; they do not make the oracle an allowed tracker input.\n const sharedSynthesis = new Set([\n ...ancestors(profile.products.returns),\n ...ancestors(profile.products.scanSchedule),\n ]);\n const sourceKinds = new Map(\n obs.sources.map((source) => [`source:${source.id}`, source.kind])\n );\n const forbidden = [...ancestors(profile.products.truth)].filter(\n (ref) => !sharedSynthesis.has(ref) || sourceKinds.get(ref) !== \"document\"\n );\n if (\n [\n thresholdInputs,\n detectionInputs,\n trackInputs,\n associationInputs,\n ...(profile.preprocessing\n ? [\n ancestors(profile.products.referenceCapture),\n ancestors(profile.products.backgroundPower),\n ancestors(profile.products.processedReturns),\n ancestors(profile.products.eligibility),\n ]\n : []),\n ...(profile.products.siteFeatures\n ? [ancestors(profile.products.siteFeatures)]\n : []),\n ...(profile.products.platformPose\n ? [ancestors(profile.products.platformPose)]\n : []),\n ].some((inputs) => forbidden.some((ref) => inputs.has(ref)))\n )\n issue(\n \"RADAR.TRUTH_LEAK\",\n \"/products/truth\",\n \"Preprocessing, site context, detection, threshold, tracking, association and platform-pose lineage must not consume the synthetic truth oracle.\"\n );\n }\n if (\n result.issues.length ||\n !scanAxis ||\n scanAxis.kind !== \"index\" ||\n !azimuthAxis ||\n azimuthAxis.kind !== \"regular\" ||\n !rangeAxis ||\n rangeAxis.kind !== \"regular\"\n ) {\n result.checks.semantics = \"failed\";\n return result;\n }\n // Snapshot before the first await, so the bytes checked and decoded cannot diverge.\n const assets = new Map(\n [...(options.assets ?? [])].map(([ref, bytes]) => [\n ref,\n Uint8Array.from(bytes),\n ])\n );\n const sourceResult = await evaluateProductSourceSelection(obs, sources, {\n assets,\n });\n if (\n !sourceResult.success ||\n sourceResult.checks.external !== \"passed\" ||\n sourceResult.checks.content !== \"passed\"\n ) {\n result.checks.sources = \"failed\";\n issue(\n \"RADAR.SOURCE_CONTENT\",\n \"/products\",\n \"All source layouts require matching bytes, digests and valid source selections.\"\n );\n return result;\n }\n result.checks.sources = \"passed\";\n let data: RadarDecodedProducts;\n try {\n data = readRadarProducts(sources.layouts, profile.products, assets);\n } catch (error) {\n result.checks.semantics = \"failed\";\n issue(\n \"RADAR.CONTENT\",\n \"/products\",\n error instanceof Error ? error.message : String(error)\n );\n return result;\n }\n const scans = scanAxis.length,\n azimuths = azimuthAxis.length,\n ranges = rangeAxis.length;\n if (data.scanSchedule.length !== scans * azimuths)\n issue(\n \"RADAR.DWELL_COUNT\",\n \"/products/scanSchedule\",\n \"A full-rotation schedule needs exactly one dwell per scan/azimuth cell.\"\n );\n for (const [i, dwell] of data.scanSchedule.entries()) {\n const pointer = `/products/scanSchedule/rows/${i}`;\n if (\n dwell.scan_index !== Math.floor(i / azimuths) ||\n dwell.azimuth_index !== i % azimuths\n )\n issue(\n \"RADAR.DWELL_ORDER\",\n pointer,\n \"Dwell rows must follow scan then azimuth order without duplicates or gaps.\"\n );\n if (\n dwell.start_s < 0 ||\n dwell.end_s <= dwell.start_s ||\n (i > 0 && dwell.start_s < data.scanSchedule[i - 1]!.end_s)\n )\n issue(\n \"RADAR.DWELL_TIME\",\n pointer,\n \"Dwells need positive, non-overlapping, ordered intervals.\"\n );\n if (\n !close(\n dwell.beam_azimuth_deg,\n azimuthAxis.origin + dwell.azimuth_index * azimuthAxis.step\n ) ||\n dwell.beam_width_deg <= 0 ||\n dwell.beam_width_deg > 360\n )\n issue(\n \"RADAR.BEAM\",\n pointer,\n \"Declared beam centers must match azimuth cells, with positive full angular width at most 360 degrees.\"\n );\n }\n if (profile.platform) {\n if (data.platformPose.length !== data.scanSchedule.length)\n issue(\n \"RADAR.POSE_COUNT\",\n \"/products/platformPose\",\n \"Moving radar needs exactly one retained pose for every dwell.\"\n );\n for (const [i, pose] of data.platformPose.entries()) {\n const dwell = data.scanSchedule[i],\n pointer = `/products/platformPose/rows/${i}`;\n if (\n !dwell ||\n pose.scan_index !== dwell.scan_index ||\n pose.azimuth_index !== dwell.azimuth_index\n )\n issue(\n \"RADAR.POSE_ORDER\",\n pointer,\n \"Pose rows must select their exact dwell in schedule order without duplicates or gaps.\"\n );\n if (\n !dwell ||\n Math.abs(pose.time_s - (dwell.start_s + dwell.end_s) / 2) > 1e-7\n )\n issue(\n \"RADAR.POSE_TIME\",\n pointer,\n \"Each retained pose is sampled at its dwell midpoint; no interpolation is implicit.\"\n );\n if (pose.heading_deg < 0 || pose.heading_deg >= 360)\n issue(\n \"RADAR.POSE_HEADING\",\n pointer,\n \"Platform heading is clockwise from frame north in [0, 360) degrees.\"\n );\n }\n const initial = data.platformPose[0];\n if (\n !initial ||\n Math.abs(initial.east_m - profile.origin.eastM) > 1e-6 ||\n Math.abs(initial.north_m - profile.origin.northM) > 1e-6\n )\n issue(\n \"RADAR.POSE_ORIGIN\",\n \"/origin\",\n \"A moving profile origin is the first retained pose, not a fixed sensor position.\"\n );\n }\n const first = data.scanSchedule[0],\n last = data.scanSchedule.at(-1);\n // ISO calendar validation uses the existing exact UTC contract rather than Date normalization.\n if (compareUtcInstants(profile.timeOrigin, profile.timeOrigin) === undefined)\n issue(\n \"RADAR.TIME_ORIGIN\",\n \"/timeOrigin\",\n \"Time origin must be a valid UTC instant.\"\n );\n if (\n acquisition?.time.state !== \"known\" ||\n acquisition.time.kind !== \"interval\"\n )\n issue(\n \"RADAR.ACQUISITION_TIME\",\n \"/acquisitionRef\",\n \"Rotating scans require a known acquisition interval.\"\n );\n else if (\n first &&\n last &&\n compareUtcInstants(profile.timeOrigin, profile.timeOrigin) !== undefined &&\n (compareOffset(profile.timeOrigin, first.start_s, acquisition.time.start) <\n 0 ||\n compareOffset(profile.timeOrigin, last.end_s, acquisition.time.end) > 0)\n )\n issue(\n \"RADAR.ACQUISITION_TIME\",\n \"/timeOrigin\",\n \"Every dwell must lie in the selected acquisition interval.\"\n );\n for (const role of [\"returns\", \"thresholds\"] as const)\n if (data[role].some((value) => value < 0))\n issue(\n \"RADAR.POWER_RANGE\",\n `/products/${role}`,\n \"Relative power and threshold cells must be nonnegative; unit 1 does not imply a 0–1 interval.\"\n );\n const inputPower = profile.preprocessing\n ? data.processedReturns\n : data.returns;\n if (profile.preprocessing) {\n const cells = azimuths * ranges,\n referenceScans = data.referenceCapture.length / cells;\n for (const role of [\n \"referenceCapture\",\n \"backgroundPower\",\n \"processedReturns\",\n ] as const)\n if (data[role].some((value) => value < 0))\n issue(\n \"RADAR.POWER_RANGE\",\n `/products/${role}`,\n \"Power values must be nonnegative.\"\n );\n if (data.eligibility.some((value) => value !== 0 && value !== 1))\n issue(\n \"RADAR.ELIGIBILITY_VALUE\",\n \"/products/eligibility\",\n \"Detector policy accepts only 0 excluded or 1 eligible; it does not encode physical coverage.\"\n );\n let wrongBackground = false,\n wrongResidual = false;\n for (let cell = 0; cell < cells; cell++) {\n let sum = 0;\n for (let scan = 0; scan < referenceScans; scan++)\n sum += data.referenceCapture[scan * cells + cell]!;\n if (data.backgroundPower[cell] !== Math.fround(sum / referenceScans))\n wrongBackground = true;\n }\n for (let cell = 0; cell < data.returns.length; cell++)\n if (\n data.processedReturns[cell] !==\n Math.fround(\n Math.max(0, data.returns[cell]! - data.backgroundPower[cell % cells]!)\n )\n )\n wrongResidual = true;\n if (wrongBackground)\n issue(\n \"RADAR.BACKGROUND_REDUCTION\",\n \"/products/backgroundPower\",\n \"Each background cell must equal the float32 arithmetic mean of its retained reference scans.\"\n );\n if (wrongResidual)\n issue(\n \"RADAR.RESIDUAL\",\n \"/products/processedReturns\",\n \"Residual cells must equal float32 max(0, raw minus reference background), including excluded cells.\"\n );\n }\n const siteGroups = new Map<string, typeof data.siteFeatures>();\n let previousFeature: string | undefined;\n for (const [i, vertex] of data.siteFeatures.entries()) {\n const pointer = `/products/siteFeatures/rows/${i}`;\n const group = siteGroups.get(vertex.feature_id) ?? [];\n if (\n (group.length && previousFeature !== vertex.feature_id) ||\n vertex.vertex_index !== group.length\n )\n issue(\n \"RADAR.SITE_ORDER\",\n pointer,\n \"Feature vertices must be contiguous and ordered from vertex zero.\"\n );\n if (\n group.length &&\n (vertex.kind !== group[0]!.kind ||\n vertex.label !== group[0]!.label ||\n vertex.closed !== group[0]!.closed)\n )\n issue(\n \"RADAR.SITE_IDENTITY\",\n pointer,\n \"Kind, label and closure must stay consistent within a site feature.\"\n );\n group.push(vertex);\n siteGroups.set(vertex.feature_id, group);\n previousFeature = vertex.feature_id;\n }\n for (const [id, vertices] of siteGroups) {\n const first = vertices[0]!,\n last = vertices.at(-1)!,\n distinct = new Set(vertices.map((v) => `${v.east_m}/${v.north_m}`));\n if (\n first.closed\n ? vertices.length < 4 ||\n distinct.size < 3 ||\n first.east_m !== last.east_m ||\n first.north_m !== last.north_m\n : vertices.length < 2 || distinct.size < 2\n )\n issue(\n \"RADAR.SITE_GEOMETRY\",\n `/products/siteFeatures/${id}`,\n \"Closed features need at least three distinct vertices and repeated endpoint; open features need at least two distinct vertices.\"\n );\n }\n const detections = new Map<string, (typeof data.detections)[number]>(),\n selectedCells = new Set<string>();\n for (const [i, detection] of data.detections.entries()) {\n const pointer = `/products/detections/rows/${i}`;\n if (detections.has(detection.detection_id))\n issue(\n \"RADAR.DETECTION_ID\",\n pointer,\n \"Detection identifiers must be unique.\"\n );\n detections.set(detection.detection_id, detection);\n if (\n !index(detection.scan_index, scans) ||\n !index(detection.azimuth_index, azimuths) ||\n !index(detection.range_index, ranges)\n ) {\n issue(\n \"RADAR.DETECTION_CELL\",\n pointer,\n \"Detection source cell lies outside the capture.\"\n );\n continue;\n }\n const cell =\n (detection.scan_index * azimuths + detection.azimuth_index) * ranges +\n detection.range_index;\n if (selectedCells.has(String(cell)))\n issue(\n \"RADAR.DETECTION_CELL\",\n pointer,\n \"A retained cell cannot create duplicate detections.\"\n );\n selectedCells.add(String(cell));\n if (\n profile.preprocessing &&\n data.eligibility[\n detection.azimuth_index * ranges + detection.range_index\n ] !== 1\n )\n issue(\n \"RADAR.DETECTION_EXCLUDED\",\n pointer,\n \"A detector-policy excluded cell cannot create a detection, even when raw or residual power is high.\"\n );\n const dwell =\n data.scanSchedule[\n detection.scan_index * azimuths + detection.azimuth_index\n ];\n if (\n !dwell ||\n detection.time_s < dwell.start_s ||\n detection.time_s >= dwell.end_s\n )\n issue(\n \"RADAR.DETECTION_TIME\",\n pointer,\n \"Detection time must lie within its own source dwell [start, end).\"\n );\n if (\n profile.platform &&\n dwell &&\n Math.abs(detection.time_s - (dwell.start_s + dwell.end_s) / 2) > 1e-7\n )\n issue(\n \"RADAR.DETECTION_POSE_TIME\",\n pointer,\n \"Moving-platform detections use their retained dwell-midpoint pose and time.\"\n );\n const position = (az: number, r: number) => {\n const pose = data.platformPose[detection.scan_index * azimuths + az];\n if (profile.platform && !pose) return null;\n return radarCellPosition(\n profile,\n pose,\n azimuthAxis.origin + az * azimuthAxis.step,\n rangeAxis.origin + r * rangeAxis.step\n );\n };\n const center = position(detection.azimuth_index, detection.range_index);\n if (!center)\n issue(\n \"RADAR.PROJECTION_GEOMETRY\",\n pointer,\n \"A detection source cell must reach the declared horizontal plane with a retained pose.\"\n );\n let east = center?.eastM ?? NaN,\n north = center?.northM ?? NaN;\n const rule = profile.detectionPosition;\n if (rule.kind === \"power_weighted_neighborhood\") {\n if (\n 2 * rule.azimuthRadius + 1 > azimuths ||\n detection.range_index - rule.rangeRadius < 0 ||\n detection.range_index + rule.rangeRadius >= ranges\n )\n issue(\n \"RADAR.CENTROID_EXTENT\",\n pointer,\n \"The declared centroid neighborhood must fit the radial extent and visit each azimuth at most once.\"\n );\n else {\n let weightSum = 0;\n east = 0;\n north = 0;\n for (let da = -rule.azimuthRadius; da <= rule.azimuthRadius; da++)\n for (let dr = -rule.rangeRadius; dr <= rule.rangeRadius; dr++) {\n const az = (detection.azimuth_index + da + azimuths) % azimuths,\n r = detection.range_index + dr,\n projected = position(az, r);\n // An impossible slant/plane cell has no Cartesian location. Do not\n // clamp it to the platform or permit its power to bias the centroid.\n if (\n !projected ||\n (profile.preprocessing && data.eligibility[az * ranges + r] !== 1)\n )\n continue;\n const power =\n inputPower[\n (detection.scan_index * azimuths + az) * ranges + r\n ]!,\n weight = Math.max(0, power - rule.backgroundPower);\n weightSum += weight;\n east += weight * projected.eastM;\n north += weight * projected.northM;\n }\n if (!(weightSum > 0))\n issue(\n \"RADAR.CENTROID_WEIGHT\",\n pointer,\n \"The centroid requires positive retained weight in projectable cells.\"\n );\n else {\n east /= weightSum;\n north /= weightSum;\n }\n }\n }\n if (\n !positionClose(detection.east_m, east) ||\n !positionClose(detection.north_m, north)\n )\n issue(\n \"RADAR.DETECTION_GEOMETRY\",\n pointer,\n \"Detection position must match the declared localization rule applied to retained cells and their own dwell poses.\"\n );\n if (\n !close(detection.power, inputPower[cell]!, 1e-6) ||\n inputPower[cell]! < data.thresholds[cell]!\n )\n issue(\n \"RADAR.DETECTION_THRESHOLD\",\n pointer,\n \"Detection power must match its source cell and meet that cell’s retained threshold.\"\n );\n }\n const tracks = new Map<string, (typeof data.tracks)[number]>(),\n lastTrack = new Map<string, (typeof data.tracks)[number]>();\n for (const [i, track] of data.tracks.entries()) {\n const pointer = `/products/tracks/rows/${i}`,\n k = key(track.track_id, track.scan_index),\n prior = lastTrack.get(track.track_id);\n if (!index(track.scan_index, scans) || tracks.has(k))\n issue(\n \"RADAR.TRACK_ID\",\n pointer,\n \"Track estimates need unique track/scan identities inside the capture.\"\n );\n if (\n prior &&\n (track.scan_index <= prior.scan_index || track.time_s <= prior.time_s)\n )\n issue(\n \"RADAR.TRACK_ORDER\",\n pointer,\n \"Each track’s estimates must advance in scan and time.\"\n );\n tracks.set(k, track);\n lastTrack.set(track.track_id, track);\n const start = data.scanSchedule[track.scan_index * azimuths]?.start_s,\n end = data.scanSchedule[(track.scan_index + 1) * azimuths - 1]?.end_s;\n if (\n start === undefined ||\n end === undefined ||\n track.time_s < start ||\n track.time_s > end\n )\n issue(\n \"RADAR.TRACK_TIME\",\n pointer,\n \"Track estimate time must lie within its stated scan, including the scan end.\"\n );\n const a = track.cov_ee_m2,\n b = track.cov_en_m2,\n c = track.cov_nn_m2;\n const scale = Math.max(1, a, Math.abs(b), c);\n if (a < 0 || c < 0 || (a / scale) * (c / scale) - (b / scale) ** 2 < -1e-12)\n issue(\n \"RADAR.COVARIANCE\",\n pointer,\n \"The symmetric east/north covariance must be positive semidefinite, in square meters.\"\n );\n }\n const assigned = new Set<string>(),\n counts = new Map<string, number>();\n for (const [i, association] of data.associations.entries()) {\n const pointer = `/products/associations/rows/${i}`,\n k = key(association.track_id, association.scan_index),\n track = tracks.get(k),\n detection = detections.get(association.detection_id);\n if (\n !track ||\n !detection ||\n detection.scan_index !== association.scan_index ||\n detection.time_s > track.time_s\n )\n issue(\n \"RADAR.ASSOCIATION_REF\",\n pointer,\n \"Association must connect an existing estimate to an earlier detection in the same scan.\"\n );\n if (assigned.has(association.detection_id))\n issue(\n \"RADAR.ASSOCIATION_UNIQUE\",\n pointer,\n \"Each detection can be assigned to at most one estimate.\"\n );\n assigned.add(association.detection_id);\n counts.set(k, (counts.get(k) ?? 0) + 1);\n }\n for (const [k, track] of tracks)\n if ((track.state === \"coasting\") !== !(counts.get(k) ?? 0))\n issue(\n \"RADAR.TRACK_STATE\",\n `/products/tracks/${k}`,\n \"A coasting estimate has no detection association; tentative and confirmed estimates have at least one.\"\n );\n const truthIds = new Set<string>();\n for (const [i, truth] of data.truth.entries()) {\n const k = `${truth.target_id}/${truth.scan_index}/${truth.time_s}`,\n start = data.scanSchedule[truth.scan_index * azimuths]?.start_s,\n end = data.scanSchedule[(truth.scan_index + 1) * azimuths - 1]?.end_s;\n if (\n !index(truth.scan_index, scans) ||\n truthIds.has(k) ||\n start === undefined ||\n end === undefined ||\n truth.time_s < start ||\n truth.time_s > end\n )\n issue(\n \"RADAR.TRUTH_ROW\",\n `/products/truth/rows/${i}`,\n \"Truth coordinates require unique target/scan/time rows within their scan.\"\n );\n truthIds.add(k);\n }\n result.checks.semantics = result.issues.length ? \"failed\" : \"passed\";\n result.success = result.issues.length === 0;\n if (result.success)\n result.data = {\n declaration: profile,\n layouts: sources.layouts,\n products: data,\n };\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) =>\n z\n .string()\n .regex(new RegExp(`^${kind}:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\\\s\\\\S])`));\nconst common = {\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n observationId: id,\n contextId: id,\n sourceSelectionId: id,\n acquisitionRef: ref(\"acquisition\"),\n acquisitionProductRef: ref(\"product\"),\n channelId: id,\n frameRef: ref(\"frame\"),\n origin: z.strictObject({ eastM: z.number(), northM: z.number() }),\n timeOrigin: z.iso.datetime({ offset: true }),\n dataOrigin: z.enum([\"synthetic\", \"instrument\"]),\n bearingConvention: z.literal(\"clockwise_from_north\"),\n};\n/** Sector-beam scheduling and retained processing, not a military capability assertion. */\nexport const SteeredRadarProfileSchema = z.strictObject({\n ...common,\n kind: z.literal(\"steered_radar_profile\"),\n mode: z.literal(\"electronically_steered_sector\"),\n rangeConvention: z.literal(\"horizontal_range\"),\n beamWidthConvention: z.literal(\"full_width_half_maximum_power\"),\n processingAvailability: z.literal(\"dwell_end\"),\n detectionPosition: z.strictObject({ kind: z.literal(\"cell_center\") }),\n products: z.strictObject({\n beamSchedule: ref(\"product\"),\n returns: ref(\"product\"),\n thresholds: ref(\"product\"),\n detections: ref(\"product\"),\n tracks: ref(\"product\"),\n associations: ref(\"product\"),\n truth: ref(\"product\").optional(),\n }),\n uncertainty: z.strictObject({\n kind: z.literal(\"gaussian_position_covariance\"),\n axes: z.tuple([z.literal(\"east\"), z.literal(\"north\")]),\n unit: z.literal(\"m2\"),\n confidenceProbability: z.number().gt(0).lt(1),\n }),\n});\n/** Decoded cooperative replies remain distinct from reflections and geometric height. */\nexport const SecondaryRadarProfileSchema = z.strictObject({\n ...common,\n kind: z.literal(\"secondary_radar_profile\"),\n mode: z.literal(\"mode_a_mode_c\"),\n rangeConvention: z.literal(\"slant_range\"),\n positionRepresentation: z.literal(\"polar_only\"),\n altitudeConvention: z.literal(\"pressure_altitude_1013_25_hpa\"),\n identitySemantics: z.literal(\"reported_code_not_verified_identity\"),\n processingAvailability: z.literal(\"explicit_available_time\"),\n products: z.strictObject({\n interrogations: ref(\"product\"),\n decodedReplies: ref(\"product\"),\n reports: ref(\"product\"),\n truth: ref(\"product\").optional(),\n }),\n});\nexport const STEERED_RADAR_PROFILE_SCHEMA_ID =\n \"urn:disclosureos:experimental:steered-radar-profile:0.1.0\";\nexport const SECONDARY_RADAR_PROFILE_SCHEMA_ID =\n \"urn:disclosureos:experimental:secondary-radar-profile:0.1.0\";\nexport const STEERED_RADAR_PROFILE = Object.freeze({\n id: \"urn:disclosureos:experimental:profile:steered-radar\",\n version: \"0.1.0\",\n scope: \"retained_sector_beams_and_declared_processing\",\n} as const);\nexport const SECONDARY_RADAR_PROFILE = Object.freeze({\n id: \"urn:disclosureos:experimental:profile:secondary-radar\",\n version: \"0.1.0\",\n scope: \"retained_cooperative_interrogations_and_decoded_replies\",\n} as const);\nexport type SteeredRadarProfile = z.infer<typeof SteeredRadarProfileSchema>;\nexport type SecondaryRadarProfile = z.infer<typeof SecondaryRadarProfileSchema>;\nexport function steeredRadarProfileJsonSchema(): Record<string, unknown> {\n const schema = z.toJSONSchema(SteeredRadarProfileSchema, {\n target: \"draft-2020-12\",\n });\n const uncertainty = schema.properties?.uncertainty;\n const axes =\n typeof uncertainty === \"object\" ? uncertainty.properties?.axes : undefined;\n if (typeof axes === \"object\") {\n axes.minItems = 2;\n axes.maxItems = 2;\n }\n return { ...schema, $id: STEERED_RADAR_PROFILE_SCHEMA_ID };\n}\nexport function secondaryRadarProfileJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(SecondaryRadarProfileSchema, { target: \"draft-2020-12\" }),\n $id: SECONDARY_RADAR_PROFILE_SCHEMA_ID,\n };\n}\n","import {\n readSourceCsv,\n type ProductSourceLayout,\n} from \"./product-source-reader\";\nexport const STEERED_RADAR_TABLE_COLUMNS = Object.freeze({\n beamSchedule: [\n \"dwell_index\",\n \"cycle_index\",\n \"start_s\",\n \"end_s\",\n \"beam_azimuth_deg\",\n \"beam_width_deg\",\n \"purpose\",\n ],\n detections: [\n \"detection_id\",\n \"dwell_index\",\n \"range_index\",\n \"time_s\",\n \"east_m\",\n \"north_m\",\n \"power\",\n ],\n tracks: [\n \"track_id\",\n \"dwell_index\",\n \"time_s\",\n \"state\",\n \"east_m\",\n \"north_m\",\n \"velocity_east_m_s\",\n \"velocity_north_m_s\",\n \"cov_ee_m2\",\n \"cov_en_m2\",\n \"cov_nn_m2\",\n ],\n associations: [\"track_id\", \"dwell_index\", \"detection_id\"],\n truth: [\"target_id\", \"dwell_index\", \"time_s\", \"east_m\", \"north_m\"],\n} as const);\nconst replyColumns = [\n \"reply_id\",\n \"interrogation_id\",\n \"time_s\",\n \"available_s\",\n \"slant_range_m\",\n \"bearing_deg\",\n \"validity\",\n \"mode_a_code\",\n \"pressure_altitude_ft\",\n] as const;\nexport const SECONDARY_RADAR_TABLE_COLUMNS = Object.freeze({\n interrogations: [\n \"interrogation_id\",\n \"start_s\",\n \"end_s\",\n \"beam_azimuth_deg\",\n \"beam_width_deg\",\n \"mode\",\n ],\n decodedReplies: replyColumns,\n reports: [\"report_id\", ...replyColumns],\n truth: [\n \"target_id\",\n \"interrogation_id\",\n \"time_s\",\n \"east_m\",\n \"north_m\",\n \"up_m\",\n \"transponder\",\n ],\n} as const);\nexport interface SteeredRadarDwell {\n dwell_index: number;\n cycle_index: number;\n start_s: number;\n end_s: number;\n beam_azimuth_deg: number;\n beam_width_deg: number;\n purpose: \"search\" | \"revisit\";\n}\nexport interface SteeredRadarDetection {\n detection_id: string;\n dwell_index: number;\n range_index: number;\n time_s: number;\n east_m: number;\n north_m: number;\n power: number;\n}\nexport interface SteeredRadarTrack {\n track_id: string;\n dwell_index: number;\n time_s: number;\n state: \"tentative\" | \"confirmed\" | \"coasting\";\n east_m: number;\n north_m: number;\n velocity_east_m_s: number;\n velocity_north_m_s: number;\n cov_ee_m2: number;\n cov_en_m2: number;\n cov_nn_m2: number;\n}\nexport interface SteeredRadarAssociation {\n track_id: string;\n dwell_index: number;\n detection_id: string;\n}\nexport interface SteeredRadarTruth {\n target_id: string;\n dwell_index: number;\n time_s: number;\n east_m: number;\n north_m: number;\n}\nexport interface SteeredRadarDecodedProducts {\n beamSchedule: SteeredRadarDwell[];\n detections: SteeredRadarDetection[];\n tracks: SteeredRadarTrack[];\n associations: SteeredRadarAssociation[];\n truth: SteeredRadarTruth[];\n returns: number[];\n thresholds: number[];\n}\nexport type SteeredRadarProductRoles = Record<\n | \"beamSchedule\"\n | \"returns\"\n | \"thresholds\"\n | \"detections\"\n | \"tracks\"\n | \"associations\",\n string\n> & { truth?: string | undefined };\nexport interface SecondaryRadarInterrogation {\n interrogation_id: string;\n start_s: number;\n end_s: number;\n beam_azimuth_deg: number;\n beam_width_deg: number;\n mode: \"mode_a\" | \"mode_c\";\n}\nexport interface SecondaryRadarReply {\n reply_id: string;\n interrogation_id: string;\n time_s: number;\n available_s: number;\n slant_range_m: number | null;\n bearing_deg: number | null;\n validity: \"valid\" | \"invalid\";\n mode_a_code: string | null;\n pressure_altitude_ft: number | null;\n}\nexport interface SecondaryRadarReport extends SecondaryRadarReply {\n report_id: string;\n}\nexport interface SecondaryRadarTruth {\n target_id: string;\n interrogation_id: string;\n time_s: number;\n east_m: number;\n north_m: number;\n up_m: number;\n transponder: \"enabled\" | \"disabled\";\n}\nexport interface SecondaryRadarDecodedProducts {\n interrogations: SecondaryRadarInterrogation[];\n decodedReplies: SecondaryRadarReply[];\n reports: SecondaryRadarReport[];\n truth: SecondaryRadarTruth[];\n}\nexport type SecondaryRadarProductRoles = Record<\n \"interrogations\" | \"decodedReplies\" | \"reports\",\n string\n> & { truth?: string | undefined };\nconst finite = (value: string) => {\n if (\n !/^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/.test(value) ||\n !Number.isFinite(Number(value))\n )\n throw new Error(\"Invalid finite radar table number.\");\n return Number(value);\n};\nconst enumColumns: Record<string, readonly string[]> = {\n state: [\"tentative\", \"confirmed\", \"coasting\"],\n purpose: [\"search\", \"revisit\"],\n mode: [\"mode_a\", \"mode_c\"],\n validity: [\"valid\", \"invalid\"],\n transponder: [\"enabled\", \"disabled\"],\n};\nfunction sourceReader(\n layouts: readonly ProductSourceLayout[],\n assets: ReadonlyMap<string, Uint8Array>\n) {\n if (new Set(layouts.map((l) => l.productRef)).size !== layouts.length)\n throw new Error(\"Duplicate radar source layout.\");\n const map = new Map(layouts.map((l) => [l.productRef, l]));\n return {\n table(\n ref: string | undefined,\n columns: readonly string[],\n nullable = false\n ) {\n if (!ref) return [];\n const layout = map.get(ref),\n bytes = assets.get(ref);\n if (\n !layout ||\n layout.kind !== \"csv_table\" ||\n layout.partition ||\n layout.sample ||\n !bytes ||\n bytes.byteLength !== layout.byteLength\n )\n throw new Error(\"Missing or mismatched radar table.\");\n const rows = readSourceCsv(bytes),\n header = rows.shift();\n if (\n JSON.stringify(header) !== JSON.stringify(columns) ||\n JSON.stringify(layout.columns) !== JSON.stringify(columns) ||\n rows.length !== layout.rowCount\n )\n throw new Error(\"Invalid radar table columns or extent.\");\n return rows.map((row) => {\n if (row.length !== columns.length)\n throw new Error(\"Invalid radar table width.\");\n return Object.fromEntries(\n columns.map((column, i) => {\n const value = row[i]!;\n if (\n nullable &&\n [\n \"slant_range_m\",\n \"bearing_deg\",\n \"pressure_altitude_ft\",\n \"mode_a_code\",\n ].includes(column) &&\n value === \"\"\n )\n return [column, null];\n if (column === \"mode_a_code\") {\n if (!/^[0-7]{4}$/.test(value))\n throw new Error(\"Mode A code must retain four octal digits.\");\n return [column, value];\n }\n if (column.endsWith(\"_id\")) {\n if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(value))\n throw new Error(\"Invalid radar identifier.\");\n return [column, value];\n }\n if (enumColumns[column]) {\n if (!enumColumns[column]!.includes(value))\n throw new Error(`Invalid radar ${column}.`);\n return [column, value];\n }\n return [column, finite(value)];\n })\n );\n });\n },\n array(ref: string) {\n const layout = map.get(ref),\n bytes = assets.get(ref);\n if (\n !layout ||\n layout.kind !== \"binary_array\" ||\n layout.elementType !== \"float32\" ||\n layout.byteOrder !== \"little\" ||\n !bytes ||\n bytes.byteLength !== layout.byteLength ||\n !Number.isSafeInteger(layout.byteOffset) ||\n layout.byteOffset < 0\n )\n throw new Error(\"Invalid radar array.\");\n const count = layout.axes.reduce((n, axis) => n * axis.length, 1);\n if (\n !Number.isSafeInteger(count) ||\n layout.byteOffset + count * 4 !== bytes.byteLength\n )\n throw new Error(\"Invalid radar array extent.\");\n const view = new DataView(\n bytes.buffer,\n bytes.byteOffset,\n bytes.byteLength\n ),\n values: number[] = [];\n for (let i = 0; i < count; i++) {\n const value = view.getFloat32(layout.byteOffset + i * 4, true);\n if (!Number.isFinite(value))\n throw new Error(\"Nonfinite radar array value.\");\n values.push(value);\n }\n return values;\n },\n };\n}\n/** Decoder only. Verify pinned source bytes with evaluateSteeredRadarProfile before scientific use. */\nexport function readSteeredRadarProducts(\n layouts: readonly ProductSourceLayout[],\n products: SteeredRadarProductRoles,\n assets: ReadonlyMap<string, Uint8Array>\n): SteeredRadarDecodedProducts {\n const reader = sourceReader(layouts, assets);\n return {\n ...Object.fromEntries(\n Object.entries(STEERED_RADAR_TABLE_COLUMNS).map(([role, columns]) => [\n role,\n reader.table(\n products[role as keyof typeof STEERED_RADAR_TABLE_COLUMNS],\n columns\n ),\n ])\n ),\n returns: reader.array(products.returns),\n thresholds: reader.array(products.thresholds),\n } as unknown as SteeredRadarDecodedProducts;\n}\n/** Decoder only. Empty optional fields stay null; Mode A codes retain leading zeros. */\nexport function readSecondaryRadarProducts(\n layouts: readonly ProductSourceLayout[],\n products: SecondaryRadarProductRoles,\n assets: ReadonlyMap<string, Uint8Array>\n): SecondaryRadarDecodedProducts {\n const reader = sourceReader(layouts, assets);\n return Object.fromEntries(\n Object.entries(SECONDARY_RADAR_TABLE_COLUMNS).map(([role, columns]) => [\n role,\n reader.table(\n products[role as keyof typeof SECONDARY_RADAR_TABLE_COLUMNS],\n columns,\n role === \"decodedReplies\" || role === \"reports\"\n ),\n ])\n ) as unknown as SecondaryRadarDecodedProducts;\n}\n","import {\n parseExperimentalObservation,\n compareUtcInstants,\n} from \"@disclosureos/records/experimental/v2\";\nimport { parseAcquisitionContext } from \"@disclosureos/instruments/experimental/v2\";\nimport {\n ProductSourceSelectionSchema,\n evaluateProductSourceSelection,\n} from \"./product-source-selection\";\nimport {\n SteeredRadarProfileSchema,\n SecondaryRadarProfileSchema,\n STEERED_RADAR_PROFILE,\n SECONDARY_RADAR_PROFILE,\n type SteeredRadarProfile,\n type SecondaryRadarProfile,\n} from \"./advanced-radar-profile-schema\";\nimport {\n readSteeredRadarProducts,\n readSecondaryRadarProducts,\n type SteeredRadarDecodedProducts,\n type SecondaryRadarDecodedProducts,\n} from \"./advanced-radar-profile-reader\";\nimport type { ProductSourceLayout } from \"./product-source-reader\";\nexport interface AdvancedRadarProfileIssue {\n code: string;\n pointer: string;\n message: string;\n}\nexport interface AdvancedRadarProfileResult<P, D> {\n success: boolean;\n profile: typeof STEERED_RADAR_PROFILE | typeof SECONDARY_RADAR_PROFILE;\n issues: AdvancedRadarProfileIssue[];\n checks: {\n structure: \"passed\" | \"failed\";\n sources: \"passed\" | \"failed\" | \"not_checked\";\n semantics: \"passed\" | \"failed\" | \"not_checked\";\n };\n scientific: \"not_checked\";\n physicalCalibration: \"not_checked\";\n trackingPerformance: \"not_checked\";\n identityVerification: \"not_checked\";\n data?: { declaration: P; layouts: ProductSourceLayout[]; products: D };\n}\nexport type SteeredRadarProfileResult = AdvancedRadarProfileResult<\n SteeredRadarProfile,\n SteeredRadarDecodedProducts\n>;\nexport type SecondaryRadarProfileResult = AdvancedRadarProfileResult<\n SecondaryRadarProfile,\n SecondaryRadarDecodedProducts\n>;\nconst resultFor = <P, D>(\n profile: typeof STEERED_RADAR_PROFILE | typeof SECONDARY_RADAR_PROFILE\n): AdvancedRadarProfileResult<P, D> => ({\n success: false,\n profile,\n issues: [],\n checks: {\n structure: \"passed\",\n sources: \"not_checked\",\n semantics: \"not_checked\",\n },\n scientific: \"not_checked\",\n physicalCalibration: \"not_checked\",\n trackingPerformance: \"not_checked\",\n identityVerification: \"not_checked\",\n});\nconst near = (a: number, b: number) =>\n Math.abs(a - b) <=\n 1e-6 + 32 * Number.EPSILON * Math.max(1, Math.abs(a), Math.abs(b));\nconst powerNear = (a: number, b: number) =>\n Math.abs(a - b) <= 1e-6 * Math.max(1, Math.abs(a), Math.abs(b));\nconst index = (n: number, length: number) =>\n Number.isSafeInteger(n) && n >= 0 && n < length;\nconst decimal = (value: string): { n: bigint; d: bigint } => {\n const match = /^(-?)(\\d+)(?:\\.(\\d+))?(?:e([+-]?\\d+))?$/i.exec(value)!;\n const fraction = match[3] ?? \"\",\n exponent = Number(match[4] ?? 0) - fraction.length,\n coefficient = BigInt(`${match[1]}${match[2]}${fraction}`);\n return exponent >= 0\n ? { n: coefficient * 10n ** BigInt(exponent), d: 1n }\n : { n: coefficient, d: 10n ** BigInt(-exponent) };\n};\nconst epoch = (instant: string) => {\n const fraction = /\\.(\\d+)(?=Z|[+-]\\d{2}:\\d{2}$)/.exec(instant),\n whole = instant.replace(/\\.\\d+(?=Z|[+-]\\d{2}:\\d{2}$)/, \"\"),\n part = decimal(`0.${fraction?.[1] ?? \"0\"}`);\n return { n: BigInt(Date.parse(whole) / 1000) * part.d + part.n, d: part.d };\n};\nconst compareOffset = (origin: string, seconds: number, boundary: string) => {\n const a = epoch(origin),\n offset = decimal(String(seconds)),\n b = epoch(boundary),\n delta = (a.n * offset.d + offset.n * a.d) * b.d - b.n * a.d * offset.d;\n return delta < 0n ? -1 : delta > 0n ? 1 : 0;\n};\ntype Profile = SteeredRadarProfile | SecondaryRadarProfile;\nasync function prepare<P extends Profile, D>(\n profile: P,\n observationInput: unknown,\n contextInput: unknown,\n selectionInput: unknown,\n options: { assets?: ReadonlyMap<string, Uint8Array> },\n result: AdvancedRadarProfileResult<P, D>\n) {\n const issue = (code: string, pointer: string, message: string) =>\n result.issues.push({ code, pointer, message });\n const observation = parseExperimentalObservation(observationInput),\n context = parseAcquisitionContext(contextInput),\n selection = ProductSourceSelectionSchema.safeParse(selectionInput);\n if (!observation.success || !context.success || !selection.success) {\n result.checks.structure = \"failed\";\n issue(\n \"RADAR.PREREQUISITE\",\n \"/\",\n \"Observation, acquisition context and source selection must satisfy their contracts.\"\n );\n return;\n }\n const obs = observation.data,\n ctx = context.data,\n sources = selection.data;\n if (\n profile.observationId !== obs.id ||\n profile.contextId !== ctx.id ||\n profile.sourceSelectionId !== sources.id ||\n sources.observationId !== obs.id\n )\n issue(\n \"RADAR.IDENTITY\",\n \"/\",\n \"Profile identifiers must select these exact documents.\"\n );\n const refs = Object.values(profile.products).filter(\n (r): r is string => r !== undefined\n );\n if (new Set(refs).size !== refs.length)\n issue(\n \"RADAR.ROLE_ALIAS\",\n \"/products\",\n \"Every role requires a distinct retained product.\"\n );\n if (profile.products.truth && profile.dataOrigin !== \"synthetic\")\n issue(\n \"RADAR.TRUTH_ORIGIN\",\n \"/products/truth\",\n \"Truth is only available for explicitly synthetic captures.\"\n );\n const frame = obs.frames.find((f) => `frame:${f.id}` === profile.frameRef);\n if (!frame || frame.kind !== \"cartesian\" || frame.unit !== \"m\")\n issue(\n \"RADAR.FRAME\",\n \"/frameRef\",\n \"A declared Cartesian frame in meters is required.\"\n );\n const acquisition = ctx.acquisitions.find(\n (a) => `acquisition:${a.id}` === profile.acquisitionRef\n ),\n capture = ctx.products.find(\n (p) => `product:${p.id}` === profile.acquisitionProductRef\n );\n if (\n !acquisition ||\n !capture ||\n capture.acquisitionRef !== profile.acquisitionRef\n )\n issue(\n \"RADAR.ACQUISITION\",\n \"/acquisitionProductRef\",\n \"Retained capture must belong to the selected acquisition.\"\n );\n const validOrigin =\n compareUtcInstants(profile.timeOrigin, profile.timeOrigin) !== undefined;\n if (!validOrigin)\n issue(\n \"RADAR.TIME_ORIGIN\",\n \"/timeOrigin\",\n \"Time origin must be a valid UTC instant.\"\n );\n if (\n acquisition?.time.state !== \"known\" ||\n acquisition.time.kind !== \"interval\"\n )\n issue(\n \"RADAR.ACQUISITION_TIME\",\n \"/acquisitionRef\",\n \"A known acquisition interval is required.\"\n );\n const within = (seconds: number) =>\n validOrigin &&\n Number.isFinite(seconds) &&\n seconds >= 0 &&\n acquisition?.time.state === \"known\" &&\n acquisition.time.kind === \"interval\" &&\n compareOffset(profile.timeOrigin, seconds, acquisition.time.start) >= 0 &&\n compareOffset(profile.timeOrigin, seconds, acquisition.time.end) <= 0;\n const layouts = new Map(sources.layouts.map((l) => [l.productRef, l]));\n for (const [role, ref] of Object.entries(profile.products))\n if (ref && !layouts.has(ref))\n issue(\n \"RADAR.LAYOUT\",\n `/products/${role}`,\n \"Every profile role requires a source layout.\"\n );\n const captureRef =\n profile.kind === \"steered_radar_profile\"\n ? profile.products.returns\n : profile.products.decodedReplies,\n captureLayout = layouts.get(captureRef);\n if (\n capture &&\n captureLayout &&\n (capture.artifact.digest.value !== captureLayout.digest.value ||\n capture.artifact.byteLength !== captureLayout.byteLength ||\n capture.artifact.mediaType !== captureLayout.mediaType)\n )\n issue(\n \"RADAR.CAPTURE_BINDING\",\n \"/acquisitionProductRef\",\n \"Acquisition capture and input layout must identify the same bytes.\"\n );\n const manifestRef =\n acquisition?.manifest.state === \"pinned\"\n ? acquisition.manifest.ref\n : undefined,\n manifest = ctx.manifests.find((m) => `manifest:${m.id}` === manifestRef),\n channel = manifest?.channels.find((c) => c.id === profile.channelId);\n const quantity =\n profile.kind === \"steered_radar_profile\"\n ? \"normalized_return_power\"\n : \"decoded_reply\";\n if (\n !acquisition?.channels.some((c) => c.channelId === profile.channelId) ||\n !channel ||\n channel.quantity !== quantity ||\n channel.unit !== \"1\"\n )\n issue(\n \"RADAR.CHANNEL\",\n \"/channelId\",\n \"Capture channel must select the declared quantity and unit from its pinned manifest.\"\n );\n const products = new Map(obs.products.map((p) => [`product:${p.id}`, p])),\n processes = new Map(obs.processing.map((p) => [`process:${p.id}`, p]));\n if (products.get(captureRef)?.kind !== \"raw\")\n issue(\n \"RADAR.CAPTURE_ORIGIN\",\n \"/products\",\n \"The input capture must be a retained raw product.\"\n );\n const ancestors = (ref: string) => {\n const found = new Set<string>(),\n queue = [ref];\n for (let i = 0; i < queue.length; i++) {\n const current = queue[i]!;\n if (found.has(current)) continue;\n found.add(current);\n const p = products.get(current),\n process = processes.get(current);\n if (p?.kind === \"derived\") queue.push(p.generatedBy);\n if (p?.kind === \"raw\") queue.push(...p.sourceRefs);\n if (process) queue.push(...process.inputRefs);\n }\n return found;\n };\n const derived =\n profile.kind === \"steered_radar_profile\"\n ? ([\"thresholds\", \"detections\", \"tracks\", \"associations\"] as const)\n : ([\"reports\"] as const);\n const roleProducts = profile.products as Record<string, string | undefined>;\n for (const role of derived)\n if (products.get(roleProducts[role]!)?.kind !== \"derived\")\n issue(\n \"RADAR.PROCESSING\",\n `/products/${role}`,\n \"Calculated products require explicit processing lineage.\"\n );\n const depend = (role: string, inputs: string[]) => {\n const all = ancestors(roleProducts[role]!);\n if (inputs.some((input) => !all.has(roleProducts[input]!)))\n issue(\n \"RADAR.LINEAGE\",\n `/products/${role}`,\n \"Processing must declare every required retained input.\"\n );\n };\n if (profile.kind === \"steered_radar_profile\") {\n depend(\"thresholds\", [\"returns\"]);\n depend(\"detections\", [\"returns\", \"thresholds\", \"beamSchedule\"]);\n depend(\"tracks\", [\"detections\"]);\n depend(\"associations\", [\"detections\"]);\n } else depend(\"reports\", [\"decodedReplies\", \"interrogations\"]);\n if (profile.products.truth) {\n const sourceRole =\n profile.kind === \"steered_radar_profile\"\n ? profile.products.beamSchedule\n : profile.products.interrogations;\n const shared = new Set([\n ...ancestors(captureRef),\n ...ancestors(sourceRole),\n ]);\n const sourceKinds = new Map(\n obs.sources.map((source) => [`source:${source.id}`, source.kind])\n );\n // Only shared source-level documents (for example methods or generator code) are\n // exempt. A raw product or instrument-data source does not become harmless\n // configuration merely because it also feeds the capture or schedule.\n const forbidden = [...ancestors(profile.products.truth)].filter(\n (ref) => !shared.has(ref) || sourceKinds.get(ref) !== \"document\"\n );\n if (\n [\n ...derived.map((role) => roleProducts[role]!),\n captureRef,\n sourceRole,\n ].some((ref) => forbidden.some((r) => ancestors(ref).has(r)))\n )\n issue(\n \"RADAR.TRUTH_LEAK\",\n \"/products/truth\",\n \"Capture, schedule and processing lineage cannot consume the independent truth oracle.\"\n );\n }\n if (result.issues.length) {\n result.checks.semantics = \"failed\";\n return;\n }\n const assets = new Map(\n [...(options.assets ?? [])].map(([ref, bytes]) => [\n ref,\n Uint8Array.from(bytes),\n ])\n );\n const checked = await evaluateProductSourceSelection(obs, sources, {\n assets,\n });\n if (\n !checked.success ||\n checked.checks.external !== \"passed\" ||\n checked.checks.content !== \"passed\"\n ) {\n result.checks.sources = \"failed\";\n issue(\n \"RADAR.SOURCE_CONTENT\",\n \"/products\",\n \"All source layouts require matching pinned bytes, digests and valid selections.\"\n );\n return;\n }\n result.checks.sources = \"passed\";\n return { sources, assets, layouts, within, issue };\n}\n/** Validates retained sector-beam products. It does not certify antenna performance or operational capability. */\nexport async function evaluateSteeredRadarProfile(\n observation: unknown,\n context: unknown,\n selection: unknown,\n profileInput: unknown,\n options: { assets?: ReadonlyMap<string, Uint8Array> } = {}\n): Promise<SteeredRadarProfileResult> {\n const result = resultFor<SteeredRadarProfile, SteeredRadarDecodedProducts>(\n STEERED_RADAR_PROFILE\n ),\n parsed = SteeredRadarProfileSchema.safeParse(profileInput);\n if (!parsed.success) {\n result.checks.structure = \"failed\";\n result.issues.push({\n code: \"RADAR.PREREQUISITE\",\n pointer: \"/\",\n message: \"Steered radar declaration must satisfy its contract.\",\n });\n return result;\n }\n const profile = parsed.data,\n p = await prepare(\n profile,\n observation,\n context,\n selection,\n options,\n result\n );\n if (!p) return result;\n const { issue, within } = p,\n returns = p.layouts.get(profile.products.returns),\n thresholds = p.layouts.get(profile.products.thresholds);\n if (\n !returns ||\n returns.kind !== \"binary_array\" ||\n !thresholds ||\n thresholds.kind !== \"binary_array\"\n ) {\n issue(\n \"RADAR.ARRAY_LAYOUT\",\n \"/products\",\n \"Returns and thresholds require binary array layouts.\"\n );\n result.checks.semantics = \"failed\";\n return result;\n }\n const [dwellAxis, rangeAxis] = returns.axes;\n if (\n returns.axes.length !== 2 ||\n !dwellAxis ||\n dwellAxis.kind !== \"index\" ||\n dwellAxis.name !== \"dwell\" ||\n dwellAxis.firstIndex !== 0 ||\n !rangeAxis ||\n rangeAxis.kind !== \"regular\" ||\n rangeAxis.name !== \"range\" ||\n rangeAxis.unit !== \"m\" ||\n rangeAxis.origin < 0 ||\n rangeAxis.step <= 0\n )\n issue(\n \"RADAR.AXES\",\n \"/products/returns\",\n \"Required axes are zero-based dwell and increasing nonnegative horizontal-range centers in meters.\"\n );\n for (const layout of [returns, thresholds])\n if (\n layout.elementType !== \"float32\" ||\n layout.byteOrder !== \"little\" ||\n layout.quantity !== \"normalized_return_power\" ||\n layout.unit !== \"1\"\n )\n issue(\n \"RADAR.POWER_LAYOUT\",\n \"/products\",\n \"Arrays require little-endian float32 normalized return power with unit 1.\"\n );\n if (JSON.stringify(returns.axes) !== JSON.stringify(thresholds.axes))\n issue(\n \"RADAR.THRESHOLD_AXES\",\n \"/products/thresholds\",\n \"Threshold axes must match returns exactly.\"\n );\n if (\n result.issues.length ||\n !dwellAxis ||\n dwellAxis.kind !== \"index\" ||\n !rangeAxis ||\n rangeAxis.kind !== \"regular\"\n ) {\n result.checks.semantics = \"failed\";\n return result;\n }\n let data: SteeredRadarDecodedProducts;\n try {\n data = readSteeredRadarProducts(\n p.sources.layouts,\n profile.products,\n p.assets\n );\n } catch (e) {\n issue(\n \"RADAR.CONTENT\",\n \"/products\",\n e instanceof Error ? e.message : String(e)\n );\n result.checks.semantics = \"failed\";\n return result;\n }\n const dwells = dwellAxis.length,\n ranges = rangeAxis.length;\n if (data.beamSchedule.length !== dwells)\n issue(\n \"RADAR.DWELL_COUNT\",\n \"/products/beamSchedule\",\n \"One schedule row is required per retained dwell.\"\n );\n for (const [i, d] of data.beamSchedule.entries()) {\n const prior = data.beamSchedule[i - 1],\n pointer = `/products/beamSchedule/rows/${i}`;\n if (\n d.dwell_index !== i ||\n !Number.isSafeInteger(d.cycle_index) ||\n d.cycle_index < 0 ||\n (i === 0 && d.cycle_index !== 0) ||\n (prior &&\n (d.cycle_index < prior.cycle_index ||\n d.cycle_index > prior.cycle_index + 1))\n )\n issue(\n \"RADAR.DWELL_ORDER\",\n pointer,\n \"Dwell indices are contiguous; cycle groups begin at zero and advance without skips or reversal.\"\n );\n if (\n !(d.start_s < d.end_s) ||\n !within(d.start_s) ||\n !within(d.end_s) ||\n (prior && d.start_s < prior.end_s)\n )\n issue(\n \"RADAR.DWELL_TIME\",\n pointer,\n \"Ordered non-overlapping dwell intervals must lie inside acquisition time.\"\n );\n if (\n d.beam_azimuth_deg < 0 ||\n d.beam_azimuth_deg >= 360 ||\n d.beam_width_deg <= 0 ||\n d.beam_width_deg > 360\n )\n issue(\n \"RADAR.BEAM\",\n pointer,\n \"Bearings are clockwise from north in [0,360); full beam width is positive and at most 360 degrees.\"\n );\n }\n for (const role of [\"returns\", \"thresholds\"] as const)\n if (data[role].some((v) => v < 0))\n issue(\n \"RADAR.POWER_RANGE\",\n `/products/${role}`,\n \"Power cells are nonnegative, not restricted to the interval 0–1.\"\n );\n const detections = new Map<\n string,\n SteeredRadarDecodedProducts[\"detections\"][number]\n >(),\n cells = new Set<number>();\n for (const [i, d] of data.detections.entries()) {\n const pointer = `/products/detections/rows/${i}`;\n if (detections.has(d.detection_id))\n issue(\n \"RADAR.DETECTION_ID\",\n pointer,\n \"Detection identifiers must be unique.\"\n );\n detections.set(d.detection_id, d);\n if (!index(d.dwell_index, dwells) || !index(d.range_index, ranges)) {\n issue(\n \"RADAR.DETECTION_CELL\",\n pointer,\n \"Detection cell lies outside capture.\"\n );\n continue;\n }\n const cell = d.dwell_index * ranges + d.range_index,\n dwell = data.beamSchedule[d.dwell_index];\n if (cells.has(cell))\n issue(\n \"RADAR.DETECTION_CELL\",\n pointer,\n \"A cell cannot create duplicate detections.\"\n );\n cells.add(cell);\n if (!dwell || d.time_s < dwell.start_s || d.time_s >= dwell.end_s)\n issue(\n \"RADAR.DETECTION_TIME\",\n pointer,\n \"Detection time must lie within its source dwell [start,end).\"\n );\n if (dwell) {\n const angle = (dwell.beam_azimuth_deg * Math.PI) / 180,\n r = rangeAxis.origin + d.range_index * rangeAxis.step;\n if (\n !near(d.east_m, profile.origin.eastM + r * Math.sin(angle)) ||\n !near(d.north_m, profile.origin.northM + r * Math.cos(angle))\n )\n issue(\n \"RADAR.DETECTION_GEOMETRY\",\n pointer,\n \"Detection must retain the scheduled beam/range cell center.\"\n );\n }\n if (\n !powerNear(d.power, data.returns[cell]!) ||\n data.returns[cell]! < data.thresholds[cell]!\n )\n issue(\n \"RADAR.DETECTION_THRESHOLD\",\n pointer,\n \"Detection power must match and meet its own retained threshold.\"\n );\n }\n const tracks = new Map<\n string,\n SteeredRadarDecodedProducts[\"tracks\"][number]\n >(),\n last = new Map<string, SteeredRadarDecodedProducts[\"tracks\"][number]>();\n for (const [i, t] of data.tracks.entries()) {\n const pointer = `/products/tracks/rows/${i}`,\n key = `${t.track_id}/${t.dwell_index}`,\n prior = last.get(t.track_id),\n dwell = data.beamSchedule[t.dwell_index];\n if (!index(t.dwell_index, dwells) || tracks.has(key))\n issue(\n \"RADAR.TRACK_ID\",\n pointer,\n \"Track/dwell identities must be unique and inside capture.\"\n );\n if (\n prior &&\n (t.dwell_index <= prior.dwell_index || t.time_s <= prior.time_s)\n )\n issue(\n \"RADAR.TRACK_ORDER\",\n pointer,\n \"Track states must advance in dwell and time.\"\n );\n if (!dwell || t.time_s !== dwell.end_s)\n issue(\n \"RADAR.TRACK_TIME\",\n pointer,\n \"Track output is available at its dwell end.\"\n );\n tracks.set(key, t);\n last.set(t.track_id, t);\n const a = t.cov_ee_m2,\n b = t.cov_en_m2,\n c = t.cov_nn_m2,\n s = Math.max(1, a, Math.abs(b), c);\n if (a < 0 || c < 0 || (a / s) * (c / s) - (b / s) ** 2 < -1e-12)\n issue(\n \"RADAR.COVARIANCE\",\n pointer,\n \"Covariance must be positive semidefinite in square meters.\"\n );\n }\n const assigned = new Set<string>(),\n counts = new Map<string, number>();\n for (const [i, a] of data.associations.entries()) {\n const key = `${a.track_id}/${a.dwell_index}`,\n track = tracks.get(key),\n d = detections.get(a.detection_id),\n pointer = `/products/associations/rows/${i}`;\n if (\n !track ||\n !d ||\n d.dwell_index !== a.dwell_index ||\n d.time_s > track.time_s\n )\n issue(\n \"RADAR.ASSOCIATION_REF\",\n pointer,\n \"An association must select this dwell's existing track and earlier detection.\"\n );\n if (assigned.has(a.detection_id))\n issue(\n \"RADAR.ASSOCIATION_UNIQUE\",\n pointer,\n \"Each detection may be assigned once.\"\n );\n assigned.add(a.detection_id);\n counts.set(key, (counts.get(key) ?? 0) + 1);\n }\n for (const [key, t] of tracks)\n if ((t.state === \"coasting\") !== !(counts.get(key) ?? 0))\n issue(\n \"RADAR.TRACK_STATE\",\n `/products/tracks/${key}`,\n \"Coasting has no detection; tentative and confirmed states require a detection association.\"\n );\n const truth = new Set<string>();\n for (const [i, t] of data.truth.entries()) {\n const key = `${t.target_id}/${t.dwell_index}/${t.time_s}`,\n d = data.beamSchedule[t.dwell_index];\n if (\n !index(t.dwell_index, dwells) ||\n truth.has(key) ||\n !d ||\n t.time_s < d.start_s ||\n t.time_s > d.end_s\n )\n issue(\n \"RADAR.TRUTH_ROW\",\n `/products/truth/rows/${i}`,\n \"Truth requires unique target/dwell/time rows inside its dwell.\"\n );\n truth.add(key);\n }\n result.checks.semantics = result.issues.length ? \"failed\" : \"passed\";\n result.success = !result.issues.length;\n if (result.success)\n result.data = {\n declaration: profile,\n layouts: p.sources.layouts,\n products: data,\n };\n return result;\n}\n/** Validates cooperative report provenance, not transponder authenticity, geometric height or target identity. */\nexport async function evaluateSecondaryRadarProfile(\n observation: unknown,\n context: unknown,\n selection: unknown,\n profileInput: unknown,\n options: { assets?: ReadonlyMap<string, Uint8Array> } = {}\n): Promise<SecondaryRadarProfileResult> {\n const result = resultFor<\n SecondaryRadarProfile,\n SecondaryRadarDecodedProducts\n >(SECONDARY_RADAR_PROFILE),\n parsed = SecondaryRadarProfileSchema.safeParse(profileInput);\n if (!parsed.success) {\n result.checks.structure = \"failed\";\n result.issues.push({\n code: \"RADAR.PREREQUISITE\",\n pointer: \"/\",\n message: \"Secondary radar declaration must satisfy its contract.\",\n });\n return result;\n }\n const profile = parsed.data,\n p = await prepare(\n profile,\n observation,\n context,\n selection,\n options,\n result\n );\n if (!p) return result;\n const { issue, within } = p;\n let data: SecondaryRadarDecodedProducts;\n try {\n data = readSecondaryRadarProducts(\n p.sources.layouts,\n profile.products,\n p.assets\n );\n } catch (e) {\n issue(\n \"RADAR.CONTENT\",\n \"/products\",\n e instanceof Error ? e.message : String(e)\n );\n result.checks.semantics = \"failed\";\n return result;\n }\n const interrogations = new Map<\n string,\n SecondaryRadarDecodedProducts[\"interrogations\"][number]\n >();\n if (!data.interrogations.length)\n issue(\n \"RADAR.INTERROGATION_COUNT\",\n \"/products/interrogations\",\n \"At least one retained interrogation is required.\"\n );\n for (const [i, q] of data.interrogations.entries()) {\n const pointer = `/products/interrogations/rows/${i}`,\n prior = data.interrogations[i - 1];\n if (interrogations.has(q.interrogation_id))\n issue(\n \"RADAR.INTERROGATION_ID\",\n pointer,\n \"Interrogation IDs must be unique.\"\n );\n interrogations.set(q.interrogation_id, q);\n if (\n !(q.start_s < q.end_s) ||\n !within(q.start_s) ||\n !within(q.end_s) ||\n (prior && q.start_s < prior.end_s)\n )\n issue(\n \"RADAR.INTERROGATION_TIME\",\n pointer,\n \"Ordered non-overlapping interrogation windows must lie inside acquisition time.\"\n );\n if (\n q.beam_azimuth_deg < 0 ||\n q.beam_azimuth_deg >= 360 ||\n q.beam_width_deg <= 0 ||\n q.beam_width_deg > 360\n )\n issue(\n \"RADAR.BEAM\",\n pointer,\n \"Interrogation bearings and positive beam widths must be valid degrees.\"\n );\n }\n const replies = new Map<\n string,\n SecondaryRadarDecodedProducts[\"decodedReplies\"][number]\n >();\n for (const [i, r] of data.decodedReplies.entries()) {\n const pointer = `/products/decodedReplies/rows/${i}`,\n q = interrogations.get(r.interrogation_id);\n if (replies.has(r.reply_id))\n issue(\"RADAR.REPLY_ID\", pointer, \"Reply IDs must be unique.\");\n replies.set(r.reply_id, r);\n if (!q)\n issue(\n \"RADAR.REPLY_REF\",\n pointer,\n \"Reply must select a retained interrogation.\"\n );\n if (\n !q ||\n r.time_s < q.start_s ||\n r.time_s >= q.end_s ||\n r.available_s < r.time_s ||\n !within(r.available_s)\n )\n issue(\n \"RADAR.REPLY_TIME\",\n pointer,\n \"Reply time belongs to its interrogation; processing availability cannot precede reception or exceed acquisition.\"\n );\n if (r.validity === \"invalid\") {\n if (\n r.slant_range_m !== null ||\n r.bearing_deg !== null ||\n r.mode_a_code !== null ||\n r.pressure_altitude_ft !== null\n )\n issue(\n \"RADAR.INVALID_REPLY\",\n pointer,\n \"This profile retains invalid receptions without decoded values; blanks remain null.\"\n );\n } else {\n if (\n r.slant_range_m === null ||\n r.slant_range_m < 0 ||\n r.bearing_deg === null ||\n r.bearing_deg < 0 ||\n r.bearing_deg >= 360\n )\n issue(\n \"RADAR.REPLY_POSITION\",\n pointer,\n \"A valid reply requires nonnegative slant range and bearing in [0,360).\"\n );\n if (\n q?.mode === \"mode_a\" &&\n (r.mode_a_code === null || r.pressure_altitude_ft !== null)\n )\n issue(\n \"RADAR.MODE_FIELDS\",\n pointer,\n \"A Mode A reply retains its reported octal code, not altitude.\"\n );\n if (\n q?.mode === \"mode_c\" &&\n (r.mode_a_code !== null ||\n (r.pressure_altitude_ft !== null &&\n r.pressure_altitude_ft % 100 !== 0))\n )\n issue(\n \"RADAR.MODE_FIELDS\",\n pointer,\n \"Mode C altitude is nullable, in 100-foot pressure-altitude increments; it is not geometric height or an identity code.\"\n );\n }\n }\n const reportIds = new Set<string>(),\n reported = new Set<string>();\n for (const [i, r] of data.reports.entries()) {\n const pointer = `/products/reports/rows/${i}`,\n source = replies.get(r.reply_id);\n if (reportIds.has(r.report_id) || reported.has(r.reply_id))\n issue(\n \"RADAR.REPORT_ID\",\n pointer,\n \"Report IDs and source reply selections must be unique.\"\n );\n reportIds.add(r.report_id);\n reported.add(r.reply_id);\n if (!source || source.validity !== \"valid\")\n issue(\n \"RADAR.REPORT_REF\",\n pointer,\n \"A report must select a retained valid decoded reply.\"\n );\n else if (\n Object.entries(source).some(\n ([key, value]) => r[key as keyof typeof r] !== value\n )\n )\n issue(\n \"RADAR.REPORT_FIDELITY\",\n pointer,\n \"Report must preserve every decoded source field, including availability and null values.\"\n );\n }\n if (\n data.decodedReplies.some(\n (r) => r.validity === \"valid\" && !reported.has(r.reply_id)\n )\n )\n issue(\n \"RADAR.REPORT_COMPLETENESS\",\n \"/products/reports\",\n \"Every valid decoded reply must have one report; invalid and absent replies must not create reports.\"\n );\n const truth = new Set<string>();\n for (const [i, t] of data.truth.entries()) {\n const key = `${t.target_id}/${t.interrogation_id}/${t.time_s}`,\n q = interrogations.get(t.interrogation_id);\n if (!q || truth.has(key) || t.time_s < q.start_s || t.time_s >= q.end_s)\n issue(\n \"RADAR.TRUTH_ROW\",\n `/products/truth/rows/${i}`,\n \"Truth needs unique target/interrogation/time rows inside its interrogation.\"\n );\n truth.add(key);\n }\n result.checks.semantics = result.issues.length ? \"failed\" : \"passed\";\n result.success = !result.issues.length;\n if (result.success)\n result.data = {\n declaration: profile,\n layouts: p.sources.layouts,\n products: data,\n };\n return result;\n}\n","import { z } from \"zod\";\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\n/** An optional interpretation of retained monostatic envelopes, not an instrument capability claim. */\nexport const SonarProfileSchema = z.strictObject({\n kind: z.literal(\"sonar_profile\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n observationId: id,\n contextId: id,\n sourceSelectionId: id,\n acquisitionRef: ref(\"acquisition\"),\n acquisitionProductRef: ref(\"product\"),\n receiveMaskAcquisitionProductRef: ref(\"product\"),\n channelId: id,\n timeOrigin: z.iso.datetime({ offset: true }),\n mode: z.literal(\"monostatic_echo_envelope\"),\n dataOrigin: z.enum([\"synthetic\", \"instrument\"]),\n amplitudeRepresentation: z.literal(\"normalized_envelope\"),\n sampling: z.strictObject({\n pings: z.number().int().min(1).max(1000000),\n delayBins: z.number().int().min(1).max(1000000),\n delayStartSeconds: z.number().min(0),\n delayStepSeconds: z.number().positive(),\n pingStepSeconds: z.number().positive(),\n }),\n propagation: z.strictObject({\n kind: z.literal(\"constant_assumed_sound_speed\"),\n soundSpeedMps: z.number().positive(),\n travelPath: z.literal(\"two_way\"),\n distanceMeaning: z.literal(\"modeled_one_way_path_length\"),\n }),\n availability: z.strictObject({\n kind: z.literal(\"receive_retention_mask\"),\n unavailable: z.literal(0),\n available: z.literal(1),\n missingAmplitude: z.literal(\"zero_storage_placeholder\"),\n }),\n products: z.strictObject({\n amplitudes: ref(\"product\"),\n receiveMask: ref(\"product\"),\n }),\n});\n\nexport const SONAR_PROFILE_SCHEMA_ID =\n \"urn:disclosureos:experimental:sonar-profile:0.1.0\";\nexport const SONAR_PROFILE = Object.freeze({\n id: \"urn:disclosureos:experimental:profile:monostatic-echo-envelope\",\n version: \"0.1.0\",\n scope: \"retained_echo_envelope_and_assumed_two_way_distance\",\n} as const);\nexport type SonarProfile = z.infer<typeof SonarProfileSchema>;\nexport function sonarProfileJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(SonarProfileSchema, { target: \"draft-2020-12\" }),\n $id: SONAR_PROFILE_SCHEMA_ID,\n };\n}\n","import {\n readProductSourceSelection,\n type ProductSourceLayout,\n} from \"./product-source-reader\";\n\n/** Minimal browser declaration. Use evaluateSonarProfile for document bindings and digests. */\nexport interface SonarDeclaration {\n timeOrigin: string;\n sampling: {\n pings: number;\n delayBins: number;\n delayStartSeconds: number;\n delayStepSeconds: number;\n pingStepSeconds: number;\n };\n propagation: {\n kind: \"constant_assumed_sound_speed\";\n soundSpeedMps: number;\n travelPath: \"two_way\";\n distanceMeaning: \"modeled_one_way_path_length\";\n };\n availability: {\n kind: \"receive_retention_mask\";\n unavailable: 0;\n available: 1;\n missingAmplitude: \"zero_storage_placeholder\";\n };\n products: { amplitudes: string; receiveMask: string };\n}\nexport interface SonarDecodedProducts {\n /** Storage values only: receiveMask=0 makes this a placeholder, never a measured zero. */\n amplitudes: number[];\n receiveMask: number[];\n}\nconst finite = (n: number) => Number.isFinite(n);\n// Exact decimal timing comparisons; arithmetic intermediates must not widen a receive window.\nconst decimal = (value: number) => {\n const m = /^(\\d+)(?:\\.(\\d+))?(?:e([+-]?\\d+))?$/i.exec(String(value))!;\n const exponent = Number(m[3] ?? 0) - (m[2]?.length ?? 0),\n n = BigInt(`${m[1]}${m[2] ?? \"\"}`);\n return exponent >= 0\n ? { n: n * BigInt(10) ** BigInt(exponent), d: BigInt(1) }\n : { n, d: BigInt(10) ** BigInt(-exponent) };\n};\nconst add = (a: { n: bigint; d: bigint }, b: { n: bigint; d: bigint }) => ({\n n: a.n * b.d + b.n * a.d,\n d: a.d * b.d,\n});\nconst scaled = (value: number, count: number) => {\n const v = decimal(value);\n return { n: v.n * BigInt(count), d: v.d };\n};\nconst numericDecimal = (v: { n: bigint; d: bigint }) =>\n Number(`${v.n}e-${v.d.toString().length - 1}`);\n// No Date calendar normalization: 30 February must not become a March source time.\nconst validUtc = (value: string) => {\n const m =\n /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$/.exec(\n value\n );\n if (!m) return false;\n const year = Number(m[1]),\n month = Number(m[2]),\n day = Number(m[3]);\n const leap = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n const days = [31, leap ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n const offset = m[7]!;\n return (\n month >= 1 &&\n month <= 12 &&\n day >= 1 &&\n day <= days[month - 1]! &&\n Number(m[4]) < 24 &&\n Number(m[5]) < 60 &&\n Number(m[6]) < 60 &&\n (offset === \"Z\" ||\n (Number(offset.slice(1, 3)) < 24 && Number(offset.slice(4, 6)) < 60)) &&\n Number.isFinite(Date.parse(value))\n );\n};\n/** Bound allocation and reject ambiguous receive windows before reading bytes. */\nexport function validateSonarDeclaration(profile: SonarDeclaration): void {\n const s = profile.sampling;\n if (\n !validUtc(profile.timeOrigin) ||\n !Number.isSafeInteger(s.pings) ||\n s.pings < 1 ||\n !Number.isSafeInteger(s.delayBins) ||\n s.delayBins < 1 ||\n s.pings * s.delayBins > 16777216 ||\n ![\n s.delayStartSeconds,\n s.delayStepSeconds,\n s.pingStepSeconds,\n profile.propagation.soundSpeedMps,\n ].every(finite) ||\n s.delayStartSeconds < 0 ||\n s.delayStepSeconds <= 0 ||\n s.pingStepSeconds <= 0 ||\n profile.propagation.soundSpeedMps <= 0 ||\n profile.propagation.kind !== \"constant_assumed_sound_speed\" ||\n profile.propagation.travelPath !== \"two_way\" ||\n profile.propagation.distanceMeaning !== \"modeled_one_way_path_length\" ||\n profile.availability.kind !== \"receive_retention_mask\" ||\n profile.availability.unavailable !== 0 ||\n profile.availability.available !== 1 ||\n profile.availability.missingAmplitude !== \"zero_storage_placeholder\" ||\n profile.products.amplitudes === profile.products.receiveMask\n )\n throw new Error(\n \"Invalid monostatic envelope declaration or overlapping receive window.\"\n );\n const exactDelay = add(\n decimal(s.delayStartSeconds),\n scaled(s.delayStepSeconds, s.delayBins - 1)\n ),\n exactPing = decimal(s.pingStepSeconds);\n if (exactDelay.n * exactPing.d >= exactPing.n * exactDelay.d)\n throw new Error(\"Sonar receive window reaches the next ping.\");\n const maxDelay = numericDecimal(exactDelay);\n if (\n !Number.isFinite((s.pings - 1) * s.pingStepSeconds + maxDelay) ||\n !Number.isFinite((maxDelay * profile.propagation.soundSpeedMps) / 2)\n )\n throw new Error(\"Sonar time or modeled distance arithmetic overflow.\");\n}\n\n/** Conditional path length only; neither a measured depth nor a straight-line position. */\nexport function sonarDistance(\n profile: SonarDeclaration,\n delaySeconds: number\n): number {\n validateSonarDeclaration(profile);\n const value = (delaySeconds * profile.propagation.soundSpeedMps) / 2;\n if (\n !Number.isFinite(delaySeconds) ||\n delaySeconds < 0 ||\n !Number.isFinite(value)\n )\n throw new Error(\"Invalid two-way delay.\");\n return value;\n}\nexport function sonarSample(\n profile: SonarDeclaration,\n ping: number,\n bin: number\n) {\n validateSonarDeclaration(profile);\n const s = profile.sampling;\n if (\n !Number.isSafeInteger(ping) ||\n ping < 0 ||\n ping >= s.pings ||\n !Number.isSafeInteger(bin) ||\n bin < 0 ||\n bin >= s.delayBins\n )\n throw new Error(\"Sonar sample is outside the retained array.\");\n const exactDelay = add(\n decimal(s.delayStartSeconds),\n scaled(s.delayStepSeconds, bin)\n ),\n exactPing = scaled(s.pingStepSeconds, ping);\n const delaySeconds = numericDecimal(exactDelay);\n return {\n ping,\n bin,\n delaySeconds,\n modeledDistanceM: sonarDistance(profile, delaySeconds),\n timeOffsetSeconds: numericDecimal(exactPing),\n receiveOffsetSeconds: numericDecimal(add(exactPing, exactDelay)),\n amplitudeByteOffset: (ping * s.delayBins + bin) * 4,\n maskByteOffset: ping * s.delayBins + bin,\n };\n}\nexport function readSonarSample(\n profile: SonarDeclaration,\n data: SonarDecodedProducts,\n ping: number,\n bin: number\n) {\n const sample = sonarSample(profile, ping, bin),\n i = ping * profile.sampling.delayBins + bin;\n if (\n data.amplitudes.length !==\n profile.sampling.pings * profile.sampling.delayBins ||\n data.receiveMask.length !== data.amplitudes.length\n )\n throw new Error(\"Incomplete decoded sonar products.\");\n const mask = data.receiveMask[i],\n amplitude = data.amplitudes[i];\n if (\n (mask !== 0 && mask !== 1) ||\n amplitude === undefined ||\n !Number.isFinite(amplitude) ||\n amplitude < 0 ||\n amplitude > 1 ||\n (mask === 0 && amplitude !== 0)\n )\n throw new Error(\"Invalid sonar amplitude or receive mask.\");\n return {\n ...sample,\n available: mask === 1,\n amplitude: mask === 1 ? amplitude : null,\n };\n}\n\n/** Decode exact retained cells. Missing reception remains separate from a zero amplitude.\n * This dependency-free reader checks layout/content, but not SHA-256 or acquisition lineage. */\nexport function readSonarProducts(\n profile: SonarDeclaration,\n layouts: readonly ProductSourceLayout[],\n assets: ReadonlyMap<string, Uint8Array>\n): SonarDecodedProducts {\n validateSonarDeclaration(profile);\n const s = profile.sampling,\n total = s.pings * s.delayBins;\n const decoded = {} as SonarDecodedProducts;\n for (const role of [\"amplitudes\", \"receiveMask\"] as const) {\n const matches = layouts.filter(\n (l) => l.productRef === profile.products[role]\n );\n if (matches.length !== 1)\n throw new Error(`Sonar ${role} requires one source layout.`);\n const layout = matches[0]!,\n bytes = assets.get(layout.productRef),\n size = role === \"amplitudes\" ? 4 : 1;\n if (\n layout.kind !== \"binary_array\" ||\n layout.elementType !== (role === \"amplitudes\" ? \"float32\" : \"uint8\") ||\n layout.byteOrder !== \"little\" ||\n layout.order !== \"row_major\" ||\n layout.byteOffset !== 0 ||\n layout.quantity !==\n (role === \"amplitudes\"\n ? \"normalized_echo_amplitude\"\n : \"receive_availability\") ||\n layout.unit !== \"1\" ||\n !bytes ||\n bytes.byteLength !== total * size ||\n layout.byteLength !== bytes.byteLength\n )\n throw new Error(`Invalid sonar ${role} layout or retained bytes.`);\n const [ping, delay] = layout.axes;\n if (\n layout.axes.length !== 2 ||\n !ping ||\n ping.kind !== \"time\" ||\n ping.name !== \"ping\" ||\n ping.length !== s.pings ||\n ping.start !== profile.timeOrigin ||\n !Number.isSafeInteger(ping.stepSeconds.numerator) ||\n ping.stepSeconds.numerator <= 0 ||\n !Number.isSafeInteger(ping.stepSeconds.denominator) ||\n ping.stepSeconds.denominator <= 0 ||\n BigInt(ping.stepSeconds.numerator) * decimal(s.pingStepSeconds).d !==\n decimal(s.pingStepSeconds).n * BigInt(ping.stepSeconds.denominator) ||\n !delay ||\n delay.kind !== \"regular\" ||\n delay.name !== \"two_way_delay\" ||\n delay.unit !== \"s\" ||\n delay.length !== s.delayBins ||\n delay.origin !== s.delayStartSeconds ||\n delay.step !== s.delayStepSeconds\n )\n throw new Error(\n `Sonar ${role} must use the declared ping time and two-way delay axes.`\n );\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n decoded[role] = Array.from({ length: total }, (_, i) =>\n role === \"amplitudes\" ? view.getFloat32(i * 4, true) : view.getUint8(i)\n );\n // Reuse the standard locator for the last element as a boundary/extent check.\n readProductSourceSelection(\n layout,\n { kind: \"array_element\", indices: [s.pings - 1, s.delayBins - 1] },\n bytes\n );\n }\n for (let i = 0; i < total; i++) {\n const value = decoded.amplitudes[i]!,\n mask = decoded.receiveMask[i]!;\n if (\n !Number.isFinite(value) ||\n value < 0 ||\n value > 1 ||\n (mask !== 0 && mask !== 1) ||\n (mask === 0 && value !== 0)\n )\n throw new Error(\n `Invalid sonar retained cell ${i}. Missing amplitudes must use the declared storage placeholder.`\n );\n }\n return decoded;\n}\n","import {\n parseExperimentalObservation,\n compareUtcInstants,\n} from \"@disclosureos/records/experimental/v2\";\nimport { parseAcquisitionContext } from \"@disclosureos/instruments/experimental/v2\";\nimport {\n ProductSourceSelectionSchema,\n evaluateProductSourceSelection,\n} from \"./product-source-selection\";\nimport {\n SonarProfileSchema,\n SONAR_PROFILE,\n type SonarProfile,\n} from \"./sonar-profile-schema\";\nimport {\n readSonarProducts,\n validateSonarDeclaration,\n type SonarDecodedProducts,\n} from \"./sonar-profile-reader\";\nimport type { ProductSourceLayout } from \"./product-source-reader\";\n\nexport interface SonarProfileIssue {\n code: string;\n pointer: string;\n message: string;\n}\nexport interface SonarProfileResult {\n success: boolean;\n profile: typeof SONAR_PROFILE;\n issues: SonarProfileIssue[];\n checks: {\n structure: \"passed\" | \"failed\";\n sources: \"passed\" | \"failed\" | \"not_checked\";\n semantics: \"passed\" | \"failed\" | \"not_checked\";\n };\n scientific: \"not_checked\";\n physicalCalibration: \"not_checked\";\n propagationAccuracy: \"not_checked\";\n data?: {\n declaration: SonarProfile;\n layouts: ProductSourceLayout[];\n products: SonarDecodedProducts;\n };\n}\n// Decimal arithmetic preserves UTC digits finer than Date's millisecond resolution.\nconst decimal = (value: string) => {\n const m = /^(-?)(\\d+)(?:\\.(\\d+))?(?:e([+-]?\\d+))?$/i.exec(value)!;\n const exponent = Number(m[4] ?? 0) - (m[3]?.length ?? 0),\n n = BigInt(`${m[1]}${m[2]}${m[3] ?? \"\"}`);\n return exponent >= 0\n ? { n: n * 10n ** BigInt(exponent), d: 1n }\n : { n, d: 10n ** BigInt(-exponent) };\n};\nconst epoch = (s: string) => {\n const fraction = /\\.(\\d+)(?=Z|[+-]\\d{2}:\\d{2}$)/.exec(s),\n part = decimal(`0.${fraction?.[1] ?? \"0\"}`);\n return {\n n:\n BigInt(Date.parse(s.replace(/\\.\\d+(?=Z|[+-]\\d{2}:\\d{2}$)/, \"\")) / 1000) *\n part.d +\n part.n,\n d: part.d,\n };\n};\nconst add = (a: { n: bigint; d: bigint }, b: { n: bigint; d: bigint }) => ({\n n: a.n * b.d + b.n * a.d,\n d: a.d * b.d,\n});\nconst scaled = (seconds: number, count: number) => {\n const value = decimal(String(seconds));\n return { n: value.n * BigInt(count), d: value.d };\n};\nconst compareOffset = (\n origin: string,\n offset: { n: bigint; d: bigint },\n boundary: string\n) => {\n const a = epoch(origin),\n b = epoch(boundary);\n const delta = (a.n * offset.d + offset.n * a.d) * b.d - b.n * a.d * offset.d;\n return delta < 0n ? -1 : delta > 0n ? 1 : 0;\n};\n\n/** Checks standard documents, retained bytes and declared meaning. It cannot establish\n * physical calibration, propagation accuracy, object identity or bathymetry. */\nexport async function evaluateSonarProfile(\n observationInput: unknown,\n contextInput: unknown,\n selectionInput: unknown,\n profileInput: unknown,\n options: { assets?: ReadonlyMap<string, Uint8Array> } = {}\n): Promise<SonarProfileResult> {\n const result: SonarProfileResult = {\n success: false,\n profile: SONAR_PROFILE,\n issues: [],\n checks: {\n structure: \"passed\",\n sources: \"not_checked\",\n semantics: \"not_checked\",\n },\n scientific: \"not_checked\",\n physicalCalibration: \"not_checked\",\n propagationAccuracy: \"not_checked\",\n };\n const issue = (code: string, pointer: string, message: string) => {\n result.issues.push({ code, pointer, message });\n };\n const parsed = SonarProfileSchema.safeParse(profileInput),\n observation = parseExperimentalObservation(observationInput),\n context = parseAcquisitionContext(contextInput),\n selection = ProductSourceSelectionSchema.safeParse(selectionInput);\n if (\n !parsed.success ||\n !observation.success ||\n !context.success ||\n !selection.success\n ) {\n result.checks.structure = \"failed\";\n issue(\n \"SONAR.PREREQUISITE\",\n \"/\",\n \"Profile, observation, acquisition context and source selection must satisfy their contracts.\"\n );\n return result;\n }\n const p = parsed.data,\n obs = observation.data,\n ctx = context.data,\n sources = selection.data;\n if (\n p.observationId !== obs.id ||\n p.contextId !== ctx.id ||\n p.sourceSelectionId !== sources.id ||\n sources.observationId !== obs.id\n )\n issue(\n \"SONAR.IDENTITY\",\n \"/\",\n \"Profile identifiers must select these exact documents.\"\n );\n try {\n validateSonarDeclaration(p);\n } catch (error) {\n issue(\"SONAR.DECLARATION\", \"/sampling\", (error as Error).message);\n }\n const capture = ctx.acquisitions.find(\n (a) => `acquisition:${a.id}` === p.acquisitionRef\n );\n const manifestRef =\n capture?.manifest.state === \"pinned\" ? capture.manifest.ref : undefined;\n const manifest = ctx.manifests.find(\n (m) => `manifest:${m.id}` === manifestRef\n );\n const channel = manifest?.channels.find((c) => c.id === p.channelId);\n if (\n !capture ||\n !manifest ||\n manifest.instrumentRef !== capture.instrumentRef ||\n !channel ||\n !capture.channels.some((c) => c.channelId === p.channelId) ||\n channel.quantity !== \"normalized_echo_amplitude\" ||\n channel.unit !== \"1\"\n )\n issue(\n \"SONAR.CHANNEL\",\n \"/channelId\",\n \"Echo amplitude must select a channel in the acquisition's pinned instrument manifest with normalized_echo_amplitude quantity and unit 1.\"\n );\n if (p.acquisitionProductRef === p.receiveMaskAcquisitionProductRef)\n issue(\n \"SONAR.CAPTURE_ALIAS\",\n \"/receiveMaskAcquisitionProductRef\",\n \"Envelope and receive mask require distinct acquisition products.\"\n );\n for (const role of [\"amplitudes\", \"receiveMask\"] as const) {\n const acquisitionRef =\n role === \"amplitudes\"\n ? p.acquisitionProductRef\n : p.receiveMaskAcquisitionProductRef;\n const acquired = ctx.products.find(\n (product) => `product:${product.id}` === acquisitionRef\n ),\n product = obs.products.find(\n (product) => `product:${product.id}` === p.products[role]\n );\n const layout = sources.layouts.find(\n (layout) => layout.productRef === p.products[role]\n );\n if (\n !acquired ||\n acquired.kind !== \"raw\" ||\n acquired.acquisitionRef !== p.acquisitionRef ||\n !product ||\n product.kind !== \"raw\" ||\n !layout ||\n acquired.artifact.digest.value !== layout.digest.value ||\n acquired.artifact.byteLength !== layout.byteLength ||\n acquired.artifact.mediaType !== layout.mediaType\n )\n issue(\n \"SONAR.CAPTURE_BINDING\",\n `/products/${role}`,\n \"Both retained source products must bind to distinct raw artifacts from this acquisition, with matching bytes and media type.\"\n );\n }\n // Combine each declared decimal before rounding; e.g. 63*0.1+255*0.0001 is exactly 6.3255 seconds.\n const lastReceive = add(\n add(\n scaled(p.sampling.pingStepSeconds, p.sampling.pings - 1),\n decimal(String(p.sampling.delayStartSeconds))\n ),\n scaled(p.sampling.delayStepSeconds, p.sampling.delayBins - 1)\n );\n if (compareUtcInstants(p.timeOrigin, p.timeOrigin) === undefined)\n issue(\n \"SONAR.TIME_ORIGIN\",\n \"/timeOrigin\",\n \"Time origin must be a valid UTC instant.\"\n );\n else {\n if (\n capture?.time.state !== \"known\" ||\n capture.time.kind !== \"interval\" ||\n capture.time.timeScale !== \"UTC\"\n )\n issue(\n \"SONAR.ACQUISITION_TIME\",\n \"/acquisitionRef\",\n \"This profile requires a declared UTC acquisition interval.\"\n );\n else if (\n compareOffset(p.timeOrigin, { n: 0n, d: 1n }, capture.time.start) < 0 ||\n compareOffset(p.timeOrigin, lastReceive, capture.time.end) > 0\n )\n issue(\n \"SONAR.ACQUISITION_TIME\",\n \"/timeOrigin\",\n \"All ping origins and received delay samples must be within the acquisition interval.\"\n );\n const event = obs.eventTime;\n if (\n event.state !== \"known\" ||\n event.value.kind !== \"interval\" ||\n event.value.start.kind !== \"instant\" ||\n event.value.end.kind !== \"instant\" ||\n event.value.start.timeScale !== \"UTC\" ||\n event.value.end.timeScale !== \"UTC\"\n )\n issue(\n \"SONAR.OBSERVATION_TIME\",\n \"/observation/eventTime\",\n \"This profile requires a declared UTC observation interval.\"\n );\n else if (\n compareOffset(p.timeOrigin, { n: 0n, d: 1n }, event.value.start.value) <\n 0 ||\n compareOffset(p.timeOrigin, lastReceive, event.value.end.value) > 0\n )\n issue(\n \"SONAR.OBSERVATION_TIME\",\n \"/observation/eventTime\",\n \"Observation interval must contain the retained receive samples.\"\n );\n }\n if (result.issues.length) {\n result.checks.semantics = \"failed\";\n return result;\n }\n // Snapshot before awaiting digest validation; never decode mutable caller-owned bytes.\n const assets = new Map(\n [...(options.assets ?? [])].map(([ref, bytes]) => [\n ref,\n Uint8Array.from(bytes),\n ])\n );\n const sourceResult = await evaluateProductSourceSelection(obs, sources, {\n assets,\n });\n if (!sourceResult.success || sourceResult.checks.external !== \"passed\") {\n result.checks.sources = \"failed\";\n for (const entry of sourceResult.issues)\n issue(`SONAR.SOURCE.${entry.code}`, entry.pointer, entry.message);\n if (!result.issues.length)\n issue(\n \"SONAR.SOURCE_BYTES\",\n \"/products\",\n \"All retained source bytes are required for verification.\"\n );\n return result;\n }\n result.checks.sources = \"passed\";\n try {\n const products = readSonarProducts(p, sources.layouts, assets);\n result.data = { declaration: p, layouts: sources.layouts, products };\n result.checks.semantics = \"passed\";\n result.success = true;\n } catch (error) {\n issue(\"SONAR.CONTENT\", \"/products\", (error as Error).message);\n result.checks.semantics = \"failed\";\n }\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) =>\n z\n .string()\n .regex(new RegExp(`^${kind}:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\\\s\\\\S])`));\n/** Optional single-channel pressure capture with reproducible spectral-density windows. */\nexport const PassiveSonarProfileSchema = z.strictObject({\n kind: z.literal(\"passive_sonar_profile\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n observationId: id,\n contextId: id,\n sourceSelectionId: id,\n acquisitionRef: ref(\"acquisition\"),\n acquisitionProductRef: ref(\"product\"),\n sampleMaskAcquisitionProductRef: ref(\"product\"),\n channelId: id,\n processingRef: ref(\"process\"),\n timeOrigin: z.iso.datetime({ offset: true }),\n mode: z.literal(\"single_hydrophone_pressure\"),\n dataOrigin: z.enum([\"synthetic\", \"instrument\"]),\n sampling: z.strictObject({\n samples: z.number().int().min(1).max(16777216),\n sampleRateHz: z.number().int().positive().max(1000000000),\n }),\n transform: z.strictObject({\n kind: z.literal(\"one_sided_power_spectral_density\"),\n windowSamples: z.number().int().min(4).max(65536),\n hopSamples: z.number().int().positive().max(65536),\n window: z.literal(\"periodic_hann\"),\n detrend: z.literal(\"remove_arithmetic_mean_before_window\"),\n padding: z.literal(\"none_full_windows_only\"),\n scaling: z.literal(\"sum_squared_window_times_sample_rate\"),\n oneSided: z.literal(\"double_interior_bins_only\"),\n missingWindow: z.literal(\"unavailable_if_any_input_missing\"),\n }),\n display: z.strictObject({\n densityReferencePa2PerHz: z.literal(1e-12),\n logarithm: z.literal(\"10_log10_density_over_reference\"),\n zeroDensity: z.literal(\"negative_infinity_no_floor\"),\n }),\n availability: z.strictObject({\n unavailable: z.literal(0),\n available: z.literal(1),\n missingValue: z.literal(\"zero_storage_placeholder\"),\n }),\n products: z.strictObject({\n pressure: ref(\"product\"),\n sampleMask: ref(\"product\"),\n powerSpectralDensity: ref(\"product\"),\n frameMask: ref(\"product\"),\n }),\n});\nexport const PASSIVE_SONAR_PROFILE_SCHEMA_ID =\n \"urn:disclosureos:experimental:passive-sonar-profile:0.1.0\";\nexport const PASSIVE_SONAR_PROFILE = Object.freeze({\n id: \"urn:disclosureos:experimental:profile:passive-hydrophone-pressure\",\n version: \"0.1.0\",\n scope: \"single_channel_pressure_and_reproducible_spectral_density\",\n} as const);\nexport type PassiveSonarProfile = z.infer<typeof PassiveSonarProfileSchema>;\nexport function passiveSonarProfileJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(PassiveSonarProfileSchema, { target: \"draft-2020-12\" }),\n $id: PASSIVE_SONAR_PROFILE_SCHEMA_ID,\n };\n}\n","import {\n readProductSourceSelection,\n type ProductSourceLayout,\n} from \"./product-source-reader\";\n/** Minimal browser declaration. The evaluator additionally verifies document lineage and hashes. */\nexport interface PassiveSonarDeclaration {\n timeOrigin: string;\n sampling: { samples: number; sampleRateHz: number };\n transform: {\n kind: \"one_sided_power_spectral_density\";\n windowSamples: number;\n hopSamples: number;\n window: \"periodic_hann\";\n detrend: \"remove_arithmetic_mean_before_window\";\n padding: \"none_full_windows_only\";\n scaling: \"sum_squared_window_times_sample_rate\";\n oneSided: \"double_interior_bins_only\";\n missingWindow: \"unavailable_if_any_input_missing\";\n };\n display: {\n densityReferencePa2PerHz: 1e-12;\n logarithm: \"10_log10_density_over_reference\";\n zeroDensity: \"negative_infinity_no_floor\";\n };\n availability: {\n unavailable: 0;\n available: 1;\n missingValue: \"zero_storage_placeholder\";\n };\n products: {\n pressure: string;\n sampleMask: string;\n powerSpectralDensity: string;\n frameMask: string;\n };\n}\nexport interface PassiveSonarDecodedProducts {\n /** Storage values: sampleMask=0 indicates an unavailable sample, not measured silence. */\n pressure: number[];\n sampleMask: number[];\n /** Row-major window,frequency storage values, conditioned on frameMask. */\n powerSpectralDensity: number[];\n frameMask: number[];\n}\nconst validUtc = (value: string) => {\n const m =\n /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$/.exec(\n value\n );\n if (!m) return false;\n const year = Number(m[1]),\n month = Number(m[2]),\n day = Number(m[3]),\n offset = m[7]!;\n const leap = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n const days = [31, leap ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n return (\n month >= 1 &&\n month <= 12 &&\n day >= 1 &&\n day <= days[month - 1]! &&\n Number(m[4]) < 24 &&\n Number(m[5]) < 60 &&\n Number(m[6]) < 60 &&\n (offset === \"Z\" ||\n (Number(offset.slice(1, 3)) < 24 && Number(offset.slice(4, 6)) < 60)) &&\n Number.isFinite(Date.parse(value))\n );\n};\nexport function passiveSonarDimensions(p: PassiveSonarDeclaration) {\n return {\n frames:\n Math.floor(\n (p.sampling.samples - p.transform.windowSamples) /\n p.transform.hopSamples\n ) + 1,\n bins: p.transform.windowSamples / 2 + 1,\n };\n}\nexport function validatePassiveSonarDeclaration(\n p: PassiveSonarDeclaration\n): void {\n const s = p.sampling,\n t = p.transform,\n { frames, bins } = passiveSonarDimensions(p);\n if (\n !validUtc(p.timeOrigin) ||\n !Number.isSafeInteger(s.samples) ||\n s.samples < 4 ||\n s.samples > 16777216 ||\n !Number.isSafeInteger(s.sampleRateHz) ||\n s.sampleRateHz <= 0 ||\n s.sampleRateHz > 1e9 ||\n !Number.isSafeInteger(t.windowSamples) ||\n t.windowSamples < 4 ||\n t.windowSamples > 65536 ||\n (t.windowSamples & (t.windowSamples - 1)) !== 0 ||\n t.windowSamples > s.samples ||\n !Number.isSafeInteger(t.hopSamples) ||\n t.hopSamples < 1 ||\n t.hopSamples > t.windowSamples ||\n frames * bins > 16777216 ||\n frames * t.windowSamples > 33554432 ||\n t.kind !== \"one_sided_power_spectral_density\" ||\n t.window !== \"periodic_hann\" ||\n t.detrend !== \"remove_arithmetic_mean_before_window\" ||\n t.padding !== \"none_full_windows_only\" ||\n t.scaling !== \"sum_squared_window_times_sample_rate\" ||\n t.oneSided !== \"double_interior_bins_only\" ||\n t.missingWindow !== \"unavailable_if_any_input_missing\" ||\n p.display.densityReferencePa2PerHz !== 1e-12 ||\n p.display.logarithm !== \"10_log10_density_over_reference\" ||\n p.display.zeroDensity !== \"negative_infinity_no_floor\" ||\n p.availability.unavailable !== 0 ||\n p.availability.available !== 1 ||\n p.availability.missingValue !== \"zero_storage_placeholder\" ||\n new Set(Object.values(p.products)).size !== 4\n )\n throw new Error(\"Invalid passive pressure/spectral-density declaration.\");\n}\n/** Periodic Hann, frame mean removed before weighting. No zero padding; real one-sided PSD. */\nexport function computePassiveSonarSpectrum(\n samples: ArrayLike<number>,\n sampleRateHz: number\n): number[] {\n const n = samples.length;\n if (\n !Number.isSafeInteger(n) ||\n n < 4 ||\n n > 65536 ||\n (n & (n - 1)) !== 0 ||\n !Number.isFinite(sampleRateHz) ||\n sampleRateHz <= 0\n )\n throw new Error(\"Invalid spectral input.\");\n const real = new Float64Array(n),\n imag = new Float64Array(n);\n let mean = 0,\n energy = 0;\n for (let j = 0; j < n; j++) {\n if (!Number.isFinite(samples[j]))\n throw new Error(\"Nonfinite pressure input.\");\n mean += samples[j]! / n;\n }\n for (let j = 0; j < n; j++) {\n const w = 0.5 - 0.5 * Math.cos((2 * Math.PI * j) / n);\n real[j] = (samples[j]! - mean) * w;\n energy += w * w;\n }\n // In-place radix-2 FFT with explicit bit reversal.\n for (let i = 1, j = 0; i < n; i++) {\n let bit = n >> 1;\n for (; j & bit; bit >>= 1) j ^= bit;\n j ^= bit;\n if (i < j) {\n const swap = real[i]!;\n real[i] = real[j]!;\n real[j] = swap;\n }\n }\n for (let width = 2; width <= n; width *= 2)\n for (let start = 0; start < n; start += width)\n for (let j = 0; j < width / 2; j++) {\n const a = start + j,\n b = a + width / 2,\n angle = (-2 * Math.PI * j) / width,\n c = Math.cos(angle),\n s = Math.sin(angle);\n const r = real[b]! * c - imag[b]! * s,\n q = real[b]! * s + imag[b]! * c;\n real[b] = real[a]! - r;\n imag[b] = imag[a]! - q;\n real[a] = real[a]! + r;\n imag[a] = imag[a]! + q;\n }\n const density = Array.from(\n { length: n / 2 + 1 },\n (_, k) =>\n ((real[k]! ** 2 + imag[k]! ** 2) / (sampleRateHz * energy)) *\n (k === 0 || k === n / 2 ? 1 : 2)\n );\n if (density.some((v) => !Number.isFinite(v)))\n throw new Error(\"Spectral arithmetic overflow.\");\n return density;\n}\nexport function passiveSonarSample(p: PassiveSonarDeclaration, sample: number) {\n validatePassiveSonarDeclaration(p);\n if (\n !Number.isSafeInteger(sample) ||\n sample < 0 ||\n sample >= p.sampling.samples\n )\n throw new Error(\"Pressure sample is outside the retained array.\");\n return {\n sample,\n timeOffsetSeconds: sample / p.sampling.sampleRateHz,\n pressureByteOffset: sample * 4,\n sampleMaskByteOffset: sample,\n };\n}\nexport function passiveSonarBin(\n p: PassiveSonarDeclaration,\n frame: number,\n bin: number\n) {\n validatePassiveSonarDeclaration(p);\n const { frames, bins } = passiveSonarDimensions(p),\n n = p.transform.windowSamples,\n first = frame * p.transform.hopSamples,\n fs = p.sampling.sampleRateHz;\n if (\n !Number.isSafeInteger(frame) ||\n frame < 0 ||\n frame >= frames ||\n !Number.isSafeInteger(bin) ||\n bin < 0 ||\n bin >= bins\n )\n throw new Error(\"Spectral cell is outside the retained array.\");\n return {\n frame,\n bin,\n frequencyHz: (bin * fs) / n,\n timeOffsetSeconds: first / fs,\n centerOffsetSeconds: (first + n / 2) / fs,\n startSample: first,\n endSampleExclusive: first + n,\n lastSampleOffsetSeconds: (first + n - 1) / fs,\n endOffsetSeconds: (first + n) / fs,\n pressureByteOffset: first * 4,\n pressureByteLength: n * 4,\n sampleMaskByteOffset: first,\n sampleMaskByteLength: n,\n densityByteOffset: (frame * bins + bin) * 4,\n frameMaskByteOffset: frame,\n };\n}\nexport function passiveSonarDensityDb(\n p: PassiveSonarDeclaration,\n density: number\n): number {\n validatePassiveSonarDeclaration(p);\n if (!Number.isFinite(density) || density < 0)\n throw new Error(\"Invalid pressure spectral density.\");\n return density === 0\n ? -Infinity\n : 10 *\n (Math.log10(density) - Math.log10(p.display.densityReferencePa2PerHz));\n}\nconst requireLengths = (\n p: PassiveSonarDeclaration,\n data: PassiveSonarDecodedProducts\n) => {\n const { frames, bins } = passiveSonarDimensions(p);\n if (\n data.pressure.length !== p.sampling.samples ||\n data.sampleMask.length !== p.sampling.samples ||\n data.frameMask.length !== frames ||\n data.powerSpectralDensity.length !== frames * bins\n )\n throw new Error(\"Incomplete passive sonar products.\");\n};\nexport function readPassiveSonarSample(\n p: PassiveSonarDeclaration,\n data: PassiveSonarDecodedProducts,\n sample: number\n) {\n const selected = passiveSonarSample(p, sample);\n requireLengths(p, data);\n const mask = data.sampleMask[sample],\n pressure = data.pressure[sample];\n if (\n (mask !== 0 && mask !== 1) ||\n !Number.isFinite(pressure) ||\n (mask === 0 && pressure !== 0)\n )\n throw new Error(\"Invalid pressure sample or availability mask.\");\n return {\n ...selected,\n available: mask === 1,\n pressure: mask === 1 ? pressure! : null,\n };\n}\nexport function readPassiveSonarBin(\n p: PassiveSonarDeclaration,\n data: PassiveSonarDecodedProducts,\n frame: number,\n bin: number\n) {\n const selected = passiveSonarBin(p, frame, bin);\n requireLengths(p, data);\n const density =\n data.powerSpectralDensity[frame * passiveSonarDimensions(p).bins + bin],\n mask = data.frameMask[frame];\n if (\n (mask !== 0 && mask !== 1) ||\n density === undefined ||\n !Number.isFinite(density) ||\n density < 0 ||\n (mask === 0 && density !== 0)\n )\n throw new Error(\"Invalid spectral density or frame mask.\");\n return {\n ...selected,\n available: mask === 1,\n density: mask === 1 ? density : null,\n densityDb: mask === 1 ? passiveSonarDensityDb(p, density) : null,\n };\n}\n/** Validate and reproduce the complete PSD against exact retained waveform bytes.\n * This dependency-free reader does not authenticate hashes or acquisition bindings. */\nexport function readPassiveSonarProducts(\n p: PassiveSonarDeclaration,\n layouts: readonly ProductSourceLayout[],\n assets: ReadonlyMap<string, Uint8Array>\n): PassiveSonarDecodedProducts {\n validatePassiveSonarDeclaration(p);\n const { frames, bins } = passiveSonarDimensions(p),\n s = p.sampling,\n t = p.transform,\n decoded = {} as PassiveSonarDecodedProducts;\n for (const role of [\n \"pressure\",\n \"sampleMask\",\n \"powerSpectralDensity\",\n \"frameMask\",\n ] as const) {\n const matches = layouts.filter((l) => l.productRef === p.products[role]);\n if (matches.length !== 1)\n throw new Error(`Passive sonar ${role} requires one source layout.`);\n const layout = matches[0]!,\n bytes = assets.get(layout.productRef),\n mask = role === \"sampleMask\" || role === \"frameMask\",\n waveform = role === \"pressure\" || role === \"sampleMask\";\n const length = waveform\n ? s.samples\n : role === \"frameMask\"\n ? frames\n : frames * bins,\n size = mask ? 1 : 4;\n const quantity = {\n pressure: \"sound_pressure\",\n sampleMask: \"sample_availability\",\n powerSpectralDensity: \"sound_pressure_power_spectral_density\",\n frameMask: \"window_availability\",\n }[role];\n const unit = {\n pressure: \"Pa\",\n sampleMask: \"1\",\n powerSpectralDensity: \"Pa^2/Hz\",\n frameMask: \"1\",\n }[role];\n if (\n layout.kind !== \"binary_array\" ||\n layout.elementType !== (mask ? \"uint8\" : \"float32\") ||\n layout.byteOrder !== \"little\" ||\n layout.order !== \"row_major\" ||\n layout.byteOffset !== 0 ||\n layout.quantity !== quantity ||\n layout.unit !== unit ||\n !bytes ||\n bytes.byteLength !== length * size ||\n layout.byteLength !== bytes.byteLength\n )\n throw new Error(`Invalid passive sonar ${role} layout or bytes.`);\n const axis = layout.axes[0],\n frequency = layout.axes[1],\n numerator = waveform ? 1 : t.hopSamples;\n if (\n !axis ||\n axis.kind !== \"time\" ||\n axis.name !== (waveform ? \"sample\" : \"window_start\") ||\n axis.length !== (waveform ? s.samples : frames) ||\n axis.start !== p.timeOrigin ||\n !Number.isSafeInteger(axis.stepSeconds.numerator) ||\n axis.stepSeconds.numerator <= 0 ||\n !Number.isSafeInteger(axis.stepSeconds.denominator) ||\n axis.stepSeconds.denominator <= 0 ||\n BigInt(axis.stepSeconds.numerator) * BigInt(s.sampleRateHz) !==\n BigInt(numerator) * BigInt(axis.stepSeconds.denominator) ||\n layout.axes.length !== (role === \"powerSpectralDensity\" ? 2 : 1)\n )\n throw new Error(`Invalid passive sonar ${role} time axis.`);\n if (\n role === \"powerSpectralDensity\" &&\n (!frequency ||\n frequency.kind !== \"regular\" ||\n frequency.name !== \"frequency\" ||\n frequency.unit !== \"Hz\" ||\n frequency.length !== bins ||\n frequency.origin !== 0 ||\n frequency.step !== s.sampleRateHz / t.windowSamples)\n )\n throw new Error(\"Invalid passive sonar frequency axis.\");\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n decoded[role] = Array.from({ length }, (_, i) =>\n mask ? view.getUint8(i) : view.getFloat32(i * 4, true)\n );\n readProductSourceSelection(\n layout,\n {\n kind: \"array_element\",\n indices:\n role === \"powerSpectralDensity\"\n ? [frames - 1, bins - 1]\n : [length - 1],\n },\n bytes\n );\n }\n for (let sample = 0; sample < s.samples; sample++) {\n const v = decoded.pressure[sample]!,\n m = decoded.sampleMask[sample]!;\n if (!Number.isFinite(v) || (m !== 0 && m !== 1) || (m === 0 && v !== 0))\n throw new Error(`Invalid retained pressure cell ${sample}.`);\n }\n for (let frame = 0; frame < frames; frame++) {\n const start = frame * t.hopSamples,\n available = decoded.sampleMask\n .slice(start, start + t.windowSamples)\n .every((v) => v === 1),\n m = decoded.frameMask[frame];\n if (m !== Number(available))\n throw new Error(\n `Frame ${frame} availability disagrees with its exact input window.`\n );\n const expected = available\n ? computePassiveSonarSpectrum(\n decoded.pressure.slice(start, start + t.windowSamples),\n s.sampleRateHz\n )\n : undefined;\n for (let bin = 0; bin < bins; bin++) {\n const value = decoded.powerSpectralDensity[frame * bins + bin]!;\n if (!Number.isFinite(value) || value < 0 || (!available && value !== 0))\n throw new Error(`Invalid retained spectral cell ${frame}/${bin}.`);\n if (\n expected &&\n Math.abs(value - expected[bin]!) >\n Math.max(1e-25, Math.abs(expected[bin]!) * 1e-5)\n )\n throw new Error(\n `Spectral cell ${frame}/${bin} does not reproduce from its retained pressure window.`\n );\n }\n }\n return decoded;\n}\n","import { parseExperimentalObservation } from \"@disclosureos/records/experimental/v2\";\nimport { parseAcquisitionContext } from \"@disclosureos/instruments/experimental/v2\";\nimport {\n ProductSourceSelectionSchema,\n evaluateProductSourceSelection,\n} from \"./product-source-selection\";\nimport {\n PassiveSonarProfileSchema,\n PASSIVE_SONAR_PROFILE,\n type PassiveSonarProfile,\n} from \"./passive-sonar-profile-schema\";\nimport {\n readPassiveSonarProducts,\n validatePassiveSonarDeclaration,\n type PassiveSonarDecodedProducts,\n} from \"./passive-sonar-profile-reader\";\nimport type { ProductSourceLayout } from \"./product-source-reader\";\nexport interface PassiveSonarProfileResult {\n success: boolean;\n profile: typeof PASSIVE_SONAR_PROFILE;\n issues: { code: string; pointer: string; message: string }[];\n checks: {\n structure: \"passed\" | \"failed\";\n sources: \"passed\" | \"failed\" | \"not_checked\";\n semantics: \"passed\" | \"failed\" | \"not_checked\";\n reproduction: \"passed\" | \"failed\" | \"not_checked\";\n };\n scientific: \"not_checked\";\n physicalCalibration: \"not_checked\";\n localization: \"not_checked\";\n data?: {\n declaration: PassiveSonarProfile;\n layouts: ProductSourceLayout[];\n products: PassiveSonarDecodedProducts;\n };\n}\nconst epoch = (s: string) => {\n const f = /\\.(\\d+)(?=Z|[+-]\\d{2}:\\d{2}$)/.exec(s)?.[1] ?? \"\";\n const d = BigInt(10) ** BigInt(f.length);\n return {\n n:\n BigInt(Date.parse(s.replace(/\\.\\d+(?=Z|[+-]\\d{2}:\\d{2}$)/, \"\")) / 1000) *\n d +\n BigInt(f || \"0\"),\n d,\n };\n};\nconst compareOffset = (\n origin: string,\n n: number,\n d: number,\n boundary: string\n) => {\n const a = epoch(origin),\n b = epoch(boundary),\n rate = BigInt(d);\n const delta = (a.n * rate + BigInt(n) * a.d) * b.d - b.n * a.d * rate;\n return delta < BigInt(0) ? -1 : delta > BigInt(0) ? 1 : 0;\n};\nconst sameRefs = (a: readonly string[], b: readonly string[]) =>\n a.length === b.length &&\n new Set(a).size === a.length &&\n b.every((x) => a.includes(x));\n/** Validates bindings, exact time coverage, retained bytes and numerical PSD reproduction.\n * A successful result does not certify real pressure calibration or locate a sound source. */\nexport async function evaluatePassiveSonarProfile(\n observationInput: unknown,\n contextInput: unknown,\n selectionInput: unknown,\n profileInput: unknown,\n options: { assets?: ReadonlyMap<string, Uint8Array> } = {}\n): Promise<PassiveSonarProfileResult> {\n const result: PassiveSonarProfileResult = {\n success: false,\n profile: PASSIVE_SONAR_PROFILE,\n issues: [],\n checks: {\n structure: \"passed\",\n sources: \"not_checked\",\n semantics: \"not_checked\",\n reproduction: \"not_checked\",\n },\n scientific: \"not_checked\",\n physicalCalibration: \"not_checked\",\n localization: \"not_checked\",\n };\n const issue = (code: string, pointer: string, message: string) =>\n result.issues.push({ code, pointer, message });\n const parsed = PassiveSonarProfileSchema.safeParse(profileInput),\n observation = parseExperimentalObservation(observationInput),\n context = parseAcquisitionContext(contextInput),\n selection = ProductSourceSelectionSchema.safeParse(selectionInput);\n if (\n !parsed.success ||\n !observation.success ||\n !context.success ||\n !selection.success\n ) {\n result.checks.structure = \"failed\";\n issue(\n \"PASSIVE_SONAR.PREREQUISITE\",\n \"/\",\n \"Profile, observation, acquisition context and source selection must satisfy their contracts.\"\n );\n return result;\n }\n const p = parsed.data,\n obs = observation.data,\n ctx = context.data,\n sources = selection.data;\n if (\n p.observationId !== obs.id ||\n p.contextId !== ctx.id ||\n p.sourceSelectionId !== sources.id ||\n sources.observationId !== obs.id\n )\n issue(\n \"PASSIVE_SONAR.IDENTITY\",\n \"/\",\n \"Profile identifiers must select these exact documents.\"\n );\n try {\n validatePassiveSonarDeclaration(p);\n } catch (error) {\n issue(\"PASSIVE_SONAR.DECLARATION\", \"/sampling\", (error as Error).message);\n result.checks.semantics = \"failed\";\n return result;\n }\n const capture = ctx.acquisitions.find(\n (a) => `acquisition:${a.id}` === p.acquisitionRef\n ),\n manifestRef =\n capture?.manifest.state === \"pinned\" ? capture.manifest.ref : undefined,\n manifest = ctx.manifests.find((m) => `manifest:${m.id}` === manifestRef),\n channel = manifest?.channels.find((c) => c.id === p.channelId);\n if (\n !capture ||\n !manifest ||\n manifest.instrumentRef !== capture.instrumentRef ||\n !channel ||\n !capture.channels.some((c) => c.channelId === p.channelId) ||\n channel.quantity !== \"sound_pressure\" ||\n channel.unit !== \"Pa\"\n )\n issue(\n \"PASSIVE_SONAR.CHANNEL\",\n \"/channelId\",\n \"Pressure must select a sound_pressure channel with unit Pa in this acquisition's pinned manifest.\"\n );\n if (p.acquisitionProductRef === p.sampleMaskAcquisitionProductRef)\n issue(\n \"PASSIVE_SONAR.CAPTURE_ALIAS\",\n \"/sampleMaskAcquisitionProductRef\",\n \"Pressure and sample mask require distinct acquisition products.\"\n );\n for (const role of [\"pressure\", \"sampleMask\"] as const) {\n const acquisitionRef =\n role === \"pressure\"\n ? p.acquisitionProductRef\n : p.sampleMaskAcquisitionProductRef;\n const acquired = ctx.products.find(\n (v) => `product:${v.id}` === acquisitionRef\n ),\n product = obs.products.find(\n (v) => `product:${v.id}` === p.products[role]\n ),\n layout = sources.layouts.find((l) => l.productRef === p.products[role]);\n if (\n !acquired ||\n acquired.kind !== \"raw\" ||\n acquired.acquisitionRef !== p.acquisitionRef ||\n !product ||\n product.kind !== \"raw\" ||\n !layout ||\n acquired.artifact.digest.value !== layout.digest.value ||\n acquired.artifact.byteLength !== layout.byteLength ||\n acquired.artifact.mediaType !== layout.mediaType\n )\n issue(\n \"PASSIVE_SONAR.CAPTURE_BINDING\",\n `/products/${role}`,\n \"Pressure and sample mask must bind to raw retained artifacts from this acquisition, with matching digest, extent and media type.\"\n );\n }\n const processing = obs.processing.find(\n (v) => `process:${v.id}` === p.processingRef\n ),\n method = obs.methods.find(\n (m) => `method:${m.id}` === processing?.methodRef\n );\n if (\n !processing ||\n !method ||\n method.version !== processing.methodVersion ||\n !sameRefs(processing.inputRefs, [\n p.products.pressure,\n p.products.sampleMask,\n ]) ||\n !sameRefs(processing.outputRefs, [\n p.products.powerSpectralDensity,\n p.products.frameMask,\n ])\n )\n issue(\n \"PASSIVE_SONAR.PROCESSING\",\n \"/processingRef\",\n \"The declared processing activity must use exactly the pressure and sample mask and produce the density and frame mask with a matching method version.\"\n );\n for (const role of [\"powerSpectralDensity\", \"frameMask\"] as const) {\n const product = obs.products.find(\n (v) => `product:${v.id}` === p.products[role]\n );\n if (\n !product ||\n product.kind !== \"derived\" ||\n product.generatedBy !== p.processingRef\n )\n issue(\n \"PASSIVE_SONAR.DERIVED_BINDING\",\n `/products/${role}`,\n \"Spectral density and frame mask must be derived outputs of the declared processing activity.\"\n );\n }\n const inside = (start: string, end: string) =>\n compareOffset(p.timeOrigin, 0, 1, start) >= 0 &&\n compareOffset(\n p.timeOrigin,\n p.sampling.samples - 1,\n p.sampling.sampleRateHz,\n end\n ) <= 0;\n if (\n capture?.time.state !== \"known\" ||\n capture.time.kind !== \"interval\" ||\n capture.time.timeScale !== \"UTC\" ||\n !inside(capture.time.start, capture.time.end)\n )\n issue(\n \"PASSIVE_SONAR.ACQUISITION_TIME\",\n \"/timeOrigin\",\n \"Acquisition must declare a UTC interval containing every retained sample timestamp.\"\n );\n const event = obs.eventTime;\n if (\n event.state !== \"known\" ||\n event.value.kind !== \"interval\" ||\n event.value.start.kind !== \"instant\" ||\n event.value.end.kind !== \"instant\" ||\n event.value.start.timeScale !== \"UTC\" ||\n event.value.end.timeScale !== \"UTC\" ||\n !inside(event.value.start.value, event.value.end.value)\n )\n issue(\n \"PASSIVE_SONAR.OBSERVATION_TIME\",\n \"/observation/eventTime\",\n \"Observation UTC interval must contain every retained sample timestamp.\"\n );\n if (result.issues.length) {\n result.checks.semantics = \"failed\";\n return result;\n }\n const assets = new Map(\n [...(options.assets ?? [])].map(([ref, bytes]) => [\n ref,\n Uint8Array.from(bytes),\n ])\n );\n const sourceResult = await evaluateProductSourceSelection(obs, sources, {\n assets,\n });\n if (!sourceResult.success || sourceResult.checks.external !== \"passed\") {\n result.checks.sources = \"failed\";\n for (const entry of sourceResult.issues)\n issue(`PASSIVE_SONAR.SOURCE.${entry.code}`, entry.pointer, entry.message);\n if (!result.issues.length)\n issue(\n \"PASSIVE_SONAR.SOURCE_BYTES\",\n \"/products\",\n \"Every retained source product is required for verification.\"\n );\n return result;\n }\n result.checks.sources = \"passed\";\n try {\n const products = readPassiveSonarProducts(p, sources.layouts, assets);\n result.data = { declaration: p, layouts: sources.layouts, products };\n result.checks.semantics = \"passed\";\n result.checks.reproduction = \"passed\";\n result.success = true;\n } catch (error) {\n issue(\"PASSIVE_SONAR.CONTENT\", \"/products\", (error as Error).message);\n result.checks.semantics = \"failed\";\n result.checks.reproduction = \"failed\";\n }\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) =>\n z\n .string()\n .regex(new RegExp(`^${kind}:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\\\s\\\\S])`));\nconst coordinate = z.number().min(-1e7).max(1e7);\nconst vector = z.tuple([coordinate, coordinate, coordinate]);\n/** Optional retained discrete-return table and complete static raster pulse ledger. */\nexport const LidarProfileSchema = z.strictObject({\n kind: z.literal(\"lidar_point_cloud_profile\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n observationId: id,\n contextId: id,\n sourceSelectionId: id,\n acquisitionRef: ref(\"acquisition\"),\n channelId: id,\n acquisitionProducts: z.strictObject({\n pulses: ref(\"product\"),\n points: ref(\"product\"),\n }),\n dataOrigin: z.enum([\"synthetic\", \"instrument\"]),\n mode: z.literal(\"static_discrete_return_raster\"),\n coordinateFrame: z.strictObject({\n kind: z.literal(\"local_cartesian\"),\n axes: z.tuple([z.literal(\"east\"), z.literal(\"north\"), z.literal(\"up\")]),\n unit: z.literal(\"m\"),\n handedness: z.literal(\"right_handed\"),\n originDescription: z.string().min(1).max(2000),\n sensorOrigin: vector,\n georeferencing: z.literal(\"not_provided\"),\n }),\n scan: z.strictObject({\n rows: z.number().int().positive().max(4096),\n columns: z.number().int().positive().max(4096),\n pulses: z.number().int().positive().max(65536),\n points: z.number().int().min(0).max(983040),\n order: z.literal(\"row_major_index_not_time\"),\n aim: z.literal(\"direction_reference_not_surface_hit\"),\n }),\n geometry: z.strictObject({\n nearRangeM: z.number().positive().max(1e7),\n farRangeM: z.number().positive().max(1e7),\n rayToleranceM: z.number().positive().max(0.1),\n toleranceMeaning: z.literal(\n \"encoding_consistency_not_measurement_uncertainty\"\n ),\n bounds: z.strictObject({ min: vector, max: vector }),\n }),\n intensity: z.strictObject({\n kind: z.literal(\"normalized_return_amplitude\"),\n min: z.literal(0),\n max: z.literal(1),\n calibration: z.literal(\"not_calibrated_to_reflectance\"),\n }),\n classifications: z.strictObject({\n authority: z.enum([\"authored_annotations\", \"source_annotations\"]),\n method: z.string().min(1).max(4000),\n classes: z\n .array(\n z.strictObject({\n code: z.number().int().min(0).max(255),\n label: z.string().min(1).max(100),\n })\n )\n .min(1)\n .max(256),\n }),\n availability: z.strictObject({\n retained: z.literal(\"complete_return_group\"),\n noReturn: z.literal(\"zero_detected_returns_not_clear_space\"),\n unavailable: z.literal(\"unknown_return_count_empty_cell\"),\n noTiming: z.literal(\"no_per_pulse_timestamps\"),\n }),\n products: z.strictObject({ pulses: ref(\"product\"), points: ref(\"product\") }),\n});\nexport const LIDAR_PROFILE_SCHEMA_ID =\n \"urn:disclosureos:experimental:lidar-point-cloud-profile:0.1.0\";\nexport const LIDAR_PROFILE = Object.freeze({\n id: \"urn:disclosureos:experimental:profile:lidar-point-cloud\",\n version: \"0.1.0\",\n scope: \"static_discrete_returns_and_complete_pulse_ledger\",\n} as const);\nexport type LidarProfile = z.infer<typeof LidarProfileSchema>;\nexport function lidarProfileJsonSchema(): Record<string, unknown> {\n const schema = z.toJSONSchema(LidarProfileSchema, {\n target: \"draft-2020-12\",\n });\n // Match runtime fixed tuple extents; Zod emits prefixItems without lengths.\n const constrainTuples = (node: unknown): void => {\n if (node === null || typeof node !== \"object\") return;\n const value = node as Record<string, unknown>;\n if (Array.isArray(value.prefixItems)) {\n value.minItems = value.prefixItems.length;\n value.maxItems = value.prefixItems.length;\n }\n for (const child of Object.values(value)) constrainTuples(child);\n };\n constrainTuples(schema);\n return { ...schema, $id: LIDAR_PROFILE_SCHEMA_ID };\n}\n","import {\n readSourceCsv,\n type ProductSourceLayout,\n} from \"./product-source-reader\";\nexport interface LidarDeclaration {\n mode: \"static_discrete_return_raster\";\n coordinateFrame: {\n kind: \"local_cartesian\";\n axes: [\"east\", \"north\", \"up\"];\n unit: \"m\";\n handedness: \"right_handed\";\n originDescription: string;\n sensorOrigin: [number, number, number];\n georeferencing: \"not_provided\";\n };\n scan: {\n rows: number;\n columns: number;\n pulses: number;\n points: number;\n order: \"row_major_index_not_time\";\n aim: \"direction_reference_not_surface_hit\";\n };\n geometry: {\n nearRangeM: number;\n farRangeM: number;\n rayToleranceM: number;\n toleranceMeaning: \"encoding_consistency_not_measurement_uncertainty\";\n bounds: { min: [number, number, number]; max: [number, number, number] };\n };\n intensity: {\n kind: \"normalized_return_amplitude\";\n min: 0;\n max: 1;\n calibration: \"not_calibrated_to_reflectance\";\n };\n classifications: {\n authority: \"authored_annotations\" | \"source_annotations\";\n method: string;\n classes: { code: number; label: string }[];\n };\n availability: {\n retained: \"complete_return_group\";\n noReturn: \"zero_detected_returns_not_clear_space\";\n unavailable: \"unknown_return_count_empty_cell\";\n noTiming: \"no_per_pulse_timestamps\";\n };\n products: { pulses: string; points: string };\n}\nexport interface LidarSourceRow {\n byteOffset: number;\n byteLength: number;\n}\nexport interface LidarPulse {\n index: number;\n id: string;\n scanRow: number;\n scanColumn: number;\n aim: [number, number, number];\n status: \"retained\" | \"no_return\" | \"unavailable\";\n returnCount: number | null;\n pointIndices: number[];\n row: LidarSourceRow;\n}\nexport interface LidarPoint {\n index: number;\n pulseIndex: number;\n pulseId: string;\n returnNumber: number;\n returnCount: number;\n x: number;\n y: number;\n z: number;\n intensity: number;\n classCode: number;\n rangeM: number;\n row: LidarSourceRow;\n}\nexport interface LidarDecodedProducts {\n pulses: LidarPulse[];\n points: LidarPoint[];\n}\nexport const LIDAR_PULSE_COLUMNS = [\n \"pulse_id\",\n \"scan_row\",\n \"scan_column\",\n \"aim_x_m\",\n \"aim_y_m\",\n \"aim_z_m\",\n \"status\",\n \"return_count\",\n] as const;\nexport const LIDAR_POINT_COLUMNS = [\n \"pulse_id\",\n \"return_number\",\n \"return_count\",\n \"x_m\",\n \"y_m\",\n \"z_m\",\n \"intensity\",\n \"class_code\",\n] as const;\nconst integer = (v: number, min: number, max: number) =>\n Number.isSafeInteger(v) && v >= min && v <= max;\nconst finite = (v: number) => Number.isFinite(v) && Math.abs(v) <= 1e7;\nexport function validateLidarDeclaration(p: LidarDeclaration): void {\n const s = p.scan,\n g = p.geometry,\n f = p.coordinateFrame,\n c = p.classifications;\n if (\n p.mode !== \"static_discrete_return_raster\" ||\n f.kind !== \"local_cartesian\" ||\n f.unit !== \"m\" ||\n f.handedness !== \"right_handed\" ||\n f.georeferencing !== \"not_provided\" ||\n f.axes.join(\",\") !== \"east,north,up\" ||\n !f.originDescription.trim() ||\n f.sensorOrigin.length !== 3 ||\n !f.sensorOrigin.every(finite) ||\n !integer(s.rows, 1, 4096) ||\n !integer(s.columns, 1, 4096) ||\n !integer(s.pulses, 1, 65536) ||\n s.rows * s.columns !== s.pulses ||\n !integer(s.points, 0, 983040) ||\n s.points > s.pulses * 15 ||\n s.order !== \"row_major_index_not_time\" ||\n s.aim !== \"direction_reference_not_surface_hit\" ||\n !finite(g.nearRangeM) ||\n !finite(g.farRangeM) ||\n g.nearRangeM <= 0 ||\n g.farRangeM <= g.nearRangeM ||\n !Number.isFinite(g.rayToleranceM) ||\n g.rayToleranceM <= 0 ||\n g.rayToleranceM > 0.1 ||\n g.toleranceMeaning !== \"encoding_consistency_not_measurement_uncertainty\" ||\n g.bounds.min.length !== 3 ||\n g.bounds.max.length !== 3 ||\n !g.bounds.min.every(finite) ||\n !g.bounds.max.every(finite) ||\n g.bounds.min.some((v, i) => v >= g.bounds.max[i]!) ||\n p.intensity.kind !== \"normalized_return_amplitude\" ||\n p.intensity.min !== 0 ||\n p.intensity.max !== 1 ||\n p.intensity.calibration !== \"not_calibrated_to_reflectance\" ||\n ![\"authored_annotations\", \"source_annotations\"].includes(c.authority) ||\n !c.method.trim() ||\n !c.classes.length ||\n c.classes.length > 256 ||\n new Set(c.classes.map((v) => v.code)).size !== c.classes.length ||\n c.classes.some((v) => !integer(v.code, 0, 255) || !v.label.trim()) ||\n p.availability.retained !== \"complete_return_group\" ||\n p.availability.noReturn !== \"zero_detected_returns_not_clear_space\" ||\n p.availability.unavailable !== \"unknown_return_count_empty_cell\" ||\n p.availability.noTiming !== \"no_per_pulse_timestamps\" ||\n new Set(Object.values(p.products)).size !== 2\n )\n throw new Error(\"Invalid static lidar declaration.\");\n}\n// Offsets include CSV quoting but exclude the row terminator. ReadSourceCsv validates syntax.\nfunction rowSpans(bytes: Uint8Array): LidarSourceRow[] {\n const spans: LidarSourceRow[] = [];\n let start = 0,\n quoted = false;\n for (let i = 0; i < bytes.length; i++) {\n if (bytes[i] === 34) {\n if (quoted && bytes[i + 1] === 34) i++;\n else quoted = !quoted;\n } else if (!quoted && (bytes[i] === 10 || bytes[i] === 13)) {\n spans.push({ byteOffset: start, byteLength: i - start });\n if (bytes[i] === 13 && bytes[i + 1] === 10) i++;\n start = i + 1;\n }\n }\n if (start < bytes.length)\n spans.push({ byteOffset: start, byteLength: bytes.length - start });\n return spans.slice(1);\n}\nfunction table(\n layouts: readonly ProductSourceLayout[],\n assets: ReadonlyMap<string, Uint8Array>,\n ref: string,\n columns: readonly string[],\n count: number\n) {\n const matches = layouts.filter((l) => l.productRef === ref);\n const layout = matches[0],\n bytes = assets.get(ref);\n if (\n matches.length !== 1 ||\n !layout ||\n layout.kind !== \"csv_table\" ||\n layout.mediaType !== \"text/csv\" ||\n layout.encoding !== \"utf-8\" ||\n layout.delimiter !== \",\" ||\n layout.header !== true ||\n layout.partition ||\n layout.sample ||\n layout.rowCount !== count ||\n layout.columns.join(\",\") !== columns.join(\",\") ||\n !bytes ||\n bytes.byteLength !== layout.byteLength\n )\n throw new Error(`Invalid or absent lidar table ${ref}.`);\n const rows = readSourceCsv(bytes),\n header = rows.shift();\n if (\n header?.join(\",\") !== columns.join(\",\") ||\n rows.length !== count ||\n rows.some((r) => r.length !== columns.length)\n )\n throw new Error(`Unexpected lidar table rows or header ${ref}.`);\n const spans = rowSpans(bytes);\n if (spans.length !== count)\n throw new Error(\"CSV source row offsets are inconsistent.\");\n return { rows, spans };\n}\nconst number = (text: string) => {\n if (!/^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(?![\\s\\S])/.test(text))\n throw new Error(\"Lidar numeric cell is empty or malformed.\");\n const value = Number(text);\n if (!finite(value))\n throw new Error(\"Lidar numeric value is not finite or exceeds bounds.\");\n return value;\n};\n/** Reads retained bytes, complete return groups and ray geometry. Hash and document linkage\n * checks belong to evaluateLidarProfile; classifications are never inferred here. */\nexport function readLidarProducts(\n p: LidarDeclaration,\n layouts: readonly ProductSourceLayout[],\n assets: ReadonlyMap<string, Uint8Array>\n): LidarDecodedProducts {\n validateLidarDeclaration(p);\n const a = table(\n layouts,\n assets,\n p.products.pulses,\n LIDAR_PULSE_COLUMNS,\n p.scan.pulses\n ),\n b = table(\n layouts,\n assets,\n p.products.points,\n LIDAR_POINT_COLUMNS,\n p.scan.points\n );\n const pulseMap = new Map<string, number>(),\n origin = p.coordinateFrame.sensorOrigin;\n const inside = (v: number, i: number) =>\n v >= p.geometry.bounds.min[i]! && v <= p.geometry.bounds.max[i]!;\n const pulses: LidarPulse[] = a.rows.map((cells, index) => {\n const [id, row, column, x, y, z, status, count] = cells as [\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string\n ];\n if (!/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/.test(id) || pulseMap.has(id))\n throw new Error(\"Duplicate or invalid pulse identifier.\");\n const scanRow = number(row),\n scanColumn = number(column),\n aim: [number, number, number] = [number(x), number(y), number(z)];\n const returnCount = count === \"\" ? null : number(count);\n if (\n scanRow !== Math.floor(index / p.scan.columns) ||\n scanColumn !== index % p.scan.columns ||\n !aim.every(inside) ||\n Math.hypot(...aim.map((v, i) => v - origin[i]!)) < p.geometry.nearRangeM\n )\n throw new Error(\"Pulse grid or aim reference is inconsistent.\");\n if (\n ![\"retained\", \"no_return\", \"unavailable\"].includes(status) ||\n (status === \"retained\" &&\n (returnCount === null || !integer(returnCount, 1, 15))) ||\n (status === \"no_return\" && returnCount !== 0) ||\n (status === \"unavailable\" && returnCount !== null)\n )\n throw new Error(\"Pulse status and return count are inconsistent.\");\n pulseMap.set(id, index);\n return {\n index,\n id,\n scanRow,\n scanColumn,\n aim,\n status: status as LidarPulse[\"status\"],\n returnCount,\n pointIndices: [],\n row: a.spans[index]!,\n };\n });\n const classes = new Set(p.classifications.classes.map((c) => c.code));\n const points: LidarPoint[] = b.rows.map((cells, index) => {\n const [pulseId, n, count, xs, ys, zs, amplitude, classification] =\n cells as [string, string, string, string, string, string, string, string];\n const pulseIndex = pulseMap.get(pulseId),\n pulse = pulseIndex === undefined ? undefined : pulses[pulseIndex];\n if (pulseIndex === undefined || !pulse || pulse.status !== \"retained\")\n throw new Error(\"Point does not belong to a retained pulse.\");\n const returnNumber = number(n),\n returnCount = number(count),\n x = number(xs),\n y = number(ys),\n z = number(zs),\n intensity = number(amplitude),\n classCode = number(classification);\n if (\n !integer(returnNumber, 1, 15) ||\n returnCount !== pulse.returnCount ||\n returnNumber !== pulse.pointIndices.length + 1 ||\n intensity < 0 ||\n intensity > 1 ||\n !classes.has(classCode) ||\n ![x, y, z].every(inside)\n )\n throw new Error(\n \"Invalid lidar return group, class, intensity or coordinate.\"\n );\n const d = [x - origin[0], y - origin[1], z - origin[2]],\n direction = pulse.aim.map((v, i) => v - origin[i]!),\n norm = Math.hypot(...direction),\n rangeM = Math.hypot(...d),\n along = d.reduce((sum, v, i) => sum + (v * direction[i]!) / norm, 0),\n residual = Math.hypot(\n ...d.map((v, i) => v - (along * direction[i]!) / norm)\n );\n if (\n rangeM < p.geometry.nearRangeM ||\n rangeM > p.geometry.farRangeM ||\n along <= 0 ||\n residual > p.geometry.rayToleranceM\n )\n throw new Error(\"Point lies outside the declared range or pulse ray.\");\n pulse.pointIndices.push(index);\n return {\n index,\n pulseIndex,\n pulseId,\n returnNumber,\n returnCount,\n x,\n y,\n z,\n intensity,\n classCode,\n rangeM,\n row: b.spans[index]!,\n };\n });\n for (const pulse of pulses) {\n if (pulse.pointIndices.length !== (pulse.returnCount ?? 0))\n throw new Error(\"Incomplete lidar return group.\");\n for (let i = 1; i < pulse.pointIndices.length; i++)\n if (\n points[pulse.pointIndices[i]!]!.rangeM <=\n points[pulse.pointIndices[i - 1]!]!.rangeM\n )\n throw new Error(\"Lidar returns are not in increasing slant range.\");\n }\n return { pulses, points };\n}\n","import { parseExperimentalObservation } from \"@disclosureos/records/experimental/v2\";\nimport { parseAcquisitionContext } from \"@disclosureos/instruments/experimental/v2\";\nimport {\n ProductSourceSelectionSchema,\n evaluateProductSourceSelection,\n} from \"./product-source-selection\";\nimport {\n LidarProfileSchema,\n LIDAR_PROFILE,\n type LidarProfile,\n} from \"./lidar-profile-schema\";\nimport {\n readLidarProducts,\n validateLidarDeclaration,\n type LidarDecodedProducts,\n} from \"./lidar-profile-reader\";\nimport type { ProductSourceLayout } from \"./product-source-reader\";\nexport interface LidarProfileResult {\n success: boolean;\n profile: typeof LIDAR_PROFILE;\n issues: { code: string; pointer: string; message: string }[];\n checks: {\n structure: \"passed\" | \"failed\";\n sources: \"passed\" | \"failed\" | \"not_checked\";\n semantics: \"passed\" | \"failed\" | \"not_checked\";\n };\n scientific: \"not_checked\";\n physicalCalibration: \"not_checked\";\n classificationAccuracy: \"not_checked\";\n georeferencing: \"not_checked\";\n data?: {\n declaration: LidarProfile;\n layouts: ProductSourceLayout[];\n products: LidarDecodedProducts;\n };\n}\n/** Verifies exact acquisition and product bindings, retained table bytes, return groups and\n * declared local ray geometry. This does not certify physical accuracy or classifications. */\nexport async function evaluateLidarProfile(\n observationInput: unknown,\n contextInput: unknown,\n selectionInput: unknown,\n profileInput: unknown,\n options: { assets?: ReadonlyMap<string, Uint8Array> } = {}\n): Promise<LidarProfileResult> {\n const result: LidarProfileResult = {\n success: false,\n profile: LIDAR_PROFILE,\n issues: [],\n checks: {\n structure: \"passed\",\n sources: \"not_checked\",\n semantics: \"not_checked\",\n },\n scientific: \"not_checked\",\n physicalCalibration: \"not_checked\",\n classificationAccuracy: \"not_checked\",\n georeferencing: \"not_checked\",\n };\n const issue = (code: string, pointer: string, message: string) =>\n result.issues.push({ code, pointer, message });\n const parsed = LidarProfileSchema.safeParse(profileInput),\n observation = parseExperimentalObservation(observationInput),\n context = parseAcquisitionContext(contextInput),\n selection = ProductSourceSelectionSchema.safeParse(selectionInput);\n if (\n !parsed.success ||\n !observation.success ||\n !context.success ||\n !selection.success\n ) {\n result.checks.structure = \"failed\";\n issue(\n \"LIDAR.PREREQUISITE\",\n \"/\",\n \"Profile, observation, acquisition context and source selection must satisfy their contracts.\"\n );\n return result;\n }\n const p = parsed.data,\n obs = observation.data,\n ctx = context.data,\n sources = selection.data;\n if (\n p.observationId !== obs.id ||\n p.contextId !== ctx.id ||\n p.sourceSelectionId !== sources.id ||\n sources.observationId !== obs.id\n )\n issue(\n \"LIDAR.IDENTITY\",\n \"/\",\n \"Profile identifiers must select these exact documents.\"\n );\n try {\n validateLidarDeclaration(p);\n } catch (error) {\n issue(\"LIDAR.DECLARATION\", \"/\", (error as Error).message);\n result.checks.semantics = \"failed\";\n return result;\n }\n if (\n p.dataOrigin === \"synthetic\" &&\n p.classifications.authority !== \"authored_annotations\"\n )\n issue(\n \"LIDAR.CLASSIFICATION_ORIGIN\",\n \"/classifications/authority\",\n \"Synthetic examples must identify their class labels as authored annotations.\"\n );\n const capture = ctx.acquisitions.find(\n (a) => `acquisition:${a.id}` === p.acquisitionRef\n ),\n manifestRef =\n capture?.manifest.state === \"pinned\" ? capture.manifest.ref : undefined,\n manifest = ctx.manifests.find((m) => `manifest:${m.id}` === manifestRef),\n channel = manifest?.channels.find((c) => c.id === p.channelId);\n if (\n !capture ||\n !manifest ||\n manifest.instrumentRef !== capture.instrumentRef ||\n !channel ||\n !capture.channels.some((c) => c.channelId === p.channelId) ||\n channel.quantity !== \"lidar_return_position\" ||\n channel.unit !== \"m\"\n )\n issue(\n \"LIDAR.CHANNEL\",\n \"/channelId\",\n \"Return positions must select a lidar_return_position channel in metres in this acquisition's pinned manifest.\"\n );\n if (new Set(Object.values(p.acquisitionProducts)).size !== 2)\n issue(\n \"LIDAR.CAPTURE_ALIAS\",\n \"/acquisitionProducts\",\n \"Pulse ledger and return table require distinct acquisition products.\"\n );\n for (const role of [\"pulses\", \"points\"] as const) {\n const acquired = ctx.products.find(\n (v) => `product:${v.id}` === p.acquisitionProducts[role]\n ),\n product = obs.products.find(\n (v) => `product:${v.id}` === p.products[role]\n ),\n layout = sources.layouts.find((l) => l.productRef === p.products[role]);\n if (\n !acquired ||\n acquired.kind !== \"raw\" ||\n acquired.acquisitionRef !== p.acquisitionRef ||\n !product ||\n product.kind !== \"raw\" ||\n !layout ||\n acquired.artifact.digest.value !== layout.digest.value ||\n acquired.artifact.byteLength !== layout.byteLength ||\n acquired.artifact.mediaType !== layout.mediaType\n )\n issue(\n \"LIDAR.CAPTURE_BINDING\",\n `/products/${role}`,\n \"The retained source tables must bind to raw artifacts from this acquisition with matching digest, extent and media type.\"\n );\n }\n if (result.issues.length) {\n result.checks.semantics = \"failed\";\n return result;\n }\n const assets = new Map(\n [...(options.assets ?? [])].map(([ref, bytes]) => [\n ref,\n Uint8Array.from(bytes),\n ])\n );\n const sourceResult = await evaluateProductSourceSelection(obs, sources, {\n assets,\n });\n if (!sourceResult.success || sourceResult.checks.external !== \"passed\") {\n result.checks.sources = \"failed\";\n for (const entry of sourceResult.issues)\n issue(`LIDAR.SOURCE.${entry.code}`, entry.pointer, entry.message);\n if (!result.issues.length)\n issue(\n \"LIDAR.SOURCE_BYTES\",\n \"/products\",\n \"Every retained source table is required for verification.\"\n );\n return result;\n }\n result.checks.sources = \"passed\";\n try {\n const products = readLidarProducts(p, sources.layouts, assets);\n result.data = { declaration: p, layouts: sources.layouts, products };\n result.checks.semantics = \"passed\";\n result.success = true;\n } catch (error) {\n issue(\"LIDAR.CONTENT\", \"/products\", (error as Error).message);\n result.checks.semantics = \"failed\";\n }\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) =>\n z\n .string()\n .regex(new RegExp(`^${kind}:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\\\s\\\\S])`));\nconst finite = z.number().min(-1e9).max(1e9);\n/** Optional north-up WGS84 UTM surface-reflectance source cube and quality grid. */\nexport const SatelliteRasterProfileSchema = z.strictObject({\n kind: z.literal(\"satellite_raster_profile\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n observationId: id,\n contextId: id,\n sourceSelectionId: id,\n acquisitionRef: ref(\"acquisition\"),\n channelId: id,\n acquisitionProducts: z.strictObject({\n reflectance: ref(\"product\"),\n quality: ref(\"product\"),\n }),\n dataOrigin: z.enum([\"synthetic\", \"instrument\"]),\n mode: z.literal(\"north_up_multispectral_reflectance\"),\n grid: z.strictObject({\n rows: z.number().int().positive().max(4096),\n columns: z.number().int().positive().max(4096),\n crs: z.strictObject({\n kind: z.literal(\"wgs84_utm\"),\n epsg: z.string().regex(/^EPSG:32[67][0-6][0-9](?![\\s\\S])/),\n zone: z.number().int().min(1).max(60),\n hemisphere: z.enum([\"north\", \"south\"]),\n unit: z.literal(\"m\"),\n }),\n transform: z.tuple([\n finite,\n z.number().positive().max(1e5),\n z.literal(0),\n finite,\n z.literal(0),\n z.number().negative().min(-1e5),\n ]),\n pixelInterpretation: z.literal(\"area\"),\n registration: z.enum([\n \"authored_grid_not_surveyed\",\n \"source_declared_not_verified\",\n ]),\n }),\n bands: z\n .array(\n z.strictObject({\n id,\n label: z.string().min(1).max(100),\n centerWavelengthNm: z.number().positive().max(1e6),\n wavelengthMeaning: z.literal(\"nominal_center_not_response_function\"),\n scale: z.number().positive().max(100),\n offset: z.number().min(-100).max(100),\n nodata: z.number().int().min(0).max(65535),\n validRange: z.tuple([\n z.number().min(-100).max(100),\n z.number().min(-100).max(100),\n ]),\n })\n )\n .min(2)\n .max(16),\n radiometry: z.strictObject({\n quantity: z.literal(\"surface_reflectance\"),\n unit: z.literal(\"1\"),\n formula: z.literal(\"dn_times_scale_plus_offset\"),\n calibration: z.literal(\"not_verified\"),\n }),\n quality: z.strictObject({\n authority: z.enum([\"authored_annotations\", \"source_annotations\"]),\n method: z.string().min(1).max(4000),\n codes: z.strictObject({\n clear: z.literal(0),\n cloud: z.literal(1),\n shadow: z.literal(2),\n nodata: z.literal(3),\n }),\n scope: z.literal(\"whole_pixel\"),\n interpretation: z.literal(\"source_annotation_not_accuracy_certification\"),\n }),\n vegetationIndex: z.strictObject({\n redBandId: id,\n nearInfraredBandId: id,\n method: z.literal(\"scaled_nir_minus_red_over_sum\"),\n qualityPolicy: z.literal(\"clear_nonnegative_nonzero_sum_only\"),\n interpretation: z.literal(\"spectral_index_not_land_cover_classification\"),\n }),\n products: z.strictObject({\n reflectance: ref(\"product\"),\n quality: ref(\"product\"),\n }),\n});\nexport const SATELLITE_RASTER_PROFILE_SCHEMA_ID =\n \"urn:disclosureos:experimental:satellite-raster-profile:0.1.0\";\nexport const SATELLITE_RASTER_PROFILE = Object.freeze({\n id: \"urn:disclosureos:experimental:profile:satellite-raster\",\n version: \"0.1.0\",\n scope: \"north_up_utm_multispectral_reflectance_and_pixel_quality\",\n} as const);\nexport type SatelliteRasterProfile = z.infer<\n typeof SatelliteRasterProfileSchema\n>;\nexport function satelliteRasterProfileJsonSchema(): Record<string, unknown> {\n const schema = z.toJSONSchema(SatelliteRasterProfileSchema, {\n target: \"draft-2020-12\",\n });\n const constrain = (node: unknown): void => {\n if (node === null || typeof node !== \"object\") return;\n const value = node as Record<string, unknown>;\n if (Array.isArray(value.prefixItems)) {\n value.minItems = value.prefixItems.length;\n value.maxItems = value.prefixItems.length;\n }\n for (const child of Object.values(value)) constrain(child);\n };\n constrain(schema);\n return { ...schema, $id: SATELLITE_RASTER_PROFILE_SCHEMA_ID };\n}\n","import {\n readProductSourceSelection,\n type ProductSourceLayout,\n} from \"./product-source-reader\";\nexport interface SatelliteRasterBand {\n id: string;\n label: string;\n centerWavelengthNm: number;\n wavelengthMeaning: \"nominal_center_not_response_function\";\n scale: number;\n offset: number;\n nodata: number;\n validRange: [number, number];\n}\nexport interface SatelliteRasterDeclaration {\n mode: \"north_up_multispectral_reflectance\";\n grid: {\n rows: number;\n columns: number;\n crs: {\n kind: \"wgs84_utm\";\n epsg: string;\n zone: number;\n hemisphere: \"north\" | \"south\";\n unit: \"m\";\n };\n transform: [number, number, 0, number, 0, number];\n pixelInterpretation: \"area\";\n registration: \"authored_grid_not_surveyed\" | \"source_declared_not_verified\";\n };\n bands: SatelliteRasterBand[];\n radiometry: {\n quantity: \"surface_reflectance\";\n unit: \"1\";\n formula: \"dn_times_scale_plus_offset\";\n calibration: \"not_verified\";\n };\n quality: {\n authority: \"authored_annotations\" | \"source_annotations\";\n method: string;\n codes: { clear: 0; cloud: 1; shadow: 2; nodata: 3 };\n scope: \"whole_pixel\";\n interpretation: \"source_annotation_not_accuracy_certification\";\n };\n vegetationIndex: {\n redBandId: string;\n nearInfraredBandId: string;\n method: \"scaled_nir_minus_red_over_sum\";\n qualityPolicy: \"clear_nonnegative_nonzero_sum_only\";\n interpretation: \"spectral_index_not_land_cover_classification\";\n };\n products: { reflectance: string; quality: string };\n}\nexport type SatelliteRasterQuality = \"clear\" | \"cloud\" | \"shadow\" | \"nodata\";\nexport interface SatelliteRasterCell {\n index: number;\n row: number;\n column: number;\n easting: number;\n northing: number;\n qualityCode: number;\n quality: SatelliteRasterQuality;\n dn: number[];\n reflectance: (number | null)[];\n byteOffsets: number[];\n qualityByteOffset: number;\n ndvi: number | null;\n ndviReason:\n | \"valid\"\n | \"quality_excluded\"\n | \"nodata\"\n | \"zero_denominator\"\n | \"negative_reflectance\";\n}\nexport interface SatelliteRasterDecodedProducts {\n cells: SatelliteRasterCell[];\n}\nconst integer = (v: number, min: number, max: number) =>\n Number.isSafeInteger(v) && v >= min && v <= max;\nconst bounded = (v: number, min: number, max: number) =>\n Number.isFinite(v) && v >= min && v <= max;\nexport function validateSatelliteRasterDeclaration(\n p: SatelliteRasterDeclaration\n): void {\n const g = p.grid,\n b = p.bands,\n q = p.quality,\n r = p.radiometry,\n n = p.vegetationIndex;\n if (\n p.mode !== \"north_up_multispectral_reflectance\" ||\n !integer(g.rows, 1, 4096) ||\n !integer(g.columns, 1, 4096) ||\n g.rows * g.columns > 262144 ||\n g.crs.kind !== \"wgs84_utm\" ||\n !integer(g.crs.zone, 1, 60) ||\n ![\"north\", \"south\"].includes(g.crs.hemisphere) ||\n g.crs.unit !== \"m\" ||\n g.crs.epsg !==\n `EPSG:${(g.crs.hemisphere === \"north\" ? 32600 : 32700) + g.crs.zone}` ||\n g.transform.length !== 6 ||\n !g.transform.every((v) => bounded(v, -1e9, 1e9)) ||\n g.transform[1] <= 0 ||\n g.transform[1] > 1e5 ||\n g.transform[5] >= 0 ||\n g.transform[5] < -1e5 ||\n g.transform[2] !== 0 ||\n g.transform[4] !== 0 ||\n g.pixelInterpretation !== \"area\" ||\n ![\"authored_grid_not_surveyed\", \"source_declared_not_verified\"].includes(\n g.registration\n ) ||\n b.length < 2 ||\n b.length > 16 ||\n new Set(b.map((v) => v.id)).size !== b.length ||\n b.some(\n (v) =>\n !v.id.trim() ||\n !v.label.trim() ||\n !bounded(v.centerWavelengthNm, Number.MIN_VALUE, 1e6) ||\n v.wavelengthMeaning !== \"nominal_center_not_response_function\" ||\n !bounded(v.scale, Number.MIN_VALUE, 100) ||\n !bounded(v.offset, -100, 100) ||\n !integer(v.nodata, 0, 65535) ||\n v.validRange.length !== 2 ||\n !v.validRange.every((x) => bounded(x, -100, 100)) ||\n v.validRange[0] >= v.validRange[1]\n ) ||\n r.quantity !== \"surface_reflectance\" ||\n r.unit !== \"1\" ||\n r.formula !== \"dn_times_scale_plus_offset\" ||\n r.calibration !== \"not_verified\" ||\n ![\"authored_annotations\", \"source_annotations\"].includes(q.authority) ||\n !q.method.trim() ||\n q.codes.clear !== 0 ||\n q.codes.cloud !== 1 ||\n q.codes.shadow !== 2 ||\n q.codes.nodata !== 3 ||\n q.scope !== \"whole_pixel\" ||\n q.interpretation !== \"source_annotation_not_accuracy_certification\" ||\n n.method !== \"scaled_nir_minus_red_over_sum\" ||\n n.qualityPolicy !== \"clear_nonnegative_nonzero_sum_only\" ||\n n.interpretation !== \"spectral_index_not_land_cover_classification\" ||\n n.redBandId === n.nearInfraredBandId ||\n !b.some((v) => v.id === n.redBandId) ||\n !b.some((v) => v.id === n.nearInfraredBandId) ||\n p.products.reflectance === p.products.quality\n )\n throw new Error(\"Invalid satellite raster declaration.\");\n const red = b.find((v) => v.id === n.redBandId)!,\n nir = b.find((v) => v.id === n.nearInfraredBandId)!;\n if (\n red.centerWavelengthNm < 600 ||\n red.centerWavelengthNm > 750 ||\n nir.centerWavelengthNm < 750 ||\n nir.centerWavelengthNm > 1400 ||\n red.centerWavelengthNm >= nir.centerWavelengthNm\n )\n throw new Error(\n \"NDVI bands must identify red and near-infrared wavelengths.\"\n );\n}\n/** Projected cell footprint; these are grid coordinates, not a surveyed accuracy claim. */\nexport function satelliteCellBounds(\n p: SatelliteRasterDeclaration,\n row: number,\n column: number\n): { west: number; east: number; south: number; north: number } {\n if (\n !integer(row, 0, p.grid.rows - 1) ||\n !integer(column, 0, p.grid.columns - 1)\n )\n throw new Error(\"Satellite pixel is outside the grid.\");\n const [x, w, , y, , h] = p.grid.transform;\n return {\n west: x + column * w,\n east: x + (column + 1) * w,\n north: y + row * h,\n south: y + (row + 1) * h,\n };\n}\nfunction array(\n p: SatelliteRasterDeclaration,\n layouts: readonly ProductSourceLayout[],\n assets: ReadonlyMap<string, Uint8Array>,\n role: \"reflectance\" | \"quality\"\n) {\n const matches = layouts.filter((v) => v.productRef === p.products[role]),\n layout = matches[0],\n bytes = assets.get(p.products[role]);\n const cube = role === \"reflectance\",\n lengths = cube\n ? [p.bands.length, p.grid.rows, p.grid.columns]\n : [p.grid.rows, p.grid.columns],\n names = cube ? [\"band\", \"row\", \"column\"] : [\"row\", \"column\"];\n if (\n matches.length !== 1 ||\n !layout ||\n layout.kind !== \"binary_array\" ||\n layout.elementType !== (cube ? \"uint16\" : \"uint8\") ||\n layout.byteOrder !== \"little\" ||\n layout.order !== \"row_major\" ||\n layout.byteOffset !== 0 ||\n layout.mediaType !== \"application/octet-stream\" ||\n layout.quantity !==\n (cube ? \"surface_reflectance_dn\" : \"pixel_quality_code\") ||\n layout.unit !== (cube ? \"DN\" : \"code\") ||\n layout.axes.length !== lengths.length ||\n layout.axes.some(\n (a, i) =>\n a.kind !== \"index\" ||\n a.name !== names[i] ||\n a.length !== lengths[i] ||\n a.firstIndex !== 0\n ) ||\n layout.byteLength !== lengths.reduce((a, b) => a * b, 1) * (cube ? 2 : 1) ||\n !bytes ||\n bytes.byteLength !== layout.byteLength\n )\n throw new Error(`Invalid or absent satellite ${role} array.`);\n return { layout, bytes };\n}\n/** Parses all retained pixels. Source integrity and document bindings belong to the evaluator. */\nexport function readSatelliteRasterProducts(\n p: SatelliteRasterDeclaration,\n layouts: readonly ProductSourceLayout[],\n assets: ReadonlyMap<string, Uint8Array>\n): SatelliteRasterDecodedProducts {\n validateSatelliteRasterDeclaration(p);\n const cube = array(p, layouts, assets, \"reflectance\"),\n quality = array(p, layouts, assets, \"quality\"),\n cells: SatelliteRasterCell[] = [],\n names: SatelliteRasterQuality[] = [\"clear\", \"cloud\", \"shadow\", \"nodata\"];\n const red = p.bands.findIndex((v) => v.id === p.vegetationIndex.redBandId),\n nir = p.bands.findIndex(\n (v) => v.id === p.vegetationIndex.nearInfraredBandId\n );\n for (let row = 0; row < p.grid.rows; row++)\n for (let column = 0; column < p.grid.columns; column++) {\n const q = readProductSourceSelection(\n quality.layout,\n { kind: \"array_element\", indices: [row, column] },\n quality.bytes\n ),\n code = q.value!;\n if (!integer(code, 0, 3))\n throw new Error(\"Unknown satellite quality code.\");\n const dn: number[] = [],\n reflectance: (number | null)[] = [],\n byteOffsets: number[] = [];\n for (let band = 0; band < p.bands.length; band++) {\n const b = p.bands[band]!,\n s = readProductSourceSelection(\n cube.layout,\n { kind: \"array_element\", indices: [band, row, column] },\n cube.bytes\n ),\n raw = s.value!,\n value = raw === b.nodata ? null : raw * b.scale + b.offset;\n if (\n value !== null &&\n (!Number.isFinite(value) ||\n value < b.validRange[0] - 1e-12 ||\n value > b.validRange[1] + 1e-12)\n )\n throw new Error(\n \"Satellite reflectance exceeds its declared decoded range.\"\n );\n dn.push(raw);\n reflectance.push(value);\n byteOffsets.push(s.byteOffset!);\n }\n // Whole-pixel missingness and band missingness are independent: clear pixels may lack a band.\n if (code === 3 && reflectance.some((v) => v !== null))\n throw new Error(\n \"No-data quality must use every band's declared no-data code.\"\n );\n const r = reflectance[red] ?? null,\n n = reflectance[nir] ?? null;\n let ndvi: number | null = null,\n ndviReason: SatelliteRasterCell[\"ndviReason\"];\n if (r === null || n === null) ndviReason = \"nodata\";\n else if (code !== 0) ndviReason = \"quality_excluded\";\n else if (r < 0 || n < 0) ndviReason = \"negative_reflectance\";\n else if (r + n === 0) ndviReason = \"zero_denominator\";\n else {\n ndvi = (n - r) / (n + r);\n ndviReason = \"valid\";\n }\n const bounds = satelliteCellBounds(p, row, column);\n cells.push({\n index: row * p.grid.columns + column,\n row,\n column,\n easting: (bounds.west + bounds.east) / 2,\n northing: (bounds.north + bounds.south) / 2,\n qualityCode: code,\n quality: names[code]!,\n dn,\n reflectance,\n byteOffsets,\n qualityByteOffset: q.byteOffset!,\n ndvi,\n ndviReason,\n });\n }\n return { cells };\n}\n","import { parseExperimentalObservation } from \"@disclosureos/records/experimental/v2\";\nimport { parseAcquisitionContext } from \"@disclosureos/instruments/experimental/v2\";\nimport {\n ProductSourceSelectionSchema,\n evaluateProductSourceSelection,\n} from \"./product-source-selection\";\nimport {\n SatelliteRasterProfileSchema,\n SATELLITE_RASTER_PROFILE,\n type SatelliteRasterProfile,\n} from \"./satellite-raster-profile-schema\";\nimport {\n readSatelliteRasterProducts,\n validateSatelliteRasterDeclaration,\n type SatelliteRasterDecodedProducts,\n} from \"./satellite-raster-profile-reader\";\nimport type { ProductSourceLayout } from \"./product-source-reader\";\nexport interface SatelliteRasterProfileResult {\n success: boolean;\n profile: typeof SATELLITE_RASTER_PROFILE;\n issues: { code: string; pointer: string; message: string }[];\n checks: {\n structure: \"passed\" | \"failed\";\n sources: \"passed\" | \"failed\" | \"not_checked\";\n semantics: \"passed\" | \"failed\" | \"not_checked\";\n };\n scientific: \"not_checked\";\n physicalCalibration: \"not_checked\";\n qualityAccuracy: \"not_checked\";\n georeferencing: \"not_checked\";\n data?: {\n declaration: SatelliteRasterProfile;\n layouts: ProductSourceLayout[];\n products: SatelliteRasterDecodedProducts;\n };\n}\n/** Verifies exact acquisition and product bindings, retained array bytes, decoded band values and\n * declared projected pixel geometry. This does not certify physical accuracy or classifications. */\nexport async function evaluateSatelliteRasterProfile(\n observationInput: unknown,\n contextInput: unknown,\n selectionInput: unknown,\n profileInput: unknown,\n options: { assets?: ReadonlyMap<string, Uint8Array> } = {}\n): Promise<SatelliteRasterProfileResult> {\n const result: SatelliteRasterProfileResult = {\n success: false,\n profile: SATELLITE_RASTER_PROFILE,\n issues: [],\n checks: {\n structure: \"passed\",\n sources: \"not_checked\",\n semantics: \"not_checked\",\n },\n scientific: \"not_checked\",\n physicalCalibration: \"not_checked\",\n qualityAccuracy: \"not_checked\",\n georeferencing: \"not_checked\",\n };\n const issue = (code: string, pointer: string, message: string) =>\n result.issues.push({ code, pointer, message });\n const parsed = SatelliteRasterProfileSchema.safeParse(profileInput),\n observation = parseExperimentalObservation(observationInput),\n context = parseAcquisitionContext(contextInput),\n selection = ProductSourceSelectionSchema.safeParse(selectionInput);\n if (\n !parsed.success ||\n !observation.success ||\n !context.success ||\n !selection.success\n ) {\n result.checks.structure = \"failed\";\n issue(\n \"SATELLITE_RASTER.PREREQUISITE\",\n \"/\",\n \"Profile, observation, acquisition context and source selection must satisfy their contracts.\"\n );\n return result;\n }\n const p = parsed.data,\n obs = observation.data,\n ctx = context.data,\n sources = selection.data;\n if (\n p.observationId !== obs.id ||\n p.contextId !== ctx.id ||\n p.sourceSelectionId !== sources.id ||\n sources.observationId !== obs.id\n )\n issue(\n \"SATELLITE_RASTER.IDENTITY\",\n \"/\",\n \"Profile identifiers must select these exact documents.\"\n );\n try {\n validateSatelliteRasterDeclaration(p);\n } catch (error) {\n issue(\"SATELLITE_RASTER.DECLARATION\", \"/\", (error as Error).message);\n result.checks.semantics = \"failed\";\n return result;\n }\n if (\n p.dataOrigin === \"synthetic\" &&\n p.quality.authority !== \"authored_annotations\"\n )\n issue(\n \"SATELLITE_RASTER.QUALITY_ORIGIN\",\n \"/quality/authority\",\n \"Synthetic examples must identify their quality labels as authored annotations.\"\n );\n const capture = ctx.acquisitions.find(\n (a) => `acquisition:${a.id}` === p.acquisitionRef\n ),\n manifestRef =\n capture?.manifest.state === \"pinned\" ? capture.manifest.ref : undefined,\n manifest = ctx.manifests.find((m) => `manifest:${m.id}` === manifestRef),\n channel = manifest?.channels.find((c) => c.id === p.channelId);\n if (\n !capture ||\n !manifest ||\n manifest.instrumentRef !== capture.instrumentRef ||\n !channel ||\n !capture.channels.some((c) => c.channelId === p.channelId) ||\n channel.quantity !== \"surface_reflectance\" ||\n channel.unit !== \"1\"\n )\n issue(\n \"SATELLITE_RASTER.CHANNEL\",\n \"/channelId\",\n \"Reflectance must select a surface_reflectance channel with unit 1 in this acquisition's pinned manifest.\"\n );\n if (\n p.dataOrigin === \"synthetic\" &&\n p.grid.registration !== \"authored_grid_not_surveyed\"\n )\n issue(\n \"SATELLITE_RASTER.GRID_ORIGIN\",\n \"/grid/registration\",\n \"Synthetic grids must identify their authored registration.\"\n );\n if (new Set(Object.values(p.acquisitionProducts)).size !== 2)\n issue(\n \"SATELLITE_RASTER.CAPTURE_ALIAS\",\n \"/acquisitionProducts\",\n \"Reflectance cube and quality grid require distinct acquisition products.\"\n );\n for (const role of [\"reflectance\", \"quality\"] as const) {\n const acquired = ctx.products.find(\n (v) => `product:${v.id}` === p.acquisitionProducts[role]\n ),\n product = obs.products.find(\n (v) => `product:${v.id}` === p.products[role]\n ),\n layout = sources.layouts.find((l) => l.productRef === p.products[role]);\n if (\n !acquired ||\n acquired.kind !== \"raw\" ||\n acquired.acquisitionRef !== p.acquisitionRef ||\n !product ||\n product.kind !== \"raw\" ||\n !layout ||\n acquired.artifact.digest.value !== layout.digest.value ||\n acquired.artifact.byteLength !== layout.byteLength ||\n acquired.artifact.mediaType !== layout.mediaType\n )\n issue(\n \"SATELLITE_RASTER.CAPTURE_BINDING\",\n `/products/${role}`,\n \"The retained raster sources must bind to raw artifacts from this acquisition with matching digest, extent and media type.\"\n );\n }\n if (result.issues.length) {\n result.checks.semantics = \"failed\";\n return result;\n }\n const assets = new Map(\n [...(options.assets ?? [])].map(([ref, bytes]) => [\n ref,\n Uint8Array.from(bytes),\n ])\n );\n const sourceResult = await evaluateProductSourceSelection(obs, sources, {\n assets,\n });\n if (!sourceResult.success || sourceResult.checks.external !== \"passed\") {\n result.checks.sources = \"failed\";\n for (const entry of sourceResult.issues)\n issue(\n `SATELLITE_RASTER.SOURCE.${entry.code}`,\n entry.pointer,\n entry.message\n );\n if (!result.issues.length)\n issue(\n \"SATELLITE_RASTER.SOURCE_BYTES\",\n \"/products\",\n \"Every retained source array is required for verification.\"\n );\n return result;\n }\n result.checks.sources = \"passed\";\n try {\n const products = readSatelliteRasterProducts(p, sources.layouts, assets);\n result.data = { declaration: p, layouts: sources.layouts, products };\n result.checks.semantics = \"passed\";\n result.success = true;\n } catch (error) {\n issue(\"SATELLITE_RASTER.CONTENT\", \"/products\", (error as Error).message);\n result.checks.semantics = \"failed\";\n }\n return result;\n}\n","import {\n parseVocabularyBindings,\n parseVocabularyCatalog,\n VOCABULARY_CATALOG_SCHEMA_ID,\n parseExperimentalClaimHistory,\n parseContextClaimHistory,\n parseResearchClaimHistory,\n parseArchivalClaimHistory,\n parseLaboratoryClaimHistory,\n parseCaseClaimHistory,\n EXPERIMENTAL_CLAIM_HISTORY_SCHEMA_ID,\n CONTEXT_CLAIM_HISTORY_SCHEMA_ID,\n RESEARCH_CLAIM_HISTORY_SCHEMA_ID,\n ARCHIVAL_CLAIM_HISTORY_SCHEMA_ID,\n LABORATORY_CLAIM_HISTORY_SCHEMA_ID,\n CASE_CLAIM_HISTORY_SCHEMA_ID,\n compareUtcInstants,\n type VocabularyBindings,\n type VocabularyBinding,\n type VocabularyCatalog,\n type VocabularyCatalogTerm,\n type VocabularyTermReference,\n type VocabularyIssue,\n type DocumentSnapshotRef,\n} from \"@disclosureos/records/experimental/v2\";\nimport { evaluateContextClaimHistory } from \"./context-review\";\nimport { evaluateResearchClaimHistory } from \"./research-entities-review\";\nimport { evaluateArchivalClaimHistory } from \"./archival-review\";\nimport { evaluateLaboratoryClaimHistory } from \"./laboratory-review\";\nimport { evaluateCaseClaimHistory } from \"./case-history-review\";\n\nexport const VOCABULARY_BINDINGS_PROFILE =\n \"urn:disclosureos:profile:vocabulary-reference-resolution:0.1.0\";\ntype Status = \"passed\" | \"failed\" | \"not_checked\";\nexport interface VocabularyBindingOptions {\n /** Exact UTF-8 document bytes keyed by their declared SHA-256. Never fetched. */\n documents: ReadonlyMap<string, Uint8Array>;\n /** Other selected companion documents participating in cardinality and continuity checks. */\n additionalBindings?: readonly unknown[];\n}\nexport interface VocabularyResolutionIssue extends VocabularyIssue {\n status: \"failed\" | \"not_checked\";\n}\nexport interface VocabularyBindingResolution {\n bindingsId: string;\n bindingId: string;\n relation: VocabularyBinding[\"relation\"];\n claim: VocabularyBinding[\"claim\"];\n term: VocabularyTermReference;\n status: Status;\n resolvedTerm?: VocabularyCatalogTerm;\n}\nexport interface VocabularyBindingResult {\n success: boolean;\n profile: typeof VOCABULARY_BINDINGS_PROFILE;\n checks: {\n structural: \"passed\" | \"failed\";\n semantic: Status;\n profile: Status;\n external: \"not_checked\";\n };\n issues: VocabularyResolutionIssue[];\n unresolvedReferences: DocumentSnapshotRef[];\n snapshots: Array<DocumentSnapshotRef & { status: Status }>;\n bindings: VocabularyBindingResolution[];\n /** Extensions are retained, but this core evaluator does not approve domain semantics. */\n domainProfiles: \"not_checked\";\n scientificValidity: \"not_checked\";\n authenticity: \"not_checked\";\n}\nconst key = (r: DocumentSnapshotRef) =>\n JSON.stringify([r.schemaId, r.documentId, r.sha256]);\nconst termKey = (t: VocabularyTermReference) =>\n JSON.stringify([t.catalogId, t.revision, key(t.document), t.termId]);\nconst claimKey = (b: VocabularyBinding) =>\n JSON.stringify([key(b.claim.document), b.claim.claimId]);\nconst digest = async (bytes: Uint8Array) =>\n Array.from(\n new Uint8Array(\n await crypto.subtle.digest(\"SHA-256\", Uint8Array.from(bytes)),\n ),\n )\n .map((n) => n.toString(16).padStart(2, \"0\"))\n .join(\"\");\n\n/** Decode strictly and reject duplicate keys, including escaped equivalents. */\nfunction decode(bytes: Uint8Array): unknown {\n const text = new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes);\n const parsed: unknown = JSON.parse(text); // Establish grammar before walking token boundaries.\n let index = 0;\n const ws = () => {\n while (/\\s/.test(text[index] ?? \"\") && index < text.length) index++;\n };\n function string(): string {\n const start = index++;\n while (index < text.length) {\n if (text[index++] === '\"') break;\n if (text[index - 1] === \"\\\\\") index++;\n }\n return JSON.parse(text.slice(start, index)) as string;\n }\n function value() {\n ws();\n if (text[index] === '\"') {\n string();\n return;\n }\n if (text[index] === \"{\") {\n index++;\n ws();\n const keys = new Set<string>();\n if (text[index] !== \"}\")\n for (;;) {\n ws();\n const name = string();\n if (keys.has(name)) throw new Error(\"Duplicate JSON object key.\");\n keys.add(name);\n ws();\n index++;\n value();\n ws();\n if (text[index] !== \",\") break;\n index++;\n }\n index++;\n return;\n }\n if (text[index] === \"[\") {\n index++;\n ws();\n if (text[index] !== \"]\")\n for (;;) {\n value();\n ws();\n if (text[index] !== \",\") break;\n index++;\n }\n index++;\n return;\n }\n while (index < text.length && !/[\\s,}\\]]/.test(text[index]!)) index++;\n }\n value();\n return parsed;\n}\ntype Claim = {\n id: string;\n kind: \"source_assertion\" | \"assessment\";\n recordedAt: string;\n status?: string | undefined;\n evaluatedBy?: string | undefined;\n supersedes?: string[] | undefined;\n};\ntype History = { id: string; claims: Claim[] };\nconst histories = {\n [EXPERIMENTAL_CLAIM_HISTORY_SCHEMA_ID]: parseExperimentalClaimHistory,\n [CONTEXT_CLAIM_HISTORY_SCHEMA_ID]: parseContextClaimHistory,\n [RESEARCH_CLAIM_HISTORY_SCHEMA_ID]: parseResearchClaimHistory,\n [ARCHIVAL_CLAIM_HISTORY_SCHEMA_ID]: parseArchivalClaimHistory,\n [LABORATORY_CLAIM_HISTORY_SCHEMA_ID]: parseLaboratoryClaimHistory,\n [CASE_CLAIM_HISTORY_SCHEMA_ID]: parseCaseClaimHistory,\n};\nconst reviews = {\n [CONTEXT_CLAIM_HISTORY_SCHEMA_ID]: evaluateContextClaimHistory,\n [RESEARCH_CLAIM_HISTORY_SCHEMA_ID]: evaluateResearchClaimHistory,\n [ARCHIVAL_CLAIM_HISTORY_SCHEMA_ID]: evaluateArchivalClaimHistory,\n [LABORATORY_CLAIM_HISTORY_SCHEMA_ID]: evaluateLaboratoryClaimHistory,\n [CASE_CLAIM_HISTORY_SCHEMA_ID]: evaluateCaseClaimHistory,\n};\n\n/** Resolve declared terminology without changing subjects, inputs or assessment outcomes. */\nexport async function evaluateVocabularyBindings(\n input: unknown,\n options: VocabularyBindingOptions,\n): Promise<VocabularyBindingResult> {\n // Copy every supplied dependency before the first await, including nested history dependencies.\n const documents = new Map(\n [...options.documents].map(([hash, bytes]) => [\n hash,\n Uint8Array.from(bytes),\n ]),\n );\n const parsed = [input, ...(options.additionalBindings ?? [])].map(\n parseVocabularyBindings,\n );\n const result: VocabularyBindingResult = {\n success: false,\n profile: VOCABULARY_BINDINGS_PROFILE,\n checks: {\n structural: \"passed\",\n semantic: \"passed\",\n profile: \"not_checked\",\n external: \"not_checked\",\n },\n issues: [],\n unresolvedReferences: [],\n snapshots: [],\n bindings: [],\n domainProfiles: \"not_checked\",\n scientificValidity: \"not_checked\",\n authenticity: \"not_checked\",\n };\n const problem = (\n code: string,\n pointer: string,\n message: string,\n status: \"failed\" | \"not_checked\" = \"failed\",\n ) => {\n result.issues.push({ code, pointer, message, stage: \"profile\", status });\n };\n const bindingsDocs: VocabularyBindings[] = [],\n seenDocs = new Map<string, string>();\n for (const [i, p] of parsed.entries()) {\n result.issues.push(\n ...p.issues.map((issue) => ({\n ...issue,\n pointer: `/documents/${i}${issue.pointer}`,\n status: \"failed\" as const,\n })),\n );\n if (p.checks.structural === \"failed\") result.checks.structural = \"failed\";\n if (p.checks.semantic === \"failed\") result.checks.semantic = \"failed\";\n if (!p.success) continue;\n const serialized = JSON.stringify(p.data),\n old = seenDocs.get(p.data.id);\n if (old && old !== serialized)\n problem(\n \"VOCABULARY.BINDINGS_IDENTITY\",\n `/documents/${i}/id`,\n \"Selected companion documents reuse one ID with different contents.\",\n );\n if (!old) bindingsDocs.push(p.data);\n seenDocs.set(p.data.id, serialized);\n }\n if (result.checks.structural === \"failed\")\n result.checks.semantic = \"not_checked\";\n if (parsed.some((p) => !p.success)) return result;\n const snapshots = new Map<string, DocumentSnapshotRef & { status: Status }>();\n const loaded = new Map<string, unknown>(),\n resolvedHistories = new Map<string, History>(),\n resolvedCatalogs = new Map<string, VocabularyCatalog>();\n const catalogRevisions = new Map<string, string>();\n function registerCatalog(\n catalog: VocabularyCatalog,\n ref: DocumentSnapshotRef,\n pointer: string,\n ) {\n const identity = JSON.stringify([catalog.catalogId, catalog.revision]),\n prior = catalogRevisions.get(identity);\n if (prior && prior !== key(ref))\n problem(\n \"VOCABULARY.REVISION_CONFLICT\",\n pointer,\n \"One catalog revision identifies different supplied snapshots.\",\n );\n catalogRevisions.set(identity, key(ref));\n }\n // Even an unreferenced supplied catalog must not redefine a selected immutable revision.\n for (const [hash, bytes] of documents) {\n try {\n const raw = decode(bytes);\n if (\n typeof raw === \"object\" &&\n raw !== null &&\n \"kind\" in raw &&\n raw.kind === \"vocabulary_catalog\"\n ) {\n const catalog = parseVocabularyCatalog(raw);\n if (catalog.success)\n registerCatalog(\n catalog.data,\n {\n documentId: catalog.data.id,\n schemaId: VOCABULARY_CATALOG_SCHEMA_ID,\n sha256: await digest(bytes),\n },\n `/documents/${hash}`,\n );\n }\n } catch {\n /* Referenced invalid bytes are diagnosed by load below. */\n }\n }\n async function load(\n ref: DocumentSnapshotRef,\n pointer: string,\n ): Promise<unknown> {\n const k = key(ref);\n if (snapshots.has(k)) return loaded.get(k);\n const snapshot = { ...ref, status: \"not_checked\" as Status };\n snapshots.set(k, snapshot);\n const bytes = documents.get(ref.sha256);\n if (!bytes) {\n problem(\n \"SNAPSHOT.UNAVAILABLE\",\n pointer,\n \"Required snapshot bytes were not supplied.\",\n \"not_checked\",\n );\n result.unresolvedReferences.push(ref);\n return;\n }\n snapshot.status = \"failed\";\n if ((await digest(bytes)) !== ref.sha256) {\n problem(\n \"SNAPSHOT.DIGEST\",\n pointer,\n \"Supplied bytes differ from the declared SHA-256.\",\n );\n return;\n }\n try {\n const data = decode(bytes);\n if (\n typeof data !== \"object\" ||\n data === null ||\n !(\"id\" in data) ||\n data.id !== ref.documentId\n ) {\n problem(\n \"SNAPSHOT.IDENTITY\",\n pointer,\n \"Document ID differs from the declared snapshot.\",\n );\n return;\n }\n loaded.set(k, data);\n return data;\n } catch {\n problem(\n \"SNAPSHOT.JSON\",\n pointer,\n \"Snapshot must be valid UTF-8 JSON without duplicate object keys.\",\n );\n }\n }\n async function catalog(ref: VocabularyTermReference, pointer: string) {\n const k = key(ref.document);\n if (\n Object.prototype.hasOwnProperty.call(histories, ref.document.schemaId)\n ) {\n problem(\n \"SNAPSHOT.CONTRACT\",\n pointer,\n \"A history contract cannot identify a vocabulary catalog.\",\n );\n return;\n }\n if (!snapshots.has(k)) {\n const raw = await load(ref.document, pointer);\n if (raw !== undefined) {\n const snapshot = snapshots.get(k)!;\n if (ref.document.schemaId !== VOCABULARY_CATALOG_SCHEMA_ID) {\n if (\n Object.prototype.hasOwnProperty.call(\n histories,\n ref.document.schemaId,\n )\n )\n problem(\n \"SNAPSHOT.CONTRACT\",\n pointer,\n \"A history contract cannot identify a vocabulary catalog.\",\n );\n else {\n snapshot.status = \"not_checked\";\n problem(\n \"SNAPSHOT.UNSUPPORTED\",\n pointer,\n \"The declared catalog contract is not supported.\",\n \"not_checked\",\n );\n result.unresolvedReferences.push(ref.document);\n }\n } else {\n const p = parseVocabularyCatalog(raw);\n if (!p.success)\n problem(\n \"SNAPSHOT.CONTRACT\",\n pointer,\n \"Catalog fails its declared contract or local semantics.\",\n );\n else {\n snapshot.status = \"passed\";\n resolvedCatalogs.set(k, p.data);\n registerCatalog(p.data, ref.document, pointer);\n }\n }\n }\n }\n const data = resolvedCatalogs.get(k);\n if (!data) return;\n if (data.catalogId !== ref.catalogId || data.revision !== ref.revision) {\n problem(\n \"VOCABULARY.IDENTITY\",\n pointer,\n \"Catalog identity or revision differs from the term reference.\",\n );\n return;\n }\n const term = data.terms.find((t) => t.id === ref.termId);\n if (!term)\n problem(\n \"VOCABULARY.TERM\",\n pointer,\n \"Term is absent from the supplied catalog revision.\",\n );\n return term;\n }\n async function history(ref: DocumentSnapshotRef, pointer: string) {\n const k = key(ref);\n if (ref.schemaId === VOCABULARY_CATALOG_SCHEMA_ID) {\n problem(\n \"SNAPSHOT.CONTRACT\",\n pointer,\n \"A vocabulary catalog contract cannot identify a claim history.\",\n );\n return;\n }\n if (!snapshots.has(k)) {\n const raw = await load(ref, pointer);\n if (raw !== undefined) {\n const snapshot = snapshots.get(k)!,\n parser = Object.prototype.hasOwnProperty.call(histories, ref.schemaId)\n ? histories[ref.schemaId as keyof typeof histories]\n : undefined;\n if (!parser) {\n if (ref.schemaId === VOCABULARY_CATALOG_SCHEMA_ID)\n problem(\n \"SNAPSHOT.CONTRACT\",\n pointer,\n \"A vocabulary catalog contract cannot identify a claim history.\",\n );\n else {\n snapshot.status = \"not_checked\";\n problem(\n \"SNAPSHOT.UNSUPPORTED\",\n pointer,\n \"The declared history contract is not supported.\",\n \"not_checked\",\n );\n result.unresolvedReferences.push(ref);\n }\n } else {\n const p = parser(raw);\n if (!p.success)\n problem(\n \"SNAPSHOT.CONTRACT\",\n pointer,\n \"History fails its declared contract or local semantics.\",\n );\n else {\n snapshot.status = \"passed\";\n resolvedHistories.set(k, p.data);\n const review = Object.prototype.hasOwnProperty.call(\n reviews,\n ref.schemaId,\n )\n ? reviews[ref.schemaId as keyof typeof reviews]\n : undefined;\n if (review) {\n const reviewed = await review(p.data, { documents });\n for (const issue of reviewed.issues) {\n const unavailable = issue.code.endsWith(\".UNAVAILABLE\");\n problem(\n issue.code,\n pointer + issue.pointer,\n issue.message,\n unavailable ? \"not_checked\" : \"failed\",\n );\n }\n for (const item of reviewed.snapshots) {\n let status: Status =\n item.status === \"unavailable\" ? \"not_checked\" : item.status;\n const dependentBytes = documents.get(item.sha256);\n if (dependentBytes)\n try {\n decode(dependentBytes);\n } catch {\n status = \"failed\";\n problem(\n \"SNAPSHOT.JSON\",\n pointer,\n \"Dependent snapshot must be valid UTF-8 JSON without duplicate keys.\",\n );\n }\n snapshots.set(key(item), {\n documentId: item.documentId,\n schemaId: item.schemaId,\n sha256: item.sha256,\n status,\n });\n if (status === \"not_checked\")\n result.unresolvedReferences.push({\n documentId: item.documentId,\n schemaId: item.schemaId,\n sha256: item.sha256,\n });\n }\n if (reviewed.issues.length)\n snapshot.status = reviewed.issues.some(\n (i) => !i.code.endsWith(\".UNAVAILABLE\"),\n )\n ? \"failed\"\n : \"not_checked\";\n if (\n reviewed.snapshots.some(\n (item) => snapshots.get(key(item))?.status === \"failed\",\n )\n )\n snapshot.status = \"failed\";\n }\n }\n }\n }\n }\n return resolvedHistories.get(k);\n }\n type Entry = {\n binding: VocabularyBinding;\n resolution: VocabularyBindingResolution;\n pointer: string;\n };\n const entries: Entry[] = [];\n for (const [di, doc] of bindingsDocs.entries())\n for (const [bi, binding] of doc.bindings.entries()) {\n const pointer = `/documents/${di}/bindings/${bi}`,\n start = result.issues.length;\n const resolution: VocabularyBindingResolution = {\n bindingsId: doc.id,\n bindingId: binding.id,\n relation: binding.relation,\n claim: binding.claim,\n term: binding.term,\n status: \"not_checked\",\n };\n result.bindings.push(resolution);\n entries.push({ binding, resolution, pointer });\n const term = await catalog(binding.term, `${pointer}/term`),\n owner = await history(\n binding.claim.document,\n `${pointer}/claim/document`,\n );\n if (term) resolution.resolvedTerm = term;\n if (owner) {\n const claim = owner.claims.find((c) => c.id === binding.claim.claimId);\n if (!claim)\n problem(\n \"VOCABULARY.CLAIM\",\n `${pointer}/claim/claimId`,\n \"Claim is absent from the referenced history snapshot.\",\n );\n else {\n if (compareUtcInstants(binding.recordedAt, claim.recordedAt) === -1)\n problem(\n \"VOCABULARY.CHRONOLOGY\",\n `${pointer}/recordedAt`,\n \"Binding cannot precede the target claim's recorded time.\",\n );\n if (binding.relation === \"assessment_criterion\") {\n if (claim.kind !== \"assessment\" || claim.status !== \"assessed\")\n problem(\n \"VOCABULARY.CRITERION_TARGET\",\n pointer,\n \"A criterion declaration requires an assessed claim.\",\n );\n else if (binding.assignedBy !== claim.evaluatedBy)\n problem(\n \"VOCABULARY.CRITERION_ATTRIBUTION\",\n `${pointer}/assignedBy`,\n \"Only the declared assessor can declare the assessment criterion.\",\n );\n }\n }\n }\n const statuses = [\n snapshots.get(key(binding.term.document))?.status,\n snapshots.get(key(binding.claim.document))?.status,\n ];\n const issues = result.issues.slice(start);\n resolution.status =\n statuses.includes(\"failed\") || issues.some((i) => i.status === \"failed\")\n ? \"failed\"\n : !term ||\n !owner ||\n statuses.includes(\"not_checked\") ||\n issues.some((i) => i.status === \"not_checked\")\n ? \"not_checked\"\n : \"passed\";\n }\n const criteria = new Map<string, Entry[]>();\n for (const entry of entries.filter(\n (e) => e.binding.relation === \"assessment_criterion\",\n )) {\n const k = claimKey(entry.binding),\n list = criteria.get(k) ?? [];\n list.push(entry);\n criteria.set(k, list);\n }\n for (const list of criteria.values())\n if (new Set(list.map((e) => termKey(e.binding.term))).size > 1) {\n for (const e of list) e.resolution.status = \"failed\";\n problem(\n \"VOCABULARY.CRITERION_CONFLICT\",\n list[0]!.pointer,\n \"An exact claim has more than one distinct declared criterion.\",\n );\n }\n // Follow both directions from a declared assessed criterion; do not impose criteria on unrelated generic claims.\n for (const [historyKey, owner] of resolvedHistories) {\n const assessed = new Map(\n owner.claims\n .filter((c) => c.kind === \"assessment\" && c.status === \"assessed\")\n .map((c) => [c.id, c]),\n );\n const touched = new Set(\n entries\n .filter(\n (e) =>\n key(e.binding.claim.document) === historyKey &&\n e.binding.relation === \"assessment_criterion\",\n )\n .map((e) => e.binding.claim.claimId),\n );\n let changed = true;\n while (changed) {\n changed = false;\n for (const c of assessed.values())\n for (const prior of c.supersedes ?? []) {\n const id = prior.slice(\"claim:\".length);\n if (assessed.has(id) && (touched.has(c.id) || touched.has(id))) {\n if (!touched.has(c.id) || !touched.has(id)) changed = true;\n touched.add(c.id);\n touched.add(id);\n }\n }\n }\n for (const c of assessed.values())\n if (touched.has(c.id))\n for (const prior of c.supersedes ?? []) {\n const id = prior.slice(\"claim:\".length);\n if (!assessed.has(id)) continue;\n const current =\n criteria.get(JSON.stringify([historyKey, c.id])) ?? [],\n previous = criteria.get(JSON.stringify([historyKey, id])) ?? [];\n const all = [...current, ...previous];\n if (\n !current.length ||\n !previous.length ||\n all.some((e) => !e.resolution.resolvedTerm)\n ) {\n problem(\n \"VOCABULARY.CRITERION_UNAVAILABLE\",\n `/claims/${c.id}/supersedes`,\n \"Both assessed revisions need a resolved criterion declaration in this exact history snapshot.\",\n \"not_checked\",\n );\n for (const e of all)\n if (e.resolution.status !== \"failed\")\n e.resolution.status = \"not_checked\";\n } else if (\n termKey(current[0]!.binding.term) !==\n termKey(previous[0]!.binding.term)\n ) {\n problem(\n \"VOCABULARY.CRITERION_CHANGED\",\n `/claims/${c.id}/supersedes`,\n \"An assessed revision cannot change its declared criterion. Use a separate assessment.\",\n );\n all.forEach((e) => {\n e.resolution.status = \"failed\";\n });\n }\n }\n }\n result.snapshots = [...snapshots.values()];\n result.unresolvedReferences = [\n ...new Map(result.unresolvedReferences.map((r) => [key(r), r])).values(),\n ];\n result.checks.profile =\n result.issues.some((i) => i.status === \"failed\") ||\n result.bindings.some((b) => b.status === \"failed\")\n ? \"failed\"\n : result.issues.some((i) => i.status === \"not_checked\") ||\n result.bindings.some((b) => b.status === \"not_checked\")\n ? \"not_checked\"\n : \"passed\";\n result.success =\n result.checks.structural === \"passed\" &&\n result.checks.semantic === \"passed\" &&\n result.checks.profile === \"passed\";\n return result;\n}\n"]}
|