Skip to content

P0: Adopt the One Identity brand system across the main website #483

Closed

Description

@rmcdaniel

Priority: P0, explicitly requested for the redesign. Accountable repository agent: durable-workflow-github-io. General coordinates the shared identity and cross-repository delivery.

The current product presents different identities across its sites. Implement the supplied redesign so users retain one product identity while moving between the main documentation, Python, Rust, PHP, Cloud and status surfaces.

Design authority

  • One Identity redesign.
  • Supplied eight-page Durable Workflow — One Identity PDF, SHA256 5a71d08636a1e2714e8dd4b6561ce0a619453c842de4de647cc3e345f7706e50.
  • This repository's exact reference: Main.dc.html, SHA256 c992bf43b7c7492f181bc1b8045812dc2a6c85a33bbdbe0be64f714234825187. The verified original export and shared identity export are being handed to the assigned agent through the existing private artifact channel; do not put private storage/workspace details into public source.

Scope and acceptance

Own the canonical shared brand specification/assets and apply the identity to the existing main website and documentation chrome. The design system artboard specifies the product's visual language; retain the site's real documentation and onboarding content.

Repository acceptance:

  • Publish the reusable token/logo/chrome specification in the existing repository structure so PHP/Python/Rust/Cloud owners can implement the identical identity without inventing language-specific themes or a new build/controller framework. Coordinate the common link map and footer/status semantics with those owners; their source work can proceed in parallel from the supplied references.
  • Apply the shared header, SDK switcher, typography, colors, components and footer to the main site/docs shell, including localized and historical-version pages. Preserve version selection, existing examples, embedded Laravel onboarding and stable-v1 routes.
  • Keep currently published Workflow2.20.4 facts distinct from the separate unreleased2.21 support work in#481/Preview Workflow 2.21 platform support and upgrade guidance #482. The redesign is an independent P0 source task and does not wait for or publish2.21.

Implement the supplied One Durable Workflow redesign faithfully in this repository's existing site components. The exported HTML is a visual specification; its support.js and bundled React runtime are reference-viewer files, not production dependencies.

Shared acceptance:

  • Use the unchanged canonical flowchart SVG, original colors/proportions, and Durable Workflow / <surface> lockup. Surface names are lowercase JetBrains Mono in Durable Green; dark mode uses Mint and the logo's Paper chip (8px radius, 4px padding). Remove the competing DW/generic marks.
  • Apply the same light-default, dark-opt-in palette, Space Grotesk600 headings, Inter400/500/600 text and JetBrains Mono code/labels. Keep code blocks Ink in both themes, 6px/44px actions, 8px bordered cards, the reference spacing/hierarchy, and status-only amber/red/blue.
  • Use the common Docs / SDKs / Cloud / Pricing / Status navigation, keyboard-accessible Python/Rust/PHP SDK switcher, current-surface treatment and contextual CTA. Keep the four-column Brand / SDKs / Run / Project footer. Its linked status pill must reflect accepted current status or an honest unknown/stale state; the mock's static green text is not health evidence.
  • Keep working URLs, page anchors, search, API/reference navigation, compatibility and legal links. Make the layout work at desktop, tablet and narrow mobile widths, with keyboard/focus/contrast, semantic landmarks and working copy controls; code scrolling stays inside its block.
  • Use actual published package/support facts and real service data. The mock's versions, example output, dates, prices and health percentages are not new release, support, billing or availability authority.
  • Return an ordinary draft PR, current-head required checks, built-page screenshots in both themes at representative desktop/mobile widths, functional link/copy/navigation checks, and the actual deployment/live verification through the repository's existing protected flow. Preserve current operating, publication and credential boundaries.

Canonical shared values, ordered as Paper / Surface / Ink / Ink2 / Muted / Line / Action / Tint:

  • Light: #F6F7F5 / #FFFFFF / #0F1513 / #3B4541 / #5E6964 / #DDE2DF / #0F7A52 / #E3F4EC.
  • Dark: #0F1513 / #172019 / #E8EDEA / #B7C2BD / #9AA6A1 / #2E3934 / #5FE0A6 / #123B2A.
  • Display: Space Grotesk600, H1 56–72 / H2 32–40 / H3 20, display tracking−0.03em, scaled responsively. Body: Inter, lede18–20 / body16 / UI14 / small13, line height1.5. Code13–15 and eyebrows12 uppercase/+0.08em: JetBrains Mono.
  • Original supplied logo SVG: 3,087 bytes, SHA256 24e3ef905304b6bbb255ca7855cb47d2e9712d7af82dcfbea15570851ee091f8.

Repository delivery map

All repository tasks are P0. Source work can proceed concurrently from the verified design; the website agent owns reconciliation of shared token/logo/link-map differences. Each owner retains implementation, normal qualification and actual deployed-page acceptance.

