Chapters

DOC-04 / Technical reference · Chapter 10

Harness facades catalogue

Catalogue of the Synedre harness entry points (scripts, hooks, work queues), organised by family, with each one's invocation mode.

This chapter documents the Synedre harness: the set of executable entry points (Python scripts, shell scripts, hooks) that orchestrate agent work around a single, centralised PostgreSQL database. It does not describe the CodeMyShop product, which is multi-tenant and lives in its own scope: Synedre orchestrates CodeMyShop, it is not part of it. Each catalogue entry carries a family, a one-line role and a typical invocation mode.

0. Scope, method and coverage

The catalogue lists the harness facades: roughly 950 top-level Python scripts and roughly 150 entries in the shell-script directory. It is regenerated at regular intervals by a documentation-drift mirror that compares the date of the cited files with that of the chapter and reports two gaps: "code newer than the doc" and "dead references". On the latest pass the mirror flagged a cover-generation module newer than the doc and 68 dead references already documented as such (63 paths actually absent on recount, all annotated).

Extraction is programmatic: the first docstring of each Python file (syntax-tree walk) or the first description line of a shell script supplies the role. No description is invented; when a file only carries a header, the line says so. When a fact could not be verified, the chapter writes "to be confirmed" rather than deducing it.

Update from the latest regeneration

  • WooCommerce import: a new facade takes over the public catalogue of a WooCommerce shop into a structured import for CodeMyShop (dedicated sub-family, section 15).
  • Covers: photo cover generation now resolves the generation agent through an explicit path, because the scheduler's reduced environment could not see it; a nightly pass had been declared down for that reason.
  • Organisation: provisioning of the founders' private space replays one additional migration (visual profiles of the founders).
  • Email handling: the last reply sent in a thread is shown in full to the drafter, and the blind replay applies a three-minute margin so the real reference reply no longer leaks.
  • No effect on the catalogue: dictionary entries about the arm, pool, tentacle and sucker architecture (migration and architecture document, no facade); product checkout fixes.
  • Dead references: no new dead reference introduced.
  • To be confirmed: the schedules of two recent watchers (nightly demo reset, monthly SEO audit) were not checked against the scheduling table.

Covered vs actual count

CategoryActual totalCovered
Top-level Python scripts949 (948 on the previous pass)All, one per table row except rare sub-family duplicates
Shell-script directory entries148 (unchanged)All top-level entries

Counts went stale several times before being restored by a file-by-file recount; the history of those corrections is kept in the internal chapter.

"Invocation" legend

ValueMeaning
cronlaunched by the scheduler, often through a supervision wrapper
CLIcalled by hand on the command line
skillfacade behind an agent skill (slash command)
hookcode-agent hook: session start, prompt submission, before/after a tool, session end
libimported module, not a standalone entry point
workerdaemon or loop that drains a database queue

1. Families & overall flow

The overall flow has four tiers. An incoming email or a command from the control cockpit reaches the inbox/email family, which classifies the intent. The atlas/orchestration family takes over and opens either a work order (chantier) or a brainstorm. Execution is handed to agents, which feed five effector families: audits, blog/SEO, finance, browser and deployment. Everything converges on a single PostgreSQL database, reached only through a dedicated Python facade.

incoming email ──► inbox/email ──► atlas/orchestration ──► chantiers | brainstorm
                                          │
                                   agent execution
                                          │
        audits · blog/SEO · finance · browser · deployment
                                          │
                       PostgreSQL (single harness schema)

Data landmarks: the database is single and centralised; every facade goes through a common access module and a centralised environment loader. Secrets live in environment files excluded from the repository and are never reproduced in the documentation.

2. Common base (lib / cross-cutting facades)

The base groups the modules that almost every other family imports. The internal chapter gives a full table; here are its blocks.

BlockRoleInvocation
Database accessPostgreSQL facade for automation scripts; persistent connection pool for the entity layer; "golden" output-format contract that proves byte-for-byte identity and guards against silent corruptionlib
Guarded writesOne-off write symmetrical to reads: target attested by a dump, dry-run by transaction rollback by default, returned rows required on updates and deletes, DDL refusedCLI / lib
Task executionTask worker with anti-zombie lease, derived spawn timeout and retry on failureworker
Output boundingSafety net that bounds the size of tool results returned to the model (token-cost control)hook / lib
Paid-tool circuit breakerGuard that refuses any paid-tool call before any network access when an environment switch is set (public demo account)lib

Credentials registry sub-family

A central registry lists third-party accounts without ever exposing or storing a secret in clear: assisted creation and filling, audit trail, rotation. Agents never see the password.

MCP sub-family

Bulk SEO optimisation bridge, per-tenant token issuance and a tool server shared between several agent harnesses.

