[
{
"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."
}
]
This commit is contained in:
89
backend/src/services/clean_release/manifest_builder.py
Normal file
89
backend/src/services/clean_release/manifest_builder.py
Normal file
@@ -0,0 +1,89 @@
|
||||
# [DEF:backend.src.services.clean_release.manifest_builder:Module]
|
||||
# @TIER: STANDARD
|
||||
# @SEMANTICS: clean-release, manifest, deterministic-hash, summary
|
||||
# @PURPOSE: Build deterministic distribution manifest from classified artifact input.
|
||||
# @LAYER: Domain
|
||||
# @RELATION: DEPENDS_ON -> backend.src.models.clean_release
|
||||
# @INVARIANT: Equal semantic artifact sets produce identical deterministic hash values.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import hashlib
|
||||
import json
|
||||
from datetime import datetime, timezone
|
||||
from typing import Iterable, List, Dict, Any
|
||||
|
||||
from ...models.clean_release import (
|
||||
ClassificationType,
|
||||
DistributionManifest,
|
||||
ManifestItem,
|
||||
ManifestSummary,
|
||||
)
|
||||
|
||||
|
||||
def _stable_hash_payload(candidate_id: str, policy_id: str, items: List[ManifestItem]) -> str:
|
||||
serialized = [
|
||||
{
|
||||
"path": item.path,
|
||||
"category": item.category,
|
||||
"classification": item.classification.value,
|
||||
"reason": item.reason,
|
||||
"checksum": item.checksum,
|
||||
}
|
||||
for item in sorted(items, key=lambda i: (i.path, i.category, i.classification.value, i.reason, i.checksum or ""))
|
||||
]
|
||||
payload = {
|
||||
"candidate_id": candidate_id,
|
||||
"policy_id": policy_id,
|
||||
"items": serialized,
|
||||
}
|
||||
digest = hashlib.sha256(json.dumps(payload, ensure_ascii=False, sort_keys=True).encode("utf-8")).hexdigest()
|
||||
return digest
|
||||
|
||||
|
||||
# [DEF:build_distribution_manifest:Function]
|
||||
# @PURPOSE: Build DistributionManifest with deterministic hash and validated counters.
|
||||
# @PRE: artifacts list contains normalized classification values.
|
||||
# @POST: Returns DistributionManifest with summary counts matching items cardinality.
|
||||
def build_distribution_manifest(
|
||||
manifest_id: str,
|
||||
candidate_id: str,
|
||||
policy_id: str,
|
||||
generated_by: str,
|
||||
artifacts: Iterable[Dict[str, Any]],
|
||||
) -> DistributionManifest:
|
||||
items = [
|
||||
ManifestItem(
|
||||
path=a["path"],
|
||||
category=a["category"],
|
||||
classification=ClassificationType(a["classification"]),
|
||||
reason=a["reason"],
|
||||
checksum=a.get("checksum"),
|
||||
)
|
||||
for a in artifacts
|
||||
]
|
||||
|
||||
included_count = sum(1 for item in items if item.classification in {ClassificationType.REQUIRED_SYSTEM, ClassificationType.ALLOWED})
|
||||
excluded_count = sum(1 for item in items if item.classification == ClassificationType.EXCLUDED_PROHIBITED)
|
||||
prohibited_detected_count = excluded_count
|
||||
|
||||
summary = ManifestSummary(
|
||||
included_count=included_count,
|
||||
excluded_count=excluded_count,
|
||||
prohibited_detected_count=prohibited_detected_count,
|
||||
)
|
||||
|
||||
deterministic_hash = _stable_hash_payload(candidate_id, policy_id, items)
|
||||
|
||||
return DistributionManifest(
|
||||
manifest_id=manifest_id,
|
||||
candidate_id=candidate_id,
|
||||
policy_id=policy_id,
|
||||
generated_at=datetime.now(timezone.utc),
|
||||
generated_by=generated_by,
|
||||
items=items,
|
||||
summary=summary,
|
||||
deterministic_hash=deterministic_hash,
|
||||
)
|
||||
# [/DEF:build_distribution_manifest:Function]
|
||||
# [/DEF:backend.src.services.clean_release.manifest_builder:Module]
|
||||
Reference in New Issue
Block a user