Skip to main content

maintaining-oss-state

Maintain FlashDreams's OSS-release state — the LICENSE / NOTICE / THIRD-PARTY-NOTICES / REUSE.toml / LICENSES/ / CONTRIBUTING.md collateral that satisfies OSRB Bug 6107043, the per-file SPDX headers, the third-party dependency manifest in THIRD-PARTY-NOTICES, and the pyproject.toml + uv.lock dependency pins. Use when adding or upgrading a runtime dependency, vendoring third-party source into the repo, adding a new first-party source file (any .py / .pyx / .pyi / .c / .cc / .cpp / .h / .hpp / .cu / .cuh / .sh / .proto / Dockerfile), reviewing whether a change requires reopening an OSRB bug or filing a self-cert, or triaging a reuse-lint CI failure.

소스 정보

저장소
NVIDIA/flashdreams
최근 소스 활동
2026년 8월 28일 22:41
감지된 SKILL.md 언어
영어
스타
510
포크
61

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
maintaining-oss-state
description
Maintain FlashDreams's OSS-release state — the LICENSE / NOTICE / THIRD-PARTY-NOTICES / REUSE.toml / LICENSES/ / CONTRIBUTING.md collateral that satisfies OSRB Bug 6107043, the per-file SPDX headers, the third-party dependency manifest in THIRD-PARTY-NOTICES, and the pyproject.toml + uv.lock dependency pins. Use when adding or upgrading a runtime dependency, vendoring third-party source into the repo, adding a new first-party source file (any .py / .pyx / .pyi / .c / .cc / .cpp / .h / .hpp / .cu / .cuh / .sh / .proto / Dockerfile), reviewing whether a change requires reopening an OSRB bug or filing a self-cert, or triaging a reuse-lint CI failure.
# Maintaining FlashDreams's OSS state FlashDreams is released to the public under Apache-2.0 (OSRB Bug [6107043](https://nvbugswb.nvidia.com/NVBugs5/redir.aspx?url=/6107043)). The repo carries a fixed set of collateral that the OSRB approved on, and a `reuse-lint` CI workflow that fails the build if that collateral drifts. This skill is the map for keeping the collateral consistent — what each file is for, what edits trigger which downstream paperwork, and which CI gates catch what. > The reference design here was landed across PRs #54 (CONTRIBUTING.md), > #55 (Apache-2.0 collateral), #111 (cudaraster + LodePNG disclosure), > #119 (strict inline SPDX CI), and the `alpadreams → omnidreams` rename > (#128 / #132). The git history of those commits is the canonical > example for every operation described below. ## TL;DR - **Six files at repo root + one CI workflow define OSS state:** `LICENSE`, `LICENSES/`, `NOTICE`, `THIRD-PARTY-NOTICES`, `REUSE.toml`, `CONTRIBUTING.md`, and `.github/workflows/reuse-lint.yml`. Touch any of them with the same care you'd give to a public API. - **`LICENSE` has a multi-license preamble** explaining that the bulk of the repo is Apache-2.0 and that two subtrees (cudaraster → BSD-3-Clause, LodePNG → Zlib) carry different OSI licenses, then reproduces the full Apache-2.0 text. CI verifies the canonical Apache-2.0 sentinel strings are present; the structural cross-references in the preamble are not lint-checked (these files change rarely — see the change-log review path instead). - **`NOTICE` is the minimal Apache 2.0 §4(d) notice** — NVIDIA copyright + pointers to `LICENSE`, `LICENSES/`, and `THIRD-PARTY-NOTICES`. It is *not* the full attribution document. - **`THIRD-PARTY-NOTICES` is the full per-dependency attribution document** — direct runtime deps, reference architectures, optional integrations, and source-level redistributions, each with SPDX identifier and upstream URL. - **Every first-party source file carries an inline SPDX header.** `REUSE.toml`'s `**` aggregate keeps the lint green for files that can't carry one (config, assets, binaries), but `reuse-lint`'s "Inline SPDX headers on first-party source files" step rejects any new `.py` / `.c` / `.cpp` / `.cu` / `.sh` / `.proto` / `Dockerfile` / etc. without the inline tag. - **Direct deps are mirrored in three places:** the workspace member's `pyproject.toml` `dependencies`, the resolved `uv.lock` pin, and the `THIRD-PARTY-NOTICES` "Direct runtime dependencies" table. All three must agree. - **Third-party source physically present in the repo** (cudaraster, LodePNG) lives in `THIRD-PARTY-NOTICES` "Source-level redistributions", carries the full license text under `LICENSES/<SPDX>.txt`, has a matching `REUSE.toml` `override` annotation, and is cross-referenced from the `LICENSE` preamble. - **OSRB Bug 6107043 §14 is the source of truth for which deps are "covered" by the contribution approval.** Adding a new direct dep = reopen 6107043 and amend §14. Adding a transitive that only matters because the SBOM scanner flagged it = either reopen + amend §14, or file a self-cert under `osrb/`. Dev-only transitives → SBOM correction (not shipped). ## 1. The OSS-collateral file set | File / path | Role | OSRB anchor | |---|---|---| | `LICENSE` | Multi-license preamble (Apache-2.0 + BSD-3 + Zlib pointer) followed by the canonical Apache-2.0 v2.0 text. CI verifies the canonical Apache-2.0 sentinel strings are present (preamble structure is not lint-gated). | 6107043 item #3 + OSRB unified-posture review | | `LICENSES/Apache-2.0.txt` | REUSE 3.3 license-bundle copy of the canonical Apache-2.0 text (no preamble — must remain reusable verbatim by REUSE tooling). | 6107043 item #3 | | `LICENSES/BSD-3-Clause.txt` | Full BSD-3 text covering the in-source cudaraster port. | 6107043 Cmt #5 (2) | | `LICENSES/Zlib.txt` | Full Zlib text covering the embedded LodePNG codec. | 6107043 Cmt #5 (2) | | `NOTICE` | Apache 2.0 §4(d) minimal notice — NVIDIA copyright + pointers to `LICENSE`, `LICENSES/`, and `THIRD-PARTY-NOTICES`. Carried forward verbatim by downstream redistributions. | Apache-2.0 §4(d) | | `THIRD-PARTY-NOTICES` | Full per-dependency attribution: Direct runtime deps + Reference architectures + Optional-integration deps + Source-level redistributions. The source of truth for the third-party manifest. | OSRB review (canonical attribution doc) | | `REUSE.toml` | REUSE 3.3 aggregate / override annotations for files without inline SPDX. | 6107043 item #2 | | `CONTRIBUTING.md` | Apache-2.0-only contribution statement + DCO v1.1 reproduction + "Signing Your Work" subsection (with `git commit -s` and `--signoff`) + IP-review reference. | 6107043 item #6 + OSRB DCO template | | `.github/workflows/reuse-lint.yml` | CI gate enforcing REUSE 3.3 compliance, presence of the five core OSRB collateral files (`LICENSE`, `LICENSES/Apache-2.0.txt`, `CONTRIBUTING.md`, `NOTICE`, `REUSE.toml`), canonical Apache-2.0 text in `LICENSE` and `LICENSES/Apache-2.0.txt`, `CONTRIBUTING.md` DCO/sign-off reference, inline SPDX headers (incl. `.sh` / `.proto` / Dockerfile), and no legacy proprietary banners. Content-shape of `LICENSE` preamble / `CONTRIBUTING.md` policy text / `THIRD-PARTY-NOTICES` sections is reviewed manually, not lint-checked. | (enforces the above) | The CI workflow runs on every PR, every push to `main`, and inside the GitHub merge queue. A failed `reuse-lint` blocks merge — never bypass it, fix the underlying file. ## 2. Per-file SPDX headers Every first-party source file starts with the inline SPDX header. The exact wording is enforced by `reuse-lint`'s "Inline SPDX headers on first-party source files" step (looks for `SPDX-License-Identifier` in the first 20 lines). **Python / shell / TOML / YAML** (`#` line comments): ```python # SPDX-FileCopyrightText: Copyright (c) <YEAR> NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ``` **C / C++ / CUDA** (`//` line comments): same two SPDX tags + the same Apache-2.0 preamble, with `//` swapped for `#`. Rules: - `<YEAR>` is the **current calendar year** for newly created files (use the system clock — *not* a model-training-cutoff year). For files being **edited**, leave the year alone — it reflects original authorship, not last-touched. - The two SPDX tags (`SPDX-FileCopyrightText` + `SPDX-License-Identifier`) are the load-bearing part. The Apache-2.0 preamble is house style; the CI gate only checks for `SPDX-License-Identifier` in the first 20 lines, but the long form is what every existing file carries, so match it. - External contributors add their **own** copyright line *above* the NVIDIA line — keep both. See `CONTRIBUTING.md:200-235`. - The Cosmos-Drive-Dreams files (`integrations_v2/omnidreams/impl/conditioning/world_scenario/{camera_base,ftheta,pinhole}.py`) carry two `SPDX-FileCopyrightText` lines (NVIDIA + Cosmos-Drive-Dreams contributors). Mirror that pattern when redistributing other modified upstream Apache-2.0 source. ### What's exempt (handled by `REUSE.toml`) - Vendored upstream under `integrations_v2/omnidreams/impl/ludus-renderer/ludus_renderer/_cpp/cudaraster/**` (carries its own BSD-3 / Zlib banners; `override` annotation in REUSE.toml). - Generated protobuf stubs under `integrations_v2/omnidreams/impl/grpc/protos/*_pb2*` (regeneration script is project-owned; aggregate annotation covers them). - Binary assets (`assets/**.png`, `.jpg`, `.jpeg`, `.webp`, `.mp4`, `.gif`, `.svg`) and lock files (`uv.lock`). - Documentation (`**.md`, `**.rst`, `docs/**`). If a tracked source file genuinely cannot carry an inline header (a tooling-generated artifact, an asset, a config file), extend `REUSE.toml` rather than fighting the lint. ## 3. `REUSE.toml` — aggregate vs override `REUSE.toml` is the REUSE 3.3 manifest that fills gaps the inline SPDX header convention can't. Precedence rules (from `REUSE.toml`): - **`precedence = "aggregate"`** — declared license merges with any inline SPDX header the file carries. Used for the project-wide default (`path = "**"` → Apache-2.0) and for documentation / config / build / asset blocks. - **`precedence = "override"`** — declared license replaces any inline SPDX header. Used for vendored upstream (`cudaraster/**` → BSD-3-Clause; `lodepng/**` → Zlib) to keep the upstream banners authoritative while still surfacing the SPDX identifier REUSE needs. When to add an annotation block: | Scenario | Block style | precedence | |---|---|---| | Add a new first-party source-file type covered by the default `**` rule | (nothing — default covers it) | n/a | | Add a new asset / config / generated-output path that can't carry an inline header | new `[[annotations]]` block, copyright + Apache-2.0 | `aggregate` | | Add a new third-party source subtree (different license, banners we want to keep) | new `[[annotations]]` block, copyright = upstream, SPDX = upstream's license | `override` | | Add a redistributed-and-modified upstream Apache-2.0 file | new block listing dual `SPDX-FileCopyrightText` (NVIDIA + upstream) | `aggregate` | More specific paths win — the cudaraster `override` covers everything under that subtree, then the lodepng `override` overrides the cudaraster block for the lodepng leaf. Order the annotations so specific paths come *after* general ones. ## 4. `NOTICE` vs `THIRD-PARTY-NOTICES` — what goes where Two distinct files. Mixing them up is the most common OSS-state mistake. ### `NOTICE` — minimal, downstream-propagated `NOTICE` exists to satisfy **Apache 2.0 §4(d)**: any derivative work must carry a readable copy of the upstream `NOTICE` text. Keep it small so downstream consumers do not pay an unreasonable carry-forward cost. Shape: ``` NVIDIA FlashDreams Copyright (c) <YEAR> NVIDIA CORPORATION & AFFILIATES. All rights reserved. This product is licensed under the Apache License, Version 2.0; the full license text is reproduced in LICENSE at the repository root and in LICENSES/Apache-2.0.txt. Two subtrees physically vendored into this repository carry different OSI-approved licenses; full texts are reproduced under LICENSES/: - integrations_v2/omnidreams/impl/ludus-renderer/ludus_renderer/_cpp/cudaraster/ BSD-3-Clause (see LICENSES/BSD-3-Clause.txt) - integrations_v2/omnidreams/impl/ludus-renderer/ludus_renderer/_cpp/ cudaraster/framework/3rdparty/lodepng/{lodepng.h,lodepng.cpp} Zlib (see LICENSES/Zlib.txt) Third-party software attributions, source-level redistribution disclosures, and the full per-dependency license inventory are documented in THIRD-PARTY-NOTICES at the repository root. ``` Do not enumerate transitive dependencies, SPDX tables, or per-package attributions in `NOTICE`. Those go in `THIRD-PARTY-NOTICES`. ### `THIRD-PARTY-NOTICES` — full per-dependency manifest `THIRD-PARTY-NOTICES` is the consumer-facing attribution document and the source of truth for the third-party manifest. It has four named sections; do not invent new ones without a corresponding `REUSE.toml` change. ``` NVIDIA FlashDreams — Third-Party Notices Copyright (c) <YEAR> NVIDIA CORPORATION & AFFILIATES. All rights reserved. Preamble explaining the dynamic-import / no-source-redistribution default and pointing readers at the Source-level redistributions section at the bottom. ================================================================================ Direct runtime dependencies ================================================================================ <name> <SPDX> <upstream-URL> ... one row per direct dep ... ================================================================================ Reference architectures ================================================================================ Wan 2.1 / Wan 2.2 Apache-2.0 https://github.com/Wan-Video/Wan2.1 <one paragraph explaining the reference-architecture relationship and confirming weights/sources aren't redistributed> ================================================================================ Optional integration: integrations/<name>
GitHub에서 보기
이 SKILL.md는 매우 커서 SkillsMP가 여기에는 첫 섹션만 미리 보여줍니다. GitHub에서 보기