Tenant resolution, session scope and write-target sub-family

Modules that determine, for a session or command, which tenant is targeted and where a write is allowed to go. The destination always comes from the fleet inventory in the database, never from a hard-coded value.

3. Atlas / orchestration family

Doctrine: a programmatic agent invocation goes through a pseudo-terminal, never through a direct non-interactive call. This family covers polling of the orchestration mailbox (once a minute, with a DKIM gate on forwarded messages), intent classification, agent start-up and reaction to failed tasks.

Sub-familyRole
CLI-to-cockpit bridgeLinks command-line sessions to the dashboard
Multi-LLM AgentRunnerRuns the same job on several models, with routing stored in the database
Tentacle poolFan-out of parallel sessions in the cockpit terminal
Codex harnessApplication server, brief and context guard
Portable meta-harnessSame safety guards for Claude, Codex and Antigravity through a single dispatcher
Fifth native harnessHarness with residential egress for browsing
Cockpit sucker linkLinks a session to its working arm in a demonstration cockpit

4. Chantiers family (7-step workflow)

The official facade creates a chantier from an incoming email following the seven-step procedure: read the request verbatim, scan attachments, audit the agents, mission letter, explicit recruitment, atomic creation with skeleton, then update and readiness check. An intake classifier determines the regime (light run, plan-mode run, chantier) and the autonomy level. A drift audit detects chantiers whose status lies relative to the real code, and a reversible snapshot gate protects plan-mode runs.

QA orbit sub-family — automatic closing of chantiers

Automatic closing of a chantier when the QA proof is present and compliant.

Post-chantier self-optimisation sub-family

An analyser re-reads agent events and task runs when a chantier closes and feeds an optimisation backlog; a facade then turns a backlog line into a corrective chantier, never automatically.

5. Brainstorm family

Brainstorm workers drain a database queue. The looping daemon is fragile: safety comes from a single scheduled run per pass. Retained ideas are promoted asynchronously.

6. Audits / quality / security family

Nightly audit of all automata, read-only watchers on the fleet's CMS tree (orphan categories), audit of the authentication guards on API routes (a JSON 200 response is a leak; 401 or 403 is locked), antivirus scan of attachments before any opening, LLM-in-cron detector, schema-consistency and tag-coverage sentinels, backup integrity. Documentation-debt sensors based on syntax-tree analysis complete the set.

Per-tenant QA system account sub-family

A dedicated technical QA account is maintained for each tenant, with a log of its uses; the table entries describe creation, rotation and checking.

Iso-Figma sub-family — mock-up versus render measurement

Measures the gap between a Figma mock-up and the render, route by route, routes each gap to the right action and sets vertical gutters by measurement, with a numeric prediction before deployment.

7. Memory / scars / learning family

Code-agent hooks read and write memory at three levels: memory notes, a second brain of atomic notes and a vector index in the database. A "scar" is a lesson drawn from an incident, injected into agent context before risky actions. Sensors detect recurrences, merge duplicates and split a session that exceeds a context threshold, then re-inject the last session hand-off at the next start.

Nightly maintenance loop and documentation self-repair sub-family

A nightly loop inspects consistency between documentation and code, measures five health dimensions (including coverage), regenerates drifting chapters under a gate, reviews the result before publication and exposes its state on a maintenance dial. Failing steps are counted and reported.

Adaptive immunity sub-family

Reflexes learned from past incidents, triggered before a known risky action can recur.

Deliberation organ sub-family

Structured decision mechanism between agents when several options are defensible.

8. Personas / agents family (upkeep)

Weekly synchronisation of the Synedre's canonical agents to the household application (the latter's agents are not locally invented personas), model-driven persona refresh with a three-way diff and human review, and retrieval of an agent's full profile with its scars.

9. Inbox / email (client) family

Hard rule: no client email is sent by the AI on its own initiative; everything goes through a single facade with draft then send steps, and a hook blocks direct use of the SMTP protocol. Mailbox credentials live in an environment file outside the repository.

  • Opposition guard (GDPR art. 21): drafting is refused if the address or its domain appears in an opposition table kept without time limit; when the database is unavailable, refusal is the default behaviour.
  • Client message never scheduled: a reply in an open thread, or to a recipient known as a client, cannot be scheduled for later; only a first contact to an unknown party can.

Prospecting and measurement note sub-family

Public qualification of a site, measurement note backed by proven probes (speed, technical, search demand), meeting preparation and sealed first contact within a fixed time window.

Delegations sub-family (acquisition and communication)

Two delegations bounded by a daily quantity, an explicit scope, a previous-day recap with veto right and an environment switch. They never cover an existing client, an amount or a commitment.

Email handling by sucker sub-family

