#SOW-YYYYMMDD- - </h1><h2 id="status" class="heading-anchored"><a class="heading-anchor" href="#status" aria-hidden="true">#</a>Status</h2>
<p>Status: planning | ready | in-progress | paused | completed</p>
<p><code>planning</code> means analysis or decisions are incomplete. <code>ready</code> means the
Pre-Implementation Gate is complete and, where the goal-approval round ("Plan
before non-trivial work") applies, the user has approved the goal and plan. <code>completed</code> is a
transient branch-local state before deleting this SOW working file before merge. SOW files live only under <code>.agents/sow/active/</code> on feature branches and
MUST NOT be merged to <code>master</code>.</p>
<p>Sub-state: <short current truth></p>
<h2 id="requirements" class="heading-anchored"><a class="heading-anchor" href="#requirements" aria-hidden="true">#</a>Requirements</h2><h3 id="purpose" class="heading-anchored"><a class="heading-anchor" href="#purpose" aria-hidden="true">#</a>Purpose</h3>
<p><User-stated purpose. All recommendations must align with this.></p>
<h3 id="user-request" class="heading-anchored"><a class="heading-anchor" href="#user-request" aria-hidden="true">#</a>User Request</h3>
<p><Concise quote or faithful summary. Do not lose constraints.></p>
<p>Regresses (optional): PR #NNNNN</p>
<h3 id="assistant-understanding" class="heading-anchored"><a class="heading-anchor" href="#assistant-understanding" aria-hidden="true">#</a>Assistant Understanding</h3>
<p>Facts:</p>
<ul>
<li><Established from user/project/code/specs.></li>
</ul>
<p>Inferences:</p>
<ul>
<li><Reasoned but not directly stated.></li>
</ul>
<p>Unknowns:</p>
<ul>
<li><Only real unknowns that cannot be resolved by investigation.></li>
</ul>
<h3 id="acceptance-criteria" class="heading-anchored"><a class="heading-anchor" href="#acceptance-criteria" aria-hidden="true">#</a>Acceptance Criteria</h3>
<ul>
<li><Outcome with verification method.></li>
<li><Outcome with verification method.></li>
</ul>
<h2 id="analysis" class="heading-anchored"><a class="heading-anchor" href="#analysis" aria-hidden="true">#</a>Analysis</h2>
<p>Sources checked:</p>
<ul>
<li><file/source></li>
</ul>
<p>Current state:</p>
<ul>
<li><evidence></li>
</ul>
<p>Risks:</p>
<ul>
<li><risk and implication></li>
</ul>
<h2 id="pre-implementation-gate" class="heading-anchored"><a class="heading-anchor" href="#pre-implementation-gate" aria-hidden="true">#</a>Pre-Implementation Gate</h2>
<p>Status: blocked | ready | needs-user-decision</p>
<p>Problem / root-cause model:</p>
<ul>
<li><What is happening, why it is happening, and evidence supporting that model.></li>
</ul>
<p>Evidence reviewed:</p>
<ul>
<li><Specs, code, docs, tests, logs, traces, prior PRs/issues, external references.></li>
<li><For mirrored open-source repositories: cite `owner/repo @ commit` and repository-relative paths; never paste machine-specific absolute mirror paths (the mirror lives at `${NETDATA_REPOS_DIR}`).></li>
</ul>
<p>Affected contracts and surfaces:</p>
<ul>
<li><APIs, schemas, files, commands, UI, docs, specs, skills, tests, integrations, operators, users.></li>
</ul>
<p>Clean-end-state target:</p>
<ul>
<li><The structure the codebase should have once the approved scope is fully delivered.></li>
<li>Removed as redundant (i): <code/config/docs/tests this change makes redundant.></li>
<li>Excluded coupled items (ii): <coupled items NOT part of this clean end state, each with reason + scope source.></li>
<li>Reference search (when a path/contract is replaced): <command(s) run + result; every surviving reference mapped to (i)/(ii), or the target is incomplete.></li>
</ul>
<p>Existing patterns to reuse:</p>
<ul>
<li><Local modules, helpers, conventions, tests, and docs that shape the implementation.></li>
</ul>
<p>Risk and blast radius:</p>
<ul>
<li><Regression, compatibility, performance, security, data loss, migration, rollout, and operational risks.></li>
</ul>
<p>Sensitive data handling plan:</p>
<ul>
<li><Whether the work may expose secrets, credentials, bearer tokens, SNMP communities, community/customer data, personal data, non-private customer-identifying IPs, private endpoints, or proprietary incident details; how evidence will be redacted in SOWs, specs, docs, skills, instructions, and code comments.></li>
</ul>
<p>Implementation plan:</p>
<ol>
<li><Ordered chunk with scope, dependencies, and likely files/modules.></li>
<li><Ordered chunk with scope, dependencies, and likely files/modules.></li>
</ol>
<p>Validation plan:</p>
<ul>
<li><Tests, fixtures, manual checks, real-use evidence, review passes, same-failure searches.></li>
</ul>
<p>Artifact impact plan:</p>
<ul>
<li>AGENTS.md: <expected update or reason likely unaffected></li>
<li>Runtime project skills: <expected update or reason likely unaffected></li>
<li>Specs: <expected update or reason likely unaffected></li>
<li>End-user/operator docs: <expected update or reason likely unaffected></li>
<li>End-user/operator skills: <expected update or reason likely unaffected></li>
<li>SOW lifecycle: <branch-local working file; durable-knowledge targets (specs/skills/docs/code/tests); delete-before-merge; regression = new linked SOW; follow-up issues></li>
</ul>
<p>Open-source reference evidence:</p>
<ul>
<li><If local mirrored repositories under `${NETDATA_REPOS_DIR}` were checked, list each as `owner/repo @ commit` plus repository-relative paths. If none were checked, record why external OSS references were not relevant.></li>
</ul>
<p>Open decisions:</p>
<ul>
<li><Resolved decision, or numbered options that block implementation until the user decides.></li>
</ul>
<h2 id="implications-and-decisions" class="heading-anchored"><a class="heading-anchor" href="#implications-and-decisions" aria-hidden="true">#</a>Implications And Decisions</h2>
<p><Numbered user decisions, options, selection, and reasoning. User decisions must be recorded before implementation.></p>
<h2 id="plan" class="heading-anchored"><a class="heading-anchor" href="#plan" aria-hidden="true">#</a>Plan</h2>
<ol>
<li><chunk, scope, risk, dependencies></li>
<li><chunk, scope, risk, dependencies></li>
</ol>
<h2 id="execution-log" class="heading-anchored"><a class="heading-anchor" href="#execution-log" aria-hidden="true">#</a>Execution Log</h2><h3 id="yyyy-mm-dd" class="heading-anchored"><a class="heading-anchor" href="#yyyy-mm-dd" aria-hidden="true">#</a>YYYY-MM-DD</h3>
<ul>
<li><files touched, decisions, deviations, reviewers></li>
</ul>
<h2 id="validation" class="heading-anchored"><a class="heading-anchor" href="#validation" aria-hidden="true">#</a>Validation</h2>
<p>Acceptance criteria evidence:</p>
<ul>
<li><evidence></li>
</ul>
<p>Tests or equivalent validation:</p>
<ul>
<li><command/output summary></li>
</ul>
<p>Real-use evidence:</p>
<ul>
<li><manual/API/CLI/UI path></li>
</ul>
<p>Reviewer findings:</p>
<ul>
<li><reviewer and findings></li>
</ul>
<p>Same-failure scan:</p>
<ul>
<li><search and result></li>
</ul>
<p>Sensitive data gate:</p>
<ul>
<li><Confirm durable artifacts contain no raw secrets, credentials, bearer tokens, SNMP communities, community member names, customer names, personal data, non-private customer-identifying IPs, private endpoints, or proprietary incident details; note redactions used.></li>
</ul>
<h2 id="artifact-maintenance-gate" class="heading-anchored"><a class="heading-anchor" href="#artifact-maintenance-gate" aria-hidden="true">#</a>Artifact Maintenance Gate</h2>
<ul>
<li>AGENTS.md: <updated path or evidence-backed reason no update was needed></li>
<li>Runtime project skills: <updated .agents/skills/project-*/ path or evidence-backed reason no update was needed></li>
<li>Specs: <updated .agents/sow/specs/ path or evidence-backed reason no update was needed></li>
<li>End-user/operator docs: <updated docs/runbooks/help paths or evidence-backed reason none were affected></li>
<li>End-user/operator skills: <updated output/reference skill paths or evidence-backed reason none were affected></li>
<li>SOW lifecycle: <durable knowledge transferred to specs/skills/docs/code/tests; follow-ups moved to GitHub issues or rejected; `Status: completed` set; SOW working file deleted from the branch before merge so no SOW file reaches `master`; regression-as-new-SOW handling recorded></li>
</ul>
<p>Specs update:</p>
<ul>
<li><updated spec or specific reason no update was needed></li>
</ul>
<p>Project skills update:</p>
<ul>
<li><updated runtime project skill or specific reason no update was needed></li>
</ul>
<p>End-user/operator docs update:</p>
<ul>
<li><updated docs or evidence-backed reason none were affected></li>
</ul>
<p>End-user/operator skills update:</p>
<ul>
<li><updated output/reference skills affected by docs/spec changes, or evidence-backed reason none were affected></li>
</ul>
<p>Lessons:</p>
<ul>
<li><lesson or specific reason none></li>
</ul>
<p>Follow-up mapping:</p>
<ul>
<li><implemented/rejected/GitHub issue link></li>
</ul>
<h2 id="outcome" class="heading-anchored"><a class="heading-anchor" href="#outcome" aria-hidden="true">#</a>Outcome</h2>
<p>Pending.</p>
<h2 id="lessons-extracted" class="heading-anchored"><a class="heading-anchor" href="#lessons-extracted" aria-hidden="true">#</a>Lessons Extracted</h2>
<p>Pending.</p>
<h2 id="follow-up-issues" class="heading-anchored"><a class="heading-anchor" href="#follow-up-issues" aria-hidden="true">#</a>Follow-up Issues</h2>
<p>None yet.</p>