Stage2 Content Publish Operator (Shadow + Manual Review)
Objective
Build and operate Stage2 content publishing as an experiment loop:
- Generate drafts from Stage1 SEO queue
- Run quality gates
- Route items into
approved/review_ready/needs_revision - Keep auto publish disabled
- Sync
../../handoffs/marketing_to_sales.json
Run Stage2 generation
From workspace root:
./scripts/run_marketing_content_stage2.sh
Useful variants:
# Force recompute
./scripts/run_marketing_content_stage2.sh --force
# Include Stage1 hold candidates
./scripts/run_marketing_content_stage2.sh --force --include-hold
# Raise score floor for stricter QA
./scripts/run_marketing_content_stage2.sh --force --min-score 90
Apply manual review decisions
Use manual review script (no auto publish involved):
# Approve all review-ready items
./scripts/review_marketing_content_stage2.sh --approve-all --note "editorial pass"
# Mixed decision batch
./scripts/review_marketing_content_stage2.sh \
--approve cnt_a,cnt_b \
--reject cnt_c \
--reason "tighten evidence" \
--note "pass 1"
Validate outputs
Run deterministic contract checks:
python3 {baseDir}/scripts/verify_stage2_contract.py
Interpretation:
checks_failed = 0=> output contract is consistent- non-zero failures => inspect
publish.queue.latest.json,content.backlog.latest.json, andrun.latest.json
Required artifact set
See references/output-contract.md for full contract.
Primary artifacts:
research/stage2_content_publish/run.latest.jsonresearch/stage2_content_publish/state.latest.jsonresearch/stage2_content_publish/content.backlog.latest.jsonresearch/stage2_content_publish/publish.queue.latest.jsonresearch/stage2_content_publish/qa.latest.jsonresearch/stage2_content_publish/decision_log.latest.mdresearch/stage2_content_publish/review_log.latest.jsonresearch/stage2_content_publish/drafts/
Guardrails
- Keep
auto_publish=falsein this stage. - Treat Stage2 as generation + review orchestration only.
- If Stage1 is unhealthy (
run.latest.json.statusnotpassed|no_change), stop and report upstream status. - If completeness gate blocks the run, report missing input requirements from
run.latest.json.input_sync.completeness.
References
references/output-contract.mdreferences/review-playbook.md
Source: Daihaolin201/OperatorOne — distributed by TomeVault.