> ## Documentation Index
> Fetch the complete documentation index at: https://site.aspect.build/llms.txt
> Use this file to discover all available pages before exploring further.

# Verifying code faster than agents can write it

> Generation got cheap. Establishing that it works didn&rsquo;t.

export const MarketingPage = () => <div className="marketing-page-marker" style={{
  display: "none"
}} />;

export const CTA = ({title, subtitle, primaryCta, primaryHref = "#", secondaryCta, secondaryHref = "#"}) => <section className="w-full flex justify-center px-4 py-16 md:py-20">
    <div className="w-full rounded-2xl text-white flex flex-col md:flex-row items-center justify-center gap-10 md:gap-16 p-8 md:p-12 text-center md:text-left" style={{
  maxWidth: "1140px",
  background: "linear-gradient(135deg, #1a3a5c 0%, #176ACC 100%)"
}}>
      <div>
        <h2 className="text-2xl md:text-3xl font-semibold tracking-tight">{title}</h2>
        {subtitle && <div className="mt-3 text-blue-100 text-base">{subtitle}</div>}
      </div>
      <div className="flex flex-wrap gap-3 shrink-0 justify-center">
        {primaryCta && <a href={primaryHref} className="inline-flex items-center px-6 py-3 rounded-lg bg-white text-blue-700 font-semibold hover:bg-blue-50 transition whitespace-nowrap shadow-sm">
            {primaryCta}
          </a>}
        {secondaryCta && <a href={secondaryHref} className={`inline-flex items-center px-6 py-3 rounded-lg border border-blue-300/50 text-white font-semibold hover:bg-blue-700/30 transition whitespace-nowrap ${secondaryHref === "/request-demo" ? "demo-gradient-btn" : ""}`}>
            {secondaryCta}
          </a>}
      </div>
    </div>
  </section>;

export const StatsBar = ({stats = []}) => <div className="flex flex-wrap justify-center gap-8 md:gap-16 py-4">
    {stats.map((stat, i) => <div key={i} className="flex flex-col items-center text-center">
        <span className="text-3xl md:text-4xl font-bold text-zinc-900 dark:text-white">{stat.value}</span>
        <span className="text-sm text-zinc-500 dark:text-zinc-400 mt-1">{stat.label}</span>
      </div>)}
  </div>;

export const FeatureGrid3 = ({children}) => <div className="marketing-grid-3">{children}</div>;

export const FeatureGrid2 = ({children}) => <div className="marketing-grid-2">{children}</div>;

export const FeatureShowcase = ({title, description, href, linkText = "Learn more", flipped = false, label, children}) => <div className={`flex flex-col ${flipped ? "md:flex-row-reverse" : "md:flex-row"} items-center gap-10 md:gap-16 py-10`}>
    <div className="flex-1 min-w-0">
      {label && <p className="text-xs font-semibold tracking-widest text-blue-600 dark:text-blue-400 uppercase mb-3">{label}</p>}
      <h3 className="text-2xl md:text-3xl font-bold text-zinc-900 dark:text-white tracking-tight">{title}</h3>
      <p className="mt-4 text-zinc-500 dark:text-zinc-300 leading-relaxed text-base">{description}</p>
      {href && <div className="mt-6">
          <a href={href} className="inline-flex items-center text-blue-600 dark:text-blue-400 font-semibold text-sm hover:underline underline-offset-2">
            {linkText} →
          </a>
        </div>}
    </div>
    <div className="flex-1 min-w-0 feature-showcase-image">
      {children}
    </div>
  </div>;

export const PlatformFeature = ({title, description, href, linkText = "Learn more"}) => <div className="flex flex-col p-5 rounded-xl border border-zinc-200 dark:border-zinc-700/60 bg-white dark:bg-zinc-800/40 hover:border-blue-200 dark:hover:border-blue-700 hover:shadow-sm transition-all duration-200">
    <h3 className="text-sm font-semibold text-zinc-900 dark:text-white">{title}</h3>
    <p className="mt-1.5 text-xs text-zinc-500 dark:text-zinc-400 leading-relaxed">{description}</p>
    {href && <a href={href} className="inline-flex items-center mt-3 text-xs text-blue-600 dark:text-blue-400 font-semibold hover:underline underline-offset-2">
        {linkText} →
      </a>}
  </div>;