A watcher launches one handling per client on a token-based approval, applies common drafting rules (verify before asserting, commit to nothing, next action, "committed is not delivered"), keeps the list of open promises in the thread and measures the rate of drafts validated as-is. A blind replay compares what the sucker would have written to the reply actually sent, with two distinct judges. Since the latest pass, the last reply in the thread is shown in full (others are truncated) and the replay applies a three-minute margin on the reference.

Instant professional messaging sub-family

Sending on human validation, delivery state tracked, no impersonation of the founder's identity.

Community sub-family

Watch for public help requests, help-draft, slot-based queue (random gap, activity hours, daily cap) and a per-channel switch. Never solicitation, commercial links or private messages.

Protection of an adult sub-family

Sorting of the mail of a compartmentalised case, fact extraction and update of procedures, never as a scheduled task.

AI voice desk sub-family

Automated telephone reception with a desk report.

Self-addressed system emails sub-family

Single morning recap replacing individual alerts; family and agent label set at send time; burst protection.

10. Blog / SEO / content family

"Database-first" publishing engine, multilingual per-page SEO engine (meta, description, FAQ, internal linking, with status and a backup before each pass), internal links in product descriptions that target a URL answering 200 in the page's language, and a series of editorial production subsystems.

Sub-familyRole
Site meshSEO, performance and security hubs spread across the fleet
Google Search ConsoleData import, traffic-decline diagnosis, opportunity report
i18n translationsBulk translation of localised fields; market adaptation rather than literal translation
AutoblogWriting, relay, seeding and restocking of blog queues
Article FAQsCatch-up, regeneration and purge of duplicate FAQs
Category coversOne image per category drawn from its SEO, with alt text per market
Blog coversRealistic photo generated without a browser by the generation agent, 1200×630 crop, WebP, generation queue; resolving the agent through an explicit path avoids the failure of the scheduler's reduced environment
Agent dialogue forumThreads published on the site
Wave indexingProgressive page submission
Internal linkingLinks placed from Search Console queries, reversible
i18n glossaryMultilingual glossary and translation pilot for a culinary-products site
NetlinkingContact discovery and link tracking
Auto-parts catalogueTools specific to a parts catalogue site
Automatic social broadcastingPosts drawn from bounded sources (article, tip, weekly delivery, already-published reply), published after a validation click in a single queue, under mechanical guards: anti-leak, no client name, per-network and per-day cap, switch. A browser publisher for an article platform is added, limited to two articles per month.

11. Browser / browser agents family

Protection doctrine: a SOCKS proxy handles IP reputation, not anti-bot challenges, hence a headed browser on a residential machine. A job queue drives the Playwright agents.

Residential machine sub-family — provisioning, jukebox, cinematheque and edits

Machine preparation, music playback, film library with measured and retranslated subtitle tracks, video edits.

Figma sub-family (iso mock-ups)

Inventory of a Figma file and retrieval of mock-ups as images with a manifest; DOM, browser capture, programming interface, fills and comments modes.

12. Bank / invoicing / finance family

Scheduled bank synchronisation, statement import with duplicate protection and hardened parsing (non-breaking thousands separators, foreign-currency lines ignored), automatic categorisation from a rule base with a single canonical vocabulary, invoice reconciliation, invoicing with recurring subscriptions (single issuer, show before sending) and overdue-payment reminders with an authorisation code.

FinOps sub-family — pockets, caps and calls

Tracking of model and infrastructure costs per pocket, caps and alerts.

Supplier expenses sub-family

Entry, classification and reconciliation of expenses.

Household sub-family

A separate database holds personal finances: the personal is never mixed with the professional.

Model-provider budget and throughput sub-family

Quotas, throughput regulation and budget of a third-party model provider.

13. Brand-watch family

Machine-checkable QA scale for the brand guidelines (seven categories), monitoring of search results around proprietary inventions and competitive watch. Some of these watchers are no longer scheduled and only run by hand; the catalogue says so.

Brand and logo search sub-family

Prior rights, available domains and prices, filing costs, PDF deliverable; the tool proposes and never files or buys.

Logo vectorisation sub-family

Conversion of a raster logo into vector form.

14. Deploy / ship / infra / backups family

Production release rule: shipping a tenant to production is decided per tenant, through a fleet flag in the database; it is not reserved to a human. At night it requires QA proof; a health script provides rollback and an environment switch turns it off. Delivery of an internal target always goes through the deploy command, never through the production ship. Migrations, in-container commands and infrastructure remain the AI's responsibility.

The deploy library detects drift between application schema and database before the build (blocking by default), applies missing idempotent DDL (never drops) and generates the i18n routes. A delivery journal records each successful deploy to answer "since when has this commit been live?".

Backups and restore

Encrypted backups to object storage, restore tests and an audit of their freshness.

