SB-S0 (Foundation) of the second-brain arc: a new TS package scripts/brain/
(structural copy of specifics-bank) establishing the spine later slices hang on.
TDD throughout (failing test first); fold scope = P1+P2 only per operator decision.
- types.ts: one provenance vocab (human|published|ai-draft) + the six-field
ProfileFact record + two-layer ProfileDoc.
- id.ts: slugify + mintEntityId (sha256[:12], kind-namespaced, slug-keyed so the
id is stable across value edits) + normalizeProvenance (throws on unknown). [SC4]
- profile.ts: no-YAML line-grammar parse/serialize (parse∘serialize = identity over
the whole doc; values may contain ]/|/quotes) [SC2] + foldUserProfile: lossless,
idempotent, source-absent-aware fold of config/user-profile.template.md. Pinned
extraction — P1 labeled scalars (group-headers skipped, [placeholder]→empty) + P2
expertise group; stops at "### Research Tooling" so deferred explainer prose can't
leak in as fields. Checkbox-prefs (Goals/Tone/MCPs/Assets) deferred (§8). [SC3]
- dataRoot.ts: inline per-package resolver (repo idiom; no new seam → SC6).
- scaffold.ts/cli.ts: idempotent `brain init` — brain/{index,profile,operations}.md
+ journal/ + ingest/{inbox,published} under the data-dir; compare-then-skip, never
clobbers a user edit. No session-start wiring (SB-S2 owns it). [SC1]
Gate: new BRAIN floor in test-runner.sh (34 tests; trends/specifics/contract floors
unchanged) + anti-erosion floor 74→75. Full gate 90/0/0, tsc --noEmit clean. [SC5/SC6]
No new command/agent/reference → no version bump, no structure-count change.
Refs docs/second-brain/{brief,plan-sb-s0,architecture}.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RigJBiRFNtFZKCz21qNbQ4
59 lines
1.6 KiB
Markdown
59 lines
1.6 KiB
Markdown
# User Profile Configuration (populated test fixture)
|
|
|
|
> Synthetic, domain-general fixture for SB-S0 fold tests. Mirrors the P1 labeled
|
|
> scalars + P2 expertise group of `config/user-profile.template.md`, with every
|
|
> placeholder replaced by a distinctive filled value. NOT a real person.
|
|
|
|
---
|
|
|
|
## PERSONALIZATION SETTINGS
|
|
|
|
### User Profile Context
|
|
|
|
**Name:** Jordan Avery
|
|
**Current Role:** Senior Data Engineer
|
|
**Organization:** Northwind Analytics
|
|
**Industry/Domain:** Data infrastructure
|
|
|
|
**Important Disclaimer:** All articles and posts are written as a private individual. Views expressed are personal and do not represent any employer.
|
|
|
|
**Core Expertise Areas (5 topics):**
|
|
1. Streaming data pipelines
|
|
2. Data contracts
|
|
3. Cost-aware warehousing
|
|
4. Observability for ETL
|
|
5. Team data literacy
|
|
|
|
**Target Audience:**
|
|
- **Primary:** Data engineers at scale-ups
|
|
- **Secondary:** Engineering managers
|
|
- **Geographic focus:** Nordics
|
|
|
|
---
|
|
|
|
### Voice & Style Profile
|
|
|
|
**Signature Elements:**
|
|
- **Key frameworks you've developed:** The Contract-First Pipeline
|
|
- **Recurring themes/angles:** Boring tech that ships
|
|
- **Phrases you commonly use:** "ship the boring thing"
|
|
- **Topics to AVOID:** Crypto
|
|
|
|
**Writing Quirks & Preferences:**
|
|
- **Preferred post length:** Medium 1,200-1,800
|
|
- **Emoji usage:** Minimal 1-2
|
|
- **Question style CTAs:** Sometimes
|
|
- **Use of personal anecdotes:** Always
|
|
- **Technical depth:** Advanced
|
|
|
|
**Language:** English
|
|
|
|
---
|
|
|
|
### Strategic Context
|
|
|
|
**Current LinkedIn Status:**
|
|
- **Follower count:** 2,400
|
|
- **90-day growth goal:** 4,000
|
|
- **Posting frequency:** 3x week
|
|
- **Optimal posting times:** Tue/Thu 08:00 CET
|