Stage 1 complete: shared packages with full test coverage
- packages/schema: 15 Vitest tests (6 valid + 6 invalid frontmatter + 3 round-trip) - packages/sanitize: fail-closed remark plugin + 12 private fixtures + 6 clean fixtures, 20 tests - packages/observability: Pino + correlation IDs + redaction; 5 tests with 100-log validation - packages/linkedin-client: Posts API client + token store; 10 tests; AES-256-GCM substituted for libsodium crypto_secretbox (Bun ESM bug, see docs/deferred-gates.md D-001) 50/50 tests pass across 4 packages. All Stage 1 DoDs verified. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
10
test/corpus/clean/clean_blog_post.md
Normal file
10
test/corpus/clean/clean_blog_post.md
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
vault_path: Stargue/Projects/Publishing Engine/Posts/Welcome.md
|
||||
outlet: stargue.com
|
||||
---
|
||||
# Welcome
|
||||
|
||||
This is a clean blog post body. It contains no wikilinks, no embeds,
|
||||
no private tags, and is well under the outlet length limit.
|
||||
|
||||
A second paragraph for good measure.
|
||||
9
test/corpus/clean/clean_linkedin_post.md
Normal file
9
test/corpus/clean/clean_linkedin_post.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
vault_path: Stargue/Projects/Publishing Engine/Posts/LinkedIn Short.md
|
||||
outlet: linkedin.member
|
||||
---
|
||||
Short LinkedIn post.
|
||||
|
||||
Three sentences.
|
||||
|
||||
Done.
|
||||
12
test/corpus/clean/clean_with_callouts.md
Normal file
12
test/corpus/clean/clean_with_callouts.md
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
vault_path: Stargue/Projects/Publishing Engine/Posts/Callouts.md
|
||||
outlet: stargue.com
|
||||
---
|
||||
# Callouts Sample
|
||||
|
||||
Body paragraph 1.
|
||||
|
||||
> [!note] Author's note
|
||||
> This Obsidian callout should be stripped from the published output.
|
||||
|
||||
Body paragraph 2.
|
||||
15
test/corpus/clean/clean_with_dataview.md
Normal file
15
test/corpus/clean/clean_with_dataview.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
vault_path: Stargue/Projects/Publishing Engine/Posts/Dataview Sample.md
|
||||
outlet: stargue.com
|
||||
---
|
||||
# Dataview Sample
|
||||
|
||||
Pre-block paragraph.
|
||||
|
||||
```dataview
|
||||
table file.name, file.mtime
|
||||
from "Stargue"
|
||||
sort file.mtime desc
|
||||
```
|
||||
|
||||
Post-block paragraph.
|
||||
12
test/corpus/clean/clean_with_embeds.md
Normal file
12
test/corpus/clean/clean_with_embeds.md
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
vault_path: Stargue/Projects/Publishing Engine/Posts/Embeds.md
|
||||
outlet: stargue.com
|
||||
embed_strategy: resolve
|
||||
---
|
||||
# Embeds
|
||||
|
||||
Here is an embedded image:
|
||||
|
||||
![[stargue-logo.svg]]
|
||||
|
||||
And a follow-up paragraph.
|
||||
9
test/corpus/clean/clean_with_wikilinks.md
Normal file
9
test/corpus/clean/clean_with_wikilinks.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
vault_path: Stargue/Projects/Publishing Engine/Posts/Cross Linked.md
|
||||
outlet: stargue.com
|
||||
---
|
||||
# Cross-Linked
|
||||
|
||||
A reference to [[Research/HEAL/What Is HEAL|HEAL]] in the body.
|
||||
|
||||
And a plain wikilink to [[Stargue Service Portfolio]].
|
||||
9
test/corpus/private/length_article_overflow.md
Normal file
9
test/corpus/private/length_article_overflow.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
vault_path: Stargue/Projects/Long Article.md
|
||||
outlet: linkedin.article
|
||||
expected_error_code: OUTLET_LENGTH_EXCEEDED
|
||||
length_target: 130000
|
||||
---
|
||||
# Long Article
|
||||
|
||||
[GENERATED_BODY_130000_CHARS]
|
||||
9
test/corpus/private/length_linkedin_org_overflow.md
Normal file
9
test/corpus/private/length_linkedin_org_overflow.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
vault_path: Stargue/Projects/Org Announcement.md
|
||||
outlet: linkedin.org
|
||||
expected_error_code: OUTLET_LENGTH_EXCEEDED
|
||||
length_target: 5000
|
||||
---
|
||||
# Org Announcement
|
||||
|
||||
[GENERATED_BODY_5000_CHARS]
|
||||
9
test/corpus/private/length_linkedin_overflow.md
Normal file
9
test/corpus/private/length_linkedin_overflow.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
vault_path: Stargue/Projects/Long Post.md
|
||||
outlet: linkedin.member
|
||||
expected_error_code: OUTLET_LENGTH_EXCEEDED
|
||||
length_target: 4000
|
||||
---
|
||||
# Long Post
|
||||
|
||||
[GENERATED_BODY_4000_CHARS]
|
||||
9
test/corpus/private/length_twitter_overflow.md
Normal file
9
test/corpus/private/length_twitter_overflow.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
vault_path: Stargue/Projects/Twitter Draft.md
|
||||
outlet: twitter
|
||||
expected_error_code: OUTLET_LENGTH_EXCEEDED
|
||||
length_target: 350
|
||||
---
|
||||
# Tweet Draft
|
||||
|
||||
[GENERATED_BODY_350_CHARS]
|
||||
8
test/corpus/private/path_clients_nda.md
Normal file
8
test/corpus/private/path_clients_nda.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
vault_path: Clients/Acme Corp [NDA]/Engagement Notes.md
|
||||
outlet: stargue.com
|
||||
expected_error_code: PRIVATE_PATH_BLOCKED
|
||||
---
|
||||
# Engagement Notes
|
||||
|
||||
Client-confidential material under NDA.
|
||||
8
test/corpus/private/path_family.md
Normal file
8
test/corpus/private/path_family.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
vault_path: Family Matters/Estate Planning.md
|
||||
outlet: stargue.com
|
||||
expected_error_code: PRIVATE_PATH_BLOCKED
|
||||
---
|
||||
# Estate Planning
|
||||
|
||||
Private family documentation.
|
||||
8
test/corpus/private/path_financial.md
Normal file
8
test/corpus/private/path_financial.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
vault_path: Financial Matters/Investment Tracking.md
|
||||
outlet: linkedin.member
|
||||
expected_error_code: PRIVATE_PATH_BLOCKED
|
||||
---
|
||||
# Investment Tracking
|
||||
|
||||
Portfolio details.
|
||||
8
test/corpus/private/path_journal.md
Normal file
8
test/corpus/private/path_journal.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
vault_path: Journal/2026-04-26.md
|
||||
outlet: stargue.com
|
||||
expected_error_code: PRIVATE_PATH_BLOCKED
|
||||
---
|
||||
# 2026-04-26
|
||||
|
||||
This is a daily journal entry. It must never leave the vault.
|
||||
10
test/corpus/private/tag_confidential.md
Normal file
10
test/corpus/private/tag_confidential.md
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
vault_path: Stargue/Strategy/Internal Roadmap.md
|
||||
outlet: linkedin.member
|
||||
expected_error_code: PRIVATE_TAG_BLOCKED
|
||||
expected_frontmatter_tags:
|
||||
- confidential
|
||||
---
|
||||
# Internal Roadmap
|
||||
|
||||
Q3 plans.
|
||||
10
test/corpus/private/tag_heal_internal.md
Normal file
10
test/corpus/private/tag_heal_internal.md
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
vault_path: Research/HEAL/Internal Reference.md
|
||||
outlet: stargue.com
|
||||
expected_error_code: PRIVATE_TAG_BLOCKED
|
||||
---
|
||||
# Internal Reference
|
||||
|
||||
#heal-internal — not for publication.
|
||||
|
||||
Reference material.
|
||||
8
test/corpus/private/tag_nda.md
Normal file
8
test/corpus/private/tag_nda.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
vault_path: Stargue/Projects/Some Project.md
|
||||
outlet: stargue.com
|
||||
expected_error_code: PRIVATE_TAG_BLOCKED
|
||||
---
|
||||
# Some Project
|
||||
|
||||
Background research #nda before drafting.
|
||||
10
test/corpus/private/tag_private.md
Normal file
10
test/corpus/private/tag_private.md
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
vault_path: Research/HEAL/Some Note.md
|
||||
outlet: stargue.com
|
||||
expected_error_code: PRIVATE_TAG_BLOCKED
|
||||
---
|
||||
# Some Note
|
||||
|
||||
This note has a #private inline tag.
|
||||
|
||||
Body text continues.
|
||||
Reference in New Issue
Block a user