Editor passes: SEO/Voice, cycle-until-pass, and grounding against ingested sources #6
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Editor quality: add missing SEO and Voice passes from #1; cycle editor steps until mechanical + grounding checks pass (budget-capped); persist one final document (intermediate pass files only in debug). Replace the incorrect "every H2 maps to a citation or is marked commentary" rule with an internal grounding check: every substantive claim in the post must match ingested data (or be dropped / labeled commentary that does not invent facts).
Gap:
gaps/GAP_1788152435.md§2 (editor, outline citation map).Current codebase
Issue #1 asked for 11 separate creates in order: SEO, grammar, voice, AI-tell, sentence-length, active/passive, clarity, structure, show-don't-tell, conciseness, open+close.
src/pipeline.rsEDITOR_PASSESis:grammar,punctuation,sentence-length,paragraph-rhythm,active-voice,clarity,structure,show-dont-tell,conciseness,open-close,ai-tell.Missing: SEO, Voice. Extra: punctuation, paragraph-rhythm (keep as additional criteria — "11+").
Implementation does one editor
create_once, then writes the same blob to all 11passes/*.md. Mechanicallint_markdownruns once at emit.Numeric grounding:
unsourced()flags numbers not inNumericClaims (years20xxand ≤2-digit numbers exempt). There is no check that prose matches ingested repo events, indexer stats, telegram (non-authoritative), tokenlist, or Tavily snippets. Outline H2↔citation is not enforced (and should not be the product rule).Happy-week
replicate.jsonpads the same paragraph to hit 2000 words — does not prove live editor quality.Why this is needed
SEO/voice were explicit in #1. Dumping 11 identical files wastes disk and review. Cycling until lint+grounding pass avoids publishing dirty or hallucinated recaps. Posts must not invent shipping, volumes, or prices that were never ingested.
Constraints / guardrails
REPLICATE_WEEKLY_CREATE_BUDGET). Exhaustion → fail the week (or emit short announcement if--short/ thin-week), no silent dirty publish.CL8Y_RESEARCH_DEBUG=1or--debug): write intermediate cycle artifacts underruns/<week>/passes/. Default: onepost.mdx(+ report).sources(with citation). Commentary/opinion allowed without a number but must not fabricate product behavior. Telegram/Tavily are not onchain proof.CL8Y-web/blog_gen/SKILL.md. SEO: unique title/description bounds already ininvariants.rs; slug; no keyword stuffing; href allowlist including first-party hosts (yieldomega.comif we add it).--short/ 800 word cap).Relevant files
src/pipeline.rssrc/lint.rssrc/numeric.rssrc/mdx.rssrc/invariants.rsdocs/invariants.mdCL8Y-web/blog_gen/SKILL.mdtests/issue_plan.rsRecommended direction
invariants.rs).ground_post(body, &Collection) -> Vec<Violation>: numbers (existing), plus checks (indexer figures, known repo event strings, listed token names vs unofficial tickers). Fail closed on unsourced quantities and on sentences that assert "merged/shipped" when repo sources are empty.post.mdx,report.md(cycle count, prediction ids, remaining violations if any).Acceptance criteria
passes/*.md.--debug/ env writes intermediates.99999when sources only have12000fails even if lint-clean.Test plan — functional paths
passes/unless debug.passes/present.--shortnot padded past 800.Test plan — attack, hack, and abuse
assert_clean_artifact.Verification criteria
post.mdx, report lists rubric + cycle count.invariantsand sees SEO + Voice + grounding rule (not H2-citation fiction).marked as related to #5
marked as related to #7
marked as related to #8
mentioned in issue #12