export const Hero = ({title, subtitle, badge, eyebrow, heroImageClassName = "", primaryCta, primaryHref = "#", secondaryCta, secondaryHref = "#", centered = true, children}) => <section className="w-full flex justify-center px-4 pt-16 pb-16 md:pt-24 md:pb-24" style={{
  background: "linear-gradient(180deg, var(--hero-gradient-start, #f8fafc) 0%, var(--hero-gradient-end, #ffffff) 100%)"
}}>
    <div className="w-full" style={{
  maxWidth: "1140px"
}}>
      {centered && !children ? <div className="flex flex-col items-center text-center">
          {badge && <div className="inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-blue-50 dark:bg-blue-900/30 border border-blue-200 dark:border-blue-700 text-blue-700 dark:text-blue-300 text-sm font-medium mb-6">
              {badge}
            </div>}
          {eyebrow && <div className="text-xs font-semibold tracking-widest uppercase text-blue-600 dark:text-blue-400 mb-4">
              {eyebrow}
            </div>}
          <h1 className="text-4xl md:text-5xl font-semibold text-zinc-900 dark:text-white leading-tight tracking-tight" style={{
  maxWidth: "820px"
}}>
            {String(title).split(/\\n|\n/).map((line, i) => i ? [<br key={i} />, line] : line)}
          </h1>
          {subtitle && <div className="subtitle-gap text-lg md:text-xl text-zinc-500 dark:text-zinc-300 leading-relaxed" style={{
  marginTop: "1rem",
  maxWidth: "600px"
}}>
              {subtitle}
            </div>}
          {(primaryCta || secondaryCta) && <div className="flex flex-wrap gap-3 mt-10 justify-center">
            {primaryCta && <a href={primaryHref} className="inline-flex items-center px-6 py-3 rounded-lg bg-blue-600 text-white font-semibold hover:bg-blue-700 transition shadow-sm">
                {primaryCta}
              </a>}
            {secondaryCta && <a href={secondaryHref} className={`inline-flex items-center px-6 py-3 rounded-lg border border-zinc-300 dark:border-zinc-600 text-zinc-700 dark:text-zinc-200 font-semibold hover:bg-zinc-50 dark:hover:bg-zinc-800 transition ${secondaryHref === "/request-demo" ? "demo-gradient-btn" : ""}`}>
                {secondaryCta}
              </a>}
          </div>}
        </div> : <div className="flex flex-col md:flex-row items-center gap-10 md:gap-16">
          <div className="flex-1 min-w-0">
            {badge && <div className="inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-blue-50 dark:bg-blue-900/30 border border-blue-200 dark:border-blue-700 text-blue-700 dark:text-blue-300 text-sm font-medium mb-6">
                {badge}
              </div>}
            {eyebrow && <div className="text-xs font-semibold tracking-widest uppercase text-blue-600 dark:text-blue-400 mb-4">
                {eyebrow}
              </div>}
            <h1 className="text-4xl md:text-5xl font-semibold text-zinc-900 dark:text-white leading-tight tracking-tight">
            {String(title).split(/\\n|\n/).map((line, i) => i ? [<br key={i} />, line] : line)}
          </h1>
            {subtitle && <div className="subtitle-gap text-lg md:text-xl text-zinc-500 dark:text-zinc-300 leading-relaxed" style={{
  marginTop: "1rem"
}}>
                {subtitle}
              </div>}
            <div className="flex flex-wrap gap-3 mt-8">
              {primaryCta && <a href={primaryHref} className="inline-flex items-center px-6 py-3 rounded-lg bg-blue-600 text-white font-semibold hover:bg-blue-700 transition shadow-sm">
                  {primaryCta}
                </a>}
              {secondaryCta && <a href={secondaryHref} className={`inline-flex items-center px-6 py-3 rounded-lg border border-zinc-300 dark:border-zinc-600 text-zinc-700 dark:text-zinc-200 font-semibold hover:bg-zinc-50 dark:hover:bg-zinc-800 transition ${secondaryHref === "/request-demo" ? "demo-gradient-btn" : ""}`}>
                  {secondaryCta}
                </a>}
            </div>
          </div>
          {children && <div className={`flex-1 min-w-0 hero-image ${heroImageClassName}`}>
              {children}
            </div>}
        </div>}
    </div>
  </section>;

