Initial commit: RGB LED Strip Controller v0.3.0
- WPF + WinRT BLE controller for ELK-BLEDOM compatible LED strips - Multi-device control, effects, grayscale and temperature modes - Velopack updates via Gitea Releases, Gitea Actions CI
This commit is contained in:
40 files changed
+5411
No files matched your search
@@ -0,0 +1,43 @@
|
||||
# v1 to v2 Migration Playbook
|
||||
|
||||
This playbook migrates the old 6-file memory bank to the v2 layered model.
|
||||
|
||||
## Mapping Table
|
||||
|
||||
| v1 file | v2 destination |
|
||||
| --- | --- |
|
||||
| `projectbrief.md` | `10_scope.md` |
|
||||
| `productContext.md` | `11_product.md` |
|
||||
| `systemPatterns.md` | `12_architecture.md` |
|
||||
| `techContext.md` | `13_tech.md` |
|
||||
| `activeContext.md` | `20_now.md` |
|
||||
| `progress.md` | `21_backlog.md` + `logs/tasks/...` + `00_project_snapshot.md` |
|
||||
|
||||
## Migration Steps
|
||||
|
||||
1. Create the v2 tree from `templates/`.
|
||||
2. Copy current-truth statements from v1 files into mapped v2 core files.
|
||||
3. Remove historical narrative from core content while migrating.
|
||||
4. Extract major decisions into ADRs (`decisions/ADR-*.md`).
|
||||
5. Extract execution history into task logs (`logs/tasks/YYYY/MM/*.md`).
|
||||
6. Build `00_project_snapshot.md` from current state, top risks, and top priorities.
|
||||
7. Build `21_backlog.md` from remaining actionable items only.
|
||||
8. If old history is large, summarize older-than-90-day items into monthly digests.
|
||||
9. Run consistency checks from `OPERATIONS.md`.
|
||||
|
||||
## Conversion Rules
|
||||
- Keep one source of truth per concept.
|
||||
- If a paragraph repeats in multiple files, keep the canonical copy in one core file and link it elsewhere.
|
||||
- Core files must answer "what is true now", not "what happened over time".
|
||||
- Place justifications and tradeoffs in ADRs, not in core files.
|
||||
|
||||
## Suggested First ADRs
|
||||
- `ADR-0001-memory-bank-v2-adoption.md`: why v2 was adopted.
|
||||
- `ADR-0002-layered-read-protocol.md`: why layered reading is required.
|
||||
- `ADR-0003-core-no-changelog-rule.md`: why history is separated from core files.
|
||||
|
||||
## Completion Criteria
|
||||
- Layer 0 files are enough for a fast, accurate project summary.
|
||||
- All backlog items are actionable and non-duplicated.
|
||||
- Old historical detail is linked through task logs and digests.
|
||||
- No core file breaches hard line budgets.
|
||||
@@ -0,0 +1,48 @@
|
||||
# Memory Bank v2 Operations
|
||||
|
||||
## Command: `update memory bank`
|
||||
|
||||
Use this when significant changes happen or context gets stale.
|
||||
|
||||
### Procedure
|
||||
1. Read Layer 0 (`00_project_snapshot.md`, `20_now.md`, `21_backlog.md`).
|
||||
2. Read additional Layer 1 and Layer 2 files that are relevant to touched work.
|
||||
3. Refresh core files to current truth.
|
||||
4. Write or update ADRs for durable decisions.
|
||||
5. Write a task log for significant implementation steps.
|
||||
6. Validate:
|
||||
- All referenced ADR and task IDs exist.
|
||||
- Core files do not contain changelog-style history.
|
||||
- Budgets from `SCHEMA.md` are respected.
|
||||
7. Update `Last Updated` fields in touched files.
|
||||
|
||||
### Expected Result
|
||||
- Layer 0 gives an accurate project state in minutes.
|
||||
- Decision and execution history is traceable via IDs.
|
||||
|
||||
## Command: `compact memory bank`
|
||||
|
||||
Use this manually for maintenance.
|
||||
|
||||
### Triggers
|
||||
- Any file exceeds hard budget.
|
||||
- Backlog has many stale completed items.
|
||||
- Task logs older than 90 days are accumulating.
|
||||
|
||||
### Procedure
|
||||
1. Identify oversized core files.
|
||||
2. Remove historical narrative from core files.
|
||||
3. Ensure old details live in ADR/task logs.
|
||||
4. For each month older than 90 days, create or refresh `logs/digests/YYYY-MM.md`.
|
||||
5. Replace verbose old references in core files with digest links.
|
||||
6. Re-validate ID/link integrity and budgets.
|
||||
|
||||
### Expected Result
|
||||
- Core remains concise.
|
||||
- Older history stays discoverable through digests and linked logs.
|
||||
|
||||
## Consistency Checklist
|
||||
- Every backlog item has an ID, status, and owner.
|
||||
- Every ADR has status (`proposed`, `accepted`, `superseded`) and links.
|
||||
- `20_now.md` and `21_backlog.md` do not conflict.
|
||||
- `00_project_snapshot.md` reflects the same priorities as `20_now.md`.
|
||||
@@ -0,0 +1,113 @@
|
||||
# Memory Bank v2 Schema
|
||||
|
||||
## Required Tree
|
||||
|
||||
```text
|
||||
memory-bank/
|
||||
00_project_snapshot.md
|
||||
10_scope.md
|
||||
11_product.md
|
||||
12_architecture.md
|
||||
13_tech.md
|
||||
20_now.md
|
||||
21_backlog.md
|
||||
decisions/
|
||||
ADR-0001-short-title.md
|
||||
logs/
|
||||
tasks/YYYY/MM/TASK-YYYYMMDD-001-short-title.md
|
||||
digests/YYYY-MM.md
|
||||
```
|
||||
|
||||
## ID and Naming Rules
|
||||
- ADR ID: `ADR-0001` style, incrementing sequence.
|
||||
- Task ID: `TASK-YYYYMMDD-###` style, sequence resets daily.
|
||||
- Backlog ID: `BG-001` style.
|
||||
- Core file names are fixed and must not be renamed.
|
||||
- Keep file names in English; content may be Turkish or English.
|
||||
|
||||
## Hard Size Budgets
|
||||
|
||||
| File | Max lines | Role |
|
||||
| --- | ---: | --- |
|
||||
| `00_project_snapshot.md` | 120 | One-page entry point and quick orientation |
|
||||
| `10_scope.md` | 180 | Scope boundaries and success criteria |
|
||||
| `11_product.md` | 220 | User/problem/value model |
|
||||
| `12_architecture.md` | 260 | Architecture map and critical paths |
|
||||
| `13_tech.md` | 220 | Stack, setup, constraints, runbook basics |
|
||||
| `20_now.md` | 160 | Current focus, blockers, assumptions |
|
||||
| `21_backlog.md` | 200 | Prioritized backlog and status |
|
||||
| `decisions/ADR-*.md` | 180 each | Durable rationale and decision records |
|
||||
| `logs/tasks/.../*.md` | 250 each | Task execution narrative |
|
||||
| `logs/digests/YYYY-MM.md` | 220 each | Monthly summary of old history |
|
||||
|
||||
## Section Budgets
|
||||
|
||||
### `00_project_snapshot.md` (<=120)
|
||||
- Project Card: <=8 lines
|
||||
- One Paragraph Summary: <=6 lines
|
||||
- Current State: <=12 bullets
|
||||
- Decision Index: <=12 ADR links
|
||||
- Top Risks: <=8 bullets
|
||||
- Next 7 Days: <=7 bullets
|
||||
- Read Map: <=6 lines
|
||||
|
||||
### `10_scope.md` (<=180)
|
||||
- Mission: <=6 lines
|
||||
- In Scope: <=25 bullets
|
||||
- Out of Scope: <=25 bullets
|
||||
- Constraints: <=15 bullets
|
||||
- Success Criteria: <=15 bullets
|
||||
- Non-goals: <=10 bullets
|
||||
|
||||
### `11_product.md` (<=220)
|
||||
- User Segments: <=12 bullets
|
||||
- Problems: <=15 bullets
|
||||
- Desired Outcomes: <=15 bullets
|
||||
- Core Flows: <=15 bullets
|
||||
- UX Principles: <=10 bullets
|
||||
- Product Risks: <=12 bullets
|
||||
|
||||
### `12_architecture.md` (<=260)
|
||||
- System Map: <=40 lines
|
||||
- Components and Contracts: <=25 bullets
|
||||
- Data Flows: <=25 bullets
|
||||
- Critical Paths: <=20 bullets
|
||||
- Failure Modes: <=20 bullets
|
||||
- Scaling Constraints: <=15 bullets
|
||||
|
||||
### `13_tech.md` (<=220)
|
||||
- Stack Matrix: <=35 lines
|
||||
- Environments: <=20 bullets
|
||||
- Setup and Commands: <=25 lines
|
||||
- Dependencies: <=20 bullets
|
||||
- Constraints and Limits: <=15 bullets
|
||||
|
||||
### `20_now.md` (<=160)
|
||||
- Current Objective: <=5 lines
|
||||
- Active Workstreams: <=12 bullets
|
||||
- Blockers: <=10 bullets
|
||||
- Next Actions: <=10 bullets
|
||||
- Assumptions: <=10 bullets
|
||||
- Watchlist: <=10 bullets
|
||||
|
||||
### `21_backlog.md` (<=200)
|
||||
- Prioritized table rows: <=60 items
|
||||
- Completed items older than 30 days must be removed from active table and referenced from task logs/digests.
|
||||
|
||||
## Core File Guardrails
|
||||
- Core files are current truth only.
|
||||
- Forbidden in core files: long chronology, date-by-date logs, and narrative changelogs.
|
||||
- Keep details in ADRs and task logs; keep summaries in core files.
|
||||
- Prefer references over duplicated prose.
|
||||
|
||||
## Over-Limit Policy
|
||||
When any file exceeds budget:
|
||||
1. Keep only current truth in the core file.
|
||||
2. Move historical detail to ADR/task logs.
|
||||
3. Add references to moved details.
|
||||
4. Re-run a consistency check (IDs resolve, no stale links).
|
||||
|
||||
## 90-Day Retention Policy
|
||||
- Task logs in the last 90 days are hot history.
|
||||
- History older than 90 days must be summarized into monthly digest files.
|
||||
- Compaction is manual and triggered by `compact memory bank`.
|
||||
@@ -0,0 +1,21 @@
|
||||
# Memory Bank v2 Templates
|
||||
|
||||
Use files under `templates/` as copy-ready starters for each new project.
|
||||
|
||||
## Template Index
|
||||
- `templates/00_project_snapshot.md`
|
||||
- `templates/10_scope.md`
|
||||
- `templates/11_product.md`
|
||||
- `templates/12_architecture.md`
|
||||
- `templates/13_tech.md`
|
||||
- `templates/20_now.md`
|
||||
- `templates/21_backlog.md`
|
||||
- `templates/decisions/ADR-0000-template.md`
|
||||
- `templates/logs/tasks/YYYY/MM/TASK-YYYYMMDD-001-template.md`
|
||||
- `templates/logs/digests/YYYY-MM.md`
|
||||
|
||||
## Usage Rules
|
||||
1. Keep section headings stable so tools can parse quickly.
|
||||
2. Replace placeholders (`<...>`) immediately; avoid leaving TODO placeholders in active projects.
|
||||
3. Keep IDs stable once created.
|
||||
4. Keep core files concise and route history to ADR/log templates.
|
||||
@@ -0,0 +1,29 @@
|
||||
# Memory Bank v2 Test Checklist
|
||||
|
||||
## 1. Startup Test (2-3 minute orientation)
|
||||
- Read only Layer 0 files.
|
||||
- Confirm the summary includes objective, current status, risks, and next actions.
|
||||
- Pass if no Layer 1/2 file is required for a basic project brief.
|
||||
|
||||
## 2. Scale Test (200+ task logs)
|
||||
- Ensure core files remain within hard budgets.
|
||||
- Confirm old details are reachable through task logs and digests.
|
||||
- Pass if context load time remains fast and no core file turns into a log.
|
||||
|
||||
## 3. Audit Trace Test
|
||||
- Pick one decision and trace:
|
||||
1. Core summary mention
|
||||
2. ADR rationale
|
||||
3. Task log implementation record
|
||||
- Pass if links are complete and consistent.
|
||||
|
||||
## 4. Anti-duplication Test
|
||||
- Scan core files for repeated long paragraphs.
|
||||
- Pass if repeated content is replaced with canonical links.
|
||||
|
||||
## 5. Compaction Test
|
||||
- Run `compact memory bank` procedure.
|
||||
- Confirm:
|
||||
- Core files shrink to budget.
|
||||
- 90+ day history appears in monthly digests.
|
||||
- Link integrity is preserved.
|
||||
@@ -0,0 +1,35 @@
|
||||
# 00 Project Snapshot
|
||||
|
||||
Last Updated: YYYY-MM-DD
|
||||
Project: <name>
|
||||
Owner: <person-or-team>
|
||||
Stage: discovery|build|stabilize|maintenance
|
||||
|
||||
## One Paragraph Summary
|
||||
<3-5 sentences that explain what this project does and why it matters.>
|
||||
|
||||
## Current State
|
||||
- <current truth bullet 1>
|
||||
- <current truth bullet 2>
|
||||
|
||||
## Top Facts
|
||||
- [F01] <fact>
|
||||
- [F02] <fact>
|
||||
|
||||
## Decision Index
|
||||
- [ADR-0001] <title>
|
||||
|
||||
## Top Risks
|
||||
- <risk and impact>
|
||||
|
||||
## Next 7 Days
|
||||
- <priority 1>
|
||||
- <priority 2>
|
||||
|
||||
## Read Map
|
||||
- Scope: `10_scope.md`
|
||||
- Product: `11_product.md`
|
||||
- Architecture: `12_architecture.md`
|
||||
- Tech: `13_tech.md`
|
||||
- Current Operations: `20_now.md`
|
||||
- Backlog: `21_backlog.md`
|
||||
@@ -0,0 +1,22 @@
|
||||
# 10 Scope
|
||||
|
||||
Last Updated: YYYY-MM-DD
|
||||
Owner: <person-or-team>
|
||||
|
||||
## Mission
|
||||
<single paragraph>
|
||||
|
||||
## In Scope
|
||||
- <item>
|
||||
|
||||
## Out of Scope
|
||||
- <item>
|
||||
|
||||
## Constraints
|
||||
- <constraint>
|
||||
|
||||
## Success Criteria
|
||||
- <measurable criterion>
|
||||
|
||||
## Non-goals
|
||||
- <non-goal>
|
||||
@@ -0,0 +1,22 @@
|
||||
# 11 Product
|
||||
|
||||
Last Updated: YYYY-MM-DD
|
||||
Owner: <person-or-team>
|
||||
|
||||
## User Segments
|
||||
- <segment>
|
||||
|
||||
## Problems
|
||||
- <problem>
|
||||
|
||||
## Desired Outcomes
|
||||
- <outcome>
|
||||
|
||||
## Core Flows
|
||||
- <flow>
|
||||
|
||||
## UX Principles
|
||||
- <principle>
|
||||
|
||||
## Product Risks
|
||||
- <risk>
|
||||
@@ -0,0 +1,22 @@
|
||||
# 12 Architecture
|
||||
|
||||
Last Updated: YYYY-MM-DD
|
||||
Owner: <person-or-team>
|
||||
|
||||
## System Map
|
||||
<high-level architecture summary>
|
||||
|
||||
## Components and Contracts
|
||||
- <component>: <contract>
|
||||
|
||||
## Data Flows
|
||||
- <flow>
|
||||
|
||||
## Critical Paths
|
||||
- <path>
|
||||
|
||||
## Failure Modes
|
||||
- <failure mode and mitigation>
|
||||
|
||||
## Scaling Constraints
|
||||
- <constraint>
|
||||
@@ -0,0 +1,21 @@
|
||||
# 13 Tech
|
||||
|
||||
Last Updated: YYYY-MM-DD
|
||||
Owner: <person-or-team>
|
||||
|
||||
## Stack Matrix
|
||||
| Layer | Technology | Notes |
|
||||
| --- | --- | --- |
|
||||
| <layer> | <tech> | <notes> |
|
||||
|
||||
## Environments
|
||||
- <environment details>
|
||||
|
||||
## Setup and Commands
|
||||
- `<command>`: <purpose>
|
||||
|
||||
## Dependencies
|
||||
- <dependency and role>
|
||||
|
||||
## Constraints and Limits
|
||||
- <limit>
|
||||
@@ -0,0 +1,22 @@
|
||||
# 20 Now
|
||||
|
||||
Last Updated: YYYY-MM-DD
|
||||
Owner: <person-or-team>
|
||||
|
||||
## Current Objective
|
||||
<single objective statement>
|
||||
|
||||
## Active Workstreams
|
||||
- <workstream>
|
||||
|
||||
## Blockers
|
||||
- <blocker>
|
||||
|
||||
## Next Actions
|
||||
- [TASK-YYYYMMDD-001] <action>
|
||||
|
||||
## Assumptions
|
||||
- <assumption>
|
||||
|
||||
## Watchlist
|
||||
- <item to monitor>
|
||||
@@ -0,0 +1,16 @@
|
||||
# 21 Backlog
|
||||
|
||||
Last Updated: YYYY-MM-DD
|
||||
Owner: <person-or-team>
|
||||
|
||||
## Prioritized Items
|
||||
| ID | Status | Priority | Summary | Owner | Link |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| BG-001 | todo | p1 | <item> | <owner> | <task-log-or-doc-link> |
|
||||
|
||||
Status values: `todo`, `in_progress`, `blocked`, `done`.
|
||||
|
||||
## Deferred
|
||||
| ID | Reason | Revisit Date |
|
||||
| --- | --- | --- |
|
||||
| BG-099 | <reason> | YYYY-MM-DD |
|
||||
@@ -0,0 +1,26 @@
|
||||
# ADR-0000: <short title>
|
||||
|
||||
Date: YYYY-MM-DD
|
||||
Status: proposed|accepted|superseded
|
||||
Owners: <person-or-team>
|
||||
|
||||
## Context
|
||||
<why this decision is needed>
|
||||
|
||||
## Decision
|
||||
<what was decided>
|
||||
|
||||
## Consequences
|
||||
- Positive: <impact>
|
||||
- Negative: <tradeoff>
|
||||
|
||||
## Alternatives Considered
|
||||
- <option A> - <why not chosen>
|
||||
- <option B> - <why not chosen>
|
||||
|
||||
## Links
|
||||
- Related tasks: `TASK-YYYYMMDD-001`
|
||||
- Related docs: `<path>`
|
||||
|
||||
## Supersedes / Superseded By
|
||||
- <ADR-id-or-none>
|
||||
@@ -0,0 +1,20 @@
|
||||
# YYYY-MM Digest
|
||||
|
||||
Month: YYYY-MM
|
||||
Last Updated: YYYY-MM-DD
|
||||
Owner: <person-or-team>
|
||||
|
||||
## Summary
|
||||
<high-level summary of this month for old-history compaction>
|
||||
|
||||
## Key Outcomes
|
||||
- <outcome>
|
||||
|
||||
## Decisions Referenced
|
||||
- `ADR-0001` - <title>
|
||||
|
||||
## Notable Tasks
|
||||
- `TASK-YYYYMMDD-001` - <result>
|
||||
|
||||
## Carryover Risks
|
||||
- <risk>
|
||||
@@ -0,0 +1,25 @@
|
||||
# TASK-YYYYMMDD-001: <short title>
|
||||
|
||||
Date: YYYY-MM-DD
|
||||
Owner: <person-or-team>
|
||||
Status: in_progress|done|blocked
|
||||
|
||||
## Intent
|
||||
<what this task was trying to achieve>
|
||||
|
||||
## Scope
|
||||
- <in>
|
||||
- <out>
|
||||
|
||||
## Changes
|
||||
- <change summary>
|
||||
|
||||
## Validation
|
||||
- <test/check 1>
|
||||
- <test/check 2>
|
||||
|
||||
## Decision Links
|
||||
- ADR: `ADR-0001`
|
||||
|
||||
## Follow-ups
|
||||
- [BG-001] <follow-up item>
|
||||
Reference in new issue
Block a user