feat: refocus on drawings — code/ADA gated off, drawing-integrity wave, Brain-directed clarification
Docker Release / build-and-push (push) Successful in 1m8s
Docker Release / release (push) Skipped

- ENABLE_CODE_REVIEW flag (default off): skips code/ADA/jurisdiction review
  path in both pipelines; nothing deleted, one env flag to restore.
- Per-sheet Drawing Integrity QA wave (agent + classic, default on):
  dangling refs, on-sheet contradictions, dimension sanity, missing sheet
  essentials, tag hygiene. New DrawingIntegrityAgent + classic stage.
- Broadened conflict critic: intra-sheet + same-discipline contradictions,
  not just cross-discipline.
- Wave 6.5 Brain-directed clarification (bounded hub-and-spoke): Brain names
  uncertain findings, verify_evidence requests route through the wave-5b
  verifier; refuted findings suppressed. One planning call + capped verifies,
  single iteration. Shared _build_verify_scopes across 5b and 6.5.
- Config knobs, .env.example, frontend copy, tests (182 passing).
This commit is contained in:
2026-08-20 15:10:32 -05:00
parent bae608a505
commit d37ac8c1c7
22 changed files with 1917 additions and 63 deletions
+14 -3
View File
@@ -39,6 +39,7 @@ from backend.agents.disputes import annotate_clusters
from backend.pipeline.conflict_checker import check_conflicts
from backend.pipeline.qaqc_review import senior_review
from backend.pipeline.code_review import code_review
from backend.pipeline.drawing_integrity import drawing_integrity_review
from backend.pipeline.constructability import constructability_review
from backend.pipeline.validator import dedup_validate
from backend.pipeline.risk import score_and_prioritize
@@ -158,15 +159,23 @@ def _run_stages(
stage("Full-set QAQC review")
qaqc_issues = senior_review(sheets, clusters, conflicts, sheet_index)
stage("Code / ADA review")
code_issues = code_review(jurisdiction, sheets, sheet_index)
if config.ENABLE_CODE_REVIEW:
stage("Code / ADA review")
code_issues = code_review(jurisdiction, sheets, sheet_index)
else:
print("[Code] code/ADA review disabled (ENABLE_CODE_REVIEW=0)")
code_issues = []
stage("Drawing integrity (per-sheet QA)")
integrity_issues = drawing_integrity_review(sheets, pages)
stage("Constructability review")
construct_issues = constructability_review(sheets, clusters, conflicts)
stage("Validate & deduplicate")
conflict_issues = [v for v in (validate_issue(c, "conflict") for c in conflicts) if v]
all_issues = conflict_issues + qaqc_issues + code_issues + construct_issues
all_issues = (conflict_issues + integrity_issues + qaqc_issues
+ code_issues + construct_issues)
validated = dedup_validate(all_issues)
stage("Risk scoring & prioritization")
@@ -189,6 +198,7 @@ def _run_stages(
"conflicts": len(conflicts),
"qaqc": len(qaqc_issues),
"code": len(code_issues),
"drawing_integrity": len(integrity_issues),
"constructability": len(construct_issues),
"validated": len(validated),
"rfis": len(rfis),
@@ -213,6 +223,7 @@ def _run_stages(
_dump(out_dir, "project_intelligence.json", project_intel)
_dump(out_dir, "qaqc_issues.json", qaqc_issues)
_dump(out_dir, "code_issues.json", code_issues)
_dump(out_dir, "drawing_integrity.json", integrity_issues)
_dump(out_dir, "constructability.json", construct_issues)
_dump(out_dir, "validated_issues.json", prioritized)
_dump(out_dir, "rfis.json", rfis)