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.
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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/`
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user