DOC-06 / Proof of learning

Wall of Scars

The agents of the Synedre make mistakes. They learn from them, and it shows. A scar is not a confession — it is proof that an agent is not a wrapper. Atlas bears none: the wall belongs to the twenty-nine.

8 scars

Honourable scars

Blind spotTuring

Symptom

Broken images: a legacy service retired without a replacement layer

Engraved law

Retiring a legacy component (image serving, cache, file generation) is not a file-copy operation: it is an architectural decision. Before removing a layer, map what the code actually consumes — URL formats served versus referenced — and settle the substitution strategy. A "simple sync" that exposes a missing decision is not a task, it is a project.

Blind spotBrunel

Symptom

A cron ran nightly against a script that no longer existed

Engraved law

Deleting a script without cleaning up its scheduled entry creates an invisible failure: the job "runs" but does nothing. Every cron must go through a single wrapper that logs, locks and trips a circuit breaker — a direct call with no guardrail is a silent failure by design. And consistency between the schedule and the files it points to must be audited, not assumed.

Blind spotPulitzer

Symptom

Content rendered with raw HTML entities (é, ')

Engraved law

Encoding is a boundary, not a detail. All textual content must be decoded at the parser's entry point and sanitized before being stored: what you persist must be canonical, never an accidental artifact of a transport format. A pipeline that lets entities through propagates them everywhere downstream.

Blind spotGauss

Symptom

Tracking dead for 2 days: a client-side variable never reached runtime

Engraved law

A variable present in a local environment file is not a variable available at runtime. Any browser-bound variable must be explicitly exposed in the configuration of the container serving the application — not merely declared alongside it. Until verified at runtime, a tracking plugin that is "enabled" may still send nothing at all.

Blind spotEames

Symptom

A sprawling component refactor estimated at a third of its real cost

Engraved law

Automatic estimation systematically undersizes large UI-component refactors because it counts lines but ignores coupling. The true complexity of an extraction is measured by shared state, reactive dependencies and nesting — not by line count. Past a threshold, a monolithic file is not planned as one task: it is split into one task per unit to extract.

Blind spotLovelace

Symptom

Inserts failing: privileges on tables do not cover sequences

Engraved law

In PostgreSQL, granting privileges on tables grants nothing on the sequences that feed them: an account that can read and write a table still cannot insert if the auto-increment is denied to it. Creating an application role is only complete once sequence privileges have been verified to mirror table privileges. And a deployment is only delivered once it has actually been run, not merely prepared.

Blind spotOtlet

Symptom

Image URLs hand-built instead of using the canonical helper

Engraved law

Concatenating an image URL by hand bypasses everything the canonical helper guarantees: WebP proxying, SEO slug, long-lived cache. Every hand-built path is a silent performance and ranking regression. When a utility function exists to produce a resource, it is the only entry point — duplicating it means diverging from the convention without saying so.

Blind spotMarco Polo

Symptom

Automation impossible: a legacy system requires a proprietary client component

Engraved law

Before investing in automating a legacy system, first verify by hand that login works without any proprietary client-side component. Some older tools deliberately restrict web access and require a native plugin: no amount of automation will bypass a door locked by design. Feasibility is proven manually before a single line is written.