Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
272 commits
Select commit Hold shift + click to select a range
cf69586
docs(dark-factory): document Kata-on-Auto-Mode blocker + integration …
elamaran11 Jul 10, 2026
7d7f209
fix(oam): aws-service-identity RolePolicyAttachment uses ProviderConf…
shapirov103 Jul 10, 2026
ee17d0a
docs(dark-factory): add validated Kata-on-Auto-Mode design (§12a)
elamaran11 Jul 10, 2026
c5d020b
feat(agent-sandbox): add kata-deploy chart dependency (gated)
elamaran11 Jul 10, 2026
a365984
feat(agent-sandbox): add kata-deploy subchart values + kataDeploy toggle
elamaran11 Jul 10, 2026
4b24217
feat(agent-sandbox): add kata MNG launch-template nodeadm userData
elamaran11 Jul 10, 2026
91232af
feat(agent-sandbox): add eksctl manifest for the kata MNG
elamaran11 Jul 10, 2026
f2e790a
feat(agent-sandbox): add Terraform kata MNG + nested-virt launch temp…
elamaran11 Jul 10, 2026
ef7e7d7
fix(agent-sandbox): valid HCL for kata MNG Terraform (fmt + validate …
elamaran11 Jul 10, 2026
4fc6518
fix(agent-sandbox): drop kata-deploy subchart dep (delivered as separ…
elamaran11 Jul 10, 2026
324aa36
feat(agent-sandbox): register kata-deploy as separate gated ArgoCD app
elamaran11 Jul 10, 2026
62b746c
refactor(agent-sandbox): drop kata-deploy subchart values (now separa…
elamaran11 Jul 10, 2026
e19261f
docs(agent-sandbox): add nodepool README (provisioning + enablement s…
elamaran11 Jul 10, 2026
d92f5af
fix(bifrost): Fix OTEL plugin config (add config nesting, use gRPC :4…
hmuthusamy Jul 10, 2026
047b271
fix(bifrost): Add version and trace_type to OTEL plugin config
hmuthusamy Jul 10, 2026
2ebeb05
fix(bifrost): Add otel plugin to default addon overlay
hmuthusamy Jul 10, 2026
d4307aa
docs(dark-factory): note native SandboxWarmPool CRD (pool-manager lik…
elamaran11 Jul 10, 2026
f65e3cb
fix(observability): Use opentelemetry-instrument for both modes
hmuthusamy Jul 10, 2026
47e04c4
fix(agent-sandbox): custom-AMI nodeadm needs apiServerEndpoint/CA/cid…
elamaran11 Jul 10, 2026
4f8e2ca
fix(observability): Move opentelemetry-instrument to Dockerfile CMD
hmuthusamy Jul 10, 2026
188d672
docs(agent-sandbox): vpc-cni addon required for self-managed MNG on A…
elamaran11 Jul 10, 2026
af0e087
fix(main.py): Remove duplicate tracer init — opentelemetry-instrument…
hmuthusamy Jul 10, 2026
3b7f416
refactor(oam): agent keys off context.name; owns SA; identity via traits
shapirov103 Jul 10, 2026
3bffdac
docs(dark-factory): live-test results — 4 fixes validated + kata-depl…
elamaran11 Jul 10, 2026
cf6d094
fix(otel): Disable metrics/logs exporter for centralized mode
hmuthusamy Jul 10, 2026
a3e6ca8
docs(oam): update remaining agent examples to context.name + identity…
shapirov103 Jul 10, 2026
38e5b37
docs(agent-sandbox): document kata-deploy vs VPC-CNI Auto Mode blocke…
elamaran11 Jul 10, 2026
fb34739
fix(main.py): Restore StrandsTelemetry init for centralized mode
hmuthusamy Jul 10, 2026
98c3ce0
revert(bifrost): Disable OTEL plugin — trace correlation not working
hmuthusamy Jul 10, 2026
2783134
fix(otel): Remove METRICS/LOGS exporter=none — breaks StrandsTelemetry
hmuthusamy Jul 10, 2026
54e2350
fix(oam): agentcore-memory uses classic provider + default ProviderCo…
shapirov103 Jul 10, 2026
5cc113c
fix(strands-agent): present workload-identity token to MCP via gateway
shapirov103 Jul 10, 2026
d9d02c8
docs(agent-sandbox): PROVEN — Kata micro-VM runs on EKS Auto Mode end…
elamaran11 Jul 10, 2026
4b6bb52
docs(dark-factory): §12a — full Kata-on-Auto-Mode validation confirmed
elamaran11 Jul 10, 2026
f68fad2
fix(agent-sandbox): SandboxTemplate has no volumeClaimTemplates (live…
elamaran11 Jul 10, 2026
e973b3a
feat(agent-sandbox): enable on spoke-dev overlay (Kata-on-Auto-Mode p…
elamaran11 Jul 10, 2026
2feb326
fix(agent-sandbox): correct kata-deploy OCI chart path (drop chartNam…
elamaran11 Jul 10, 2026
84173e4
fix(agent-sandbox): pool-manager image needs kubectl+jq (was aws-cli,…
elamaran11 Jul 10, 2026
341553f
feat(agent-sandbox): vendor upstream agent-sandbox v0.5.1 install man…
elamaran11 Jul 10, 2026
f36326e
refactor(agent-sandbox): drop hand-written operator (use vendored v0.…
elamaran11 Jul 10, 2026
14d4f8e
refactor(agent-sandbox): drop custom pool-manager (use native Sandbox…
elamaran11 Jul 10, 2026
b9e2df9
feat(agent-sandbox): add native SandboxWarmPool CR (replaces pool-man…
elamaran11 Jul 10, 2026
36833f6
feat(agent-sandbox): add kata-readiness DaemonSet (removes startup ta…
elamaran11 Jul 10, 2026
e468e19
fix(agent-sandbox): namespace PSS restricted→baseline (was blocking t…
elamaran11 Jul 10, 2026
7cef4f3
fix(agent-sandbox): use v1beta1 for SandboxTemplate + SandboxWarmPool
elamaran11 Jul 10, 2026
d7f5d32
feat(agent-sandbox): add operator as GitOps app + fix sync-wave ordering
elamaran11 Jul 10, 2026
7893a82
fix(agent-sandbox): package upstream operator as Helm chart (appset n…
elamaran11 Jul 10, 2026
acc7e44
fix(agent-sandbox): gate appsets to spoke-dev only (drop hub + prod)
elamaran11 Jul 10, 2026
b81c55e
fix(agent-sandbox): merge duplicate controller Deployment into one
elamaran11 Jul 10, 2026
218b1c6
feat(dark-factory): P1 orchestrator k8s lib — claim warm sandbox via …
elamaran11 Jul 10, 2026
46771c7
feat(dark-factory): P1 sticky PR status + PR creation lib
elamaran11 Jul 10, 2026
77895a1
feat(dark-factory): P1 coder-drive lib — files+env contract over the …
elamaran11 Jul 10, 2026
2351369
feat(dark-factory): P1 orchestrator server — claim→code→PR+live status
elamaran11 Jul 10, 2026
3cb3897
feat(dark-factory): P1 orchestrator package.json (@kubernetes/client-…
elamaran11 Jul 10, 2026
e02c771
feat(dark-factory): P1 orchestrator Dockerfile — non-root node:20-alpine
elamaran11 Jul 10, 2026
5d6a499
feat(dark-factory): P1 orchestrator RBAC — SandboxClaims only, namesp…
elamaran11 Jul 10, 2026
13b813d
feat(dark-factory): P1 orchestrator Deployment + Service (spoke-dev)
elamaran11 Jul 10, 2026
d54f3c2
feat(dark-factory): P1 trigger — GitHub Action on dark-factory label
elamaran11 Jul 10, 2026
47cb097
feat(dark-factory): P1 in-VM coder agent — honors the files+env contract
elamaran11 Jul 10, 2026
9904e71
feat(dark-factory): P1 coder Dockerfile — Kata-VM image, no baked creds
elamaran11 Jul 10, 2026
bfad46a
feat(dark-factory): P1 ArgoCD app — orchestrator pinned to spoke-dev …
elamaran11 Jul 10, 2026
14a41fa
docs(dark-factory): P1 README — components, request flow, claim contr…
elamaran11 Jul 10, 2026
e97667b
docs(dark-factory): Flow A diagram — relocate sandbox capability to hub
elamaran11 Jul 13, 2026
ed54992
docs(dark-factory): Flow B diagrams — Argo Workflows on hub, single-c…
elamaran11 Jul 13, 2026
48fda13
docs(dark-factory): README — hub-hosted Argo orchestration + review r…
elamaran11 Jul 13, 2026
04ae1a9
docs(dark-factory): mark P1 Node orchestrator superseded by Argo design
elamaran11 Jul 13, 2026
ef023ff
feat(agent-sandbox): re-gate capability from spoke-dev to hub
elamaran11 Jul 13, 2026
ce46ab6
feat(agent-sandbox): add networkPolicy.privateCidrsDenied for hub iso…
elamaran11 Jul 13, 2026
79e9649
feat(agent-sandbox): NetworkPolicy — deny control-plane egress on hub
elamaran11 Jul 13, 2026
994a746
fix(agent-sandbox): kata-mng.tf — set instance_type on the launch tem…
elamaran11 Jul 13, 2026
d2fb5ff
fix(kata-deploy): pass values at chart root, not nested under kata-de…
elamaran11 Jul 13, 2026
e012522
fix(agent-sandbox): relax DNS egress to :53/any-ns (EKS Auto Mode Cor…
elamaran11 Jul 13, 2026
f2d57c3
fix(agent-sandbox): add explicit service CIDR to NetworkPolicy deny list
elamaran11 Jul 13, 2026
b5f5315
feat(agent-sandbox): add Admin-tier ClusterNetworkPolicy for control-…
elamaran11 Jul 13, 2026
a78fa98
docs(agent-sandbox): document EKS VPC-CNI ClusterIP egress limitation…
elamaran11 Jul 13, 2026
cd25645
docs(architecture): identity + token-exchange decisions and roadmap
shapirov103 Jul 13, 2026
dab1c4f
feat(agent-sandbox): clusterip-egress-firewall DaemonSet closes VPC-C…
elamaran11 Jul 14, 2026
f687c9d
fix(agent-sandbox): run clusterip-egress-firewall in kube-system (Pod…
elamaran11 Jul 14, 2026
984f990
fix(agent-sandbox): install iptables at start (alpine/k8s ships kubec…
elamaran11 Jul 14, 2026
debb450
docs(agent-sandbox): note ClusterIP gap is now closed by the node fir…
elamaran11 Jul 14, 2026
2c071fd
docs(dark-factory): refresh README to as-built hub migration + 3-laye…
elamaran11 Jul 14, 2026
0fdfefd
docs(dark-factory): add editable draw.io diagram sources
elamaran11 Jul 14, 2026
7097a81
docs(dark-factory): add rendered diagram PNGs (draw.io export)
elamaran11 Jul 14, 2026
2e8a5e0
docs(dark-factory): embed rendered diagrams, replace Mermaid
elamaran11 Jul 14, 2026
37ea47c
feat(agent-sandbox): allow env injection on SandboxTemplate (Flow B n…
elamaran11 Jul 14, 2026
0e678c8
feat(dark-factory): scaffold Flow B P1 Helm chart (hub-only)
elamaran11 Jul 14, 2026
11d447f
feat(dark-factory): workflow ServiceAccount + least-privilege RBAC
elamaran11 Jul 14, 2026
e49528c
feat(dark-factory): df-run WorkflowTemplate — claim → code → PR (P1)
elamaran11 Jul 14, 2026
1416ea8
feat(dark-factory): env-driven in-VM coder entrypoint (P1)
elamaran11 Jul 14, 2026
f433b0c
feat(agent-sandbox): SandboxTemplate coder command execs entrypoint o…
elamaran11 Jul 14, 2026
2fd3388
feat(dark-factory): WorkflowEventBinding trigger (argo-server events …
elamaran11 Jul 14, 2026
f4fd885
feat(dark-factory): register as hub-only GitOps addon (sync-wave 3)
elamaran11 Jul 14, 2026
d2868b8
feat(dark-factory): retarget trigger Action to Argo Workflows events …
elamaran11 Jul 14, 2026
0023eff
fix(dark-factory): workflow SA in argo ns + cross-ns Role for claims
elamaran11 Jul 14, 2026
30aaa0f
docs(dark-factory): P1 chart README — pipeline, verified status, acti…
elamaran11 Jul 14, 2026
97ffb01
feat(dark-factory): enable argo_events on the hub (Flow B trigger)
elamaran11 Jul 14, 2026
ee27f3b
Merge remote-tracking branch 'origin/feature/oam-for-agents' into dar…
elamaran11 Jul 14, 2026
50db2ff
feat(dark-factory): Argo Events trigger — EventBus + EventSource + Se…
elamaran11 Jul 14, 2026
e903358
feat(agent-sandbox): set coder image to dark-factory-coder:v0.1.0 (ECR)
elamaran11 Jul 14, 2026
d1e607f
feat(agent-sandbox): mount gh-token secret into coder VM at /etc/secrets
elamaran11 Jul 14, 2026
94b156e
fix(dark-factory): webhookUrl is host-only (Argo appends endpoint)
elamaran11 Jul 14, 2026
0fbca59
fix(agent-sandbox): coder reaches Bifrost by ClusterIP (Kata VM DNS q…
elamaran11 Jul 14, 2026
2d5f923
fix(dark-factory): coder uses Bifrost Anthropic endpoint, not Bedrock…
elamaran11 Jul 14, 2026
75a358a
fix(dark-factory): inject ClusterIP BIFROST_URL per-claim (Overrides …
elamaran11 Jul 14, 2026
a0a793f
fix(dark-factory): coder uses Bifrost model alias 'claude-sonnet' (v0…
elamaran11 Jul 14, 2026
918188f
fix(coder): front Bifrost with a localhost UA-shim to dodge broken cl…
elamaran11 Jul 14, 2026
95acca9
deploy(agent-sandbox): bump coder image to v0.1.3 (UA-shim Bifrost fix)
elamaran11 Jul 14, 2026
5d6aa1f
fix(coder): UA-shim uses a fixed localhost port (server.address() is …
elamaran11 Jul 14, 2026
8c10ab4
deploy(agent-sandbox): bump coder image to v0.1.4
elamaran11 Jul 14, 2026
a9ec36c
fix(coder): run the Bifrost UA-shim in its own process
elamaran11 Jul 14, 2026
f74575b
deploy(agent-sandbox): bump coder image to v0.1.5
elamaran11 Jul 14, 2026
5405401
fix(coder): give claude a writable HOME on the read-only rootfs
elamaran11 Jul 14, 2026
613ee6c
deploy(agent-sandbox): bump coder image to v0.1.6
elamaran11 Jul 14, 2026
0482548
fix(coder): push df/issue-N with plain --force, not --force-with-lease
elamaran11 Jul 14, 2026
15cab85
deploy(agent-sandbox): bump coder image to v0.1.7
elamaran11 Jul 14, 2026
5746961
fix(coder): retry transient GitHub failures in the self-report bus
elamaran11 Jul 14, 2026
b79eca3
deploy(agent-sandbox): bump coder image to v0.1.8
elamaran11 Jul 14, 2026
ea4bf54
chore(dark-factory): remove superseded P1 Node orchestrator
elamaran11 Jul 15, 2026
d6d30a5
chore(coder): drop agent.js from the image (entrypoint.js is the only…
elamaran11 Jul 15, 2026
825d201
docs(dark-factory): rewrite example README for the Argo Workflows imp…
elamaran11 Jul 15, 2026
a1b3688
feat(dark-factory): add P2 holdout content — hidden scenarios + evalu…
elamaran11 Jul 15, 2026
d0d45cd
feat(dark-factory): render holdout scenarios into hub-side ConfigMaps
elamaran11 Jul 15, 2026
6bd6392
feat(dark-factory): wire holdout-gate into the df-run DAG (advisory v1)
elamaran11 Jul 15, 2026
6147a7d
feat(dark-factory): holdout gate config (Nova judge, 90%% threshold, …
elamaran11 Jul 15, 2026
67b8f43
fix(holdout): judge detects gaming, not behaviour (kills false negati…
elamaran11 Jul 15, 2026
aeb7147
docs(diagram): add Flow B 'df-run DAG (as built)' — trust boundary + …
elamaran11 Jul 15, 2026
f38323c
docs(diagram): add B.4 section — df-run DAG, step-gating, two-level t…
elamaran11 Jul 15, 2026
c45c3bf
docs(dark-factory): mark P2 holdout done + reflect as-built design
elamaran11 Jul 15, 2026
f9bd09d
feat(dark-factory): add P3 Security + DevOps review evaluator
elamaran11 Jul 15, 2026
f4dc373
feat(dark-factory): render review.js into a hub-side ConfigMap (df-re…
elamaran11 Jul 15, 2026
7d9da3e
feat(dark-factory): wire security-review + devops-review into df-run …
elamaran11 Jul 15, 2026
20adb3d
docs(diagram): promote Security + DevOps reviewers to built (P3) in d…
elamaran11 Jul 15, 2026
53b129f
docs(diagram): B.4 text reflects P3 reviewers as built (linters + Nov…
elamaran11 Jul 15, 2026
5d5b125
docs(dark-factory): mark P3 review roles done + reflect as-built back…
elamaran11 Jul 15, 2026
2490721
feat(coder): PR body uses a sticky-status marker block, not stale pla…
elamaran11 Jul 15, 2026
8dbcbc0
feat(dark-factory): sticky-status step rewrites the PR body from live…
elamaran11 Jul 15, 2026
2932b66
deploy(dark-factory): bump coder/eval/review image to v0.1.9; chart v…
elamaran11 Jul 15, 2026
0d94dc9
fix(dark-factory): move sticky-status logic to status.js (was broken …
elamaran11 Jul 15, 2026
eff6a67
fix(dark-factory): sticky-status invokes status.js; df-review CM alwa…
elamaran11 Jul 15, 2026
e52ebd8
docs(dark-factory): §7 reflects as-built live status (commit statuses…
elamaran11 Jul 15, 2026
8c0223c
fix(dark-factory): dedup df-run by deterministic name df-run-<issue-i…
elamaran11 Jul 15, 2026
84b59b0
fix(dark-factory): render dedup issue-id as int64 (avoid sci-notation…
elamaran11 Jul 15, 2026
7112e14
docs(dark-factory): document P3b dedup + live PR status; fix stale st…
elamaran11 Jul 15, 2026
1a3e85b
feat(dark-factory): add merge.js — green-gated PR merge for df-merge-…
elamaran11 Jul 15, 2026
9f560b8
feat(dark-factory): df-merge-teardown WorkflowTemplate (merge on huma…
elamaran11 Jul 15, 2026
5cc8a33
feat(dark-factory): label claims with issue-number for PR-event teard…
elamaran11 Jul 15, 2026
fa44152
feat(dark-factory): Sensor fires df-merge-teardown on approved PR rev…
elamaran11 Jul 15, 2026
c5a0eaf
feat(coder): support df-iterate — DF_ITERATE_NOTE appends a revision …
elamaran11 Jul 15, 2026
ad377ff
feat(dark-factory): df-run takes optional iterate-note → coder DF_ITE…
elamaran11 Jul 15, 2026
0d41d38
deploy(dark-factory): bump coder/eval/review image to v0.1.10 (iterat…
elamaran11 Jul 15, 2026
ea23989
docs(diagram): df-merge-teardown built — green-gated merge on human a…
elamaran11 Jul 15, 2026
3013734
docs(dark-factory): document df-merge-teardown (§9 + phase table)
elamaran11 Jul 15, 2026
75493b9
feat(dark-factory): add iterate.js — route PR comment → bounded coder…
elamaran11 Jul 15, 2026
3547b54
feat(dark-factory): df-iterate WorkflowTemplate (comment → revision)
elamaran11 Jul 15, 2026
33c5089
feat(dark-factory): Sensor fires df-iterate on PR comment (P3b); iter…
elamaran11 Jul 15, 2026
ea9ccb7
fix(coder): guard against no-diff (spec already satisfied) instead of…
elamaran11 Jul 15, 2026
ea59e8d
deploy(dark-factory): bump coder/eval/review image to v0.1.11 (no-dif…
elamaran11 Jul 15, 2026
384e0b0
fix(dark-factory): df-iterate runs as dark-factory-workflow + can cre…
elamaran11 Jul 15, 2026
5f5473c
docs(diagram): add df-iterate comment→revise loop; title P1–P3b
elamaran11 Jul 15, 2026
44b2ff5
docs(dark-factory): P3b complete — §8 df-iterate as-built, phase tabl…
elamaran11 Jul 15, 2026
678a23b
feat(dark-factory): P4 detect-deployable + deploy-test steps in df-run
elamaran11 Jul 15, 2026
e9f92f1
feat(dark-factory): scoped ClusterRole for deploy-test (namespaces + …
elamaran11 Jul 15, 2026
e9877db
feat(dark-factory): reaper CronJob — sweep stale ephemeral ns + aband…
elamaran11 Jul 15, 2026
6b09ac2
feat(dark-factory): deployTest/metrics/reaper values; chart v0.7.0
elamaran11 Jul 15, 2026
ee04096
fix(dark-factory): detect-deployable uses GitHub compare API, not loc…
elamaran11 Jul 15, 2026
82dfa91
docs(diagram): promote detect-deployable + deploy-test to built (P4);…
elamaran11 Jul 15, 2026
19648d6
docs(dark-factory): P4 done — deploy-test, reaper, metrics (§7a, §9, …
elamaran11 Jul 15, 2026
812fc5b
feat(dark-factory): purpose-built deploy-test image (kubectl+terrafor…
elamaran11 Jul 15, 2026
bd74e91
feat(dark-factory): reviewers post full findings to the PR (not just …
elamaran11 Jul 15, 2026
9cfc041
feat(dark-factory): content-aware deploy-test — terraform validate + …
elamaran11 Jul 15, 2026
d69e2a5
fix(dark-factory): deploy-test builds PR comment in a file, not multi…
elamaran11 Jul 15, 2026
cc451ab
refactor(dark-factory): deploy-test logic → review/deploy-test.sh (Co…
elamaran11 Jul 15, 2026
b2a9b72
fix(dark-factory): review-role passes REPO/BRANCH to node for PR lookup
elamaran11 Jul 15, 2026
085c83a
docs(dark-factory): profile design — generic infra + app support
elamaran11 Jul 15, 2026
43d4850
feat(coder): profile-driven build/test + scaffold hint (stack-agnostic)
elamaran11 Jul 15, 2026
b6e0b2d
feat(dark-factory): stack profiles — label→profile→build/test/scaffol…
elamaran11 Jul 15, 2026
6ec57ce
fix(dark-factory): resolve profile from issue label via GitHub API, n…
elamaran11 Jul 15, 2026
49b8046
docs(profiles): mark profile abstraction built (terraform+node); note…
elamaran11 Jul 15, 2026
f70a9b9
feat(dark-factory): GitHub credential via ExternalSecret from Secrets…
elamaran11 Jul 15, 2026
a4837c1
refactor(dark-factory): rename review/ → scripts/ (holds more than re…
elamaran11 Jul 15, 2026
14803ca
refactor(coder): discover build/test from repo markers; drop profile …
elamaran11 Jul 15, 2026
4b56494
refactor(dark-factory): remove stackProfiles + resolve-profile (redun…
elamaran11 Jul 15, 2026
aa49846
feat(dark-factory): observability — Argo metrics Service + Grafana da…
elamaran11 Jul 15, 2026
b3ad772
feat(coder): instrument LLM usage → Langfuse trace per run (obs)
elamaran11 Jul 15, 2026
adda782
feat(dark-factory): Langfuse keys via ExternalSecret + LANGFUSE_URL t…
elamaran11 Jul 15, 2026
652f6a8
fix(dark-factory): langfuse keys on the gh-token ExternalSecret (not …
elamaran11 Jul 15, 2026
7e4e97d
refactor(dark-factory): drop coder-side Langfuse; rely on Bifrost's t…
elamaran11 Jul 15, 2026
474f15f
fix(holdout): skip scenarios that don't apply to the change (no mis-g…
elamaran11 Jul 15, 2026
417bc53
fix(obs): metrics scheme=https + correct metric names in Grafana dash…
elamaran11 Jul 15, 2026
ae53649
fix(obs): metrics-proxy to strip controller self-signed TLS for AMP s…
elamaran11 Jul 15, 2026
9b85d4f
fix(langfuse): probes timeoutSeconds=5 (durable fix for crash-loop / …
elamaran11 Jul 15, 2026
9105fe2
fix(dark-factory): stop df-iterate self-trigger loop on factory's own…
elamaran11 Jul 15, 2026
e180278
fix(dark-factory): airtight self-trigger guard — skip iterate on fact…
elamaran11 Jul 15, 2026
101b28a
feat(dark-factory): real AWS Security + DevOps Agents (no stub); GitO…
elamaran11 Jul 16, 2026
afa4d02
fix(dark-factory): bootstrap Job uses command+args, not Argo script.s…
elamaran11 Jul 16, 2026
ee6d418
fix(dark-factory): bootstrap SA/RBAC/script as PreSync hooks (wave -1)
elamaran11 Jul 16, 2026
be5967a
fix(dark-factory): bootstrap on glibc aws-cli v2 image (securityagent…
elamaran11 Jul 16, 2026
08018b5
fix(dark-factory): bootstrap adopts existing Application idempotently
elamaran11 Jul 16, 2026
eb07e51
fix(dark-factory): security step on glibc aws-cli image; node-free sc…
elamaran11 Jul 16, 2026
553e91b
feat(dark-factory): coder image v0.2.0 (aws-cli/git/zip); IAM applied…
elamaran11 Jul 16, 2026
7a10870
feat(dark-factory): coder v0.2.1 subdir build/test discovery + infra/…
elamaran11 Jul 16, 2026
d3c0925
fix(dark-factory): devops-gate takes pr-number as input param
elamaran11 Jul 16, 2026
45e09af
docs(dark-factory): DevOps Agent allow-list prerequisite + pin real c…
elamaran11 Jul 16, 2026
d4bac27
fix(dark-factory): close issue->merge chain gaps for the real DevOps …
elamaran11 Jul 16, 2026
adbe418
docs(dark-factory): restore checkpoint (waiting on DevOps Agent 3P ac…
elamaran11 Jul 17, 2026
56a63c2
fix(dark-factory): checkContext regex — drop (?i) inline flag (JS Reg…
elamaran11 Jul 17, 2026
359ef35
feat(dark-factory): every step reports on the PR as a comment
elamaran11 Jul 17, 2026
b242673
fix(dark-factory): holdout shows 'not applicable' (not 'not run') whe…
elamaran11 Jul 19, 2026
6820ab0
feat(dark-factory): add AWS Security Agent GitHub App (inline bot fin…
elamaran11 Jul 20, 2026
e0a9c3b
fix(dark-factory): Security Agent App posts inline comments only (no …
elamaran11 Jul 20, 2026
b32dee5
fix(dark-factory): sticky board multi-SHA aggregation + omit holdout …
elamaran11 Jul 20, 2026
1e6f0ad
fix(dark-factory): omit holdout row entirely when not applicable (not…
elamaran11 Jul 20, 2026
68bacef
docs(dark-factory): rewrite agent-integration guide as GA/public-foll…
elamaran11 Jul 21, 2026
f512706
docs(dark-factory): correct values.yaml review block to match GA reality
elamaran11 Jul 21, 2026
57ccbcd
docs(dark-factory): restore checkpoint (2026-07-20) — both agents liv…
elamaran11 Jul 21, 2026
b528087
docs: rewrite home README as a complete OAP solution narrative
elamaran11 Jul 21, 2026
077d48d
docs: add visual diagrams to README (layered arch, managed-or-OSS, Da…
elamaran11 Jul 21, 2026
f4d27a8
docs(diagrams): add OAP layered-architecture drawio + SVG (from deck …
elamaran11 Jul 21, 2026
fb9e602
docs(diagrams): add OAP managed-or-OSS drawio + SVG (from deck slide 19)
elamaran11 Jul 21, 2026
b13a8ed
docs(diagrams): add Dark Factory flow drawio + SVG (issue->PR->merge)
elamaran11 Jul 21, 2026
f1c3009
docs: embed draw.io SVG diagrams in README (replace inline Mermaid)
elamaran11 Jul 21, 2026
9268914
feat(agent-sandbox): Kata node group fully in GitOps via Crossplane
elamaran11 Jul 21, 2026
6a90f79
docs(agent-sandbox): nodepool README — document GitOps/Crossplane as …
elamaran11 Jul 21, 2026
fe3918e
fix(agent-sandbox): move hub-specific kata nodepool values to per-clu…
elamaran11 Jul 21, 2026
2b15f5d
fix(agent-sandbox): correct kata NodeGroup kind casing + adoption ext…
elamaran11 Jul 21, 2026
975f4fb
deploy(coder): bump dark-factory-coder image v0.2.3 -> v0.2.4
elamaran11 Jul 30, 2026
9961555
fix(security-agent): early-exit when findings ready + graceful timeout
elamaran11 Jul 30, 2026
2d97338
feat(flow-b): request both AWS agents as reviewers on every PR
elamaran11 Jul 31, 2026
3a5f7ce
fix(flow-b): post consolidated agent-verdict review (replaces dead re…
elamaran11 Jul 31, 2026
c582896
fix(flow-b): post verdict review once impl+security resolved (not gat…
elamaran11 Jul 31, 2026
243aa4d
fix(holdout): scope scenarios per-function + add gcd/factorial/isPrim…
elamaran11 Jul 31, 2026
1736121
fix(reviews): single consolidated signal + findings block the merge
elamaran11 Jul 31, 2026
ca06192
test(holdout): add scoped isEven/isOdd scenarios
elamaran11 Jul 31, 2026
6a5af2b
fix(reviews): agent BOTS are source of truth; consolidation no longer…
elamaran11 Jul 31, 2026
881ba09
test(holdout): add scoped clamp scenario
elamaran11 Jul 31, 2026
11de80e
refactor(reviews): one clean flow — real agent bots only, pipeline waits
elamaran11 Jul 31, 2026
f6ba385
test(holdout): add scoped sum scenario
elamaran11 Jul 31, 2026
14cfa96
fix(holdout): compare-API diff + advisory holdout doesn't block verdict
elamaran11 Jul 31, 2026
206ad84
fix(holdout): single-line compare-API python (prev commit broke YAML …
elamaran11 Jul 31, 2026
ec07ba8
test(holdout): add scoped average scenario
elamaran11 Jul 31, 2026
9fd187d
fix(reviews): honest wording when advisory holdout is red but merge i…
elamaran11 Jul 31, 2026
bd0bbfd
feat(reviews): SHA/round-aware loop + auto-feed findings to the coder
elamaran11 Jul 31, 2026
275b08e
fix(reviews): await-coder waits for NEW commit on a fix round (closes…
elamaran11 Jul 31, 2026
49e7951
fix(df-run): declare trigger-label param with default (unblocks senso…
elamaran11 Jul 31, 2026
92b67a7
fix(iterate): base64 the revision note (findings) — raw YAML injectio…
elamaran11 Jul 31, 2026
7676278
fix(reviews): verdict waits for BOTH agents (status depends on devops…
elamaran11 Jul 31, 2026
2ec5716
deploy(coder): bump coder + eval/review images to v0.2.5
elamaran11 Jul 31, 2026
f9c3137
fix(security-wait): only resolve on the bot's TERMINAL verdict for TH…
elamaran11 Jul 31, 2026
06cd67f
fix(iterate): disable auto-fix loop + harden self-trigger guard (stop…
elamaran11 Jul 31, 2026
82a1752
fix(sensor): drop factory-marker comments at the source (expr filter)
elamaran11 Jul 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions .github/workflows/dark-factory.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# Dark Factory (Flow B) trigger — issue labeled `dark-factory` → orchestrator.
#
# This is the P1 entrypoint (§4 step 1). It gates on the label, mints a
# short-TTL token scoped to this repo, and POSTs the run request to the
# orchestrator running on spoke-dev. The orchestrator (not this Action) holds
# the long-lived credentials and drives the sandbox; the Action's only job is
# to authenticate the trigger and hand over a short-lived token.
#
# The token here is the workflow's GITHUB_TOKEN (auto-expires when the run
# ends). For cross-repo / org installs, swap in a GitHub App token minted via
# actions/create-github-app-token — the orchestrator treats it the same way.
name: dark-factory

on:
issues:
types: [labeled]

# Least-privilege: the orchestrator opens the PR + updates the sticky comment
# using the token we pass, so it needs write on contents + PRs + issues.
permissions:
contents: write
pull-requests: write
issues: write

jobs:
dispatch:
# Only fire when the `dark-factory` label is the one that was added.
if: github.event.label.name == 'dark-factory'
runs-on: ubuntu-latest
steps:
- name: Acknowledge on the issue
uses: actions/github-script@v7
with:
script: |
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: '🏭 Dark Factory accepted this issue — claiming a warm Kata sandbox on the hub…',
});

- name: Submit df-run to Argo Workflows
env:
# argo-server events endpoint base, e.g. https://<argo-host>/argo-workflows
# Configure as a repo/org variable so the host isn't hard-coded.
ARGO_SERVER: ${{ vars.DARK_FACTORY_ARGO_SERVER }}
# Bearer token for the argo-server events API (a token bound to the
# dark-factory-workflow SA, or an SSO token). Stored as a repo secret.
ARGO_TOKEN: ${{ secrets.DARK_FACTORY_ARGO_TOKEN }}
ISSUE_ID: ${{ github.event.issue.id }}
ISSUE_NUMBER: ${{ github.event.issue.number }}
ISSUE_TITLE: ${{ github.event.issue.title }}
ISSUE_BODY: ${{ github.event.issue.body }}
REPO: ${{ github.repository }}
BASE: ${{ github.event.repository.default_branch }}
run: |
set -euo pipefail
if [ -z "${ARGO_SERVER:-}" ]; then
echo "::error::DARK_FACTORY_ARGO_SERVER is not set — cannot submit."
exit 1
fi
# POST the issue to the WorkflowEventBinding 'dark-factory' in the argo
# namespace. The discriminator header + payload.issue selector gate it.
payload="$(jq -n \
--arg id "$ISSUE_ID" \
--arg number "$ISSUE_NUMBER" \
--arg repo "$REPO" \
--arg title "$ISSUE_TITLE" \
--arg body "$ISSUE_BODY" \
--arg base "$BASE" \
'{issue: {id: $id, number: ($number|tonumber), repo: $repo, title: $title, body: $body, base: $base}}')"
curl -fsS -X POST "${ARGO_SERVER}/api/v1/events/argo/dark-factory" \
-H "Content-Type: application/json" \
-H "x-dark-factory: true" \
-H "Authorization: Bearer ${ARGO_TOKEN}" \
-d "$payload"
echo "Submitted df-run for issue #$ISSUE_NUMBER to Argo Workflows."
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,10 @@
config.local.yaml
private/
.local/

# Dark Factory IAM terraform working files (committed: iam/*.tf; ignored: state/plugins)
gitops/addons/charts/dark-factory/iam/.terraform/
gitops/addons/charts/dark-factory/iam/.terraform.lock.hcl
gitops/addons/charts/dark-factory/iam/terraform.tfstate
gitops/addons/charts/dark-factory/iam/terraform.tfstate.backup
gitops/addons/charts/dark-factory/iam/_provider.tf
327 changes: 236 additions & 91 deletions README.md

Large diffs are not rendered by default.

21 changes: 20 additions & 1 deletion applications/strands-agent-base/app/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,25 @@ def _get_model() -> OpenAIModel:
return _model


def _gateway_headers() -> dict:
"""Authorization header from the projected workload-identity token.

The `gateway-identity` OAM trait mounts a projected ServiceAccount token
(audience `agentgateway`) and sets WORKLOAD_TOKEN_PATH. AgentGateway
validates it against the cluster OIDC issuer. Read fresh on each connect so
the kubelet-rotated token is always current. Returns {} when no token is
mounted (gateway auth not in use).
"""
path = os.getenv("WORKLOAD_TOKEN_PATH")
if path:
try:
with open(path) as f:
return {"Authorization": "Bearer " + f.read().strip()}
except OSError:
logger.warning("WORKLOAD_TOKEN_PATH set but token unreadable at %s", path)
return {}


def _get_mcp_tools() -> list:
global _mcp_tools, _mcp_exit_stack
if _mcp_exit_stack is not None:
Expand All @@ -61,7 +80,7 @@ def _get_mcp_tools() -> list:
for url in urls:
logger.info(f"Connecting to MCP server: {url}")
try:
client = MCPClient(lambda u=url: streamablehttp_client(u))
client = MCPClient(lambda u=url: streamablehttp_client(u, headers=_gateway_headers()))
stack.enter_context(client)
server_tools = client.list_tools_sync()
logger.info(f" Loaded {len(server_tools)} tools from {url}")
Expand Down
2 changes: 0 additions & 2 deletions applications/strands-agent-base/app/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@
# 3. Via Collector (OTEL_EXPORTER_OTLP_ENDPOINT set) — agent sends to local collector
if os.getenv("OTEL_PYTHON_DISTRO") == "aws_distro":
# Decentralized mode: ADOT auto-instrumentation handles telemetry.
# No manual StrandsTelemetry init — the aws_distro entry point
# configures exporters via env vars (CW Logs, X-Ray, CW Metrics).
pass
elif os.getenv("LANGFUSE_BASE_URL"):
try:
Expand Down
Loading