fix: sweep D3 amendment through the specs; correct inverted DKIM table
The re-audit of the deploy-guard change surfaced defects well outside the diff, including one that would have broken production mail. docs/05-backend-spec.md had the two SES DKIM sets exactly inverted, labelling the three records that resolve as "orphans" and the three NXDOMAIN records as "Live. Never delete". Entry (j) corrected this in AGENTS.md §7 and the correction never reached docs/05. Since SES has no custom MAIL FROM, DKIM is the only thing satisfying DMARC, so acting on that table would have silently broken intake mail authentication. Also in this change: - .gitea/workflows/deploy.yml gains a guard as steps[0] that fails the run, naming the variable, if AWS_REGION, S3_BUCKET or CLOUDFRONT_DISTRIBUTION_ID is empty — how a Gitea too old for the vars context manifests. Verified fail-closed under bash -e, sh -e and bash -euo pipefail. - AGENTS.md Current Truth: SPF and DMARC recorded as present (Q20), the matching §10 High risk row retired, three duplicate Q rows removed. - docs/reference/AWS-Hosting-Guide.md tracked and given a do-not-execute banner; it was an executable procedure for the architecture D1/D3 replace. - Copy decks: "a working litigator" and "an active litigation practice" replaced with the register's own wording; LegalService JSON-LD replaced with ProfessionalService; tribunal-secretary offers removed per D14; nine stale question blockers swept. - astro.config.mjs: prefetchAll disabled — it injected JS into every page against the zero-JS convention with no decision recorded. - src/data/site.ts: unregistered response-time commitment nulled (Q27); OBA section names downgraded to [assumed] (Q28). - s3:AbortMultipartUpload reasoning corrected to measure ./dist, not the repo. Opens Q27, Q28, Q29. AGENTS.md entry (q) records the full resolution, including the findings declined and why. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012XquaEq4BgWMCwUqLEyNkF
This commit is contained in:
co-authored by
Claude Opus 5
parent
e6abdf42e8
commit
6bf1167624
@@ -14,8 +14,9 @@ const insights = defineCollection({
|
||||
type: 'content',
|
||||
schema: ({ image }) =>
|
||||
z.object({
|
||||
title: z.string().max(70),
|
||||
description: z.string().min(70).max(160), // doubles as the meta description
|
||||
// Bounds match docs/04-seo-spec.md: titles 50-60, descriptions 140-160.
|
||||
title: z.string().min(50).max(60),
|
||||
description: z.string().min(140).max(160), // doubles as the meta description
|
||||
publishDate: z.date(),
|
||||
updatedDate: z.date().optional(),
|
||||
topic: z.enum([
|
||||
@@ -29,7 +30,10 @@ const insights = defineCollection({
|
||||
practiceAreas: z.array(z.enum(practiceSlugs)).min(1),
|
||||
image: image().optional(),
|
||||
imageAlt: z.string().optional(),
|
||||
/** Drafts are excluded from the build, the index, and the sitemap. */
|
||||
/** INTENT, not yet enforced: drafts must be excluded from the build, the
|
||||
* index, and the sitemap. Nothing implements that today — the sitemap
|
||||
* filter in astro.config.mjs covers /legal/ only. Implement before the
|
||||
* first article ships (docs/04-seo-spec.md). */
|
||||
draft: z.boolean().default(true),
|
||||
/**
|
||||
* Every article is reviewed by Pouya before publication (AGENTS.md D9).
|
||||
|
||||
+8
-2
@@ -32,11 +32,14 @@ export const CREDENTIALS = {
|
||||
'Stitt Feld Handy — negotiation and ADR workshop series',
|
||||
],
|
||||
languages: ['English', 'Farsi'],
|
||||
/** [verified 2026-08-26]. NOT OCNI (lapsed) and NOT the Law Society —
|
||||
/** The three bodies are [verified 2026-08-26]; **which** OBA sections is
|
||||
* [assumed] — §4 marks it so, the names come from the strategy brief and
|
||||
* Pouya has not confirmed them. NOT OCNI (lapsed) and NOT the Law Society —
|
||||
* listing the LSO implies licensure, which D13 bars. Do not add either. */
|
||||
memberships: [
|
||||
'ADR Institute of Canada (ADRIC)',
|
||||
'ADR Institute of Ontario (ADRIO)',
|
||||
// TODO(pouya): AGENTS.md Q28 — confirm the section list before publishing it.
|
||||
'Ontario Bar Association — Construction & Infrastructure, ADR, and Civil Litigation sections',
|
||||
],
|
||||
} as const;
|
||||
@@ -67,7 +70,10 @@ export const CONTACT = {
|
||||
phone: null as string | null, // [verified 2026-08-26]
|
||||
phoneFallback: 'By scheduled call',
|
||||
location: 'Toronto · Ontario · By appointment',
|
||||
responseTime: 'Inquiries are answered within one business day.',
|
||||
/** TODO(pouya): AGENTS.md Q27 — is a one-business-day response time a
|
||||
* commitment you want published? It is not in the §4 register, and it is a
|
||||
* service level a reader can hold you to. Left null until confirmed. */
|
||||
responseTime: null as string | null,
|
||||
linkedin: 'https://www.linkedin.com/in/pouyalajevardi/', // [verified 2026-08-26]
|
||||
/** Booking parked 2026-08-26 (AGENTS.md R6). Build /contact/ with the intake
|
||||
* form and a reserved slot so an embed drops in later without a rebuild. */
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
Both are fine on --ink (8.00) and --maroon (5.84). See docs/02. */
|
||||
--gold: #c9a876; /* rules, dividers, icon strokes, on-dark text */
|
||||
--gold-d: #a88858; /* large decorative display text on cream only */
|
||||
--gold-l: #e2c89a; /* text on ink or maroon 11.09:1 */
|
||||
--gold-l: #e2c89a; /* text: 11.09:1 on ink, 8.11:1 on maroon */
|
||||
|
||||
--line: rgb(26 22 20 / 0.10);
|
||||
--line-2: rgb(26 22 20 / 0.06);
|
||||
|
||||
Reference in New Issue
Block a user