Compare commits

..

1 Commits

Author SHA1 Message Date
1ad707373a Add daily logs and templates for project fidelity
- Created daily log entries for May 13, 14, 18, 19, 20, and 21, capturing work done, findings, and next steps.
- Established a daily logs index for easy navigation of daily notes.
- Developed templates for daily logs, decisions, meeting notes, people, systems, and work items to standardize documentation.
- Introduced base files for filtering and displaying various types of project knowledge, including daily notes, decisions, people, systems, work items, and workstreams.
- Added maps for current work, fidelity apps, and fidelity domain to enhance project navigation and context.
2026-05-21 12:28:07 -06:00
203 changed files with 449 additions and 434 deletions

View File

@@ -19,10 +19,10 @@ Use this skill when the user wants a prompt for another AI assistant, GitHub Cop
- test strategy
- story/PR drafting
2. Pull only the relevant context:
- `project-knowledge/02-work-items/` for ticket-specific context
- `project-knowledge/03-context/systems/` for component context
- `project-knowledge/03-context/workstreams/` for recurring constraints
- `project-knowledge/03-context/ios/` for Swift/iOS guidance
- `workspaces/fidelity/project-knowledge/02-work-items/` for ticket-specific context
- `workspaces/fidelity/project-knowledge/03-context/systems/` for component context
- `workspaces/fidelity/project-knowledge/03-context/workstreams/` for recurring constraints
- `workspaces/fidelity/project-knowledge/03-context/ios/` for Swift/iOS guidance
3. Make the prompt self-contained.
4. Tell the target AI what to inspect before acting.
5. State constraints, non-goals, and validation expectations.

View File

@@ -12,8 +12,8 @@ Use this skill for Swift, SwiftUI, iOS architecture, concurrency, testing, or de
## Workflow
1. Identify whether the question is general Swift/iOS or Fidelity-specific.
2. Read `project-knowledge/03-context/ios/current-practices.md` for currentness rules.
3. Read `project-knowledge/03-context/ios/project-swift-guidance.md` when the answer may affect XFlow, Fid4, XFlowViewMaker, FTFrameworks, feature flags, or consumer validation.
2. Read `workspaces/fidelity/project-knowledge/03-context/ios/current-practices.md` for currentness rules.
3. Read `workspaces/fidelity/project-knowledge/03-context/ios/project-swift-guidance.md` when the answer may affect XFlow, Fid4, XFlowViewMaker, FTFrameworks, feature flags, or consumer validation.
4. If the answer depends on current Apple APIs, Xcode versions, dependency tooling, package-manager behavior, testing frameworks, or migration guidance, verify with official/primary documentation before making strong claims.
5. Separate:
- current best practice

View File

@@ -8,9 +8,9 @@ Read:
@core/README.md
@core/memory/operational-memory.md
@project-knowledge/01-current/current-work.md
@project-knowledge/01-current/work-items.md
@project-knowledge/03-context/project.md
@workspaces/fidelity/project-knowledge/01-current/current-work.md
@workspaces/fidelity/project-knowledge/01-current/work-items.md
@workspaces/fidelity/project-knowledge/03-context/project.md
@agent-memory/workflows/ai-to-ai-prompting.md
Read active profile, if present:
@@ -23,13 +23,13 @@ Relevant active work item files, if available:
import re
from pathlib import Path
summary = Path("project-knowledge/01-current/work-items.md")
summary = Path("workspaces/fidelity/project-knowledge/01-current/work-items.md")
if not summary.is_file():
print("No work item files available.")
raise SystemExit(0)
text = summary.read_text()
paths = re.findall(r"Detail: `(project-knowledge/02-work-items/[^`]+)`", text)
paths = re.findall(r"Detail: `(workspaces/fidelity/project-knowledge/02-work-items/[^`]+)`", text)
if not paths:
print("No work item files available.")
raise SystemExit(0)

View File

@@ -24,12 +24,12 @@ Read:
@core/README.md
@core/memory/operational-memory.md
@core/integrations/communication-model.md
@project-knowledge/01-current/current-work.md
@project-knowledge/01-current/work-items.md
@project-knowledge/03-context/project.md
@workspaces/fidelity/project-knowledge/01-current/current-work.md
@workspaces/fidelity/project-knowledge/01-current/work-items.md
@workspaces/fidelity/project-knowledge/03-context/project.md
@agent-memory/memory/context-maintenance.md
@project-knowledge/04-people/index.md
@project-knowledge/04-people/manager.md
@workspaces/fidelity/project-knowledge/04-people/index.md
@workspaces/fidelity/project-knowledge/04-people/manager.md
Imported summary, if present:
@@ -44,11 +44,11 @@ Instructions:
- treat the archive as historical evidence
- promote durable project-relevant context automatically when confidence is high
- prefer durable role/person associations, recurring architecture patterns, repeated work-item references, approval/scope history, and process lessons
- create or update `project-knowledge/04-people/*.md` when a human repeatedly affects project flow
- create or update `workspaces/fidelity/project-knowledge/04-people/*.md` when a human repeatedly affects project flow
- avoid promoting outdated daily status unless it changes current understanding
- update existing memory when the archive clarifies or corrects it
- keep ambiguous or likely outdated facts as archive-only context
- write promoted memory to `project-knowledge/`
- write promoted memory to `workspaces/fidelity/project-knowledge/`
Return:

View File

@@ -19,9 +19,9 @@ Read:
@core/README.md
@core/memory/operational-memory.md
@core/integrations/communication-model.md
@project-knowledge/01-current/current-work.md
@project-knowledge/01-current/work-items.md
@project-knowledge/03-context/project.md
@workspaces/fidelity/project-knowledge/01-current/current-work.md
@workspaces/fidelity/project-knowledge/01-current/work-items.md
@workspaces/fidelity/project-knowledge/03-context/project.md
@agent-memory/memory/context-maintenance.md
Fresh communication evidence:
@@ -34,10 +34,10 @@ Instructions:
- prefer local proxy mirror evidence when present; legacy sync output is fallback evidence
- treat connector output as evidence, not automatically as project truth
- promote only explicit, project-relevant, high-confidence facts
- default destination is `project-knowledge/06-daily/$(date +%F).md`
- update `project-knowledge/01-current/current-work.md` only for facts that materially change the active work window
- update `project-knowledge/02-work-items/*.md` for explicit work-item IDs, approved titles, points, scope, and status notes
- keep `project-knowledge/01-current/work-items.md` aligned as the compact summary of active work items
- default destination is `workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md`
- update `workspaces/fidelity/project-knowledge/01-current/current-work.md` only for facts that materially change the active work window
- update `workspaces/fidelity/project-knowledge/02-work-items/*.md` for explicit work-item IDs, approved titles, points, scope, and status notes
- keep `workspaces/fidelity/project-knowledge/01-current/work-items.md` aligned as the compact summary of active work items
- do not write tooling noise, sync status, or generic chat chatter into project memory
- if a fact is ambiguous, skip it rather than asking what to do

View File

@@ -9,14 +9,14 @@ Read:
@core/README.md
@core/memory/operational-memory.md
@prompts/copilot-prompt.md
@project-knowledge/01-current/current-work.md
@project-knowledge/01-current/work-items.md
@project-knowledge/03-context/project.md
@workspaces/fidelity/project-knowledge/01-current/current-work.md
@workspaces/fidelity/project-knowledge/01-current/work-items.md
@workspaces/fidelity/project-knowledge/03-context/project.md
@agent-memory/workflows/ai-to-ai-prompting.md
@project-knowledge/03-context/ios/index.md
@project-knowledge/03-context/ios/project-swift-guidance.md
@project-knowledge/03-context/systems/index.md
@project-knowledge/03-context/workstreams/index.md
@workspaces/fidelity/project-knowledge/03-context/ios/index.md
@workspaces/fidelity/project-knowledge/03-context/ios/project-swift-guidance.md
@workspaces/fidelity/project-knowledge/03-context/systems/index.md
@workspaces/fidelity/project-knowledge/03-context/workstreams/index.md
Active profile, if present:
@@ -28,13 +28,13 @@ Detailed active work item files, if available:
import re
from pathlib import Path
summary = Path("project-knowledge/01-current/work-items.md")
summary = Path("workspaces/fidelity/project-knowledge/01-current/work-items.md")
if not summary.is_file():
print("No work item files available.")
raise SystemExit(0)
text = summary.read_text()
paths = re.findall(r"Detail: `(project-knowledge/02-work-items/[^`]+)`", text)
paths = re.findall(r"Detail: `(workspaces/fidelity/project-knowledge/02-work-items/[^`]+)`", text)
if not paths:
print("No work item files available.")
raise SystemExit(0)

View File

@@ -11,14 +11,14 @@ Use these files as the baseline context:
@agent-memory/behavior/learning-sessions.md
@agent-memory/memory/promotion-rules.md
@agent-memory/integrations/technical-verification.md
@project-knowledge/00-start/start-here.md
@project-knowledge/01-current/current-work.md
@project-knowledge/01-current/work-items.md
@project-knowledge/03-context/project.md
@project-knowledge/03-context/process/communication.md
@project-knowledge/03-context/ios/index.md
@project-knowledge/04-people/manager.md
@project-knowledge/04-people/index.md
@workspaces/fidelity/project-knowledge/00-start/start-here.md
@workspaces/fidelity/project-knowledge/01-current/current-work.md
@workspaces/fidelity/project-knowledge/01-current/work-items.md
@workspaces/fidelity/project-knowledge/03-context/project.md
@workspaces/fidelity/project-knowledge/03-context/process/communication.md
@workspaces/fidelity/project-knowledge/03-context/ios/index.md
@workspaces/fidelity/project-knowledge/04-people/manager.md
@workspaces/fidelity/project-knowledge/04-people/index.md
Today's date:
@@ -26,11 +26,11 @@ Today's date:
Today's canonical daily note, if present:
!`if [ -f project-knowledge/06-daily/$(date +%F).md ]; then cat project-knowledge/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
!`if [ -f workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md ]; then cat workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
Latest daily notes available:
!`if [ -d project-knowledge/06-daily ]; then ls -1 project-knowledge/06-daily 2>/dev/null | sort | tail -n 3; else echo "No daily notes directory available."; fi`
!`if [ -d workspaces/fidelity/project-knowledge/06-daily ]; then ls -1 workspaces/fidelity/project-knowledge/06-daily 2>/dev/null | sort | tail -n 3; else echo "No daily notes directory available."; fi`
Detailed active work item files, if available:
@@ -38,13 +38,13 @@ Detailed active work item files, if available:
import re
from pathlib import Path
summary = Path("project-knowledge/01-current/work-items.md")
summary = Path("workspaces/fidelity/project-knowledge/01-current/work-items.md")
if not summary.is_file():
print("No work item files available.")
raise SystemExit(0)
text = summary.read_text()
paths = re.findall(r"Detail: `(project-knowledge/02-work-items/[^`]+)`", text)
paths = re.findall(r"Detail: `(workspaces/fidelity/project-knowledge/02-work-items/[^`]+)`", text)
if not paths:
print("No work item files available.")
raise SystemExit(0)

View File

@@ -9,15 +9,15 @@ Read:
@README.md
@core/README.md
@core/memory/operational-memory.md
@project-knowledge/01-current/current-work.md
@project-knowledge/01-current/work-items.md
@project-knowledge/03-context/project.md
@project-knowledge/03-context/workstreams/index.md
@workspaces/fidelity/project-knowledge/01-current/current-work.md
@workspaces/fidelity/project-knowledge/01-current/work-items.md
@workspaces/fidelity/project-knowledge/03-context/project.md
@workspaces/fidelity/project-knowledge/03-context/workstreams/index.md
@agent-memory/memory/context-maintenance.md
Today's existing log, if present:
!`if [ -f project-knowledge/06-daily/$(date +%F).md ]; then cat project-knowledge/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
!`if [ -f workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md ]; then cat workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
Incorporate these new rough notes into today's log:
@@ -26,7 +26,7 @@ $ARGUMENTS
Instructions:
- use `workspace-memory-curation` when available
- Update or create `project-knowledge/06-daily/$(date +%F).md`
- Update or create `workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md`
- Maintain daily-note frontmatter for Obsidian Bases: `date`, `focus`, `work-items`, `blockers`, and `updated`
- Preserve concrete technical meaning
- Capture both technical findings and communication context when relevant

View File

@@ -9,16 +9,16 @@ Use `professional-communication` when available.
Read:
@prompts/manager-update.md
@project-knowledge/01-current/current-work.md
@project-knowledge/01-current/work-items.md
@project-knowledge/03-context/project.md
@project-knowledge/03-context/process/communication.md
@project-knowledge/04-people/manager.md
@project-knowledge/04-people/index.md
@workspaces/fidelity/project-knowledge/01-current/current-work.md
@workspaces/fidelity/project-knowledge/01-current/work-items.md
@workspaces/fidelity/project-knowledge/03-context/project.md
@workspaces/fidelity/project-knowledge/03-context/process/communication.md
@workspaces/fidelity/project-knowledge/04-people/manager.md
@workspaces/fidelity/project-knowledge/04-people/index.md
Today's log, if present:
!`if [ -f project-knowledge/06-daily/$(date +%F).md ]; then cat project-knowledge/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
!`if [ -f workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md ]; then cat workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
Latest Mattermost context, if available:
@@ -30,13 +30,13 @@ Detailed active work item files, if available:
import re
from pathlib import Path
summary = Path("project-knowledge/01-current/work-items.md")
summary = Path("workspaces/fidelity/project-knowledge/01-current/work-items.md")
if not summary.is_file():
print("No work item files available.")
raise SystemExit(0)
text = summary.read_text()
paths = re.findall(r"Detail: `(project-knowledge/02-work-items/[^`]+)`", text)
paths = re.findall(r"Detail: `(workspaces/fidelity/project-knowledge/02-work-items/[^`]+)`", text)
if not paths:
print("No work item files available.")
raise SystemExit(0)

View File

@@ -24,15 +24,15 @@ Then:
- if the command fails, stop there and do not edit any workspace files
- prefer the local proxy mirror via `scripts/mattermost-proxy/read-context.py --mode latest` when it has evidence
- otherwise use `ai/inbox/mattermost-latest.md` if it exists and is non-empty
- otherwise use `workspaces/fidelity/inbox/mattermost-latest.md` if it exists and is non-empty
- otherwise use `scripts/mattermost/generated/mattermost_context.jsonl` if it exists and is non-empty
- apply the memory promotion rules from `agent-memory/memory/promotion-rules.md`
- treat Mattermost output as live communication evidence; the agent decides what becomes promoted memory
- automatically promote explicit, project-relevant, high-confidence facts
- default destination is `project-knowledge/06-daily/$(date +%F).md`
- update `project-knowledge/01-current/current-work.md` only for facts that materially change the current work window
- update `project-knowledge/02-work-items/*.md` for explicit Jira IDs, approved titles, points, scope, and status notes
- keep `project-knowledge/01-current/work-items.md` aligned as the compact summary of active ticket files
- default destination is `workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md`
- update `workspaces/fidelity/project-knowledge/01-current/current-work.md` only for facts that materially change the current work window
- update `workspaces/fidelity/project-knowledge/02-work-items/*.md` for explicit Jira IDs, approved titles, points, scope, and status notes
- keep `workspaces/fidelity/project-knowledge/01-current/work-items.md` aligned as the compact summary of active ticket files
- do not write tooling noise, sync status, or generic chat chatter into project memory
- if a fact is ambiguous, skip it rather than asking the user what to do

