28 Commits

Author SHA1 Message Date
5c46a64056 members, managers, players, league roles
All checks were successful
Build & publish docs (rc + release) / publish (push) Successful in 8s
2026-02-06 18:36:38 -06:00
76964d837c flesh out miscellaneous and dissolution
All checks were successful
Build & publish docs (rc + release) / publish (push) Successful in 8s
2026-02-06 17:39:53 -06:00
0b4fadf18d flesh out treasurer and secretary 2026-02-06 17:39:53 -06:00
694c423772 remove commissioner power 2026-02-06 17:39:53 -06:00
3669173cb6 capitalization fix 2026-02-06 17:39:53 -06:00
47a3a32632 by-laws => Bylaws 2026-02-06 17:39:53 -06:00
70eace7afb typo 2026-02-06 17:39:53 -06:00
43d7b10551 amend purpose to include members 2026-02-06 17:39:53 -06:00
dcbe64b222 add powers, limitations, office and agent 2026-02-06 17:39:52 -06:00
85856af1fd remove date from index 2026-02-06 16:31:39 -06:00
04285c9817 fix pre-release
All checks were successful
Build & publish docs (rc + release) / publish (push) Successful in 8s
2026-02-06 16:00:26 -06:00
82098131aa split bylaws and policy
All checks were successful
Build & publish docs (rc + release) / publish (push) Successful in 8s
2026-02-05 20:37:48 -06:00
d5a2d95ed6 from melanie 2026-02-05 20:37:48 -06:00
89fd2860ae from tony 2026-02-05 20:37:48 -06:00
1bd64f7a99 budget section, unify on "dues" 2026-02-05 20:37:48 -06:00
5c08d16be3 restructure officers, unify on "Commissioner" 2026-02-05 20:37:48 -06:00
2cd58ee332 Add directors 2026-02-05 20:37:48 -06:00
e8ea6bccb6 simplify member standing and voting 2026-02-05 20:37:48 -06:00
3bfe28a61e section -> provision 2026-02-05 20:37:48 -06:00
4ae1d6898f clarify membership. formalize "Manager" 2026-02-05 20:37:48 -06:00
0c8c37907d amend purpose 2026-02-05 20:37:48 -06:00
f92d67775b Update name section, unify to "League" 2026-02-05 20:37:47 -06:00
5e8ef75063 promote name and purpose to sections 2026-02-05 20:37:47 -06:00
d670a6b450 move assets, styles to docs folder 2026-02-05 20:37:47 -06:00
d5669178db implement mkdocs, remove pandoc 2026-02-05 20:37:41 -06:00
44d0a66aa5 moved general play section to new document as playing rules 2026-02-05 20:34:00 -06:00
f59d056cf4 ci, build, release
All checks were successful
Build & publish docs (rc + release) / publish (push) Successful in 8s
+ update spellcheck to use cspell
2026-02-05 20:17:04 -06:00
eaf916443c implement mkdocs, remove pandoc
directory restructuring, remove makefile and build files in repo
moved general play section to new document as playing rules
move assets, styles to docs folder
2026-02-05 18:09:06 -06:00
8 changed files with 113 additions and 253 deletions

View File

