Projects Testing and educational use

X Growth & Publishing System

A testing and educational project exploring X content research, draft review, publishing workflows, and outcome measurement.

Node.jsSQLiteClearcote / PlaywrightAI runtimesHuman-in-the-loop workflowsAutomation

Repository snapshot

X Growth & Publishing System

Testing and educational use for network research, publishing, and measured learning.

Publishing case study
Commits
143
Stage
Testing
State
SQLite

Work done

  • growth-next opportunity planning
  • Clearcote verified publication
  • Measure → experiment → learn

X Growth & Publishing System

I use this project to study how content research, draft review, publishing, and measurement fit together. Its purpose is testing and education.

The hard part of AI-assisted publishing is not generating text. It is keeping research, recommendation, approval, publishing, and measurement as separate responsibilities.

What it does

The project started as local X research and posting automation. It now brings research, conversation history, draft preparation, approval, and measurement into one workflow. The engineering challenge is keeping those steps inspectable, so a recommendation does not silently become an approved post.

Human and AI publishing authority loop Source evidence moves through AI recommendations, human selection, writer gates, human approval, publication, measurement, and suggested learned rules that require human acceptance. Human+AI publishing / authority loop AI CAN RECOMMEND · HUMANS GRANT AUTHORITY SourcesX · GitHub · HN AI editorialrecommendations Humanselects Writer+ hard gates Humanapproves Publishapproved queue only Measure15m · 1h · 6h · 24h Suggested rulesevidence-backed · zero effect Human accepts / retireshistory stays visible recommendation != selection != approval != transport · measurement != causality
Recommendation, approval, transport, measurement, and learning keep separate owners.

The separation is deliberate. Observation is not relationship state. Recommendation is not selection. Selection is not approval. Approval is not transport. Measurement is not proof of causality.

Approval and delegation are separate lanes

For normal main-feed work, an AI recommendation cannot create an approved item by itself. A human selects the work, reviews the actual output, and approves it before the scheduler can treat it as publishable.

The First-1,000 operating mode adds one explicit alternative: a separately started live mission may delegate approval of Original / Quote / Thread items to the mission agent, but only inside that mission and with concrete stored verification provenance. Replies, Reposts, the ordinary human-approval path, and AUTO_POST remain separate authorities. Delegation is therefore a visible grant, not a side effect of generating a good draft.

The same separation continues after publication. Experimental results can suggest a strategy rule, but a suggestion has zero effect until a human explicitly accepts it. Retirement preserves the previous evidence instead of rewriting history.

Engagement is another lane. Engage Next ranks active conversations and relevant opportunities, with the human-reviewed path using exact approval/send. A persistent autonomous-reply operator is also implemented, but it is off by default and requires an explicit persisted Start grant. Live autonomous replies add stricter eligibility: recipient opt-in, a clear opt-out path, recorded X approval for the AI-reply use case, remaining operator budget/health eligibility, atomic claim ownership, and an official X API write transport. The current Clearcote browser publisher does not satisfy that final transport boundary, so live autonomous Start remains blocked.

Publishing became one lane of a network system

Raw audience observations stay separate from strategic relationship state. relationship_profiles and append-only relationship_events track target classes, interaction history, and derived relationship stages, while Engage Next prioritizes useful follow-ups before endless cold insertion.

Opportunity scoring also keeps Reach, Follow, Conversation, and Relationship potential separate. A large viral source can therefore be a weak relationship opportunity, while a smaller technical conversation can be a better place to contribute and build durable recognition.

Source truth still stays separate from workflow history. X Latest, X Momentum, GitHub Trending, Hacker News, and conversation observations are not the same thing as bookmarks, queue state, drafts, handled work, or publication history.

That distinction prevents a common automation bug: treating “I saw this before” as the same state as “I evaluated this,” “I built a relationship here,” “I used this,” or “I published something from it.”

First-1,000 mode is an experiment, not an X law

At a small-account stage, the conservative mature-account route was rejecting too many fresh opportunities before the system had enough relationship history to learn from. The current First-1,000 mode makes the bootstrap assumptions explicit instead of pretending they are universal platform rules.

growth-next reads the last-known-good X Latest and X Momentum observations, joins opportunity scores and route leverage, and surfaces a small set of usable candidates. The operator then inspects the exact live source in the authenticated browser before routing or publishing.

Freshness, momentum, conversation crowding, hook style, and borrowed distribution are treated as empirical variables. Thresholds can change when repeated account evidence justifies it; one viral source or one strong post does not become an algorithm theorem.

Measurements stay cautious

Published items can accumulate 15-minute, 1-hour, 6-hour, and 24-hour snapshots. Experiments keep their assignments and attribution confidence, while outcome language stays observational when the system cannot establish causality.

Growth Focus, writing strategy, and learned rules can influence later recommendations, but hard content gates, explicit human main-feed approval, and observed health constraints remain authoritative. The goal is not to manufacture a growth claim. It is to preserve enough provenance that later decisions can say what evidence they actually used.

Current operating boundary

Main-feed publication now uses the authenticated Clearcote browser UI. The browser publisher verifies the rendered result and captures the resulting tweet identity before local publication state is reconciled. Failed, partial, or ambiguous browser actions are not blindly replayed just to make the queue look complete.

That browser transport is suitable for the current human-reviewed and bounded mission workflows, but it is still not the official X API required by the separate autonomous live-reply contract.

Required media remains blocked until a real attachment path exists. The configurable continuous_scan AI profile is still shown as inactive because no semantic background consumer owns it; that is separate from the implemented autonomous-reply daemon described above.

What I learned

Approval should be a real system boundary, not a confirmation modal added at the end. Delegated automation is easier to reason about when its permissions are explicit.

The architectural boundary is straightforward: source evidence, relationships, recommendation, writing, approval, engagement authority, scheduling, transport, measurement, and learning should remain distinguishable states with distinguishable owners.