Repository navigation
Conversation
Bounded TTL cache for the web DNS/NFM query layers, trace instance observations in the graph, and read-only tool-contract and prompt rules for the network, cost, CloudWatch, Flow Monitor and Tempo agent tools. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bounded scoped discovery, evidence admission index, workload identities, measured EC2 memory metrics, scoped member clients and report budget for the diagnosis worker, plus redaction updates, the RDS read-replica source column in the inventory sync and default-off worker IAM/env flags (diagnosis_evidence_loop_enabled, diagnosis_network_evidence_enabled). Nothing in the report path consumes these modules yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e-core-20261106 # Conflicts: # agent/lambda/aws_finops_mcp.py # agent/lambda/test_aws_finops_mcp.py # web/app/api/dns-logs/analytics/route.test.ts # web/app/api/dns-logs/analytics/route.ts # web/app/api/nfm/query/route.test.ts # web/app/api/nfm/query/route.ts # web/lib/CLAUDE.md # web/lib/bounded-cache.test.ts # web/lib/bounded-cache.ts # web/lib/dns-logs.ts # web/lib/nfm.ts
🤖 AI Code Review (two independent reviewers)Reviewer responses: batch 1/5: codex/ALL claude/ALL; batch 2/5: codex/ALL claude/ALL; batch 3/5: codex/ALL claude/ALL; batch 4/5: codex/ALL claude/ALL; batch 5/5: codex/ALL claude/ALL Status: BLOCKED — CRITICAL/MAJOR issues must be resolved before merge Reviewed in 5 complete batches split at file boundaries; every batch must pass. Batch 1/5 — FAILChair Synthesis — PR #246, Batch 1/5 (diagnosis discovery & evidence core: Terraform IAM gates, CI runtime-policy exemption, redaction, budget ledger)1. SummaryThis batch adds two default-off, read-only diagnosis IAM gates ( 2. Issues per lensL3 — Security / AWS mutation safety
L2 — Code correctness
L4 — Observability / data-integration correctness
L5 — Docs/ADR consistency
3. Suggestions
4. VerdictImage evidence: the manifest is IMAGE_COVERAGE: NOT_REQUIRED Blocking: one MAJOR in L3 (weakened CI gate around the cross-account AssumeRole exemption — both models converged from independent angles, chair-verified), one MAJOR in L4 (service-endpoint over-redaction, chair-verified mechanism), and two MAJORs in L5 (stale README/CHANGELOG not fixed by any batch; false synchronization contract in budget comments). Batch 2/5 — FAILAll disputed claims are now verified against BASE. I have everything needed to synthesize the chair review. Chair Review — PR #246, Batch 2/5 (
|
…f source gaps - zero inventory rows are recorded as inventory_empty_not_confirmed instead of verified emptiness - proxy discovery records its call cap/deadline as incomplete only, stops the shared budget across regions, maps provider errors to a gap and projection defects to degraded - follow_up refuses live reads once the evidence loop flag is off; both scopes require an applied DIAGNOSIS_HOST_ACCOUNT_ID - correct the unrouted-module docstring and document the flags, IAM grants and gap vocabulary in the workers reference Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…del context - an empty ReplicaLag series on a known replica is coverage loss, not an unpublished metric, so replica evidence cannot qualify as complete - redact_context masks resolver query names and hostname-shaped trace/X-Ray node names, and any AWS service DNS name inside source strings - the clock-sharing test compares the native and CWAgent query windows Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…to each row - instance-to-DB pair validation compares trace, pair and inventory hosts through one exactEndpoint-equivalent normalization (trim, lowercase, no root dot) - stored-graph evidence rows reference coverage.graph.<class> instead of embedding the class source list, so busy graphs no longer exhaust the context byte cap Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…review holdback and host masking - ci_runtime_policy accepts diagnosis_member_role_arns only in the exact member AssumeRole statement and worker task env value that the variable configures - the final-review holdback reserves the heaviest review allocation, including Opus thinking headroom, regardless of the specialist's model - model context masks any whole dotted hostname (two labels or more) in values and mapping keys, keeping code-owned type/version vocabularies Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… exact - the dev plan guard exemption also pins the policy role, the full ExternalId and RequestedRegion condition and the worker task family, and accepts a task definition without the member env entry - diagnosis_member_role_arns must be distinct and requires the evidence loop - db_instance_identifier and endpoint_address stay exact for CloudWatch dimensions and pair joins; _text redacts before truncating - host trace nodes without an account (or 'self') bind under host scope, and edges whose endpoints cannot be bound are disclosed as unresolved_graph_edge Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: add bounded DNS/NFM observation and supporting collectors Read-only Resolver DNS and Network Flow Monitor observation collectors and supporting-evidence collection for the default-off diagnosis evidence loop. Presentation and pillar-prompt integration tests land with the pillar agents. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(diagnosis): tolerate facts-less inventory rows and mark unknown host skips DNS binding no longer raises on inventory resources without facts, and supporting collection records supporting_host_unknown when the host account identity is absent or mismatched instead of skipping silently. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix: keep network evidence deadlines out of source gaps and stop queries after them The stage deadline is recorded as incomplete only and ends collection instead of becoming dns_logs_unavailable/nfm_unavailable; provider errors stay gaps and projection defects become degraded. Started queries are still cancelled after the stage deadline while the job budget allows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…sure gaps - worker_diagnosis_evidence/network become customer-managed policies attached to the worker task role, keeping the role under the inline-policy quota; monitor query ARNs use one account-scoped pattern bounded by the region condition - the dev plan guard exemption now requires that policy to be attached only to the worker task role - the member path refuses a registration without an ExternalId before any STS call - stored-graph row freshness uses the configured class window; dropped non-ENI attachments are disclosed; an in-scope proxy that is not available is a gap and an unattempted cluster lookup is a bound, not an unresolved target - tests cover an absent loop flag, a None socket timeout and the CloudWatch 500-query request bound Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…61106' into feat/discovery-evidence-core-20261106
Part B of the #227 split (A = #242, merged). Adds the default-off discovery and evidence core for the diagnosis worker. Nothing in the report path uses these modules yet; C and D wire them in.
Changes
scripts/v2/workers/diagnosis/: bounded scoped discovery (discovery.py), evidence admission index and redaction-aware model context (evidence.py), report budget (budget.py), workload identities, measured EC2 memory metrics, and scoped member-account clients.scripts/v2/workers/redact.py: redaction updates used by the evidence context.scripts/v2/steampipe/sync_lambda.py: RDS read-replica source column in the inventory sync.terraform/foundation/{variables,workers}.tf: default-off worker flagsdiagnosis_evidence_loop_enabledanddiagnosis_network_evidence_enabled, plus their read-only IAM/env wiring.runtime_iam.tftest.hclcovers both states.Safety
planshows no changes and costs $0. All new AWS calls are read-only (ADR-005 unchanged).Tests
python3 -m pytest -q scripts/v2/workers/diagnosis scripts/v2/workers/test_redact.py: 967 passed, 11 skippedterraform fmt -check -recursive: clean🤖 Generated with Claude Code