kushi-agents 4.8.2 → 4.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/package.json +2 -2
  2. package/plugin/instructions/comprehensive-structured-capture.instructions.md +250 -0
  3. package/plugin/instructions/evidence-layout-canonical.instructions.md +20 -12
  4. package/plugin/instructions/evidence-thoroughness.instructions.md +119 -225
  5. package/plugin/instructions/identity-resolution.instructions.md +11 -8
  6. package/plugin/instructions/meetings-verbatim-required.instructions.md +6 -4
  7. package/plugin/instructions/scope-boundaries.instructions.md +1 -1
  8. package/plugin/instructions/snapshot-vs-stream.instructions.md +25 -1
  9. package/plugin/instructions/verbatim-by-default.instructions.md +21 -1
  10. package/plugin/instructions/weekly-csc.instructions.md +335 -0
  11. package/plugin/instructions/workiq-only.instructions.md +140 -1
  12. package/plugin/skills/ask-project/SKILL.md +26 -6
  13. package/plugin/skills/bootstrap-project/SKILL.md +17 -5
  14. package/plugin/skills/build-state/SKILL.md +30 -7
  15. package/plugin/skills/consolidate-evidence/SKILL.md +27 -4
  16. package/plugin/skills/pull-ado/SKILL.md +85 -9
  17. package/plugin/skills/pull-crm/SKILL.md +87 -10
  18. package/plugin/skills/pull-email/SKILL.md +75 -11
  19. package/plugin/skills/pull-meetings/SKILL.md +83 -8
  20. package/plugin/skills/pull-onenote/SKILL.md +86 -9
  21. package/plugin/skills/pull-sharepoint/SKILL.md +73 -10
  22. package/plugin/skills/pull-teams/SKILL.md +78 -9
  23. package/plugin/skills/refresh-project/SKILL.md +16 -5
  24. package/plugin/skills/self-check/SKILL.md +11 -0
  25. package/plugin/skills/self-check/run.ps1 +208 -0
  26. package/plugin/skills/setup/SKILL.md +16 -15
  27. package/plugin/templates/init/integrations.template.yml +38 -24
  28. package/plugin/templates/init/m365-auth.template.json +3 -3
  29. package/plugin/templates/init/project-evidence.template.yml +5 -5
  30. package/plugin/templates/snapshot/DEPRECATED-v4.9.0.md +37 -0
  31. package/plugin/templates/weekly/_index_entities.template.yml +26 -0
  32. package/plugin/templates/weekly/ado-csc.template.md +113 -0
  33. package/plugin/templates/weekly/crm-csc.template.md +103 -0
  34. package/plugin/templates/weekly/email-csc.template.md +114 -0
  35. package/plugin/templates/weekly/meetings-csc.template.md +112 -0
  36. package/plugin/templates/weekly/onenote-csc.template.md +95 -0
  37. package/plugin/templates/weekly/sharepoint-csc.template.md +98 -0
  38. package/plugin/templates/weekly/teams-csc.template.md +100 -0
@@ -0,0 +1,103 @@
1
+ ---
2
+ project: <project>
3
+ alias: <alias>
4
+ source: crm
5
+ week_start: <YYYY-MM-DD>
6
+ week_end: <YYYY-MM-DD>
7
+ generated_at: <ISO timestamp>
8
+ kushi_version: 4.9.0
9
+ ---
10
+
11
+ # CRM CSC — Week of <YYYY-MM-DD> (Mon–Sun)
12
+
13
+ - **Project**: <project>
14
+ - **Alias**: <alias>
15
+ - **Source**: crm
16
+ - **Week**: <YYYY-MM-DD> → <YYYY-MM-DD> (ISO)
17
+ - **Generated**: <ISO timestamp>
18
+ - **Kushi version**: 4.9.0
19
+ - **REST calls**: <count> (Dataverse REST per `pull-crm` doctrine; WorkIQ not used for CRM)
20
+
21
+ ## Source Basis (week-level)
22
+
23
+ - Dataverse REST against `<environment_url>` for record ids in `boundaries.crm.record_ids`. Headers per Rule 1 (formatted values). FieldMap source: <cached | discovered this run>.
24
+ - Annotations (notes) added or modified in window are captured as Topics / Decisions / Customer Asks sub-bullets.
25
+
26
+ ## Entities
27
+
28
+ <!-- One CSC block per CRM record modified this week. Q&A and Who Said What OMITTED for CRM. -->
29
+
30
+ ## <Record title> {#<record-anchor>}
31
+
32
+ - **Source basis**: Dataverse REST `GET /api/data/v9.2/<entitySet>(<id>)?$select=...&$expand=Annotations(...)` with formatted-value annotations
33
+ - **Entity id**: `crm://entity=<logicalName>/id=<guid>`
34
+ - **MSX opp / request id**: <id>
35
+ - **Status**: <statecode formatted> / <statuscode formatted>
36
+ - **Owner**: <owner display>
37
+ - **Coverage window**: <YYYY-MM-DD> → <YYYY-MM-DD>
38
+ - **Last touched**: <ISO timestamp>
39
+
40
+ ### Participants / Present
41
+ <!-- Owner + assignedTo + every contact referenced + every annotation author. -->
42
+ - <name> — owner
43
+ - <name> — contact
44
+ - <name> — note author
45
+ - ...
46
+
47
+ ### Topics Discussed
48
+ <!-- Long-text engagement fields + every annotation (note) added/modified in window. -->
49
+ - <field name e.g. Engagement objectives>: <summary of long-text content as bullet sub-points> [source: <entitySet>(<id>)#<fieldLogicalName>]
50
+ - <sub-point from field>
51
+ - <Annotation subject> (by <author>, <createdon>): <summary of notetext> [source: annotationid=<id>]
52
+ - ...
53
+
54
+ ### Decisions
55
+ <!-- statecode/statuscode transitions, decisions captured in notes. -->
56
+ - **Decided**: <wording> — **by**: <name> — **rationale**: <why> [source: ...]
57
+ - _None surfaced._
58
+
59
+ ### Dates & Numbers Shared
60
+ - <createdon | modifiedon | custom-date>: <value> — **context**: <what> [source: ...]
61
+ - <dollar amount | percentage | count>: <value> — **context**: <what> [source: ...]
62
+ - _None surfaced._
63
+
64
+ ### Action Items
65
+ - [ ] <owner | unassigned> — <action> — **due**: <date | unspecified> [source: ...]
66
+ - _None surfaced._
67
+
68
+ ### Next Steps
69
+ - <commitment surfaced in notes / fields> — **expected by**: <date>
70
+ - _None surfaced._
71
+
72
+ ### Open Questions / Unresolved
73
+ - <question raised in note> — **raised by**: <author> [source: annotationid=<id>]
74
+ - _None surfaced._
75
+
76
+ ### Risks / Blockers / Dependencies
77
+ - **Risk**: <desc> — **owner**: <name> — **mitigation**: <plan> [source: ...]
78
+ - _None surfaced._
79
+
80
+ ### Customer Asks
81
+ - <ask surfaced in long-text field / annotation> — **asked by**: <customer name> — **of**: <MS person> — **status**: <open | committed | declined> [source: ...]
82
+ - _None surfaced._
83
+
84
+ ### Artifacts / Links
85
+ <!-- Related records + URLs in fields. -->
86
+ - Related record: <entitySet>(<id>) — <relationship>
87
+ - <link title>: <url>
88
+ - _None surfaced._
89
+
90
+ ### Coverage Notes
91
+ - <e.g. "All N fields retrieved; M annotations fetched verbatim" / "field-map discovery probe ran; cached to crm.fieldMap">
92
+
93
+ ## Week-level Coverage Notes
94
+
95
+ - <Records retrieved vs. failed, env_url resolution, annotation drift>
96
+
97
+ ## Validation
98
+
99
+ - [ ] every record block uses canonical section order (Q&A + Who Said What OMITTED for CRM)
100
+ - [ ] no prose paragraphs anywhere
101
+ - [ ] no truncation markers
102
+ - [ ] every fact-bearing bullet has a citation
103
+ - [ ] `_index/entities.yml` upserted for every record with a CSC block
@@ -0,0 +1,114 @@
1
+ ---
2
+ project: <project>
3
+ alias: <alias>
4
+ source: email
5
+ week_start: <YYYY-MM-DD> # Monday of ISO week
6
+ week_end: <YYYY-MM-DD> # Sunday of ISO week
7
+ generated_at: <ISO timestamp>
8
+ kushi_version: 4.9.0
9
+ ---
10
+
11
+ # Email CSC — Week of <YYYY-MM-DD> (Mon–Sun)
12
+
13
+ - **Project**: <project>
14
+ - **Alias**: <alias>
15
+ - **Source**: email
16
+ - **Week**: <YYYY-MM-DD> → <YYYY-MM-DD> (ISO)
17
+ - **Generated**: <ISO timestamp>
18
+ - **Kushi version**: 4.9.0
19
+ - **WorkIQ calls**: <count> (request-ids cited per entity)
20
+
21
+ ## Source Basis (week-level)
22
+
23
+ - <One-line summary of WorkIQ enumeration + per-thread CSC calls, scope applied (boundaries.email.mailboxes/sender_domains/subject_keywords), what failed, what was deferred>
24
+ - See per-entity `Source basis` lines for granular provenance.
25
+
26
+ ## Entities
27
+
28
+ <!-- One CSC block per email thread (conversationId) touched this week, in chronological order by last_touched. -->
29
+
30
+ ## <Thread subject> {#<thread-anchor>}
31
+
32
+ - **Source basis**: WorkIQ request-id <guid>, fidelity csc-full
33
+ - **Coverage window**: <YYYY-MM-DD> → <YYYY-MM-DD>
34
+ - **Last touched**: <ISO timestamp>
35
+
36
+ ### Participants / Present
37
+ <!-- Every sender + every recipient across the thread. Do NOT truncate. -->
38
+ - <name> <email@addr> — sender (initiated thread)
39
+ - <name> <email@addr> — recipient + responder
40
+ - ...
41
+
42
+ ### Topics Discussed
43
+ <!-- One bullet per distinct subject; sub-bullets for detail. -->
44
+ - <topic>
45
+ - <sub-detail>
46
+ - <sub-detail>
47
+ - ...
48
+
49
+ ### Q & A
50
+ - **Q** (asked by <name>): <question> — **A** (answered by <name>): <answer> [source: WorkIQ req <id> · <iso-ts>]
51
+ - ...
52
+ - _None surfaced._
53
+
54
+ ### Who Said What (material statements)
55
+ <!-- Curated — positions stated, commitments made, pushback. NOT every utterance. 3-10 entries typical per 50-message thread. -->
56
+ - <name>: "<material statement>" [source: WorkIQ req <id> · <iso-ts>]
57
+ - ...
58
+ - _None surfaced._
59
+
60
+ ### Decisions
61
+ - **Decided**: <wording> — **by**: <name> — **rationale**: <why> — **rejected alternatives**: <what> [source: ...]
62
+ - ...
63
+ - _None surfaced._
64
+
65
+ ### Dates & Numbers Shared
66
+ - <value>: <exact> — **context**: <what> — **shared by**: <name> [source: ...]
67
+ - ...
68
+ - _None surfaced._
69
+
70
+ ### Action Items
71
+ - [ ] <owner | unassigned> — <action> — **due**: <date | unspecified> [source: ...]
72
+ - ...
73
+ - _None surfaced._
74
+
75
+ ### Next Steps
76
+ <!-- Forward-looking; distinct from Action Items (no hard owner+due). -->
77
+ - <commitment> — **expected by**: <approximate date | "next sync">
78
+ - _None surfaced._
79
+
80
+ ### Open Questions / Unresolved
81
+ - <question> — **raised by**: <name> — **why deferred**: <reason> [source: ...]
82
+ - _None surfaced._
83
+
84
+ ### Risks / Blockers / Dependencies
85
+ - **Risk**: <desc> — **owner**: <name> — **mitigation**: <plan | _None._> [source: ...]
86
+ - **Blocker**: <desc> — **blocking**: <what> — **owner**: <name> [source: ...]
87
+ - **Dependency**: <desc> — **on**: <what> — **owner**: <name> [source: ...]
88
+ - _None surfaced._
89
+
90
+ ### Customer Asks
91
+ - <ask> — **asked by**: <customer name> — **of**: <MS role/person> — **status**: <open | committed | declined> [source: ...]
92
+ - _None surfaced._
93
+
94
+ ### Artifacts / Links
95
+ <!-- Attachments on the thread + linked URLs. -->
96
+ - <attachment filename> — <type: attached to email>
97
+ - <link title>: <url>
98
+ - _None surfaced._
99
+
100
+ ### Coverage Notes
101
+ - <retrievable vs not, body-unavailable markers, deferred-retry refs>
102
+
103
+ ## Week-level Coverage Notes
104
+
105
+ - <Anything that affects the whole week and is not specific to one entity>
106
+ - <Deferred-retry markers written this week (cite paths)>
107
+
108
+ ## Validation
109
+
110
+ - [ ] every entity block uses canonical section order
111
+ - [ ] no prose paragraphs anywhere
112
+ - [ ] no truncation markers ("and N more", etc.)
113
+ - [ ] every fact-bearing bullet has a citation
114
+ - [ ] `_index/entities.yml` upserted for every entity in this file
@@ -0,0 +1,112 @@
1
+ ---
2
+ project: <project>
3
+ alias: <alias>
4
+ source: meetings
5
+ week_start: <YYYY-MM-DD>
6
+ week_end: <YYYY-MM-DD>
7
+ generated_at: <ISO timestamp>
8
+ kushi_version: 4.9.0
9
+ ---
10
+
11
+ # Meetings CSC — Week of <YYYY-MM-DD> (Mon–Sun)
12
+
13
+ - **Project**: <project>
14
+ - **Alias**: <alias>
15
+ - **Source**: meetings
16
+ - **Week**: <YYYY-MM-DD> → <YYYY-MM-DD> (ISO)
17
+ - **Generated**: <ISO timestamp>
18
+ - **Kushi version**: 4.9.0
19
+ - **WorkIQ calls**: <count> (one CSC call per meeting; one verbatim cascade per meeting)
20
+
21
+ ## Source Basis (week-level)
22
+
23
+ - Half A (verbatim/) captured for every meeting in `boundaries.meetings.series_join_urls` whose instance falls in the week. See sibling `Evidence/<alias>/meetings/verbatim/<YYYY-MM-DD-HHMM>_<slug>/` folders.
24
+ - Half B (CSC blocks below) built from each meeting's verbatim/ + WorkIQ CSC call. Every CSC bullet cites the verbatim/ folder where the underlying evidence lives.
25
+
26
+ ## Entities
27
+
28
+ <!-- One CSC block per meeting instance held this week. -->
29
+
30
+ ## <Meeting subject> {#<meeting-anchor>}
31
+ <!-- Anchor convention: <subject-slug>-<YYYY-MM-DD-HHMM> e.g. hca-weekly-sync-2026-05-21-1400 -->
32
+
33
+ - **Source basis**: WorkIQ request-id <guid>, fidelity csc-full; raw audit at `meetings/verbatim/<YYYY-MM-DD-HHMM>_<slug>/`
34
+ - **Entity id**: `meetings://joinurl=<urlencoded>&start=<iso>`
35
+ - **Verbatim folder**: `Evidence/<alias>/meetings/verbatim/<YYYY-MM-DD-HHMM>_<slug>/`
36
+ - **Verbatim classification**: <transcript-complete-text | transcript-complete-vtt | transcript-complete-summary-only | transcript-missing-chat-only | unrecoverable>
37
+ - **Coverage window**: <YYYY-MM-DD HH:MM> → <YYYY-MM-DD HH:MM>
38
+ - **Last touched**: <ISO timestamp>
39
+
40
+ ### Participants / Present
41
+ <!-- Every attendee that spoke or was listed (required + optional + resource). -->
42
+ - <name> — role: organizer
43
+ - <name> — role: attendee
44
+ - ...
45
+
46
+ ### Topics Discussed
47
+ <!-- One bullet per distinct subject. A 45-min meeting covering 6 subjects MUST have ≥6 topic bullets. -->
48
+ - <topic>
49
+ - <sub-detail>
50
+ - ...
51
+
52
+ ### Q & A
53
+ - **Q** (asked by <name>): <question> — **A** (answered by <name>): <answer> [source: verbatim/<dir>/transcript.txt · <iso-ts>]
54
+ - _None surfaced._
55
+
56
+ ### Who Said What (material statements)
57
+ <!-- Curated: positions, commitments, pushback. NOT a verbatim utterance log — that lives in verbatim/transcript.txt. -->
58
+ - <name>: "<material quote>" [source: verbatim/<dir>/transcript.txt · <iso-ts>]
59
+ - _None surfaced._
60
+
61
+ ### Decisions
62
+ - **Decided**: <wording> — **by**: <name(s)> — **rationale**: <why> — **rejected alternatives**: <what> [source: verbatim/<dir>/transcript.txt · <iso-ts>]
63
+ - _None surfaced._
64
+
65
+ ### Dates & Numbers Shared
66
+ - <value> — **context**: <what> — **shared by**: <name> [source: verbatim/<dir>/transcript.txt · <iso-ts>]
67
+ - _None surfaced._
68
+
69
+ ### Action Items
70
+ - [ ] <owner | unassigned> — <action> — **due**: <date | unspecified> [source: verbatim/<dir>/transcript.txt · <iso-ts>]
71
+ - _None surfaced._
72
+
73
+ ### Next Steps
74
+ - <commitment> — **expected by**: <date | "next sync">
75
+ - _None surfaced._
76
+
77
+ ### Open Questions / Unresolved
78
+ - <question> — **raised by**: <name> — **why deferred**: <reason> [source: ...]
79
+ - _None surfaced._
80
+
81
+ ### Risks / Blockers / Dependencies
82
+ - **Risk**: <desc> — **owner**: <name> — **mitigation**: <plan> [source: ...]
83
+ - **Blocker**: <desc> — **blocking**: <what> — **owner**: <name> [source: ...]
84
+ - **Dependency**: <desc> — **on**: <what> — **owner**: <name> [source: ...]
85
+ - _None surfaced._
86
+
87
+ ### Customer Asks
88
+ - <ask> — **asked by**: <customer name> — **of**: <MS person> — **status**: <open | committed | declined> [source: ...]
89
+ - _None surfaced._
90
+
91
+ ### Artifacts / Links
92
+ <!-- Recording URL, files shared in meeting/chat, recap card. -->
93
+ - Recording: <SharePoint Stream URL> — source: `verbatim/<dir>/recording-url.txt`
94
+ - Recap card: `verbatim/<dir>/recap-card.md`
95
+ - <shared file>: <url> — shared in meeting
96
+ - _None surfaced._
97
+
98
+ ### Coverage Notes
99
+ - <transcript classification, what was retrievable, what was paste-recovered, what was unrecoverable; cite verbatim/<dir>/coverage.md>
100
+
101
+ ## Week-level Coverage Notes
102
+
103
+ - <e.g. "1 of 3 meetings had transcript-missing-chat-only; recording URL captured but transcription was not enabled.">
104
+
105
+ ## Validation
106
+
107
+ - [ ] every meeting has a sibling `verbatim/<YYYY-MM-DD-HHMM>_<slug>/` folder (self-check D13)
108
+ - [ ] every entity block uses canonical section order
109
+ - [ ] no prose paragraphs anywhere
110
+ - [ ] no truncation markers
111
+ - [ ] every fact-bearing bullet cites verbatim/<dir>/<file>
112
+ - [ ] `_index/entities.yml` upserted with `verbatim_folder` field for each meeting
@@ -0,0 +1,95 @@
1
+ ---
2
+ project: <project>
3
+ alias: <alias>
4
+ source: onenote
5
+ week_start: <YYYY-MM-DD>
6
+ week_end: <YYYY-MM-DD>
7
+ generated_at: <ISO timestamp>
8
+ kushi_version: 4.9.0
9
+ ---
10
+
11
+ # OneNote CSC — Week of <YYYY-MM-DD> (Mon–Sun)
12
+
13
+ - **Project**: <project>
14
+ - **Alias**: <alias>
15
+ - **Source**: onenote
16
+ - **Week**: <YYYY-MM-DD> → <YYYY-MM-DD> (ISO)
17
+ - **Generated**: <ISO timestamp>
18
+ - **Kushi version**: 4.9.0
19
+ - **WorkIQ calls**: <count> (one CSC call per page edited this week)
20
+
21
+ ## Source Basis (week-level)
22
+
23
+ - Tier A enumeration + per-page CSC calls per `workiq-only.instructions.md` Tier C. Playwright fallback: <not used | used for N pages with persistent BODY-NOT-EXPOSED>.
24
+
25
+ ## Entities
26
+
27
+ <!-- One CSC block per OneNote page edited this week. Q&A and Who Said What sections are OMITTED for OneNote (per CSC per-source applicability). -->
28
+
29
+ ## <Page title> {#<page-anchor>}
30
+
31
+ - **Source basis**: WorkIQ request-id <guid>, fidelity csc-full (Tier C per-page)
32
+ - **Entity id**: `onenote://page/wdpartid=<id>`
33
+ - **Section**: <section>.one — **Notebook**: <notebook>
34
+ - **Coverage window**: <YYYY-MM-DD> → <YYYY-MM-DD>
35
+ - **Last touched**: <ISO timestamp>
36
+
37
+ ### Participants / Present
38
+ <!-- Author + every editor who modified the page in window. -->
39
+ - <name> — author
40
+ - <name> — editor
41
+ - ...
42
+
43
+ ### Topics Discussed
44
+ <!-- One bullet per page heading / distinct subject. -->
45
+ - <heading / topic>
46
+ - <sub-point>
47
+ - ...
48
+
49
+ ### Decisions
50
+ - **Decided**: <wording> — **by**: <name> — **rationale**: <why> [source: WorkIQ req <id> · <iso-ts>]
51
+ - _None surfaced._
52
+
53
+ ### Dates & Numbers Shared
54
+ - <value> — **context**: <what> [source: ...]
55
+ - _None surfaced._
56
+
57
+ ### Action Items
58
+ - [ ] <owner | unassigned> — <action> — **due**: <date | unspecified> [source: ...]
59
+ - _None surfaced._
60
+
61
+ ### Next Steps
62
+ - <commitment> — **expected by**: <date>
63
+ - _None surfaced._
64
+
65
+ ### Open Questions / Unresolved
66
+ - <question> — **raised by**: <name> — **why deferred**: <reason> [source: ...]
67
+ - _None surfaced._
68
+
69
+ ### Risks / Blockers / Dependencies
70
+ - **Risk**: <desc> — **owner**: <name> — **mitigation**: <plan> [source: ...]
71
+ - _None surfaced._
72
+
73
+ ### Customer Asks
74
+ - <ask> — **asked by**: <customer name> — **of**: <MS person> — **status**: <open | committed | declined> [source: ...]
75
+ - _None surfaced._
76
+
77
+ ### Artifacts / Links
78
+ <!-- Every link + embedded file referenced on the page. -->
79
+ - <link title>: <url> — <type: embedded link / attachment>
80
+ - _None surfaced._
81
+
82
+ ### Coverage Notes
83
+ - <e.g. "Tier C returned full body first try" / "BODY-NOT-EXPOSED — queued for retry next refresh" / "Playwright recovery captured 12KB">
84
+
85
+ ## Week-level Coverage Notes
86
+
87
+ - <Per-page retry registry status, BODY-NOT-EXPOSED counts, Playwright opt-in status>
88
+
89
+ ## Validation
90
+
91
+ - [ ] every page block uses canonical section order (Q&A + Who Said What OMITTED for OneNote)
92
+ - [ ] no prose paragraphs anywhere
93
+ - [ ] no truncation markers
94
+ - [ ] every fact-bearing bullet has a citation
95
+ - [ ] `_index/entities.yml` upserted; `status` reflects captured / BODY-NOT-EXPOSED / etc.
@@ -0,0 +1,98 @@
1
+ ---
2
+ project: <project>
3
+ alias: <alias>
4
+ source: sharepoint
5
+ week_start: <YYYY-MM-DD>
6
+ week_end: <YYYY-MM-DD>
7
+ generated_at: <ISO timestamp>
8
+ kushi_version: 4.9.0
9
+ ---
10
+
11
+ # SharePoint CSC — Week of <YYYY-MM-DD> (Mon–Sun)
12
+
13
+ - **Project**: <project>
14
+ - **Alias**: <alias>
15
+ - **Source**: sharepoint
16
+ - **Week**: <YYYY-MM-DD> → <YYYY-MM-DD> (ISO)
17
+ - **Generated**: <ISO timestamp>
18
+ - **Kushi version**: 4.9.0
19
+ - **WorkIQ calls**: <count> (one CSC call per file selected for body extraction)
20
+
21
+ ## Source Basis (week-level)
22
+
23
+ - Local synced folder walk (filesystem) enumerated <N> files under `boundaries.sharepoint.local_folders`. <K> selected for WorkIQ CSC body extraction (key files + top-N recent + user pins).
24
+ - Files not selected appear in week-level Coverage Notes as `[tree-only]`.
25
+
26
+ ## Entities
27
+
28
+ <!-- One CSC block per SharePoint file selected for body extraction this week. Q&A and Who Said What OMITTED for sharepoint. -->
29
+
30
+ ## <File name> {#<file-anchor>}
31
+
32
+ - **Source basis**: WorkIQ request-id <guid>, fidelity csc-full
33
+ - **Entity id**: `sharepoint://siteurl=<urlencoded>/path=<urlencoded>` (or `sharepoint://driveitemid=<id>`)
34
+ - **File path**: <relative path under local synced folder>
35
+ - **Last modified**: <ISO> by <author>
36
+ - **Coverage window**: <YYYY-MM-DD> → <YYYY-MM-DD>
37
+ - **Last touched**: <ISO timestamp>
38
+
39
+ ### Participants / Present
40
+ <!-- Author + every editor (from filesystem attributes or document metadata). -->
41
+ - <name> — author
42
+ - <name> — editor
43
+ - ...
44
+
45
+ ### Topics Discussed
46
+ <!-- One bullet per section heading. -->
47
+ - <section heading / topic>
48
+ - <sub-point>
49
+ - ...
50
+
51
+ ### Decisions
52
+ - **Decided**: <wording> — **by**: <name> — **rationale**: <why> [source: WorkIQ req <id> · <iso-ts>]
53
+ - _None surfaced._
54
+
55
+ ### Dates & Numbers Shared
56
+ - <value> — **context**: <what> [source: ...]
57
+ - _None surfaced._
58
+
59
+ ### Action Items
60
+ - [ ] <owner | unassigned> — <action> — **due**: <date | unspecified> [source: ...]
61
+ - _None surfaced._
62
+
63
+ ### Next Steps
64
+ - <commitment> — **expected by**: <date>
65
+ - _None surfaced._
66
+
67
+ ### Open Questions / Unresolved
68
+ - <question> — **raised in document by**: <name> [source: ...]
69
+ - _None surfaced._
70
+
71
+ ### Risks / Blockers / Dependencies
72
+ - **Risk**: <desc> — **owner**: <name> — **mitigation**: <plan> [source: ...]
73
+ - _None surfaced._
74
+
75
+ ### Customer Asks
76
+ - <ask> — **asked by**: <customer name> — **of**: <MS person> — **status**: <open | committed | declined> [source: ...]
77
+ - _None surfaced._
78
+
79
+ ### Artifacts / Links
80
+ <!-- This file's web URL + every link referenced in the document. -->
81
+ - This file: <web URL>
82
+ - <link title>: <url>
83
+ - _None surfaced._
84
+
85
+ ### Coverage Notes
86
+ - <e.g. "WorkIQ returned full text first try" / "encrypted PDF — user paste required" / "extracted with formula-loss warning">
87
+
88
+ ## Week-level Coverage Notes
89
+
90
+ - <Files enumerated vs. selected, path_excludes applied, files marked [tree-only]>
91
+
92
+ ## Validation
93
+
94
+ - [ ] every file block uses canonical section order (Q&A + Who Said What OMITTED for sharepoint)
95
+ - [ ] no prose paragraphs anywhere
96
+ - [ ] no truncation markers
97
+ - [ ] every fact-bearing bullet has a citation
98
+ - [ ] `_index/entities.yml` upserted for every file with a CSC block
@@ -0,0 +1,100 @@
1
+ ---
2
+ project: <project>
3
+ alias: <alias>
4
+ source: teams
5
+ week_start: <YYYY-MM-DD>
6
+ week_end: <YYYY-MM-DD>
7
+ generated_at: <ISO timestamp>
8
+ kushi_version: 4.9.0
9
+ ---
10
+
11
+ # Teams CSC — Week of <YYYY-MM-DD> (Mon–Sun)
12
+
13
+ - **Project**: <project>
14
+ - **Alias**: <alias>
15
+ - **Source**: teams
16
+ - **Week**: <YYYY-MM-DD> → <YYYY-MM-DD> (ISO)
17
+ - **Generated**: <ISO timestamp>
18
+ - **Kushi version**: 4.9.0
19
+ - **WorkIQ calls**: <count> (request-ids per entity)
20
+
21
+ ## Source Basis (week-level)
22
+
23
+ - WorkIQ CSC calls covered chat ids: <list> ; channel posts: <list>. Boundaries: `boundaries.teams.chat_ids` + `boundaries.teams.channel_ids`.
24
+ - Parallel `m365_list_chat_messages` JSON dumps written to `_index/chat-messages_<chatId>.json` for traceability.
25
+
26
+ ## Entities
27
+
28
+ <!-- One CSC block per Teams thread (chatId OR channel root message) touched this week. -->
29
+
30
+ ## <Chat topic or channel post title> {#<thread-anchor>}
31
+
32
+ - **Source basis**: WorkIQ request-id <guid>, fidelity csc-full; parallel JSON dump at `_index/chat-messages_<chatId>.json`
33
+ - **Entity id**: `teams://chat_id=<chatId>` OR `teams://channel=<teamId>/<channelId>/<rootMessageId>`
34
+ - **Coverage window**: <YYYY-MM-DD> → <YYYY-MM-DD>
35
+ - **Last touched**: <ISO timestamp>
36
+
37
+ ### Participants / Present
38
+ <!-- Every poster in the chat / channel thread. -->
39
+ - <name> — role: chat member / poster
40
+ - ...
41
+
42
+ ### Topics Discussed
43
+ - <topic>
44
+ - <sub-detail>
45
+ - ...
46
+
47
+ ### Q & A
48
+ - **Q** (asked by <name>): <question> — **A** (answered by <name>): <answer> [source: ...]
49
+ - _None surfaced._
50
+
51
+ ### Who Said What (material statements)
52
+ - <name>: "<material statement>" [source: ...]
53
+ - _None surfaced._
54
+
55
+ ### Decisions
56
+ - **Decided**: <wording> — **by**: <name> — **rationale**: <why> [source: ...]
57
+ - _None surfaced._
58
+
59
+ ### Dates & Numbers Shared
60
+ - <value> — **context**: <what> — **shared by**: <name> [source: ...]
61
+ - _None surfaced._
62
+
63
+ ### Action Items
64
+ - [ ] <owner | unassigned> — <action> — **due**: <date | unspecified> [source: ...]
65
+ - _None surfaced._
66
+
67
+ ### Next Steps
68
+ - <commitment> — **expected by**: <date | "next sync">
69
+ - _None surfaced._
70
+
71
+ ### Open Questions / Unresolved
72
+ - <question> — **raised by**: <name> — **why deferred**: <reason> [source: ...]
73
+ - _None surfaced._
74
+
75
+ ### Risks / Blockers / Dependencies
76
+ - **Risk**: <desc> — **owner**: <name> — **mitigation**: <plan> [source: ...]
77
+ - _None surfaced._
78
+
79
+ ### Customer Asks
80
+ - <ask> — **asked by**: <customer name> — **of**: <MS person> — **status**: <open | committed | declined> [source: ...]
81
+ - _None surfaced._
82
+
83
+ ### Artifacts / Links
84
+ - <shared file or URL> — <type: shared in chat>
85
+ - _None surfaced._
86
+
87
+ ### Coverage Notes
88
+ - <chat fetched fully via WorkIQ + JSON dump; OR partial / deferred / pasted-by-user notes>
89
+
90
+ ## Week-level Coverage Notes
91
+
92
+ - <Throttling, deferrals, chat-id boundary gaps>
93
+
94
+ ## Validation
95
+
96
+ - [ ] every entity block uses canonical section order
97
+ - [ ] no prose paragraphs anywhere
98
+ - [ ] no truncation markers
99
+ - [ ] every fact-bearing bullet has a citation
100
+ - [ ] `_index/entities.yml` upserted for every entity