@@ -1,74 +0,0 @@
name: Release - Build and publish docs
on:
push:
tags: ["v*"]
workflow_dispatch:
permissions:
contents: write
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout (tag)
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: |
set -euo pipefail
pip install -r mkdocs/requirements.txt
- name: CI gate build (strict)
env:
MKDOCS_STRICT: ${{ vars.MKDOCS_STRICT }}
run: |
set -euo pipefail
export MKDOCS_STRICT="${MKDOCS_STRICT:-true}"
tools/mkdocs_build.sh --config mkdocs/mkdocs.yml
- name: Package site (non-strict)
run: |
set -euo pipefail
export MKDOCS_STRICT="false"
scripts/package_site.sh "${GITHUB_REF_NAME}" --config mkdocs/mkdocs.yml --dist "${RUNNER_TEMP}/dist"
- name: Publish release (GitHub)
uses: softprops/action-gh-release@v2
with:
name: ${{ github.ref_name }}
tag_name: ${{ github.ref_name }}
files: |
${{ runner.temp }}/dist/${{ github.ref_name }}.zip
- name: Remove RC preview from gh-pages (optional cleanup)
run: |
set -euo pipefail
git fetch origin gh-pages:gh-pages || true
if git show-ref --verify --quiet refs/heads/gh-pages; then
git switch gh-pages
else
echo "No gh-pages branch; nothing to clean."
exit 0
fi
if [ -d rc ]; then
rm -rf rc
git add -A
git config user.name "actions-bot"
git config user.email "actions-bot@users.noreply.github.com"
git commit -m "Remove RC preview after release ${GITHUB_REF_NAME}" || echo "No changes to commit"
git push origin gh-pages
else
echo "No rc/ directory present; nothing to delete."
fi

View File

