Skip to main content

rfcman — a BigTalk utility: fast CLI for managing RFC lifecycles

Project description

rfcman

rfcman logo

rfcman — a BigTalk utility.

A fast, elegant CLI for managing RFC lifecycles.

Incubated for BigTalk; usable for any project that needs structured proposal workflows.

Install

pip install rfcman

Requires Python 3.12+.

Quick start

rfcman init
rfcman new idea "Faster module loading"
rfcman list ideas
rfcman describe Idea-faster-module-loading
rfcman upgrade Idea-faster-module-loading
rfcman check

Lifecycle

Idea → Research → Proposed → Accepted
                           ↘ Rejected
Accepted → Superseded
  • upgrade keeps the previous document and creates the next stage with a references link (Idea-new-idea, Research-new-idea, …).
  • From Proposed, choose Accept or Reject.
  • Accepting can optionally supersede an existing accepted RFC (type-to-filter picker).
  • rfcman supersede <old> <new> does the same non-interactively.

Each document stores a UUID in frontmatter. CLI args, completions, and references use Stage-filename (e.g. Idea-typed-channels for ideas/typed-channels.md). Cross-links in related / supersedes / superseded_by store UUIDs so they survive renames and stage moves.

rfcman init writes rfcman.yml in the directory where you ran the command, recording the tree location, created date, and author (from git config). Later commands discover that file (walking up from cwd) unless you pass --path / -p. Change author in rfcman.yml to override the byline on new documents.

Command Purpose
rfcman help [CMD] Show help for rfcman or a command
rfcman init [-p PATH] Create an RFC tree (./rfcs by default)
rfcman new idea NAME Create an idea (author from rfcman.yml, else git)
rfcman list [STAGE] One-line listing
rfcman describe REF Summary + reference tree (terminal hyperlinks)
rfcman upgrade REF Advance to the next stage
rfcman supersede OLD NEW Mark accepted OLD superseded by accepted NEW
rfcman check Integrity check for links and layout

Every command also accepts help (e.g. rfcman init help, rfcman describe help).

Templates

init dumps editable body templates into rfcs/_tpls/. Frontmatter is owned by rfcman and is not dumped or overridable.

Shell completions

rfcman --install-completion bash
rfcman --install-completion zsh
rfcman --install-completion fish

Or print a script to source yourself:

rfcman --show-completion bash > completions/rfcman.bash

Pre-generated scripts also live in completions/.

After install, tab-complete:

  • commands and options
  • list stage names
  • RFC refs for describe, upgrade, and supersede (match by stage, filename stem, or title)

Development

python -m pip install -e ".[dev]"
make check

Push commits

make push

Pushes the current branch and any local tags. Working tree must be clean.

Release to PyPI

make release

Runs checks, then Commitizen (cz bump) to:

  1. Choose the next SemVer from conventional commits
  2. Update CHANGELOG.md, pyproject.toml, and __version__
  3. Create a v* tag and push branch + tags

The tag triggers .github/workflows/publish.yml (Trusted Publishing → PyPI).

License

Apache-2.0

AI Disclosures

This project has significant contributions from AI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rfcman-0.1.6.tar.gz (741.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rfcman-0.1.6-py3-none-any.whl (25.6 kB view details)

Uploaded Python 3

File details

Details for the file rfcman-0.1.6.tar.gz.

File metadata

  • Download URL: rfcman-0.1.6.tar.gz
  • Upload date:
  • Size: 741.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for rfcman-0.1.6.tar.gz
Algorithm Hash digest
SHA256 4b05a1345f9624793e1b1b85d9451d0fbe86ec5e190a3b5643627c8e98446407
MD5 b1c44d39fee1367ba3fb4a335383622d
BLAKE2b-256 d046b4bb80bf8cc09d6ac8d486a3813723e9f1c0fbc12139379d20cd60ac9e3d

See more details on using hashes here.

Provenance

The following attestation bundles were made for rfcman-0.1.6.tar.gz:

Publisher: publish.yml on bigtalk-org/rfc-manager

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rfcman-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: rfcman-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 25.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for rfcman-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 c8ba2a97a54c86a6780d53981e66b176f089dd186f6778efd9d7dbc0e7a1247a
MD5 22dee0311e98d2604d20c93c19e35a7c
BLAKE2b-256 938fc74f6b761a29c57644d72dc21cdc960d9332c96a6118f8e8ff0dfe2fe3f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for rfcman-0.1.6-py3-none-any.whl:

Publisher: publish.yml on bigtalk-org/rfc-manager

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page