master
md 6.2 KB

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>