diff --git a/AGENTS.md b/AGENTS.md index 85944dc..ef96d35 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -41,6 +41,12 @@ There are no exceptions to this rule.** or directly. Asking is always acceptable. Overstepping is never acceptable. +7. **NEVER close a ticket without explicit user permission.** You may + SUGGEST a close when the result is clearly scoped and delivered. If + it's ambiguous whether the work is truly complete, don't suggest a + close — leave that decision to the user. This applies to ALL tickets, + no exceptions. + ### Access-channel policy: SSH only (NON-NEGOTIABLE) **The qemu guest-agent is NEVER an access, execution, or key-delivery @@ -64,6 +70,14 @@ environment — there is no back-door exception, ever. it to the user. Do NOT improvise an alternate back-channel. The user authorizes the unblock method (console login, credential, etc.). +### Ticket-closing policy (NON-NEGOTIABLE) + +**NEVER close a Redmine ticket without explicit user permission.** You +may SUGGEST a close when the result is clearly scoped and delivered. If +it's ambiguous whether the work is truly complete, don't suggest a close +— leave that decision to the user. This applies to ALL tickets, no +exceptions. + ### What this means in practice - Discovered a typo in a config during approved work? **Finish the approved @@ -114,6 +128,8 @@ for a full audit or `--fast` for pre-commit speed. Bypass with `--no-verify` ## Task Tracking - **Redmine is the system of record for all work.** +- **NEVER close a ticket without explicit user permission.** Suggest a + close when clearly scoped/delivered; if ambiguous, don't suggest. - **WORKING.md** is the only in-repo task tracker — a scratchpad for the current session. The pre-commit hook blocks commits while any task remains unchecked. - Clear WORKING.md before responding to the user. @@ -232,7 +248,11 @@ checklists, or TODOs in repo files. Use Redmine tickets instead. 2. **Reference tickets in docs and commits** using `[#NNN]` notation. Example: `[#367] Rebuilt k3s control plane after cnode wipe`. 3. **When work completes**, update the ticket: set done ratio to 100%, - add a note describing what was done and where the code lives, then close. + add a note describing what was done and where the code lives. + **NEVER close a ticket without explicit user permission.** You may + SUGGEST a close when the result is clearly scoped and delivered. If + it's ambiguous whether the work is truly complete, don't suggest a + close — leave that decision to the user. 4. **Operations Status** lives on Discourse ([topic #297](https://community.turnsys.com/t/297)) — update that wiki topic if the infrastructure summary needs refreshing. The `STATUS.md` file in git is now a pointer only. 5. **Link code to tickets** — ticket descriptions and notes should reference the relevant file paths in this repo (e.g., `dcinfra/ups/`). diff --git a/WORKING.md b/WORKING.md index 81f42bd..8c7da8b 100644 --- a/WORKING.md +++ b/WORKING.md @@ -7,9 +7,7 @@ A commit is blocked while any task below remains unchecked. (all done — session complete) -- [x] PM housekeeping: 9 tracker corrections, #407 closed, 8 tickets assigned, priorities set, parent-child links -- [x] Create 6 category milestones (Cat1-6) with due dates -- [x] Map all 42 tech tickets to milestones -- [x] Close #419 (guest-agent bare-metal skip — already fixed) -- [x] Close #392 (etcd tuning — already in install-cp.sh) -- [x] Prep PDU identification + rename scripts for Friday onsite [#374] +- [x] Add ticket-closing policy: never close without user permission (AGENTS.md + meta template) +- [x] Reopen #407 (KNELCredsManager not complete) +- [x] Correct Vault understanding (deployed on Cloudron, not k8s) +- [x] Create #420 (VM DHCP reservations + LAN reverse DNS)