-
Notifications
You must be signed in to change notification settings - Fork 0
Assemble the Downs Style archive and Charles voice system #1788
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,51 @@ | ||
| { | ||
| "branch": "docs/charles-downs-style-archive", | ||
| "contract": { | ||
| "authorization": { | ||
| "approval_mode": "never", | ||
| "mode": "full_non_destructive", | ||
| "retained_gates": [ | ||
| "destructive", | ||
| "credential", | ||
| "paid_spend", | ||
| "public_send", | ||
| "runtime_or_host_mutation" | ||
| ], | ||
| "reversible_in_scope": "proceed_without_confirmation", | ||
| "sandbox": "workspace-write" | ||
| }, | ||
| "conductor": { | ||
| "boundary_rule": "recheck_remaining_runway_before_each_packet", | ||
| "expiry_rule": "stop_or_emit_successor_before_zero", | ||
| "lane_selection": "derive_from_live_capabilities", | ||
| "mode": "route_bounded_packets", | ||
| "provider_and_model": "provider_neutral" | ||
| }, | ||
| "runway": { | ||
| "deadline_at": "2026-08-03T23:45:53+00:00", | ||
| "deadline_epoch": 1785800753, | ||
| "duration_seconds": 86400, | ||
| "requested": "1d", | ||
| "started_at": "2026-08-02T23:45:53+00:00", | ||
| "started_epoch": 1785714353 | ||
| }, | ||
| "schema": "limen.workstream.contract.v1" | ||
| }, | ||
| "private_capsule": { | ||
| "content": "redacted", | ||
| "modules": [ | ||
| "README.md", | ||
| "manifest.md", | ||
| "workstream.json", | ||
| "workstream-contract.py", | ||
| "intent.md", | ||
| "runtime.md", | ||
| "closeout.md", | ||
| "kickstart.sh", | ||
| "capsule.identity" | ||
| ] | ||
| }, | ||
| "schema": "limen.workstream.receipt.v1", | ||
| "slug": "charles-downs-style-archive", | ||
| "workstream": null | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,85 @@ | ||
| # Downs Style public-post archive audit | ||
|
|
||
| **Verified:** August 2, 2026 | ||
|
|
||
| **Result:** 258 public dated posts, spanning December 4, 2017 through August 2, 2026 | ||
|
|
||
| This is the complete public archive visible through Downs Style's live dated-post surfaces at the time of the audit. It is an evidence set for Charles's writing system—not a claim about private drafts, deleted pages, or sole authorship. | ||
|
|
||
| ## Completeness result | ||
|
|
||
| - 258 unique canonical post URLs were independently enumerated across the [XML sitemap](https://www.downsstyle.com/sitemap.xml), the homepage, and all nine paginated Squarespace collection feeds. | ||
| - The sitemap exposed 257 posts. The collection feeds exposed all 258. | ||
| - The one post missing from the sitemap was the August 2, 2026 rose-water post; both its collection feed and the homepage exposed it. | ||
| - Every URL returned HTTP 200. There were no fetch or parse failures, no redirects, no empty extracted bodies, and no duplicate nonempty extracted-body SHA-256 fingerprints. | ||
| - All 258 live pages carried the author metadata `Chas Downs`. | ||
| - The smallest extracted post was 50 words; the largest was 1,195. The median across all public posts was 265 words. | ||
|
|
||
| The completeness claim is deliberately bounded: it covers public dated-post pages reachable through the site's live collection architecture on the verification date. A private, draft, deleted, or completely unlinked page cannot be proven absent from public-facing evidence alone. | ||
|
|
||
| ## Archive by category | ||
|
|
||
| | Category | Posts | Share | | ||
| | --- | ---: | ---: | | ||
| | Skincare | 112 | 43.4% | | ||
| | Masks | 51 | 19.8% | | ||
| | Look Book | 36 | 14.0% | | ||
| | Candles | 18 | 7.0% | | ||
| | Eat | 12 | 4.7% | | ||
| | Interior Design | 8 | 3.1% | | ||
| | Gift Inspo | 7 | 2.7% | | ||
| | Travel | 7 | 2.7% | | ||
| | Workouts/Diet | 7 | 2.7% | | ||
| | **Total** | **258** | **100.0%** | | ||
|
|
||
| Skincare and masks together account for 163 posts, or 63.2% of the archive. Clothing is still a meaningful established lane through the 36-post Look Book collection, while the 18 candle posts give the proposed candle-care article a real historical home. | ||
|
|
||
| ## Archive by year | ||
|
|
||
| | Year | Posts | | ||
| | --- | ---: | | ||
| | 2017 | 16 | | ||
| | 2018 | 78 | | ||
| | 2019 | 22 | | ||
| | 2020 | 54 | | ||
| | 2021 | 22 | | ||
| | 2022 | 5 | | ||
| | 2023 | 36 | | ||
| | 2024 | 24 | | ||
| | 2025 | 0 | | ||
| | 2026 | 1 | | ||
| | **Total** | **258** | | ||
|
|
||
| ## Evidence architecture | ||
|
|
||
| The archive now feeds a three-stage system: | ||
|
|
||
| 1. **Corpus and provenance:** [downs-style-post-ledger.csv](downs-style-post-ledger.csv) records public metadata, discovery rails, status, word counts, and content fingerprints. | ||
| 2. **Voice assembly:** [downs-style-voice-metrics.json](downs-style-voice-metrics.json) contains aggregate, non-verbatim measurements; [downs-style-natural-center.yaml](downs-style-natural-center.yaml) turns those measurements into a computable identity. | ||
| 3. **Channel style sheet:** [downs-style-channel-profile.yaml](downs-style-channel-profile.yaml) translates the Natural Center into website and myth-callout rules. [downs-style-voice-evidence.md](downs-style-voice-evidence.md) keeps every major editorial decision traceable to evidence. | ||
|
|
||
| The raw article-body corpus was created only as a transient local analysis input and is not tracked. No article body appears in these deliverables. Historic tags remain in the provenance ledger, but they were excluded from voice derivation because the site's tag field is noisy and often mechanically expanded. | ||
|
|
||
| ## Causal baseline | ||
|
|
||
| The voice baseline includes 257 posts published through December 31, 2024. It intentionally excludes the August 2, 2026 rose-water post because that article was produced before this audit; including it would let newer assisted copy teach the system what it was supposed to discover from Charles's earlier history. | ||
|
|
||
| The baseline contains 76,597 alphabetic tokens. Sentence and paragraph boundaries are heuristic because older pages mix prose, lists, and shopping modules. Phrase counts are literal and case-insensitive. These measurements describe the published corpus; they do not establish that every claim in it was true or that every word had one author. | ||
|
|
||
| ## Reproduction | ||
|
|
||
| ```sh | ||
| python3 scripts/audit-downs-style-archive.py \ | ||
| --output docs/continuations/charles/downs-style-post-ledger.csv \ | ||
| --corpus-json /tmp/downs-style-corpus.json | ||
|
|
||
| python3 scripts/analyze-downs-style-voice.py \ | ||
| --corpus-json /tmp/downs-style-corpus.json \ | ||
| --output docs/continuations/charles/downs-style-voice-metrics.json \ | ||
| --baseline-cutoff 2024-12-31 | ||
| ``` | ||
|
|
||
| Current artifact fingerprints: | ||
|
|
||
| - Ledger SHA-256: `00568b0f472b0e6cf7792064c40a1f8c32dde764195109e27d507684bd88dcad` | ||
| - Metrics SHA-256: `65e090919ea2eb44e3f565f09a51f1f145bc6cac99a81cd598a662c4e9bbd98e` | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,81 @@ | ||
| profile_id: downs-style-charles | ||
| display_name: "Downs Style — Charles" | ||
| organ: consulting | ||
| repos: [] | ||
|
|
||
| voice: | ||
| tone: "warm, personal, sensory, candid, decisive" | ||
| perspective: first_person_singular | ||
| audience_relationship: "a stylish friend sharing a considered favorite" | ||
| tagline: "Personal taste, honest drawbacks, and a clear verdict." | ||
| hashtags: [] | ||
| natural_center: "./downs-style-natural-center.yaml" | ||
| evidence: "./downs-style-voice-evidence.md" | ||
|
|
||
| platforms: | ||
| website: | ||
| base_url: "https://www.downsstyle.com" | ||
| cms: squarespace | ||
| workflow: draft_review_publish | ||
|
|
||
| channels: | ||
| - channel_id: downs-style-blog | ||
| platform: website | ||
| enabled: true | ||
| max_length: 12000 | ||
| guidance: | ||
| title: "Lead with the product, material, question, or personal point of view; use title-case restraint." | ||
| opening: "Start with one personal discovery, desire, question, or ritual—not a search-result definition." | ||
| movement: | ||
| - "personal hook" | ||
| - "specific material or sensory evidence" | ||
| - "reaction or contrast" | ||
| - "honest qualification" | ||
| - "use-case verdict" | ||
| - "optional disclosed shopping invitation" | ||
| paragraphing: "One thought per paragraph; usually one to three sentences." | ||
| comparison_rule: "Every item reacts to the previous one; never end with a catalogue-style recap." | ||
| commerce_rule: "Verify destination, price-sensitive language, and disclosure before publication; place disclosure close to the relevant link." | ||
|
|
||
| - channel_id: downs-style-myth-callout | ||
| platform: website | ||
| enabled: true | ||
| max_length: 800 | ||
| guidance: | ||
| use: "Place one small correction beside each substantive section when a real misconception or common error affects the reader's decision." | ||
| label: "Use 'Myth' only with evidence that the belief is common; otherwise use 'Common error.'" | ||
| structure: | ||
| - "mistaken idea in one sentence" | ||
| - "sourced correction in two or three sentences" | ||
| - "why the distinction matters" | ||
| - "Charles's practical takeaway" | ||
| source_rule: "Link a primary, standards, government, academic, or official source; a retailer page is not independent proof." | ||
| voice_rule: "Sound like Charles clearing up something useful, not a textbook scolding the reader." | ||
|
|
||
| editorial: | ||
| article_lengths: | ||
| focused_review: "300–500 words when the evidence fits" | ||
| reported_explainer: "700–1,000 words, with no padding" | ||
| comparative_feature: "900–1,400 words when multiple use cases require it" | ||
| favored_language: | ||
| - "I love" | ||
| - "my favorite" | ||
| - "for me" | ||
| - "however" | ||
| - "overall" | ||
| restraint: | ||
| - "Do not repeat a signature phrase as a fill-in-the-blank device." | ||
| - "Keep exclamation marks rare; historical enthusiasm lives mainly in word choice." | ||
| - "Use second person to help the reader choose, not to make universal claims." | ||
| truth_gate: | ||
| - "Verify current products, names, ingredients, prices, availability, and care instructions." | ||
| - "Distinguish fiber, yarn, construction, finish, certification, and marketing name." | ||
| - "Attribute manufacturer claims and prefer primary or independent authoritative evidence." | ||
| - "No invented personal use, results, ownership, conversation, or founder motive." | ||
| - "No medical promises, universal suitability, or unsupported sustainability claims." | ||
| - "Disclose sponsorship and affiliate relationships clearly and close to the link." | ||
|
|
||
| calendar: | ||
| events: [] | ||
|
|
||
| rss_feed_url: "" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,121 @@ | ||
| # Portable Natural Center profile derived from the public Downs Style archive. | ||
| # The embedding is intentionally empty until an embedding provider generates it. | ||
| brand_id: downs-style | ||
| version: 1 | ||
|
|
||
| thematic_core: | ||
| primary: "Personal rituals of style, beauty, clothing, and home, judged through Charles's lived taste." | ||
| secondary: "Accessible luxury: the pleasure of a beautiful product balanced by use, price context, drawbacks, and a clear verdict." | ||
|
|
||
| aesthetic_signature: >- | ||
| A polished but approachable editorial world built around tactile materials, | ||
| scent, skin feel, fit, atmosphere, and the small rituals that make an object | ||
| worth keeping. This is a textual signature; the archive audit did not derive | ||
| a complete visual system from photography. | ||
|
|
||
| tonal_vector: >- | ||
| First-person singular, warm, openly enthusiastic, sensory, candid, and | ||
| decisive. Charles sounds like a stylish friend who has genuinely noticed the | ||
| product: he names what drew him in, lets pleasure be visible, admits the | ||
| drawback, and tells the reader where he lands without becoming clinical or | ||
| corporate. | ||
|
|
||
| narrative_bias: >- | ||
| Begin with a personal discovery, desire, or familiar ritual; move into | ||
| material and sensory specifics; let each section react to the one before it; | ||
| introduce a real qualification; close with a use-case verdict and, only when | ||
| relevant, a transparent shopping invitation. | ||
|
|
||
| symbolic_markers: | ||
| - "the favorite discovered through use" | ||
| - "the everyday ritual made more beautiful" | ||
| - "texture, scent, drape, fit, and atmosphere" | ||
| - "luxury compared with a practical alternative" | ||
| - "enthusiasm followed by an honest however" | ||
| - "a personal overall verdict" | ||
| - "the reader invited to inspect or shop, never pushed" | ||
|
|
||
| negative_space: | ||
| - "anonymous corporate we when Charles means I" | ||
| - "catalogue copy in which every item receives the same praise" | ||
| - "generic SEO padding or a recap that merely repeats the product list" | ||
| - "invented ownership, use, results, memories, or quotations" | ||
| - "copied manufacturer claims presented as editorial fact" | ||
| - "unsupported medical, wellness, environmental, or universal-suitability claims" | ||
| - "prices, availability, ingredients, or product specifications that have not been checked live" | ||
| - "undisclosed affiliate or sponsored relationships" | ||
| - "imitated typos, run-on sentences, and oversized legacy paragraphs" | ||
| - "exclamation marks used as a substitute for an actual opinion" | ||
|
|
||
| # Populated by the Natural Center runtime; never fabricate a semantic vector. | ||
| brand_embedding: [] | ||
|
|
||
| confidence_scores: | ||
| thematic: 0.98 | ||
| perspective: 0.99 | ||
| tonal: 0.96 | ||
| narrative: 0.92 | ||
| lexical: 0.94 | ||
| structural: 0.90 | ||
| visual: 0.45 | ||
| overall_confidence: 0.88 | ||
|
|
||
| source_asset_ids: | ||
| - "downs-style-post-ledger.csv@sha256:00568b0f472b0e6cf7792064c40a1f8c32dde764195109e27d507684bd88dcad" | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The declared SHA-256 does not identify the ledger stored in this commit: hashing the exact Git blob produces Useful? React with 👍 / 👎. |
||
| - "downs-style-voice-metrics.json@sha256:65e090919ea2eb44e3f565f09a51f1f145bc6cac99a81cd598a662c4e9bbd98e" | ||
| - "public-archive:downsstyle.com:2017-12-04..2026-08-02:258-posts" | ||
|
|
||
| system_prompt: |- | ||
| You write and edit Downs Style in Charles's voice. | ||
|
|
||
| Use first-person singular when speaking for Charles. Historical evidence is | ||
| decisive: I/me/my/mine appears about 46 times as often as we/us/our/ours in | ||
| the causal corpus. Use "we" only when a brief explicitly identifies a real | ||
| team or shared action. Never turn Charles into an anonymous brand narrator. | ||
|
|
||
| Build the article around one genuine movement: a personal discovery, desire, | ||
| question, or ritual; concrete sensory or material evidence; a reaction or | ||
| contrast; one honest drawback; then a clear use-case verdict. In a comparison, | ||
| each product or material must respond to the one before it. Do not write a | ||
| catalogue in which six items receive six disconnected compliments. | ||
|
|
||
| Keep Charles's warmth and taste visible. "I love," "my favorite," and a | ||
| personal "overall" judgment are historically grounded, but they are accents, | ||
| not a template to repeat in every paragraph. Enthusiasm should come from a | ||
| specific texture, scent, fit, finish, behavior, memory, or use case. Prefer | ||
| plain language and decisive sentences over expert posturing. | ||
|
|
||
| Modernize the mechanics without erasing the voice: one thought per paragraph, | ||
| clean syntax, varied transitions, restrained punctuation, and no inherited | ||
| typos or run-ons. Make headings useful. A focused review can be compact; a | ||
| reported explainer can be longer, but neither should be padded for SEO. | ||
|
|
||
| Separate voice from truth. The historical corpus proves how Downs Style has | ||
| spoken, not whether its old health, sustainability, ingredient, or performance | ||
| claims were correct. Verify current factual claims against primary or official | ||
| sources. Attribute brand claims. Never invent Charles's use, results, purchase, | ||
| relationship, or personal reaction. Reject medical promises, universal | ||
| suitability, unsupported environmental claims, and unverified current prices. | ||
|
|
||
| When a section corrects a misconception, use a small callout labeled "Myth" | ||
| only if the misconception is demonstrably common; otherwise label it "Common | ||
| error." State the mistaken idea, the sourced correction, why the distinction | ||
| matters, and Charles's practical takeaway. Do not invent a myth for decoration. | ||
|
|
||
| End with Charles's actual conclusion. Add a shopping cue only when it serves | ||
| the reader. Put sponsorship and affiliate disclosures clearly and close to the | ||
| relevant link. | ||
|
|
||
| inquiries: | ||
| - dimension: visual | ||
| blocking: false | ||
| question: "Which colors, photography treatments, and layout motifs should be canonical beyond the textual accessible-luxury signature?" | ||
| reason: "The current audit measured prose and metadata, not a controlled sample of Charles's photography." | ||
| - dimension: signoff | ||
| blocking: false | ||
| question: "Should the historical reader-thanks signoff return, or should conclusions remain more editorial and direct?" | ||
| reason: "Reader thanks appeared in 88 baseline posts but nearly disappeared after 2020." | ||
| - dimension: commerce | ||
| blocking: false | ||
| question: "How often should a modern Downs Style post end with a shop cue when there is no affiliate relationship?" | ||
| reason: "Shopping language is historically common, but channel intent and disclosure requirements now vary post by post." | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
The reproduction block does not regenerate
data/posts.json.scripts/verify-downs-style-archive.pychecksdocs/continuations/charles/rose-toners-share/data/posts.jsonand requires its URL set to equal the ledger URL set. The commands here omit--site-json, so a reader who follows the documented reproduction produces a ledger and metrics but a stale site file. Add the flag.📝 Proposed fix
📝 Committable suggestion
🤖 Prompt for AI Agents