Skip to content

EmbeddedEra workflows

Status: automatic content checks deployed; website-care pilot awaiting customer URL, 2026-09-18

Reusable workflows connect the existing scripts, approval pages and verification checks. They do not replace the task register or duplicate SOPs.

First delivery: content publishing

Owner: Sales. Procedure: ../sops/docs/SOP-018-content-publishing. Implementation belongs in the existing assistant repository. The review surface remains https://home.embeddedera.com/home/content.

Acceptance criteria:

  • A Story image alone is not evidence of a complete message. Check headline, EmbeddedEra branding, a clear call to action and a readable destination against the exact artwork being reviewed.
  • Distinguish a printed URL from an interactive link. Automated Stories must not promise a clickable link that the publishing route cannot supply.
  • Report scheduling separately from actual publication. Missing or inconclusive remote evidence stays unknown; never trigger retries from absence alone.
  • Keep existing publication approvals, per-destination duplicate prevention and approved schedules intact.
  • Validate changes using isolated fixtures and sandbox code before deployment.

Run the audit

From /home/angel/assistant:

python3 content_workflow.py audit --root /home/angel/embeddedera-content --ledger /home/angel/.local/state/assistant/content-approval.sqlite3

Without remote evidence, delivery stays unknown. For current Postiz evidence, load the existing Postiz credential into the process environment without printing it, and add --postiz-url http://127.0.0.1:4007/api --start <ISO-time> --end <ISO-time>. The window must be at most 31 days. A job outside that window remains unknown. Exit 0 means the audited checks passed, 1 means review or investigation is needed, and 2 means the audit could not read an input. This command does not reconcile or rewrite the hub's ledger; it gives an independent report. The automatic checker now writes a separate report every 15 minutes, shown under Publication check on Home. Reports older than 45 minutes are unknown/stale; the original scheduling ledger remains separate.

Story draft example

Generated with the deterministic HTML/CSS renderer and visually checked for readable headline, brand and destination. After the user's Proceed authorization, this format replaced artwork on nine still-queued Stories without changing IDs or posting times. Today's published Facebook Story was untouched. The visible website address is not a clickable sticker.

Story draft with title, EmbeddedEra brand and notes destination

Next candidates

Code delivery will reuse sandbox branches, existing repository checks and independent review. The website-care pilot now has a bounded explicit-page checker, report template and draft SOP-032. It awaits the customer's exact website URL; no customer has been enrolled or contacted. Commercial scope and price remain separate decisions.

Worker evidence

Use SOP-025 AI Work Allocation for routing and capacity rules. Each substantial run records task type, exact model when available, allowance observation, elapsed time when measured, CLI-reported cost (labelled as estimate), independent validation, rework and outcome. Unknown values remain unknown. Compare similar tasks before changing the default worker; one success is not a model benchmark.

Date Task Worker Cost Evidence / outcome
2026-09-18 Content quality and delivery audit implementation Codex worker, inherited session model; exact backend identifier unavailable Not reported 28 tests independently passed; browser checks at 375/1440 px passed. Implementation commits 1c89a89, d517c91; sandbox merge bede11f. Initial Claude reading was stale; refreshed reading later showed 1% session, 66% weekly.
2026-09-18 Bounded read-only correctness review Requested Sonnet; CLI reported claude-sonnet-5 plus a small claude-haiku-4-5-20251001 usage entry $0.674829 CLI list-price estimate; not subscription charge Review identified overdue queues, ambiguous audit scope and environment proxy handling. Findings independently assessed and sent back for correction. CLI duration 113182 ms; no recursive agents or permission denials.

