Work Tracker

📊 Daily Overview

Total Activity: 13 commits + 2 merges across 3 repositories


🚀 GitHub Activity

1. Mothership 🔒 — 6 commits + 2 merges

feat(path-c): migration v2 + workspace bootstrap admin tooling · bd8c109

  • mongo migration v2: workspace_domains (domain unique + workspaceId
    lookup) + entitlements (workspaceId+feature unique) indexes. Backs
    the WorkspaceFromOriginMiddleware + entitlement gate primitives that
    unblock Vipin’s 2026-05-22 launch.
  • motherboard-infra/scripts/admin/: idempotent workspace bootstrap
    script + per-workspace JSON configs (Vipin, Tathya). Manual admin
    surface that the future new-client flow will replace.
  • TODOS.md: Path C 7-day sprint scope, post-launch calendar primitive
    (replaces from-scratch scheduling), and motherboard-mcp Q3 framing.

docs(claude.md): Path C domain-boundary + calendar/MCP rules + gbrain v0.27 setup · 4dc6bd8

Two scopes, both context-only edits to the agent’s repo briefing:

  • Path C architecture rules: plugins own domain entities; Motherboard
    owns infrastructure. Cross-boundary via opaque references + internal
    webhooks. Calendar primitive (post-launch) wraps Google/365/Cal.com/
    iCal. motherboard-mcp Q3 candidate; pattern-preservation rule today.
  • GBrain config block: local-stdio pglite, artifacts sync to
    gstack-artifacts-rupali.b, repo policy read-write. Search guidance
    block tells the agent when to prefer gbrain semantic search over
    Grep, with command palette for code-def/code-refs/code-callers
    (some surfaces pending upstream gbrain v0.28+).

feat(path-c): WorkspaceOriginCORS middleware + dynamic CORS from workspace_domains · 3f9cace

Replaces the static CORS_ALLOWED_ORIGINS allowlist with a data-driven
lookup against the workspace_domains collection (schema landed in
Day-1 migration v2). Each request’s Origin header is resolved to a
workspace via a 60s-TTL in-memory cache; on hit, the middleware sets
workspace context for downstream handlers AND emits CORS headers from
the per-domain config (allowCredentials, methods).

feat(path-c): seed-path-c make target + preserve host:port in origin lookup · 16018f3

C2 of Path C — wire the workspace-bootstrap admin tooling into the
seed pipeline so make seed brings up Vipin + Tathya client
workspaces with their domains and entitlements alongside the platform
workspace.

  • New seed-path-c make target: globs scripts/admin/path-c-*.json,
    loops each through bootstrap-workspace.js (idempotent — domains and
    entitlements upsert on unique keys). Slots into the seed chain
    between seed-vercel-rbac and seed-config. Honors the platform’s
    dual-mongosh path (docker exec when motherboard-mongodb is up,
    local mongosh otherwise).

  • Onboard a new client by dropping a path-c-.json in
    scripts/admin/ — no Makefile edit needed; the loop discovers it.

feat(path-c): plugin role declaration receiver + plugin_roles collection · 240ac27

C7 of Path C — plugins declare workspace roles via motherboard.json roles[], the SDK posts them at boot, client-manager upserts into a
new plugin_roles collection. Symmetric to the route declaration flow
that already exists.

Architecture decision: plugin-declared roles live in plugin_roles,
not auth’s roles. Separate collection = separate lifecycle —
plugin uninstall can delete its roles cleanly without touching
human-curated entries. Field shape mirrors auth’s models.Role
(Name, Description, Permissions[Resource, Actions]) so a future
capability-flattening pass can union both sources without per-source
translation when minting plugin tokens.

What landed:

feat(path-c): internal webhook dispatch — platform → plugin (C5) · aad671f

New scheduler job type and handler that fan out platform-originated
events to plugins via {plugin.microserviceUrl}/internal/{eventType}.
Symmetric to the existing inbound provider→plugin dispatch flow
(handleVercelEvent), but the producer is Motherboard itself: future
Razorpay capture (C4), calendar event-changed, notification dispatcher.

Three pieces, one round trip:

  1. JobType constant mirrored in motherboard-api and scheduler
    (motherboard-coordination) — both modules need the string for
    their respective producer/consumer roles.

Merges:

  • Merge pull request #37 from Rupali59/feat/path-c-internal-webhook-dispatch
  • Merge pull request #36 from Rupali59/feat/path-c-workspace-from-origin

2. VipinKaushik 🔒 — 5 commits

feat(scaffold): clean-slate rebuild — V1 surface only, design-system wired · e748267

Strip the legacy marketing site to a minimal V1 scaffold. Every surviving
file is on-spec or supports an on-spec route. Foundation work (Tailwind
tokens, theme toggle, fonts, redirects) lands here so Phase 2 (homepage
editorial layout) can build cleanly.

Removed

  • 15 legacy route directories (consultations/, calculator/, calendars/,
    blogs/, dashboard/, festivals/, gallery/, geocentric-view/, info/, legal/,
    memberships/, muhurat/, resources/, vrat-upvaas/, debug/) — none in V1 spec
  • All app/api/ routes (zero active imports from V1 surface)
  • 9 unused component dirs (animations, brand, calculator, consultations,
    features, forms, layouts, memberships, ui)
  • lib/i18n, lib/currency, lib/a…

