@geoly-ai/social-hub-cli 0.3.3 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/client-delivery.test.d.ts +2 -0
- package/dist/client-delivery.test.d.ts.map +1 -0
- package/dist/client-delivery.test.js +201 -0
- package/dist/client-delivery.test.js.map +1 -0
- package/dist/cmd-manifest.json +25 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +279 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/skills/manifest.json +1 -1
- package/skills/reddit-content-rewrite/SKILL.md +58 -3
- package/skills/reddit-content-writing/SKILL.md +43 -5
- package/skills/reddit-content-writing/references/phase4-writing.md +3 -1
- package/skills/reddit-matrix.lock.json +4 -4
- package/skills/reddit-phase-brief/SKILL.md +30 -13
- package/skills/reddit-phase-brief/references/phase4-brief-workflow.md +39 -4
- package/skills/reddit-strategy-shared/references/content-diversity-contract.md +60 -5
- package/skills/reddit-strategy-shared/references/evidence-policy.md +30 -0
- package/skills/reddit-strategy-shared/references/handoff-schemas.md +7 -3
|
@@ -69,8 +69,8 @@ Required:
|
|
|
69
69
|
- `memory/phase4-内容排期表.md`
|
|
70
70
|
- `memory/phase4-brand-risk-review.md` for any batch with brand-word rows, PGC rows, comparison/review language, external links, product claims, prior negative signals, or subreddit sensitivity; otherwise an explicit low-risk waiver from `reddit-brand-risk-response`
|
|
71
71
|
- `memory/phase4-叙事指纹索引.md` exists as a fixed table with the schema header (`WindowCount`, `WindowDays`, `WindowScope`, `WindowSort`, `BaselineMaxAgeDays`, `HashSchemaVersion`, `IndexRevision`), and has exactly one active `Planned` row for every briefed post Key
|
|
72
|
-
- a valid `SampleSetID` (subreddit baseline, 5–10 recent real posts, word-count median + IQR, with `AcquiredAt` / `ValidUntil`) for every target subreddit in the batch; missing or expired baseline is a `BlockingGap`
|
|
73
|
-
- every post Brief row carries the nine `LockedFingerprintFields` (`ContentFunction`, `StructureFamily`, `OpeningMove`, `EvidenceShape`, `BrandEntryMode`, `CaveatMode`, `EndingMode`, `LengthBand`, `AnchorSlot`) and the four `TraceFields` (`SampleSetID`, `RecentCollisionCheck`, `MappingRuleID`, `MappingVersion`)
|
|
72
|
+
- a valid `SampleSetID` (flair-level subreddit baseline, 5–10 recent real posts, word-count median + IQR, with `AcquiredAt` / `ValidUntil`) for every target subreddit in the batch, recording flair coverage (`BaselineScope` / `BaselineFlair` / `FlairCoverageStatus`); missing or expired baseline, or `FlairCoverageStatus: Insufficient`, is a `BlockingGap`
|
|
73
|
+
- every post Brief row carries the nine `LockedFingerprintFields` (`ContentFunction`, `StructureFamily`, `OpeningMove`, `EvidenceShape`, `BrandEntryMode`, `CaveatMode`, `EndingMode`, `LengthBand`, `AnchorSlot`), the two `PrewritingControlFields` (`AssignedFlair` non-empty; `PostingTrigger` from the controlled five values satisfying the `PostingTrigger × BrandEntryMode` cross-constraint), and the four `TraceFields` (`SampleSetID`, `RecentCollisionCheck`, `MappingRuleID`, `MappingVersion`)
|
|
74
74
|
- every post Brief row carries a `Routing Decision` block with the five candidate-narrowing steps, `MatchedPredicate`, `SelectedStructureFamily`, and `CollisionRepairPath`
|
|
75
75
|
- `RecentCollisionCheck` is `Pass` (or `Exception` with an approved `ExceptionRef`) for every row
|
|
76
76
|
- `brief_approval_mode`
|
|
@@ -118,6 +118,8 @@ ForbiddenStructuralChanges:
|
|
|
118
118
|
PrimaryPostType: # one of the authoritative 9
|
|
119
119
|
MappingRuleID: # when a client prototype applies
|
|
120
120
|
StructureFamily:
|
|
121
|
+
AssignedFlair: # PrewritingControlField; non-empty; NoFlairAvailable/NoFlairRequired for flairless boards
|
|
122
|
+
PostingTrigger: # PrewritingControlField; controlled 5 values; not in the collision triple
|
|
121
123
|
OpeningMove:
|
|
122
124
|
EvidenceShape:
|
|
123
125
|
BrandEntryMode:
|
|
@@ -125,6 +127,7 @@ CaveatMode:
|
|
|
125
127
|
EndingMode:
|
|
126
128
|
LengthBand:
|
|
127
129
|
SampleSetID:
|
|
130
|
+
FlairCoverageStatus: # Exact | ApprovedFallback (Insufficient is a BlockingGap upstream)
|
|
128
131
|
AnchorSlot: # single value, never an "A + B" composite
|
|
129
132
|
SecondaryAnchorSlot: # only for >350-word posts with two ABUs; "—" otherwise
|
|
130
133
|
RecentCollisionCheck:
|
|
@@ -148,6 +151,7 @@ Rules:
|
|
|
148
151
|
in the source, do not guess one and do not load `推荐转化叙事`.
|
|
149
152
|
- Rewrite may only fix factual expression, marketing tone, readability, and explicitly flagged problems.
|
|
150
153
|
- Rewrite may not reorder sections, add a failed attempt, add a question ending, add a caveat, add a community-observation line, move the brand mention, change `AnchorSlot`, or change any of the nine `LockedFingerprintFields`.
|
|
154
|
+
- Rewrite must **preserve `PostingTrigger`** for `ArtifactType: Post`: a body edit that changes the post's real-world trigger (or that breaks the `PostingTrigger × BrandEntryMode` cross-constraint) is out of allowance — flag it instead of applying, so the finished body still re-derives to the `Planned` `PostingTrigger`.
|
|
151
155
|
- Hub `optimized` output that changes a protected structure field may not be adopted wholesale; record `HubStructureConflictStatus: None | Escalated` (see `content-review-gate.md` §3.1). `Escalated` holds the draft and routes to `reddit-phase-brief`.
|
|
152
156
|
- `reddit-content-rewrite` does **not** own `memory/phase4-叙事指纹索引.md`. When its edits change the body, it returns `FingerprintSyncRequired: Yes` / `FingerprintSyncStatus: PendingWritingOwner`; `reddit-content-writing` (the index owner) performs the re-review and hash write-back.
|
|
153
157
|
|
|
@@ -179,7 +183,7 @@ Required:
|
|
|
179
183
|
- `memory/content-review-log.md`
|
|
180
184
|
- `memory/phase4-叙事指纹索引.md` has exactly one active `Final` row for every delivered **main-post** Key (`WindowScope: PostOnly`; comments and external comments need no fingerprint row, only Hub `FinalDraftSha256`)
|
|
181
185
|
- each `Final` row's `DraftHash` equals the `FinalDraftSha256` in `memory/content-review-log.md` and a recomputation from the delivered text using `HashSchemaVersion: reddit-final-draft-sha256-v1`
|
|
182
|
-
- all nine `LockedFingerprintFields` of a delivered post match the Brief's `Planned` values
|
|
186
|
+
- all nine `LockedFingerprintFields` of a delivered post match the Brief's `Planned` values, and the two `PrewritingControlFields` match too: `AssignedFlair` equals the Brief value (and the baseline flair coverage it was written against), and the delivered body's re-derived `PostingTrigger` equals the `Planned` value while satisfying the `PostingTrigger × BrandEntryMode` cross-constraint
|
|
183
187
|
- no delivered post Key collides with any other Key in the rolling window unless an approved `ExceptionRef` exists
|
|
184
188
|
- every post/comment to be delivered has Hub `executionStatus=completed` and `verdict=pass`
|
|
185
189
|
- final delivery rows have `ReviewMode: AccountBound` and a real `accountId`
|