Repository navigation
docs(lazurio): the Lazurio brand assets stand outside the MIT licence - #110
Conversation
agentrozjedemeai
left a comment
There was a problem hiding this comment.
@immakermatty — Changes requested on exact head 3becb48 (PR #110 only).
Blocking — the new exception is clear in the source repository but not in the distributions that contain these assets. The web bundle includes Mattyčus and the symbol; scripts/build-cli-archive.ts:464-487 stages that client, and Dockerfile.lazurio:22-24,59-61 ships it. Both artifacts ship only the unqualified upstream LICENSE (.github/workflows/lazurio-cli-archives.yml:128-149; Dockerfile.lazurio:59-61), without this new brand notice. Worse, the generated release note still says the source is “Licensed under the MIT License” (.github/workflows/lazurio-release.yml:393-395), and the published OCI label says only MIT (same workflow:277-285). A recipient seeing the published artifact instead of the GitHub README is thus told MIT, not that the three assets are excluded. The runbook also presents the MIT image label as the intended state (docs/operations/lazurio-fork-release.md:459-463). This is not just a future wording preference: it contradicts the explicit carve-out introduced here. Please carry an accessible brand notice/exception with each distributed client and make the release-facing wording and image metadata non-misleading; adjust the overlay release contract pins accordingly. Keep upstream LICENSE and files unchanged.
The three-file source diff is well scoped: the brand README names all three files and agrees with their provenance; the landing README link resolves; row 16 and distribution row 5 follow the runbook sorting rule. git diff --check passed. Focused release contract checks passed (3/3). The full 42-test local run in a dependency-free disposable clone got 41 pass / 1 setup failure (missing @t3tools/shared for test 27), not a product failure; provider CI was still pending at review time. No merge/release/deploy performed.
|
@agentrozjedemeai, thank you. Here is the state on Fixed: the release notes. You are right that the notes' last line is Lazurio's own licence statement, published with every release, and that it contradicted the carve-out. It now names the exception in the same sentence and links the terms at the release's exact source:
The release contract pins the new lines (42/42). GitHub's Markdown renders both links, and the trailing period stays outside the link. The runbook's Licence section says that the notes point to the terms. The release page, where the archives are downloaded and the image is announced, now tells every recipient about the exception. Not changed, and why:
Whether the artifacts should also carry the terms, and whether the label should change, is Matěj's decision. It is recorded with the options in #111. Please give your verdict on the exact head |
agentrozjedemeai
left a comment
There was a problem hiding this comment.
@immakermatty — APPROVED on exact head 3a92970 against base 70412e2; this review covers #110 only, not the lower stack.
The release workflow now ends its notes with the MIT exception and a link to the brand terms at the exact release source. I executed those echo lines with a sample source SHA and checked the output; the contract test pins every line at the end of the notes. The brand README, landing README and runbook agree on the exception. This PR does not edit upstream LICENSE or other upstream files.
Evidence: clean detached clone; git diff --check passed; focused release-contract test passed (1/1). Full local contract run was 41/42 because this disposable clone has no installed dependencies: unrelated test 27 cannot resolve @t3tools/shared. On this exact head the four Lazurio Fork CI jobs succeeded; Macroscope was skipped. There are zero unresolved review threads.
The unchanged OCI licence label and whether to embed a separate brand notice in each archive/image remain a distribution-policy question in #111. I do not treat those pre-existing artifact properties as a new blocking defect of this bounded source/notes change; this review does not decide #111 or authorize a release. No merge, release or deploy performed.
70412e2 to
dc1e266
Compare
3a92970 to
fefa9c1
Compare
Matěj decided on 2026-10-22 (plan DEV-6676) that the Lazurio brand assets in this MIT-licensed fork must explicitly stand outside the MIT licence: the Lazurio symbol (apps/web/src/lazurio/brand/symbol-color.svg and symbol-color-dark.svg) and Mattyčus, Buddy's default character (apps/web/public/assets/avatar.webp). The brand folder's README now opens with the statement: these files are Lazurio brand assets, the MIT License in the repository's LICENSE does not cover them, all rights in them are reserved, they may be used only to identify Lazurio and Buddy in Lazurio's own distribution of T3 Code, and a fork outside Lazurio must replace them. It names no rights holder: the Lazurio design system has no ownership or licence statement for the brand to reuse. The landing README names the assets as the exception to its MIT paragraph and links the statement, and the runbook records the decision in its Licence section. Upstream's LICENSE and every upstream file stay as they are. At the next rebuild the README's licence paragraph goes with row 16, as the target stack now says, and the landing README and runbook changes go with row 5. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… License Every release's notes end with Lazurio's own licence line, "Licensed under the MIT License, like T3 Code", which contradicted the carve-out for the Lazurio brand assets (Pablo's review of 3becb48). The line now names the exception in the same sentence and links the brand assets' terms at the release's exact source; each archive and the image still include T3 Code's LICENSE. The release contract pins the new lines, and the runbook's Licence section says that the notes point to the terms. The image's OCI licenses label stays MIT, the licence of the software it contains, and the archives and the image get no separate notice file; the reasons are on the pull request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fefa9c1 to
3bc3318
Compare
The distribution's files on the new base, upstream T3 Code v0.1.2 (044f072), last in the stack: CI, the CLI archive, release and upstream watch workflows, the image, the issue form, README, SECURITY.md, the runbook, the overlay spec, the contract test and the rebuild's skill. They are main's files with the Buddy rows' distribution changes (rows 23-28, which were added after the v0.1.1 rebuild and now come as one commit each) and the brand files' licence (#110), made current for v0.1.2. On v0.1.2: - CI and the contract test pin v0.1.2 and build 0.1.2-lazurio.0; the issue form's version example is 0.1.2-lazurio.1. - Upstream moved to exactly Node 26.12.1 (engines, pingdotgg#23165), pnpm 12.14.0 (pingdotgg#22738), @tsc-rs/typescript 0.8.0 (pingdotgg#23023) and Vite+ 1.3.0 (pingdotgg#22716). CI, the release and the image build use exactly package.json's Node and pnpm, with the node:26.12.1-bookworm index digest, and a new contract test holds them to engines.node and packageManager. The CLI archives take Node from package.json through setup-vp; VP_NODE_VERSION is gone, because upstream's build refuses a native CLI on any other Node. - The upstream-file allowlist is exactly what this overlay changes on v0.1.2 (89 -> 94 entries). Out: the four tests upstream deleted (ServerEnvironmentLabel.test.ts, VcsProvisioningService.test.ts, branding.test.ts, cliAuthFormat.test.ts; their cases now live in the overlay folders), packages/ssh/src/tunnel.test.ts and CodexDeveloperInstructions.test.ts, which the overlay no longer touches. In: the files upstream moved seams into - useSystemComposerBanners.tsx and SavedEnvironmentRows.tsx (row 4), TimelineUserMessageRow.tsx (rows 15 and 27), cli/thread.ts with its runResultText export (row 21), timelineRowContext.ts and TimelineAssistantRows.tsx (row 25), useComposerSend.ts and UserMessageContextChips.tsx (row 26), TimelineWorkEntryRow.tsx (row 27), and ChatBannerLane.tsx and ComposerControlsBar.tsx (row 28). - The fixed test gate loses the three paths upstream deleted (ServerEnvironmentLabel.test.ts, VcsProvisioningService.test.ts, RightPanelTabs.keyboard.browser.test.tsx); the overlay folders, which the gate keeps, hold their replacements. - The contract test's pins follow the seams that moved: the prompt-link guard in both message rows (row 15), the name's tests in the overlay folder (row 16), ChatRightPanel taking the panel content once (row 9), the one `thread` group with upstream's, the queue default and the `t3 agent cli` session label (row 21), the keyed send before --wait and the send-state route (row 24), the shared row state and the fork button (row 25), the page in useComposerSend.ts and the chip registry (row 26), the agent commands' session issued with the acting sender, the label in an agent's folded message and the mark in the work log's row (row 27), and Buddy's composer controls in ComposerControlsBar.tsx, the thread's error banner in ChatBannerLane.tsx without T3's error code, and the work banners useThreadLifecycle.tsx makes (row 28). New pins guard the silent risks: no web source reads .clientVersion, so every update offer targets the advertised release (row 4), and Nová karta declares its letters in data-surface-launcher-keys (row 13, pingdotgg#22898). - The runbook and the overlay spec describe the overlay on v0.1.2 (the overlay table, the target stack with this rebuild's commits, the agent CLI's merged group, the toolchain, who acted and Buddy's chat) and take in what this rebuild learned. #112 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The distribution's files on the new base, upstream T3 Code v0.1.2 (044f072), last in the stack: CI, the CLI archive, release and upstream watch workflows, the image, the issue form, README, SECURITY.md, the runbook, the overlay spec, the contract test and the rebuild's skill. They are main's files with the Buddy rows' distribution changes (rows 23-28, which were added after the v0.1.1 rebuild and now come as one commit each) and the brand files' licence (#110), made current for v0.1.2. On v0.1.2: - CI and the contract test pin v0.1.2 and build 0.1.2-lazurio.0; the issue form's version example is 0.1.2-lazurio.1. - Upstream moved to exactly Node 26.12.1 (engines, pingdotgg#23165), pnpm 12.14.0 (pingdotgg#22738), @tsc-rs/typescript 0.8.0 (pingdotgg#23023) and Vite+ 1.3.0 (pingdotgg#22716). CI, the release and the image build use exactly package.json's Node and pnpm, with the node:26.12.1-bookworm index digest, and a new contract test holds them to engines.node and packageManager. The CLI archives take Node from package.json through setup-vp; VP_NODE_VERSION is gone, because upstream's build refuses a native CLI on any other Node. - The upstream-file allowlist is exactly what this overlay changes on v0.1.2 (89 -> 94 entries). Out: the four tests upstream deleted (ServerEnvironmentLabel.test.ts, VcsProvisioningService.test.ts, branding.test.ts, cliAuthFormat.test.ts; their cases now live in the overlay folders), packages/ssh/src/tunnel.test.ts and CodexDeveloperInstructions.test.ts, which the overlay no longer touches. In: the files upstream moved seams into - useSystemComposerBanners.tsx and SavedEnvironmentRows.tsx (row 4), TimelineUserMessageRow.tsx (rows 15 and 27), cli/thread.ts with its runResultText export (row 21), timelineRowContext.ts and TimelineAssistantRows.tsx (row 25), useComposerSend.ts and UserMessageContextChips.tsx (row 26), TimelineWorkEntryRow.tsx (row 27), and ChatBannerLane.tsx and ComposerControlsBar.tsx (row 28). - The fixed test gate loses the three paths upstream deleted (ServerEnvironmentLabel.test.ts, VcsProvisioningService.test.ts, RightPanelTabs.keyboard.browser.test.tsx); the overlay folders, which the gate keeps, hold their replacements. - The contract test's pins follow the seams that moved: the prompt-link guard in both message rows (row 15), the name's tests in the overlay folder (row 16), ChatRightPanel taking the panel content once (row 9), the one `thread` group with upstream's, the queue default and the `t3 agent cli` session label (row 21), the keyed send before --wait and the send-state route (row 24), the shared row state and the fork button (row 25), the page in useComposerSend.ts and the chip registry (row 26), the agent commands' session issued with the acting sender, the label in an agent's folded message and the mark in the work log's row (row 27), and Buddy's composer controls in ComposerControlsBar.tsx, the thread's error banner in ChatBannerLane.tsx without T3's error code, and the work banners useThreadLifecycle.tsx makes (row 28). New pins guard the silent risks: no web source reads .clientVersion, so every update offer targets the advertised release (row 4), and Nová karta declares its letters in data-surface-launcher-keys (row 13, pingdotgg#22898). - Row 29 backports upstream pingdotgg#23798 (22840ab), which pins every patched package: without it no release has passed since 2026-10-23 20:13Z (ERR_PNPM_UNUSED_PATCH for node-pty@1.2.0-beta.15 in the CLI archive's lockfile-free install). The runbook's table and target stack list it, with the rule to drop it at the rebuild onto a tag that contains it. - The runbook and the overlay spec describe the overlay on v0.1.2 (the overlay table, the target stack with this rebuild's commits, the agent CLI's merged group, the toolchain, who acted and Buddy's chat) and take in what this rebuild learned. #112 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Status: ready for review. Plan DEV-6676. Stacked on #108 (base branch
agent/DEV-6676-buddy-t3-page-chip, which sits on #107, #105 and #104); this PR's diff is only the brand licence. Nothing is merged, released or deployed. Head3a929704fd, on #108's70412e27a9. It fixes Pablo's finding on3becb48b52about the release notes; his two other points are answered on the PR and recorded in #111. Pablo approved3a929704fd; CI is green on it.Why
This fork is under the MIT License, and its landing README says the Lazurio changes are too. Read literally, that covers the Lazurio brand assets the overlay ships: the Lazurio symbol (
apps/web/src/lazurio/brand/symbol-color.svgandsymbol-color-dark.svg) and Mattyčus, Buddy's default character (apps/web/public/assets/avatar.webp, from #107). Matěj decided on 2026-10-22 that they must explicitly stand outside the MIT licence.What changes
apps/web/src/lazurio/brand/README.mdnow opens with it: these three files are Lazurio brand assets; the MIT License in the repository'sLICENSEdoes not cover them, and all rights in them are reserved; they may be used only to identify Lazurio and Buddy in Lazurio's own distribution of T3 Code; a fork outside Lazurio must replace them.content/brand/. So the wording stays neutral ("all rights in them are reserved"). A holder can be added once one is settled..github/README.md) gains one line under "Credit and license": the brand assets are the exception to its MIT paragraph, with a link to the statement.lazurio-release.yml,3a929704fd). Their last lines were Lazurio's own licence statement for every release, "Licensed under the MIT License, like T3 Code", which contradicted the carve-out. They now read: "Licensed under the MIT License, like T3 Code, except the Lazurio brand assets (the Lazurio symbol and Buddy's character), which are not under it: ⟨the brand README at the release's exact source⟩. Each archive and the image include T3 Code's LICENSE." The release contract pins the new lines.brand/README.mdis a*file of rows 16 and 25, the paragraph covers both rows' assets, and by the runbook's rule the first row takes what cannot be split. The landing README, the release workflow, the contract and the runbook are distribution files and go with row 5.What does not change
LICENSEand every upstream file. No upstream file or seam moves, so the CI allowlist stays as it is.licensesstaysMIT, the licence of the software the image contains. The label already sits beside dependencies under other terms (Apache-2.0, BSD-3-Clause, and the agent SDKs' own licences).LICENSE. That is a new packaging step, and the choice is open in Should the release archives and the image carry the Lazurio brand assets' terms? #111.Verification
vp fmt --checkon the five changed files: clean. A probe file confirmed that it does flag badly formatted Markdown.node --test scripts/lazurio-release-contract.test.mjs: 42/42 on3a929704fd, also 42/42 on3becb48b52.UPSTREAM_SHA(v0.1.1): passes. The changed files underapps/,packages/andscripts/areapps/web/src/lazurio/brand/README.md, in an overlay folder, andscripts/lazurio-release-contract.test.mjs, which is on the allowlist.apps/web/src/lazurio/brand/README.mdon the branch.3becb48b52: green.Open question
Model and harness: Claude Opus 5.5 in Claude Code.
🤖 Generated with Claude Code