View File

@@ -22,11 +22,11 @@ Read:
@core/integrations/memory-vault-model.md
@agent-memory/workflows/workspace-architecture.md
@project-knowledge/09-templates/work-item.md
@project-knowledge/09-templates/person.md
@project-knowledge/09-templates/decision.md
@project-knowledge/09-templates/system.md
@project-knowledge/09-templates/workstream.md
@workspaces/fidelity/project-knowledge/09-templates/work-item.md
@workspaces/fidelity/project-knowledge/09-templates/person.md
@workspaces/fidelity/project-knowledge/09-templates/decision.md
@workspaces/fidelity/project-knowledge/09-templates/system.md
@workspaces/fidelity/project-knowledge/09-templates/workstream.md
Instructions:

View File

@@ -8,17 +8,17 @@ Read:
@core/README.md
@core/memory/operational-memory.md
@project-knowledge/01-current/current-work.md
@project-knowledge/01-current/work-items.md
@project-knowledge/03-context/project.md
@project-knowledge/03-context/systems/index.md
@project-knowledge/03-context/workstreams/index.md
@project-knowledge/03-context/workstreams/flow-page-references.md
@project-knowledge/03-context/process/index.md
@workspaces/fidelity/project-knowledge/01-current/current-work.md
@workspaces/fidelity/project-knowledge/01-current/work-items.md
@workspaces/fidelity/project-knowledge/03-context/project.md
@workspaces/fidelity/project-knowledge/03-context/systems/index.md
@workspaces/fidelity/project-knowledge/03-context/workstreams/index.md
@workspaces/fidelity/project-knowledge/03-context/workstreams/flow-page-references.md
@workspaces/fidelity/project-knowledge/03-context/process/index.md
Today's log, if present:
!`if [ -f project-knowledge/06-daily/$(date +%F).md ]; then cat project-knowledge/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
!`if [ -f workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md ]; then cat workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
Current Mattermost inbox, if present:
@@ -37,20 +37,20 @@ Instructions:
- Promote only confirmed project-relevant facts
- Ignore tooling noise and sync status
- Update the smallest correct set of files among:
- `project-knowledge/06-daily/$(date +%F).md`
- `project-knowledge/01-current/current-work.md`
- `project-knowledge/02-work-items/*.md`
- `project-knowledge/01-current/work-items.md`
- `project-knowledge/03-context/project.md`
- `project-knowledge/03-context/systems/*.md`
- `project-knowledge/03-context/workstreams/*.md`
- `project-knowledge/03-context/process/*.md`
- `project-knowledge/05-decisions/*.md`
- `workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md`
- `workspaces/fidelity/project-knowledge/01-current/current-work.md`
- `workspaces/fidelity/project-knowledge/02-work-items/*.md`
- `workspaces/fidelity/project-knowledge/01-current/work-items.md`
- `workspaces/fidelity/project-knowledge/03-context/project.md`
- `workspaces/fidelity/project-knowledge/03-context/systems/*.md`
- `workspaces/fidelity/project-knowledge/03-context/workstreams/*.md`
- `workspaces/fidelity/project-knowledge/03-context/process/*.md`
- `workspaces/fidelity/project-knowledge/05-decisions/*.md`
- `.opencode/commands/*.md` when command behavior needs to change
- `prompts/*.md` when a reusable output template needs to change
- `.opencode/agents/*.md` or `AGENTS.md` when default agent behavior needs to change
- `.agents/skills/*/SKILL.md` when a specialized workflow needs to change
- `project-knowledge/00-start/*.md` when durable project onboarding guidance needs to change
- `workspaces/fidelity/project-knowledge/00-start/*.md` when durable project onboarding guidance needs to change
- `agent-memory/**/*.md` when agent learning, promotion, verification, or self-maintenance behavior needs to change
- Prefer concrete project updates over broad summaries
- If a fact is still ambiguous, do not promote it

View File

@@ -27,14 +27,14 @@ Read:
@core/README.md
@core/memory/operational-memory.md
@core/integrations/communication-model.md
@project-knowledge/01-current/current-work.md
@project-knowledge/01-current/work-items.md
@project-knowledge/03-context/project.md
@project-knowledge/03-context/systems/index.md
@project-knowledge/03-context/workstreams/index.md
@project-knowledge/03-context/process/index.md
@project-knowledge/04-people/index.md
@project-knowledge/04-people/manager.md
@workspaces/fidelity/project-knowledge/01-current/current-work.md
@workspaces/fidelity/project-knowledge/01-current/work-items.md
@workspaces/fidelity/project-knowledge/03-context/project.md
@workspaces/fidelity/project-knowledge/03-context/systems/index.md
@workspaces/fidelity/project-knowledge/03-context/workstreams/index.md
@workspaces/fidelity/project-knowledge/03-context/process/index.md
@workspaces/fidelity/project-knowledge/04-people/index.md
@workspaces/fidelity/project-knowledge/04-people/manager.md
Imported summary, if present:
@@ -55,7 +55,7 @@ Instructions:
- durable role/person associations
- recurring architecture or debugging patterns
- past approvals or decisions that still matter
- create or update `project-knowledge/04-people/*.md` when the archive shows a human repeatedly contributing across channels, years, or high-signal technical/process discussions
- create or update `workspaces/fidelity/project-knowledge/04-people/*.md` when the archive shows a human repeatedly contributing across channels, years, or high-signal technical/process discussions
- store people conservatively:
- exact role only when explicitly supported by the archive
- otherwise store collaboration pattern, communication style, and project relationship
@@ -70,7 +70,7 @@ Instructions:
- avoid promoting outdated daily status unless it changes current understanding
- update existing memory when the archive clarifies or corrects it
- if historical facts are ambiguous or likely outdated, summarize them as archived context instead of promoting them
- write promoted memory to `project-knowledge/`
- write promoted memory to `workspaces/fidelity/project-knowledge/`
Return:

View File