Log

  • 2026-09-18: Completed #169. Existing SOP-018 checks were already implemented; added six network-isolated regression tests and corrected missing-source false pass to skip. Both registered checks pass current local data. Source tracked in assistant/scripts/sop-audit; evidence ../audits/2026-09-18-content-audit-checks. No publication/ERP mutations.

  • 2026-09-18: Under explicit delegated approval from Angel, closed #125, #222 and #56 with evidence-bearing Verified comments and read-back confirmation. Reviewed the live pending approval queue; retained #59 for authenticated runtime verification and #147 for mechanical footprint checks. No broad business/publication approvals. Details: ../audits/2026-09-18-delegated-task-approvals.

  • 2026-09-18: Completed deeper evidence check for #125/#222. Live SMTP enabled at Resend:465; retrieved three historical delivered confirmation records without sending. Stored Postiz profiles match embedded_era/embeddederaofficial, enabled and not refresh-needed. Registered existing Meta credential location without values; vault copy and Meta-side professional/Page linkage remain unverified. Evidence: ../audits/2026-09-18-marketing-task-evidence.

  • 2026-09-18: Deployed actionable publication guidance as main 230fc45 (sandbox 74a3e43). Eleven JS assertions and offline browser checks at 375/1440 px passed: no overflow or script errors. Static page is read per request; no restart needed. No retry policy, scheduling ledger or remote posts changed. SOP-018 v5.1 explains recovery guidance.

  • 2026-09-18: Read live Kanboard: 173 open tasks. Added audit evidence to #125 and #222, left both open pending their remaining proof; #107 still includes LinkedIn/X. Current DNS confirms Resend SPF/DKIM and domain DMARC; Postiz reports enabled Facebook/Instagram. Newsletter sync completed normal 14:00, 14:15 and 14:30 runs successfully (empty queues).

  • 2026-09-18: Newsletter sync hardened in sandbox d9f8d26, deployed as main 66ceca5 to the existing command; cron unchanged. All 17 fixture tests passed under systemd RestrictAddressFamilies=AF_UNIX; separately proved AF_INET sockets fail. Tests used fake curl and temporary homes. Codex worker inherited session model (exact backend/cost unavailable); fresh Codex reading was 76% weekly, Claude stale. SOP-033 owns exceptions. No production signup created for testing. Pagination/duplicates fail closed for review.

  • 2026-09-18: Completed reverse-engineering feed/Story artwork using built-in imagegen, selected conceptual illustrations and saved prompts/provenance in the package. Six Story quality checks pass. No new posts scheduled; Sales approval still required. Website-care note now includes service-tier options and proposal copy; no price/contact.

  • 2026-09-18: Corrected schedule display after artwork replacement: fully occupied packages show their recorded approval timing, not a newly proposed date. Added regression; all 23 approval tests passed. Sandbox 7cb9066, final production 703def9, pushed and healthy. Original approval history and duplicate guards unchanged.

  • 2026-09-18: Follow-on work deployed as main 00c773d, sandbox f5c93c3, both pushed and healthy. Codex implementation worker (inherited model, backend ID/cost unavailable) produced 56df8e6 and 87d7e4d; parent added polling budget 4381fa4. All 40 tests independently passed; publication-status browser checks passed at 375/1440 px. Automatic 15-minute check enabled, first report complete: 2 published / 15 scheduled. No AI calls in the recurring job. SOP-018 v5.0 and draft SOP-032 document operation. Website customer URL still missing.

  • 2026-09-18: Authorized correction updated 9 queued Stories via Postiz type=update, retaining IDs, integration IDs, state and times, with readback after each. Published Facebook Story untouched. First attempt stopped at media preflight 403 before any API POST; known browser User-Agent resolved access. Before/after evidence and original images: embeddedera-content/docs/story-refresh-2026-09-18-attempt2/. Current package previews corrected; clean backgrounds retained. Prior approval fingerprints remain historical, with cross-version duplicate guards intact.

  • 2026-09-18: User authorized the first content-publishing milestone. Reusing assistant and SOP-018 instead of introducing another repository, scheduler or task board. Starting from the Facebook Story finding: published media had no headline, destination or caption.

  • 2026-09-18: Live read-only Postiz audit independently confirmed Facebook feed/Story published and Instagram feed/Story queued for 22:00 UTC. The local ledger still said scheduled for all four, demonstrating why provider evidence matters. Existing illustration-only packages correctly fail the new Story review check. Existing approved remote schedules remain untouched and continue to use their original artwork.
  • 2026-09-18: Sonnet reviewer returned six findings. Overdue queues, explicit audit scope, disabling environment proxies, malformed state handling and manifest symlinks were accepted for correction. Confirmed Story readiness and publishing resolve the same image path. Existing approvals intentionally bypass the new preparation gate; image bytes remain part of the existing approval fingerprint. Do not infer a new model default from this single review.
  • 2026-09-18: Review corrections committed as be7dea4, independently verified with 31 passing tests. Phone/desktop UI checks passed at 375/1440 px. Sandbox merge 479b708, production 6c04fc5, both pushed; both services report healthy. SOP-018 v4.0 owns the procedure. Remaining scope: background delivery reconciliation, replacing already-approved Story jobs through a reviewed change, and future code-delivery/customer-care workflows. No remote social posts were changed or created.