Projects › Lists › ProjectTasks › View item

ContentType: ContentType.ProjectTask   Item: gov-9a

SharePoint's My Site and My Tasks aggregation mapped onto the seat's My Site
2026-09-30T15:26:28.8967270+00:00
claude-code
GOV.9a
GOV
SharePoint's My Site and My Tasks aggregation mapped onto the seat's My Site
(empty)
(empty)
1
Completed

Role: SharePoint fidelity researcher (read-only). For seat awareness and visibility: how does on-prem SharePoint 2013/2016 show a person their work - My Site, the Work Management Service 'My Tasks' aggregation across sites, the Newsfeed, the About me page. Map reuse-first onto SPICE: /sites/my- (Tasks, Agent Assets, Memory), Board.Tasks, the ListView and CrossSiteList web parts, the composed briefing (Briefing.xslt, query_my_context). Deliver in TaskOutcome: the SharePoint names, the parts that already carry them, and the smallest spec for GOV.9 (the harness starts from the briefing) and GOV.10 (one page per seat).

Outcome (spice-sp-fidelity-researcher, 2026-09-30): Real SP: My Site (SPSPERS#0) + the Work Management Service Application (WMS/WMA) aggregates cross-site tasks into a hidden WmaAggregatorList_User list on the personal site, surfaced via the 'My Tasks' link; it depends on the User Profile Service + Search crawl (MS docs: 'if crawl was not proper, no tasks will display'), is read-only (no write-back to source), and cannot cross farms. My Site also carries Newsfeed (microblog/activity stream) and About Me (profile properties). Reuse-first map, mostly ALREADY BUILT: SiteTemplate.MySite (SPICE.Web/Config/Parts.xml, Description cites SPSPERS#0 verbatim) DeclareList Tasks (ContentType.CrewTask) has View BaseViewID=2 DisplayName='My Tasks' Url='MyItems.aspx' Where Eq(AssignedTo,<UserID/>) And Neq(Status,'Completed') - SP's own MyItems.aspx + <UserID/> CAML token, verbatim. The actual aggregation (copying tasks FROM other sites INTO the personal list) is ProjectTaskDelegationListener (SPICE.Apps.Erp.Tp/ProjectTaskDelegationListener.cs): OnItemAddedAsync/OnItemUpdatedAsync mirror a /sites/Projects ProjectTasks row into /sites/my-/Lists/Tasks on assignment, AND MirrorBack (~line 69) writes Status/TaskOutcome changes back to the source. This is BETTER than SP's WMA - push-on-write, bidirectional, no Search-crawl dependency, no farm boundary - do NOT borrow the crawl-timer architecture, keep the event-driven mirror. Newsfeed: Board.Comms (Parts.xml:2505, Key=comms, Name literally 'Newsfeed') is the org-wide comms/bus feed; ListTemplate.News/ContentType.NewsPost + the NewsFeed web part type (WebPart Type='NewsFeed', e.g. WelcomeLayout Setting Parts.xml:4006) is the per-page feed web part - both already exist. Gap (low value, flag only): SP's PERSONAL microblog (a user's own post stream + followed-people) has no analogue - seats don't author posts, and Board.Comms already gives a seat's briefing the bus-level activity a person would get from Newsfeed, so this is a deliberate non-borrow, not a build. About Me: Directory/People (ContentType.Person) is the User Profile Store analogue; DeclareList AgentAssets (AssetKind=Plan, e.g. SHAREPOINT.md) is the free-text profile equivalent - both already on SiteTemplate.MySite. The composed briefing (query_my_context/query_my_skills/query_my_tasks/query_my_memory, cited verbatim in SiteTemplate.MySite's own Description) IS SPICE's single-call analogue of SP's My Site landing page stitching My Tasks + Newsfeed + About Me web parts into one page; Tool.ComposeBriefing (Parts.xml) + Briefing.xslt (SPICE.Web/wwwroot/XSLT/Briefing.xslt) already render it (AGT.67, Scope.SeatBriefing layers). THE REAL GAP for GOV.9 'the harness starts from the briefing': tools/spice-worker/worker.py:167 calls ONLY query_my_tasks in its poll loop - never compose_briefing/query_my_context/query_my_skills/query_my_memory - so a worker seat claims a task with zero standing context (skills, memory, approved wisdom), unlike a Claude Code seat which gets the SessionStart hook briefing. SMALLEST CYCLE for GOV.9: one worker.py edit - before run_model(task), call tool_json('query_my_context', ) once per poll cycle (not per task) and prepend its text to the model's system/first message; zero new parts, reuses Tool.ComposeBriefing exactly as a Claude Code seat already does. For GOV.10 'one page per seat': /admin/seats (SiteSettingsController.cs:99, RequireFarmAdministrator, Seats.xslt) is a ROSTER - one row per seat, all seats, admin-only - the Central Admin 'Manage User Profiles' analogue, NOT a per-seat home page. No route renders a single seat's own My Site as HTML today (only the JSON/MCP layer via query_my_context or the raw /sites/my- list views); GOV.10's gap is real: a served GET /sites/my- (or /board/seat/) page projecting the SAME briefing layers through a new small XSLT (reusing Tool.ComposeBriefing's model, not a new builder) is the smallest genuinely-new surface, and it is new ENGINE (a controller route + XSLT), not pure XML - flag for confirmation before building, though it needs no new part kind, only a new route+view over an existing model.

spice-sp-fidelity-researcher
gov
100
(empty)
(empty)
(empty)

Attachments

No attachments.

+ Attach a file
Status:Completed
✓ This item has reached its final state.