Mothership-to-another-server switch sub-family

Frozen switch sequence with proof before cut-over.

Auto-parts shop sub-family

Infrastructure tools specific to a catalogue tenant.

Registrar facades sub-family

Registrar, mail aliases, client account, API rights. The organisation also provisions the founders' private space without displaying any secret: dedicated role, backup before writing, replayable migrations (including the most recent one, the founders' visual profiles) and revalidated minimum right; without the apply option, the tool simulates.

15. OSS sync / refactor / migrations family

The sync publishes the core and community parts of CodeMyShop from the private repository to the public one, as a flattened snapshot per release (not a commit-by-commit replay). Tools strip the comments from the snapshot. The family also contains supplier connectors, scraping, demonstration seeds and platform migrations.

Sub-familyRole
Supplier catalogue connectorsImports of dropshipping supplier feeds
Client scraping / ETLIdempotent sitemap-driven scraper, anti-ban, images, injection into a remote preproduction; shared HTTP base
WooCommerce importSee below
Competitor price comparatorTargeted collection on references already sold, synchronisation to the comparison module, weekly run of one competitor per night
Demonstration seedsDemo datasets
Faithful redirect batch301 redirects for products
Variant grouping into combinationsMerging variant listings into combinations
Checkout and store connectorsCatalogue synchronisation from point-of-sale software
Colour combinationsGrouping a product range by colour
PrestaShop 9 migrationTheme, migration, module and 301 redirect plan from an older shop to PrestaShop 9

WooCommerce catalogue import sub-family

Takes over the public catalogue of a WooCommerce shop into CodeMyShop: read-only access to the shop's public API, no database write and no deployment.

ComponentRoleInvocation
WooCommerce import toolReads, without a key, products (paginated by the page-count header), categories and the detail of each variation (price, reference), then drops an import folder (structured JSON file and images) that the tenant owner integrates. Normalisation: HTML entities decoded, long-description tables converted to label/value pairs, brand taken from the shop's field or else from a supplied list (whole word, never guessed), prices in cents (zero = on quote), original image and never the thumbnail. At most one request per second, as the site belongs to a third party. Options: site, output folder, brands, pause, no images, no variations, replay from a raw folder.CLI / import skill

16. Obsolescence monitoring / harness tests (miscellaneous) family

Session brief, unit tests of the obsolescence functions, production safeguard for the only paying client, and cross-cutting subsystems.

Sub-familyRole
3D workshop / 3D configuratorModelling pipeline, published versions, geometric correction by annotated stroke
Protection of an adultCompartmentalised handling of a protection case
Automata governanceSynchronisation between the real scheduling table and the database registry
Jukebox / karaokeTerminal music player
Supervision watchersDistribution of scheduling watchers

17. Code-agent hooks inventoried (two settings files)

Hooks are declared in two distinct settings files, each carrying a different set: they must not be confused.

17.a — Local settings (Python facades and scripts)

SessionStart      → context counter reset, session brief, scar injection
PreToolUse:Bash   → production-write guard, email-facade guard
PreToolUse:Edit   → scar injection before writing
PreToolUse:Agent  → scar injection before delegation
PostToolUse       → context tracking

The prompt-submission hook is empty in this file.

17.b — Repository settings (shell wrapper hook subsystem)

An entire orchestration subsystem lives in a shell layer that frames the facades. It notably includes: a universal dispatcher of safety guards, blocks on mass-staging in the version manager, guards against writing to client production without explicit consent (latest addition), secret guards, doctrine reminders before editing, a block on working on the shared trunk, and guards on production-release commands. Each matcher is verified group by group during adversarial reviews.

17.c — Guards present on disk but not wired

Inventory of guards that exist but are declared in neither file; they are listed so that nobody assumes they are active.

18. Reliability notes

Each regeneration records its accepted limits. The latest: one new facade catalogued, four lines realigned, one sub-family added. Still to be confirmed: the schedules of two recent watchers, the line of a build script not re-read after a multi-slot semaphore was added, the re-alignment of line pointers on older entries, and a review of the WooCommerce import skill.

  • Adversarial reviews: the doc was repeatedly checked against the real code (scheduling in force, hook settings, commit history); corrected gaps include documented schedules that did not exist, files marked deleted that had been restored, and wrong hook counts.
  • Dead references: a purge of unused scripts moved several dozen files to a bin; each is marked "deleted" with its restore path for thirty days.
  • Anomalies found: scheduling docstrings out of date versus the real table, facades designed for scheduling with no active entry, hard-coded destinations contrary to the "destination comes from the fleet" doctrine, orphan scripts.
  • Deliberately not copied: the default credentials of a preproduction access protection, and the names of the compartmentalised schemas of a protection case.