Skip to content

Enhance demo runner testing summary#18

Closed
DevOpsMadDog wants to merge 5 commits into
mainfrom
codex/count-lines-of-code-by-status
Closed

Enhance demo runner testing summary#18
DevOpsMadDog wants to merge 5 commits into
mainfrom
codex/count-lines-of-code-by-status

Conversation

@DevOpsMadDog
Copy link
Copy Markdown
Owner

Summary

  • treat demo stage fallbacks as warnings and surface them in the CLI summary with explicit notes
  • report overall testing coverage and percentage success rate, along with a per-stage status list for transparency

Testing

  • python fixops-blended-enterprise/scripts/run_end_to_end_demo.py

https://chatgpt.com/codex/tasks/task_e_68def504b34483298567af4be8dc6264

DevOpsMadDog added a commit that referenced this pull request Apr 26, 2026
…oday's closures

- docs/SPRINT_2_DEMO_BACKLOG_2026-04-22.md: DEMO-001..DEMO-005 P0 items
  with owners, acceptance criteria, 44h total effort, sprint goal,
  definition of done, risks + mitigations.
- .omc/TASKS_STATE_2026-04-22.md: closed threads #1 (graphify visual,
  commit 7386db5) and #7 (TrueCourse side-by-side, commit 0639bb3);
  added new threads #9 (promote NEW-G070/G071 to gap-matrix + PRDs)
  and #10 (backend-code graphify ingest); flagged threads #17/#18 as
  in-flight (enterprise-architect reconcile + ux-architect UI dispatch).
- Historical task rows 1-12 preserved immutable.
- READ FIRST honest-state section preserved.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
DevOpsMadDog added a commit that referenced this pull request May 1, 2026
…se 3 cluster S27-Targets

Folds 3 outbound integration-target dashboards into a single tabbed hero
at /connect/targets per docs/UX_CONSOLIDATION_PLAN_2026-04-26.md §2.27.

  tab          | source page            | endpoint
  prowler      | ProwlerDashboard       | /api/v1/prowler/{findings,compliance,scan}
  servicenow   | ServiceNowDashboard    | /api/v1/servicenow/{connections,incidents,cmdb,mappings}
  siem         | SIEMOutputDashboard    | /api/v1/siem-output/{targets,events,stats}

- New: suite-ui/aldeci-ui-new/src/pages/IntegrationTargetsHub.tsx
- App.tsx: lazy-import hub; canonical /connect/targets route; old
  /prowler, /servicenow, /siem-output routes now <Navigate replace> with
  ?tab= preserving deep links.
- Source pages annotated with FOLDED comment for git history; lazy-imported
  by the hub so all behavior, API calls, and state preserved (no logic change).
- Plan doc updated with DONE marker (SHA backfilled in follow-up commit).

