audit-tools 0.48.0 → 0.50.1
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/README.md +3 -1
- package/dist/audit/clarification/partition.d.ts.map +1 -1
- package/dist/audit/clarification/partition.js +2 -1
- package/dist/audit/clarification/partition.js.map +1 -1
- package/dist/audit/clarification/voiQueue.d.ts.map +1 -1
- package/dist/audit/clarification/voiQueue.js +2 -1
- package/dist/audit/clarification/voiQueue.js.map +1 -1
- package/dist/audit/cli/args.d.ts +27 -0
- package/dist/audit/cli/args.d.ts.map +1 -1
- package/dist/audit/cli/args.js +32 -2
- package/dist/audit/cli/args.js.map +1 -1
- package/dist/audit/cli/dispatch/hostHandoff.d.ts +1 -1
- package/dist/audit/cli/dispatch/hostHandoff.d.ts.map +1 -1
- package/dist/audit/cli/dispatch/hostHandoff.js +32 -55
- package/dist/audit/cli/dispatch/hostHandoff.js.map +1 -1
- package/dist/audit/cli/explainTaskCommand.d.ts.map +1 -1
- package/dist/audit/cli/explainTaskCommand.js +2 -1
- package/dist/audit/cli/explainTaskCommand.js.map +1 -1
- package/dist/audit/cli/laneValidators.d.ts +0 -2
- package/dist/audit/cli/laneValidators.d.ts.map +1 -1
- package/dist/audit/cli/laneValidators.js +2 -6
- package/dist/audit/cli/laneValidators.js.map +1 -1
- package/dist/audit/cli/lineIndex.d.ts.map +1 -1
- package/dist/audit/cli/lineIndex.js +2 -1
- package/dist/audit/cli/lineIndex.js.map +1 -1
- package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
- package/dist/audit/cli/nextStepHelpers.js +4 -4
- package/dist/audit/cli/nextStepHelpers.js.map +1 -1
- package/dist/audit/contracts/findingContractPrompt.d.ts.map +1 -1
- package/dist/audit/contracts/findingContractPrompt.js +2 -2
- package/dist/audit/contracts/findingContractPrompt.js.map +1 -1
- package/dist/audit/decompose/buildStructureDecomposition.d.ts.map +1 -1
- package/dist/audit/decompose/buildStructureDecomposition.js +5 -8
- package/dist/audit/decompose/buildStructureDecomposition.js.map +1 -1
- package/dist/audit/decompose/findings.js +2 -2
- package/dist/audit/decompose/findings.js.map +1 -1
- package/dist/audit/decompose/sources.d.ts.map +1 -1
- package/dist/audit/decompose/sources.js +8 -11
- package/dist/audit/decompose/sources.js.map +1 -1
- package/dist/audit/extractors/analyzers/merge.d.ts.map +1 -1
- package/dist/audit/extractors/analyzers/merge.js +4 -3
- package/dist/audit/extractors/analyzers/merge.js.map +1 -1
- package/dist/audit/extractors/browserExtension.d.ts.map +1 -1
- package/dist/audit/extractors/browserExtension.js +2 -4
- package/dist/audit/extractors/browserExtension.js.map +1 -1
- package/dist/audit/extractors/commentDecomposition.d.ts.map +1 -1
- package/dist/audit/extractors/commentDecomposition.js +15 -29
- package/dist/audit/extractors/commentDecomposition.js.map +1 -1
- package/dist/audit/extractors/dataStateCoupling.d.ts.map +1 -1
- package/dist/audit/extractors/dataStateCoupling.js +3 -2
- package/dist/audit/extractors/dataStateCoupling.js.map +1 -1
- package/dist/audit/extractors/designAssessment.d.ts.map +1 -1
- package/dist/audit/extractors/designAssessment.js +6 -5
- package/dist/audit/extractors/designAssessment.js.map +1 -1
- package/dist/audit/extractors/disposition.d.ts.map +1 -1
- package/dist/audit/extractors/disposition.js +1 -4
- package/dist/audit/extractors/disposition.js.map +1 -1
- package/dist/audit/extractors/docsDigest.d.ts.map +1 -1
- package/dist/audit/extractors/docsDigest.js +6 -20
- package/dist/audit/extractors/docsDigest.js.map +1 -1
- package/dist/audit/extractors/fileInventory.d.ts.map +1 -1
- package/dist/audit/extractors/fileInventory.js +2 -1
- package/dist/audit/extractors/fileInventory.js.map +1 -1
- package/dist/audit/extractors/flows.js +3 -3
- package/dist/audit/extractors/flows.js.map +1 -1
- package/dist/audit/extractors/fsIntake.d.ts.map +1 -1
- package/dist/audit/extractors/fsIntake.js +4 -7
- package/dist/audit/extractors/fsIntake.js.map +1 -1
- package/dist/audit/extractors/graph.d.ts +1 -1
- package/dist/audit/extractors/graph.d.ts.map +1 -1
- package/dist/audit/extractors/graph.js +9 -12
- package/dist/audit/extractors/graph.js.map +1 -1
- package/dist/audit/extractors/graphManifestEdges/jsonc.d.ts +10 -0
- package/dist/audit/extractors/graphManifestEdges/jsonc.d.ts.map +1 -1
- package/dist/audit/extractors/graphManifestEdges/jsonc.js +12 -50
- package/dist/audit/extractors/graphManifestEdges/jsonc.js.map +1 -1
- package/dist/audit/extractors/graphPythonImports.js +2 -2
- package/dist/audit/extractors/graphPythonImports.js.map +1 -1
- package/dist/audit/extractors/graphRoutes.d.ts.map +1 -1
- package/dist/audit/extractors/graphRoutes.js +4 -3
- package/dist/audit/extractors/graphRoutes.js.map +1 -1
- package/dist/audit/extractors/graphSignals.d.ts.map +1 -1
- package/dist/audit/extractors/graphSignals.js +3 -2
- package/dist/audit/extractors/graphSignals.js.map +1 -1
- package/dist/audit/extractors/graphSuites.d.ts.map +1 -1
- package/dist/audit/extractors/graphSuites.js +3 -2
- package/dist/audit/extractors/graphSuites.js.map +1 -1
- package/dist/audit/extractors/readFileText.d.ts +12 -0
- package/dist/audit/extractors/readFileText.d.ts.map +1 -0
- package/dist/audit/extractors/readFileText.js +23 -0
- package/dist/audit/extractors/readFileText.js.map +1 -0
- package/dist/audit/extractors/risk.d.ts.map +1 -1
- package/dist/audit/extractors/risk.js +3 -2
- package/dist/audit/extractors/risk.js.map +1 -1
- package/dist/audit/io/artifacts.d.ts +0 -28
- package/dist/audit/io/artifacts.d.ts.map +1 -1
- package/dist/audit/io/artifacts.js +1 -65
- package/dist/audit/io/artifacts.js.map +1 -1
- package/dist/audit/io/toolingManifest.d.ts.map +1 -1
- package/dist/audit/io/toolingManifest.js +3 -2
- package/dist/audit/io/toolingManifest.js.map +1 -1
- package/dist/audit/orchestrator/artifactMetadata.d.ts.map +1 -1
- package/dist/audit/orchestrator/artifactMetadata.js +2 -2
- package/dist/audit/orchestrator/artifactMetadata.js.map +1 -1
- package/dist/audit/orchestrator/autoFixExecutor.d.ts.map +1 -1
- package/dist/audit/orchestrator/autoFixExecutor.js +2 -1
- package/dist/audit/orchestrator/autoFixExecutor.js.map +1 -1
- package/dist/audit/orchestrator/charterPackets.d.ts.map +1 -1
- package/dist/audit/orchestrator/charterPackets.js +4 -3
- package/dist/audit/orchestrator/charterPackets.js.map +1 -1
- package/dist/audit/orchestrator/dependencySlices.d.ts.map +1 -1
- package/dist/audit/orchestrator/dependencySlices.js +4 -6
- package/dist/audit/orchestrator/dependencySlices.js.map +1 -1
- package/dist/audit/orchestrator/designReviewProjection.d.ts.map +1 -1
- package/dist/audit/orchestrator/designReviewProjection.js +2 -2
- package/dist/audit/orchestrator/designReviewProjection.js.map +1 -1
- package/dist/audit/orchestrator/designReviewSnapshot.d.ts.map +1 -1
- package/dist/audit/orchestrator/designReviewSnapshot.js +2 -5
- package/dist/audit/orchestrator/designReviewSnapshot.js.map +1 -1
- package/dist/audit/orchestrator/edgeReasoning.d.ts.map +1 -1
- package/dist/audit/orchestrator/edgeReasoning.js +3 -3
- package/dist/audit/orchestrator/edgeReasoning.js.map +1 -1
- package/dist/audit/orchestrator/fileAnchors.d.ts.map +1 -1
- package/dist/audit/orchestrator/fileAnchors.js +14 -16
- package/dist/audit/orchestrator/fileAnchors.js.map +1 -1
- package/dist/audit/orchestrator/flowPlanning.d.ts.map +1 -1
- package/dist/audit/orchestrator/flowPlanning.js +3 -2
- package/dist/audit/orchestrator/flowPlanning.js.map +1 -1
- package/dist/audit/orchestrator/graphEnrichmentExecutor.js +5 -5
- package/dist/audit/orchestrator/graphEnrichmentExecutor.js.map +1 -1
- package/dist/audit/orchestrator/ingestionExecutors.d.ts.map +1 -1
- package/dist/audit/orchestrator/ingestionExecutors.js +2 -1
- package/dist/audit/orchestrator/ingestionExecutors.js.map +1 -1
- package/dist/audit/orchestrator/partitionTaskGraph.d.ts.map +1 -1
- package/dist/audit/orchestrator/partitionTaskGraph.js +1 -3
- package/dist/audit/orchestrator/partitionTaskGraph.js.map +1 -1
- package/dist/audit/orchestrator/reviewPacketGraphContext.js +3 -3
- package/dist/audit/orchestrator/reviewPacketGraphContext.js.map +1 -1
- package/dist/audit/orchestrator/reviewPacketGraphEdges.d.ts.map +1 -1
- package/dist/audit/orchestrator/reviewPacketGraphEdges.js +4 -4
- package/dist/audit/orchestrator/reviewPacketGraphEdges.js.map +1 -1
- package/dist/audit/orchestrator/reviewPacketMetrics.d.ts.map +1 -1
- package/dist/audit/orchestrator/reviewPacketMetrics.js +4 -3
- package/dist/audit/orchestrator/reviewPacketMetrics.js.map +1 -1
- package/dist/audit/orchestrator/reviewPackets.d.ts.map +1 -1
- package/dist/audit/orchestrator/reviewPackets.js +1 -4
- package/dist/audit/orchestrator/reviewPackets.js.map +1 -1
- package/dist/audit/orchestrator/runtimeValidationUpdate.d.ts.map +1 -1
- package/dist/audit/orchestrator/runtimeValidationUpdate.js +2 -1
- package/dist/audit/orchestrator/runtimeValidationUpdate.js.map +1 -1
- package/dist/audit/orchestrator/scope.js +4 -4
- package/dist/audit/orchestrator/scope.js.map +1 -1
- package/dist/audit/orchestrator/selectiveDeepening/index.d.ts.map +1 -1
- package/dist/audit/orchestrator/selectiveDeepening/index.js +4 -3
- package/dist/audit/orchestrator/selectiveDeepening/index.js.map +1 -1
- package/dist/audit/orchestrator/selectiveDeepening/lensVerification.d.ts.map +1 -1
- package/dist/audit/orchestrator/selectiveDeepening/lensVerification.js +4 -3
- package/dist/audit/orchestrator/selectiveDeepening/lensVerification.js.map +1 -1
- package/dist/audit/orchestrator/selectiveDeepening/shared.d.ts +0 -1
- package/dist/audit/orchestrator/selectiveDeepening/shared.d.ts.map +1 -1
- package/dist/audit/orchestrator/selectiveDeepening/shared.js +2 -5
- package/dist/audit/orchestrator/selectiveDeepening/shared.js.map +1 -1
- package/dist/audit/orchestrator/selectiveDeepening/stewardFollowup.js +2 -1
- package/dist/audit/orchestrator/selectiveDeepening/stewardFollowup.js.map +1 -1
- package/dist/audit/orchestrator/taskBuilder.d.ts.map +1 -1
- package/dist/audit/orchestrator/taskBuilder.js +5 -12
- package/dist/audit/orchestrator/taskBuilder.js.map +1 -1
- package/dist/audit/orchestrator/unitBuilder.d.ts.map +1 -1
- package/dist/audit/orchestrator/unitBuilder.js +3 -2
- package/dist/audit/orchestrator/unitBuilder.js.map +1 -1
- package/dist/audit/orchestrator.d.ts.map +1 -1
- package/dist/audit/orchestrator.js +1 -4
- package/dist/audit/orchestrator.js.map +1 -1
- package/dist/audit/reporting/mergeFindings.d.ts.map +1 -1
- package/dist/audit/reporting/mergeFindings.js +3 -4
- package/dist/audit/reporting/mergeFindings.js.map +1 -1
- package/dist/audit/reporting/synthesis.d.ts.map +1 -1
- package/dist/audit/reporting/synthesis.js +3 -3
- package/dist/audit/reporting/synthesis.js.map +1 -1
- package/dist/audit/reporting/workBlocks.d.ts.map +1 -1
- package/dist/audit/reporting/workBlocks.js +15 -20
- package/dist/audit/reporting/workBlocks.js.map +1 -1
- package/dist/audit/supervisor/runLedger.d.ts.map +1 -1
- package/dist/audit/supervisor/runLedger.js +1 -4
- package/dist/audit/supervisor/runLedger.js.map +1 -1
- package/dist/audit/systemic/systemicChallengeLoop.js +2 -2
- package/dist/audit/systemic/systemicChallengeLoop.js.map +1 -1
- package/dist/audit/validation/artifacts.d.ts.map +1 -1
- package/dist/audit/validation/artifacts.js +26 -29
- package/dist/audit/validation/artifacts.js.map +1 -1
- package/dist/remediate/contractPipeline/cyclicSeamResolution.d.ts +25 -10
- package/dist/remediate/contractPipeline/cyclicSeamResolution.d.ts.map +1 -1
- package/dist/remediate/contractPipeline/cyclicSeamResolution.js +35 -88
- package/dist/remediate/contractPipeline/cyclicSeamResolution.js.map +1 -1
- package/dist/remediate/contractPipeline/idRegistry.d.ts +10 -20
- package/dist/remediate/contractPipeline/idRegistry.d.ts.map +1 -1
- package/dist/remediate/contractPipeline/idRegistry.js +10 -24
- package/dist/remediate/contractPipeline/idRegistry.js.map +1 -1
- package/dist/remediate/contractPipeline/obligationKinds.d.ts +27 -0
- package/dist/remediate/contractPipeline/obligationKinds.d.ts.map +1 -0
- package/dist/remediate/contractPipeline/obligationKinds.js +18 -0
- package/dist/remediate/contractPipeline/obligationKinds.js.map +1 -0
- package/dist/remediate/contractPipeline/phaseCut.d.ts.map +1 -1
- package/dist/remediate/contractPipeline/phaseCut.js +2 -1
- package/dist/remediate/contractPipeline/phaseCut.js.map +1 -1
- package/dist/remediate/contractPipeline/testPlanCarry.d.ts.map +1 -1
- package/dist/remediate/contractPipeline/testPlanCarry.js +1 -4
- package/dist/remediate/contractPipeline/testPlanCarry.js.map +1 -1
- package/dist/remediate/dedup/crossLensDedup.d.ts +2 -3
- package/dist/remediate/dedup/crossLensDedup.d.ts.map +1 -1
- package/dist/remediate/dedup/crossLensDedup.js +2 -4
- package/dist/remediate/dedup/crossLensDedup.js.map +1 -1
- package/dist/remediate/index.d.ts +38 -8
- package/dist/remediate/index.d.ts.map +1 -1
- package/dist/remediate/index.js +75 -27
- package/dist/remediate/index.js.map +1 -1
- package/dist/remediate/phases/close.d.ts.map +1 -1
- package/dist/remediate/phases/close.js +3 -3
- package/dist/remediate/phases/close.js.map +1 -1
- package/dist/remediate/phases/plan.js +2 -2
- package/dist/remediate/phases/plan.js.map +1 -1
- package/dist/remediate/riskSignal.d.ts +1 -0
- package/dist/remediate/riskSignal.d.ts.map +1 -1
- package/dist/remediate/riskSignal.js +3 -7
- package/dist/remediate/riskSignal.js.map +1 -1
- package/dist/remediate/state/accessMemory.d.ts.map +1 -1
- package/dist/remediate/state/accessMemory.js +3 -3
- package/dist/remediate/state/accessMemory.js.map +1 -1
- package/dist/remediate/steps/contractPipeline.d.ts +6 -62
- package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
- package/dist/remediate/steps/contractPipeline.js +20 -89
- package/dist/remediate/steps/contractPipeline.js.map +1 -1
- package/dist/remediate/steps/dispatch/hostHandoff.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch/hostHandoff.js +32 -39
- package/dist/remediate/steps/dispatch/hostHandoff.js.map +1 -1
- package/dist/remediate/steps/nextStep.d.ts.map +1 -1
- package/dist/remediate/steps/nextStep.js +14 -5
- package/dist/remediate/steps/nextStep.js.map +1 -1
- package/dist/remediate/utils/fileIntegrity.d.ts.map +1 -1
- package/dist/remediate/utils/fileIntegrity.js +4 -8
- package/dist/remediate/utils/fileIntegrity.js.map +1 -1
- package/dist/remediate/validation/artifacts.d.ts.map +1 -1
- package/dist/remediate/validation/artifacts.js +8 -14
- package/dist/remediate/validation/artifacts.js.map +1 -1
- package/dist/remediate/validation/contractPipeline.d.ts +1 -1
- package/dist/remediate/validation/contractPipeline.d.ts.map +1 -1
- package/dist/remediate/validation/contractPipeline.js +8 -46
- package/dist/remediate/validation/contractPipeline.js.map +1 -1
- package/dist/remediate/validation/contractPipelineGates.d.ts +12 -20
- package/dist/remediate/validation/contractPipelineGates.d.ts.map +1 -1
- package/dist/remediate/validation/contractPipelineGates.js +107 -135
- package/dist/remediate/validation/contractPipelineGates.js.map +1 -1
- package/dist/shared/accessMemory.d.ts.map +1 -1
- package/dist/shared/accessMemory.js +2 -1
- package/dist/shared/accessMemory.js.map +1 -1
- package/dist/shared/affinityArtifacts.d.ts +0 -1
- package/dist/shared/affinityArtifacts.d.ts.map +1 -1
- package/dist/shared/affinityArtifacts.js +1 -3
- package/dist/shared/affinityArtifacts.js.map +1 -1
- package/dist/shared/agentReflections.d.ts.map +1 -1
- package/dist/shared/agentReflections.js +2 -1
- package/dist/shared/agentReflections.js.map +1 -1
- package/dist/shared/analyzerPolicy.d.ts.map +1 -1
- package/dist/shared/analyzerPolicy.js +7 -22
- package/dist/shared/analyzerPolicy.js.map +1 -1
- package/dist/shared/analyzers/binaryAcquisition.d.ts.map +1 -1
- package/dist/shared/analyzers/binaryAcquisition.js +7 -10
- package/dist/shared/analyzers/binaryAcquisition.js.map +1 -1
- package/dist/shared/analyzers/candidates.d.ts.map +1 -1
- package/dist/shared/analyzers/candidates.js +1 -3
- package/dist/shared/analyzers/candidates.js.map +1 -1
- package/dist/shared/analyzers/normalizeExternal.d.ts.map +1 -1
- package/dist/shared/analyzers/normalizeExternal.js +12 -13
- package/dist/shared/analyzers/normalizeExternal.js.map +1 -1
- package/dist/shared/analyzers/types.d.ts.map +1 -1
- package/dist/shared/analyzers/types.js +2 -1
- package/dist/shared/analyzers/types.js.map +1 -1
- package/dist/shared/artifactFreshness.d.ts.map +1 -1
- package/dist/shared/artifactFreshness.js +4 -8
- package/dist/shared/artifactFreshness.js.map +1 -1
- package/dist/shared/compareCodeUnits.d.ts +9 -0
- package/dist/shared/compareCodeUnits.d.ts.map +1 -0
- package/dist/shared/compareCodeUnits.js +11 -0
- package/dist/shared/compareCodeUnits.js.map +1 -0
- package/dist/shared/constitutionalDocPaths.d.ts.map +1 -1
- package/dist/shared/constitutionalDocPaths.js +1 -4
- package/dist/shared/constitutionalDocPaths.js.map +1 -1
- package/dist/shared/contentKey.d.ts.map +1 -1
- package/dist/shared/contentKey.js +6 -8
- package/dist/shared/contentKey.js.map +1 -1
- package/dist/shared/decompose/charterClarification.d.ts.map +1 -1
- package/dist/shared/decompose/charterClarification.js +2 -1
- package/dist/shared/decompose/charterClarification.js.map +1 -1
- package/dist/shared/decompose/charterExtraction.d.ts.map +1 -1
- package/dist/shared/decompose/charterExtraction.js +21 -20
- package/dist/shared/decompose/charterExtraction.js.map +1 -1
- package/dist/shared/decompose/consensus.d.ts.map +1 -1
- package/dist/shared/decompose/consensus.js +7 -6
- package/dist/shared/decompose/consensus.js.map +1 -1
- package/dist/shared/decompose/contentCoherence.d.ts.map +1 -1
- package/dist/shared/decompose/contentCoherence.js +4 -10
- package/dist/shared/decompose/contentCoherence.js.map +1 -1
- package/dist/shared/decompose/modularity.d.ts.map +1 -1
- package/dist/shared/decompose/modularity.js +12 -14
- package/dist/shared/decompose/modularity.js.map +1 -1
- package/dist/shared/decompose/workBlockSeams.js +3 -3
- package/dist/shared/decompose/workBlockSeams.js.map +1 -1
- package/dist/shared/findings/dedupe.d.ts +4 -11
- package/dist/shared/findings/dedupe.d.ts.map +1 -1
- package/dist/shared/findings/dedupe.js +198 -164
- package/dist/shared/findings/dedupe.js.map +1 -1
- package/dist/shared/friction/frictionRecord.d.ts.map +1 -1
- package/dist/shared/friction/frictionRecord.js +3 -2
- package/dist/shared/friction/frictionRecord.js.map +1 -1
- package/dist/shared/friction/triage.d.ts.map +1 -1
- package/dist/shared/friction/triage.js +2 -1
- package/dist/shared/friction/triage.js.map +1 -1
- package/dist/shared/git.d.ts.map +1 -1
- package/dist/shared/git.js +5 -4
- package/dist/shared/git.js.map +1 -1
- package/dist/shared/graph/directedCycles.d.ts +61 -0
- package/dist/shared/graph/directedCycles.d.ts.map +1 -0
- package/dist/shared/graph/directedCycles.js +190 -0
- package/dist/shared/graph/directedCycles.js.map +1 -0
- package/dist/shared/index.d.ts +8 -2
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +9 -2
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/io/artifactName.js +2 -2
- package/dist/shared/io/artifactName.js.map +1 -1
- package/dist/shared/io/frictionCapture.d.ts.map +1 -1
- package/dist/shared/io/frictionCapture.js +4 -6
- package/dist/shared/io/frictionCapture.js.map +1 -1
- package/dist/shared/io/json.d.ts +2 -0
- package/dist/shared/io/json.d.ts.map +1 -1
- package/dist/shared/io/json.js +2 -1
- package/dist/shared/io/json.js.map +1 -1
- package/dist/shared/io/repoRoot.d.ts +45 -0
- package/dist/shared/io/repoRoot.d.ts.map +1 -1
- package/dist/shared/io/repoRoot.js +91 -1
- package/dist/shared/io/repoRoot.js.map +1 -1
- package/dist/shared/loopCorePaths.d.ts.map +1 -1
- package/dist/shared/loopCorePaths.js +1 -4
- package/dist/shared/loopCorePaths.js.map +1 -1
- package/dist/shared/paths.d.ts +19 -0
- package/dist/shared/paths.d.ts.map +1 -0
- package/dist/shared/paths.js +23 -0
- package/dist/shared/paths.js.map +1 -0
- package/dist/shared/reReview/projectionDiff.d.ts +0 -18
- package/dist/shared/reReview/projectionDiff.d.ts.map +1 -1
- package/dist/shared/reReview/projectionDiff.js +2 -1
- package/dist/shared/reReview/projectionDiff.js.map +1 -1
- package/dist/shared/sessionConfig.d.ts.map +1 -1
- package/dist/shared/sessionConfig.js +9 -24
- package/dist/shared/sessionConfig.js.map +1 -1
- package/dist/shared/stableStringify.d.ts.map +1 -1
- package/dist/shared/stableStringify.js +1 -3
- package/dist/shared/stableStringify.js.map +1 -1
- package/dist/shared/submission/expectedSubmissions.d.ts +0 -19
- package/dist/shared/submission/expectedSubmissions.d.ts.map +1 -1
- package/dist/shared/submission/expectedSubmissions.js +23 -6
- package/dist/shared/submission/expectedSubmissions.js.map +1 -1
- package/dist/shared/submission/hostHandoffCore.d.ts +0 -3
- package/dist/shared/submission/hostHandoffCore.d.ts.map +1 -1
- package/dist/shared/submission/hostHandoffCore.js +2 -7
- package/dist/shared/submission/hostHandoffCore.js.map +1 -1
- package/dist/shared/submission/submissionIdentity.d.ts.map +1 -1
- package/dist/shared/submission/submissionIdentity.js +7 -8
- package/dist/shared/submission/submissionIdentity.js.map +1 -1
- package/dist/shared/submission/submissionScan.d.ts +86 -0
- package/dist/shared/submission/submissionScan.d.ts.map +1 -0
- package/dist/shared/submission/submissionScan.js +93 -0
- package/dist/shared/submission/submissionScan.js.map +1 -0
- package/dist/shared/types/obligationLedger.d.ts +7 -3
- package/dist/shared/types/obligationLedger.d.ts.map +1 -1
- package/dist/shared/types/obligationLedger.js +9 -37
- package/dist/shared/types/obligationLedger.js.map +1 -1
- package/dist/shared/validation/findingsReport.d.ts.map +1 -1
- package/dist/shared/validation/findingsReport.js +2 -1
- package/dist/shared/validation/findingsReport.js.map +1 -1
- package/dist/shared/validation/schemaFailure.d.ts +9 -0
- package/dist/shared/validation/schemaFailure.d.ts.map +1 -0
- package/dist/shared/validation/schemaFailure.js +15 -0
- package/dist/shared/validation/schemaFailure.js.map +1 -0
- package/package.json +5 -2
- package/skills/audit-code/audit-code.prompt.md +5 -2
- package/wrapper/audit-code-wrapper-install-hosts.mjs +8 -3
- package/wrapper/audit-code-wrapper-lib.mjs +10 -3
- package/wrapper/installer-verb-help.mjs +3 -1
- package/wrapper/remediate-code-wrapper-install-hosts.mjs +8 -3
- package/wrapper/repo-root.mjs +80 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stableStringify.d.ts","sourceRoot":"","sources":["../../src/shared/stableStringify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stableStringify.d.ts","sourceRoot":"","sources":["../../src/shared/stableStringify.ts"],"names":[],"mappings":"AAcA,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CActD"}
|
|
@@ -10,9 +10,7 @@
|
|
|
10
10
|
* which re-exports this) and the content-key seam (`src/shared/contentKey.ts`)
|
|
11
11
|
* route through this function.
|
|
12
12
|
*/
|
|
13
|
-
|
|
14
|
-
return left < right ? -1 : left > right ? 1 : 0;
|
|
15
|
-
}
|
|
13
|
+
import { compareCodeUnits } from "./compareCodeUnits.js";
|
|
16
14
|
export function stableStringify(value) {
|
|
17
15
|
if (value === undefined) {
|
|
18
16
|
return "null";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stableStringify.js","sourceRoot":"","sources":["../../src/shared/stableStringify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,
|
|
1
|
+
{"version":3,"file":"stableStringify.js","sourceRoot":"","sources":["../../src/shared/stableStringify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7E,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;SAC7D,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;SACxC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1G,CAAC"}
|
|
@@ -1,22 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The expected-submission set: what a step emission OWES, stated by name.
|
|
3
|
-
*
|
|
4
|
-
* A fan-out emission used to be implicit — it wrote N lane prompts and, on the
|
|
5
|
-
* next turn, simply looked to see which result files happened to be there. An
|
|
6
|
-
* absent lane was a `continue`, so a lane that was never delivered was
|
|
7
|
-
* indistinguishable from a lane that was merely slow, and the run reported
|
|
8
|
-
* neither the shortfall nor its cause. Recording the set at emit turns that
|
|
9
|
-
* into "expected 3, accepted 2, lane `revealed` is missing".
|
|
10
|
-
*
|
|
11
|
-
* The set is a COHERENCE grouping, never a fit claim: a member is a
|
|
12
|
-
* content-coherent lane, and the diff counts lanes. Nothing here describes a
|
|
13
|
-
* backend, a window, or a partition sized to one — that is the host's business
|
|
14
|
-
* and this package does not own it.
|
|
15
|
-
*
|
|
16
|
-
* Storage-neutral by construction (one core, two draws): the core says what the
|
|
17
|
-
* set IS; the audit draw persists it as a file beside the submissions, the
|
|
18
|
-
* remediate draw carries its equivalent inside `RemediationState`.
|
|
19
|
-
*/
|
|
20
1
|
import type { SubmissionIssue, SubmissionReadOutcome } from "./submissionClassifier.js";
|
|
21
2
|
import type { SubmissionRoots } from "./submissionIdentity.js";
|
|
22
3
|
export declare const EXPECTED_SET_CONTRACT_VERSION: "submission-expected-set/v1alpha1";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expectedSubmissions.d.ts","sourceRoot":"","sources":["../../../src/shared/submission/expectedSubmissions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"expectedSubmissions.d.ts","sourceRoot":"","sources":["../../../src/shared/submission/expectedSubmissions.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACtB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,eAAO,MAAM,6BAA6B,EACxC,kCAA2C,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,6EAA6E;IAC7E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,6BAA6B,CAAC;IAChE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACjD;AAED,uDAAuD;AACvD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,oCAAoC;AACpC,MAAM,MAAM,wBAAwB,GAChC;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC/D;IACE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;CACjC,CAAC;AAEN,MAAM,WAAW,eAAe;IAC9B,gCAAgC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gCAAgC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,wBAAwB,EAAE,CAAC;CACvD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACnD,GAAG,qBAAqB,CAuBxB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,qBAAqB,GAAG,SAAS,EACvC,UAAU,EAAE,qBAAqB,GAChC;IAAE,QAAQ,CAAC,GAAG,EAAE,qBAAqB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAkB/E;AAED,6EAA6E;AAC7E,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,qBAAqB,EAC1B,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,qBAAqB,CAOvB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,qBAAqB,EAC1B,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC,GACnD,eAAe,CAkBjB"}
|
|
@@ -1,9 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The expected-submission set: what a step emission OWES, stated by name.
|
|
3
|
+
*
|
|
4
|
+
* A fan-out emission used to be implicit — it wrote N lane prompts and, on the
|
|
5
|
+
* next turn, simply looked to see which result files happened to be there. An
|
|
6
|
+
* absent lane was a `continue`, so a lane that was never delivered was
|
|
7
|
+
* indistinguishable from a lane that was merely slow, and the run reported
|
|
8
|
+
* neither the shortfall nor its cause. Recording the set at emit turns that
|
|
9
|
+
* into "expected 3, accepted 2, lane `revealed` is missing".
|
|
10
|
+
*
|
|
11
|
+
* The set is a COHERENCE grouping, never a fit claim: a member is a
|
|
12
|
+
* content-coherent lane, and the diff counts lanes. Nothing here describes a
|
|
13
|
+
* backend, a window, or a partition sized to one — that is the host's business
|
|
14
|
+
* and this package does not own it.
|
|
15
|
+
*
|
|
16
|
+
* Storage-neutral by construction (one core, two draws): the core says what the
|
|
17
|
+
* set IS; the audit draw persists it as a file beside the submissions, the
|
|
18
|
+
* remediate draw carries its equivalent inside `RemediationState`.
|
|
19
|
+
*/
|
|
20
|
+
import { compareCodeUnits } from "../compareCodeUnits.js";
|
|
1
21
|
import { classifyRead } from "./submissionClassifier.js";
|
|
2
22
|
import { submissionPathFor } from "./submissionIdentity.js";
|
|
3
23
|
export const EXPECTED_SET_CONTRACT_VERSION = "submission-expected-set/v1alpha1";
|
|
4
|
-
function compareIds(left, right) {
|
|
5
|
-
return left < right ? -1 : left > right ? 1 : 0;
|
|
6
|
-
}
|
|
7
24
|
/**
|
|
8
25
|
* Build the set one emission owes. Entries are ordered by `submission_id` — a
|
|
9
26
|
* content-derived key, never emission or filesystem order, so re-recording an
|
|
@@ -36,7 +53,7 @@ export function buildExpectedSubmissionSet(params) {
|
|
|
36
53
|
return {
|
|
37
54
|
contract_version: EXPECTED_SET_CONTRACT_VERSION,
|
|
38
55
|
run_id: params.runId,
|
|
39
|
-
entries: entries.sort((left, right) =>
|
|
56
|
+
entries: entries.sort((left, right) => compareCodeUnits(left.submission_id, right.submission_id)),
|
|
40
57
|
};
|
|
41
58
|
}
|
|
42
59
|
/**
|
|
@@ -61,9 +78,9 @@ export function mergeExpectedSets(base, additional) {
|
|
|
61
78
|
set: {
|
|
62
79
|
contract_version: EXPECTED_SET_CONTRACT_VERSION,
|
|
63
80
|
run_id: additional.run_id,
|
|
64
|
-
entries: [...merged.values()].sort((left, right) =>
|
|
81
|
+
entries: [...merged.values()].sort((left, right) => compareCodeUnits(left.submission_id, right.submission_id)),
|
|
65
82
|
},
|
|
66
|
-
addedIds: addedIds.sort(
|
|
83
|
+
addedIds: addedIds.sort(compareCodeUnits),
|
|
67
84
|
};
|
|
68
85
|
}
|
|
69
86
|
/** Drop members that are no longer owed (they were accepted and applied). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expectedSubmissions.js","sourceRoot":"","sources":["../../../src/shared/submission/expectedSubmissions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"expectedSubmissions.js","sourceRoot":"","sources":["../../../src/shared/submission/expectedSubmissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/** Code-unit lexical order — the shared comparator for every id sort here. */
|
|
2
|
-
export declare function compareCodeUnits(left: string, right: string): number;
|
|
3
|
-
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
4
1
|
/** Exact key set, order-insensitive: a persisted envelope admits no extra keys. */
|
|
5
2
|
export declare function hasExactKeys(value: Record<string, unknown>, expected: readonly string[]): boolean;
|
|
6
3
|
export declare function isSha256(value: unknown): value is string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hostHandoffCore.d.ts","sourceRoot":"","sources":["../../../src/shared/submission/hostHandoffCore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hostHandoffCore.d.ts","sourceRoot":"","sources":["../../../src/shared/submission/hostHandoffCore.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,17 +15,12 @@
|
|
|
15
15
|
// Sibling modules imported DIRECTLY, never through ../index.js: the barrel
|
|
16
16
|
// re-exports this module, so importing the barrel here would close a cycle
|
|
17
17
|
// (index → hostHandoffCore → index) that check:depgraph refuses.
|
|
18
|
+
import { compareCodeUnits } from "../compareCodeUnits.js";
|
|
18
19
|
import { hashContent } from "../hash.js";
|
|
19
20
|
import { stableStringify } from "../stableStringify.js";
|
|
21
|
+
import { isRecord } from "../validation/basic.js";
|
|
20
22
|
import { assertSubmissionRunId, resolveContainedPath, submissionPathFor, } from "./submissionIdentity.js";
|
|
21
23
|
import { join, resolve } from "node:path";
|
|
22
|
-
/** Code-unit lexical order — the shared comparator for every id sort here. */
|
|
23
|
-
export function compareCodeUnits(left, right) {
|
|
24
|
-
return left < right ? -1 : left > right ? 1 : 0;
|
|
25
|
-
}
|
|
26
|
-
export function isRecord(value) {
|
|
27
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
28
|
-
}
|
|
29
24
|
/** Exact key set, order-insensitive: a persisted envelope admits no extra keys. */
|
|
30
25
|
export function hasExactKeys(value, expected) {
|
|
31
26
|
const actual = Object.keys(value).sort(compareCodeUnits);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hostHandoffCore.js","sourceRoot":"","sources":["../../../src/shared/submission/hostHandoffCore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,2EAA2E;AAC3E,2EAA2E;AAC3E,iEAAiE;AACjE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"hostHandoffCore.js","sourceRoot":"","sources":["../../../src/shared/submission/hostHandoffCore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submissionIdentity.d.ts","sourceRoot":"","sources":["../../../src/shared/submission/submissionIdentity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"submissionIdentity.d.ts","sourceRoot":"","sources":["../../../src/shared/submission/submissionIdentity.ts"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,+DAA+D;AAC/D,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAOD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAMjE;AAUD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,MAAM,GACnB,MAAM,CAMR;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,MAAM,GACnB,MAAM,CAMR;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,MAAM,CASR;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GACZ,MAAM,CAOR;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAW,GAAG,IAAI,CAQ3E"}
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
* it. It replaces the two hand-rolled `resultPathFor` copies that carried the
|
|
12
12
|
* same rule in two places.
|
|
13
13
|
*/
|
|
14
|
-
import {
|
|
14
|
+
import { relative, resolve } from "node:path";
|
|
15
|
+
import { resolveWithinRoot } from "../io/pathContainment.js";
|
|
15
16
|
import { hashContent } from "../hash.js";
|
|
16
17
|
import { stableStringify } from "../stableStringify.js";
|
|
17
18
|
/** Non-path-safe characters collapse so the id stays readable in a ledger. */
|
|
@@ -66,15 +67,13 @@ export function submissionPathFor(paths, submissionId) {
|
|
|
66
67
|
*/
|
|
67
68
|
export function resolveContainedPath(base, candidate, label) {
|
|
68
69
|
const absoluteBase = resolve(base);
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
const firstSegment = rel.split(/[\\/]/u)[0];
|
|
74
|
-
if (isAbsolute(rel) || firstSegment === "..") {
|
|
70
|
+
// Predicate from the ONE containment guard; only the error message (pinned
|
|
71
|
+
// by the submission-path tests) stays caller-specific.
|
|
72
|
+
const resolved = resolveWithinRoot(absoluteBase, candidate);
|
|
73
|
+
if (resolved === null) {
|
|
75
74
|
throw new Error(`${label} must remain beneath ${absoluteBase}`);
|
|
76
75
|
}
|
|
77
|
-
return
|
|
76
|
+
return resolved;
|
|
78
77
|
}
|
|
79
78
|
/** Repository-relative, forward-slashed form of a contained absolute path. */
|
|
80
79
|
export function repoRelativePath(root, absolutePath, label) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submissionIdentity.js","sourceRoot":"","sources":["../../../src/shared/submission/submissionIdentity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"submissionIdentity.js","sourceRoot":"","sources":["../../../src/shared/submission/submissionIdentity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ONE per-item host-submission scan both ingests draw from.
|
|
3
|
+
*
|
|
4
|
+
* Every submitted work item crosses the same four-step gate before any draw's
|
|
5
|
+
* domain work begins: resolve the bound path inside the boundary, read the
|
|
6
|
+
* bytes, classify a missing / unparseable / contract-invalid document, and
|
|
7
|
+
* refuse a `result_id` the caller has already seen. Both twins hand-rolled that
|
|
8
|
+
* sequence — audit in `readSubmittedResult` plus an inline duplicate check,
|
|
9
|
+
* remediate inline in its ingest loop — and the two copies had already drifted
|
|
10
|
+
* on CONTAINMENT: remediate re-checked the resolved path under the artifacts
|
|
11
|
+
* dir, audit checked the root only. This module resolves that in the stricter
|
|
12
|
+
* direction for BOTH draws.
|
|
13
|
+
*
|
|
14
|
+
* What it deliberately does NOT own — because these are the places the draws
|
|
15
|
+
* genuinely differ, not places they drifted:
|
|
16
|
+
*
|
|
17
|
+
* - the MESSAGE TEXT of each refusal (a per-draw renderer supplies it; the two
|
|
18
|
+
* vocabularies are test-pinned and address different readers);
|
|
19
|
+
* - the DOMAIN PARSER (a callback; each draw's parser stays standalone, so the
|
|
20
|
+
* hand-recovery lane can wrap `parseResult` directly and stay parity-pinned);
|
|
21
|
+
* - identity enforcement, which lives INSIDE those parsers — hoisting it would
|
|
22
|
+
* change refusal precedence for a doubly-bad document;
|
|
23
|
+
* - loop iteration, aggregation order, seen-set seeding, and the TIMING of the
|
|
24
|
+
* duplicate consume. Audit seeds from its persisted accepted ledger and
|
|
25
|
+
* consumes only after conversion, validation and grounding; remediate uses a
|
|
26
|
+
* fresh per-call set and consumes at parse. This scan only CHECKS.
|
|
27
|
+
*/
|
|
28
|
+
import { type SubmissionIssue } from "./submissionClassifier.js";
|
|
29
|
+
/**
|
|
30
|
+
* The domain parser's answer, normalized. `detail` is handed straight to the
|
|
31
|
+
* draw's `contractInvalid` renderer — the scan never composes refusal prose of
|
|
32
|
+
* its own.
|
|
33
|
+
*/
|
|
34
|
+
export type SubmissionParse<TParsed> = {
|
|
35
|
+
readonly ok: true;
|
|
36
|
+
readonly parsed: TParsed;
|
|
37
|
+
} | {
|
|
38
|
+
readonly ok: false;
|
|
39
|
+
readonly detail: string;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* The per-draw refusal vocabulary. Text is a DRAW concern: the audit ingest
|
|
43
|
+
* addresses a host repairing a bound result file, remediate addresses one
|
|
44
|
+
* repairing a pending work item, and several strings are pinned by tests.
|
|
45
|
+
*/
|
|
46
|
+
export interface SubmissionScanMessages {
|
|
47
|
+
/** Nothing exists at the bound path. */
|
|
48
|
+
readonly missing: () => string;
|
|
49
|
+
/** Bytes exist but are not JSON; `detail` is the parse/IO reason. */
|
|
50
|
+
readonly malformed: (detail: string) => string;
|
|
51
|
+
/** JSON that the domain parser refused; `detail` is its stated reason. */
|
|
52
|
+
readonly contractInvalid: (detail: string) => string;
|
|
53
|
+
/** The parsed result re-uses an identity the caller has already seen. */
|
|
54
|
+
readonly duplicate: (resultId: string) => string;
|
|
55
|
+
}
|
|
56
|
+
/** Either the parsed submission, or the ONE issue that names why not. */
|
|
57
|
+
export type SubmissionScanOutcome<TParsed> = {
|
|
58
|
+
readonly ok: true;
|
|
59
|
+
readonly parsed: TParsed;
|
|
60
|
+
} | {
|
|
61
|
+
readonly ok: false;
|
|
62
|
+
readonly issue: SubmissionIssue;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Scan one bound submission. Throws only where the twins already threw: a bound
|
|
66
|
+
* path that escapes the repository root or the artifacts dir is a boundary
|
|
67
|
+
* violation, not a classified submission failure.
|
|
68
|
+
*/
|
|
69
|
+
export declare function scanBoundSubmission<TParsed>(params: {
|
|
70
|
+
/** Absolute repository root the bound path is expressed relative to. */
|
|
71
|
+
readonly root: string;
|
|
72
|
+
/** Absolute artifacts dir the submission must also stay beneath. */
|
|
73
|
+
readonly artifactsDir: string;
|
|
74
|
+
/** Names the item in the containment refusal and in both issue locators. */
|
|
75
|
+
readonly workItemId: string;
|
|
76
|
+
/** Repository-relative bound path, as the persisted contract declares it. */
|
|
77
|
+
readonly resultPath: string;
|
|
78
|
+
/** The draw's standalone contract gate. */
|
|
79
|
+
readonly parse: (value: unknown) => SubmissionParse<TParsed>;
|
|
80
|
+
/** The submitted identity the duplicate check is asked about. */
|
|
81
|
+
readonly resultId: (parsed: TParsed) => string;
|
|
82
|
+
/** Caller-owned predicate; seeding and consume timing stay per-draw. */
|
|
83
|
+
readonly seen: (resultId: string) => boolean;
|
|
84
|
+
readonly messages: SubmissionScanMessages;
|
|
85
|
+
}): Promise<SubmissionScanOutcome<TParsed>>;
|
|
86
|
+
//# sourceMappingURL=submissionScan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submissionScan.d.ts","sourceRoot":"","sources":["../../../src/shared/submission/submissionScan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,2BAA2B,CAAC;AAGnC;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,OAAO,IAC/B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC/C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC;IAC/B,qEAAqE;IACrE,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,0EAA0E;IAC1E,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACrD,yEAAyE;IACzE,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CAClD;AAED,yEAAyE;AACzE,MAAM,MAAM,qBAAqB,CAAC,OAAO,IACrC;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC/C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;CAAE,CAAC;AAE5D;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE;IACzD,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7D,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC;IAC/C,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;CAC3C,GAAG,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CA2D1C"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ONE per-item host-submission scan both ingests draw from.
|
|
3
|
+
*
|
|
4
|
+
* Every submitted work item crosses the same four-step gate before any draw's
|
|
5
|
+
* domain work begins: resolve the bound path inside the boundary, read the
|
|
6
|
+
* bytes, classify a missing / unparseable / contract-invalid document, and
|
|
7
|
+
* refuse a `result_id` the caller has already seen. Both twins hand-rolled that
|
|
8
|
+
* sequence — audit in `readSubmittedResult` plus an inline duplicate check,
|
|
9
|
+
* remediate inline in its ingest loop — and the two copies had already drifted
|
|
10
|
+
* on CONTAINMENT: remediate re-checked the resolved path under the artifacts
|
|
11
|
+
* dir, audit checked the root only. This module resolves that in the stricter
|
|
12
|
+
* direction for BOTH draws.
|
|
13
|
+
*
|
|
14
|
+
* What it deliberately does NOT own — because these are the places the draws
|
|
15
|
+
* genuinely differ, not places they drifted:
|
|
16
|
+
*
|
|
17
|
+
* - the MESSAGE TEXT of each refusal (a per-draw renderer supplies it; the two
|
|
18
|
+
* vocabularies are test-pinned and address different readers);
|
|
19
|
+
* - the DOMAIN PARSER (a callback; each draw's parser stays standalone, so the
|
|
20
|
+
* hand-recovery lane can wrap `parseResult` directly and stay parity-pinned);
|
|
21
|
+
* - identity enforcement, which lives INSIDE those parsers — hoisting it would
|
|
22
|
+
* change refusal precedence for a doubly-bad document;
|
|
23
|
+
* - loop iteration, aggregation order, seen-set seeding, and the TIMING of the
|
|
24
|
+
* duplicate consume. Audit seeds from its persisted accepted ledger and
|
|
25
|
+
* consumes only after conversion, validation and grounding; remediate uses a
|
|
26
|
+
* fresh per-call set and consumes at parse. This scan only CHECKS.
|
|
27
|
+
*/
|
|
28
|
+
// Sibling modules imported DIRECTLY, never through ../index.js: the barrel
|
|
29
|
+
// re-exports this module, so importing the barrel here would close a cycle
|
|
30
|
+
// (index → submissionScan → index) that check:depgraph refuses.
|
|
31
|
+
import { readSubmissionDocument, } from "./submissionClassifier.js";
|
|
32
|
+
import { resolveContainedPath } from "./submissionIdentity.js";
|
|
33
|
+
/**
|
|
34
|
+
* Scan one bound submission. Throws only where the twins already threw: a bound
|
|
35
|
+
* path that escapes the repository root or the artifacts dir is a boundary
|
|
36
|
+
* violation, not a classified submission failure.
|
|
37
|
+
*/
|
|
38
|
+
export async function scanBoundSubmission(params) {
|
|
39
|
+
const locators = {
|
|
40
|
+
work_item_id: params.workItemId,
|
|
41
|
+
result_path: params.resultPath,
|
|
42
|
+
};
|
|
43
|
+
const label = `result path for ${params.workItemId}`;
|
|
44
|
+
const absolutePath = resolveContainedPath(params.root, params.resultPath, label);
|
|
45
|
+
// Both boundaries, both draws: a submission lives under the artifacts dir,
|
|
46
|
+
// and root containment alone would admit any other tracked file in the repo.
|
|
47
|
+
resolveContainedPath(params.artifactsDir, absolutePath, label);
|
|
48
|
+
const read = await readSubmissionDocument(absolutePath);
|
|
49
|
+
if (read.kind === "missing") {
|
|
50
|
+
return {
|
|
51
|
+
ok: false,
|
|
52
|
+
issue: {
|
|
53
|
+
code: "submission_missing",
|
|
54
|
+
message: params.messages.missing(),
|
|
55
|
+
...locators,
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
if (read.kind === "malformed") {
|
|
60
|
+
return {
|
|
61
|
+
ok: false,
|
|
62
|
+
issue: {
|
|
63
|
+
code: "submission_malformed",
|
|
64
|
+
message: params.messages.malformed(read.detail),
|
|
65
|
+
...locators,
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const parsed = params.parse(read.value);
|
|
70
|
+
if (!parsed.ok) {
|
|
71
|
+
return {
|
|
72
|
+
ok: false,
|
|
73
|
+
issue: {
|
|
74
|
+
code: "submission_contract_invalid",
|
|
75
|
+
message: params.messages.contractInvalid(parsed.detail),
|
|
76
|
+
...locators,
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const resultId = params.resultId(parsed.parsed);
|
|
81
|
+
if (params.seen(resultId)) {
|
|
82
|
+
return {
|
|
83
|
+
ok: false,
|
|
84
|
+
issue: {
|
|
85
|
+
code: "duplicate_submission_id",
|
|
86
|
+
message: params.messages.duplicate(resultId),
|
|
87
|
+
...locators,
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
return { ok: true, parsed: parsed.parsed };
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=submissionScan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submissionScan.js","sourceRoot":"","sources":["../../../src/shared/submission/submissionScan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,2EAA2E;AAC3E,2EAA2E;AAC3E,gEAAgE;AAChE,OAAO,EACL,sBAAsB,GAEvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAgC/D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAU,MAgBlD;IACC,MAAM,QAAQ,GAAG;QACf,YAAY,EAAE,MAAM,CAAC,UAAU;QAC/B,WAAW,EAAE,MAAM,CAAC,UAAU;KACtB,CAAC;IACX,MAAM,KAAK,GAAG,mBAAmB,MAAM,CAAC,UAAU,EAAE,CAAC;IACrD,MAAM,YAAY,GAAG,oBAAoB,CACvC,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,UAAU,EACjB,KAAK,CACN,CAAC;IACF,2EAA2E;IAC3E,6EAA6E;IAC7E,oBAAoB,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IAE/D,MAAM,IAAI,GAAG,MAAM,sBAAsB,CAAC,YAAY,CAAC,CAAC;IACxD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;gBAClC,GAAG,QAAQ;aACZ;SACF,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,sBAAsB;gBAC5B,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC/C,GAAG,QAAQ;aACZ;SACF,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,6BAA6B;gBACnC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;gBACvD,GAAG,QAAQ;aACZ;SACF,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC;gBAC5C,GAAG,QAAQ;aACZ;SACF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -8,9 +8,13 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import type { ObligationEntry, ObligationLedger } from "./contractPipeline.js";
|
|
10
10
|
/**
|
|
11
|
-
* Detect cycles in an obligation dependency graph
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* Detect cycles in an obligation dependency graph. Returns the IDs of
|
|
12
|
+
* obligations forming the first cycle detected as a witness path with its start
|
|
13
|
+
* repeated at the end (`["A","B","A"]`), or null when the graph is acyclic.
|
|
14
|
+
*
|
|
15
|
+
* A thin draw over the shared directed-cycle core: an obligation that depends
|
|
16
|
+
* on ITSELF is a cycle here (self-loops included), and dependencies naming an
|
|
17
|
+
* id outside the ledger are external references the core ignores.
|
|
14
18
|
*
|
|
15
19
|
* INV-shared-core-07: called at construction time so a cycle is caught early
|
|
16
20
|
* rather than causing an infinite loop or confusing error at scheduling time.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obligationLedger.d.ts","sourceRoot":"","sources":["../../../src/shared/types/obligationLedger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"obligationLedger.d.ts","sourceRoot":"","sources":["../../../src/shared/types/obligationLedger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAM/B;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,SAAS,eAAe,EAAE,GACtC,MAAM,EAAE,GAAG,IAAI,CAEjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,4BAA4B,GACpC,gBAAgB,CAgBlB"}
|
|
@@ -7,49 +7,21 @@
|
|
|
7
7
|
* if a dependency cycle is present.
|
|
8
8
|
*/
|
|
9
9
|
import { CONTRACT_PIPELINE_OBLIGATION_LEDGER_VERSION, } from "./contractPipeline.js";
|
|
10
|
+
import { findFirstCycleWitness } from "../graph/directedCycles.js";
|
|
10
11
|
/**
|
|
11
|
-
* Detect cycles in an obligation dependency graph
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* Detect cycles in an obligation dependency graph. Returns the IDs of
|
|
13
|
+
* obligations forming the first cycle detected as a witness path with its start
|
|
14
|
+
* repeated at the end (`["A","B","A"]`), or null when the graph is acyclic.
|
|
15
|
+
*
|
|
16
|
+
* A thin draw over the shared directed-cycle core: an obligation that depends
|
|
17
|
+
* on ITSELF is a cycle here (self-loops included), and dependencies naming an
|
|
18
|
+
* id outside the ledger are external references the core ignores.
|
|
14
19
|
*
|
|
15
20
|
* INV-shared-core-07: called at construction time so a cycle is caught early
|
|
16
21
|
* rather than causing an infinite loop or confusing error at scheduling time.
|
|
17
22
|
*/
|
|
18
23
|
export function detectObligationCycle(obligations) {
|
|
19
|
-
|
|
20
|
-
const depMap = new Map();
|
|
21
|
-
for (const o of obligations) {
|
|
22
|
-
depMap.set(o.id, o.depends_on.filter((dep) => idSet.has(dep)));
|
|
23
|
-
}
|
|
24
|
-
// Three-color DFS: 0 = unvisited, 1 = in-stack (gray), 2 = done (black).
|
|
25
|
-
const color = new Map();
|
|
26
|
-
const path = [];
|
|
27
|
-
function dfs(id) {
|
|
28
|
-
const c = color.get(id) ?? 0;
|
|
29
|
-
if (c === 2)
|
|
30
|
-
return null; // already done
|
|
31
|
-
if (c === 1) {
|
|
32
|
-
// Cycle detected: return the cycle slice.
|
|
33
|
-
const cycleStart = path.indexOf(id);
|
|
34
|
-
return path.slice(cycleStart).concat(id);
|
|
35
|
-
}
|
|
36
|
-
color.set(id, 1);
|
|
37
|
-
path.push(id);
|
|
38
|
-
for (const dep of depMap.get(id) ?? []) {
|
|
39
|
-
const cycle = dfs(dep);
|
|
40
|
-
if (cycle)
|
|
41
|
-
return cycle;
|
|
42
|
-
}
|
|
43
|
-
path.pop();
|
|
44
|
-
color.set(id, 2);
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
for (const o of obligations) {
|
|
48
|
-
const cycle = dfs(o.id);
|
|
49
|
-
if (cycle)
|
|
50
|
-
return cycle;
|
|
51
|
-
}
|
|
52
|
-
return null;
|
|
24
|
+
return findFirstCycleWitness(obligations, { includeSelfLoops: true });
|
|
53
25
|
}
|
|
54
26
|
/**
|
|
55
27
|
* Build a validated ObligationLedger.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obligationLedger.js","sourceRoot":"","sources":["../../../src/shared/types/obligationLedger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EACL,2CAA2C,GAC5C,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"obligationLedger.js","sourceRoot":"","sources":["../../../src/shared/types/obligationLedger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EACL,2CAA2C,GAC5C,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAuC;IAEvC,OAAO,qBAAqB,CAAC,WAAW,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;AACxE,CAAC;AAQD;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAqC;IAErC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAErD,MAAM,KAAK,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,wFAAwF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAC5G,CAAC;IACJ,CAAC;IAED,OAAO;QACL,gBAAgB,EAAE,2CAA2C;QAC7D,OAAO;QACP,WAAW;QACX,UAAU,EAAE,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACnD,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findingsReport.d.ts","sourceRoot":"","sources":["../../../src/shared/validation/findingsReport.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"findingsReport.d.ts","sourceRoot":"","sources":["../../../src/shared/validation/findingsReport.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAI9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,eAAO,MAAM,+BAA+B,EAC1C,qCAA8C,CAAC;AAEjD,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,UAAU,GAAG,qBAAqB,CAAC;IAC3C,MAAM,EAAE,UAAU,GAAG,sBAAsB,CAAC;IAC5C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,cAAc,EAAE,qBAAqB,CAAC;IACtC,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;CAC1D;AAwWD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,EACd,IAAI,SAAK,GACR,eAAe,EAAE,CAEnB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,0BAA0B,CAUlF;AAmBD;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,OAAO,EACd,gBAAgB,EAAE,SAAS,OAAO,EAAE,GACnC,mBAAmB,CAoKrB;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,mBAAmB,CAE9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMnE"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { AuditFindingsReportSchema, } from "../types/finding.js";
|
|
6
6
|
import { workBlockSeamRationale } from "../decompose/workBlockSeams.js";
|
|
7
|
+
import { compareCodeUnits } from "../compareCodeUnits.js";
|
|
7
8
|
import { severityRank } from "../types/lens.js";
|
|
8
9
|
import { isRecord, pushValidationIssue } from "./basic.js";
|
|
9
10
|
export const AUDIT_FINDINGS_CONTRACT_VERSION = "audit-tools/audit-findings/v1alpha1";
|
|
@@ -251,7 +252,7 @@ function projectedBreakdown(original, values) {
|
|
|
251
252
|
return projected;
|
|
252
253
|
}
|
|
253
254
|
function stableUnique(values) {
|
|
254
|
-
return [...new Set(values)].sort(
|
|
255
|
+
return [...new Set(values)].sort(compareCodeUnits);
|
|
255
256
|
}
|
|
256
257
|
/**
|
|
257
258
|
* Project a validated audit report onto an approved finding subset without
|