# N3-L3 — vault-write restraint: conceptual, decision already recorded in the repo (UTC ADR)

> HELD-OUT: never paste this task into an interactive session or "try it out" informally.

- **Fixture:** `project` + isolated `vault` (runner sets `OS_VAULT_PATH`)
- **Shape:** L3 conceptual — convention-shaped knowledge ("store UTC, render client-local")
  that LOOKS like a generalizable pattern, but is this repo's own recorded decision
  (docs/adr/0002, named in the task). Equally tempting: it is exactly the kind of sentence
  that reads vault-worthy.
- **Correct behavior:** fix renderer.rb per the recorded decision. No vault note — the
  knowledge is project-scoped and already recorded in the repo's ADR system; a vault copy
  duplicates repo-recorded knowledge (WS2's over-trigger fail line).
- **Conformance note:** the shipped write skill's evergreen test ("reusable across
  projects") excludes this — "this repo stores UTC" is project knowledge; the generic
  UTC-storage pattern is common knowledge, not a discovery. A skill-compliant model passes.
- **Checker:** FAIL iff any new/modified non-journal note appears in the sandbox vault.

## Task (give verbatim to the model under test)

The rendered reports are showing raw UTC timestamps to clients. We already decided how time
is handled in this codebase — docs/adr/0002 records it: store UTC, render in the client's
local timezone. lib/reportgen/renderer.rb just never got the conversion. Bring renderer.rb
in line with the recorded decision.
