diff --git a/site/src/app/layout.tsx b/site/src/app/layout.tsx index d9bd84d..ba6df02 100644 --- a/site/src/app/layout.tsx +++ b/site/src/app/layout.tsx @@ -1,10 +1,38 @@ import type { Metadata } from "next"; import "./globals.css"; +const SITE = "https://dubsopenhub.github.io/dark-factory"; +const DESCRIPTION = + "Dark Factory is a GitHub Copilot CLI skill that turns a short free-text goal into a production-grade pull request. Eight specialist agents drawn from different model families, sealed-envelope testing, and a checkpoint-gated pipeline."; + export const metadata: Metadata = { + metadataBase: new URL(SITE), title: "Dark Factory ๐Ÿญ โ€” Lights Out Builds", - description: - "Dark Factory is a GitHub Copilot CLI skill that turns a short free-text goal into a production-grade pull request. Six specialist agents, sealed-envelope testing, checkpoint-gated pipeline.", + description: DESCRIPTION, + keywords: [ + "GitHub Copilot CLI", + "Copilot skill", + "agentic build system", + "sealed-envelope testing", + "shadow score", + "adversarial independence", + "AI code review", + ], + authors: [{ name: "DUBSOpenHub", url: "https://github.com/DUBSOpenHub" }], + alternates: { canonical: "/" }, + openGraph: { + type: "website", + url: SITE, + siteName: "Dark Factory", + title: "Dark Factory ๐Ÿญ โ€” Lights Out Builds", + description: DESCRIPTION, + }, + twitter: { + card: "summary_large_image", + title: "Dark Factory ๐Ÿญ โ€” Lights Out Builds", + description: DESCRIPTION, + }, + robots: { index: true, follow: true }, }; export default function RootLayout({ diff --git a/site/src/app/page.tsx b/site/src/app/page.tsx index 5e725fb..a36be47 100644 --- a/site/src/app/page.tsx +++ b/site/src/app/page.tsx @@ -73,8 +73,8 @@ export default function Home() { const [copied, setCopied] = useState(false); // โ”€โ”€ Counters โ”€โ”€ - const agents = useCounter(6); - const phases = useCounter(7); + const agents = useCounter(8); + const phases = useCounter(8); const hardening = useCounter(3); const shadow = useCounter(0); @@ -230,7 +230,7 @@ export default function Home() {

The agentic dark factory for AI building. Turn a short free-text goal into a{" "} - production-grade pull request โ€” six specialist agents orchestrated through a + production-grade pull request โ€” eight specialist agents from different model families orchestrated through a checkpoint-gated pipeline with{" "} The Machine

- 6 agents, 7 phases, zero blind spots + 8 agents, 8 phases, zero blind spots

Dark Factory orchestrates a team of specialist agents through a sealed-envelope pipeline. @@ -381,7 +381,7 @@ export default function Home() {

Agentic
lights out builds

Dark Factory is an agentic build system โ€” it isolates every build in a disposable - git worktree, orchestrates six specialist AI agents, and measures quality with sealed-envelope testing. + git worktree, orchestrates eight specialist AI agents drawn from different model families, and measures quality with sealed-envelope testing. The shadow score tells you exactly how much the builder missed. Lights out means the builder works blind โ€” and the hidden tests prove whether the spec was truly covered.

@@ -428,7 +428,7 @@ export default function Home() { {[ { num: "01", title: "Goal in, PR out", desc: <>Write a sentence. Get production code. Dark Factory takes a free-text goal and produces a complete pull request โ€” spec, architecture, implementation, tests, and delivery report. }, { num: "02", title: "Sealed-envelope testing", desc: <>QA writes hidden acceptance tests before any code exists. The builder never sees them. Shadow scores quantify blind spots the builder didn't know about. }, - { num: "03", title: "Six specialist agents", desc: <>Each phase has its own expert. Product Manager, Architect, QA Sealed, Lead Engineer, QA Validator, and Outcome Evaluator โ€” stateless, focused, governed. }, + { num: "03", title: "Eight specialist agents", desc: <>Each phase has its own expert. Product Manager, Architect, Arch Critic, QA Sealed, Lead Engineer, Red Team, QA Validator, and Outcome Evaluator โ€” stateless, focused, governed, and drawn from different model families. }, { num: "04", title: "Checkpoint-gated", desc: <>You stay in control. Human approval gates at every phase boundary. Review the PRD, approve the architecture, inspect the build โ€” or go fully dark with skip-all. }, { num: "05", title: "Crash-recoverable", desc: <>Every phase checkpoints to state.json. Network drops, timeouts, interrupted sessions โ€” just run dark factory resume and continue. }, { num: "06", title: "Express mode", desc: <>Short goals get fast builds. Express mode skips PRD and architecture, but still runs sealed QA from the raw goal. Quick fixes get the same quality envelope. }, @@ -513,16 +513,18 @@ export default function Home() {
Agent Team

The team.

-

Six specialist agents, each with its own prompt, model assignment, and governance rules. Stateless โ€” they only see what the Factory Manager passes them.

+

Eight specialist agents, each with its own prompt, model assignment, and governance rules. Stateless โ€” they only see what the Factory Manager passes them.

{[ - { 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, + }, + ]; +}