decisions-and-adrs — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited decisions-and-adrs (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The decision log mechanism for the agile-team-v2 workflow. Two distinct stores — .decisions/ for tactical/strategic decisions with a review lifecycle, .adrs/ for strategic Architecture Decision Records — plus the Authored-By: commit trailer that audits write authority.
This skill is loaded only by the three agents that write to these stores: architect, green, sprint-planner. Other agents read DECISION/ADR files freely (they're public artifacts), but they don't need the format details, the R2 strict rules, or the statuing protocol.
.adrs/ — strategic, multi-feature, project-directionArchitecture Decision Records. Format unchanged from v1. Strategic only — multi-feature impact, invariant changes, contracts that other features will depend on. The architect writes ADRs.
# ADR <NNN> — <short title>
Date: <YYYY-MM-DD>
Scope: strategic
Author: architect
Decided: [autonomously | with human input]
Revisit: [true | false]
## Context
## Decision
## Consequences
## Related
- Features: <links>
- Prior ADRs: <links or None>
- Superseded ADRs: <links or None>Revisit: true indicates an autonomous decision under uncertainty — picked up at retro for human review.
Tactical decisions go to .decisions/, not .adrs/. Do not mix.
.decisions/ — tactical or strategic, with two-zone frontmatter and review lifecycleThe decision log distinct from strategic ADRs. The architect writes strategic DECISIONS directly. Green may write tactical DECISIONS during implementation under R2 strict rules (below). The architect statues every unstatued tactical DECISION at the start of the next sprint via a Wave 1 task placed by the sprint-planner.
.decisions/INDEX.md:
| ID | Scope | Status | Title | Date | Author |
|---------------|-----------|------------|----------------------------------|------------|-----------|
| DECISION-042 | strategic | ACTIVE | session storage backend | 2026-04-15 | architect |
| DECISION-051 | tactical | ACTIVE | session-id format choice | 2026-04-27 | green |.decisions/DECISION-NNN-<slug>.md — two-zone frontmatter:
---
# Zone author — writeable at creation only
id: DECISION-051
date: 2026-04-27
scope: tactical # tactical | strategic
status: ACTIVE # ACTIVE | SUPERSEDED
author: green # architect | green
affects: [internal/auth/session.go]
# Zone review — writeable by architect only, post-creation
review:
revisit: true # green sets true at creation; architect may flip false
reviewed_by: null # null at creation; "architect" after statuing
reviewed_at: null
outcome: null # null | confirmed | reformulated | superseded
---
# <Title>
## Question
## Decision
## Rationale
## Reformulated by architect
(empty initially; filled at statue time if reformulating)Every commit that creates or modifies anything under .decisions/ carries the Authored-By: trailer (R6).
Green may write a tactical DECISION when all four hold:
scope: tactical (never strategic — reserved for the architect).review.revisit: true at creation (never false initially).// see DECISION-NNN comment) or in the commit message body.Strategic DECISIONS are forbidden for green — they require the architect's authority. If green encounters what feels like a strategic decision in flight, the right move is a dispute (escalation type E in the dispute protocol) so the architect can decide and write the strategic DECISION.
The sprint-planner surfaces each unstatued tactical DECISION in RETRO.md decisions_to_statue: at retro processing. The next sprint's plan starts with a Wave 1 task block for the architect to statue every entry. CI rejects a sprint that closes with review.revisit: true and review.reviewed_by: null on a DECISION older than one sprint window (check.sh enforces).
For each unstatued tactical DECISION, the architect chooses exactly one outcome:
The decision is sound as written.
review.outcome: confirmedreview.reviewed_by: architectreview.reviewed_at: <YYYY-MM-DD>review.revisit: falseThe fundamental decision is right, but the phrasing was incomplete or misleading.
outcome: reformulated.## Decision and/or ## Rationale to phrase it correctly.id and date.## Reformulated by architect explaining what was wrong and how it was fixed — this section is the audit trail.The decision is wrong.
status: SUPERSEDEDreview.outcome: supersededreview.reviewed_by: architectreview.reviewed_at: <YYYY-MM-DD>DECISION-MMM-<slug>.md that explicitly supersedes this one (mention the superseded id in ## Rationale)..decisions/INDEX.md to reflect both: the original moves to SUPERSEDED, the new one is ACTIVE.If the decision's scope turned out larger than green originally judged (it affects multiple features or modifies an invariant assumed elsewhere), the architect may promote scope: tactical → scope: strategic during statuing. Note this in ## Reformulated by architect. Optionally migrate the entry into .adrs/ if it's genuinely a strategic ADR — in that case write a new ADR-NNN that consumes the DECISION's content, set the original DECISION's status: SUPERSEDED with outcome: superseded, and reference the new ADR.
Authored-By: trailer and three-level defenceThe Authored-By: commit trailer audits write authority on .decisions/ and on the mechanical: flag in FEATURE.md frontmatter.
Every commit that:
.decisions/.mechanical: field in any FEATURE.md frontmatter (architect-only field per R1).review.reviewed_by field in any DECISION.…must carry Authored-By: <agent-id> in the commit message body.
Values:
architect — for the architect's writes (strategic DECISIONS, statuing tactical DECISIONS, modifying mechanical:).green — for green's tactical DECISIONS only..decisions/ files. Blocks creation without revisit: true. Blocks zone-review modification without all four fields (revisit, reviewed_by, reviewed_at, outcome). Blocks zone-author modification post-creation.git blame on review.reviewed_by modifications must correspond to a commit with Authored-By: architect. Mismatch → CI block. Same for mechanical: ↔ Authored-By: architect..decisions/, verifies trailer ↔ zone modification consistency. Mismatch → blocking finding.This is declarative, not cryptographic. A buggy agent could write a false trailer. Mitigations: (a) agents follow their skill instructions, (b) git blame cross-checks the trailer against the commit identity, (c) the reviewer's pass DoD catches divergences before the sprint closes.
The cost of a forged trailer is high (blocking finding at pass DoD, sprint cannot close). The cost of honesty is zero (just write the right trailer). Incentive is correctly aligned.
Never bypass with --no-verify.
architect: DECISION-042 session storage backend choice
Feature: auth-login
Task: auth-login-decision-042
Authored-By: architectarchitect: confirm DECISION-051
Feature: auth-login
Task: auth-login-decision-review
Authored-By: architectarchitect: reformulate DECISION-051 — clarify session-id format
Feature: auth-login
Task: auth-login-decision-review
Authored-By: architectarchitect: supersede DECISION-051 with DECISION-067
Feature: auth-login
Task: auth-login-decision-review
Authored-By: architectgreen: implement Authenticate + DECISION-051 (session-id format)
Feature: auth-login
Task: auth-login-T001-green
Authored-By: greenarchitect: scaffold auth-login
Feature: auth-login
Task: auth-login-scaffold
Authored-By: architectThe mechanical: field is set as part of the scaffolding commit; the trailer audits the authority.
revisit: true is mandatory at first write.affects: list), supersede with a corrected DECISION..adrs/ is strategic only. Tactical goes to .decisions/.| What | Who writes | Trailer | Where |
|---|---|---|---|
| Strategic ADR | architect | Authored-By: architect (only on .decisions/ + mechanical: changes — ADRs alone don't require it) | .adrs/NNN-*.md |
| Strategic DECISION | architect | Authored-By: architect | .decisions/DECISION-NNN-*.md |
| Tactical DECISION (R2) | green | Authored-By: green | .decisions/DECISION-NNN-*.md |
| Statuing a tactical DECISION (confirm/reformulate/supersede) | architect | Authored-By: architect | edits zone review of .decisions/DECISION-NNN-*.md; new DECISION on supersede |
Modifying mechanical: flag in FEATURE.md | architect | Authored-By: architect | .features/<slug>/FEATURE.md frontmatter |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.