<MarketingPage />

<Hero title="Verifying code faster than agents can write it" subtitle="Generation got cheap. Establishing that it works didn’t." primaryCta="Start a trial" primaryHref="/trial" secondaryCta="Back to BazelCon" secondaryHref="/bazelcon-2026" />

<div className="w-full flex justify-center px-4 pt-8">
  <p className="text-center text-sm text-zinc-500 dark:text-zinc-400">
    <strong className="text-zinc-900 dark:text-white">Written for</strong> Engineering leadership feeling the throughput squeeze.
  </p>
</div>

<div className="w-full flex justify-center px-4 py-8 md:py-12">
  <div className="w-full" style={{ maxWidth: "1140px" }}>
    <div className="mb-6">
      <p className="text-xs font-semibold tracking-widest text-blue-600 dark:text-blue-400 uppercase mb-2">The argument</p>
      <h2 className="text-3xl md:text-4xl font-semibold text-zinc-900 dark:text-white tracking-tight">Verification is the constraint now, not generation</h2>
    </div>

    <div className="max-w-3xl mt-6">
      <p className="text-zinc-600 dark:text-zinc-300 leading-relaxed">
        For as long as software has been an industry, output scaled with headcount. Hire more engineers, ship more code, and the work of validating that code grew at roughly the same rate, because the same people did both. That coupling is what made capacity planning possible.
      </p>

      <p className="text-zinc-600 dark:text-zinc-300 leading-relaxed mt-4">
        Agents broke it. One engineer with a capable agent produces several times their previous volume of change, and the multiple keeps moving. The generation side of the pipeline became elastic almost overnight; everything downstream stayed exactly as elastic as it was before.
      </p>

      <p className="text-zinc-600 dark:text-zinc-300 leading-relaxed mt-4">
        What you get is a queue, and not a metaphorical one: a literal backlog of changes waiting to be built, tested and reviewed, growing at the rate the agents produce and draining at the rate the build system allows.
      </p>
    </div>

    <div className="mt-6 max-w-3xl">
      <ul className="space-y-3 text-zinc-600 dark:text-zinc-300 leading-relaxed" style={{ listStyle: "none", paddingLeft: 0 }}>
        <li className="flex gap-3">
          <span className="mt-2 shrink-0 rounded-sm bg-blue-600 dark:bg-blue-400" style={{ width: "6px", height: "6px" }} />

          <span><strong className="text-zinc-900 dark:text-white">Any plan that only makes generation faster makes the constraint worse.</strong> If your build and test loop is unchanged from eighteen months ago, the ceiling on your engineering throughput is now set by your CI, not by your engineers.</span>
        </li>

        <li className="flex gap-3">
          <span className="mt-2 shrink-0 rounded-sm bg-blue-600 dark:bg-blue-400" style={{ width: "6px", height: "6px" }} />

          <span><strong className="text-zinc-900 dark:text-white">The verification loop was designed for humans reading text.</strong> An agent that fails a build gets a log. It can’t reliably tell what broke, so it retries blindly or escalates to a human.</span>
        </li>

        <li className="flex gap-3">
          <span className="mt-2 shrink-0 rounded-sm bg-blue-600 dark:bg-blue-400" style={{ width: "6px", height: "6px" }} />

          <span><strong className="text-zinc-900 dark:text-white">The economics have to hold.</strong> Verifying several times more change at the same unit cost is a budget problem before it is an engineering one.</span>
        </li>
      </ul>
    </div>
  </div>
</div>

