From deb16f73022486ba4da740eca122ee22e2062ba4 Mon Sep 17 00:00:00 2001 From: alexn41 Date: Sat, 10 Oct 2026 01:17:04 +0000 Subject: [PATCH] Upload files to "/" --- ColorButtonUML.png | Bin 0 -> 25920 bytes abstract.tex | 5 + cornell.cls | 367 +++++++++++++++++++++++++++++++++++++++++ devopsAIAgentGuide.tex | 107 ++++++++++++ devopsAIPromptLog.tex | 14 ++ 5 files changed, 493 insertions(+) create mode 100644 ColorButtonUML.png create mode 100644 abstract.tex create mode 100644 cornell.cls create mode 100644 devopsAIAgentGuide.tex create mode 100644 devopsAIPromptLog.tex diff --git a/ColorButtonUML.png b/ColorButtonUML.png new file mode 100644 index 0000000000000000000000000000000000000000..5379d6548e7f5a4512e88965f0a45f7fc4676263 GIT binary patch literal 25920 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 F^6vy98ioJ> literal 0 HcmV?d00001 diff --git a/abstract.tex b/abstract.tex new file mode 100644 index 0000000..06de013 --- /dev/null +++ b/abstract.tex @@ -0,0 +1,5 @@ +This assignment guides students through a reproducible DevOps activity. It +defines the learning objectives, environment boundary, workflow, evidence, +reflection, and submission criteria. Replace bracketed text with assignment- +specific facts before release. Students should be able to recreate the work +from the submitted automation and runbook rather than from undocumented manual steps. diff --git a/cornell.cls b/cornell.cls new file mode 100644 index 0000000..79b37eb --- /dev/null +++ b/cornell.cls @@ -0,0 +1,367 @@ +%% +%% This is file `cornell.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% cornell.dtx (with options: `class') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from cornell.cls. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file cornell.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% Document class `cornell' to use with LaTeX 2e. +%% Based on `crnlphd' class. The following is from the file `crnlphd.dtx': +%% Based loosely on old cuphdthesis style file. +%% Found to give good results, according to the thesis secretary. +%% File: crnlphd.dtx Copyright (C) 1994 Sergio Gelato +%% Made available without any warranty, express or implied. +%% Modifications +%% 03/26/98 Mike Heisler +%% Conform to Eric's final version. Margins are subject to +%% The whim of the printer. +%% 10/10/97 Mike Heisler and Eric Dahl +%% Altered footnotesize and changed the Acknowledgement and +%% Biographical titles per thesis secretary guideline that +%% they must match the rest of the document, i.e. flush left +%% and capitalized rather than all caps +%% 05/21/97 Mike Heisler +%% Added a 'papers' option to handle bibliographis as sections +%% at the end of each chapter. Reduced top margin. +%% +%% $Id$ +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{cornell} +[1998/03/26 v2.0 + Cornell University thesis class] +\newif\ifphd +\DeclareOption{phd}{\phdtrue} +\DeclareOption{master}{\phdfalse} +\ExecuteOptions{phd} +\newif\ifpapers +\DeclareOption{papers}{\paperstrue} +\DeclareOption{10pt}{% + \OptionNotUsed% + \ClassWarningNoLine{cornell}{Font size 10pt not allowed; using 12pt}% +} +\DeclareOption{11pt}{% + \OptionNotUsed% + \ClassWarningNoLine{cornell}{Font size 11pt not allowed; using 12pt}% +} +\newcommand{\prelim@contents}[1]{} +\DeclareOption{tocprelim}{% + \renewcommand{\prelim@contents}[1]{\addcontentsline{toc}{section}{#1}} +} +\DeclareOption*{% + \PassOptionsToClass{\CurrentOption}{report}% +} +\ProcessOptions + +\LoadClass[12pt]{report}[1994/06/01] +\renewcommand{\defaultscriptratio}{.75} +\renewcommand{\defaultscriptscriptratio}{.6} +\setlength\headsep{25\p@} +\if@twocolumn +\else + \setlength\oddsidemargin{0in} + \setlength\evensidemargin{0in} + \setlength\textwidth{6.5in} + \setlength\topmargin{-0.5in} + \setlength\headheight{0.2in} + \setlength\headsep{0.35in} + \setlength\textheight{8.85in} + \setlength\footskip{0.5in} + \setlength\marginparwidth{0.85in} + \setlength\marginparsep{0.125in} +\fi +\if@compatibility + \setlength\topmargin{0\p@} +\else +\fi +\newcommand{\ps@cornell}{% +\def\@oddhead{{\slshape\rightmark}\hfil\thepage}% +\def\@oddfoot{}% +\def\@evenhead{\thepage\hfil{\slshape\leftmark}}% +\def\@evenfoot{}% +\def\chaptermark##1{}% +\def\sectionmark##1{}% +} +\newcommand{\ps@cornellc}{% +\def\@oddhead{\hfil\thepage\hfil}% +\def\@oddfoot{}% +\def\@evenhead{\@oddhead}% +\def\@evenfoot{}% +\def\chaptermark##1{}% +\def\sectionmark##1{}% +} +\raggedbottom +\newcommand{\@prolformat}[1]{{\begin{flushleft} \Huge #1 \end{flushleft}} } +\newcommand{\ackname}{\@prolformat{Acknowledgements}} +\newcommand{\bioname}{\@prolformat{Biographical Sketch}} +\renewcommand{\contentsname}{\@prolformat{Table of Contents}} +\renewcommand{\listtablename}{\@prolformat{List of Tables}} +\renewcommand{\listfigurename}{\@prolformat{List of Figures}} +\renewcommand{\l@figure}{\@dottedtocline{1}{1.5em}{2.6em}} +\let\l@table\l@figure + +\renewenvironment{thebibliography}[1] + {\ifpapers \clearpage \section*{\bibname% + \@mkboth{\uppercase{\bibname}}{\uppercase{\bibname}}}% + \else% + \chapter*{\bibname% + \@mkboth{\uppercase{\bibname}}{\uppercase{\bibname}}}% + \fi% + \list{\@biblabel{\arabic{enumiv}}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\arabic{enumiv}}}% + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.\@m\relax + \ifpapers% + \addcontentsline{toc}{section}{\bibname}% + \else% + \addcontentsline{toc}{chapter}{\bibname}% + \fi + \singlespacing} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \normalspacing + \endlist} + +\newcommand{\@titlesize}{\Large} +\newcommand{\@subtitlesize}{\large} +\newcommand{\@authorsize}{\normalsize} % No Pharaoh he. +\newcommand{\@conferralmonth}{January} +\newcommand{\@conferralyear}{} + +\newcommand{\titlesize}[1]{\renewcommand{\@titlesize}{#1}} +\newcommand{\subtitlesize}[1]{\renewcommand{\@subtitlesize}{#1}} +\newcommand{\authorsize}[1]{\renewcommand{\@authorsize}{#1}} +\newcommand{\conferraldate}[2]{% + \renewcommand{\@conferralmonth}{#1} + \renewcommand{\@conferralyear}{#2} +} +\newcommand{\@degreefield}{Master of Science} %CHANGED +\newcommand{\degreefield}[1]{\renewcommand{\@degreefield}{#1}} %CHANGED + +\renewcommand{\maketitle}{% + \begin{titlepage}% + \vspace*{-0.24in} + \begin{center}% + \@titlesize \@title + \end{center} + \vfill + %\begin{center} + %\@subtitlesize + %A \ifphd Dissertation \else Thesis \fi \\ %CHANGED + %Presented to the Faculty of the Graduate School \\ + %of Cornell University \\ + %in Partial Fulfillment of the Requirements for the Degree of \\ + %\ifphd Doctor of Philosophy \else \@degreefield \fi %CHANGED + %\end{center} + \vfill + \begin{center} + \@authorsize + by \\ + \@author \\ + \@conferralmonth\ \@conferralyear + \end{center} + \vspace*{0.26in} + \end{titlepage} +} + +\renewenvironment{titlepage}{% + \typeout{Title page} + \pagestyle{empty} + \doublespacing +}{% + \normalspacing\clearpage +} + + +\newenvironment{copyrightpage}{% + \typeout{Copyleft page} + \pagestyle{empty} + \null\vfil + \begin{center} +}{% + \end{center} + \vfil\null + \clearpage +} + +\newcommand{\makecopyright}{% + \begin{copyrightpage} + \copyright\ \@copyrightholder\ \@copyrightyear \\ + ALL RIGHTS RESERVED \\[.5in] + \end{copyrightpage} +} +\newcommand{\@copyrightholder}{\@author} +\newcommand{\@copyrightyear}{\@conferralyear} + +\newcommand{\copyrightholder}[1]{\renewcommand{\@copyrightholder}{#1}} +\newcommand{\copyrightyear}[1]{\renewcommand{\@copyrightyear}{#1}} + + +\newlength{\@abhdskip} +\renewenvironment{abstract}{% + \typeout{Abstract} + \singlespacing + \ifphd %CHANGED + \setlength{\@abhdskip}{.25in} + \addtolength{\@abhdskip}{-\topmargin} + \vspace*{\@abhdskip} + \begin{center} + \@abstracttitle \\ + \ \\ + \@author \\ + \@conferralyear + \end{center} + \vspace{.25in} + \else %CHANGED + \chapter*{% + \begin{center} + \normalsize + ABSTRACT + \end{center} + } + \par + \fi %CHANGED + \pagestyle{empty} + \thispagestyle{empty} +}{% + \clearpage +} + +\newcommand{\@abstracttitle}{\@title} +\newcommand{\abstracttitle}[1]{\renewcommand{\@abstracttitle}{#1}} + + +\newenvironment{biosketch}{% + \typeout{Vita} + \pagestyle{plain} + \pagenumbering{roman} + \setcounter{page}{3} + \prelim@contents{Biographical Sketch} + \chapter*{% +\bioname + } + \par +}{% + \clearpage +} + +\newenvironment{dedication}{% + \prelim@contents{Dedication} + \null\vfil + \begin{center} +}{ + \end{center} + \vfil\null + \clearpage +} + +\newenvironment{acknowledgements}{% + \prelim@contents{Acknowledgments} + \chapter*{% +\ackname + } + \par +}{% + \cleardoublepage +} + +\newcommand{\contentspage}{% + \singlespacing + \label{toc} + \prelim@contents{\contentsname} + \tableofcontents + \normalspacing + \clearpage +} + +\newcommand{\tablelistpage}{% + \singlespacing + \label{lot} + \prelim@contents{\listtablename} + \listoftables + \normalspacing + \clearpage +} + +\newcommand{\figurelistpage}{% + \singlespacing + \label{lof} + \prelim@contents{\listfigurename} + \listoffigures + \normalspacing + \clearpage +} +\newcommand{\abbrlist}{% + \singlespacing + \prelim@contents{List of Abbreviations} + \chapter*{List of Abbreviations} +} + +\newcommand{\symlist}{% + \singlespacing + \prelim@contents{List of Symbols} + \chapter*{List of Symbols} +} + +\newcommand{\preface}{% + \singlespacing + \prelim@contents{Preface} + \chapter*{Preface} +} + +\newcommand{\singlespacing}{% + \let\CS=\@currsize\renewcommand{\baselinestretch}{1.0}\tiny\CS} +\newcommand{\singlespacingplus}{% + \let\CS=\@currsize\renewcommand{\baselinestretch}{1.25}\tiny\CS} +\newcommand{\doublespacing}{% + \let\CS=\@currsize\renewcommand{\baselinestretch}{1.75}\tiny\CS} +\newcommand{\realdoublespacing}{% + \let\CS=\@currsize\renewcommand{\baselinestretch}{2}\tiny\CS} +\newcommand{\normalspacing}{\doublespacing} +\newcommand{\footnotespacing}{\singlespacing} +\newcommand{\changespacing}[2]{% + \renewcommand{#1}{% + \let\CS=\@currsize\renewcommand{\baselinestretch}{#2}\tiny\CS}% +} +\newcommand{\changenormalspacing}[1]{\renewcommand{\normalspacing}{#1}} +\normalspacing + +\endinput +%% +%% End of file `cornell.cls'. diff --git a/devopsAIAgentGuide.tex b/devopsAIAgentGuide.tex new file mode 100644 index 0000000..608fffe --- /dev/null +++ b/devopsAIAgentGuide.tex @@ -0,0 +1,107 @@ +\chapter{AI Agent Usage Guide} +\ChapterLabel{AIAgentGuide} +\index{AI agent} +\index{AI agent!DevOps workflow} +\index{Appendix!AI Agent Usage Guide} + +\section{How to Use This Appendix} +An AI agent that creates, reviews, or maintains an assignment shall read this +file first. It shall identify the task in the routing table, read the minimum +authoritative sources, and expand context only for a discovered dependency or +inconsistency. This guide is maintained in LaTeX so it is visible, versioned, +and reviewable with the assignment. + +\section{Governing Principles} +The authored LaTeX files, versioned automation, and approved assignment +materials are authoritative. The PDF is a review artifact and shall not be +edited directly. AI may draft, explain, analyze, check consistency, and assist +with builds. It shall not invent completion, evidence, access, costs, grades, +approvals, command output, security posture, or operational results. + +\section{Chapter File Convention} +\index{AI agent!chapter file convention} +Every assignment chapter shall be stored in exactly one file named with the +\texttt{devops} prefix, a PascalCase chapter name, and the \texttt{.tex} +suffix. For example, Chapter~2 is fully contained in +\path{devopsExampleAssignment.tex}. A chapter file shall begin with its +\texttt{\string\chapter\{...\}} command and contain all of that chapter's +sections and subsections. Do not split one chapter across files, create +section-only \texttt{.tex} files, or use \texttt{\string\input} or +\texttt{\string\include} to assemble a chapter from smaller fragments. + +Supporting non-chapter files may use a different name only when they are not +chapter content: \texttt{prologue.tex}, \texttt{abstract.tex}, +\texttt{devopsGlossary.tex}, and \texttt{devopsReferences.bib} are examples. +Appendix chapters follow the same chapter-file convention. + +\section{AI Quick Start} +\begin{enumerate} +\item Read this guide and identify the requested outcome. +\item Select the closest task below and load only its listed sources. +\item Inspect supplied facts and report consequential gaps or assumptions. +\item Make narrowly scoped changes; preserve stable IDs, glossary terms, and history. +\item Never request, print, store, or commit credentials, tokens, personal data, or production data. +\item Build the complete PDF, inspect the log, visually inspect affected pages, and record material AI use in \ChapterRef{AIPromptLog}. +\end{enumerate} + +\section{Task Routing} +\small +\begin{tabularx}{\linewidth}{L{4.0cm}Y} +\caption{AI Task-Routing Table\label{Table:AITaskRouting}}\\ +\toprule \textbf{Task} & \textbf{Minimum authoritative sources}\\ \midrule +Initialize an assignment & \texttt{devopsAssignment.tex}, \texttt{prologue.tex}, \texttt{devopsIntroduction.tex}, \texttt{devopsExampleAssignment.tex}, and the instructor's assignment facts.\\ +Develop a workflow & \texttt{devopsExampleAssignment.tex}, source repository materials, and authorized environment constraints.\\ +Define evidence & \texttt{devopsExampleAssignment.tex} and controlled execution outputs.\\ +Review a retrospective & \texttt{devopsExampleAssignment.tex} and the submitted workflow or runbook.\\ +Edit AI guidance & \texttt{devopsAIAgentGuide.tex}, \texttt{devopsAIPromptLog.tex}, \texttt{devopsDocumentGuide.tex}, and \texttt{devopsAssignment.tex}.\\ +Compile or troubleshoot & \texttt{devopsAssignment.tex}, \texttt{devopsDocumentGuide.tex}, the affected chapter, and the build log.\\ \bottomrule +\end{tabularx} +\normalsize + +\section{DevOps-Specific Rules} +\begin{enumerate} +\item Prefer versioned, repeatable automation over undocumented manual steps. +\item Treat deployment output, monitoring data, and screenshots as evidence only when they reflect an actual execution. +\item Design failure exercises to be isolated, reversible, and authorized. +\item Apply least privilege and never place secrets in LaTeX, source control, prompts, screenshots, or logs. +\item State expected cloud cost, cleanup action, and resource ownership for each remote-environment activity. +\item Identify whether a recommendation is a proposal, an instructor directive, or demonstrated evidence. +\end{enumerate} + +\section{Example AI Requests} +\subsection{Create an Assignment Brief} +\begin{verbatim} +Read devopsAIAgentGuide.tex and use the Initialize an Assignment context. +From the supplied SSW 590 objective and constraints, fill only supported +placeholders in the introduction and activity brief. Propose clear, observable +completion criteria, a safe cleanup action, and a rubric. Do not invent cloud +access, due dates, policy, costs, or approved tools. Update history, compile, +and report instructor decisions still needed. +\end{verbatim} + +\subsection{Review a Student Workflow} +\begin{verbatim} +Read devopsAIAgentGuide.tex and the workflow, evidence, and retrospective +chapters. Review the supplied repository and sanitized evidence for +reproducibility, least privilege, observability, rollback, and cleanup. +Separate verified facts from gaps and recommendations. Do not claim that an +unexecuted command passed, and do not request credentials or operate resources. +\end{verbatim} + +\section{Human Decisions and Information Boundaries} +The instructor retains authority over assignment scope, grading, due dates, +approved tooling, access, budgets, security posture, exceptions, and policy. +An AI agent shall surface alternatives and evidence, not represent a decision +as approved. Record material prompts, assumptions, corrections, and unresolved +issues in \ChapterRef{AIPromptLog}. + +\section{Completion Checklist} +\begin{itemize} +\item Scope, deliverables, environment, constraints, and cleanup are clear. +\item Activity identifiers and evidence references are valid and unique. +\item Examples contain no secrets, personal data, or unsafe production actions. +\item New controlled terms are added to the glossary and indexed. +\item The newest approved change is recorded in document history. +\item The complete build succeeds with no unresolved references or missing files. +\item A human reviews all decisions requiring instructional or operational authority. +\end{itemize} diff --git a/devopsAIPromptLog.tex b/devopsAIPromptLog.tex new file mode 100644 index 0000000..e1356de --- /dev/null +++ b/devopsAIPromptLog.tex @@ -0,0 +1,14 @@ +\chapter{AI Prompt Log} +\ChapterLabel{AIPromptLog} +\index{AI prompt log} +\section{How to Use This Appendix} +Use this log when AI assistance materially affects assignment wording, +automation, evidence interpretation, troubleshooting, or feedback. Record +enough context for an instructor or reviewer to understand the input, output, +assumptions, and human corrections. Do not record credentials or personal data. + +\section{Example Record} +Date: \textit{[timestamp]}; Tool and model: \textit{[name]}; Task: +\textit{[requested outcome]}; Inputs: \textit{[sanitized constraints and +evidence]}; Output used: \textit{[summary]}; Human review and corrections: +\textit{[summary]}; Unresolved assumptions: \textit{[list or none]}.