diff --git a/.opencode/agents/fidelity.md b/.opencode/agents/fidelity.md index 78aee52..3478568 100644 --- a/.opencode/agents/fidelity.md +++ b/.opencode/agents/fidelity.md @@ -18,6 +18,7 @@ Behavior rules: - Promote information carefully: - daily facts go to `ai/logs/YYYY-MM-DD.md` - current priorities go to `ai/state/current.md` + - active Jira-linked work goes to `ai/state/work-items.md` - durable project knowledge goes to `ai/context/project.md` - confirmed team or manager communication preferences go to `ai/context/people/jeff.md` - confirmed decisions go to `ai/context/decisions/` diff --git a/.opencode/commands/mattermost-sync.md b/.opencode/commands/mattermost-sync.md index 8e1d363..18f0bb3 100644 --- a/.opencode/commands/mattermost-sync.md +++ b/.opencode/commands/mattermost-sync.md @@ -22,6 +22,7 @@ Then: - automatically promote explicit, project-relevant, high-confidence facts - default destination is `ai/logs/$(date +%F).md` - update `ai/state/current.md` only for facts that materially change the current work window +- update `ai/state/work-items.md` for explicit Jira IDs, approved titles, points, scope, and status notes - 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 diff --git a/.opencode/commands/promote-project-context.md b/.opencode/commands/promote-project-context.md index e64da26..e27e2d1 100644 --- a/.opencode/commands/promote-project-context.md +++ b/.opencode/commands/promote-project-context.md @@ -9,6 +9,7 @@ Read: @ai/AGENTS.md @ai/context/project.md @ai/state/current.md +@ai/state/work-items.md @knowledge/workspace-model.md @knowledge/communication-rules.md @knowledge/memory-promotion-rules.md @@ -32,6 +33,7 @@ Instructions: - Update the smallest correct set of files among: - `ai/logs/$(date +%F).md` - `ai/state/current.md` + - `ai/state/work-items.md` - `ai/context/project.md` - `ai/context/decisions/*.md` - Prefer concrete project updates over broad summaries diff --git a/.opencode/commands/standup.md b/.opencode/commands/standup.md index bdcd766..a460c42 100644 --- a/.opencode/commands/standup.md +++ b/.opencode/commands/standup.md @@ -4,21 +4,31 @@ description: Draft a standup from the latest Fidelity workspace context Generate a standup update using the latest workspace state. +First, refresh Mattermost context before drafting: + +!`if [ -n "$FIDELITY_MATTERMOST_SYNC_CMD" ]; then bash -lc "$FIDELITY_MATTERMOST_SYNC_CMD" >/dev/null 2>&1 || true; elif [ -f scripts/mattermost/sync.sh ]; then bash scripts/mattermost/sync.sh >/dev/null 2>&1 || true; fi` + Read: @prompts/standup.md @ai/AGENTS.md @ai/context/project.md @ai/state/current.md +@ai/state/work-items.md @knowledge/communication-rules.md +@knowledge/agent-memory-rules.md + +Yesterday's log, if present: + +!`y=$(date -v-1d +%F 2>/dev/null || python3 - <<'PY'\nfrom datetime import datetime, timedelta\nprint((datetime.now().astimezone() - timedelta(days=1)).strftime('%Y-%m-%d'))\nPY\n); if [ -f "ai/logs/$y.md" ]; then echo "$y"; cat "ai/logs/$y.md"; else echo "No log exists for yesterday."; fi` Today's log, if present: !`if [ -f ai/logs/$(date +%F).md ]; then cat ai/logs/$(date +%F).md; else echo "No log exists for today yet."; fi` -If no log exists for today, also inspect the most recent previous log: +Latest Mattermost context, preferring inbox and falling back to generated JSONL: -!`latest=$(ls -1 ai/logs 2>/dev/null | sort | tail -n 1); if [ -n "$latest" ]; then echo "$latest"; cat "ai/logs/$latest"; else echo "No logs available."; fi` +!`if [ -s ai/inbox/mattermost-latest.md ]; then cat ai/inbox/mattermost-latest.md; elif [ -s scripts/mattermost/generated/mattermost_context.jsonl ]; then cat scripts/mattermost/generated/mattermost_context.jsonl; else echo "No Mattermost context available."; fi` Return a standup that is: diff --git a/.opencode/commands/sync-context.md b/.opencode/commands/sync-context.md index a3c937c..958a509 100644 --- a/.opencode/commands/sync-context.md +++ b/.opencode/commands/sync-context.md @@ -11,6 +11,7 @@ Read: @ai/context/project.md @ai/context/people/jeff.md @ai/state/current.md +@ai/state/work-items.md @knowledge/workspace-model.md @knowledge/communication-rules.md @knowledge/agent-memory-rules.md @@ -29,6 +30,7 @@ Instructions: - Decide whether the new information belongs in: - today's log - `ai/state/current.md` + - `ai/state/work-items.md` - `ai/context/project.md` - `ai/context/people/jeff.md` - `ai/context/decisions/` diff --git a/AGENTS.md b/AGENTS.md index 2ce6760..0d7cc71 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -17,6 +17,7 @@ The detailed operating rules live in: - `ai/context/project.md` - `ai/context/people/jeff.md` - `ai/state/current.md` +- `ai/state/work-items.md` - `knowledge/workspace-model.md` - `knowledge/communication-rules.md` @@ -33,6 +34,7 @@ These are also loaded through `opencode.json`. - `mattermost-sync` should automatically promote high-confidence project facts without asking what to promote. - Prefer `ai/logs/` as the default destination for new Mattermost-derived facts. - Promote to `ai/state/current.md` only when the fact materially changes active work over the next few days. +- Keep explicit Jira IDs and approved titles in `ai/state/work-items.md` when they are useful for future standups or manager updates. - Promote to `ai/context/project.md` only when the fact changes durable project understanding. - 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. diff --git a/ai/AGENTS.md b/ai/AGENTS.md index 9a70097..ebbbbed 100644 --- a/ai/AGENTS.md +++ b/ai/AGENTS.md @@ -70,6 +70,7 @@ When drafting messages for Jeff: - Auto-promote direct user-provided project facts when they are clearly project-relevant, explicit, and useful for future sessions - Default promotion target is today's log - Promote to `ai/state/current.md` only when the fact changes the active work window +- Maintain `ai/state/work-items.md` with explicit Jira IDs, approved titles, and currently relevant scope/status notes - Promote to `ai/context/project.md` only when the fact is durable beyond the current work window - Update existing memory when the new information is a correction, clarification, or refinement of something already stored - Prefer updating stable project context over appending generic operational summaries diff --git a/ai/state/work-items.md b/ai/state/work-items.md new file mode 100644 index 0000000..c6aaf5f --- /dev/null +++ b/ai/state/work-items.md @@ -0,0 +1,16 @@ +# Active Work Items + +Use this file to keep current Jira-linked work visible across sessions. + +Update it only with explicit, project-relevant information that is useful for future standups, status updates, or debugging context. + +## Current + +- `PDIAP-15765` - AO DOB field error not showing investigation + Current note: issue was moved back to In Progress temporarily and should move to Done after the new sprint starts. + +- `PDIAP-15836` - Modernize dismissal delegate lifecycle sequencing for pure SwiftUI environment + Current note: story created, sized at 8 points, and aligned with epic `26Q2 - Updating XFlowSDK to Decouple and Fix ApexKit Dependencies (Split Part 2)`. + +- `PDIAP-15838` + Current note: REST deprecation work item approved at 8 points to remove Apollo, GraphQL-specific networking code, related tests and mocks, and transport feature flags so REST remains. diff --git a/knowledge/agent-memory-rules.md b/knowledge/agent-memory-rules.md index 5b1c62b..9db9969 100644 --- a/knowledge/agent-memory-rules.md +++ b/knowledge/agent-memory-rules.md @@ -78,6 +78,17 @@ 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 +### `ai/state/work-items.md` + +Use 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 + +This file should help standups and manager updates mention work items precisely. + ### `ai/context/project.md` Use for durable project knowledge that should survive beyond the current work window. diff --git a/knowledge/memory-promotion-rules.md b/knowledge/memory-promotion-rules.md index 87f31da..75d8c33 100644 --- a/knowledge/memory-promotion-rules.md +++ b/knowledge/memory-promotion-rules.md @@ -41,6 +41,18 @@ 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 `ai/state/work-items.md` + +Use this file for: + +- explicit Jira IDs +- approved or explicit story titles +- current story points +- current scope notes +- active status notes that still matter for future updates + +If a Jira item is likely to appear again in standups or Jeff updates, it belongs here. + ### Promote to `ai/context/project.md` Use project context only for durable project knowledge that should survive beyond the current work window, such as: diff --git a/opencode.json b/opencode.json index 976a331..89deccf 100644 --- a/opencode.json +++ b/opencode.json @@ -44,6 +44,7 @@ "./ai/context/project.md", "./ai/context/people/jeff.md", "./ai/state/current.md", + "./ai/state/work-items.md", "./ai/context/decisions/rest-vs-graphql.md", "./ai/context/decisions/discourse-handling.md", "./ai/AGENTS.md", diff --git a/prompts/standup.md b/prompts/standup.md index 6752af3..4c3c8d5 100644 --- a/prompts/standup.md +++ b/prompts/standup.md @@ -1,15 +1,17 @@ # Standup Prompt -Use the latest files in `ai/state/current.md`, `ai/context/project.md`, `ai/context/people/jeff.md`, and today's log. +Use `ai/state/current.md`, `ai/state/work-items.md`, `ai/context/project.md`, `ai/context/people/jeff.md`, yesterday's log, today's log if present, and the latest available Mattermost context. Generate a standup update for an iOS engineer working on Fidelity. Requirements: - Use the most recent context only -- Be specific about what was worked on +- Be specific about what was worked on yesterday - Mention debugging findings only if they materially changed understanding - Clarify auth-dependent behavior when relevant +- Mention Jira IDs and approved titles when they are available and clearly tied to the reported work +- Prefer story-based reporting when the work maps clearly to a Jira item - Avoid vague phrases and generic progress language - Keep it concise and ready to send