@@ -66,16 +66,16 @@ PY`
Read:
@prompts/standup.md
@project-knowledge/01-current/current-work.md
@project-knowledge/01-current/work-items.md
@project-knowledge/03-context/project.md
@project-knowledge/03-context/workstreams/flow-page-references.md
@project-knowledge/03-context/process/communication.md
@project-knowledge/04-people/manager.md
@workspaces/fidelity/project-knowledge/01-current/current-work.md
@workspaces/fidelity/project-knowledge/01-current/work-items.md
@workspaces/fidelity/project-knowledge/03-context/project.md
@workspaces/fidelity/project-knowledge/03-context/workstreams/flow-page-references.md
@workspaces/fidelity/project-knowledge/03-context/process/communication.md
@workspaces/fidelity/project-knowledge/04-people/manager.md
Today's log, if present:
!`if [ -f project-knowledge/06-daily/$(date +%F).md ]; then cat project-knowledge/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
!`if [ -f workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md ]; then cat workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
Latest refreshed Mattermost context, if present:
@@ -87,13 +87,13 @@ Detailed active work item files, if available:
import re
from pathlib import Path
summary = Path("project-knowledge/01-current/work-items.md")
summary = Path("workspaces/fidelity/project-knowledge/01-current/work-items.md")
if not summary.is_file():
print("No work item files available.")
raise SystemExit(0)
text = summary.read_text()
paths = re.findall(r"Detail: `(project-knowledge/02-work-items/[^`]+)`", text)
paths = re.findall(r"Detail: `(workspaces/fidelity/project-knowledge/02-work-items/[^`]+)`", text)
if not paths:
print("No work item files available.")
raise SystemExit(0)
@@ -118,11 +118,11 @@ Before drafting:
- if documentation or root cause updates directly support a story, roll them into that story's update instead of listing them separately
- exclude items that are not directly tied to a story unless they are true blockers
- when one Jira item has multiple concrete updates, group them under one top-level `JIRA-ID - Title` bullet with indented markdown sub-bullets instead of repeating the same Jira line
- use `project-knowledge/03-context/workstreams/flow-page-references.md` to preserve real flow/page identifiers when shorthand appears in logs or messages
- use `workspaces/fidelity/project-knowledge/03-context/workstreams/flow-page-references.md` to preserve real flow/page identifiers when shorthand appears in logs or messages
- for standups that will also be sent to Teams, prefer plain language over internal implementation jargon; avoid unexplained terms like `fallback`
- if work is in release-process waiting state, show the parallel story work explicitly instead of implying idle waiting
- if Mattermost sync failed, acknowledge that internally and rely on the latest saved workspace context instead of inventing fresher communication
- prefer only the detailed work-item files referenced by `project-knowledge/01-current/work-items.md`; do not mine unrelated or completed ticket files unless they are explicitly active in current memory
- prefer only the detailed work-item files referenced by `workspaces/fidelity/project-knowledge/01-current/work-items.md`; do not mine unrelated or completed ticket files unless they are explicitly active in current memory
Return a standup that is:

View File

@@ -21,18 +21,18 @@ Read:
@core/README.md
@core/memory/operational-memory.md
@prompts/story-draft.md
@project-knowledge/01-current/current-work.md
@project-knowledge/01-current/work-items.md
@project-knowledge/03-context/project.md
@project-knowledge/03-context/workstreams/index.md
@project-knowledge/03-context/process/communication.md
@project-knowledge/03-context/process/jira-story-rules.md
@project-knowledge/04-people/manager.md
@project-knowledge/04-people/index.md
@workspaces/fidelity/project-knowledge/01-current/current-work.md
@workspaces/fidelity/project-knowledge/01-current/work-items.md
@workspaces/fidelity/project-knowledge/03-context/project.md
@workspaces/fidelity/project-knowledge/03-context/workstreams/index.md
@workspaces/fidelity/project-knowledge/03-context/process/communication.md
@workspaces/fidelity/project-knowledge/03-context/process/jira-story-rules.md
@workspaces/fidelity/project-knowledge/04-people/manager.md
@workspaces/fidelity/project-knowledge/04-people/index.md
Today's log, if present:
!`if [ -f project-knowledge/06-daily/$(date +%F).md ]; then cat project-knowledge/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
!`if [ -f workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md ]; then cat workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
Latest Mattermost context, if available:
@@ -44,13 +44,13 @@ Detailed active work item files, if available:
import re
from pathlib import Path
summary = Path("project-knowledge/01-current/work-items.md")
summary = Path("workspaces/fidelity/project-knowledge/01-current/work-items.md")
if not summary.is_file():
print("No work item files available.")
raise SystemExit(0)
text = summary.read_text()
paths = re.findall(r"Detail: `(project-knowledge/02-work-items/[^`]+)`", text)
paths = re.findall(r"Detail: `(workspaces/fidelity/project-knowledge/02-work-items/[^`]+)`", text)
if not paths:
print("No work item files available.")
raise SystemExit(0)

View File

@@ -6,14 +6,14 @@ Answer the user's Swift/iOS programming question using current iOS practices and
Read:
@project-knowledge/03-context/ios/index.md
@project-knowledge/03-context/ios/current-practices.md
@project-knowledge/03-context/ios/project-swift-guidance.md
@workspaces/fidelity/project-knowledge/03-context/ios/index.md
@workspaces/fidelity/project-knowledge/03-context/ios/current-practices.md
@workspaces/fidelity/project-knowledge/03-context/ios/project-swift-guidance.md
@agent-memory/integrations/technical-verification.md
@project-knowledge/03-context/project.md
@project-knowledge/03-context/systems/index.md
@project-knowledge/03-context/workstreams/index.md
@project-knowledge/01-current/work-items.md
@workspaces/fidelity/project-knowledge/03-context/project.md
@workspaces/fidelity/project-knowledge/03-context/systems/index.md
@workspaces/fidelity/project-knowledge/03-context/workstreams/index.md
@workspaces/fidelity/project-knowledge/01-current/work-items.md
User question:

View File

@@ -7,20 +7,20 @@ Use this command when new information should become part of the persistent works
Read:
@README.md
@project-knowledge/00-start/start-here.md
@project-knowledge/01-current/current-work.md
@project-knowledge/01-current/work-items.md
@project-knowledge/03-context/project.md
@project-knowledge/03-context/systems/index.md
@project-knowledge/03-context/workstreams/index.md
@project-knowledge/03-context/workstreams/flow-page-references.md
@workspaces/fidelity/project-knowledge/00-start/start-here.md
@workspaces/fidelity/project-knowledge/01-current/current-work.md
@workspaces/fidelity/project-knowledge/01-current/work-items.md
@workspaces/fidelity/project-knowledge/03-context/project.md
@workspaces/fidelity/project-knowledge/03-context/systems/index.md
@workspaces/fidelity/project-knowledge/03-context/workstreams/index.md
@workspaces/fidelity/project-knowledge/03-context/workstreams/flow-page-references.md
@agent-memory/memory/context-maintenance.md
@project-knowledge/04-people/manager.md
@project-knowledge/04-people/index.md
@workspaces/fidelity/project-knowledge/04-people/manager.md
@workspaces/fidelity/project-knowledge/04-people/index.md
Today's existing log, if present:
!`if [ -f project-knowledge/06-daily/$(date +%F).md ]; then cat project-knowledge/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
!`if [ -f workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md ]; then cat workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
New information to incorporate:
@@ -31,21 +31,21 @@ Instructions:
- use `workspace-memory-curation` when available
- Treat direct user corrections and learning-session updates as memory sources.
- For learning-session updates, prefer durable project understanding over transient ticket status.
- Route durable learning to architecture/process/system/workstream notes; route only truly current operational state to `project-knowledge/01-current/` or `project-knowledge/06-daily/`.
- Route durable learning to architecture/process/system/workstream notes; route only truly current operational state to `workspaces/fidelity/project-knowledge/01-current/` or `workspaces/fidelity/project-knowledge/06-daily/`.
- If the new information corrects the agent's uncertainty handling or recurring behavior, update the command, prompt, agent, skill, or process rule that controls that behavior.
- Decide whether the new information belongs in:
- today's daily note: `project-knowledge/06-daily/$(date +%F).md`
- current work: `project-knowledge/01-current/current-work.md`
- work items: `project-knowledge/02-work-items/*.md`
- active work summary: `project-knowledge/01-current/work-items.md`
- project overview: `project-knowledge/03-context/project.md`
- systems: `project-knowledge/03-context/systems/`
- workstreams: `project-knowledge/03-context/workstreams/`
- process: `project-knowledge/03-context/process/`
- manager mapping: `project-knowledge/04-people/manager.md`
- people roster: `project-knowledge/04-people/index.md`
- people notes: `project-knowledge/04-people/*.md`
- decisions: `project-knowledge/05-decisions/`
- today's daily note: `workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md`
- current work: `workspaces/fidelity/project-knowledge/01-current/current-work.md`
- work items: `workspaces/fidelity/project-knowledge/02-work-items/*.md`
- active work summary: `workspaces/fidelity/project-knowledge/01-current/work-items.md`
- project overview: `workspaces/fidelity/project-knowledge/03-context/project.md`
- systems: `workspaces/fidelity/project-knowledge/03-context/systems/`
- workstreams: `workspaces/fidelity/project-knowledge/03-context/workstreams/`
- process: `workspaces/fidelity/project-knowledge/03-context/process/`
- manager mapping: `workspaces/fidelity/project-knowledge/04-people/manager.md`
- people roster: `workspaces/fidelity/project-knowledge/04-people/index.md`
- people notes: `workspaces/fidelity/project-knowledge/04-people/*.md`
- decisions: `workspaces/fidelity/project-knowledge/05-decisions/`
- `.agents/workflows/*.md`
- `.agents/rules/*.md`
- `prompts/*.md`

View File

@@ -16,14 +16,14 @@ $ARGUMENTS
Read:
@prompts/mattermost-translation.md
@project-knowledge/03-context/project.md
@project-knowledge/03-context/process/communication.md
@project-knowledge/04-people/manager.md
@project-knowledge/04-people/index.md
@workspaces/fidelity/project-knowledge/03-context/project.md
@workspaces/fidelity/project-knowledge/03-context/process/communication.md
@workspaces/fidelity/project-knowledge/04-people/manager.md
@workspaces/fidelity/project-knowledge/04-people/index.md
If relevant, use today's log for context:
!`if [ -f project-knowledge/06-daily/$(date +%F).md ]; then cat project-knowledge/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
!`if [ -f workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md ]; then cat workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
Return:

View File

@@ -14,14 +14,14 @@ Read core:
Read active workspace memory:
@project-knowledge/00-start/start-here.md
@project-knowledge/01-current/current-work.md
@project-knowledge/01-current/work-items.md
@project-knowledge/03-context/project.md
@project-knowledge/03-context/process/communication.md
@project-knowledge/03-context/ios/index.md
@project-knowledge/04-people/manager.md
@project-knowledge/04-people/index.md
@workspaces/fidelity/project-knowledge/00-start/start-here.md
@workspaces/fidelity/project-knowledge/01-current/current-work.md
@workspaces/fidelity/project-knowledge/01-current/work-items.md
@workspaces/fidelity/project-knowledge/03-context/project.md
@workspaces/fidelity/project-knowledge/03-context/process/communication.md
@workspaces/fidelity/project-knowledge/03-context/ios/index.md
@workspaces/fidelity/project-knowledge/04-people/manager.md
@workspaces/fidelity/project-knowledge/04-people/index.md
Read active profile, preferring the configured profile and falling back to Fidelity:
@@ -33,11 +33,11 @@ Today's date:
Today's canonical daily note, if present:
!`if [ -f project-knowledge/06-daily/$(date +%F).md ]; then cat project-knowledge/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
!`if [ -f workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md ]; then cat workspaces/fidelity/project-knowledge/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
Latest daily notes available:
!`if [ -d project-knowledge/06-daily ]; then ls -1 project-knowledge/06-daily 2>/dev/null | sort | tail -n 3; else echo "No daily notes directory available."; fi`
!`if [ -d workspaces/fidelity/project-knowledge/06-daily ]; then ls -1 workspaces/fidelity/project-knowledge/06-daily 2>/dev/null | sort | tail -n 3; else echo "No daily notes directory available."; fi`
Detailed active work item files, if available:
@@ -45,13 +45,13 @@ Detailed active work item files, if available:
import re
from pathlib import Path
summary = Path("project-knowledge/01-current/work-items.md")
summary = Path("workspaces/fidelity/project-knowledge/01-current/work-items.md")
if not summary.is_file():
print("No work item files available.")
raise SystemExit(0)
text = summary.read_text()
paths = re.findall(r"Detail: `(project-knowledge/02-work-items/[^`]+)`", text)
paths = re.findall(r"Detail: `(workspaces/fidelity/project-knowledge/02-work-items/[^`]+)`", text)
if not paths:
print("No work item files available.")
raise SystemExit(0)

30
.gitignore vendored
View File

@@ -8,13 +8,13 @@ __pycache__/
.venv/
# Mattermost raw inbox artifacts
ai/inbox/mattermost-latest.md
ai/inbox/mattermost-*.md
ai/inbox/mattermost-status.json
ai/inbox/mattermost-mirror/*
!ai/inbox/mattermost-mirror/.gitkeep
ai/inbox/photos/*
!ai/inbox/photos/.gitkeep
workspaces/*/inbox/mattermost-latest.md
workspaces/*/inbox/mattermost-*.md
workspaces/*/inbox/mattermost-status.json
workspaces/*/inbox/mattermost-mirror/*
!workspaces/*/inbox/mattermost-mirror/.gitkeep
workspaces/*/inbox/photos/*
!workspaces/*/inbox/photos/.gitkeep
# Local build artifact for the iPhone photo inbox pasteboard helper
scripts/iphone-photo-inbox/.env
@@ -29,14 +29,14 @@ scripts/mattermost-proxy/.env
# Obsidian local runtime state
/.obsidian/
project-knowledge/.obsidian/workspace*.json
project-knowledge/.obsidian/workspace-mobile*.json
project-knowledge/.obsidian/graph.json
project-knowledge/.obsidian/hotkeys.json
project-knowledge/.obsidian/community-plugins.json
project-knowledge/.obsidian/plugins/
project-knowledge/.obsidian/snippets/
project-knowledge/.obsidian/cache/
workspaces/*/project-knowledge/.obsidian/workspace*.json
workspaces/*/project-knowledge/.obsidian/workspace-mobile*.json
workspaces/*/project-knowledge/.obsidian/graph.json
workspaces/*/project-knowledge/.obsidian/hotkeys.json
workspaces/*/project-knowledge/.obsidian/community-plugins.json
workspaces/*/project-knowledge/.obsidian/plugins/
workspaces/*/project-knowledge/.obsidian/snippets/
workspaces/*/project-knowledge/.obsidian/cache/
.trash/
# Antigravity CLI local workspace configuration

View File

@@ -12,14 +12,14 @@ Behavior rules:
- Treat `core/` as the reusable project-independent operating model.
- Treat `profiles/fidelity/profile.md` as the active Fidelity project profile.
- Treat `project-knowledge/` as the canonical clean project knowledge base for humans and AI.
- Treat `workspaces/fidelity/project-knowledge/` as the canonical clean project knowledge base for humans and AI.
- Treat `agent-memory/` as the operating memory for agent behavior, learning, promotion, verification, and self-maintenance rules.
- Treat `scripts/memory/` as the project-agnostic access layer for note creation, project-knowledge search, Base queries, and health checks.
- Treat `scripts/obsidian/` as the current Obsidian adapter. Do not couple durable memory rules to Obsidian-specific behavior.
- Treat `ai/inbox/` and generated connector files as raw evidence only, not promoted memory.
- For Mattermost context, prefer the local proxy mirror in `ai/inbox/mattermost-mirror/` when present. Use `scripts/mattermost-proxy/read-context.py` or the mirror views (`latest.*`, `by-date/`, `channels/`, `threads/`) before falling back to legacy `ai/inbox/mattermost-latest.md` or `scripts/mattermost/generated/` artifacts.
- Keep Obsidian Bases clean: do not let templates in `project-knowledge/09-templates/` appear as real daily notes, work items, people, decisions, systems, or workstreams.
- Role mapping notes such as `project-knowledge/04-people/manager.md` are `type: role-map`; actual people profiles are `type: person`.
- Treat `workspaces/fidelity/inbox/` and generated connector files as raw evidence only, not promoted memory.
- For Mattermost context, prefer the local proxy mirror in `workspaces/fidelity/inbox/mattermost-mirror/` when present. Use `scripts/mattermost-proxy/read-context.py` or the mirror views (`latest.*`, `by-date/`, `channels/`, `threads/`) before falling back to legacy `workspaces/fidelity/inbox/mattermost-latest.md` or `scripts/mattermost/generated/` artifacts.
- Keep Obsidian Bases clean: do not let templates in `workspaces/fidelity/project-knowledge/09-templates/` appear as real daily notes, work items, people, decisions, systems, or workstreams.
- Role mapping notes such as `workspaces/fidelity/project-knowledge/04-people/manager.md` are `type: role-map`; actual people profiles are `type: person`.
- When editing canonical project notes, update useful metadata at the same time: `updated`, `systems`, `workstreams`, `people`, `related`, `focus`, `work-items`, and `blockers` when applicable.
- When creating a new typed note, prefer `bash scripts/memory/memory.sh create <type> <slug> [title]`, then inspect and refine the generated Markdown.
- When checking project knowledge quality, use `bash scripts/memory/memory.sh health` and direct file inspection.
@@ -39,21 +39,21 @@ Behavior rules:
- When the user corrects how the workspace should behave, update the linked operational surface too: commands in `.opencode/commands/`, prompt templates in `prompts/`, agent rules in `AGENTS.md` or `.opencode/agents/`, skills in `.agents/skills/`, and agent operating rules in `agent-memory/` when those files control the behavior.
- If existing context is stale, correct it directly instead of leaving conflicting versions.
- Promote information carefully:
- daily facts go to `project-knowledge/06-daily/YYYY-MM-DD.md`
- current priorities go to `project-knowledge/01-current/current-work.md`
- active Jira-linked work goes to `project-knowledge/02-work-items/*.md`
- the active-work summary goes to `project-knowledge/01-current/work-items.md`
- durable project knowledge overview goes to `project-knowledge/03-context/project.md`
- system-specific durable knowledge goes to `project-knowledge/03-context/systems/`
- workstream-specific durable knowledge goes to `project-knowledge/03-context/workstreams/`
- project-facing process knowledge goes to `project-knowledge/03-context/process/`
- confirmed team or manager communication preferences go to `project-knowledge/04-people/manager.md`
- role-to-person mapping and recurring stakeholders go to `project-knowledge/04-people/`
- confirmed decisions go to `project-knowledge/05-decisions/`
- daily facts go to `workspaces/fidelity/project-knowledge/06-daily/YYYY-MM-DD.md`
- current priorities go to `workspaces/fidelity/project-knowledge/01-current/current-work.md`
- active Jira-linked work goes to `workspaces/fidelity/project-knowledge/02-work-items/*.md`
- the active-work summary goes to `workspaces/fidelity/project-knowledge/01-current/work-items.md`
- durable project knowledge overview goes to `workspaces/fidelity/project-knowledge/03-context/project.md`
- system-specific durable knowledge goes to `workspaces/fidelity/project-knowledge/03-context/systems/`
- workstream-specific durable knowledge goes to `workspaces/fidelity/project-knowledge/03-context/workstreams/`
- project-facing process knowledge goes to `workspaces/fidelity/project-knowledge/03-context/process/`
- confirmed team or manager communication preferences go to `workspaces/fidelity/project-knowledge/04-people/manager.md`
- role-to-person mapping and recurring stakeholders go to `workspaces/fidelity/project-knowledge/04-people/`
- confirmed decisions go to `workspaces/fidelity/project-knowledge/05-decisions/`
- behavioral rules for how this workspace should respond go to the exact command, prompt, agent, skill, or `agent-memory/` file that enforces that behavior
- Use generic `AIW_*` integration variables for new tooling and keep `FIDELITY_*` only as Fidelity-profile aliases.
- Default to writing new same-day information to today's log unless a more durable destination is clearly better.
- Write canonical memory to `project-knowledge/`.
- Write canonical memory to `workspaces/fidelity/project-knowledge/`.
- Update preexisting memory when a new prompt clarifies or corrects something already stored.
- Do not wait for a dedicated sync command if the correct memory update is already obvious.
- For analysis, drafting, review, or translation prompts, answer first and persist second unless saving the fact is required to produce the answer safely.
@@ -63,7 +63,7 @@ Behavior rules:
- If the memory interface or Obsidian adapter fails, continue with direct Markdown operations when safe and do not promote the failure as project memory.
- Do not over-promote uncertain information. Keep uncertain items in the daily log.
- When drafting communication, preserve technical meaning and improve clarity in natural US English.
- When answering Swift/iOS programming questions, use the project-local iOS skills and `project-knowledge/03-context/ios/`.
- When answering Swift/iOS programming questions, use the project-local iOS skills and `workspaces/fidelity/project-knowledge/03-context/ios/`.
- When answering programming, dependency-management, package-manager, CI/build, testing, or architecture-practice questions, verify with primary/current documentation when the topic may be outdated, disputed, version-sensitive, or project-critical.
- For CocoaPods, podspecs, private spec repos, trunk/CDN behavior, SPM, Xcode, Swift, and Apple frameworks, do not rely only on model memory before giving strong advice.
- When generating prompts for GitHub Copilot or another AI, use `agent-memory/workflows/ai-to-ai-prompting.md` and the `copilot-prompt-engineering` skill.

View File

@@ -12,12 +12,12 @@ Behavior rules:
- Load `core/` first for project-independent operating rules.
- Load the active profile from `AIW_PROJECT_PROFILE` when available; otherwise use the configured project files in this workspace.
- Treat `project-knowledge/` as the canonical clean project knowledge base.
- Treat `workspaces/fidelity/project-knowledge/` as the canonical clean project knowledge base.
- Treat `agent-memory/` as the operating memory for agent behavior, learning, promotion, verification, and self-maintenance rules.
- Treat `scripts/memory/` as the stable memory access layer.
- Treat tool-specific integrations such as Obsidian as replaceable adapters.
- Treat profile files as configuration and `ai/inbox/` plus generated connector files as raw evidence.
- For live communication context, prefer project-local mirror evidence under `ai/inbox/*-mirror/` through its reader script when available, then fall back to legacy inbox/generated connector artifacts.
- Treat profile files as configuration and `workspaces/fidelity/inbox/` plus generated connector files as raw evidence.
- For live communication context, prefer project-local mirror evidence under `workspaces/fidelity/inbox/*-mirror/` through its reader script when available, then fall back to legacy inbox/generated connector artifacts.
- Keep Obsidian Bases clean by excluding templates and typing role maps separately from people.
- When updating canonical project notes, maintain relationship metadata and `updated` fields so project knowledge remains useful to both humans and agents.
- Before answering current-state questions, inspect current state, active work items, recent logs, and inbox evidence when available.
@@ -39,11 +39,11 @@ Behavior rules:
Memory destinations:
- daily facts -> `project-knowledge/06-daily/YYYY-MM-DD.md`
- current priorities -> `project-knowledge/01-current/current-work.md`
- active work items -> `project-knowledge/02-work-items/*.md`
- active-work summary -> `project-knowledge/01-current/work-items.md`
- durable project knowledge -> `project-knowledge/03-context/`
- people and roles -> `project-knowledge/04-people/`
- confirmed decisions -> `project-knowledge/05-decisions/`
- daily facts -> `workspaces/fidelity/project-knowledge/06-daily/YYYY-MM-DD.md`
- current priorities -> `workspaces/fidelity/project-knowledge/01-current/current-work.md`
- active work items -> `workspaces/fidelity/project-knowledge/02-work-items/*.md`
- active-work summary -> `workspaces/fidelity/project-knowledge/01-current/work-items.md`
- durable project knowledge -> `workspaces/fidelity/project-knowledge/03-context/`
- people and roles -> `workspaces/fidelity/project-knowledge/04-people/`
- confirmed decisions -> `workspaces/fidelity/project-knowledge/05-decisions/`
- reusable behavior -> `.opencode/commands/`, `prompts/`, `.opencode/agents/`, `.agents/skills/`, `agent-memory/`, `core/`, or `scripts/`

View File

@@ -43,6 +43,21 @@ async function resolveSyncContent(directory, stdoutText) {
return (generated || "").trim()
}
async function resolveProfileInbox(directory) {
const profile = process.env.AIW_PROJECT_PROFILE?.trim() || "fidelity"
const configured = process.env.AIW_PROJECT_INBOX_DIR?.trim()
if (configured) return path.isAbsolute(configured) ? configured : path.join(directory, configured)
const workspaceConfigPath = path.join(directory, "profiles", profile, "workspace.json")
try {
const config = JSON.parse(await readFile(workspaceConfigPath, "utf8"))
const inboxDir = config?.inbox_dir || `workspaces/${profile}/inbox`
return path.isAbsolute(inboxDir) ? inboxDir : path.join(directory, inboxDir)
} catch {
return path.join(directory, "workspaces", profile, "inbox")
}
}
function extractPromptText(event) {
const candidates = [
event?.properties?.text,
@@ -144,7 +159,7 @@ export const MattermostInbox = async ({ $, directory, client }) => {
lastSyncAt = now
const syncStartedAt = Date.now()
const inboxDir = path.join(directory, "ai/inbox")
const inboxDir = await resolveProfileInbox(directory)
const latestPath = path.join(inboxDir, "mattermost-latest.md")
const statusPath = path.join(inboxDir, "mattermost-status.json")

View File

@@ -19,15 +19,15 @@ Keep the always-loaded context small. The hot set is:
- `agent-memory/memory/promotion-rules.md`
- `agent-memory/integrations/technical-verification.md`
- `agent-memory/workflows/ai-to-ai-prompting.md`
- `project-knowledge/00-start/start-here.md`
- `project-knowledge/01-current/current-work.md`
- `project-knowledge/01-current/work-items.md`
- `project-knowledge/03-context/project.md`
- `project-knowledge/03-context/process/communication.md`
- `project-knowledge/03-context/ios/index.md`
- `project-knowledge/03-context/ios/project-swift-guidance.md`
- `project-knowledge/04-people/manager.md`
- `project-knowledge/04-people/index.md`
- `workspaces/fidelity/project-knowledge/00-start/start-here.md`
- `workspaces/fidelity/project-knowledge/01-current/current-work.md`
- `workspaces/fidelity/project-knowledge/01-current/work-items.md`
- `workspaces/fidelity/project-knowledge/03-context/project.md`
- `workspaces/fidelity/project-knowledge/03-context/process/communication.md`
- `workspaces/fidelity/project-knowledge/03-context/ios/index.md`
- `workspaces/fidelity/project-knowledge/03-context/ios/project-swift-guidance.md`
- `workspaces/fidelity/project-knowledge/04-people/manager.md`
- `workspaces/fidelity/project-knowledge/04-people/index.md`
Load everything else lazily when the task actually needs it.
@@ -36,14 +36,14 @@ Do not preemptively load broad context sets, all work-item files, or all process
## Required Behavior
- Assume the workspace may contain stale context until checked.
- Treat `project-knowledge/` as the canonical clean project memory for humans and AI. Treat `agent-memory/` as agent operating memory. Treat `ai/inbox/` as raw evidence only.
- Treat `workspaces/fidelity/project-knowledge/` as the canonical clean project memory for humans and AI. Treat `agent-memory/` as agent operating memory. Treat `workspaces/fidelity/inbox/` as raw evidence only.
- Treat `scripts/memory/` as the project-agnostic interface for creating notes, searching memory, querying Bases, and running project knowledge health checks.
- Treat `scripts/obsidian/` as the current Obsidian adapter, not as the core memory abstraction.
- Keep Obsidian Bases clean: templates in `project-knowledge/09-templates/` must not be treated as real notes, and role mapping files such as `project-knowledge/04-people/manager.md` must not be typed as people.
- Keep Obsidian Bases clean: templates in `workspaces/fidelity/project-knowledge/09-templates/` must not be treated as real notes, and role mapping files such as `workspaces/fidelity/project-knowledge/04-people/manager.md` must not be typed as people.
- Maintain useful project-note properties when editing canonical notes, especially work-item relationships (`systems`, `workstreams`, `people`, `related`) and daily note fields (`focus`, `work-items`, `blockers`).
- Before answering questions that depend on current work state, inspect `project-knowledge/01-current/current-work.md` and the latest relevant daily note under `project-knowledge/06-daily/`.
- Before answering questions that depend on current work state, inspect `workspaces/fidelity/project-knowledge/01-current/current-work.md` and the latest relevant daily note under `workspaces/fidelity/project-knowledge/06-daily/`.
- Prefer lazy loading over eager loading. Pull in only the smallest relevant files for the active task.
- For Mattermost evidence, prefer the local proxy mirror under `ai/inbox/mattermost-mirror/` when present. Use `scripts/mattermost-proxy/read-context.py` or mirror views (`latest.*`, `by-date/`, `channels/`, `threads/`) before falling back to legacy `ai/inbox/mattermost-latest.md` or `scripts/mattermost/generated/` artifacts.
- For Mattermost evidence, prefer the local proxy mirror under `workspaces/fidelity/inbox/mattermost-mirror/` when present. Use `scripts/mattermost-proxy/read-context.py` or mirror views (`latest.*`, `by-date/`, `channels/`, `threads/`) before falling back to legacy `workspaces/fidelity/inbox/mattermost-latest.md` or `scripts/mattermost/generated/` artifacts.
- If the user asks for the latest/last/recent Mattermost message, the latest message from Jeff/current manager, or what someone just said, use the explicit latest-message flow and answer from the freshest refreshed evidence; the proxy mirror is primary when available.
- If automatic refresh is uncertain and the proxy mirror is not available, run the Mattermost sync command, then answer from the refreshed inbox only.
- Treat latest-message flows as read-first. Report memory update candidates, but do not edit canonical memory from that command unless the user explicitly asks to promote the fact.
@@ -60,12 +60,12 @@ Do not preemptively load broad context sets, all work-item files, or all process
- Treat sync failures as operational errors, not project context.
- If a patch or edit verification fails while making a non-essential memory update, stop retrying and return the user-facing answer with the failed target noted.
- `mattermost-sync` should automatically promote high-confidence project facts without asking what to promote.
- Prefer `project-knowledge/06-daily/` as the default destination for new Mattermost-derived facts.
- Promote to `project-knowledge/01-current/current-work.md` only when the fact materially changes active work over the next few days.
- Keep explicit Jira IDs and approved titles visible in `project-knowledge/02-work-items/` and summarize active items in `project-knowledge/01-current/work-items.md` when they are useful for future standups or manager updates.
- Promote to `project-knowledge/03-context/project.md` only when the fact changes durable project understanding.
- When a repeatedly mentioned person becomes relevant to project flow, create or update a file under `project-knowledge/04-people/`.
- Keep role-to-person mapping explicit in `project-knowledge/04-people/manager.md` and the roster in `project-knowledge/04-people/index.md`.
- Prefer `workspaces/fidelity/project-knowledge/06-daily/` as the default destination for new Mattermost-derived facts.
- Promote to `workspaces/fidelity/project-knowledge/01-current/current-work.md` only when the fact materially changes active work over the next few days.
- Keep explicit Jira IDs and approved titles visible in `workspaces/fidelity/project-knowledge/02-work-items/` and summarize active items in `workspaces/fidelity/project-knowledge/01-current/work-items.md` when they are useful for future standups or manager updates.
- Promote to `workspaces/fidelity/project-knowledge/03-context/project.md` only when the fact changes durable project understanding.
- When a repeatedly mentioned person becomes relevant to project flow, create or update a file under `workspaces/fidelity/project-knowledge/04-people/`.
- Keep role-to-person mapping explicit in `workspaces/fidelity/project-knowledge/04-people/manager.md` and the roster in `workspaces/fidelity/project-knowledge/04-people/index.md`.
- Never promote tooling chatter, sync status, or generic conversation noise.
- Direct user prompts are also memory sources. Do not limit memory updates to explicit sync commands.
- If a new prompt corrects prior understanding, update the canonical file directly instead of keeping both versions alive.
@@ -77,8 +77,8 @@ Do not preemptively load broad context sets, all work-item files, or all process
- If a previous context file is now stale or inaccurate, update that file directly.
- Prefer correcting canonical context over appending contradictory notes.
- Keep changes concise and auditable.
- When the topic is architectural or historical, prefer updating the relevant file under `project-knowledge/03-context/systems/`, `project-knowledge/03-context/workstreams/`, or project-facing `project-knowledge/03-context/process/` instead of overloading `project-knowledge/03-context/project.md`.
- When the user asks Swift, SwiftUI, iOS architecture, testing, or debugging questions, use `project-knowledge/03-context/ios/` and the local OpenCode iOS skills before answering.
- When the topic is architectural or historical, prefer updating the relevant file under `workspaces/fidelity/project-knowledge/03-context/systems/`, `workspaces/fidelity/project-knowledge/03-context/workstreams/`, or project-facing `workspaces/fidelity/project-knowledge/03-context/process/` instead of overloading `workspaces/fidelity/project-knowledge/03-context/project.md`.
- When the user asks Swift, SwiftUI, iOS architecture, testing, or debugging questions, use `workspaces/fidelity/project-knowledge/03-context/ios/` and the local OpenCode iOS skills before answering.
- When the user asks about programming concepts, dependency tooling, package managers, CI/build tooling, testing frameworks, or practices that may be outdated or opinion-sensitive, verify against primary/current documentation before making strong claims.
- For CocoaPods, podspecs, private specs repos, trunk/CDN behavior, Swift Package Manager, Xcode, Swift, Apple frameworks, and similar project-linked tooling, do not rely only on memory.
- When the user asks for a prompt for another AI, GitHub Copilot, or the Fidelity development machine, use `agent-memory/workflows/ai-to-ai-prompting.md` and generate a self-contained prompt.

View File

@@ -7,9 +7,9 @@ Shared rules and context already live in the normal workspace files. Do not dupl
Read these first:
@./AGENTS.md
@./project-knowledge/00-start/start-here.md
@./project-knowledge/01-current/current-work.md
@./project-knowledge/01-current/work-items.md
@./workspaces/fidelity/project-knowledge/00-start/start-here.md
@./workspaces/fidelity/project-knowledge/01-current/current-work.md
@./workspaces/fidelity/project-knowledge/01-current/work-items.md
## Tool Surface
@@ -17,7 +17,7 @@ Read these first:
- `.agents/` is the canonical shared cross-platform surface for workflows and reusable rule/skill content.
- `.opencode/` is the OpenCode compatibility/runtime surface.
- `.agent/` is an alias for tools that expect the singular directory naming.
- `project-knowledge/` is canonical project memory.
- `workspaces/fidelity/project-knowledge/` is canonical project memory.
- `agent-memory/` is agent operating memory.
## Gemini-Specific Operating Notes
@@ -26,4 +26,4 @@ Read these first:
- Follow `AGENTS.md` as the shared source of truth for answer-first behavior, memory promotion, and lazy loading.
- For analysis, review, translation, or drafting prompts, answer first and persist second unless saving the fact is clearly required to produce a safe answer.
- Do not create new canonical notes in the critical path of a simple answer unless the user explicitly asked to save the information or the destination is obvious and non-blocking.
- When memory should be updated, prefer the smallest correct change to `project-knowledge/` and avoid duplicating stale and corrected versions.
- When memory should be updated, prefer the smallest correct change to `workspaces/fidelity/project-knowledge/` and avoid duplicating stale and corrected versions.

View File

@@ -48,9 +48,9 @@ Markdown project knowledge is canonical. Inboxes, indexes, chat memory, and clou
| `docs/` | Simple project-independent documentation for developers adopting the workspace |
| `core/` | Reusable operating model and architecture notes |
| `profiles/` | Project-specific configuration and assumptions |
| `project-knowledge/` | Current canonical Markdown vault for the active Fidelity profile; future profiles should use explicit profile paths |
| `workspaces/<profile>/project-knowledge/` | Profile-owned canonical Markdown vault |
| `agent-memory/` | Agent behavior, promotion, verification, and workflow memory |
| `ai/inbox/` | Raw evidence before promotion into canonical memory |
| `workspaces/<profile>/inbox/` | Profile-owned raw evidence before promotion into canonical memory |
| `scripts/aiw/` | Service manager and local indexer |
| `scripts/mcp/` | MCP servers exposing bounded local context |
| `scripts/memory/` | Project-agnostic interface for canonical memory operations |
@@ -102,7 +102,7 @@ Start here:
Profile-specific project knowledge starts at:
- `project-knowledge/00-start/start-here.md` for the current Fidelity vault
- `workspaces/fidelity/project-knowledge/00-start/start-here.md` for the current Fidelity vault
- `profiles/fidelity/profile.md` for the Fidelity profile declaration
- `profiles/example/profile.md` for a sanitized reusable profile example
@@ -117,14 +117,14 @@ profiles/fidelity/
profiles/example/
```
The current Fidelity profile still uses root-level `project-knowledge/` and `ai/inbox/` for compatibility. The target reusable shape is to resolve memory and inbox paths from profile configuration so future projects can keep isolated data under profile/workspace-specific directories.
Each profile resolves memory and inbox paths from `profiles/<profile>/workspace.json`. Fidelity data now lives under `workspaces/fidelity/`.
## Memory Model
The workspace separates memory by responsibility:
- `project-knowledge/`: canonical project facts for humans and AI;
- `ai/inbox/`: raw evidence;
- `workspaces/<profile>/project-knowledge/`: canonical project facts for humans and AI;
- `workspaces/<profile>/inbox/`: raw evidence;
- `agent-memory/`: rules for how agents behave;
- `.aiw/indexes/`: derived local search indexes;
- external systems such as mem9: optional agent recall, not project truth.

View File

@@ -11,7 +11,7 @@ tags:
This folder contains the operating memory for the AI agent.
It is not Fidelity project documentation. Do not transfer this folder as project knowledge for a new engineer. Transfer `project-knowledge/` for the project second brain, and use this folder to explain how the agent should maintain that knowledge.
It is not Fidelity project documentation. Do not transfer this folder as project knowledge for a new engineer. Transfer `workspaces/fidelity/project-knowledge/` for the project second brain, and use this folder to explain how the agent should maintain that knowledge.
---
@@ -28,8 +28,8 @@ It is not Fidelity project documentation. Do not transfer this folder as project
## Relationship To Project Knowledge
- `project-knowledge/` is the clean Obsidian vault and project second brain.
- `workspaces/fidelity/project-knowledge/` is the clean Obsidian vault and project second brain.
- `agent-memory/` is the agent operating manual.
- `ai/inbox/` and connector `generated/` folders are evidence, not canonical memory.
- `workspaces/fidelity/inbox/` and connector `generated/` folders are evidence, not canonical memory.
- `scripts/memory/` is the project-agnostic interface for reading, searching, creating, querying, and validating project knowledge.
- `scripts/obsidian/` is the current Obsidian adapter and must not become the core abstraction.

View File

@@ -27,10 +27,10 @@ This applies to:
- debugging discussions
- corrections to previous understanding
The agent must not wait for a separate promotion command. The agent should proactively update `project-knowledge/` (including 01-current, 02-work-items, 03-context, 04-people, 06-daily) within the same conversational turn when new information is clear, durable, and the destination is obvious.
The agent must not wait for a separate promotion command. The agent should proactively update `workspaces/fidelity/project-knowledge/` (including 01-current, 02-work-items, 03-context, 04-people, 06-daily) within the same conversational turn when new information is clear, durable, and the destination is obvious.
- When editing `project-knowledge/`, write as a human engineer maintaining shared project documentation.
- Keep agent-operating logic out of `project-knowledge/`; store that logic in prompts, commands, skills, agents, or `agent-memory/`.
- When editing `workspaces/fidelity/project-knowledge/`, write as a human engineer maintaining shared project documentation.
- Keep agent-operating logic out of `workspaces/fidelity/project-knowledge/`; store that logic in prompts, commands, skills, agents, or `agent-memory/`.
- Answer-first rule: when the user's main goal is analysis, review, translation, or drafting, answer first unless persistence is required to avoid losing a clear durable fact.
- Do not create a brand-new canonical note during the critical path of the answer unless the user explicitly asked to save the fact or the new note is the smallest correct update.
- Prefer updating an existing canonical note over creating a new file when both are valid.
@@ -71,7 +71,7 @@ Avoid low-value learning-session questions such as:
- whether a specific PR was approved today
- whether a ticket moved columns today
- what the next standup line should be
- temporary sequencing questions that belong in `project-knowledge/01-current/` or `project-knowledge/06-daily/`
- temporary sequencing questions that belong in `workspaces/fidelity/project-knowledge/01-current/` or `workspaces/fidelity/project-knowledge/06-daily/`
Prefer high-value questions such as:
@@ -130,7 +130,7 @@ Examples:
- A standup formatting correction should update `prompts/standup.md` and the shared workflow in `.agents/workflows/standup.md`.
- A Mattermost freshness correction should update the Mattermost command/plugin instructions.
- A Copilot prompt-structure correction should update `prompts/copilot-prompt.md`, `.agents/workflows/copilot-prompt.md`, or the shared skill/rule source.
- A Swift answer-quality correction should update the relevant iOS skill or `project-knowledge/03-context/ios/` guidance.
- A Swift answer-quality correction should update the relevant iOS skill or `workspaces/fidelity/project-knowledge/03-context/ios/` guidance.
Keep the daily log as evidence of what happened, but make the reusable behavior live in the file that controls that behavior.
@@ -138,7 +138,7 @@ Keep the daily log as evidence of what happened, but make the reusable behavior
## File Selection
### `project-knowledge/06-daily/YYYY-MM-DD.md`
### `workspaces/fidelity/project-knowledge/06-daily/YYYY-MM-DD.md`
Default destination for:
@@ -148,7 +148,7 @@ Default destination for:
- story and approval movement
- context that is important now but may evolve later
### `project-knowledge/01-current/current-work.md`
### `workspaces/fidelity/project-knowledge/01-current/current-work.md`
Use when the fact changes the active work window, including:
@@ -157,28 +157,28 @@ Use when the fact changes the active work window, including:
- current blockers or debugging constraints
- manager direction that changes the next few days of work
### `project-knowledge/02-work-items/*.md` and `project-knowledge/01-current/work-items.md`
### `workspaces/fidelity/project-knowledge/02-work-items/*.md` and `workspaces/fidelity/project-knowledge/01-current/work-items.md`
Use `project-knowledge/02-work-items/*.md` as the canonical memory for current Jira-linked work that should remain easy to reference across sessions, especially:
Use `workspaces/fidelity/project-knowledge/02-work-items/*.md` as the canonical memory for current Jira-linked work that should remain easy to reference across sessions, especially:
- Jira IDs
- approved or explicit titles
- currently relevant status notes
- current points or scope notes
Use `project-knowledge/01-current/work-items.md` as the summary view of what is active now.
Use `workspaces/fidelity/project-knowledge/01-current/work-items.md` as the summary view of what is active now.
These files should help standups and manager updates mention work items precisely.
### `project-knowledge/03-context/project.md`
### `workspaces/fidelity/project-knowledge/03-context/project.md`
Use for durable project knowledge that should survive beyond the current work window.
### `project-knowledge/04-people/manager.md`
### `workspaces/fidelity/project-knowledge/04-people/manager.md`
Use only when a communication preference or manager expectation becomes stable enough to reuse repeatedly.
### `project-knowledge/04-people/index.md` and `project-knowledge/04-people/*.md`
### `workspaces/fidelity/project-knowledge/04-people/index.md` and `workspaces/fidelity/project-knowledge/04-people/*.md`
Use these files for:
@@ -192,7 +192,7 @@ When the role is not explicit, store:
- what kinds of topics they influence
- how they affect approvals, scope, debugging, or communication
### `project-knowledge/05-decisions/*.md`
### `workspaces/fidelity/project-knowledge/05-decisions/*.md`
Use for explicit confirmed decisions with ongoing impact.

View File

@@ -21,7 +21,7 @@ The agent must keep the workspace behavior aligned with recurring user correctio
- Update `.opencode/agents/` and `AGENTS.md` for default agent behavior.
- Update `.agents/skills/` for specialized workflows.
- Update `agent-memory/` for reusable agent operating rules.
- Update `project-knowledge/` only when the correction changes project knowledge or project-facing process documentation.
- Update `workspaces/fidelity/project-knowledge/` only when the correction changes project knowledge or project-facing process documentation.
---

View File

@@ -17,18 +17,18 @@ Communication connectors extract evidence. The agent decides what to promote.
Mattermost is the current live communication connector.
- Primary local evidence is the Mattermost proxy mirror under `ai/inbox/mattermost-mirror/` when present.
- Prefer `ai/inbox/mattermost-mirror/latest.md` / `latest.jsonl` for latest-message context, `by-date/YYYY/MM/YYYY-MM-DD.jsonl` for daily/standup context, `channels/<channel>/YYYY/MM/YYYY-MM-DD.jsonl` for channel-specific context, and `threads/<root-or-post-id>.jsonl` for thread-specific context.
- Primary local evidence is the Mattermost proxy mirror under `workspaces/fidelity/inbox/mattermost-mirror/` when present.
- Prefer `workspaces/fidelity/inbox/mattermost-mirror/latest.md` / `latest.jsonl` for latest-message context, `by-date/YYYY/MM/YYYY-MM-DD.jsonl` for daily/standup context, `channels/<channel>/YYYY/MM/YYYY-MM-DD.jsonl` for channel-specific context, and `threads/<root-or-post-id>.jsonl` for thread-specific context.
- Use `scripts/mattermost-proxy/read-context.py` from commands/workflows instead of reading ad hoc files; it prefers the proxy mirror and falls back to legacy sync artifacts.
- Legacy fresh output may still go to `ai/inbox/mattermost-latest.md`.
- Legacy fresh output may still go to `workspaces/fidelity/inbox/mattermost-latest.md`.
- Legacy generated extraction artifacts stay under `scripts/mattermost/generated/`.
- Failed syncs must not update project knowledge.
- Latest-message requests must refresh Mattermost before answering.
- Latest-message requests are read-first. The agent may identify a memory update candidate, but should not edit `project-knowledge/` from the latest-message command unless the user explicitly asks to promote the fact.
- Latest-message requests are read-first. The agent may identify a memory update candidate, but should not edit `workspaces/fidelity/project-knowledge/` from the latest-message command unless the user explicitly asks to promote the fact.
- Standup generation is a separate required-refresh flow: it must fetch Mattermost before drafting, even though general prompts should not sync automatically.
- Standup reads should use the focused reader mode, `scripts/mattermost-proxy/read-context.py --mode standup --today YYYY-MM-DD`, which reads date-bucketed previous-workday/today records and should use the active profile's configured `AIW_MATTERMOST_CONTEXT_CHANNELS` when available. Avoid loading broad mirror `latest.md` into standup prompts because it may include stale or unrelated channels and waste tokens. Keep project-specific channel names out of reusable connector code.
- If adding MCP support for Mattermost, treat it as a read-only query wrapper over the existing proxy mirror and `read-context.py`, not as a replacement for the capture/mirror pipeline. Keep the mirror's file layout as canonical raw evidence and expose only narrow tools such as latest, standup/date, channel, and thread reads with channel filters and limits.
- Do not build a write-capable Mattermost MCP or expose tokens, cookies, raw headers, or broad unfiltered raw dumps through MCP. MCP output should remain evidence for agent reasoning; promotion to `project-knowledge/` still follows normal memory rules.
- Do not build a write-capable Mattermost MCP or expose tokens, cookies, raw headers, or broad unfiltered raw dumps through MCP. MCP output should remain evidence for agent reasoning; promotion to `workspaces/fidelity/project-knowledge/` still follows normal memory rules.
- If the proxy mirror is running, treat it as fresher than legacy `mattermost-latest.md` / generated JSONL. Do not ignore mirror evidence merely because a legacy sync command also ran.
- Do not refresh Mattermost just because a prompt mentions a manager or stakeholder.
- Treat document review, message polishing, translation, and "does this align with Jeff's expectations?" prompts as normal drafting tasks unless the user explicitly asks for the latest message or fresh Mattermost evidence.
@@ -42,6 +42,6 @@ Mattermost is the current live communication connector.
Slack export import is the current historical archive connector.
- Archive evidence stays outside `project-knowledge/`.
- Archive evidence stays outside `workspaces/fidelity/project-knowledge/`.
- Promote only durable project facts, people context, process rules, or historical architecture lessons.
- Do not promote dated status details unless they explain current context.

View File

@@ -15,7 +15,7 @@ Use mem9 as a cross-session, cross-agent recall layer without replacing the work
## Source Of Truth
`project-knowledge/` remains the canonical human-readable Fidelity project memory.
`workspaces/fidelity/project-knowledge/` remains the canonical human-readable Fidelity project memory.
`agent-memory/` remains the canonical operating memory for agent behavior, workflows, promotion rules, and integration guidance.
@@ -46,7 +46,7 @@ Do not bulk-import raw inboxes, generated sync output, full chat transcripts, or
1. Recall mem9 early for user preferences and relevant workspace history.
2. Load hot Markdown context from `AGENTS.md` / `opencode.json` instructions.
3. For current-work questions, still inspect `project-knowledge/01-current/current-work.md` and the latest relevant daily note.
3. For current-work questions, still inspect `workspaces/fidelity/project-knowledge/01-current/current-work.md` and the latest relevant daily note.
4. Answer or act from verified context.
5. When the interaction adds durable knowledge, update canonical Markdown first; store a compact mem9 memory only if it improves future recall.

View File

@@ -15,7 +15,7 @@ Use `scripts/memory/memory.sh` as the project-agnostic interface to project know
## Default Root
The primary project knowledge directory is `project-knowledge/`.
The primary project knowledge directory is `workspaces/fidelity/project-knowledge/`.
Environment variable precedence:

View File

@@ -16,13 +16,13 @@ Obsidian is the current interface over canonical Markdown memory. The workspace-
## Recommended Start
Open the `project-knowledge/` folder as the Obsidian vault, not the repository root and not `agent-memory/`.
Open the `workspaces/fidelity/project-knowledge/` folder as the Obsidian vault, not the repository root and not `agent-memory/`.
Open:
- [Start Here](../../project-knowledge/00-start/start-here.md)
- [New Member Onboarding](../../project-knowledge/00-start/onboarding.md)
- [Knowledge Maps](../../project-knowledge/07-maps/index.md)
- [Start Here](../../workspaces/fidelity/project-knowledge/00-start/start-here.md)
- [New Member Onboarding](../../workspaces/fidelity/project-knowledge/00-start/onboarding.md)
- [Knowledge Maps](../../workspaces/fidelity/project-knowledge/07-maps/index.md)
---
@@ -32,26 +32,26 @@ Open:
Start with:
- [New Member Onboarding](../../project-knowledge/00-start/onboarding.md)
- [Glossary](../../project-knowledge/00-start/glossary.md)
- [Current Work Map](../../project-knowledge/07-maps/current-work.md)
- [Fidelity Domain Map](../../project-knowledge/07-maps/fidelity-domain.md)
- [New Member Onboarding](../../workspaces/fidelity/project-knowledge/00-start/onboarding.md)
- [Glossary](../../workspaces/fidelity/project-knowledge/00-start/glossary.md)
- [Current Work Map](../../workspaces/fidelity/project-knowledge/07-maps/current-work.md)
- [Fidelity Domain Map](../../workspaces/fidelity/project-knowledge/07-maps/fidelity-domain.md)
### Daily Work View
Start with:
- [Current Work Map](../../project-knowledge/07-maps/current-work.md)
- [Work Items Map](../../project-knowledge/07-maps/work-items.md)
- [Daily Notes Index](../../project-knowledge/06-daily/index.md)
- [Current Work Map](../../workspaces/fidelity/project-knowledge/07-maps/current-work.md)
- [Work Items Map](../../workspaces/fidelity/project-knowledge/07-maps/work-items.md)
- [Daily Notes Index](../../workspaces/fidelity/project-knowledge/06-daily/index.md)
### System Understanding View
Start with:
- [Fidelity Domain Map](../../project-knowledge/07-maps/fidelity-domain.md)
- [Fidelity Apps Map](../../project-knowledge/07-maps/fidelity-apps.md)
- [People Map](../../project-knowledge/07-maps/people.md)
- [Fidelity Domain Map](../../workspaces/fidelity/project-knowledge/07-maps/fidelity-domain.md)
- [Fidelity Apps Map](../../workspaces/fidelity/project-knowledge/07-maps/fidelity-apps.md)
- [People Map](../../workspaces/fidelity/project-knowledge/07-maps/people.md)
---

View File

@@ -50,4 +50,4 @@ Reusable workspace logic and project-independent operating rules.
## Project Profile
- Active project profile: `profiles/fidelity/profile.md`
- Project knowledge vault: `project-knowledge/`
- Project knowledge vault: `workspaces/fidelity/project-knowledge/`

View File

@@ -75,5 +75,5 @@ Commands, prompts, skills, workflows, and automation surfaces that make the work
- Project-agnostic memory scripts: `scripts/memory/`
- Current Obsidian adapter: `scripts/obsidian/`
- Obsidian MCP migration plan: `agent-memory/workflows/obsidian-mcp-migration.md`
- Project knowledge vault: `project-knowledge/`
- Project knowledge vault: `workspaces/fidelity/project-knowledge/`
- Agent operating memory: `agent-memory/`

View File

@@ -18,22 +18,22 @@ Keep this workspace useful as living memory instead of a pile of disconnected no
- Update canonical context when a durable fact changes.
- Prefer correcting stale context over appending contradictory notes.
- Keep `project-knowledge/` human-facing and project-facing: write it as an engineer maintaining shared project notes, not as an AI maintaining its own operating instructions.
- Do not place agent-only logic, output contracts, prompting tactics, evaluation heuristics, or command-behavior rules in `project-knowledge/` unless a human engineer on the project would reasonably want that exact guidance there.
- Put agent behavior, prompt logic, formatting contracts, and slash-command rules in `agent-memory/`, `.opencode/commands/`, `prompts/`, `.opencode/agents/`, or `.agents/skills/` instead of `project-knowledge/`.
- Keep `workspaces/fidelity/project-knowledge/` human-facing and project-facing: write it as an engineer maintaining shared project notes, not as an AI maintaining its own operating instructions.
- Do not place agent-only logic, output contracts, prompting tactics, evaluation heuristics, or command-behavior rules in `workspaces/fidelity/project-knowledge/` unless a human engineer on the project would reasonably want that exact guidance there.
- Put agent behavior, prompt logic, formatting contracts, and slash-command rules in `agent-memory/`, `.opencode/commands/`, `prompts/`, `.opencode/agents/`, or `.agents/skills/` instead of `workspaces/fidelity/project-knowledge/`.
- If a canonical note appears in an Obsidian Base, update its frontmatter properties together with the prose content.
- When changing frontmatter properties on existing canonical notes, prefer Obsidian CLI property operations through `scripts/obsidian/cli.sh` when available so YAML spacing and property formatting stay clean; fall back to direct Markdown edits only when the CLI is unavailable or the operation is unsupported.
- Keep templates under `project-knowledge/09-templates/` out of real-note Bases by filtering the template folder.
- Keep templates under `workspaces/fidelity/project-knowledge/09-templates/` out of real-note Bases by filtering the template folder.
- Role mapping files should not use `type: person`; reserve `type: person` for actual people profiles.
- Work-item notes should keep known `systems`, `workstreams`, `people`, and `related` properties current.
- Daily notes should keep `focus`, `work-items`, and `blockers` properties current when the values are clear.
- Use the smallest correct destination:
- `project-knowledge/06-daily/YYYY-MM-DD.md` for daily progress and evolving findings
- `project-knowledge/01-current/current-work.md` for near-term active work
- `project-knowledge/02-work-items/*.md` for canonical Jira-linked active work
- `project-knowledge/01-current/work-items.md` for the compact active-work summary
- `project-knowledge/03-context/` for durable project knowledge
- `project-knowledge/04-people/` for named person context
- `workspaces/fidelity/project-knowledge/06-daily/YYYY-MM-DD.md` for daily progress and evolving findings
- `workspaces/fidelity/project-knowledge/01-current/current-work.md` for near-term active work
- `workspaces/fidelity/project-knowledge/02-work-items/*.md` for canonical Jira-linked active work
- `workspaces/fidelity/project-knowledge/01-current/work-items.md` for the compact active-work summary
- `workspaces/fidelity/project-knowledge/03-context/` for durable project knowledge
- `workspaces/fidelity/project-knowledge/04-people/` for named person context
- `.opencode/commands/`, `prompts/`, `.opencode/agents/`, `.agents/skills/`, `agent-memory/`, `core/`, or `scripts/` for reusable behavior rules that control how the workspace responds
---

View File

@@ -17,12 +17,12 @@ The reusable model lives in `core/memory/operational-memory.md`. This file recor
## Memory Classes
- `daily`: dated progress and evidence in `project-knowledge/06-daily/`.
- `state`: near-term active work in `project-knowledge/01-current/`.
- `work-items`: ticket-scoped memory in `project-knowledge/02-work-items/`.
- `stable-context`: durable systems, workstreams, process, and iOS context in `project-knowledge/03-context/`.
- `people`: collaborators, stakeholders, and role mappings in `project-knowledge/04-people/`.
- `decisions`: accepted durable decisions in `project-knowledge/05-decisions/`.
- `daily`: dated progress and evidence in `workspaces/fidelity/project-knowledge/06-daily/`.
- `state`: near-term active work in `workspaces/fidelity/project-knowledge/01-current/`.
- `work-items`: ticket-scoped memory in `workspaces/fidelity/project-knowledge/02-work-items/`.
- `stable-context`: durable systems, workstreams, process, and iOS context in `workspaces/fidelity/project-knowledge/03-context/`.
- `people`: collaborators, stakeholders, and role mappings in `workspaces/fidelity/project-knowledge/04-people/`.
- `decisions`: accepted durable decisions in `workspaces/fidelity/project-knowledge/05-decisions/`.
- `tooling-behavior`: agent and workspace behavior in `agent-memory/`, `.opencode/`, `prompts/`, `scripts/`, and `core/`.
---
@@ -31,9 +31,9 @@ The reusable model lives in `core/memory/operational-memory.md`. This file recor
Raw evidence stays outside project knowledge:
- `ai/inbox/`
- `workspaces/fidelity/inbox/`
- `scripts/mattermost/generated/`
- `scripts/slack/generated/`
Only curated, high-confidence project facts should be promoted into `project-knowledge/`.
Only curated, high-confidence project facts should be promoted into `workspaces/fidelity/project-knowledge/`.

View File

@@ -25,7 +25,7 @@ If a fact is ambiguous, skip it or keep it only in the daily log with appropriat
## File Selection
### Promote to `project-knowledge/06-daily/YYYY-MM-DD.md`
### Promote to `workspaces/fidelity/project-knowledge/06-daily/YYYY-MM-DD.md`
Use the daily log for:
@@ -37,7 +37,7 @@ Use the daily log for:
Daily logs are the default destination for most promoted Mattermost facts.
### Promote to `project-knowledge/01-current/current-work.md`
### Promote to `workspaces/fidelity/project-knowledge/01-current/current-work.md`
Use current state only for facts that materially affect active work over the next few days, such as:
@@ -48,9 +48,9 @@ Use current state only for facts that materially affect active work over the nex
Do not copy every daily update into current state.
### Promote to `project-knowledge/02-work-items/*.md` and `project-knowledge/01-current/work-items.md`
### Promote to `workspaces/fidelity/project-knowledge/02-work-items/*.md` and `workspaces/fidelity/project-knowledge/01-current/work-items.md`
Use `project-knowledge/02-work-items/*.md` for:
Use `workspaces/fidelity/project-knowledge/02-work-items/*.md` for:
- explicit Jira IDs
- approved or explicit story titles
@@ -60,9 +60,9 @@ Use `project-knowledge/02-work-items/*.md` for:
If a Jira item is likely to appear again in standups or manager updates, it belongs here.
Use `project-knowledge/01-current/work-items.md` as the compact summary of which ticket files are active.
Use `workspaces/fidelity/project-knowledge/01-current/work-items.md` as the compact summary of which ticket files are active.
### Promote to `project-knowledge/03-context/project.md`
### Promote to `workspaces/fidelity/project-knowledge/03-context/project.md`
Use project context only for durable project knowledge that should survive beyond the current work window, such as:
@@ -73,11 +73,11 @@ Use project context only for durable project knowledge that should survive beyon
Do not promote story-specific daily movement into project context unless it changes durable project understanding.
### Promote to `project-knowledge/05-decisions/*.md`
### Promote to `workspaces/fidelity/project-knowledge/05-decisions/*.md`
Use decisions only for explicit confirmed decisions with medium or long-term impact.
### Promote to `project-knowledge/04-people/index.md` and `project-knowledge/04-people/*.md`
### Promote to `workspaces/fidelity/project-knowledge/04-people/index.md` and `workspaces/fidelity/project-knowledge/04-people/*.md`
Use these files when:
@@ -141,5 +141,5 @@ Given Mattermost updates like:
Automatic behavior should be:
- add all of them to today's log if they are relevant to today's work
- promote only the currently actionable subset to `project-knowledge/01-current/current-work.md`
- keep story-specific details out of `project-knowledge/03-context/project.md` unless they reveal a durable project rule
- promote only the currently actionable subset to `workspaces/fidelity/project-knowledge/01-current/current-work.md`
- keep story-specific details out of `workspaces/fidelity/project-knowledge/03-context/project.md` unless they reveal a durable project rule

View File

@@ -11,7 +11,7 @@ tags: [obsidian, mcp, migration, memory]
Replace the current Obsidian CLI-backed adapter path with an Obsidian MCP-first integration while preserving the workspace memory model:
- `project-knowledge/` remains the canonical source of truth
- `workspaces/fidelity/project-knowledge/` remains the canonical source of truth
- `scripts/memory/` remains the stable workspace memory contract
- direct Markdown edits remain the safe fallback for precise curation
- Obsidian stays an adapter/navigation layer, not a second memory store
@@ -66,7 +66,7 @@ The migration should change the adapter, not the memory model.
- Do not move canonical memory out of Markdown
- Do not encode promotion rules into the MCP layer
- Do not make `project-knowledge/` depend on Obsidian-only storage
- Do not make `workspaces/fidelity/project-knowledge/` depend on Obsidian-only storage
- Do not remove direct Markdown editing as a fallback
- Do not delete the current scripts until MCP coverage is validated in real use
@@ -116,7 +116,7 @@ Current Phase 1 checklist:
- [x] Add OpenCode MCP config using `OBSIDIAN_API_KEY` environment substitution.
- [x] Export `OBSIDIAN_API_KEY` in the shell that launches OpenCode.
- [x] Restart OpenCode and confirm `opencode mcp list` shows `obsidian` connected.
- [x] Validate read/search tools against `project-knowledge/` notes.
- [x] Validate read/search tools against `workspaces/fidelity/project-knowledge/` notes.
- [x] Validate write/append/delete behavior on a disposable test note before touching canonical memory.
- [ ] Determine whether Bases/properties/backlinks/template behavior needs to remain on the existing CLI/direct-Markdown path.
@@ -208,9 +208,9 @@ Delete later only if truly unused:
### Keep
- `project-knowledge/.obsidian/`
- `project-knowledge/08-bases/*.base`
- `project-knowledge/09-templates/`
- `workspaces/fidelity/project-knowledge/.obsidian/`
- `workspaces/fidelity/project-knowledge/08-bases/*.base`
- `workspaces/fidelity/project-knowledge/09-templates/`
- `scripts/memory/`
### Deprecate then remove

View File

@@ -51,4 +51,4 @@ Capture reusable prompting lessons so the agent does not need to re-research the
- Treat prompt improvement as eval-driven iteration: identify the exact bad output pattern, add the smallest correction, and check whether it fixes the failure without bloating the prompt.
- When a correction is about workspace behavior, update the controlling prompt or command immediately so the next run benefits.
- Keep project memory clean while improving prompt quality; do not store agent heuristics in `project-knowledge/`.
- Keep project memory clean while improving prompt quality; do not store agent heuristics in `workspaces/fidelity/project-knowledge/`.

View File

@@ -11,7 +11,7 @@ related:
This repository separates project knowledge from agent operation:
- `project-knowledge/` is the clean Obsidian second brain and transferable project memory.
- `workspaces/fidelity/project-knowledge/` is the clean Obsidian second brain and transferable project memory.
- `agent-memory/` is the operating manual for the AI agent.
- Everything else is technical runtime, reusable core, profile configuration, scripts, commands, prompts, or raw evidence.
@@ -42,10 +42,10 @@ These folders are intentionally outside Obsidian memory:
- `core/` stores reusable workspace logic.
- `profiles/` stores project-specific profile declarations.
- `scripts/` stores connectors, importers, and wrappers.
- `ai/inbox/` stores live evidence from communication sync.
- `workspaces/fidelity/inbox/` stores live evidence from communication sync.
- `scripts/*/generated/` stores extracted evidence.
Runtime and generated files can be used as evidence, but durable project facts should be promoted into `project-knowledge/`.
Runtime and generated files can be used as evidence, but durable project facts should be promoted into `workspaces/fidelity/project-knowledge/`.
Agent behavior rules belong in `agent-memory/`, not in the project vault.
@@ -55,7 +55,7 @@ Agent behavior rules belong in `agent-memory/`, not in the project vault.
Use `scripts/memory/` as the platform-agnostic interface to canonical memory.
Obsidian is the current visual and CLI-backed adapter, but the source of truth remains Markdown under `project-knowledge/`.
Obsidian is the current visual and CLI-backed adapter, but the source of truth remains Markdown under `workspaces/fidelity/project-knowledge/`.
- Agents use `scripts/memory/memory.sh create` when a new typed note is needed.
- Agents use `scripts/memory/memory.sh search` or direct Markdown reads for context lookup.
@@ -66,6 +66,6 @@ Obsidian is the current visual and CLI-backed adapter, but the source of truth r
## Memory Rule
Promoted memory lives in `project-knowledge/`.
Promoted memory lives in `workspaces/fidelity/project-knowledge/`.
Raw inbox and generated connector evidence stays outside the vault until the agent promotes durable facts.

View File

@@ -15,7 +15,7 @@ It separates reusable tooling, project knowledge, and agent operating memory:
- `core/` contains reusable project-independent operating rules
- `profiles/<project>/` contains project-specific configuration and assumptions
- `project-knowledge/` contains transferable project documentation and current work memory
- `workspaces/fidelity/project-knowledge/` contains transferable project documentation and current work memory
- `agent-memory/` contains agent behavior, learning, promotion, integration, and verification rules
---
@@ -48,14 +48,14 @@ When the user corrects a recurring behavior, the workspace should update the fil
- `core/` for reusable project-independent behavior
- `profiles/<project>/` for project-specific assumptions
- `project-knowledge/.obsidian/` only for portable Obsidian configuration, not project memory content
- `workspaces/fidelity/project-knowledge/.obsidian/` only for portable Obsidian configuration, not project memory content
- `scripts/memory/` for project-agnostic memory access, creation, search, Base queries, and health checks
- `scripts/obsidian/` for the current Obsidian adapter, not for core memory semantics
- `.agents/workflows/` for slash commands (with `.opencode/commands/` for compatibility)
- `prompts/` for reusable drafting templates
- `.agents/rules/` and `AGENTS.md` for default agent behavior
- `.agents/skills/` for specialized workflows. Do not mirror into `.opencode/skills/`; OpenCode discovers `.agents/skills/` directly.
- `project-knowledge/00-start/` and `project-knowledge/03-context/process/` for project-facing onboarding and process rules
- `workspaces/fidelity/project-knowledge/00-start/` and `workspaces/fidelity/project-knowledge/03-context/process/` for project-facing onboarding and process rules
- `agent-memory/` for agent-specific behavior, learning, promotion, verification, and self-maintenance rules
Daily logs can preserve evidence, but they should not be the only place where a reusable behavior rule lives.

View File

@@ -51,7 +51,7 @@ See `core/memory/operational-memory.md` for the detailed rules.
Integrations extract evidence. They do not decide what becomes memory.
- live communication connectors write recent evidence to `ai/inbox/`
- live communication connectors write recent evidence to `workspaces/<profile>/inbox/`
- historical archive connectors write selected evidence to `scripts/<source>/generated/`
- the agent promotes only high-confidence, project-relevant facts into memory

View File

@@ -18,7 +18,7 @@ Expected behavior:
- fetch recent messages from configured channels or conversations
- support a forced refresh for "latest message" prompts
- write the latest evidence to `ai/inbox/`
- write the latest evidence to `workspaces/<profile>/inbox/`
- write status separately from project memory
- fail safely without updating logs, state, or context

View File

@@ -46,11 +46,11 @@ Technical runtime remains outside the vault:
- `scripts/`
- `core/`
- `profiles/`
- `ai/inbox/`
- `workspaces/<profile>/inbox/`
- `scripts/*/generated/`
- archives and local virtual environments
Communication evidence may exist under `ai/inbox/` or connector `generated/` folders, but promoted memory belongs in `project-knowledge/`.
Communication evidence may exist under `workspaces/<profile>/inbox/` or connector `generated/` folders, but promoted memory belongs in the profile's project knowledge vault.
---
@@ -76,7 +76,7 @@ Do not version local runtime state:
Recommended graph and search exclusions:
- `ai/inbox/`
- `workspaces/<profile>/inbox/`
- `archives/`
- `scripts/**/generated/`
- `scripts/**/.venv/`

View File

@@ -26,8 +26,8 @@ AI clients and agent workflows
|---|---|---|
| `core/` | Reusable architecture and operating model | yes, for workspace design |
| `profiles/<profile>/` | Project-specific configuration and assumptions | yes, for profile config |
| `project-knowledge/` | Human-readable project memory for the active profile | yes, for project facts |
| `ai/inbox/` | Raw evidence captured from connectors | no |
| `workspaces/<profile>/project-knowledge/` | Human-readable project memory for the active profile | yes, for project facts |
| `workspaces/<profile>/inbox/` | Raw evidence captured from connectors | no |
| `.aiw/indexes/` | Rebuildable search indexes | no |
| `.aiw/runtime/` | PID files, logs, local service state | no |
| `scripts/aiw/` | Profile-aware service/index utilities | code source |
@@ -36,9 +36,9 @@ AI clients and agent workflows
## Current Repository Shape
The current repo still keeps the first real profile's vault at root-level `project-knowledge/`. That is acceptable during migration, but reusable code should resolve paths from `profiles/<profile>/workspace.json` rather than hardcoding Fidelity-specific locations.
Profile-owned data lives under `workspaces/<profile>/`. Reusable code must resolve paths from `profiles/<profile>/workspace.json` rather than hardcoding profile-specific locations.
Target direction:
Current data layout:
```text
profiles/<profile>/workspace.json # where profile data lives

View File

@@ -46,14 +46,14 @@ Human-readable summary for agents and developers:
### `workspace.json`
Profile path configuration. Initial versions can point to current paths:
Profile path configuration:
```json
{
"profile": "example",
"display_name": "Example Project",
"knowledge_dir": "project-knowledge",
"inbox_dir": "ai/inbox",
"knowledge_dir": "workspaces/example/project-knowledge",
"inbox_dir": "workspaces/example/inbox",
"index_dir": ".aiw/indexes/example"
}
```

View File

@@ -18,7 +18,7 @@ Examples of local-only data:
```text
.aiw/runtime/
.aiw/indexes/
ai/inbox/mattermost-mirror/
workspaces/*/inbox/mattermost-mirror/
scripts/*/.env
```

View File

@@ -20,7 +20,7 @@ It keeps Fidelity-specific context, integrations, commands, and skills separate
## Communication Sources
- Live communication: Mattermost
- Preferred local Mattermost evidence source: proxy mirror under `ai/inbox/mattermost-mirror/` when present; legacy `ai/inbox/mattermost-latest.md` and `scripts/mattermost/generated/` are fallback evidence.
- Preferred local Mattermost evidence source: proxy mirror under `workspaces/fidelity/inbox/mattermost-mirror/` when present; legacy `workspaces/fidelity/inbox/mattermost-latest.md` and `scripts/mattermost/generated/` are fallback evidence.
- Historical archive: Slack export
- Preferred channel naming: readable channel names instead of raw IDs
- Current high-signal channel: `fidelity-preguntas`
@@ -47,16 +47,16 @@ Generic variables should be preferred for new setup:
## Work System
- Work items are Jira-linked when available
- Active ticket memory lives in `project-knowledge/02-work-items/`
- Compact active summary lives in `project-knowledge/01-current/work-items.md`
- Active ticket memory lives in `workspaces/fidelity/project-knowledge/02-work-items/`
- Compact active summary lives in `workspaces/fidelity/project-knowledge/01-current/work-items.md`
- Jira IDs and approved titles should remain visible for standups and manager updates
---
## Stakeholders
- Current manager mapping lives in `project-knowledge/04-people/manager.md`
- Person-specific collaboration context lives in `project-knowledge/04-people/`
- Current manager mapping lives in `workspaces/fidelity/project-knowledge/04-people/manager.md`
- Person-specific collaboration context lives in `workspaces/fidelity/project-knowledge/04-people/`
- Manager-facing messages should be concise, explicit, and natural professional US English
---
@@ -65,14 +65,14 @@ Generic variables should be preferred for new setup:
Core Fidelity context remains in:
- `project-knowledge/03-context/project.md`
- `project-knowledge/03-context/systems/`
- `project-knowledge/03-context/workstreams/`
- `project-knowledge/03-context/ios/`
- `project-knowledge/03-context/process/`
- `project-knowledge/05-decisions/`
- `workspaces/fidelity/project-knowledge/03-context/project.md`
- `workspaces/fidelity/project-knowledge/03-context/systems/`
- `workspaces/fidelity/project-knowledge/03-context/workstreams/`
- `workspaces/fidelity/project-knowledge/03-context/ios/`
- `workspaces/fidelity/project-knowledge/03-context/process/`
- `workspaces/fidelity/project-knowledge/05-decisions/`
Raw communication evidence remains outside the project knowledge vault under `ai/inbox/` and generated connector folders.
Raw communication evidence remains outside the project knowledge vault under `workspaces/fidelity/inbox/` and generated connector folders.
Memory access should go through the project-agnostic `scripts/memory/` interface for note creation, search, Base queries, and health checks. Obsidian is the current visual and CLI adapter, not a Fidelity-specific dependency.

View File

@@ -1,8 +1,8 @@
{
"profile": "fidelity",
"display_name": "Fidelity",
"description": "Current Fidelity AI Workspace profile. Paths intentionally point to the existing root-level vault and inbox until the data migration phase.",
"knowledge_dir": "project-knowledge",
"inbox_dir": "ai/inbox",
"description": "Current Fidelity AI Workspace profile with isolated profile-owned data paths.",
"knowledge_dir": "workspaces/fidelity/project-knowledge",
"inbox_dir": "workspaces/fidelity/inbox",
"index_dir": ".aiw/indexes/fidelity"
}

View File

@@ -1,6 +1,6 @@
# Manager Update Prompt
Use the current state, today's daily note, `project-knowledge/01-current/work-items.md`, the relevant files under `project-knowledge/02-work-items/`, `project-knowledge/03-context/project.md`, `project-knowledge/03-context/process/communication.md`, `project-knowledge/04-people/manager.md`, and `project-knowledge/04-people/index.md`.
Use the current state, today's daily note, `workspaces/fidelity/project-knowledge/01-current/work-items.md`, the relevant files under `workspaces/fidelity/project-knowledge/02-work-items/`, `workspaces/fidelity/project-knowledge/03-context/project.md`, `workspaces/fidelity/project-knowledge/03-context/process/communication.md`, `workspaces/fidelity/project-knowledge/04-people/manager.md`, and `workspaces/fidelity/project-knowledge/04-people/index.md`.
Draft a Mattermost update for the current manager or stakeholder in concise, natural, professional US English.

View File

@@ -2,7 +2,7 @@
> **Format note (2026-05-13):** Mattermost requires a visible blank line before section headers like `Today:` and `Blockers:` for proper rendering. Always emit two newline characters between the previous bullet/list item and the next section header; never place `Today:` immediately after a list item.
Use `project-knowledge/01-current/current-work.md`, `project-knowledge/01-current/work-items.md`, the detailed files referenced from that active-work summary, `project-knowledge/03-context/project.md`, `project-knowledge/03-context/workstreams/index.md`, `project-knowledge/03-context/process/communication.md`, `project-knowledge/04-people/manager.md`, the previous workday communication context, today's daily note if present, and the latest available communication context.
Use `workspaces/fidelity/project-knowledge/01-current/current-work.md`, `workspaces/fidelity/project-knowledge/01-current/work-items.md`, the detailed files referenced from that active-work summary, `workspaces/fidelity/project-knowledge/03-context/project.md`, `workspaces/fidelity/project-knowledge/03-context/workstreams/index.md`, `workspaces/fidelity/project-knowledge/03-context/process/communication.md`, `workspaces/fidelity/project-knowledge/04-people/manager.md`, the previous workday communication context, today's daily note if present, and the latest available communication context.
Generate a standup update for the active project profile.

View File

@@ -56,8 +56,8 @@ Current fields:
```json
{
"knowledge_dir": "project-knowledge",
"inbox_dir": "ai/inbox",
"knowledge_dir": "workspaces/fidelity/project-knowledge",
"inbox_dir": "workspaces/fidelity/inbox",
"index_dir": ".aiw/indexes/fidelity"
}
```

View File

@@ -17,8 +17,8 @@ ROOT = Path(__file__).resolve().parents[2]
DEFAULT_WORKSPACE = {
"knowledge_dir": "project-knowledge",
"inbox_dir": "ai/inbox",
"knowledge_dir": "workspaces/{profile}/project-knowledge",
"inbox_dir": "workspaces/{profile}/inbox",
"index_dir": ".aiw/indexes/{profile}",
}
@@ -52,12 +52,12 @@ def resolve_path(raw: str | None, *, profile: str, root: Path | None = None, fal
def knowledge_dir(profile: str, root: Path | None = None) -> Path:
config = load_workspace_config(profile, root=root)
return resolve_path(config.get("knowledge_dir"), profile=profile, root=root, fallback="project-knowledge")
return resolve_path(config.get("knowledge_dir"), profile=profile, root=root, fallback="workspaces/{profile}/project-knowledge")
def inbox_dir(profile: str, root: Path | None = None) -> Path:
config = load_workspace_config(profile, root=root)
return resolve_path(config.get("inbox_dir"), profile=profile, root=root, fallback="ai/inbox")
return resolve_path(config.get("inbox_dir"), profile=profile, root=root, fallback="workspaces/{profile}/inbox")
def index_dir(profile: str, root: Path | None = None) -> Path:

View File

@@ -23,8 +23,8 @@ class IndexerTests(unittest.TestCase):
def test_build_skips_templates_and_searches_canonical_files(self) -> None:
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)
real = root / "project-knowledge" / "03-context" / "project.md"
template = root / "project-knowledge" / "09-templates" / "daily.md"
real = root / "workspaces" / "fidelity" / "project-knowledge" / "03-context" / "project.md"
template = root / "workspaces" / "fidelity" / "project-knowledge" / "09-templates" / "daily.md"
real.parent.mkdir(parents=True)
template.parent.mkdir(parents=True)
real.write_text("# XFlow\nDismissal lifecycle context", encoding="utf-8")
@@ -48,7 +48,7 @@ class IndexerTests(unittest.TestCase):
self.assertIn(".aiw/indexes/fidelity/project-knowledge.jsonl", result["index_path"])
def test_cli_search_payload_is_json_serializable(self) -> None:
payload = {"matches": [{"path": "project-knowledge/01-current/current-work.md", "score": 1.0}]}
payload = {"matches": [{"path": "workspaces/fidelity/project-knowledge/01-current/current-work.md", "score": 1.0}]}
self.assertIsInstance(json.dumps(payload), str)
def test_build_uses_workspace_json_paths(self) -> None:

View File

@@ -34,12 +34,12 @@ class ProfileTests(unittest.TestCase):
self.assertEqual(profile.inbox_dir("demo", root=root), root / "workspaces" / "demo" / "inbox")
self.assertEqual(profile.index_dir("demo", root=root), root / ".aiw" / "indexes" / "demo")
def test_defaults_preserve_current_root_paths(self) -> None:
def test_defaults_use_isolated_workspace_paths(self) -> None:
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)
self.assertEqual(profile.knowledge_dir("missing", root=root), root / "project-knowledge")
self.assertEqual(profile.inbox_dir("missing", root=root), root / "ai" / "inbox")
self.assertEqual(profile.knowledge_dir("missing", root=root), root / "workspaces" / "missing" / "project-knowledge")
self.assertEqual(profile.inbox_dir("missing", root=root), root / "workspaces" / "missing" / "inbox")
self.assertEqual(profile.index_dir("missing", root=root), root / ".aiw" / "indexes" / "missing")
def test_relative_to_root_handles_external_paths(self) -> None:

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3
"""Read local Mattermost mirror evidence for agent prompts.
The proxy mirror under ai/inbox/mattermost-mirror is the preferred Mattermost
The proxy mirror under the active profile inbox is the preferred Mattermost
evidence source when present. This reader gives commands a stable way to load a
small focused view and fall back to the older sync artifacts when the mirror is
not available.

View File

@@ -56,7 +56,7 @@ class ContextMCPTests(unittest.TestCase):
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)
profile = root / "profiles" / "fidelity" / "profile.md"
current = root / "project-knowledge" / "01-current" / "current-work.md"
current = root / "workspaces" / "fidelity" / "project-knowledge" / "01-current" / "current-work.md"
profile.parent.mkdir(parents=True)
current.parent.mkdir(parents=True)
profile.write_text("# Fidelity", encoding="utf-8")
@@ -79,7 +79,7 @@ class ContextMCPTests(unittest.TestCase):
def test_communication_latest_reads_bounded_records(self) -> None:
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)
latest = root / "ai" / "inbox" / "mattermost-mirror" / "latest.jsonl"
latest = root / "workspaces" / "fidelity" / "inbox" / "mattermost-mirror" / "latest.jsonl"
latest.parent.mkdir(parents=True)
for index in range(3):
latest.write_text("", encoding="utf-8") if index == 0 else None
@@ -96,7 +96,7 @@ class ContextMCPTests(unittest.TestCase):
def test_communication_latest_filters_to_profile_channels_by_default(self) -> None:
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)
latest = root / "ai" / "inbox" / "mattermost-mirror" / "latest.jsonl"
latest = root / "workspaces" / "fidelity" / "inbox" / "mattermost-mirror" / "latest.jsonl"
profile_config = root / "profiles" / "fidelity" / "context-sources.json"
latest.parent.mkdir(parents=True)
profile_config.parent.mkdir(parents=True)
@@ -122,7 +122,7 @@ class ContextMCPTests(unittest.TestCase):
def test_communication_latest_can_include_all_channels(self) -> None:
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)
latest = root / "ai" / "inbox" / "mattermost-mirror" / "latest.jsonl"
latest = root / "workspaces" / "fidelity" / "inbox" / "mattermost-mirror" / "latest.jsonl"
profile_config = root / "profiles" / "fidelity" / "context-sources.json"
latest.parent.mkdir(parents=True)
profile_config.parent.mkdir(parents=True)
@@ -146,8 +146,8 @@ class ContextMCPTests(unittest.TestCase):
def test_project_search_skips_templates(self) -> None:
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)
real = root / "project-knowledge" / "03-context" / "project.md"
template = root / "project-knowledge" / "09-templates" / "daily.md"
real = root / "workspaces" / "fidelity" / "project-knowledge" / "03-context" / "project.md"
template = root / "workspaces" / "fidelity" / "project-knowledge" / "09-templates" / "daily.md"
real.parent.mkdir(parents=True)
template.parent.mkdir(parents=True)
real.write_text("Important XFlow context", encoding="utf-8")
@@ -167,7 +167,7 @@ class ContextMCPTests(unittest.TestCase):
index.parent.mkdir(parents=True)
index.write_text(json.dumps({
"chunk_id": "abc",
"path": "project-knowledge/03-context/project.md",
"path": "workspaces/fidelity/project-knowledge/03-context/project.md",
"heading": "XFlow",
"text": "Dismissal lifecycle sequencing for XFlow",
"mtime": 1.0,
@@ -185,7 +185,7 @@ class ContextMCPTests(unittest.TestCase):
def test_memory_hybrid_search_falls_back_without_index(self) -> None:
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)
real = root / "project-knowledge" / "03-context" / "project.md"
real = root / "workspaces" / "fidelity" / "project-knowledge" / "03-context" / "project.md"
real.parent.mkdir(parents=True)
real.write_text("Important XFlow context", encoding="utf-8")

View File

@@ -34,7 +34,7 @@ Use OpenCode as the daily AI entry point for this workspace without losing proje
- Shared workflow/rule content can stay centralized in `.agents/` while OpenCode keeps using `.opencode/`.
- The main context command reads the reusable `core/`, active profile, stable workspace files, and today's log.
- Stable context is split by systems, workstreams, process, people, and decisions so the agent can pull the right layer instead of overloading one project file.
- Live communication context can be refreshed into `ai/inbox/` using the configured connector.
- Live communication context can be refreshed into the active profile inbox using the configured connector.
- Direct prompts are also treated as memory opportunities, so the agent can update workspace context during normal conversation.
- Daily updates go back into the workspace, so later prompts inherit better context.
- The local compaction plugin helps preserve the most important workspace context during long sessions.

View File

@@ -7,6 +7,6 @@ Recommended usage:
- `mattermost-mirror/` is the preferred local Mattermost evidence source when present. It stores `latest.*`, `by-date/`, `channels/`, `threads/`, and `refs/` views from the local proxy mirror.
- `mattermost-latest.md` contains the legacy most recent sync capture
- timestamped snapshots can be stored here if needed
- durable facts should be promoted into `project-knowledge/06-daily/`, `project-knowledge/01-current/`, `project-knowledge/02-work-items/`, `project-knowledge/03-context/`, `project-knowledge/04-people/`, or `project-knowledge/05-decisions/`
- durable facts should be promoted into `workspaces/fidelity/project-knowledge/06-daily/`, `workspaces/fidelity/project-knowledge/01-current/`, `workspaces/fidelity/project-knowledge/02-work-items/`, `workspaces/fidelity/project-knowledge/03-context/`, `workspaces/fidelity/project-knowledge/04-people/`, or `workspaces/fidelity/project-knowledge/05-decisions/`
This directory is intentionally treated as an inbox, not as the final source of truth.

View File

@@ -14,14 +14,14 @@ Common terms used in the Fidelity project knowledge vault.
## Workspace Terms
- `project-knowledge`: this Obsidian vault; transferable Fidelity project knowledge.
- `workspaces/fidelity/project-knowledge`: this Obsidian vault; transferable Fidelity project knowledge.
- `agent-memory`: agent operating rules outside this vault.
- `operational memory`: curated file-based memory that helps future sessions reason accurately.
- `daily log`: same-day evidence and evolving findings in `project-knowledge/06-daily/`.
- `state`: near-term active work and priorities in `project-knowledge/01-current/`.
- `work item`: canonical memory for a ticket, story, task, or investigation in `project-knowledge/02-work-items/`.
- `stable context`: durable project knowledge under `project-knowledge/03-context/`.
- `inbox`: raw or lightly processed communication evidence under `ai/inbox/`.
- `daily log`: same-day evidence and evolving findings in `workspaces/fidelity/project-knowledge/06-daily/`.
- `state`: near-term active work and priorities in `workspaces/fidelity/project-knowledge/01-current/`.
- `work item`: canonical memory for a ticket, story, task, or investigation in `workspaces/fidelity/project-knowledge/02-work-items/`.
- `stable context`: durable project knowledge under `workspaces/fidelity/project-knowledge/03-context/`.
- `inbox`: raw or lightly processed communication evidence under `workspaces/fidelity/inbox/`.
- `promotion`: moving high-confidence evidence into canonical memory.
- `memory interface`: project-agnostic scripts under `scripts/memory/` that create, search, query, and validate project knowledge without coupling the workspace to Obsidian.

View File

@@ -84,10 +84,10 @@ Goal:
## Rules Of Thumb
- `project-knowledge/06-daily/` is dated work evidence.
- `project-knowledge/01-current/` is what matters now.
- `project-knowledge/02-work-items/` is canonical ticket memory.
- `project-knowledge/03-context/` is durable project knowledge.
- `project-knowledge/04-people/` is collaborator and role memory.
- `project-knowledge/05-decisions/` is durable decision history.
- `ai/inbox/` and generated files are raw evidence, not promoted memory.
- `workspaces/fidelity/project-knowledge/06-daily/` is dated work evidence.
- `workspaces/fidelity/project-knowledge/01-current/` is what matters now.
- `workspaces/fidelity/project-knowledge/02-work-items/` is canonical ticket memory.
- `workspaces/fidelity/project-knowledge/03-context/` is durable project knowledge.
- `workspaces/fidelity/project-knowledge/04-people/` is collaborator and role memory.
- `workspaces/fidelity/project-knowledge/05-decisions/` is durable decision history.
- `workspaces/fidelity/inbox/` and generated files are raw evidence, not promoted memory.

View File

@@ -10,7 +10,7 @@ tags:
# Start Here
Use this note as the entry point when opening `project-knowledge/` as the Obsidian vault.
Use this note as the entry point when opening `workspaces/fidelity/project-knowledge/` as the Obsidian vault.
This vault is the Fidelity project second brain. It is meant to be useful to the engineer, a new teammate, or an AI agent consuming project context. Agent implementation rules live outside this vault in `agent-memory/`.
@@ -75,7 +75,7 @@ Read these first:
Daily notes live in:
```text
project-knowledge/06-daily/
workspaces/fidelity/project-knowledge/06-daily/
```
Use the latest dated note for recent evidence, but promote durable facts into `01-current/`, `02-work-items/`, or `03-context/` when they should survive beyond the day.
@@ -86,7 +86,7 @@ Use the latest dated note for recent evidence, but promote durable facts into `0
Inbox and generated files are evidence, not durable memory by default.
- `ai/inbox/`
- `workspaces/fidelity/inbox/`
- `scripts/mattermost/generated/`
- `scripts/slack/generated/`

View File

@@ -15,7 +15,7 @@ tags:
- Track REST migration findings
- Debug Discourse and AO issues
- Prepare better updates for the current manager or stakeholder through Mattermost
- Follow up on active tickets through `project-knowledge/02-work-items/`, especially branch maintenance for `PDIAP-15838` and implementation planning for `PDIAP-15836` / `PDIAP-12284`
- Follow up on active tickets through `workspaces/fidelity/project-knowledge/02-work-items/`, especially branch maintenance for `PDIAP-15838` and implementation planning for `PDIAP-15836` / `PDIAP-12284`
- `PDIAP-15765` is done and `PDIAP-14859` is also done
- `PDIAP-15838` is Done from a Jira/status perspective after external review feedback was addressed, but its draft PR must remain unmerged and kept current with `main` until REST backend production readiness and the required REST-toggle consumer validation window allow merge
- `PDIAP-15836` has moved to In Progress. David found a possible minimal dismissal fix path that would not require removing `UIHostingController`, but Jeff directed David to do the `PDIAP-15836` dismissal/lifecycle work and `PDIAP-12284` UIKit-removal work in the same branch because both are disruptive enough to require consumer testing.

View File

@@ -12,44 +12,44 @@ tags:
Use this file as the quick summary for active Jira-linked work.
Detailed ticket memory now lives under `project-knowledge/02-work-items/`.
Detailed ticket memory now lives under `workspaces/fidelity/project-knowledge/02-work-items/`.
Update the per-ticket files first when scope, status, sequencing, or communication framing changes materially.
## Current
- `PDIAP-15838` - Remove Apollo for iOS
Detail: `project-knowledge/02-work-items/pdiap-15838.md`
Detail: `workspaces/fidelity/project-knowledge/02-work-items/pdiap-15838.md`
Current note: ticket moved to Done after external review feedback was addressed, but the draft PR stays unmerged. Keep the branch up to date with `main` until REST backend is live in production and REST toggles have been enabled for consumers for the required validation window; expected merge timing is at least 30 days out. May 13 follow-up validation succeeded on iOS after Raj enabled the production LaunchDarkly toggle for the specific production test user's MID.
- `PDIAP-15836` - Modernize dismissal delegate lifecycle sequencing for pure SwiftUI environment
Detail: `project-knowledge/02-work-items/pdiap-15836.md`
Detail: `workspaces/fidelity/project-knowledge/02-work-items/pdiap-15836.md`
Current note: moved to In Progress on May 7. David found a possible minimal dismissal fix path that would not require removing `UIHostingController`, but Jeff directed David to do the dismissal/lifecycle work and `PDIAP-12284` UIKit-removal work in the same branch because both changes require consumer testing. A May 11 simulator log review suggests the tested SwiftUI-host path fires delegate/session-clear callbacks only after host-disappearance confirmation, but broader branch and consumer validation are still needed.
- `PDIAP-12284` - Remove UIKit wrapping from XFlow
Detail: `project-knowledge/02-work-items/pdiap-12284.md`
Detail: `workspaces/fidelity/project-knowledge/02-work-items/pdiap-12284.md`
Current note: moved to In Progress on May 12 and should be handled with `PDIAP-15836` in the same branch. Quy confirmed both stories can remain In Progress together, so no immediate Jira restructuring is required. Current implementation direction is to avoid Fid4 per-flow host-mode mapping and instead evaluate XFlowViewMaker-owned global host-mode resolution, with SwiftUI as default and `UIHostingController` only as an explicit temporary fallback. May 12 implementation pass resolved earlier shape concerns with neutral enum names, `iOS-XflowUIKitHostEnabled`, SwiftUI default semantics, and `AnyView` removed from builder internals. Fid4 now compiles after manual dependency/build handling. May 13 AccountLink runtime validation looks good for both SwiftUI-default and forced UIKit-host paths. May 14 SampleApp work added explicit UIKit-host vs SwiftUI-host validation paths. May 20-21 status: sessions 004, 005, 008, and 009 confirmed full validation for HybridBloomAccountOpening (both hosts, full lifecycle/dismissal confirmed), HybridBrokerageAccountOpening (both hosts, full lifecycle confirmed), and HybridYouthAccountOpening (both hosts, full lifecycle/dismissal confirmed, resolving the dismissal gap). Remaining gaps are accountlink UIKit host, AODeeplinkLaunchView (both toggle branches and dismissal), and launch wrappers/common-launch flows. Draft PRs were opened for XFlowSDK and XFlowViewMaker on May 20 while validation continues.
## Backlog / Future Reference
- `PDIAP-11962` - Closure of secret scanning alerts
Detail: `project-knowledge/02-work-items/pdiap-11962.md`
Detail: `workspaces/fidelity/project-knowledge/02-work-items/pdiap-11962.md`
Current note: prior closure was submitted on October 9, 2025 and Matthew closed earlier alerts/story on March 5, 2026. Two Google API Key alerts remain open and appear tied to old April 18, 2025 work, not the current REST story.
- `PDIAP-11961` - Remediation of Exposed Secrets in XFlow iOS SDK - Request for Rotation/Invalidation
Detail: `project-knowledge/02-work-items/pdiap-11961.md`
Detail: `workspaces/fidelity/project-knowledge/02-work-items/pdiap-11961.md`
Current note: related unassigned story for remaining Google API Key alerts; not a current priority but should be preserved for future planning.
- `PDIAP-11562` - Investigate if XFlow is being built as debug
Detail: `project-knowledge/02-work-items/pdiap-11562.md`
Detail: `workspaces/fidelity/project-knowledge/02-work-items/pdiap-11562.md`
Current note: likely tied to the `XFlowSDK_Debug` variable check in the XFlow podspec and Fid4 consumption, not Sparta-team work; historical Slack suggests Jenkins may build the xcframework path while local development consumes XFlow as a normal library, but this needs current validation.
- `PDIAP-12226`, `PDIAP-12227`, `PDIAP-12228` - Sparta backlog items
Details: `project-knowledge/02-work-items/pdiap-12226.md`, `project-knowledge/02-work-items/pdiap-12227.md`, `project-knowledge/02-work-items/pdiap-12228.md`
Details: `workspaces/fidelity/project-knowledge/02-work-items/pdiap-12226.md`, `workspaces/fidelity/project-knowledge/02-work-items/pdiap-12227.md`, `workspaces/fidelity/project-knowledge/02-work-items/pdiap-12228.md`
Current note: Slack history ties these to the SpartaSDK follow-up split from initialization/JSON decoding, grid rendering/core components, and interactive/lifecycle behavior. Decoding and rendering are partially complete; interactive components remain blocked by unresolved mobile JavaScript execution.
## Recently Completed
- `PDIAP-16167` - AccountLink - XFlow causing web view rewrites investigation
Detail: `project-knowledge/02-work-items/pdiap-16167.md`
Detail: `workspaces/fidelity/project-knowledge/02-work-items/pdiap-16167.md`
Current note: moved to Done after publishing the Confluence report and sending the findings to Zachary / Jira / Discourse. Future references should frame this as a consumer-side SwiftUI presentation-topology issue, not an XFlow/XFlowViewMaker regression.

View File

@@ -22,4 +22,4 @@ Keep active Jira-linked work in one canonical place so standups, manager updates
- Keep titles exact when approved or explicitly confirmed.
- If the title is not confirmed, store the Jira ID and current framing without inventing a final title.
- Update the ticket file when scope, sequencing, points, status, rollout implications, or reproducibility meaningfully change.
- Keep `project-knowledge/01-current/work-items.md` as a short bridge summary, not the primary source of detailed ticket context.
- Keep `workspaces/fidelity/project-knowledge/01-current/work-items.md` as a short bridge summary, not the primary source of detailed ticket context.

View File

@@ -44,7 +44,7 @@ When the format fits, prefer:
- If the previous calendar day has no project activity because of weekend, holiday, or OOO, use the latest prior day with Mattermost activity.
- For standups, when a Jira item has multiple concrete updates, use one top-level `JIRA-ID - Title` bullet and indented markdown sub-bullets instead of repeating the same Jira line.
- For Mattermost-ready standups, include a visible blank line before `Today:` and `Blockers:` section headers so copy/paste rendering is correct without manual edits.
- When a flow/page shorthand could be ambiguous, prefer the real flow identifier and page name from `project-knowledge/03-context/workstreams/flow-page-references.md`.
- When a flow/page shorthand could be ambiguous, prefer the real flow identifier and page name from `workspaces/fidelity/project-knowledge/03-context/workstreams/flow-page-references.md`.
- For standups that may also be sent to Teams, prefer plain audience-friendly wording over internal implementation shorthand; avoid terms like `fallback` unless the audience already has the necessary context.
- When a release is waiting on approvals or pipeline movement, make the concurrent work explicit so the update does not imply idle waiting.
- Avoid vague phrasing such as:

Some files were not shown because too many files have changed in this diff Show More