<div className="w-full flex justify-center px-4 py-8 md:py-12 bg-gray-50 dark:bg-zinc-900">
  <div className="w-full" style={{ maxWidth: "1140px" }}>
    <div className="mb-6">
      <h2 className="text-3xl md:text-4xl font-semibold text-zinc-900 dark:text-white tracking-tight">Why the bill grows faster than the change count</h2>
      <p className="mt-3 text-lg text-zinc-500 dark:text-zinc-300 leading-relaxed max-w-3xl">If verification cost scaled linearly with the number of changes, this would be a budgeting exercise. It doesn't, for four compounding reasons.</p>
    </div>

    <div className="mt-8">
      <FeatureGrid2>
        <PlatformFeature title="Re-verification" description="More changes in flight means more merges landing between the moment a change is verified and the moment it lands. Every intervening merge invalidates part of what you already proved." />

        <PlatformFeature title="Retries" description="Flaky tests convert change volume into compute directly. A test that fails one run in fifty is invisible at ten builds a day and a daily interruption at five hundred." />

        <PlatformFeature title="Contention" description="Shared CI capacity queues. Queueing raises latency, latency raises the number of changes in flight, and more changes in flight raises contention. This one feeds itself." />

        <PlatformFeature title="Blast radius" description="A change to a widely-depended-on target invalidates a large fraction of the graph. Agents produce more changes to shared code, not fewer. They have no instinct for which files are politically expensive to touch." />
      </FeatureGrid2>
    </div>

    <div className="max-w-3xl mt-6">
      <p className="text-zinc-600 dark:text-zinc-300 leading-relaxed">
        None of these are new. What is new is that agent adoption pushes all four at once, and they multiply rather than add. You can’t buy your way out with a bigger CI fleet alone: linear compute against superlinear demand loses. <strong className="text-zinc-900 dark:text-white">What changes the curve is not running the work faster. It is not running work you have already proven.</strong>
      </p>
    </div>
  </div>
</div>

<div className="w-full flex justify-center px-4 py-8 md:py-12">
  <div className="w-full" style={{ maxWidth: "1140px" }}>
    <div className="mb-6">
      <h2 className="text-3xl md:text-4xl font-semibold text-zinc-900 dark:text-white tracking-tight">Make the build legible to machines</h2>
      <p className="mt-3 text-lg text-zinc-500 dark:text-zinc-300 leading-relaxed max-w-3xl">Discoverability solves what to run. The harder half is what happened.</p>
    </div>

    <div className="max-w-3xl mt-6">
      <p className="text-zinc-600 dark:text-zinc-300 leading-relaxed">
        Every monorepo grows the same sediment of scripts: undiscoverable, undocumented and subtly different in every repo. The Aspect CLI replaces that with a task surface a machine can enumerate, so “what can I run here?” has an answer that doesn’t depend on tribal knowledge.
      </p>

      <p className="text-zinc-600 dark:text-zinc-300 leading-relaxed mt-4">
        Then the results. When a build fails, an agent needs to know which target failed, why, what the cache did, and whether this has happened before. A log answers none of those reliably. It is prose, written for a person, with the important line somewhere in the middle of forty thousand others. So the same data the UI shows is available over HTTP, and as tools an agent calls directly.
      </p>
    </div>

    <div className="mt-8">
      <FeatureGrid2>
        <PlatformFeature title="Unknown parameters are rejected by name" description="A silently dropped filter produces a confidently wrong answer. That is worse than an error, because an agent will act on it." />

        <PlatformFeature title="Failures that are only yours" description="Lint fails only on violations the current change introduced, so an agent isn’t fighting years of accumulated debt to work out whether its change was good." />
      </FeatureGrid2>
    </div>
  </div>
</div>

<div className="w-full flex justify-center px-4 py-8 md:py-12 bg-gray-50 dark:bg-zinc-900">
  <div className="w-full" style={{ maxWidth: "1140px" }}>
    <div className="mb-6">
      <h2 className="text-3xl md:text-4xl font-semibold text-zinc-900 dark:text-white tracking-tight">Take the work out of the loop entirely</h2>
      <p className="mt-3 text-lg text-zinc-500 dark:text-zinc-300 leading-relaxed max-w-3xl">Making verification legible is necessary. Making less of it happen is better.</p>
    </div>

    <div className="mt-6 max-w-3xl">
      <ul className="space-y-3 text-zinc-600 dark:text-zinc-300 leading-relaxed" style={{ listStyle: "none", paddingLeft: 0 }}>
        <li className="flex gap-3">
          <span className="mt-2 shrink-0 rounded-sm bg-blue-600 dark:bg-blue-400" style={{ width: "6px", height: "6px" }} />

          <span><strong className="text-zinc-900 dark:text-white">Never verify the same thing twice.</strong> A cache shared across CI and every developer machine means an action executed anywhere is not executed again. As change volume rises, the proportion of work that is genuinely novel falls.</span>
        </li>

        <li className="flex gap-3">
          <span className="mt-2 shrink-0 rounded-sm bg-blue-600 dark:bg-blue-400" style={{ width: "6px", height: "6px" }} />

          <span><strong className="text-zinc-900 dark:text-white">Only verify what the change affects.</strong> Bazel’s dependency graph already knows which targets a change can possibly affect. Testing that set is the difference between a cost that tracks the size of the change and one that tracks the size of the repository.</span>
        </li>

        <li className="flex gap-3">
          <span className="mt-2 shrink-0 rounded-sm bg-blue-600 dark:bg-blue-400" style={{ width: "6px", height: "6px" }} />

          <span><strong className="text-zinc-900 dark:text-white">Then spread what is left.</strong> Remote execution runs the remaining actions across a fleet, so the wall-clock cost of verification stops being a function of the developer’s laptop.</span>
        </li>
      </ul>
    </div>

    <div className="max-w-3xl mt-6">
      <p className="text-zinc-600 dark:text-zinc-300 leading-relaxed">
        You need both halves. Cutting the work without cutting the wait leaves developers waiting; cutting the wait without cutting the work leaves you paying for a bigger fleet every quarter.
      </p>
    </div>

    <div className="mt-10">
      <StatsBar
        stats={[
  { value: "23–26M", label: "remote actions per day" },
  { value: "92.8%", label: "action cache hit rate" },
  { value: "~1.7 PB", label: "logical cache reads per day" }
]}
      />
    </div>

    <p className="mt-6 text-sm text-zinc-500 dark:text-zinc-400 text-center">
      The stack behind this has been architected and sized for monorepo workloads at these volumes. At
      a 92.8% hit rate, thirteen of every fourteen actions are not executed at all. That is the mechanism that
      makes agent-scale change volume affordable.
    </p>
  </div>
</div>

<div className="w-full flex justify-center px-4 py-8 md:py-12">
  <div className="w-full" style={{ maxWidth: "1140px" }}>
    <div className="mb-6">
      <h2 className="text-3xl md:text-4xl font-semibold text-zinc-900 dark:text-white tracking-tight">Three things to do this quarter</h2>
    </div>

    <div className="mt-6 max-w-3xl">
      <ul className="space-y-3 text-zinc-600 dark:text-zinc-300 leading-relaxed" style={{ listStyle: "none", paddingLeft: 0 }}>
        <li className="flex gap-3">
          <span className="mt-2 shrink-0 rounded-sm bg-blue-600 dark:bg-blue-400" style={{ width: "6px", height: "6px" }} />

          <span><strong className="text-zinc-900 dark:text-white">Measure your verification cost per change, not per build.</strong> If you can’t, that’s the first finding.</span>
        </li>

        <li className="flex gap-3">
          <span className="mt-2 shrink-0 rounded-sm bg-blue-600 dark:bg-blue-400" style={{ width: "6px", height: "6px" }} />

          <span><strong className="text-zinc-900 dark:text-white">Find out what fraction of your CI compute is re-execution.</strong> Cache hit rate answers this directly, and most teams have never looked.</span>
        </li>

        <li className="flex gap-3">
          <span className="mt-2 shrink-0 rounded-sm bg-blue-600 dark:bg-blue-400" style={{ width: "6px", height: "6px" }} />

          <span><strong className="text-zinc-900 dark:text-white">Point one repository at a hosted instance and give an agent the API.</strong> The question is not whether it is faster. It is whether the agent stops needing a human to read the log.</span>
        </li>
      </ul>
    </div>
  </div>
</div>

<div className="w-full flex justify-center px-4 py-8 md:py-12 bg-gray-50 dark:bg-zinc-900">
  <div className="w-full" style={{ maxWidth: "1140px" }}>
    <div className="mb-6">
      <h2 className="text-3xl md:text-4xl font-semibold text-zinc-900 dark:text-white tracking-tight">Where it runs</h2>
      <p className="mt-3 text-lg text-zinc-500 dark:text-zinc-300 leading-relaxed max-w-3xl">Three ways to run this, and the axis that separates them is isolation, not hosting.</p>
    </div>

    <div className="mt-2 overflow-x-auto">
      <table className="w-full text-left border-collapse" style={{ minWidth: "560px" }}>
        <thead>
          <tr className="border-b border-zinc-300 dark:border-zinc-600"><th className="py-3 pr-6 text-xs font-semibold uppercase tracking-widest text-zinc-500">Option</th><th className="py-3 pr-6 text-xs font-semibold uppercase tracking-widest text-zinc-500">Infrastructure</th><th className="py-3 pr-6 text-xs font-semibold uppercase tracking-widest text-zinc-500">Cloud account</th><th className="py-3 pr-6 text-xs font-semibold uppercase tracking-widest text-zinc-500">Operated by</th></tr>
        </thead>

        <tbody className="text-sm">
          <tr className="border-b border-zinc-200 dark:border-zinc-700/60"><td className="py-3 pr-6 font-semibold text-zinc-900 dark:text-white">Aspect Cloud</td><td className="py-3 pr-6 text-zinc-600 dark:text-zinc-300">Shared, scoped to your organization</td><td className="py-3 pr-6 text-zinc-600 dark:text-zinc-300">Aspect’s</td><td className="py-3 pr-6 text-zinc-600 dark:text-zinc-300">Aspect</td></tr>
          <tr className="border-b border-zinc-200 dark:border-zinc-700/60"><td className="py-3 pr-6 font-semibold text-zinc-900 dark:text-white">Aspect Enterprise, hosted by Aspect</td><td className="py-3 pr-6 text-zinc-600 dark:text-zinc-300">Isolated, yours alone</td><td className="py-3 pr-6 text-zinc-600 dark:text-zinc-300">Aspect’s</td><td className="py-3 pr-6 text-zinc-600 dark:text-zinc-300">Aspect</td></tr>
          <tr className="border-b border-zinc-200 dark:border-zinc-700/60"><td className="py-3 pr-6 font-semibold text-zinc-900 dark:text-white">Aspect Enterprise, self-hosted</td><td className="py-3 pr-6 text-zinc-600 dark:text-zinc-300">Isolated, in your account</td><td className="py-3 pr-6 text-zinc-600 dark:text-zinc-300">Yours</td><td className="py-3 pr-6 text-zinc-600 dark:text-zinc-300">Aspect, or your team</td></tr>
        </tbody>
      </table>
    </div>

    <div className="max-w-3xl mt-6">
      <p className="text-zinc-600 dark:text-zinc-300 leading-relaxed">
        The last two are the same product, Aspect Enterprise. What differs is whose account it runs in and who holds operational control. <strong className="text-zinc-900 dark:text-white">Holding that control yourself is usually the point.</strong> Plenty of teams in finance, healthcare and government are not allowed to give a third party production access. For them we work over the shoulder: we guide and diagnose, their hands stay on the controls. It is what makes air-gapped and GovCloud deployments possible at all.
      </p>
    </div>
  </div>
</div>

<div className="w-full flex justify-center px-4 pt-12 pb-4">
  <div className="w-full" style={{ maxWidth: "1140px" }}>
    <FeatureGrid2>
      <a href="/bazelcon-2026/build-observability" className="flex flex-col p-5 rounded-xl border border-zinc-200 dark:border-zinc-700/60 hover:border-blue-300 dark:hover:border-blue-700 transition">
        <span className="text-xs font-semibold tracking-widest text-zinc-400 uppercase">← Previous</span>
        <span className="mt-1 font-semibold text-zinc-900 dark:text-white">Build observability</span>
      </a>
    </FeatureGrid2>

    <div className="mt-6 text-center">
      <a href="/bazelcon-2026" className="inline-flex items-center text-blue-600 dark:text-blue-400 font-semibold hover:underline">
        All BazelCon materials →
      </a>
    </div>
  </div>
</div>

<CTA title="See it on your own builds" subtitle="Point a repository at a hosted instance and let a week of real builds accumulate." primaryCta="Start a trial" primaryHref="/trial" secondaryCta="Talk with us" secondaryHref="/contact" />
