Dark Factory orchestrates a team of specialist agents through a sealed-envelope pipeline.
@@ -381,7 +381,7 @@ export default function Home() {
{[
- { icon: "๐", name: "Product Manager", role: "Phase 1 ยท PRD Author", desc: "Turns your free-text goal into a structured PRD with acceptance criteria, user stories, and technical constraints. Capped at 180 lines.", model: "claude-sonnet-4.6" },
- { icon: "๐๏ธ", name: "Architect", role: "Phase 2b ยท System Designer", desc: "Designs the system from the PRD โ diagrams, contracts, file structure, tech decisions. Runs in parallel with QA Sealed.", model: "claude-sonnet-4.6" },
- { icon: "๐", name: "QA Sealed", role: "Phase 2a ยท Hidden Test Author", desc: "Writes acceptance tests from the PRD that the builder will never see. Tests are SHA-256 hashed and stored in a sealed vault.", model: "claude-sonnet-4.6" },
- { icon: "โ๏ธ", name: "Lead Engineer", role: "Phase 3 & 5 ยท Builder", desc: "Implements the spec, writes tests, and handles hardening cycles. Only sees failure messages from sealed tests โ never the tests themselves.", model: "claude-sonnet-4.6" },
- { icon: "๐งช", name: "QA Validator", role: "Phase 4 ยท Sealed Test Runner", desc: "Temporarily injects sealed tests into the worktree, runs them, reports the shadow score, then removes all traces.", model: "claude-haiku-4.5" },
- { icon: "๐", name: "Outcome Evaluator", role: "Phase 7 ยท Post-Ship Analyst", desc: "Revisits archived artifacts after delivery. Scores PRD criteria fulfillment and KPI alignment out of 100.", model: "claude-sonnet-4.6" },
+ { icon: "๐", name: "Product Manager", role: "Phase 1 ยท PRD Author", desc: "Turns your free-text goal into a structured PRD with acceptance criteria, user stories, and technical constraints.", model: "gpt-5.5 ยท openai" },
+ { icon: "๐๏ธ", name: "Architect", role: "Phase 2b ยท System Designer", desc: "Designs the system from the PRD โ diagrams, contracts, file structure, tech decisions. Runs in parallel with the sealed authors.", model: "claude-opus-5 ยท anthropic" },
+ { icon: "๐", name: "Arch Critic", role: "Phase 2.5b ยท Design Reviewer", desc: "Reviews the architecture before a line is implemented, from a different family than the Architect, with a full requirement-coverage walk.", model: "gpt-5.6-terra ยท openai" },
+ { icon: "๐", name: "QA Sealed", role: "Phase 2a ยท Hidden Test Author", desc: "Writes acceptance tests from the PRD that the builder will never see. Two independent families author suites, so one family's blind spot cannot sink the envelope.", model: "gpt-5.6-terra + gemini-3.1-pro" },
+ { icon: "โ๏ธ", name: "Lead Engineer", role: "Phase 3 & 5 ยท Builder", desc: "Implements the spec and handles hardening cycles. Different family from every seal author โ it only ever sees failure messages, never the tests.", model: "claude-opus-4.8 ยท anthropic" },
+ { icon: "๐ฏ", name: "Red Team", role: "Phase 4.5 ยท Adversary", desc: "Attacks what the spec forgot once the seal opens. Each finding is classed as spec gap or implementation bug, which decides who learns from it.", model: "gpt-5.6-sol ยท openai" },
+ { icon: "๐งช", name: "QA Validator", role: "Phase 4 ยท Sealed Test Runner", desc: "Runs both suites in a disposable worktree built from the engineer's commit, reports the shadow score, then destroys it. Identity is unconstrained โ it executes, it does not author.", model: "gemini-3.6-flash ยท google" },
+ { icon: "๐", name: "Outcome Evaluator", role: "Phase 7 ยท Post-Ship Analyst", desc: "Revisits archived artifacts after delivery. Scores PRD criteria fulfillment and KPI alignment out of 100.", model: "claude-sonnet-5 ยท anthropic" },
].map((a) => (
{a.icon}
@@ -637,7 +639,7 @@ export default function Home() {
{[
- { name: "Full Build", code: "dark factory โ ", desc: "Complete pipeline with all 7 phases and checkpoints at every gate. The \"lights out\" experience." },
+ { name: "Full Build", code: "dark factory โ ", desc: "Complete pipeline with all 8 phases and checkpoints at every gate. The \"lights out\" experience." },
{ name: "Express", code: "dark factory express โ ", desc: "Skips PRD/Architecture. Sealed QA still runs from the raw goal. One checkpoint at delivery." },
{ name: "Resume", code: "dark factory resume", desc: "Reloads state.json and continues from the saved phase. Crash recovery built in." },
{ name: "Status", code: "dark factory status", desc: "Prints current state without mutating anything. Shows pending evaluations." },
diff --git a/site/src/app/robots.ts b/site/src/app/robots.ts
new file mode 100644
index 0000000..4ebd485
--- /dev/null
+++ b/site/src/app/robots.ts
@@ -0,0 +1,10 @@
+import type { MetadataRoute } from "next";
+
+export const dynamic = "force-static";
+
+export default function robots(): MetadataRoute.Robots {
+ return {
+ rules: { userAgent: "*", allow: "/" },
+ sitemap: "https://dubsopenhub.github.io/dark-factory/sitemap.xml",
+ };
+}
diff --git a/site/src/app/sitemap.ts b/site/src/app/sitemap.ts
new file mode 100644
index 0000000..e0619fc
--- /dev/null
+++ b/site/src/app/sitemap.ts
@@ -0,0 +1,14 @@
+import type { MetadataRoute } from "next";
+
+export const dynamic = "force-static";
+
+export default function sitemap(): MetadataRoute.Sitemap {
+ return [
+ {
+ url: "https://dubsopenhub.github.io/dark-factory/",
+ lastModified: new Date(),
+ changeFrequency: "monthly",
+ priority: 1,
+ },
+ ];
+}