@@ -1,76 +0,0 @@
name: Deploy RC preview to GitHub Pages
on:
push:
tags: ["rc*"]
workflow_dispatch:
permissions:
contents: write
jobs:
deploy-rc-pages:
runs-on: ubuntu-latest
steps:
- name: Checkout (tag)
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: |
set -euo pipefail
pip install -r mkdocs/requirements.txt
- name: Build site (strict default)
run: |
set -euo pipefail
export MKDOCS_STRICT="${MKDOCS_STRICT:-true}"
export TMPDIR="${RUNNER_TEMP:-$TMPDIR}"
export OUTPUT_DIR="${OUTPUT_DIR:-${TMPDIR}/dist/}"
tools/build.sh --config mkdocs/mkdocs.yml
- name: Checkout gh-pages branch
run: |
set -euo pipefail
git fetch origin gh-pages:gh-pages || true
if git show-ref --verify --quiet refs/heads/gh-pages; then
git switch gh-pages
else
git switch --orphan gh-pages
rm -rf ./*
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git commit --allow-empty -m "Initialize gh-pages"
fi
- name: Publish RC preview under /rc/<tag>/
run: |
export TMPDIR="${RUNNER_TEMP:-$TMPDIR}"
export OUTPUT_DIR="${OUTPUT_DIR:-${TMPDIR}/dist/}"
set -euo pipefail
rm -rf "rc"* || true
mkdir -p "rc/"
cp -a "$OUTPUT_DIR/." "rc/"
git add -A
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git commit -m "Deploy RC preview ${GITHUB_REF_NAME}" || echo "No changes to commit"
git push origin gh-pages
- name: Publish prerelease (GitHub)
uses: softprops/action-gh-release@v2
with:
prerelease: true
body: |
RC preview: https://<org>.github.io/<repo>/rc/
Tag: ${{ github.ref_name }}
Commit: ${{ github.sha }}

View File

@@ -8,22 +8,24 @@ on:
workflow_dispatch: workflow_dispatch:
permissions: permissions:
contents: read contents: write
env: env:
MKDOCS_CONFIG: mkdocs/mkdocs.yml MKDOCS_CONFIG: mkdocs/mkdocs.yml
MKDOCS_OUTPUT_DIR: ${{ runner.temp }}/dist
MKDOCS_STRICT: ${{ vars.MKDOCS_STRICT || 'true' }} MKDOCS_STRICT: ${{ vars.MKDOCS_STRICT || 'true' }}
jobs: jobs:
build: publish:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - name: Checkout (tag)
uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-python@v5 - name: Setup Python
uses: actions/setup-python@v5
with: with:
python-version: "3.11" python-version: "3.11"
@@ -32,7 +34,7 @@ jobs:
set -euo pipefail set -euo pipefail
pip install -r mkdocs/requirements.txt pip install -r mkdocs/requirements.txt
- name: Build docs (strict gate) - name: Build docs (normal + offline, strict gate)
run: | run: |
set -euo pipefail set -euo pipefail
@@ -41,29 +43,22 @@ jobs:
FLAGS+=(--strict) FLAGS+=(--strict)
fi fi
mkdir -p "${MKDOCS_OUTPUT_DIR}" OUT_BASE="${RUNNER_TEMP}/mkdocs_out"
SITE="${OUT_BASE}/site"
SITE_OFFLINE="${OUT_BASE}/site_offline/${GITHUB_REF_NAME}"
OFFLINE="${OFFLINE:-true}" mkdocs build \ rm -rf "${OUT_BASE}"
"${FLAGS[@]}" \ mkdir -p "${SITE}" "${SITE_OFFLINE}"
-f "${MKDOCS_CONFIG}" \
-d "${MKDOCS_OUTPUT_DIR}/offline"
mkdocs build \
"${FLAGS[@]}" \
-f "${MKDOCS_CONFIG}" \
-d "${MKDOCS_OUTPUT_DIR}/dist"
- name: Zip site mkdocs build "${FLAGS[@]}" -f "${MKDOCS_CONFIG}" -d "${SITE}"
OFFLINE=true mkdocs build "${FLAGS[@]}" -f "${MKDOCS_CONFIG}" -d "${SITE_OFFLINE}"
- name: Zip offline site
run: | run: |
set -euo pipefail set -euo pipefail
cd "${MKDOCS_OUTPUT_DIR}" cd "${RUNNER_TEMP}/mkdocs_out/site_offline/"
zip -r "${GITHUB_REF_NAME}.zip" "./offline" zip -r "${GITHUB_REF_NAME}.zip" ./${GITHUB_REF_NAME}
release:
runs-on: ubuntu-latest
needs: build
steps:
# -------------------------
# RC-only step
# -------------------------
- name: Publish prerelease - name: Publish prerelease
if: startsWith(github.ref_name, 'rc') if: startsWith(github.ref_name, 'rc')
uses: softprops/action-gh-release@v2 uses: softprops/action-gh-release@v2
@@ -72,13 +67,10 @@ jobs:
name: ${{ github.ref_name }} name: ${{ github.ref_name }}
tag_name: ${{ github.ref_name }} tag_name: ${{ github.ref_name }}
body: | body: |
Release candidate preview (if deployed): /rc/ Release candidate preview.
files: | files: |
${{ runner.temp }}/${{ github.ref_name }}.zip ${{ runner.temp }}/mkdocs_out/site_offline/${{ github.ref_name }}.zip
# -------------------------
# Final release-only step
# -------------------------
- name: Publish release - name: Publish release
if: startsWith(github.ref_name, 'v') if: startsWith(github.ref_name, 'v')
uses: softprops/action-gh-release@v2 uses: softprops/action-gh-release@v2
@@ -86,47 +78,37 @@ jobs:
name: ${{ github.ref_name }} name: ${{ github.ref_name }}
tag_name: ${{ github.ref_name }} tag_name: ${{ github.ref_name }}
files: | files: |
${{ runner.temp }}/${{ github.ref_name }}.zip ${{ runner.temp }}/mkdocs_out/site_offline/${{ github.ref_name }}.zip
deploy:
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout gh-pages branch - name: Checkout gh-pages branch
uses: actions/checkout@v4
with:
ref: gh-pages
fetch-depth: 0
- name: Deploy release to gh-pages root
if: startsWith(github.ref_name, 'v')
run: | run: |
set -euo pipefail set -euo pipefail
git fetch origin gh-pages:gh-pages || true rm -rf ./*
if git show-ref --verify --quiet refs/heads/gh-pages; then cp -a ${RUNNER_TEMP}/mkdocs_out/site/. .
git switch gh-pages
else
git switch --orphan gh-pages
rm -rf ./*
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git commit --allow-empty -m "Initialize gh-pages"
fi
- name: Publish release
run: |
set -euo pipefail
rm ./* ./.* || true
cp -a "${MKDOCS_OUTPUT_DIR}/dist/." ""
git add -A git add -A
git config user.name "github-actions[bot]" git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com" git config user.email "github-actions[bot]@users.noreply.github.com"
git commit -m "Deploy release ${GITHUB_REF_NAME}" || echo "No changes to commit" git commit -m "Deploy release ${GITHUB_REF_NAME}" || echo "No changes to commit"
git push origin gh-pages git push origin gh-pages
- name: Publish RC preview under /rc/<tag>/ - name: Deploy RC preview to /rc/
if: startsWith(github.ref_name, 'rc')
run: | run: |
set -euo pipefail set -euo pipefail
rm -rf "rc"* || true rm -rf rc
mkdir -p "rc/" mkdir -p rc
cp -a "${MKDOCS_OUTPUT_DIR}/dist/." "rc/" cp -a ${RUNNER_TEMP}/mkdocs_out/site/. rc/
printf '{"tag":"%s"}\n' "${GITHUB_REF_NAME}" > rc/rc.json
git add -A git add -A
git config user.name "github-actions[bot]" git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com" git config user.email "github-actions[bot]@users.noreply.github.com"
git commit -m "Deploy RC preview ${GITHUB_REF_NAME}" || echo "No changes to commit" git commit -m "Deploy RC preview ${GITHUB_REF_NAME}" || echo "No changes to commit"
git push origin gh-pages git push origin gh-pages

View File

@@ -1,5 +1,5 @@
<p align="center"> <p align="center">
<img src="assets/cmba-logo.svg" width="200"> <img src="docs/assets/cmba-logo.svg" width="200">
</p> </p>
# CMBA Constitution and Bylaws # CMBA Constitution and Bylaws

View File

@@ -3,6 +3,73 @@
## Subjectivity ## Subjectivity
These rules, regulations, articles, and Bylaws may not be suspended, set aside, or added to under any circumstances, regardless of the will of the Managers. This provision nullifies the “If both managers agree” concept. These rules, regulations, articles, and Bylaws may not be suspended, set aside, or added to under any circumstances, regardless of the will of the Managers. This provision nullifies the “If both managers agree” concept.
## Member Franchises (Teams) and Management
A Member Franchise consists of:
1. A league-approved team identity;
1. A designated Manager authorized to act on its behalf;
1. A roster of eligible and capable players;
All references to “Teams” within this document shall be deemed synonymous with “Member Franchises.”
### Recognition
1. A Member Franchise shall be recognized by the league upon acceptance by the League and payment of all required fees.
1. Recognition grants the Member Franchise the right to participate in league activities, subject to compliance with this document.
1. Membership does not confer ownership rights beyond league participation.
### Team Identity
1. Each Member Franchise shall operate under a single league-approved team name.
1. Team names must be unique within the league.
1. The league reserves the right to reject, revoke, or require modification of any team name for any reason, including but not limited to offensiveness, duplication, or reputational concerns.
### Admission of New Member Franchises
The Commissioner shall review applications for new Member Franchises for compliance with Franchise Standards.
1. Upon acceptable review, the Commissioner shall present the proposed Member Franchise to the League membership for consideration.
1. Proposed Member Franchises may present a positive case for inclusion.
1. Acceptance shall require a simple majority vote of the Board.
### Manager Designation and Authority
1. Each Member Franchise shall designate one individual as its Manager.
1. The Manager shall be the **sole authorized representative** of the Member Franchise for all league matters unless otherwise approved by the Commissioner.
1. The Manager shall be responsible for:
1. Communication with the league;
1. Submission of rosters and player information;
1. Payment or coordination of all required fees;
1. Ensuring compliance with league rules by players and associated individuals.
1. All actions taken by the Manager shall be deemed actions of the Member Franchise.
1. The Member Franchise shall remain responsible for all obligations and penalties regardless of internal team disputes or player actions.
1. Each Member Franchise may designate an Assistant Manager.
### Manager Changes
1. A Member Franchise may change its Manager by providing notice to the Commissioner.
1. Manager changes shall not relieve the Member Franchise of any existing obligations, penalties, or disciplinary actions.
## Players
A Player is an individual listed on the official roster of a Member Franchise.
Player status is contingent upon:
1. Compliance with roster and eligibility requirements;
1. Payment of any applicable fees to their Manager or the League;
1. Adherence to all League rules, policies, and codes of conduct.
A Player participates in League activities solely through association with a Member Franchise and possesses no independent membership rights.
### Appointed League Roles
The Commissioner may appoint individuals to operational roles as necessary to support League administration, subject to Board oversight.
Appointed roles may include, but are not limited to, the following:
1. Umpire Assigner;
1. Webmaster;
1. Social Media or Communications Coordinator;
1. Other roles deemed necessary by the Commissioner.
The Commissioner shall define the duties, scope, and term of each appointed role.
No appointed role shall possess independent authority to interpret rules, impose discipline, levy fees or fines, or bind the League, unless such authority is expressly granted by this document or by vote of the League.
## Budget ## Budget
A budget for the next fiscal year shall be prepared by the Commissioner for presentation and approval of the Board. The budget shall consists the annual Member dues, other income, and expected expenditures for the operating year. The board shall present the approved budget for information to league Members. A budget for the next fiscal year shall be prepared by the Commissioner for presentation and approval of the Board. The budget shall consists the annual Member dues, other income, and expected expenditures for the operating year. The board shall present the approved budget for information to league Members.
@@ -38,21 +105,6 @@ Bylaws may be amended, removed, or added by an affirmative vote of two-thirds of
## Membership ## Membership
### Standards
The following standards shall apply for consideration for membership by franchises in the League.
1. Quality of leadership within the franchise.
1. Good record of past performance in the following:
1. Forfeits and punctuality at League games.
1. Attitude and conduct of players and management.
1. Financial responsibility.
1. Ability of its players.
### New franchises
The League Commissioner shall present, upon acceptable review of its qualifications, a new franchise to the members at large for consideration. New franchises are allowed to present a positive case for inclusion.
1. Acceptance shall be affirmed with a simple majority vote of members in attendance.
### Annual Membership Dues ### Annual Membership Dues
All League members shall pay annual membership dues, as determined by League [budget](#budget). All League members must have all membership dues paid by a schedule set by the Commissioner and approved by the Board. All League members shall pay annual membership dues, as determined by League [budget](#budget). All League members must have all membership dues paid by a schedule set by the Commissioner and approved by the Board.
@@ -122,14 +174,6 @@ Any decision not listed above shall be decided by simple majority vote.
### Attendance ### Attendance
All franchise members are expected to attend all league meetings. Failure of a franchise to send a representative to a meeting may result in a ten dollar ($10.00) fine. Those members present at any meeting shall constitute a quorum and all votes by this quorum are binding. All franchise members are expected to attend all league meetings. Failure of a franchise to send a representative to a meeting may result in a ten dollar ($10.00) fine. Those members present at any meeting shall constitute a quorum and all votes by this quorum are binding.
## Teams and Managers
### Recognition
Teams shall be formally recognized as existing as an entity from April 1 through August 31 of the current season. These dates shall serve as time periods as they pertain to all rules regarding rosters and team management.
### Team Name
Teams new to the League, regardless of the makeup of the roster, shall not be allowed to use the name of any existing League team. Teams from other recognized leagues or leagues entering the League shall be allowed to use any team name provided it was the recognized existing name of the team prior to its membership in the League. Changes in team names shall not affect a teams status in the League in any way provided the original recognized Manager is the entrant of the team.
### Uniform ### Uniform
All players must be in uniform (bearing the teams name as represented to the league) by the teams first regular season game in order to be eligible to participate in games. Players may not obtain the jersey of another team member in order to obtain eligibility. All players must be in uniform (bearing the teams name as represented to the league) by the teams first regular season game in order to be eligible to participate in games. Players may not obtain the jersey of another team member in order to obtain eligibility.
@@ -138,20 +182,6 @@ All players must be in uniform (bearing the teams name as represented to the
1. Uniforms shall consist of, but are not limited to, matching team caps and jerseys with assigned team uniform numbers. 1. Uniforms shall consist of, but are not limited to, matching team caps and jerseys with assigned team uniform numbers.
1. Players must be dressed in proper baseball pants. These pants need not match the teams uniform, however, the League encourages all players to wear matching pants. Sweatpants, shorts, jeans, or any other type of pants other than baseball pants are prohibited. 1. Players must be dressed in proper baseball pants. These pants need not match the teams uniform, however, the League encourages all players to wear matching pants. Sweatpants, shorts, jeans, or any other type of pants other than baseball pants are prohibited.
### Manager
The Manager is that person who has been officially recognized as the entrant of a team into the League. The Manager has the ultimate responsibility for the teams compliance with all Bylaws as set forth in this Constitution. The Manager of a franchise is responsible for all actions of his players and coaches and may be fined up to fifty dollars ($50.00) for any violations of codes of conduct and league rules as set forth in this document, or any other actions deemed detrimental to the objectives and standards of the League.
1. Severe violations of league rules and codes of conduct may result in the suspension of the offending player or Manager for the balance of the season or possible permanent banishment from the league, if so ruled by the Commissioner.
### Manager Changes
Management of the team may officially change from one person to another during the dates that team is formally recognized as an entity as specified in [Recognition](#recognition) only with the written consent of the outgoing Manager, or rostered members of the team can show that the Manager has not been faithfully and/or competently fulfilling his requirements as outlined in this Constitution.
1. Management changes under this Section may only take place pending the outcome of a hearing, which shall take place at the earliest possible date between the League Commissioner, the Manager in question, and the parties seeking a change in management.
1. The Commissioner may ask other Managers to attend this hearing to serve in an advisory role.
1. Failure to appear at this hearing by either party involved shall automatically result in an outcome favorable to the party in attendance.
1. Teams with management conflicts of this nature may not play league games until the completion of this hearing and resolution of the conflict.
Management changes outside of the dates that a team is formally recognized as an entity as specified in [Recognition](#recognition) are beyond the control of the League and Commissioner and are not subject to any formal mechanisms of change as outlined in this Constitution. Resolution of any outstanding conflicts associated with such management changes are the sole responsibility of the parties involved.
## Team Rosters; Players and Eligibility ## Team Rosters; Players and Eligibility
### Roster Deadline; Roster Size ### Roster Deadline; Roster Size

View File

@@ -1,3 +1 @@
# CMBA Rulebooks # CMBA Constitution and By-Laws
Use the navigation to view the documents.

View File

@@ -1,4 +1,4 @@
site_name: CMBA Rulebook site_name: CMBA Constitution and By-Laws
docs_dir: ../docs docs_dir: ../docs
# Prevent accidental publishing of repo/CI/dev clutter # Prevent accidental publishing of repo/CI/dev clutter

View File

@@ -11,5 +11,5 @@ STRICT_FLAG=""
if [ "${MKDOCS_STRICT}" = "true" ]; then if [ "${MKDOCS_STRICT}" = "true" ]; then
STRICT_FLAG="--strict" STRICT_FLAG="--strict"
fi fi
echo "MKDOCS_STRICT: $MKDOCS_STRICT, STRICT_FLAG: $STRICT_FLAG"
mkdocs build ${STRICT_FLAG} -f $MKDOCS_CONFIG -d $OUTPUT_DIR mkdocs build ${STRICT_FLAG} -f $MKDOCS_CONFIG -d $OUTPUT_DIR