Refactor Mattermost and Slack integration workflows to remove legacy Fidelity variables, streamline command execution, and enhance documentation for project profiles. Update scripts and README files to reflect changes in directory structure and configuration precedence, ensuring a consistent approach to project knowledge management across profiles. Improve error handling and validation in profile creation and doctor commands, and enhance test coverage for profile-related functionalities.
This commit is contained in:
@@ -12,7 +12,7 @@ Obsidian is the current human-facing implementation, but the workspace should no
|
||||
|
||||
### Canonical Memory
|
||||
|
||||
The source of truth is plain Markdown under `project-knowledge/`.
|
||||
The source of truth is plain Markdown under `workspaces/<profile>/project-knowledge/`.
|
||||
|
||||
Agents should edit canonical notes directly when precision matters because direct edits produce auditable diffs.
|
||||
|
||||
@@ -31,16 +31,16 @@ Use `scripts/memory/memory.sh` for project-knowledge operations:
|
||||
|
||||
The current adapter is Obsidian CLI through `scripts/obsidian/cli.sh`.
|
||||
|
||||
If Obsidian CLI is unavailable or fails, `scripts/memory/memory.sh` falls back to direct Markdown operations unless `AIW_MEMORY_BACKEND=obsidian` is explicitly set.
|
||||
If Obsidian CLI is unavailable or fails, `scripts/memory/memory.sh` uses direct Markdown operations unless `AIW_MEMORY_BACKEND=obsidian` is explicitly set.
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
- `AIW_PROJECT_KNOWLEDGE_DIR`: canonical project knowledge directory. Defaults to `<workspace-root>/project-knowledge`.
|
||||
- `AIW_MEMORY_VAULT_DIR`: transition alias for the canonical project knowledge directory.
|
||||
- `AIW_PROJECT_PROFILE`: selected profile. Defaults to `fidelity` in this workspace.
|
||||
- `profiles/<profile>/workspace.json`: canonical source for `knowledge_dir`, `inbox_dir`, and `index_dir`.
|
||||
- `AIW_PROJECT_KNOWLEDGE_DIR`: optional local override for the canonical project knowledge directory.
|
||||
- `AIW_MEMORY_BACKEND`: `auto`, `files`, or `obsidian`. Defaults to `auto`.
|
||||
- `AIW_OBSIDIAN_VAULT_DIR`: Obsidian-specific transition alias, still supported by the adapter.
|
||||
- `AIW_OBSIDIAN_VAULT_NAME`: Obsidian URI vault name override for URI wrappers.
|
||||
|
||||
Backend meanings:
|
||||
@@ -55,15 +55,15 @@ Backend meanings:
|
||||
|
||||
The memory interface owns type-to-folder routing:
|
||||
|
||||
- `daily` -> `project-knowledge/06-daily/`
|
||||
- `work-item` -> `project-knowledge/02-work-items/`
|
||||
- `person` -> `project-knowledge/04-people/`
|
||||
- `decision` -> `project-knowledge/05-decisions/`
|
||||
- `system` -> `project-knowledge/03-context/systems/`
|
||||
- `workstream` -> `project-knowledge/03-context/workstreams/`
|
||||
- `meeting-note` -> `project-knowledge/06-daily/`
|
||||
- `daily` -> `workspaces/<profile>/project-knowledge/06-daily/`
|
||||
- `work-item` -> `workspaces/<profile>/project-knowledge/02-work-items/`
|
||||
- `person` -> `workspaces/<profile>/project-knowledge/04-people/`
|
||||
- `decision` -> `workspaces/<profile>/project-knowledge/05-decisions/`
|
||||
- `system` -> `workspaces/<profile>/project-knowledge/03-context/systems/`
|
||||
- `workstream` -> `workspaces/<profile>/project-knowledge/03-context/workstreams/`
|
||||
- `meeting-note` -> `workspaces/<profile>/project-knowledge/06-daily/`
|
||||
|
||||
Templates live in `project-knowledge/09-templates/`.
|
||||
Templates live in `workspaces/<profile>/project-knowledge/09-templates/`.
|
||||
|
||||
This gives agents an automatic destination for new notes without coupling the rule to Obsidian.
|
||||
|
||||
@@ -77,7 +77,7 @@ This gives agents an automatic destination for new notes without coupling the ru
|
||||
- Edit Markdown directly for precise memory curation, corrections, and content updates.
|
||||
- Do not treat Obsidian CLI failure as project context.
|
||||
- Do not require Obsidian to be running for core workspace operation.
|
||||
- Keep raw evidence outside `project-knowledge/`; promote only curated memory.
|
||||
- Keep raw evidence outside `workspaces/<profile>/project-knowledge/`; promote only curated memory.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -10,10 +10,10 @@ Obsidian should not become a second memory store.
|
||||
|
||||
## Recommended Vault
|
||||
|
||||
Open the `project-knowledge/` folder as the Obsidian vault:
|
||||
Open the `workspaces/<profile>/project-knowledge/` folder as the Obsidian vault:
|
||||
|
||||
```text
|
||||
<workspace-root>/project-knowledge/
|
||||
<workspace-root>/workspaces/<profile>/project-knowledge/
|
||||
```
|
||||
|
||||
This keeps one source of truth:
|
||||
@@ -30,14 +30,14 @@ This keeps one source of truth:
|
||||
|
||||
Canonical project knowledge lives in:
|
||||
|
||||
- `project-knowledge/00-start/`
|
||||
- `project-knowledge/01-current/`
|
||||
- `project-knowledge/02-work-items/`
|
||||
- `project-knowledge/03-context/`
|
||||
- `project-knowledge/04-people/`
|
||||
- `project-knowledge/05-decisions/`
|
||||
- `project-knowledge/06-daily/`
|
||||
- `project-knowledge/07-maps/`
|
||||
- `workspaces/<profile>/project-knowledge/00-start/`
|
||||
- `workspaces/<profile>/project-knowledge/01-current/`
|
||||
- `workspaces/<profile>/project-knowledge/02-work-items/`
|
||||
- `workspaces/<profile>/project-knowledge/03-context/`
|
||||
- `workspaces/<profile>/project-knowledge/04-people/`
|
||||
- `workspaces/<profile>/project-knowledge/05-decisions/`
|
||||
- `workspaces/<profile>/project-knowledge/06-daily/`
|
||||
- `workspaces/<profile>/project-knowledge/07-maps/`
|
||||
|
||||
Technical runtime remains outside the vault:
|
||||
|
||||
@@ -58,21 +58,21 @@ Communication evidence may exist under `workspaces/<profile>/inbox/` or connecto
|
||||
|
||||
Version portable Obsidian configuration only when it improves the workspace for every clone:
|
||||
|
||||
- `project-knowledge/.obsidian/app.json`
|
||||
- `project-knowledge/.obsidian/core-plugins.json`
|
||||
- `project-knowledge/.obsidian/graph.json`
|
||||
- `project-knowledge/.obsidian/appearance.json`
|
||||
- `project-knowledge/.obsidian/daily-notes.json`
|
||||
- `project-knowledge/.obsidian/templates.json`
|
||||
- `project-knowledge/.obsidian/bookmarks.json`
|
||||
- `workspaces/<profile>/project-knowledge/.obsidian/app.json`
|
||||
- `workspaces/<profile>/project-knowledge/.obsidian/core-plugins.json`
|
||||
- `workspaces/<profile>/project-knowledge/.obsidian/graph.json`
|
||||
- `workspaces/<profile>/project-knowledge/.obsidian/appearance.json`
|
||||
- `workspaces/<profile>/project-knowledge/.obsidian/daily-notes.json`
|
||||
- `workspaces/<profile>/project-knowledge/.obsidian/templates.json`
|
||||
- `workspaces/<profile>/project-knowledge/.obsidian/bookmarks.json`
|
||||
|
||||
Do not version local runtime state:
|
||||
|
||||
- `project-knowledge/.obsidian/workspace*.json`
|
||||
- `project-knowledge/.obsidian/workspace-mobile*.json`
|
||||
- `project-knowledge/.obsidian/plugins/`
|
||||
- `project-knowledge/.obsidian/snippets/`
|
||||
- `project-knowledge/.obsidian/cache/`
|
||||
- `workspaces/<profile>/project-knowledge/.obsidian/workspace*.json`
|
||||
- `workspaces/<profile>/project-knowledge/.obsidian/workspace-mobile*.json`
|
||||
- `workspaces/<profile>/project-knowledge/.obsidian/plugins/`
|
||||
- `workspaces/<profile>/project-knowledge/.obsidian/snippets/`
|
||||
- `workspaces/<profile>/project-knowledge/.obsidian/cache/`
|
||||
|
||||
Recommended graph and search exclusions:
|
||||
|
||||
@@ -107,7 +107,7 @@ The agent should not treat Obsidian runtime layout changes as project context.
|
||||
|
||||
If Obsidian metadata or properties are added, use them selectively for high-value notes such as work items, decisions, and index pages. Do not mass-convert existing files just to add metadata.
|
||||
|
||||
Use map notes under `project-knowledge/07-maps/` as graph hubs. This keeps the graph navigable without forcing every file into Obsidian-specific wiki-link syntax.
|
||||
Use map notes under `workspaces/<profile>/project-knowledge/07-maps/` as graph hubs. This keeps the graph navigable without forcing every file into Obsidian-specific wiki-link syntax.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@ core/**/*.md
|
||||
scripts/**/*.md
|
||||
```
|
||||
|
||||
Raw evidence stays outside `project-knowledge/`; promoted memory is written to `project-knowledge/`.
|
||||
Raw evidence stays outside `workspaces/<profile>/project-knowledge/`; promoted memory is written to `workspaces/<profile>/project-knowledge/`.
|
||||
|
||||
---
|
||||
|
||||
@@ -178,7 +178,7 @@ The agent should also identify recurring quality gaps proactively. If an answer
|
||||
|
||||
For technical topics, recurring gaps often belong in:
|
||||
|
||||
- domain-specific guidance under `project-knowledge/03-context/`
|
||||
- domain-specific guidance under `workspaces/<profile>/project-knowledge/03-context/`
|
||||
- reusable skills under `.agents/skills/`
|
||||
- agent behavior rules under `.opencode/agents/`, `AGENTS.md`, or `agent-memory/`
|
||||
- source anchors for official/current documentation
|
||||
|
||||
@@ -48,7 +48,7 @@ project-knowledge/09-templates/
|
||||
|
||||
Keep project-specific facts out of `core/`.
|
||||
|
||||
Treat `project-knowledge/` as canonical project memory. Keep connector inboxes and generated evidence outside the project knowledge vault.
|
||||
Treat `workspaces/<profile>/project-knowledge/` as canonical project memory. Keep connector inboxes and generated evidence outside the project knowledge vault.
|
||||
|
||||
---
|
||||
|
||||
@@ -102,15 +102,15 @@ Before using the workspace for real work:
|
||||
|
||||
## 6. Obsidian Vault
|
||||
|
||||
Open `project-knowledge/` as the Obsidian vault.
|
||||
Open `workspaces/<profile>/project-knowledge/` as the Obsidian vault.
|
||||
|
||||
Use `scripts/memory/` as the project-agnostic memory interface. Obsidian is the default visual and CLI-backed adapter, but profile logic should not depend on Obsidian.
|
||||
|
||||
Recommended rules:
|
||||
|
||||
- keep `project-knowledge/` as the clean canonical project knowledge
|
||||
- keep runtime evidence, scripts, profiles, and generated files outside `project-knowledge/`
|
||||
- version only portable `project-knowledge/.obsidian` configuration
|
||||
- keep `workspaces/<profile>/project-knowledge/` as the clean canonical project knowledge
|
||||
- keep runtime evidence, scripts, profiles, and generated files outside `workspaces/<profile>/project-knowledge/`
|
||||
- version only portable `workspaces/<profile>/project-knowledge/.obsidian` configuration
|
||||
- ignore local Obsidian workspace state and plugin runtime files
|
||||
- create or update map notes under `project-knowledge/07-maps/` for human navigation
|
||||
- create Bases under `project-knowledge/08-bases/` using simple `type` properties
|
||||
- create or update map notes under `workspaces/<profile>/project-knowledge/07-maps/` for human navigation
|
||||
- create Bases under `workspaces/<profile>/project-knowledge/08-bases/` using simple `type` properties
|
||||
|
||||
@@ -12,7 +12,7 @@ tags:
|
||||
|
||||
## Goal
|
||||
|
||||
Add retrieval over canonical workspace memory without replacing the human-readable `project-knowledge/` vault.
|
||||
Add retrieval over canonical workspace memory without replacing the human-readable profile project knowledge vault.
|
||||
|
||||
The local index is derived and disposable. If the index disagrees with Markdown, the Markdown wins.
|
||||
|
||||
@@ -29,7 +29,7 @@ scripts/aiw/indexer.py
|
||||
It reads:
|
||||
|
||||
```text
|
||||
project-knowledge/**/*.md
|
||||
workspaces/<profile>/project-knowledge/**/*.md
|
||||
```
|
||||
|
||||
and writes:
|
||||
@@ -42,7 +42,7 @@ and writes:
|
||||
It skips:
|
||||
|
||||
```text
|
||||
project-knowledge/09-templates/
|
||||
workspaces/<profile>/project-knowledge/09-templates/
|
||||
```
|
||||
|
||||
so Obsidian templates do not appear as real memory.
|
||||
|
||||
@@ -7,7 +7,7 @@ The AI Workspace should unify local service lifecycle without collapsing service
|
||||
- Service manager: starts, stops, checks, and logs local services.
|
||||
- Context MCP: exposes bounded read-only context to AI clients.
|
||||
- Capture services: produce local evidence such as Mattermost mirror records or photo inbox files.
|
||||
- Canonical memory remains under `project-knowledge/` and is updated by the agent using memory rules.
|
||||
- Canonical memory remains under `workspaces/<profile>/project-knowledge/` and is updated by the agent using memory rules.
|
||||
|
||||
## Service Types
|
||||
|
||||
|
||||
Reference in New Issue
Block a user