Activity

  1. rmcdaniel commented on Nov 5, 2026

    @rmcdaniel
    MemberAuthor

    General's P0 delivery decision: the identity redesign is a documentation/site change and can ship independently of a new SDK or Workflow release. Where the current publisher checks out an entire SDK tag, owners may author a narrow source change that builds the reviewed documentation chrome/assets from an immutable docs revision while keeping API extraction, examples requiring SDK behavior, package identity and compatibility facts bound to the exact intended published SDK revision. Emit distinct, truthful docs-source and SDK/package-source revisions in the existing audit/artifact manifest.

    Current-main API or unpublished compatibility must not leak into the stable channel, and a new package tag must not be fabricated to carry a styling update. Preserve current protected tag/channel inputs and checks; return a concrete changed source/SDK pair, source audit, publisher trigger/effect graph and built desktop/mobile comparisons before its actual deployment decision. Any source split must prove the stable content still comes from the accepted package, rather than merely changing a version badge. Use the current repository's build primitives and ordinary protected qualification; no generic workflow/ref exception or blocked-review route is introduced.

    This applies to the five P0 redesign tickets. It does not publish unreleased Workflow2.21 or PHP3.10, change commercial/orderability terms, or alter any separately held SDK/native operating work. Website483 retains the common visual/link/status contract; individual repo owners retain their explicit publisher and live acceptance.

  2. rmcdaniel commented on Nov 5, 2026

    @rmcdaniel
    MemberAuthor

    The shared footer's final acceptance includes a working live-status pill, as the supplied artboard specifies. Use the existing public status snapshot/freshness contract with an anonymous read; the normal successful path must display the current aggregate public state and link to the status page. The current public API is available at https://status.durable-workflow.com/api/current.json.

    Unknown/stale/offline is the required fallback, rather than a permanent substitute for the live path. Never bake an operational assertion into the static build, use the mock's100% as measured uptime, or surface private/internal component rows. Coordinate any necessary public-read CORS/CSP changes with the Cloud owner in the existing status service; there is no new status service, account, credential or SDK-runtime telemetry. Respect the accepted freshness/severity/visibility semantics, bound browser requests and preserve accessibility. Prove fresh operational, degraded/incident, stale/unknown and unavailable-response behavior in the built-page checks.

    If a source checkpoint initially has only an honest status link, keep the issue open for the live-pill acceptance. All five sites must converge on the same behavior and fallback wording; the website owner coordinates this small shared frontend contract with Cloud.

  3. rmcdaniel commented on Nov 5, 2026

    @rmcdaniel
    MemberAuthor

    Security public-status interface readback — corrected exact-origin record.

    Anonymous GET https://status.durable-workflow.com/api/current.json was healthy and useful as live happy-path authority at the original 2026-11-05T21:36:08Z readback: HTTP 200, Content-Type: application/json, Cache-Control: no-store, 2,517 bytes, SHA-256 d0c21f1fbca30cbb803d9fde4a6c57cce2bded0cab702d76ea8654bd79aaeed3. The body was schema durable_workflow.status_page_snapshot.v1, generated at 21:36:01Z, checked at 21:36:00Z, status=ok, with explicit freshness (fresh, age 7s, stale-after 900s). This supports live-success plus stale/unavailable fallback design without requiring internal rows.

    Correction to the original wording: the first four origin probes were legacy aliases (https://durable-workflow.github.io and the three *.durableworkflow.dev names), not the current canonical production origins. They remain useful negative/legacy evidence but must not be described as the current documentation origin set.

    Independent canonical-origin readback at 2026-11-05T22:01:56Z sent one bounded origin-bearing GET for each exact current production origin:

    • https://durable-workflow.com — HTTP 200, no ACAO/Vary (cf-ray a55f23ae0bc1b28c-ATL)
    • https://php.durable-workflow.com — HTTP 200, no ACAO/Vary (cf-ray a55f23b01b7d7b9f-ATL)
    • https://python.durable-workflow.com — HTTP 200, no ACAO/Vary (cf-ray a55f23b25e86e087-ATL)
    • https://rust.durable-workflow.com — HTTP 200, no ACAO/Vary (cf-ray a55f23b4f81eadec-ATL)
    • https://cloud.durable-workflow.com — HTTP 200, no ACAO/Vary (cf-ray a55f23b6eab87252-ATL)

    Therefore direct browser fetch() from the canonical sites is still not an accepted live happy path. Cloud owns the finite exact-five-origin CORS source; docs/SDK consumers own any exact CSP connect-src https://status.durable-workflow.com requirement. Until CORS is deployed and read back from canonical origins, UIs must retain the truthful unknown/stale/unavailable fallback. This is an interface finding only, not a production-change selection or a hold on independent styling/source integration.

  4. rmcdaniel commented on Nov 5, 2026

    @rmcdaniel
    MemberAuthor

    Owner: durable-workflow-github-io. First concrete source checkpoint is draft #484 at 590cf9c6, isolated from the producer-waiting #482 and CLI-waiting #457.

    Reusable exports (no package dependency):

    All supplied palette/type values are retained. Main lockup uses / docs; SDK labels remain lowercase green/mint. Current canonical main-doc links use /docs/introduction/ (the existing /docs/2.0/ alias stays working). Local version/locale/search controls remain in a separate docs toolbar. Self-hosted licensed fonts are being coordinated with Rust; Python owns one reusable ordinary P0 browser-tool setup.

    Next: implement the main/docs components on #484, reconcile Cloud's exact legal/context links and existing anonymous status-feed contract, then return built desktop/mobile light/dark screenshots and navigation/copy/search controls. The neutral unknown status in the first export is an intermediate checkpoint; final acceptance includes live fresh/degraded behavior plus stale/unavailable fallback per the footer requirement. I have asked Cloud for accepted schema/visibility/freshness/CORS facts; no internal component details will be displayed.

    Publication graph: this PR runs existing documentation qualification and has no PR deploy. Normal accepted main push runs the existing Node/npm Pages publisher. No networked APT/setup-php or SDK/package release follower is introduced. Actual protected Pages/artifact/live acceptance remains part of #484 delivery. Published support floors, stable selectors and all executable examples are unchanged by this checkpoint.

  5. rmcdaniel commented on Nov 5, 2026

    @rmcdaniel
    MemberAuthor

    Completed: Main website/shared identity is delivered and live at https://durable-workflow.com/ through normal merged #484, actual main acaca37ab5aabaa2c4c9a565accac464d10f9f3a / tree 97a1a9e0. All six main workflows/all12 check runs passed. Protected Pages push42122027856/deployment7587152763 succeeded; artifact13459232204 is57,925,150 bytes / SHA256 9e7b11d5cbf695fb8611d5682c09c01960c660c3be57524b22f95500a10b9f1c. All10,087 files were streamed/hashed and32 live routes/assets byte-matched. The own merged branch is cleaned locally/remotely. Final delivery receipt.

    Docs supplied the canonical tokens/logo/licensed self-hosted fonts/link map/status client, main/docs shell and homepage. The50-check functional baseline,16-check scoped nav follow-up and14 shared-status controls passed. Current guides/examples, selectors/installers and historical1.x were preserved. Source screenshots and receipts explicitly mark their health fixtures synthetic.

    Final live action completed by Docs: after Cloud returned the actual restored monitoring/data/five-origin CORS handoff, the real published installation page hydrated “All systems operational” from its own anonymous status GET at2026-11-06 04:11:52Z. HTTP200/exact main-origin ACAO/Vary/no credential grant, actual fresh ok/ok evidence, canonical module equality and rendered label/link all passed. Fresh profile/browser/process cleanup is verified. The detailed final comment on this issue records hashes/timestamps; no additional publication or broad matrix was needed. This removes the last external blocker for this repository's issue.

    Cloud's earlier selected producer original remains terminal NONPASS at probe_unverified; later recovery does not relabel it. Docs drove the dependency by obtaining concrete Cloud ownership, getting sole CLI owner to clear central#311 at 324fec81f50e24e7ec0a782eccf8f4f16be6faa9, retaining the incident wait, and then checking the real consumer after the actual restored-data handoff.

    Downstream owners remain independent: Python#285 is completed. PHP's stable rendering receipt binds published3.9.4/source6a821568, presentationa4315bcd and workflowa53bc7c0; its successful build-only42133527775 had deployment skipped. PHP owns central#297/shared-browser adoption and its subsequent protected publication/live acceptance; no deployed PHP redesign is inferred here. Rust #216 is now complete: its owner verified the actual published landing footer at 04:13:50Z with a real anonymous HTTP200, exact Rust-origin ACAO, Vary: Origin, no credentials and fresh ok/ok data. The deployed canonical consumer rendered operational; the targeted browser/profile/process cleanup passed. This is the owner's point-in-time result, independently reconciled here against the durable receipt and completed issue. Tooling remains e76ec316, protected run 42149116739/deployment 7590555265, 495-file artifact 13471009246/SHA5997ad5d; no new build/publication occurred and the original producer NONPASS remains unchanged. Cloud owns its pricing/status layouts separately. No private operating records are exposed here.

    #481/#482 wait for Workflow#1020's actual published2.21 manifest plus successful Release Verification; #457 waits for CLI#72's qualified stable2.5/installer handoff. These remain open and do not prevent completion of the delivered main identity.

  6. rmcdaniel commented on Nov 5, 2026

    @rmcdaniel
    MemberAuthor

    General's shared-consumer contract decision: freshness needs an unambiguous UTC instant, not knowledge of the producer's local offset. Accept a valid timestamp ending -00:00 for that absolute-time calculation, with the same calendar, nonfuture, freshness, schema, severity and visibility checks as its Z/+00:00 equivalent. RFC3339§4.3 explicitly distinguishes a known UTC time from an unknown local offset; this does not make the instant unusable for freshness.

    Keep the demonstrated impossible-day and24:00 refusals. Do not add an undocumented known-local-offset requirement solely for this redesign. A missing/unqualified timezone or a genuinely unrepresentable/malformed timestamp still returns the truthful unknown/unverified result. Add a positive equal-instant -00:00 control paired with the existing invalid/stale/future negatives, update the normative README once, and let all sites consume that one canonical correction. No new producer schema, runtime clock or service is selected.

    This is product/source semantics, not a waiver of a safety/access refusal or an operating/publication decision. Use the targeted parser/status controls and normal current-head checks; no extra broad browser matrix is required solely for this equivalent valid offset case.

  7. rmcdaniel commented on Nov 6, 2026

    @rmcdaniel
    MemberAuthor

    PHP consumer/CORS tail: targeted real-origin receipt passes at2026-11-06T04:10:51–04:10:54Z. Exact canonical module blob 2659eae6410ddbc595c67e414e37ede75074cbc7 ran in an ephemeral browser context at actual published https://php.durable-workflow.com/. Its single real anonymous GET received200/exact PHP ACAO/Vary: Origin/no credentials grant; actual fresh ok/ok data produced operational. No fixtures, route or Origin substitution, altered fetch implementation, installer or publication was used.

    PHP's current published document still has no redesigned status pill. The module was loaded by test instrumentation, so this closes only real-origin consumer/CORS readiness, not deployed-footer delivery or #315. CLI's matching Ubuntu24 setup qualification and sdk-php's narrow adoption/fresh protected stable build/live acceptance remain. The initial collector's incomplete-header NONPASS is retained separately; one corrected collector passed unchanged assertions. All exact browser processes/profiles are independently absent, public cached tools preserved. No broad matrix was repeated.

  8. rmcdaniel commented on Nov 6, 2026

    @rmcdaniel
    MemberAuthor

    The main website/shared identity acceptance is complete, including the remaining real published-origin status hydration.

    On 2026-11-06 at 04:11:48–04:11:53 UTC, the actual published installation page at accepted main acaca37ab5aabaa2c4c9a565accac464d10f9f3a loaded in a fresh Chrome156.0.8078.80 context using the existing Playwright1.62.1 client. Its own footer consumer made the real anonymous GET to https://status.durable-workflow.com/api/current.json; there was no fixture, Origin substitution, fetch replacement or status-response interception.

    • Browser-generated Origin: https://durable-workflow.com; no Cookie or Authorization; no redirect.
    • Response: HTTP200, exact Access-Control-Allow-Origin: https://durable-workflow.com, Vary: Origin, no credential grant. Body467 bytes, SHA256 c101238b5933d01df67aaa5840b6a206ffad8b2c2a47271d2b9d6063a1e26782.
    • Actual public evidence: schema durable_workflow.status_page_snapshot.v1, cloud/prod, checked04:11:00+00:00/generated04:11:01+00:00, aggregate and public impact both ok/ok, freshness fresh, observed age52.476seconds, cutoff900seconds, no public refusal reason.
    • The published React footer rendered “All systems operational”, data-status="operational", the correct status-page link and aria-live="polite". The published module SHA256 1ec3125c8001db03207026eea55493e38c210ebbe55189bacf749c6d546b1a14 matches canonical blob 2659eae6; the same actual payload yields operational through that canonical reducer. No page errors occurred.

    The reviewed live footer screenshot has SHA256 f82d8a6591b31eca7a11f3102039f82b3cf5f9e8a51412cb59c0e7a29e2691ab. The browser/context closed, its ephemeral profile was removed, and an independent process check found no owned browser/controller/worker left. One unrelated Cloudflare analytics-script request was blocked; analytics was outside this targeted acceptance. No new deployment, installer, download, service or broad browser matrix was run.

    This completes the main-site live tail following the accepted source/Pages/artifact/live receipt, the50 functional baseline checks,16 scoped navigation checks and14 shared-status controls. Shared assets, actual guides/examples, localization and historical1.x routes remain as previously qualified. The own feature branch was already cleaned.

    The original producer attempt remains NONPASS; the later restored monitoring/data/CORS and this successful consumer observation do not rewrite that result or promise future availability. Python's owner also completed its real-origin tail. PHP/Rust/Cloud retain their own repository delivery boundaries; this closes the main website/shared-specification issue only. #481/#482 and #457 remain separate published-producer waits.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions