%% SCRAP: experiments/02-experiments/factorial-doe/index
%% SOURCE: docs/working/experiments/02-experiments/factorial-doe/index.md
%% STATUS: CURRENT
%% FITS: experiments/ch-factorial
%% EDITORIAL: lifted — prose rewritten to press voice

\section{Complete $2^6$ Factorial DoE — Documentation Map}
\label{sec:factorial-doe-index}

The $2^6$ factorial experiment is documented across four artefacts: a quick-start
reference, a full design guide, an analysis workflow, and the run script itself.

\subsection{Document Overview}

\begin{center}
\begin{tabular}{lp{8cm}}
\toprule
Artefact & Purpose \\
\midrule
Quick-start reference & Three command options (validation, standard, high-precision),
  time estimates, and basic troubleshooting. Read time: 5~minutes. \\
Design guide & Full design rationale, six-loop definitions, configuration
  naming, expected interaction patterns, and troubleshooting. Read time:
  20--30~minutes. \\
Analysis workflow & End-to-end pipeline: data collection, transfer, statistical
  analysis (main effects, interactions), optimal-configuration search, and
  reporting. Python code examples included. Read time: 15--20~minutes. \\
Run script & Executable script generating all 64 configurations, rebuilding
  for each, randomising 1{,}920+ runs, and writing metrics to CSV. \\
\bottomrule
\end{tabular}
\end{center}

\subsection{Key Concepts}

\paragraph{64 configurations.}
Each configuration is a unique binary string $L_1 L_2 L_3 L_4 L_5 L_6$ where
each digit is 0 (off) or 1 (on). The space spans from \texttt{000000} (all loops
off; pure FORTH-79 baseline) to \texttt{111111} (all loops enabled).

\paragraph{Randomised execution.}
All $64 \times 30 = 1{,}920$ scheduled runs are interleaved in a single randomised
matrix before collection begins. Grouping runs by configuration would introduce
thermal ramp and temporal ordering bias; randomisation eliminates both.

\paragraph{Separation of collection and analysis.}
Data collection and statistical analysis are strictly separated phases. No
configuration adjustments are made mid-collection; doing so would introduce
confirmation bias. The CSV is analysed only after all runs are complete.

\subsection{Execution Timeline}

\begin{center}
\begin{tabular}{lll}
\toprule
Phase & Activity & Duration \\
\midrule
Preparation & Choose option, launch script & 5--10~min \\
Collection  & 64 builds + 1{,}920 randomised runs & 30~min -- 12~hr \\
Transfer    & Copy CSV to analysis environment & 5~min \\
Analysis    & Main effects, interactions, optimal search & 1--2~hr \\
Reporting   & Summary, visualisations, recommendations & 1--2~hr \\
\bottomrule
\end{tabular}
\end{center}

\subsection{Design Philosophy}

The factorial design was chosen over three alternatives:

\begin{itemize}
  \item \textbf{Incremental tuning} (\texttt{000000} $\to$ \texttt{100000} $\to$
        \texttt{110000} $\to \cdots$) misses interaction effects between loops.
  \item \textbf{Dynamic toggle without rebuild} introduces state contamination
        across configurations.
  \item \textbf{Partial (fractional) factorial} aliases higher-order interaction
        terms, obscuring synergies and suppressions.
\end{itemize}

The complete $2^6$ factorial is the minimal design that separates all main
effects and all two-way interactions without aliasing.

%% TODO(bob): confirm canonical script path run_factorial_doe.sh in published repo

