feat(linkedin-studio): SB-S3d — operations.md ops centre (strategy-advisor reader) [skip-docs]

Make brain/operations.md a READ tributary — the "operations centre" half of the
second brain. strategy-advisor now reads the dated "who I am now" anchor and
honours the frozen-past-self guard: when a profile.md fact predates or
contradicts the anchor, the anchor deprecates it (advisory/reader-side; NO
consolidate-engine change). Anti-sycophancy is INVERTED vs the profile —
profile facts stay evidence-to-TEST, the user-declared anchor is honoured.

- scaffold.ts operationsSeed(): dated-anchor convention (_As of YYYY-MM-DD:_) +
  Plans/Ideas guidance; existence-skip idempotency preserved (no-clobber green).
- strategy-advisor.md: operations.md in Step 0 context-load + a consumption
  contract (anchor authoritative, inversion, plans-vs-ideas, graceful absence).
- test-runner.sh Section 16e: 2 unconditional checks (non-vacuity self-test +
  wiring grep, sibling-file decoy); ASSERT_BASELINE_FLOOR 80->82; BRAIN floor 113->114.
- architecture.md:80: build-row reconciled (S3d done; S3e = dead content-history
  retirement + triple-post reconciliation = the new LAST S3 slice).

Gate 97/0/0; brain 114/114. TDD: RED proven (16e Check B + the scaffold
dated-anchor test both failed pre-fix) before GREEN. Splits the old S3d charter;
the hygiene half is deferred to SB-S3e. Light-Voyage hardened (scope-guardian
ALIGNED, brief-reviewer + plan-critic folds in docs 0061bf2).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RigJBiRFNtFZKCz21qNbQ4
This commit is contained in:
Kjell Tore Guttormsen 2026-06-23 21:28:26 +02:00
commit 974e8d1b25
5 changed files with 97 additions and 8 deletions

View file

@ -52,14 +52,25 @@ function indexSeed(): string {
function operationsSeed(): string {
return `# Operations
> The operations centre where you're headed now, what you're working on, what you might
> do next. User-authored: the brain motor never writes here (a re-run of init never
> re-touches an existing file, so your edits are safe).
## Who I am now (anchor)
<!-- Frozen-past-self guard: a periodic, user-authored "where I'm headed now"
statement that deprecates older inferences. Update it when your direction shifts. -->
<!-- Frozen-past-self guard: a DATED, user-authored "where I'm headed now" statement.
It deprecates older inferences when a profile.md fact predates or contradicts this
anchor, the anchor wins. Re-date it when your direction shifts. -->
_As of YYYY-MM-DD:_ <one or two sentences on your current direction replace this line>
## Plans
<!-- Active commitments — what you're working toward now. One per line. -->
## Ideas
<!-- Parking lot — possible content/strategy ideas, not yet commitments. One per line. -->
`;
}

View file

@ -57,6 +57,18 @@ describe("initBrain scaffold (SC1)", () => {
assert.match(ops, /## Ideas/);
});
test("operations.md ships a dated frozen-past-self anchor convention (SB-S3d)", () => {
initBrain();
const ops = readFileSync(join(root, "brain/operations.md"), "utf8");
// RED-bearing literal: the dated-anchor convention is the genuinely-new SB-S3d seed
// content (absent pre-S3d). The frozen-past-self guard is temporal — the anchor must
// carry a date the reader can compare against a profile fact's last_seen.
assert.match(ops, /_As of YYYY-MM-DD:_/, "anchor ships the dated convention");
// Non-RED companion (already shipped pre-S3d, asserted only to lock the guard wording
// the reader keys on — NOT the failing literal).
assert.match(ops, /deprecates older inferences/);
});
test("a second invocation is a no-op — every target skipped, content unchanged", () => {
initBrain();
const before = EXPECTED_FILES.map((f) => readFileSync(join(root, f), "utf8"));