Persona target: DevOps Engineer (#18), SRE (#19), GRC Analyst (#12), SOC T2 (#6).
Zero functionality loss. Real-API only — no mocks introduced.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
DevOpsMadDog added a commit that referenced this pull request May 1, 2026
…r S10 Secrets

Folds the S10 Code Intelligence — Secrets sub-cluster into a single tabbed hero
at /discover/secrets-hub per docs/UX_CONSOLIDATION_PLAN_2026-04-26.md §2.10.

Pages folded (3 → 1):
- SecretsDetection            -> tab=detection (canonical default)
- SecretScannerDashboard      -> tab=scanner   (was orphan-imported, fold restores reachability)
- SecretsRotation             -> tab=rotation

Redirects (preserve persona muscle memory + bookmarks):
- /discover/secrets    -> /discover/secrets-hub?tab=detection
- /secret-scanner      -> /discover/secrets-hub?tab=scanner
- /secrets-rotation    -> /discover/secrets-hub?tab=rotation

Real APIs verified (Playwright, headless Chromium, all 6 URLs):
- /api/v1/secrets-management/{secrets,expiring,stats}
- /api/v1/secret-scanner/{scan-jobs,findings,stats}
- /api/v1/secrets
Zero mock signatures, zero page errors. Screenshot:
docs/ui-snapshots/ux-consolidation-secrets-hub-2026-05-02.png

Source pages preserved with FOLDED top-of-file marker (lazy-imported by
SecretsHub) so git blame stays intact and behavior is identical.

Persona target: AppSec Engineer (#10), DevOps (#18), SecOps T1/T2 (#5/#6).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
DevOpsMadDog added a commit that referenced this pull request May 1, 2026
… S28 Air-Gap operational triad

Folds 3 air-gap operational pages into a single tabbed Hub at /connect/mcp/air-gap
per docs/UX_CONSOLIDATION_PLAN_2026-04-26.md §2.28 (S28 MCP Gateway — Air-Gap
operational sub-cluster).

Sources (preserved + lazy re-imported, FOLDED markers added):
- AirGapBundleConsole       → tab "feed-status"   GET /api/v1/air-gap/feed-status
- OfflineFeedRegistry       → tab "feeds"         GET /api/v1/air-gap/feeds
- OfflineUpdateStatus       → tab "update-status" GET /api/v1/air-gap/update-status

Routes:
- canonical : /connect/mcp/air-gap
- redirects : /air-gap/feed-status   → /connect/mcp/air-gap?tab=feed-status
              /air-gap/feeds         → /connect/mcp/air-gap?tab=feeds
              /air-gap/update-status → /connect/mcp/air-gap?tab=update-status

Persona target: DevOps Engineer (#18), SRE (#19), Automation Engineer (#25) —
disconnected/regulated deployments. Surfaces CTEM+ air-gap moat in one screen
instead of three orphaned dashboards.

Verification (Playwright headless Chromium, 6 URLs):
- All 6 URLs resolve to canonical w/ correct tab
- Real /api/v1/air-gap/{feed-status,feeds,update-status} fires per active tab
- 0 mock signatures (Acme/John Doe/lorem ipsum/MOCK_)
- 0 console errors
- Screenshot: docs/ui-snapshots/ux-consolidation-air-gap-2026-05-02.png

Plan-doc paragraph added to §2.28 with SHA=PENDING (backfill in follow-up).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
DevOpsMadDog added a commit that referenced this pull request May 1, 2026
… 3 cluster S27 Webhook+Ingestion Health

Folds 3 standalone webhook + connector-pipeline pages into a single tabbed
hero per docs/UX_CONSOLIDATION_PLAN_2026-04-26.md §2.27 (S27 Integrations Hub
— Webhook & Integration Health sub-cluster).

  tab        | source page                    | endpoint
  -----------|--------------------------------|----------------------------------------------
  catalogue  | WebhookEventCatalogExplorer    | GET /api/v1/webhooks/event-catalogue
  retry      | WebhookRetryConsole            | GET /api/v1/webhooks/retry-queue
  dry-run    | UniversalIngestionTester       | POST /api/v1/connectors/mapping/dry-run

Canonical route: /connect/webhook-ingestion
Persona target: DevOps Engineer (#18), Automation Eng (#25), SRE (#19), Backend Eng (#16)

Old routes redirected (replaces stale /admin?tab=webhooks redirects + the
standalone /connectors/mapping/dry-run route):
  - /webhooks/event-catalogue   → /connect/webhook-ingestion?tab=catalogue
  - /webhooks/retry-queue       → /connect/webhook-ingestion?tab=retry
  - /connectors/mapping/dry-run → /connect/webhook-ingestion?tab=dry-run

Source pages preserved with `// FOLDED` headers (git-history intact, lazy-imported
into hub so all real /api/v1/* calls + 501-graceful handling continue working).

Verified per CLAUDE.md NO MOCKS rule:
  - Vite dev server returns 200 for /connect/webhook-ingestion (port 5173)
  - Hub module compiles cleanly (no TS errors against tsconfig.app.json)
  - All 3 folded pages already use real apiFetch against /api/v1/* endpoints

Multica: #3657

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
DevOpsMadDog added a commit that referenced this pull request May 2, 2026
…triage 248911b

18 FIX-IMPORT cases from suite-core/core triage (`docs/suite_core_silenced_imports_2026-05-03.md`).
Each broken import was silently swallowed by a try/except wrapper, masking
either a renamed/removed symbol or a never-implemented helper. Disposition
was determined per-callsite — when both the import name AND the consumer-side
method names had drifted, the safest correction is REMOVE (replace the
unreachable try-arm with the same fallback the broad-except already produced)
rather than RENAME (which would surface latent crashes through the new
broad-except). Pattern matches Wave-A in 60a8ea9 and the top-9 commit 55adab9.

Per-callsite dispositions (18 total):

  # 1 compliance_engine.py:958      get_latest_summary           REMOVED — no canonical helper
  # 2 task_queue.py:269              MicroPentestEngine           REMOVED — only Config/Result/Status
  # 3 task_queue.py:439              MicroPentestEngine           REMOVED — same
  # 4 pipeline_orchestrator.py:655   compute_exploit_probability  REMOVED — canonical compute_forecast
                                                                  has incompatible signature
  # 5 feed_correlator.py:293         abuseipdb get_by_cve         REMOVED — never implemented
  # 6 feed_correlator.py:306         otx get_by_cve               REMOVED — never implemented
  # 7 autofix_engine.py:1283         get_velocity_tracker/        REMOVED — only MaterialChangeDetector
                                     get_detector                 class exists; use class directly
  # 8 report_generator.py:337        ComplianceEngine             REMOVED — renamed to
                                                                  ComplianceAutomationEngine, no
                                                                  .get_controls method
  # 9 unified_dashboard.py:163       ComplianceEngine             REMOVED — same; no .get_summary
  #10 report_scheduler.py:526        ComplianceEngine             REMOVED — same; no .get_compliance_status
  #11 unified_dashboard.py:262       AttackSurfaceAnalyzer        REMOVED — renamed to
                                                                  AttackSurfaceMapper, returns
                                                                  Pydantic model not Dict
  #12 air_gap_bundle_engine.py:76    EmitEvent                    PRE-DONE in 55adab9 (verified)
  #13 brain_pipeline.py:881          blast_radius                 PRE-DONE in 55adab9 (verified)
  #14 graphql_schema.py:565          get_incident_manager         REMOVED — only IncidentResponseManager
  #15 graphql_schema.py:593          get_compliance_automation    RENAMED — use ComplianceAutomation class
  #16 graphql_schema.py:909          get_compliance_automation    RENAMED — same
  #17 graphql_schema.py:874          get_incident_manager,        REMOVED — neither symbol exists
                                     IncidentCreate
  #18 report_scheduler.py:499        CVEEnrichmentEngine          REMOVED — renamed to
                                                                  CVEEnrichmentService, no
                                                                  .get_recent_cves method
  #19 aws_security_hub.py:422        SecurityHubNormalizer        REMOVED — no AWS SH normalizer
                                                                  in scanner_parsers (33 vendor
                                                                  classes, none for SH)

Files touched (per-file diff stats):
  - suite-core/core/autofix_engine.py        (+10/-16)
  - suite-core/core/aws_security_hub.py      (+ 8/-28)
  - suite-core/core/compliance_engine.py     (+10/- 9)
  - suite-core/core/feed_correlator.py       (+19/-24)
  - suite-core/core/graphql_schema.py        (+38/-40)
  - suite-core/core/pipeline_orchestrator.py (+ 8/-15)
  - suite-core/core/report_generator.py      (+ 9/- 7)
  - suite-core/core/report_scheduler.py      (+15/-23)
  - suite-core/core/task_queue.py            (+22/-20)
  - suite-core/core/unified_dashboard.py     (+34/-32)

Net delta: -21 LOC.

Verified:
  - All 12 touched modules import clean (`importlib.import_module`).
  - py_compile clean on all 10 files.
  - 351/351 regression PASS on the 7 brief-specified suites
    (test_phase4/5/6/7/9 + test_pipeline_api + test_trustgraph) —
    identical to pre-edit baseline.

Cumulative suite-core silenced-import cleanup: 27/47 (top-9 in 55adab9 +
this batch of 18). Remaining: 20 INSTALL/RETIRE-DEP decisions (per-feature
judgment — quantum_crypto, llm_guard, chromadb, celery, pomegranate/mchmm/
river, sentry_sdk, GCP/PKCS11/peft/llama_cpp).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
DevOpsMadDog added a commit that referenced this pull request May 2, 2026
…ring, no stubs

Closes 4 type-a deferred empty endpoints from `docs/empty_endpoints_triage_2026-04-26.md`
by wiring **existing** cloud-credential-backed connectors (no new stubs; followed
the canonical fallback pattern from cloud-posture/findings + cwp/workloads):

| # | Endpoint                              | Connector / fallback source           |
|---|---------------------------------------|---------------------------------------|
| 14| /api/v1/session-recording/sessions    | CyberArkConnector (PAM)               |
| 20| /api/v1/sspm/apps                     | AppOmniConnector (SSPM)               |
| 18| /api/v1/cloud-cost/snapshots          | NEW AWSCostExplorerConnector (FinOps) |
|  3| /api/v1/asset-criticality/assets      | SecurityFindingsEngine projection     |

Pattern (5-state envelope, NEVER mocks):
  - org_registered      → real org rows from engine SQLite
  - {connector_source}  → projected from connector live data
  - needs_credentials   → structured hint listing required env vars
  - needs_data          → connector reachable but empty / filters miss
  - connector_error     → connector returned status != ok

For #18, built a brand-new `AWSCostExplorerConnector` (env-gated boto3 import;
gracefully no-ops without AWS creds OR boto3) — no behavioural dep on boto3 at
import time.

For #3, asset-criticality projects distinct asset_id from any
SecurityFindingsEngine row (CSPM/SSPM/PAM/EDR rows already include asset_id) →
derives criticality_score from severity weights (critical=25, high=15,
medium=7, low=2) → maps to tier (80+ critical / 60+ high / 40+ medium / <40
low).

Tests: 33 new (all passing) — 8 PSR/PAM, 8 SSPM/AppOmni, 8 cloud-cost/AWS, 9
asset-criticality. Each suite covers: org_registered precedence, projection
accuracy, filter application, connector_error envelope, needs_credentials
envelope, full HTTP path through TestClient + an error path (404).

Beast Mode: 753/753 baseline hold, +33 new = 786 passing. Zero regressions.

Type-a tally: 4 closed → tally now 8 closed / 2 deferred (was 6 deferred:
#3, #14, #18, #20 closed; #25 mobile-app-security and #27 ai-soc/detections
already wired in prior sessions).

Files changed:
  suite-core/connectors/aws_cost_explorer_connector.py            (NEW, +260)
  suite-core/core/privileged_session_recording_engine.py          (+ fallback)
  suite-core/core/saas_security_posture_engine.py                 (+ fallback)
  suite-core/core/cloud_cost_security_engine.py                   (+ fallback)
  suite-core/core/asset_criticality_engine.py                     (+ fallback)
  suite-api/apps/api/privileged_session_recording_router.py       (wire fallback)
  suite-api/apps/api/saas_security_posture_router.py              (wire fallback)
  suite-api/apps/api/cloud_cost_security_router.py                (wire fallback)
  suite-api/apps/api/asset_criticality_router.py                  (wire fallback)
  tests/test_session_recording_pam_real_data.py                   (NEW, 8 tests)
  tests/test_sspm_appomni_real_data.py                            (NEW, 8 tests)
  tests/test_cloud_cost_aws_real_data.py                          (NEW, 8 tests)
  tests/test_asset_criticality_findings_real_data.py              (NEW, 9 tests)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
DevOpsMadDog added a commit that referenced this pull request May 5, 2026
… green at HEAD 3eb988a

Beast Mode 13 files: 753/753. Perf -m perf: 194 passed, 2 skipped, 0 failed. OWASP lockdown: 47/47. 0 broken collectors. 0 regressions vs sweep #17.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
DevOpsMadDog added a commit that referenced this pull request May 5, 2026
Suite 1 Beast Mode 13 files: 753/753 passed in 8.57s
Suite 2 Perf -m perf: 194 passed, 2 skipped, 0 failed (44782 deselected) in 27.74s
Suite 3 OWASP lockdown (test_no_unsafe_asyncio_run.py): 1/1 passed in 6.06s

Commits validated since sweep #18: 48e6424 (CI ui-build-verification job),
e3b2660 (HANDOFF v10). Both docs/CI-only — zero production Python changes.
0 regressions. 4 pre-existing broken collectors unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant