Decision Logger

v2.1.1

Two-layer memory architecture for board meeting decisions. Manages raw transcripts (Layer 1) and approved decisions (Layer 2). Use when logging decisions aft...

0· 392·5 current·6 all-time
byAlireza Rezvani@alirezarezvani
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
medium confidence
Purpose & Capability
Name/description and included files line up: a decision-logging memory architecture plus a Python CLI (scripts/decision_tracker.py) and a template. However, SKILL.md describes a logging workflow that includes writing raw transcripts and appending founder-approved entries to decisions.md, while the visible portion of scripts/decision_tracker.py is a parser/reporter (reads decisions.md and produces reports). This is a capability mismatch (documentation describes write steps; code appears read-only). Not necessarily malicious, but verify whether the script/other agent code performs any writes or automated appends before relying on the claimed workflow.
Instruction Scope
Runtime instructions operate on local project paths under memory/board-meetings/ (decisions.md, YYYY-MM-DD-raw.md, archive/). SKILL.md explicitly forbids auto-loading raw transcripts and defines DO_NOT_RESURFACE rules. There are no instructions to read unrelated system files, environment variables, or to transmit data to external endpoints.
Install Mechanism
No install spec is provided and the Python script claims to use only the standard library. That minimizes installation risk — nothing downloaded or extracted by the skill itself.
Credentials
The skill requires no environment variables, no credentials, and no config paths. All declared I/O is local files under memory/board-meetings/, which is proportionate to a decision-logging tool.
Persistence & Privilege
The skill is not marked always:true and uses the platform default for invocation. It does not request elevated/system-wide persistence. SKILL.md notes Layer 2 is loaded automatically by the board-meeting skill in Phase 1, which is a behavioral detail but not a privilege escalation in this package alone.
Assessment
This appears to be a local, file-based decision logger and report generator that does not request secrets or install software. Before installing or enabling it for autonomous use: (1) Inspect the remainder of scripts/decision_tracker.py (search for open(..., 'w'/'a'), os.system/subprocess, socket or requests usage) to confirm it does not write files unexpectedly or make network calls. (2) If you intend to keep raw transcripts private, confirm the memory/board-meetings path is stored where you expect and that no other skill will load or transmit those files. (3) Run python scripts/decision_tracker.py --demo in a safe directory to see behavior and outputs. (4) If you rely on the SKILL.md 'append' workflow, ensure the team has an explicit process (or code) that performs appends under founder control — the provided script appears to be a parser/report tool and may not implement automated appending. If you want a deeper review, provide the remainder of the script for a full scan of any write or network operations.

Like a lobster shell, security has layers — review code before you run it.

latestvk97ey3mbcp4exxjfgbhg2vzsq982n4pe
392downloads
0stars
2versions
Updated 1mo ago
v2.1.1
MIT-0

Decision Logger

Two-layer memory system. Layer 1 stores everything. Layer 2 stores only what the founder approved. Future meetings read Layer 2 only — this prevents hallucinated consensus from past debates bleeding into new deliberations.

Keywords

decision log, memory, approved decisions, action items, board minutes, /cs:decisions, /cs:review, conflict detection, DO_NOT_RESURFACE

Quick Start

python scripts/decision_tracker.py --demo             # See sample output
python scripts/decision_tracker.py --summary          # Overview + overdue
python scripts/decision_tracker.py --overdue          # Past-deadline actions
python scripts/decision_tracker.py --conflicts        # Contradiction detection
python scripts/decision_tracker.py --owner "CTO"      # Filter by owner
python scripts/decision_tracker.py --search "pricing" # Search decisions

Commands

CommandEffect
/cs:decisionsLast 10 approved decisions
/cs:decisions --allFull history
/cs:decisions --owner CMOFilter by owner
/cs:decisions --topic pricingSearch by keyword
/cs:reviewAction items due within 7 days
/cs:review --overdueItems past deadline

Two-Layer Architecture

Layer 1 — Raw Transcripts

Location: memory/board-meetings/YYYY-MM-DD-raw.md

  • Full Phase 2 agent contributions, Phase 3 critique, Phase 4 synthesis
  • All debates, including rejected arguments
  • NEVER auto-loaded. Only on explicit founder request.
  • Archive after 90 days → memory/board-meetings/archive/YYYY/

Layer 2 — Approved Decisions

Location: memory/board-meetings/decisions.md

  • ONLY founder-approved decisions, action items, user corrections
  • Loaded automatically in Phase 1 of every board meeting
  • Append-only. Decisions are never deleted — only superseded.
  • Managed by Chief of Staff after Phase 5. Never written by agents directly.

Decision Entry Format

## [YYYY-MM-DD] — [AGENDA ITEM TITLE]

**Decision:** [One clear statement of what was decided.]
**Owner:** [One person or role — accountable for execution.]
**Deadline:** [YYYY-MM-DD]
**Review:** [YYYY-MM-DD]
**Rationale:** [Why this over alternatives. 1-2 sentences.]

**User Override:** [If founder changed agent recommendation — what and why. Blank if not applicable.]

**Rejected:**
- [Proposal] — [reason] [DO_NOT_RESURFACE]

**Action Items:**
- [ ] [Action] — Owner: [name] — Due: [YYYY-MM-DD] — Review: [YYYY-MM-DD]

**Supersedes:** [DATE of previous decision on same topic, if any]
**Superseded by:** [Filled in retroactively if overridden later]
**Raw transcript:** memory/board-meetings/[DATE]-raw.md

Conflict Detection

Before logging, Chief of Staff checks for:

  1. DO_NOT_RESURFACE violations — new decision matches a rejected proposal
  2. Topic contradictions — two active decisions on same topic with different conclusions
  3. Owner conflicts — same action assigned to different people in different decisions

When a conflict is found:

⚠️ DECISION CONFLICT
New: [text]
Conflicts with: [DATE] — [existing text]

Options: (1) Supersede old  (2) Merge  (3) Defer to founder

DO_NOT_RESURFACE enforcement:

🚫 BLOCKED: "[Proposal]" was rejected on [DATE]. Reason: [reason].
To reopen: founder must explicitly say "reopen [topic] from [DATE]".

Logging Workflow (Post Phase 5)

  1. Founder approves synthesis
  2. Write Layer 1 raw transcript → YYYY-MM-DD-raw.md
  3. Check conflicts against decisions.md
  4. Surface conflicts → wait for founder resolution
  5. Append approved entries to decisions.md
  6. Confirm: decisions logged, actions tracked, DO_NOT_RESURFACE flags added

Marking Actions Complete

- [x] [Action] — Owner: [name] — Completed: [DATE] — Result: [one sentence]

Never delete completed items. The history is the record.


File Structure

memory/board-meetings/
├── decisions.md       # Layer 2: append-only, founder-approved
├── YYYY-MM-DD-raw.md  # Layer 1: full transcript per meeting
└── archive/YYYY/      # Raw files after 90 days

References

  • templates/decision-entry.md — single entry template with field rules
  • scripts/decision_tracker.py — CLI parser, overdue tracker, conflict detector

Comments

Loading comments...