{
"file": "frontend/src/components/__tests__/task_log_viewer.test.js",
"verdict": "APPROVED",
"rejection_reason": "NONE",
"audit_details": {
"target_invoked": true,
"pre_conditions_tested": true,
"post_conditions_tested": true,
"test_fixture_used": true,
"edges_covered": true,
"invariants_verified": true,
"ux_states_tested": true,
"semantic_anchors_present": true
},
"coverage_summary": {
"total_edges": 2,
"edges_tested": 2,
"total_invariants": 1,
"invariants_tested": 1,
"total_ux_states": 3,
"ux_states_tested": 3
},
"tier_compliance": {
"source_tier": "CRITICAL",
"meets_tier_requirements": true
},
"feedback": "Remediation successful: test tier matches CRITICAL, missing missing @TEST_EDGE no_task_id coverage added, test for @UX_FEEDBACK (autoScroll) added properly, missing inline=false (show=true) tested properly. Semantic RELATION tag fixed to VERIFIES."
},
{
"file": "frontend/src/lib/components/reports/__tests__/report_card.ux.test.js",
"verdict": "APPROVED",
"rejection_reason": "NONE",
"audit_details": {
"target_invoked": true,
"pre_conditions_tested": true,
"post_conditions_tested": true,
"test_fixture_used": true,
"edges_covered": true,
"invariants_verified": true,
"ux_states_tested": true,
"semantic_anchors_present": true
},
"coverage_summary": {
"total_edges": 2,
"edges_tested": 2,
"total_invariants": 1,
"invariants_tested": 1,
"total_ux_states": 2,
"ux_states_tested": 2
},
"tier_compliance": {
"source_tier": "CRITICAL",
"meets_tier_requirements": true
},
"feedback": "Remediation successful: @TEST_EDGE random_status and @TEST_EDGE empty_report_object tests explicitly assert on outcomes, @TEST_FIXTURE tested completely, Test tier switched to CRITICAL."
},
{
"file": "backend/tests/test_logger.py",
"verdict": "APPROVED",
"rejection_reason": "NONE",
"audit_details": {
"target_invoked": true,
"pre_conditions_tested": true,
"post_conditions_tested": true,
"test_fixture_used": true,
"edges_covered": true,
"invariants_verified": true,
"ux_states_tested": false,
"semantic_anchors_present": true
},
"coverage_summary": {
"total_edges": 0,
"edges_tested": 0,
"total_invariants": 0,
"invariants_tested": 0,
"total_ux_states": 0,
"ux_states_tested": 0
},
"tier_compliance": {
"source_tier": "STANDARD",
"meets_tier_requirements": true
},
"feedback": "Remediation successful: Test module semantic anchors added [DEF] and [/DEF] explicitly. Added missing @TIER tag and @RELATION: VERIFIES -> src/core/logger.py at the top of the file."
}
]
67 lines
2.5 KiB
Python
67 lines
2.5 KiB
Python
# [DEF:backend.src.services.clean_release.preparation_service:Module]
|
|
# @TIER: STANDARD
|
|
# @SEMANTICS: clean-release, preparation, manifest, policy-evaluation
|
|
# @PURPOSE: Prepare release candidate by policy evaluation and deterministic manifest creation.
|
|
# @LAYER: Domain
|
|
# @RELATION: DEPENDS_ON -> backend.src.services.clean_release.policy_engine
|
|
# @RELATION: DEPENDS_ON -> backend.src.services.clean_release.manifest_builder
|
|
# @RELATION: DEPENDS_ON -> backend.src.services.clean_release.repository
|
|
# @INVARIANT: Candidate preparation always persists manifest and candidate status deterministically.
|
|
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime, timezone
|
|
from typing import Dict, Iterable
|
|
|
|
from .manifest_builder import build_distribution_manifest
|
|
from .policy_engine import CleanPolicyEngine
|
|
from .repository import CleanReleaseRepository
|
|
from ...models.clean_release import ReleaseCandidateStatus
|
|
|
|
|
|
def prepare_candidate(
|
|
repository: CleanReleaseRepository,
|
|
candidate_id: str,
|
|
artifacts: Iterable[Dict],
|
|
sources: Iterable[str],
|
|
operator_id: str,
|
|
) -> Dict:
|
|
candidate = repository.get_candidate(candidate_id)
|
|
if candidate is None:
|
|
raise ValueError(f"Candidate not found: {candidate_id}")
|
|
|
|
policy = repository.get_active_policy()
|
|
if policy is None:
|
|
raise ValueError("Active clean policy not found")
|
|
|
|
registry = repository.get_registry(policy.internal_source_registry_ref)
|
|
if registry is None:
|
|
raise ValueError("Registry not found for active policy")
|
|
|
|
engine = CleanPolicyEngine(policy=policy, registry=registry)
|
|
validation = engine.validate_policy()
|
|
if not validation.ok:
|
|
raise ValueError(f"Invalid policy: {validation.blocking_reasons}")
|
|
|
|
classified, violations = engine.evaluate_candidate(artifacts=artifacts, sources=sources)
|
|
|
|
manifest = build_distribution_manifest(
|
|
manifest_id=f"manifest-{candidate_id}",
|
|
candidate_id=candidate_id,
|
|
policy_id=policy.policy_id,
|
|
generated_by=operator_id,
|
|
artifacts=classified,
|
|
)
|
|
repository.save_manifest(manifest)
|
|
|
|
candidate.status = ReleaseCandidateStatus.BLOCKED if violations else ReleaseCandidateStatus.PREPARED
|
|
repository.save_candidate(candidate)
|
|
|
|
return {
|
|
"candidate_id": candidate_id,
|
|
"status": candidate.status.value,
|
|
"manifest_id": manifest.manifest_id,
|
|
"violations": violations,
|
|
"prepared_at": datetime.now(timezone.utc).isoformat(),
|
|
}
|
|
# [/DEF:backend.src.services.clean_release.preparation_service:Module] |