Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
372 commits
Select commit Hold shift + click to select a range
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
c61d8a2
docs(flow-d): add Lambda MicroVM substrate diagram doc
elamaran11 Jul 29, 2026
a7e4530
docs(flow-d): add Flow D section + TOC/flows-table entries to dark-fa…
elamaran11 Jul 29, 2026
46a16a7
feat(flow-d): add self-managed ack-lambdamicrovms controller addon (d…
elamaran11 Jul 29, 2026
7ea85c4
feat(flow-d): add KRO MicrovmSandbox RGD tying all MicroVM primitives
elamaran11 Jul 29, 2026
7390cf6
feat(flow-d): add lambda-microvm SandboxTemplate + bridge (the Runtim…
elamaran11 Jul 29, 2026
8f6a081
feat(flow-d): add dormant microvm block to hub agent-sandbox overlay
elamaran11 Jul 29, 2026
8c77e60
docs(flow-d): move ACK GA-list citation + capability-ownership split …
elamaran11 Jul 30, 2026
ddb2ef2
fix(flow-d): correct RGD to real Lambda MicroVM API (verified live)
elamaran11 Jul 30, 2026
a7c4b8a
feat(flow-d): fill hub overlay with real MicroVM values
elamaran11 Jul 30, 2026
8582eb4
feat(flow-d): add suspend/resume via Sandbox.operatingMode (microvm-l…
elamaran11 Jul 30, 2026
fb3e3bf
docs(flow-d): document Sandbox.operatingMode suspend/resume mechanism
elamaran11 Jul 30, 2026
72f2541
feat(coder): emit a PR change-description alongside verification
elamaran11 Jul 30, 2026
6078c18
fix(security-agent): early-exit when findings ready + graceful timeout
elamaran11 Jul 30, 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
0a3d7c0
feat(flow-d): label-branched pipeline — darkfactory-lambda -> MicroVM…
elamaran11 Jul 31, 2026
05a07d4
feat(flow-d): suspend/resume demo — suspend MicroVM after coder pushes
elamaran11 Jul 31, 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
f04719f
fix(flow-d): align MicrovmSandbox RGD with ACK controller best practices
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
0d368b4
refactor(flow-d): split Lambda MicroVM into its own agent-sandbox-lam…
elamaran11 Jul 31, 2026
26fe342
feat(flow-d): enforce suspend→resume→terminate lifecycle (VM persists…
elamaran11 Jul 31, 2026
9037e5f
docs(flow-d): update design for image-only KRO + shim-run VM + suspen…
elamaran11 Jul 31, 2026
c75df66
refactor(gitops): adopt reference-model addon pattern
punkwalker Jul 15, 2026
a28f74c
fix(control-plane): enable cert-manager for LBC webhook serving cert
punkwalker Jul 20, 2026
b8fb0d4
fix(control-plane): enable platform-manifests-bootstrap for system-<p…
punkwalker Jul 20, 2026
a99e200
fix(control-plane): keep platform_manifests off (Ray-only, inert here)
punkwalker Jul 20, 2026
ef53c51
fix(fleet): move spoke defs to spoke-values/crossplane-clusters path
punkwalker Jul 20, 2026
94e02ed
chore(fleet): remove stale kro-values spoke defs (superseded by spoke…
punkwalker Jul 20, 2026
a22ffd7
fix(spokes): enable cert-manager (dev) + platform-manifests-bootstrap…
punkwalker Jul 20, 2026
ff3944a
fix(dark-factory): derive webhook URL + ingress host from ingress_dom…
punkwalker Jul 21, 2026
158930c
fix(langfuse,otel): match manifests to API-injected defaults (stop Ar…
punkwalker Jul 21, 2026
0a7231a
fix(langfuse): add ESO remoteRef defaults to keycloak-secret External…
punkwalker Jul 21, 2026
bddeaa5
feat(agent-sandbox): GitOps-managed Kata nested-virt MNG (port from P…
punkwalker Jul 21, 2026
3a750ec
fix(agent-sandbox): kata-deploy 4.0.0 self-taint-removal + drop Route…
punkwalker Jul 22, 2026
d082e05
fix(kata-deploy): pin defaultShim to clh for 4.0.0
punkwalker Jul 22, 2026
9781242
fix(agent-sandbox): disable clusterip-egress-firewall — NP supersedes it
punkwalker Jul 23, 2026
d1dde10
feat(sandbox): enable karpenter addon + kata nodepools, VMM swap, df …
punkwalker Jul 24, 2026
8872bed
feat(sandbox): scoped GitHub credentials, merge-gate fix, PR#32 cleanup
punkwalker Jul 30, 2026
a26c00d
feat(hub): enable karpenter + kata_nodepool on the control plane (ste…
punkwalker Jul 30, 2026
11603e0
feat(hub): move agent-sandbox off the spoke onto the hub (step 2/2)
punkwalker Jul 30, 2026
d1d6731
fix(sandbox): give the Namespace and RuntimeClasses a single owner each
punkwalker Jul 30, 2026
24cc70a
feat(dark-factory): wire a real test target — own-account coder image…
punkwalker Jul 31, 2026
f7d6c47
fix(sandbox): give the coder a DNS-free path to Bifrost + allow publi…
punkwalker Jul 31, 2026
76caaa8
fix(dark-factory): point the CLAIM-injected BIFROST_URL at the pinned…
punkwalker Jul 31, 2026
8bf0c73
refactor(gitops): resolve image registries from cluster annotations, …
punkwalker Jul 31, 2026
0990d4d
fix(registry): align templated coder image tags with upstream v0.2.5
punkwalker Jul 31, 2026
575ae48
feat(flow-d): controller IAM via ACK (all-GitOps) + enable on hub
elamaran11 Jul 31, 2026
d484be9
refactor(gitops): move the bootstrap Application to gitops/bootstrap/
punkwalker Jul 31, 2026
91dfc5b
Merge pull request #45 from aws-samples/fix/parity-with-peeks
elamaran11 Jul 31, 2026
f544c7a
Revert "feat(sandbox): Agent Sandbox on the hub + scoped GitHub crede…
elamaran11 Aug 1, 2026
47b8908
Merge pull request #47 from aws-samples/revert-45-fix/parity-with-peeks
elamaran11 Aug 1, 2026
c3ac0c6
Merge commit '47b8908c91d87747c722d78d83782e216797000f' into flow-d-l…
Aug 1, 2026
ba514ac
feat(flow-d): re-apply df-run orchestration onto reverted #32 (old/wo…
Aug 1, 2026
1e7227d
fix(flow-d): sync-wave the RGD before its MicrovmSandbox instance
Aug 3, 2026
8b81ed1
fix(agent-sandbox): allow coder DNS egress to public resolvers
Aug 3, 2026
dfdca56
fix(dark-factory): retain completed workflows 7d (was 1h)
Aug 3, 2026
aaaaff6
fix(flow-d): use kro.run apiGroup + grant KRO graph child RBAC
Aug 3, 2026
70c2fdc
fix(flow-d): quote operands in microvm-suspend when-expression
Aug 3, 2026
ee5d6ff
fix(dark-factory): default microvmSuspend off (Flow D only)
Aug 3, 2026
7187d4a
fix(agent-sandbox): allow coder DNS egress to public resolvers
Aug 3, 2026
df035d8
fix(dark-factory): retain completed workflows 7d (was 1h)
Aug 3, 2026
909c8fb
Merge pull request #48 from aws-samples/fix/kata-coder-dns-and-ttl
elamaran11 Aug 3, 2026
82daaa1
fix(flow-d): scope controller iam:PassRole by target ARN, drop servic…
Aug 3, 2026
8c9a08d
fix(flow-d): controller needs lambda:PassNetworkConnector for image b…
Aug 3, 2026
e32a08d
fix(flow-d): point codeArtifactUri at the RGD-created bucket
Aug 3, 2026
556e7c7
fix(flow-d): name the bridge container 'coder' for claim-injection pa…
Aug 3, 2026
6a97fed
fix(flow-d): allow bridge egress to the K8s API server
Aug 3, 2026
df957cd
fix(flow-d): bridge/lifecycle image needs aws-cli v2 (has lambda-micr…
Aug 3, 2026
8a16250
fix(flow-d): hub overlay bridgeImage → aws-cli v2 (was pinning alpine…
Aug 3, 2026
2cebef5
fix(flow-d): allow bridge egress to EKS Pod Identity endpoint
Aug 3, 2026
2c7738d
fix(flow-d): bridge SANDBOX_NAME from downward API (was df-<issue> mi…
Aug 3, 2026
7911579
fix(flow-d): re-enable microvmSuspend (hub runs both substrates)
Aug 3, 2026
e56dd91
docs(flow-d): design for running the coder inside the MicroVM
Aug 3, 2026
27ee2b5
feat(flow-d): lambda-coder — Bedrock-direct + /run hook wrapper
Aug 3, 2026
7369d1b
feat(flow-d): bridge passes runHookPayload (issue ctx + gh token) to …
Aug 3, 2026
6e7070b
fix(flow-d): build runHookPayload with python3, not node
Aug 3, 2026
72d8501
fix(flow-d): single-line python3 payload builder (YAML block-scalar fix)
Aug 3, 2026
cfcb258
docs(flow-d): record in-VM build attempt + confirmed /run-hook blocker
Aug 3, 2026
f0e12fd
feat(flow-d): bridge creates Microvm CR + payload Secret (fires /run)
Aug 3, 2026
00195a5
docs(flow-d): Microvm CR path reconciles + VM runs, /run hook still s…
Aug 3, 2026
d0bc733
docs(flow-d): E2E run #106 report — chain works to /run, 2 gaps isolated
Aug 3, 2026
cc6d33c
feat(flow-d): bridge drives /run + runtime CloudWatch logs + ingress …
Aug 4, 2026
601a0c3
fix(flow-d): grant lambda:CreateMicrovmAuthToken (bridge drives /run)
Aug 4, 2026
9ff9018
feat(flow-d): observable coder — /status endpoint + bridge polls it
Aug 4, 2026
426d069
chore(flow-d): bump codeArtifactUri to -r2 to force image rebuild
Aug 4, 2026
8e18fb4
fix(flow-d): minimal hook-server (drop /status) + artifact r3
Aug 4, 2026
a84cb38
feat(flow-d): /logs endpoint + capture coder output to file (observab…
Aug 4, 2026
d48d707
fix(flow-d): set WORKSPACE=/tmp/workspace (coder crashed EACCES on /w…
Aug 4, 2026
7c2f950
fix(flow-d): df-iterate routes fix round to originating substrate
Aug 4, 2026
63526e5
fix(flow-d): remove microvm-suspend from df-run DAG; bridge owns suspend
Aug 4, 2026
405f2a1
docs(flow-d): substrate benchmark + diagrams (Kata vs Lambda MicroVM)
Aug 4, 2026
8089bc9
fix(flow-d): bump bridge memory 128Mi→1Gi (was OOMKilled mid fix-round)
Aug 4, 2026
3ec7fb3
fix(flow-d): forward df-iterate note into the MicroVM coder
Aug 4, 2026
4b088b8
fix(flow-d): fresh MicroVM per fix round (terminate stale suspended VM)
Aug 4, 2026
879347e
fix(flow-d): real CRD-driven suspend/resume across the fix loop
Aug 4, 2026
d9bed02
fix(flow-d): keep VM on suspend — annotation selector + Sandbox-exist…
Aug 4, 2026
8148300
fix(flow-d): one Sandbox per VM — stable claim naming by issue-number
Aug 4, 2026
b05e9ff
refactor(flow-d): separate df-run-lambda; restore df-run to certified…
Aug 4, 2026
d73ef79
feat(flow-d): route darkfactory-lambda → df-run-lambda + workflow IAM…
Aug 4, 2026
c69b3ac
docs(flow-d): update benchmark + diagrams for separate df-run-lambda
Aug 4, 2026
809cbae
fix(df-merge): only count agent findings on the CURRENT head sha
Aug 4, 2026
2457dfa
fix(df-merge): match inline findings by original_commit_id (exclude c…
Aug 4, 2026
065ce2c
Merge pull request #41 from aws-samples/flow-d-lambda-microvm-sandbox
elamaran11 Aug 4, 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