Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 2

[*.py]
indent_size = 4

[Makefile]
indent_style = tab

[published/**]
trim_trailing_whitespace = false
insert_final_newline = false

12 changes: 12 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
* text=auto eol=lf
# Preserve official archive bytes on every platform.
published/**/*.xml -text
published/**/*.txt -text

# Count the actual RFCXML manuscript as a source, not only the build tooling.
/draft-sergeev-claim-boundaries.xml linguist-detectable=true
# Do not count the frozen duplicate publication as another source language.
published/** linguist-documentation=true
# Generated from the XML; keep its diff collapsed unless a reviewer expands it.
review/editor-copy.md linguist-generated=true

7 changes: 6 additions & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,13 @@ Explain which claim or inference the change clarifies and why it is supported.

## Checks performed

Run `make review`, `make check`, `make test`, and `make build` when the
formatter is installed. Include the regenerated reading copy. Record any
check that could not be run; do not edit an existing published snapshot.

List the checks run and their results. For a rendering, give the formatter
version and command; note checks that could not be completed.
Keep the published/02 snapshot unchanged.
Keep every published snapshot unchanged.

Contribution terms, attribution, and privacy guidance are in CONTRIBUTING.md.

41 changes: 41 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Build and check draft
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: draft-build-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: Source checks and RFCXML build
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09
with:
persist-credentials: false
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1
with:
python-version: '3.12'
- name: Install pinned formatter and record the environment
run: |
mkdir -p build
python -m pip install -r requirements.txt
python -m pip freeze > build/environment.txt
- name: Check source, frozen publication, and editorial tools
run: make check test
- name: Render with official xml2rfc and repeat in the same environment
run: make build
- name: Preserve public renderings and diagnostics
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
name: editor-build-${{ github.sha }}-${{ github.run_attempt }}
path: build/
if-no-files-found: error
retention-days: 14

57 changes: 57 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Release a published IETF revision
on:
workflow_dispatch:
inputs:
revision:
description: 'Already published I-D revision (two digits, e.g. 00)'
required: true
default: '02'
type: string
target_commit:
description: 'Full main-history commit SHA containing the exact published/NN archive'
required: true
type: string
notes:
description: 'Optional short summary of this revision'
required: false
default: ''
type: string
permissions:
contents: read
concurrency:
group: ietf-release-${{ inputs.revision }}
cancel-in-progress: false
jobs:
release:
if: github.repository == 'Witnessability/cbee-spec' && github.ref == 'refs/heads/main'
runs-on: ubuntu-24.04
timeout-minutes: 10
permissions:
contents: write
steps:
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09
with:
fetch-depth: 0
persist-credentials: false
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1
with:
python-version: '3.12'
- name: Check the source and regression tests
run: make check test
- name: Verify the IETF archive, publish the GitHub release, and read back assets
env:
GH_TOKEN: ${{ github.token }}
REVISION: ${{ inputs.revision }}
TARGET_COMMIT: ${{ inputs.target_commit }}
NOTES: ${{ inputs.notes }}
run: |
python tools/release.py --revision="$REVISION" --commit="$TARGET_COMMIT" --notes="$NOTES" --publish
- name: Preserve verification results
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
name: release-verification-${{ github.run_id }}-${{ github.run_attempt }}
path: build/release/
if-no-files-found: warn
retention-days: 14

8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/build/
/.venv/
__pycache__/
*.pyc
.DS_Store
.env
.env.*

16 changes: 12 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,15 @@ assess the proposal. You do not need an implementation or a patch to contribute.

For manuscript edits, change only `draft-sergeev-claim-boundaries.xml` and keep
the pull request focused on one issue. Describe the reason for the change and
the checks performed, including formatter version and command if you rendered
the manuscript. Keep the frozen `published/02/` files unchanged. Working
renderings are review aids, rather than additional editable manuscript sources.
the checks performed. Run `make review`, `make check`, `make test`, and,
with the formatter installed, `make build`. Include the regenerated
`review/editor-copy.md` in the PR; do not hand-edit it or the TXT/HTML outputs.
Keep every frozen `published/NN/` XML/TXT and checksum file unchanged.
Working renderings are review aids, rather than additional editable sources.

Use a short-lived topic branch for a focused change. After review and successful
checks, merge it into `main` and remove the merged branch. Published revisions
use immutable tags and archive directories, not long-lived release branches.

The editor records dispositions and retains material disagreement. A merge
does not establish IETF consensus, implementation behavior, or permission to
Expand All @@ -30,7 +36,8 @@ the [IETF Note Well](https://www.ietf.org/about/note-well/),
[BCP 79](https://www.rfc-editor.org/info/bcp79), and the
[IETF Trust Legal Provisions](https://trustee.ietf.org/license-info).
Contribute material you are entitled to provide under those terms.
The manuscript retains its document notices; see [LICENSE.md](LICENSE.md).
The manuscript retains its document notices; [LICENSE.md](LICENSE.md) also
identifies the separate BSD 3-Clause license for repository tooling.
There is no additional repository CLA or signed editorial form.

## Attribution and privacy
Expand All @@ -45,3 +52,4 @@ of issues and pull requests unless disclosure has been authorized. If an
example needs sensitive material to make its point, discuss a safe way to
present it with the editor first. Follow the participation guidance linked
from the IETF Note Well.

29 changes: 29 additions & 0 deletions LICENSE-CODE
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
BSD 3-Clause License

Copyright (c) 2026 Mikhail Sergeev
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

26 changes: 20 additions & 6 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,21 @@
# Document rights
# Licensing

## Internet-Draft and manuscript contributions

The Internet-Draft XML, published TXT, and generated manuscript renderings
retain their IETF Trust copyright notices and applicable
[IETF Trust Legal Provisions](https://trustee.ietf.org/license-info).
The code-components provisions of those terms apply where relevant.
This repository does not relicense the Internet-Draft under a general
software license. See [CONTRIBUTING.md](CONTRIBUTING.md),
[BCP 78](https://www.rfc-editor.org/info/bcp78), and
[BCP 79](https://www.rfc-editor.org/info/bcp79).

## Repository tooling

The separately authored files in `tools/`, `tests/`, and `.github/`, and the
`Makefile`, are available under the BSD 3-Clause terms in [LICENSE-CODE](LICENSE-CODE).
This grant covers that tooling, not third-party dependencies or the manuscript.
Dependencies retain their own licenses. The applicable IETF obligations for
contributions are not replaced by this software license.

The Internet-Draft includes its applicable IETF Trust copyright and license
notices. See [BCP 78](https://www.rfc-editor.org/info/bcp78) and the
[IETF Trust Legal Provisions](https://trustee.ietf.org/license-info/).
This file does not replace those notices or grant new rights to third-party material.
See also the [IETF Note Well](https://www.ietf.org/about/note-well/).
17 changes: 17 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
PYTHON ?= python3

.PHONY: all review check test build
all: check test build

review:
$(PYTHON) tools/draft.py review

check:
$(PYTHON) tools/draft.py check

test:
$(PYTHON) -m unittest discover -s tests -v

build:
$(PYTHON) tools/draft.py build

Loading
Loading