feat(home): hero sky-mandala + Knowledge Hub teaser, scrub fabricated claims · 2296d73

Phase 2 components — visual anchor + design-system bridge to /learn —
plus correction of factually wrong copy that referenced “since 2007”
(Vipin was 11 then) and a fabricated “Parāśarī tradition” training claim.

SkyMandala (new)

  • 700×700 viewBox (was 600×600 — cardinals + nakshatra labels were
    clipped beyond r=300)
  • Twelve rashi spokes, twelve rashi labels (English above Devanagari,
    stacked via screen-vertical offsets so order is consistent on every
    side of the wheel — radial offsets inverted at the bottom half)
  • Twenty-seven nakshatra ring with hit areas + hover-revealed labels
  • One-hundred-and-eight pada subdivisions hidden until per-nakshatra hover
  • Three-stage reveal: defaul…

fix(qa): ISSUE-001 — teaser links 404 on /graha/ · 2dad102

Knowledge Hub teaser used English slugs (sun, moon, mars, saturn) but
the graha entity page at app/graha/[slug]/page.tsx accepts Sanskrit
slugs (surya, chandra, mangal, shani) per the inline GRAHAS map.
All 4 graha cards in the teaser were returning 404.

Updated teaser-entities.ts to use the canonical Sanskrit slugs
matching what generateStaticParams emits for /graha/[slug].

Verified: all 6 teaser links now return 200 (4 grahas + 2 nakshatras).

feat(home): replace 8-card Refusals with single-column Method section · 827171a

Refusals was eight cards of ‘I will / I will not’ assertions —
person-led framing that contradicted the work-led homepage thesis.

Method is four cited prose paragraphs in classical-prose voice. Each
paragraph asserts something about HOW the work works, not what the
practitioner refuses:

  1. Computation precision (Sūrya Siddhānta math, ephemeris-second)
  2. Reading method (verse, BPHS / Phaladīpikā / Sārāvalī, no summaries)
  3. Probability / dasha framing (windows narrow, do not eliminate)
  4. Remedies (named in plain language, never commissioned)

feat(home): replace Address with Pricing + How to Write section · ff83afd

Final homepage section restructure. The old Address section was
location-led (‘Where to find me. By appointment only. No walk-ins.’)
which read as a destination page. Replaced with Pricing — three locked
fee tiers, online-only status flag, and the booking path.

Pricing tiers (locked 2026-05-04, do not change without Vipin):
Reading 15 minutes ₹3,100
Extended reading 30 minutes ₹5,100
Vastu visit On-site · NCR ₹21,000

3. motherboard-shared 🔒 — 2 commits

feat(plugin-sdk): RegisterRoles + PluginRole/Permission types · 84de5fd

Symmetric to RegisterRoutes — plugins call RegisterRoles(ctx, roles)
at boot to declare workspace roles from motherboard.json roles[].
Same auth (plugin_token Bearer), same idempotency (PUT-replace per
(workspace, plugin, name)), same 10s timeout, same direct-to-
client-manager target.

PluginRole shape mirrors auth’s models.Role (Name, Description,
Permissions[Resource, Actions]) so a future capability-flattening
pass can union plugin-declared and admin-managed roles without
per-source translation.

Receiver lands in client-manager (PUT /api/internal/plugins/:key/roles)
in the parallel motherboard-identity commit. Path C C7.

feat(internal-webhook): producer helper for platform → plugin dispatch · 3212388

New lib (libs/internal-webhook) callable from any Motherboard service
that emits events plugins should react to (Razorpay capture, calendar
event change, notification dispatch, etc.).

Surface:

  • DispatchRequest struct (pluginKey, eventType, payload, optional
    workspaceId/reference/webhookEventId)
  • JobCreator interface (motherboard-api’s JobService and scheduler’s
    satisfy without wrapping)
  • Enqueue(ctx, jobs, req) — validates + marshals + creates job

Job type “internal_webhook_dispatch” mirrors the constant in
scheduler/models/job.go and motherboard-api/models/job.go (handler
landing in scheduler in the parallel motherboard-coordination commit).


📈 Development Analytics

Daily Summary

MetricToday
Commits13
Merges2
Skill runs0
Decisions0
Eurekas0
CEO plans0
Notes touched0

Decisions logged today

None today.

Eurekas

None today.

Strategic plans authored

None today.

Notes touched

None today.

Running totals (as of this date)

Active days last 90:           57 / 90  (substantive)
Days with any signal last 90:  60 / 90
Skill runs (since 2026-03-25):  74
Commits this year (authored):  829
Decisions logged this year:    0
Eurekas this year:             5
CEO plans authored this year:  12
Projects touched this year:    52
Top projects last 90:          portfolio (26d), Mothership (21d), motherboard-shared (13d), Astroclarity (11d), motherboard-core (9d)

💭 My Notes

[Your own thoughts, observations, or context for this day — this section is never overwritten by automation]