Compare commits
39 Commits
fb4b4be4d0
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
|
31228932ac
|
|||
|
1bd0715c8d
|
|||
|
fe0d5a2716
|
|||
|
ad608f6ab2
|
|||
|
4d0ad53b98
|
|||
|
2ed384172e
|
|||
|
0a1ce7e08b
|
|||
|
04ff6d3899
|
|||
|
58d69100c3
|
|||
|
6d242c9021
|
|||
|
7ee712c333
|
|||
|
5c46a64056
|
|||
|
76964d837c
|
|||
|
0b4fadf18d
|
|||
|
694c423772
|
|||
|
3669173cb6
|
|||
|
47a3a32632
|
|||
|
70eace7afb
|
|||
|
43d7b10551
|
|||
|
dcbe64b222
|
|||
|
85856af1fd
|
|||
|
04285c9817
|
|||
|
82098131aa
|
|||
|
d5a2d95ed6
|
|||
|
89fd2860ae
|
|||
|
1bd64f7a99
|
|||
|
5c08d16be3
|
|||
|
2cd58ee332
|
|||
|
e8ea6bccb6
|
|||
|
3bfe28a61e
|
|||
|
4ae1d6898f
|
|||
|
0c8c37907d
|
|||
|
f92d67775b
|
|||
|
5e8ef75063
|
|||
|
d670a6b450
|
|||
|
d5669178db
|
|||
|
44d0a66aa5
|
|||
|
f59d056cf4
|
|||
|
eaf916443c
|
46
.github/workflows/ci-docs.yml
vendored
46
.github/workflows/ci-docs.yml
vendored
@@ -1,19 +1,26 @@
|
|||||||
name: CI - Docs build check
|
name: CI - Docs build check
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
push:
|
||||||
branches: [release-candidate]
|
branches:
|
||||||
push:
|
- main
|
||||||
branches: [release-candidate]
|
- develop
|
||||||
|
- release-candidate
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
|
||||||
|
env:
|
||||||
|
MKDOCS_STRICT: ${{ vars.MKDOCS_STRICT || 'true' }}
|
||||||
|
MKDOCS_CONFIG: mkdocs/mkdocs.yml
|
||||||
|
MKDOCS_OFFLINE: false
|
||||||
|
CSPELL_CONFIG: tools/spellcheck/cspell.yml
|
||||||
|
CSPELL_TARGETS: docs/**/*.md README.md
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-check:
|
build-check:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -21,25 +28,30 @@ jobs:
|
|||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: "3.13"
|
python-version: "3.11"
|
||||||
cache: "pip"
|
|
||||||
cache-dependency-path: mkdocs/requirements.txt
|
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Spellcheck
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
npx --yes cspell \
|
||||||
|
--config ${CSPELL_CONFIG} \
|
||||||
|
${CSPELL_TARGETS}
|
||||||
|
|
||||||
|
- name: Install build dependencies
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
pip install -r mkdocs/requirements.txt
|
pip install -r mkdocs/requirements.txt
|
||||||
|
|
||||||
- name: MkDocs build
|
- name: MkDocs build (strict default)
|
||||||
|
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
echo "Strict is set to ${MKDOCS_STRICT}"
|
||||||
|
FLAGS=()
|
||||||
|
|
||||||
MKDOCS_STRICT="${MKDOCS_STRICT:-true}"
|
|
||||||
STRICT_FLAG=""
|
|
||||||
if [ "${MKDOCS_STRICT}" = "true" ]; then
|
if [ "${MKDOCS_STRICT}" = "true" ]; then
|
||||||
STRICT_FLAG="--strict"
|
FLAGS+=(--strict)
|
||||||
fi
|
fi
|
||||||
|
MKDOCS_OUTPUT_DIR="${RUNNER_TEMP:-${TMPDIR:-/tmp}}/dist"
|
||||||
OFFLINE=true mkdocs build ${STRICT_FLAG} -f mkdocs/mkdocs.yml -d $RUNNER_TEMP/
|
|
||||||
|
mkdocs build "${FLAGS[@]}" -f "${MKDOCS_CONFIG}" -d "${MKDOCS_OUTPUT_DIR}"
|
||||||
|
|
||||||
78
.github/workflows/deploy-main-pages.yml
vendored
78
.github/workflows/deploy-main-pages.yml
vendored
@@ -1,78 +0,0 @@
|
|||||||
name: Deploy main to GitHub Pages (stable)
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [main]
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
deploy-main-pages:
|
|
||||||
if: ${{ env.ENABLE_DEPLOY == 'true' && env.ACT != 'true' }}
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout (main)
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Setup Python
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: "3.13"
|
|
||||||
cache: "pip"
|
|
||||||
cache-dependency-path: mkdocs/requirements.txt
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
pip install -r mkdocs/requirements.txt
|
|
||||||
|
|
||||||
- name: Build (MKDOCS_STRICT)
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
MKDOCS_STRICT="${MKDOCS_STRICT:-true}"
|
|
||||||
STRICT_FLAG=""
|
|
||||||
if [ "${MKDOCS_STRICT}" = "true" ]; then
|
|
||||||
STRICT_FLAG="--strict"
|
|
||||||
fi
|
|
||||||
|
|
||||||
OFFLINE=true mkdocs build ${STRICT_FLAG} -f mkdocs/mkdocs.yml -d site_build
|
|
||||||
|
|
||||||
- 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 stable site to root (preserve rc/)
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
mkdir -p _keep
|
|
||||||
if [ -d rc ]; then cp -a rc _keep/; fi
|
|
||||||
|
|
||||||
rm -rf ./*
|
|
||||||
if [ -d _keep/rc ]; then mv _keep/rc ./rc; fi
|
|
||||||
rm -rf _keep
|
|
||||||
|
|
||||||
cp -a ../site_build/. .
|
|
||||||
|
|
||||||
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 stable site from main" || echo "No changes to commit"
|
|
||||||
git push origin gh-pages
|
|
||||||
91
.github/workflows/deploy-rc-pages.yml
vendored
91
.github/workflows/deploy-rc-pages.yml
vendored
@@ -1,91 +0,0 @@
|
|||||||
name: Deploy RC preview to GitHub Pages
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- "v*-rc.*"
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
deploy-rc-pages:
|
|
||||||
if: ${{ env.ENABLE_DEPLOY == 'true' && env.CI_PROVIDER == 'github' && env.ACT != 'true' }}
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout (tag)
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Ensure tag commit is on release-candidate
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
git fetch origin release-candidate:refs/remotes/origin/release-candidate
|
|
||||||
if ! git merge-base --is-ancestor "${GITHUB_SHA}" "origin/release-candidate"; then
|
|
||||||
echo "ERROR: Tagged commit ${GITHUB_SHA} is not on release-candidate. Refusing RC deploy."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Setup Python
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: "3.13"
|
|
||||||
cache: "pip"
|
|
||||||
cache-dependency-path: mkdocs/requirements.txt
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
pip install -r mkdocs/requirements.txt
|
|
||||||
|
|
||||||
- name: Build (MKDOCS_STRICT)
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
MKDOCS_STRICT="${MKDOCS_STRICT:-true}"
|
|
||||||
STRICT_FLAG=""
|
|
||||||
if [ "${MKDOCS_STRICT}" = "true" ]; then
|
|
||||||
STRICT_FLAG="--strict"
|
|
||||||
fi
|
|
||||||
|
|
||||||
OFFLINE=true mkdocs build ${STRICT_FLAG} -f mkdocs/mkdocs.yml -d site_build
|
|
||||||
|
|
||||||
- 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: |
|
|
||||||
set -euo pipefail
|
|
||||||
REF="${{ github.ref_name }}"
|
|
||||||
mkdir -p "rc/${REF}"
|
|
||||||
rm -rf "rc/${REF:?}/"* || true
|
|
||||||
cp -a ../site_build/. "rc/${REF}/"
|
|
||||||
|
|
||||||
mkdir -p rc
|
|
||||||
if [ ! -f rc/index.html ]; then
|
|
||||||
cat > rc/index.html << 'EOF'
|
|
||||||
<!doctype html><meta charset="utf-8"><title>RC Previews</title>
|
|
||||||
<h1>RC Previews</h1><p>Browse rc/<tag>/</p>
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
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 ${REF}" || echo "No changes to commit"
|
|
||||||
git push origin gh-pages
|
|
||||||
85
.github/workflows/prerelease-docs.yml
vendored
85
.github/workflows/prerelease-docs.yml
vendored
@@ -1,85 +0,0 @@
|
|||||||
name: Pre-release - Build and publish docs
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- "v*"
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
prerelease:
|
|
||||||
if: >
|
|
||||||
startsWith(github.ref_name, 'v')
|
|
||||||
&& contains(github.ref_name, '-rc')}}
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout (tag)
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Ensure tag commit is on release-candidate
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
git fetch origin release-candidate:refs/remotes/origin/release-candidate
|
|
||||||
if ! git merge-base --is-ancestor "${GITHUB_SHA}" "origin/release-candidate"; then
|
|
||||||
echo "ERROR: Tagged commit ${GITHUB_SHA} is not on release-candidate. Refusing prerelease."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Setup Python
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: "3.13"
|
|
||||||
cache: "pip"
|
|
||||||
cache-dependency-path: mkdocs/requirements.txt
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
pip install -r mkdocs/requirements.txt
|
|
||||||
|
|
||||||
- name: CI gate (MKDOCS_STRICT)
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
MKDOCS_STRICT="${MKDOCS_STRICT:-true}"
|
|
||||||
STRICT_FLAG=""
|
|
||||||
if [ "${MKDOCS_STRICT}" = "true" ]; then
|
|
||||||
STRICT_FLAG="--strict"
|
|
||||||
fi
|
|
||||||
|
|
||||||
OFFLINE=true mkdocs build ${STRICT_FLAG} -f mkdocs/mkdocs.yml
|
|
||||||
|
|
||||||
- name: Build artifact (non-strict)
|
|
||||||
env:
|
|
||||||
MKDOCS_STRICT: "false"
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
MKDOCS_STRICT="${MKDOCS_STRICT:-true}"
|
|
||||||
STRICT_FLAG=""
|
|
||||||
if [ "${MKDOCS_STRICT}" = "true" ]; then
|
|
||||||
STRICT_FLAG="--strict"
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p "${RUNNER_TEMP}/dist"
|
|
||||||
OFFLINE=true mkdocs build ${STRICT_FLAG} -f mkdocs/mkdocs.yml -d "${RUNNER_TEMP}/dist/${{ github.ref_name }}"
|
|
||||||
|
|
||||||
- name: Zip artifact
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
cd "${RUNNER_TEMP}/dist"
|
|
||||||
zip -r "${{ github.ref_name }}.zip" "./${{ github.ref_name }}"
|
|
||||||
|
|
||||||
- name: Publish prerelease (skip on act)
|
|
||||||
if: ${{ env.ENABLE_RELEASE == 'true' && env.ACT != 'true' }}
|
|
||||||
uses: softprops/action-gh-release@v2
|
|
||||||
with:
|
|
||||||
prerelease: true
|
|
||||||
files: |
|
|
||||||
${{ runner.temp }}/dist/${{ github.ref_name }}.zip
|
|
||||||
83
.github/workflows/release-docs.yml
vendored
83
.github/workflows/release-docs.yml
vendored
@@ -1,83 +0,0 @@
|
|||||||
name: Release - Build and publish docs
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- "v*"
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
release:
|
|
||||||
if: >
|
|
||||||
startsWith(github.ref_name, 'v')
|
|
||||||
&& !contains(github.ref_name, '-rc')}}
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout (tag)
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Ensure tag commit is on main
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
git fetch origin main:refs/remotes/origin/main
|
|
||||||
if ! git merge-base --is-ancestor "${GITHUB_SHA}" "origin/main"; then
|
|
||||||
echo "ERROR: Tagged commit ${GITHUB_SHA} is not on main. Refusing release."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Setup Python
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: "3.13"
|
|
||||||
cache: "pip"
|
|
||||||
cache-dependency-path: mkdocs/requirements.txt
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
pip install -r mkdocs/requirements.txt
|
|
||||||
|
|
||||||
- name: CI gate (MKDOCS_STRICT)
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
MKDOCS_STRICT="${MKDOCS_STRICT:-true}"
|
|
||||||
STRICT_FLAG=""
|
|
||||||
if [ "${MKDOCS_STRICT}" = "true" ]; then
|
|
||||||
STRICT_FLAG="--strict"
|
|
||||||
fi
|
|
||||||
|
|
||||||
OFFLINE=true mkdocs build ${STRICT_FLAG} -f mkdocs/mkdocs.yml
|
|
||||||
|
|
||||||
- name: Build artifact (non-strict)
|
|
||||||
env:
|
|
||||||
MKDOCS_STRICT: "false"
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
MKDOCS_STRICT="${MKDOCS_STRICT:-true}"
|
|
||||||
STRICT_FLAG=""
|
|
||||||
if [ "${MKDOCS_STRICT}" = "true" ]; then
|
|
||||||
STRICT_FLAG="--strict"
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p "${RUNNER_TEMP}/dist"
|
|
||||||
OFFLINE=true mkdocs build ${STRICT_FLAG} -f mkdocs/mkdocs.yml -d "${RUNNER_TEMP}/dist/${{ github.ref_name }}"
|
|
||||||
|
|
||||||
- name: Zip artifact
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
cd "${RUNNER_TEMP}/dist"
|
|
||||||
zip -r "${{ github.ref_name }}.zip" "./${{ github.ref_name }}"
|
|
||||||
|
|
||||||
- name: Publish release (skip on act; allowed on gitea)
|
|
||||||
if: ${{ env.ENABLE_RELEASE == 'true' && env.ACT != 'true' }}
|
|
||||||
uses: softprops/action-gh-release@v2
|
|
||||||
with:
|
|
||||||
files: |
|
|
||||||
${{ runner.temp }}/dist/${{ github.ref_name }}.zip
|
|
||||||
171
.github/workflows/release.yml
vendored
Normal file
171
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
name: Build & publish docs (rc + release)
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- "draft*"
|
||||||
|
- "rc*"
|
||||||
|
- "v*"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
env:
|
||||||
|
MKDOCS_CONFIG: mkdocs/mkdocs.yml
|
||||||
|
MKDOCS_STRICT: ${{ vars.MKDOCS_STRICT || 'true' }}
|
||||||
|
SKIP_DOCX: f${{ vars.SKIP_DOCX || 'false' }}e
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
publish:
|
||||||
|
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 deps
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
pip install -r mkdocs/requirements.txt
|
||||||
|
|
||||||
|
# Install pandoc if not present
|
||||||
|
if [ "${SKIP_DOCX}" != "true" ]; then
|
||||||
|
if ! command -v pandoc >/dev/null 2>&1; then
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y pandoc
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Build docs (normal + offline, strict gate)
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
FLAGS=()
|
||||||
|
if [ "${MKDOCS_STRICT}" = "true" ]; then
|
||||||
|
FLAGS+=(--strict)
|
||||||
|
fi
|
||||||
|
|
||||||
|
OUT_BASE="${RUNNER_TEMP}/mkdocs_out"
|
||||||
|
SITE="${OUT_BASE}/site"
|
||||||
|
SITE_OFFLINE="${OUT_BASE}/site_offline/${GITHUB_REF_NAME}"
|
||||||
|
|
||||||
|
rm -rf "${OUT_BASE}"
|
||||||
|
mkdir -p "${SITE}" "${SITE_OFFLINE}"
|
||||||
|
|
||||||
|
mkdocs build "${FLAGS[@]}" -f "${MKDOCS_CONFIG}" -d "${SITE}"
|
||||||
|
OFFLINE=true mkdocs build "${FLAGS[@]}" -f "${MKDOCS_CONFIG}" -d "${SITE_OFFLINE}"
|
||||||
|
|
||||||
|
- name: Export docx
|
||||||
|
if: env.SKIP_DOCX != 'true'
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SHORT_SHA="${GITHUB_SHA::7}"
|
||||||
|
|
||||||
|
OUT_DIR="${RUNNER_TEMP}/pandoc"
|
||||||
|
OUT_FILE="${GITHUB_REF_NAME}-${SHORT_SHA}.docx"
|
||||||
|
echo "SHORT_SHA=`echo ${SHORT_SHA}`" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
mkdir -p "${OUT_DIR}"
|
||||||
|
|
||||||
|
# Collect markdown files, excluding README.md and docs/index.md
|
||||||
|
mapfile -t MD_FILES < <(
|
||||||
|
find docs -name '*.md' \
|
||||||
|
! -name 'index.md' \
|
||||||
|
! -name 'README.md' \
|
||||||
|
| sort
|
||||||
|
)
|
||||||
|
|
||||||
|
echo "Generating ${OUT_FILE}"
|
||||||
|
|
||||||
|
# Adjust input paths as needed
|
||||||
|
pandoc \
|
||||||
|
"${MD_FILES[@]}" \
|
||||||
|
--number-sections \
|
||||||
|
-o "${OUT_DIR}/${OUT_FILE}"
|
||||||
|
|
||||||
|
echo "Pandoc output written to ${OUT_DIR}/${OUT_FILE}"
|
||||||
|
|
||||||
|
- name: Zip offline site
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
cd "${RUNNER_TEMP}/mkdocs_out/site_offline/"
|
||||||
|
zip -r "${GITHUB_REF_NAME}.zip" ./${GITHUB_REF_NAME}
|
||||||
|
|
||||||
|
- name: Publish prerelease
|
||||||
|
if: startsWith(github.ref_name, 'rc') || startsWith(github.ref_name, 'draft')
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
prerelease: true
|
||||||
|
name: ${{ github.ref_name }}
|
||||||
|
tag_name: ${{ github.ref_name }}
|
||||||
|
body: |
|
||||||
|
Release candidate preview.
|
||||||
|
files: |
|
||||||
|
${{ runner.temp }}/mkdocs_out/site_offline/${{ github.ref_name }}.zip
|
||||||
|
${{ runner.temp }}/pandoc/${{ github.ref_name }}-${{ env.SHORT_SHA }}.docx
|
||||||
|
|
||||||
|
- name: Publish release
|
||||||
|
if: startsWith(github.ref_name, 'v')
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
name: ${{ github.ref_name }}
|
||||||
|
tag_name: ${{ github.ref_name }}
|
||||||
|
files: |
|
||||||
|
${{ runner.temp }}/mkdocs_out/site_offline/${{ github.ref_name }}.zip
|
||||||
|
|
||||||
|
- 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: |
|
||||||
|
set -euo pipefail
|
||||||
|
rm -rf ./*
|
||||||
|
cp -a ${RUNNER_TEMP}/mkdocs_out/site/. .
|
||||||
|
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 release ${GITHUB_REF_NAME}" || echo "No changes to commit"
|
||||||
|
git push origin gh-pages
|
||||||
|
|
||||||
|
- name: Deploy RC preview to /rc/
|
||||||
|
if: startsWith(github.ref_name, 'rc')
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
rm -rf rc draft
|
||||||
|
mkdir -p rc
|
||||||
|
cp -a ${RUNNER_TEMP}/mkdocs_out/site/. rc/
|
||||||
|
printf '{"tag":"%s"}\n' "${GITHUB_REF_NAME}" > rc/rc.json
|
||||||
|
|
||||||
|
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: Deploy draft preview to /draft/
|
||||||
|
if: startsWith(github.ref_name, 'draft')
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
rm -rf rc draft
|
||||||
|
mkdir -p draft
|
||||||
|
cp -a ${RUNNER_TEMP}/mkdocs_out/site/. draft/
|
||||||
|
printf '{"tag":"%s"}\n' "${GITHUB_REF_NAME}" > draft/draft.json
|
||||||
|
|
||||||
|
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 draft preview ${GITHUB_REF_NAME}" || echo "No changes to commit"
|
||||||
|
git push origin gh-pages
|
||||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -7,13 +7,8 @@
|
|||||||
/dataSources/
|
/dataSources/
|
||||||
/dataSources.local.xml
|
/dataSources.local.xml
|
||||||
|
|
||||||
# Vitrtual Environments
|
|
||||||
.venv/
|
|
||||||
venv/
|
|
||||||
|
|
||||||
.idea/
|
.idea/
|
||||||
*.bbprojectd
|
*.bbprojectd
|
||||||
.vscode
|
|
||||||
|
|
||||||
# Backups created by aspell
|
# Backups created by aspell
|
||||||
*.md.bak*
|
*.md.bak*
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
personal_repl-1.1 en 0
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
personal_ws-1.1 en 19
|
|
||||||
BBCOR
|
|
||||||
MLB
|
|
||||||
RO
|
|
||||||
Rawlings
|
|
||||||
chicagoland
|
|
||||||
cmba
|
|
||||||
cp
|
|
||||||
ePUB
|
|
||||||
epub
|
|
||||||
gh
|
|
||||||
gitdriver
|
|
||||||
github
|
|
||||||
html
|
|
||||||
jgm
|
|
||||||
lua
|
|
||||||
md
|
|
||||||
pandoc
|
|
||||||
repo
|
|
||||||
rostered
|
|
||||||
src
|
|
||||||
timeframe
|
|
||||||
@@ -1,189 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# mprpic/git-spell-check
|
|
||||||
# https://github.com/mprpic/git-spell-check/
|
|
||||||
set -e
|
|
||||||
|
|
||||||
#adding this for use on a Mac
|
|
||||||
if command -v gsed &> /dev/null
|
|
||||||
then
|
|
||||||
sed=gsed
|
|
||||||
else
|
|
||||||
sed=sed
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Instructions:
|
|
||||||
#
|
|
||||||
# This script is a Git pre-commit hook that spell checks any content you are about to commit.
|
|
||||||
#
|
|
||||||
# Place this script into the ".git/hooks/" directory in your repository. It must be called "pre-commit" and be
|
|
||||||
# executable. A Git hook only works in a single repository. You need to copy this hook into every repository you wish to
|
|
||||||
# use it in manually. Optionally, you can set up a symlink in the ".git/hooks/" directory pointing to the script.
|
|
||||||
#
|
|
||||||
# Each time you try to commit something, this script is run and spell checks the content you are committing.
|
|
||||||
#
|
|
||||||
# Should you want to bypass the pre-commit hook (though not recommended), you can commit with "git commit --no-verify".
|
|
||||||
|
|
||||||
|
|
||||||
# The following is a text file that represents your custom dictionary; edit as necessary. Add words to it that you wish
|
|
||||||
# to ignore for the spell check.
|
|
||||||
dict=~/.git-spell-check
|
|
||||||
if [ ! -f $dict ]; then
|
|
||||||
touch ~/.git-spell-check
|
|
||||||
dict=~/.git-spell-check
|
|
||||||
printf "%s\n" "Custom dictionary not found. Created ~/.git-spell-check..."
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# The following is a temporary dictionary (a binary file) created from the dict text file. It is deleted after the
|
|
||||||
# script finishes.
|
|
||||||
temp_dict=$(mktemp docs-dictionary-XXXXXX)
|
|
||||||
|
|
||||||
# Language of your doc. When using a non-English language, make sure you have the appropriate aspell libraries
|
|
||||||
# installed: "yum search aspell". For example, to spell check in Slovak, you must have the aspell-sk package installed.
|
|
||||||
lang=en
|
|
||||||
|
|
||||||
# Define an extension for any additional dictionaries (containing words that are ignored during the spell check) that
|
|
||||||
# are kept locally in your repository. These dictionaries will be loaded on top of the existing global dictionary (by
|
|
||||||
# default ~/.git-spell-check).
|
|
||||||
extension=pws
|
|
||||||
|
|
||||||
# Clean up if script is interrupted or terminated.
|
|
||||||
trap "cleanup" SIGINT SIGTERM
|
|
||||||
|
|
||||||
# Prepares the dictionary from scratch in case new words were added since last time.
|
|
||||||
function prepare_dictionary() {
|
|
||||||
|
|
||||||
local_dict=$(find . -name *.$extension -exec ls {} \;)
|
|
||||||
if [ -z "$local_dict" ]; then
|
|
||||||
sort -u $temp_dict -o $temp_dict
|
|
||||||
aspell --lang="$lang" create master "$temp_dict" < "$dict"
|
|
||||||
else
|
|
||||||
temp_file=$(mktemp temp_file-XXXXXX)
|
|
||||||
for file in $local_dict; do
|
|
||||||
cat $file >> $temp_file
|
|
||||||
done
|
|
||||||
cat $dict >> $temp_file
|
|
||||||
## Remove header line
|
|
||||||
$sed -i '/personal_ws-/d' "${temp_file}"
|
|
||||||
sort -u $temp_file -o $temp_file
|
|
||||||
aspell --lang="$lang" create master "$temp_dict" < "$temp_file"
|
|
||||||
/bin/rm -f "$temp_file"
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# Removes the temporary dictionary.
|
|
||||||
function cleanup() {
|
|
||||||
|
|
||||||
/bin/rm -f "$temp_dict"
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# Spell checks content you're about to commit. Writes out words that are misspelled or exits with 0 (i.e. continues with
|
|
||||||
# commit).
|
|
||||||
function spell_check() {
|
|
||||||
|
|
||||||
words=$(git diff --cached | grep -e "^+[^+]" | aspell --mode=sgml list --add-sgml-skip={ulink,code,literal,firstname,parameter,option,package,replaceable,programlisting,userinput,screen,filename,command,computeroutput,abbrev,accel,orgname,surname,foreignphrase,acronym,hardware,keycap,systemitem,application} --lang="$lang" --extra-dicts="$temp_dict" | sort -u)
|
|
||||||
if [ ! "$words" ]; then
|
|
||||||
printf "%s\n" "No typos found. Proceeding with commit..."
|
|
||||||
cleanup; exit 0
|
|
||||||
fi
|
|
||||||
printf "%s\n" "Spell check failed on the following words:
|
|
||||||
-------------------------------------------------"
|
|
||||||
echo $words
|
|
||||||
for word in $words; do
|
|
||||||
grep --color=always --exclude-dir={.git,tmp} -HIrone "\<$word\>" $(git diff --cached --name-only --diff-filter=ACMRTUXB) | awk -F ":" '{print "File: " $1 "\ton line: " $2 "\tTypo: " $3}'
|
|
||||||
printf "%s\n" "-------------------"
|
|
||||||
done
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# Adds all, some, or none of the misspelled words to the custom dictionary.
|
|
||||||
function add_words_to_dict() {
|
|
||||||
|
|
||||||
printf "%s\n" "
|
|
||||||
Add any of the misspelled words into your custom dictionary?
|
|
||||||
* a[ll] (add all words into dict, continue with commit)
|
|
||||||
* s[ome] (add some words into dict, fix others, no commit)
|
|
||||||
* i[gnore] (add some words into dict, ignore rest, continue with commit)
|
|
||||||
* n[one] (no commit)
|
|
||||||
"
|
|
||||||
|
|
||||||
while true; do
|
|
||||||
exec < /dev/tty # Simply reading user input does not work because Git hooks have stdin detached.
|
|
||||||
read answer
|
|
||||||
shopt -s nocasematch
|
|
||||||
case "$answer" in
|
|
||||||
a|all)
|
|
||||||
add_all
|
|
||||||
cleanup; exit 0
|
|
||||||
;;
|
|
||||||
s|some)
|
|
||||||
add_some
|
|
||||||
printf "%s\n" "Please fix remaining typos, use \"git add\" to add fixed files, and commit."
|
|
||||||
cleanup; exit 1
|
|
||||||
;;
|
|
||||||
i|ignore)
|
|
||||||
add_some
|
|
||||||
cleanup; exit 0
|
|
||||||
;;
|
|
||||||
n|none)
|
|
||||||
add_none
|
|
||||||
cleanup; exit 1
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
printf "%s\n" "Incorrect answer. Try again."
|
|
||||||
continue
|
|
||||||
esac
|
|
||||||
shopt -u nocasematch
|
|
||||||
done
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# Adds all words to the custom dictionary and continues with the commit.
|
|
||||||
function add_all() {
|
|
||||||
|
|
||||||
for word in $words; do
|
|
||||||
echo $word >> "$dict"
|
|
||||||
done
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# Adds some (selected by user) of the words to the dictionary and exits with 1.
|
|
||||||
function add_some() {
|
|
||||||
|
|
||||||
for word in $words; do
|
|
||||||
printf "%s\n" "Do you want to add the following word to your custom dictionary: $word (y[es] or n[o])"
|
|
||||||
while true; do
|
|
||||||
exec < /dev/tty
|
|
||||||
read answer
|
|
||||||
shopt -s nocasematch
|
|
||||||
case "$answer" in
|
|
||||||
y|yes)
|
|
||||||
echo $word >> "$dict"
|
|
||||||
printf "%s\n" "\"$word\" added to your custom dictionary."
|
|
||||||
break ;;
|
|
||||||
n|no)
|
|
||||||
break ;;
|
|
||||||
*)
|
|
||||||
printf "%s\n" "Incorrect answer. Try again."
|
|
||||||
continue
|
|
||||||
esac
|
|
||||||
shopt -u nocasematch
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# Adds none of the words and exits with 1.
|
|
||||||
function add_none() {
|
|
||||||
|
|
||||||
printf "%s\n" "No words were added to your custom dictionary."
|
|
||||||
printf "%s\n" "Please fix remaining typos, use \"git add\" to add fixed files, and commit."
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
prepare_dictionary
|
|
||||||
spell_check
|
|
||||||
add_words_to_dict
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
extension_files_to_check=md
|
|
||||||
|
|
||||||
function spell_check(){
|
|
||||||
find . -type f -name "*.${extension_files_to_check}" -exec aspell check {} --mode=markdown --home-dir=./.spell-check \;
|
|
||||||
}
|
|
||||||
|
|
||||||
spell_check
|
|
||||||
70
README.md
70
README.md
@@ -1,95 +1,27 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="https://github.com/anthonyscorrea/silver-memory/blob/a712bca2516c3e860f2c61ea383a3132ead0614b/cmba-logo.svg" width="200">
|
<img src="docs/assets/cmba-logo.svg" width="200">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
# CMBA Constitution and Bylaws
|
# CMBA Constitution and Bylaws
|
||||||
|
|
||||||
The Constitution and Bylaws for the baseball league known as the [Chicago Metropolitan Baseball Association (CMBA)](#about-the-cmba).
|
The Constitution and Bylaws for the baseball league known as the [Chicago Metropolitan Baseball Association (CMBA)](#about-the-cmba).
|
||||||
|
|
||||||
The compiled, published text can be found in the following formats:
|
|
||||||
- [PDF](build/cmba-bylaws.pdf)
|
|
||||||
- [HTML](build/cmba-bylaws.html)
|
|
||||||
- [ePUB](build/cmba-bylaws.epub)
|
|
||||||
|
|
||||||
The source text for this document can be found in Markdown format in [src/cmba-bylaws.md](src/cmba-bylaws.md).
|
The source text for this document can be found in Markdown format in [src/cmba-bylaws.md](src/cmba-bylaws.md).
|
||||||
|
|
||||||
## Building from source
|
## Building from source
|
||||||
|
|
||||||
### Requirements
|
### Requirements
|
||||||
|
|
||||||
Building from source requires:
|
|
||||||
- [Pandoc](https://pandoc.org)
|
|
||||||
- [GNU Make](https://www.gnu.org/software/make/)
|
|
||||||
|
|
||||||
### Steps
|
### Steps
|
||||||
1. Download the latest release or clone the repo:
|
|
||||||
```
|
|
||||||
git clone https://github.com/anthonyscorrea/cmba-bylaws.git
|
|
||||||
```
|
|
||||||
2. Navigate to the root directory:
|
|
||||||
```
|
|
||||||
cd cmba-bylaws-master
|
|
||||||
```
|
|
||||||
3. Publish into desired format:
|
|
||||||
```
|
|
||||||
make {format}
|
|
||||||
```
|
|
||||||
were `{format}` is one of the below:
|
|
||||||
- All [default]: `make all` or `make`
|
|
||||||
- PDF: `make pdf`
|
|
||||||
- html: `make html`
|
|
||||||
- epub: `make epub`
|
|
||||||
5. Built files will be in the `build/` directory
|
|
||||||
|
|
||||||
## Markdown formatting
|
|
||||||
|
|
||||||
- `#` or `h1` is used for either "Constitution" or "Bylaws". They are not numbered, necessitating an `{.unnumbered}` class.
|
|
||||||
- Note: to get the numbering to match existing convention, a [Lua filter](https://github.com/jgm/pandoc/issues/5071#issuecomment-856918980) was required, see [jgm/pandoc#5701](https://github.com/jgm/pandoc/issues/5071)
|
|
||||||
- `##` or `h2` is used for sections
|
|
||||||
- `###` or `h3` is used for subsections
|
|
||||||
|
|
||||||
## Metadata
|
|
||||||
|
|
||||||
Metadata is stored in the `metadata.yml` file.
|
|
||||||
|
|
||||||
## Project history
|
## Project history
|
||||||
|
|
||||||
The constitution and bylaws were modernized in 2021, using Google Docs. This project brings that effort into Git and Github. Previous commits show a generated plain-text history of the changes prior to this project (thanks to [gitdriver](https://github.com/larsks/gitdriver)), with the first being the version from 2016.
|
The constitution and bylaws were modernized in 2021, using Google Docs. This project brings that effort into Git and Github. Previous commits show a generated plain-text history of the changes prior to this project (thanks to [gitdriver](https://github.com/larsks/gitdriver)), with the first being the version from 2016.
|
||||||
|
|
||||||
## Spell-checking
|
## Spell-checking
|
||||||
Spell-checking is performed on the pre-commit via [.spell-check/git-spell-check](.spell-check/git-spell-check) (courtesy of [mprpic/git-spell-check](https://github.com/mprpic/git-spell-check))
|
|
||||||
|
|
||||||
You can manually run spell-checking of all markdown files by running the script (requires [aspell](http://aspell.net)):
|
|
||||||
|
|
||||||
```console
|
|
||||||
./.spell-check/spell-check
|
|
||||||
```
|
|
||||||
|
|
||||||
Should you want to bypass the pre-commit hook (though not recommended), you can commit with
|
|
||||||
```console
|
|
||||||
git commit --no-verify".
|
|
||||||
```
|
|
||||||
|
|
||||||
## GitHub Pages
|
## GitHub Pages
|
||||||
|
|
||||||
The html output can be hosted on GitHub Pages. Currently the site is hosted at the branch [gh-pages](https://github.com/anthonyscorrea/cmba-bylaws/tree/gh-pages). To update this page, you should:
|
|
||||||
|
|
||||||
1. First build from the main branch and build html
|
|
||||||
```console
|
|
||||||
git clone https://github.com/anthonyscorrea/cmba-bylaws.git
|
|
||||||
make html
|
|
||||||
```
|
|
||||||
2. Then clone the gh-pages branch and replace `index.html` with the updated page.
|
|
||||||
```console
|
|
||||||
git clone https://github.com/anthonyscorrea/cmba-bylaws.git --branch gh-pages cmba-bylaws-gh-pages
|
|
||||||
cp ../cmba-bylaws/build/cmba-bylaws.html ./cmba-bylaws-gh-pages/index.html
|
|
||||||
git push origin
|
|
||||||
```
|
|
||||||
|
|
||||||
## To-Do
|
|
||||||
- [X] Spell Checking
|
|
||||||
- [ ] Remove dependence on make, verify Windows support
|
|
||||||
|
|
||||||
## About the CMBA
|
## About the CMBA
|
||||||
This baseball league known as the [Chicago Metropolitan Baseball Association (CMBA)](http://cmbabaseball.com) has been formed for the purpose of providing the finest amateur baseball league in the State of Illinois and Midwest; a league where an up and coming young prospect for professional baseball may play and develop; where the talented veteran player can enjoy playing among the best competition; and bring friendship and sportsmanship to the Association.
|
This baseball league known as the [Chicago Metropolitan Baseball Association (CMBA)](http://cmbabaseball.com) has been formed for the purpose of providing the finest amateur baseball league in the State of Illinois and Midwest; a league where an up and coming young prospect for professional baseball may play and develop; where the talented veteran player can enjoy playing among the best competition; and bring friendship and sportsmanship to the Association.
|
||||||
|
|
||||||
|
|||||||
153
RELEASING.md
153
RELEASING.md
@@ -1,153 +0,0 @@
|
|||||||
# Technical Release & Automation Notes
|
|
||||||
|
|
||||||
> ⚠️ This document describes **technical automation and versioning**
|
|
||||||
> used by the repository (CI/CD, tags, and deployments).
|
|
||||||
>
|
|
||||||
> It does **not** define:
|
|
||||||
> - the organizational process for approving bylaws or constitutional changes
|
|
||||||
> - who is authorized to make those changes
|
|
||||||
> - when changes are considered “official” by the organization
|
|
||||||
>
|
|
||||||
> Those governance decisions within the organization’s constitution.
|
|
||||||
|
|
||||||
This document exists solely to explain how **Git version tags, automated checks,
|
|
||||||
and publishing workflows** are wired together so that future maintainers
|
|
||||||
(dozens of months from now) do not accidentally trigger or break them.
|
|
||||||
|
|
||||||
# Release & CI Process
|
|
||||||
|
|
||||||
This repository uses a deliberately strict and explicit release process.
|
|
||||||
It exists to prevent accidental releases, deployments, or CI runs.
|
|
||||||
|
|
||||||
If you are changing tags, workflows, or branches, read this first.
|
|
||||||
|
|
||||||
—
|
|
||||||
|
|
||||||
## Branches
|
|
||||||
|
|
||||||
- `development`
|
|
||||||
- Day-to-day work
|
|
||||||
- No releases or deployments happen from this branch
|
|
||||||
|
|
||||||
- `release-candidate`
|
|
||||||
- Stabilization branch
|
|
||||||
- CI runs here with strict checks
|
|
||||||
- Release candidates are tagged from here
|
|
||||||
|
|
||||||
- `main`
|
|
||||||
- Stable, releasable state
|
|
||||||
- Final releases are tagged from here
|
|
||||||
- Stable GitHub Pages content is deployed from here
|
|
||||||
|
|
||||||
—
|
|
||||||
|
|
||||||
## Tag Naming Policy
|
|
||||||
|
|
||||||
### Final Releases
|
|
||||||
- Tags **must** start with `v`
|
|
||||||
- Tags **must not** contain `-rc`
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
- `v2026.1.0`
|
|
||||||
- `v1.0.0`
|
|
||||||
|
|
||||||
### Release Candidates
|
|
||||||
- Tags **must** start with `v`
|
|
||||||
- Tags **must** contain `-rc`
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
- `v2026.1.0-rc.1`
|
|
||||||
- `v1.0.0-rc.2`
|
|
||||||
|
|
||||||
This naming policy is intentional and is enforced by CI.
|
|
||||||
|
|
||||||
—
|
|
||||||
|
|
||||||
## CI and Workflows Overview
|
|
||||||
|
|
||||||
| Workflow | Trigger | Purpose |
|
|
||||||
|———|———|———|
|
|
||||||
| CI Docs | Push / PR to `release-candidate` | Strict MkDocs build validation |
|
|
||||||
| Prerelease | Tag `v*` containing `-rc` | Build and publish prerelease artifacts |
|
|
||||||
| Release | Tag `v*` not containing `-rc` | Build and publish final release |
|
|
||||||
| RC Pages Deploy | RC tag | Publish preview docs under `/rc/<tag>/` |
|
|
||||||
| Main Pages Deploy | Push to `main` | Publish stable docs to root |
|
|
||||||
|
|
||||||
—
|
|
||||||
|
|
||||||
## Why both release workflows trigger on `v*`
|
|
||||||
|
|
||||||
GitHub Actions does **not** support negative tag filters.
|
|
||||||
Because of this:
|
|
||||||
|
|
||||||
- Both release and prerelease workflows trigger on `v*`
|
|
||||||
- Each workflow uses a job-level `if:` to decide whether it should run
|
|
||||||
|
|
||||||
This ensures:
|
|
||||||
- Symmetry between workflows
|
|
||||||
- Clear, explicit logic
|
|
||||||
- No reliance on fragile glob patterns
|
|
||||||
|
|
||||||
—
|
|
||||||
|
|
||||||
## Safety Checks (Intentional Redundancy)
|
|
||||||
|
|
||||||
Releases and deployments are guarded by **multiple independent checks**:
|
|
||||||
|
|
||||||
1. **Tag name checks**
|
|
||||||
- Release vs prerelease is decided by presence of `-rc`
|
|
||||||
|
|
||||||
2. **Branch ancestry checks**
|
|
||||||
- Final releases must be reachable from `main`
|
|
||||||
- RC releases must be reachable from `release-candidate`
|
|
||||||
|
|
||||||
3. **Strict MkDocs CI**
|
|
||||||
- Controlled by `MKDOCS_STRICT` (defaults to true)
|
|
||||||
|
|
||||||
4. **Environment guards**
|
|
||||||
- Releases are skipped when running under `act`
|
|
||||||
- Deployments only run on GitHub, never on Gitea or act
|
|
||||||
|
|
||||||
This redundancy is intentional.
|
|
||||||
|
|
||||||
—
|
|
||||||
|
|
||||||
## Environment Variables
|
|
||||||
|
|
||||||
These variables control CI and release behavior:
|
|
||||||
|
|
||||||
| Variable | Purpose |
|
|
||||||
|———|———|
|
|
||||||
| `MKDOCS_STRICT` | Enable/disable strict MkDocs builds |
|
|
||||||
| `ENABLE_RELEASE` | Master switch for releases |
|
|
||||||
| `ENABLE_DEPLOY` | Master switch for deployments |
|
|
||||||
| `CI_PROVIDER` | `github`, `gitea`, or `act` |
|
|
||||||
|
|
||||||
Defaults are defined in repository settings.
|
|
||||||
|
|
||||||
—
|
|
||||||
|
|
||||||
## Common Mistakes (and What Happens)
|
|
||||||
|
|
||||||
- Tagging `v2026.1.0` on a non-`main` commit
|
|
||||||
→ Release workflow runs but fails early with a clear error
|
|
||||||
|
|
||||||
- Tagging `v2026.1.0-rc.1` on `main`
|
|
||||||
→ Prerelease workflow runs but branch check fails
|
|
||||||
|
|
||||||
- Running workflows locally with `act`
|
|
||||||
→ Builds run, but no release or deploy occurs
|
|
||||||
|
|
||||||
—
|
|
||||||
|
|
||||||
## Changing This Process
|
|
||||||
|
|
||||||
If you change:
|
|
||||||
- Tag patterns
|
|
||||||
- Branch names
|
|
||||||
- Workflow triggers
|
|
||||||
- CI guard logic
|
|
||||||
|
|
||||||
Update this document **and** the workflows together.
|
|
||||||
|
|
||||||
This process is designed to be boring, explicit, and safe.
|
|
||||||
429
cmba-bylaws.md
429
cmba-bylaws.md
@@ -1,429 +0,0 @@
|
|||||||
# Bylaws
|
|
||||||
## Definition; Amendments
|
|
||||||
These By-Laws shall stand as the official rules of the CMBA.
|
|
||||||
All Association members shall abide by and are subject to, without exception, all rules and regulations as outlined in the Constitution and By-Laws as well as the authority of the Association President, in accordance with [Subjectivity](#subjectivity)
|
|
||||||
|
|
||||||
### Amending the By-Laws
|
|
||||||
By-Laws may be amended, removed, or added by an affirmative vote of two-thirds of the Association members present at the time of the vote.
|
|
||||||
|
|
||||||
## League Membership and Fees
|
|
||||||
|
|
||||||
### Standards
|
|
||||||
The following standards shall apply for consideration for membership by franchises in the CMBA.
|
|
||||||
|
|
||||||
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 Association President 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.
|
|
||||||
|
|
||||||
### Acceptance Fee
|
|
||||||
A franchise fee of fifty dollars ($50.00) shall be paid to the Association Treasurer upon acceptance into the Association.
|
|
||||||
|
|
||||||
### Annual Fee
|
|
||||||
All Association members shall pay an annual fee. Per [Finances](#finances), this fee shall be determined by the Association President.
|
|
||||||
|
|
||||||
### Payment of Fees
|
|
||||||
All Association members must have all fees paid by a date set by the President.
|
|
||||||
|
|
||||||
1. Penalty for late payment shall be ten dollars ($10.00) per week for no longer than five (5) weeks.
|
|
||||||
1. Members in violation of the above shall be placed on temporary suspension for a period of two (2) weeks.
|
|
||||||
1. Members who have not paid outstanding fees by the end of the two week suspension shall be placed on indefinite suspension until all fees are paid.
|
|
||||||
|
|
||||||
### List of Fees
|
|
||||||
The annual League fee shall consist of, but are not limited to the following: Forfeit fee; Performance bond; Field fees; Prize Money Fund; Tournament fees; and any other costs incurred by the League.
|
|
||||||
|
|
||||||
### Fines
|
|
||||||
Any Association franchise or player may be susceptible to a fine by the President or Rules Committee as applicable for conduct unbecoming of a representative of the League and for any violation of this Constitution and its By-Laws.
|
|
||||||
|
|
||||||
1. Fines shall be determined by the President or committee as applicable and may not exceed fifty dollars ($50.00).
|
|
||||||
1. Fines must be paid in full by a date specified by the President. Teams with outstanding fines will be considered not in good standing as defined in Subsection.
|
|
||||||
|
|
||||||
### Leave of Absence
|
|
||||||
Members in good standing may be granted a leave of absence and are entitled to all privileges as outlined in [Classification; Standing](#classification-standing) of the Constitution.
|
|
||||||
|
|
||||||
1. Members in good standing on leave for more than two (2) years must reapply for membership.
|
|
||||||
|
|
||||||
### Temporary Suspension
|
|
||||||
An Association franchise may be placed on temporary suspension by the President and are subject to rules set forth in [Classification; Standing](#classification-standing).
|
|
||||||
|
|
||||||
### Indefinite Suspension
|
|
||||||
An Association franchise may be placed on indefinite suspension by the President and subject to rules set forth in [Classification; Standing](#classification-standing). Violations that may result in indefinite suspension are as follows:
|
|
||||||
|
|
||||||
1. Conduct detrimental to the objectives of the Association.
|
|
||||||
1. Two (2) forfeits of a game in one season. A team that is indefinitely suspended two consecutive seasons for violation of this subsection shall not be permitted to reapply for reinstatement unless a change in management is presented to the league. The new management must be approved by the Association President and ratified by a majority of the association members.
|
|
||||||
1. Tampering with players on the roster of another member franchise. Tampering shall be defined as the deliberate solicitation, without consent, by one Association member of a player who has made at least an oral commitment to play for another Association franchise.
|
|
||||||
1. Consumption of alcoholic beverages on or in close proximity to the playing fields as detailed in [League Standings](#league-standings)
|
|
||||||
1. Violation of any written policies set forth by the issuer of any permits for field use by the Association.
|
|
||||||
1. Failure to comply with any of the stated codes of conduct as set forth in this document.
|
|
||||||
|
|
||||||
### Reinstatement
|
|
||||||
An indefinitely suspended franchise may be reinstated by the President upon the resolution of any outstanding violations and the satisfactory guarantee of no further violations.
|
|
||||||
|
|
||||||
### Additional Fees
|
|
||||||
The President may request additional fees to cover any costs that exceed the amounts originally budgeted for by the League.
|
|
||||||
|
|
||||||
### Fees to the President
|
|
||||||
In the event the President is a franchise holder, the Rules and Competition Committee may levy any and all appropriate fines for infractions of this Constitution and By-Laws by his franchise.
|
|
||||||
|
|
||||||
### Outside Leagues
|
|
||||||
Teams may not play in leagues outside of the CMBA, unless that league has a formal agreement with the CMBA that its playing schedule does not conflict with regularly scheduled CMBA games or playoffs.
|
|
||||||
|
|
||||||
## Officer Duties
|
|
||||||
As defined in [Officers](#officers), the officers of the Association are the President, Treasurer, Rules and Competition Committee member.
|
|
||||||
|
|
||||||
### President
|
|
||||||
The duties and powers of the President are as follows:
|
|
||||||
|
|
||||||
1. Shall serve a life term or until voluntary relinquishment of the office.
|
|
||||||
1. Preside over all League meetings.
|
|
||||||
1. Official spokesman to news media and others whenever the Association’s point of view is needed.
|
|
||||||
1. Call all regular and Rules and Competition Committee meetings and assign the date and place thereof.
|
|
||||||
1. Appoint persons to positions as he deems necessary or until elections are held.
|
|
||||||
1. Assess fines and punishments as he deems necessary with just cause.
|
|
||||||
1. Calculate the Association’s budget.
|
|
||||||
1. Gather all information regarding protests.
|
|
||||||
1. Maintain a league website to keep managers and players apprised of the state of the league.
|
|
||||||
1. Judge and take action on all circumstances not covered in the Constitution and By-Laws in good faith and furtherance of the stated goals and principles of the league.
|
|
||||||
1. Interpret the rules and by-laws of this Constitution and make appropriate decisions thereof.
|
|
||||||
1. Decisions of the President may be appealed to the Rules and Competition Committee. Appeals must be presented in writing and must contain specific grounds for the appeal.
|
|
||||||
|
|
||||||
### Treasurer
|
|
||||||
The Treasurer shall be responsible for the League’s monetary assets and its proper handling and distribution as ordered by the league and its President.
|
|
||||||
|
|
||||||
### Rules and Competition Committee
|
|
||||||
The Rules and Competition Committee, to be made up of the President and two (2) appointed franchise holders. An alternate member shall be appointed by the president if a committee member is unavailable or conflicted (i.e. the matter under consideration involves a player of the committee member’s team or the committee member), shall meet and take action concerning:
|
|
||||||
|
|
||||||
1. Official protests
|
|
||||||
1. Disciplinary matters referred to the committee pursuant to [Standings And Postseason](#standings-and-postseason)
|
|
||||||
1. Any decision of the President that has been officially appealed.
|
|
||||||
|
|
||||||
### Compensation
|
|
||||||
All officers other than the Rules Committee members, shall be granted compensation for time and expenses.
|
|
||||||
|
|
||||||
## Meetings and Voting
|
|
||||||
Per [Annual Meeting](#annual-meeting), the Association shall hold an annual meeting. In addition, per 4.2, the President may call additional meetings.
|
|
||||||
|
|
||||||
### Voting Privileges
|
|
||||||
Each franchise with voting privileges as specified in [Classification; Standing](#classification-standing) shall have one (1) vote at league meetings, regardless of the number of representatives the franchise has sent to the meeting.
|
|
||||||
|
|
||||||
### President’s Role
|
|
||||||
The President shall chair the meeting. If the President is also a franchise holder, he must designate another person from his franchise to represent the team at league meetings. The President can only vote in the event of a tie vote among the members present at the meeting.
|
|
||||||
|
|
||||||
### Voting Decisions
|
|
||||||
A 2/3 vote is necessary to:
|
|
||||||
|
|
||||||
1. Amend the Constitution, per [Amending the Constitution](#amending-the-constitution)
|
|
||||||
1. Amend the Bylaws, per [Amending The By Laws](#amending-the-by-laws)
|
|
||||||
1. Remove an Officer.
|
|
||||||
1. Expel a team or player for violations of rules set forth in the Constitution or By-laws.
|
|
||||||
|
|
||||||
Any decision not listed above shall be decided by simple majority vote.
|
|
||||||
|
|
||||||
### 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.
|
|
||||||
|
|
||||||
## 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 Association, regardless of the makeup of the roster, shall not be allowed to use the name of any existing Association team. Teams from other recognized Associations or Leagues entering the CMBA shall be allowed to use any team name provided it was the recognized existing name of the team prior to its membership in the Association. Changes in team names shall not affect a team’s status in the Association in any way provided the original recognized Manager is the entrant of the team.
|
|
||||||
|
|
||||||
### Uniform
|
|
||||||
All players must be in uniform (bearing the team’s name as represented to the league) by the team’s 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.
|
|
||||||
|
|
||||||
1. This deadline may be extended by the President at his discretion following a written petition by the team that shows a just and reasonable cause for extension, and evidence of a good faith effort to meet the deadline.
|
|
||||||
1. This rule applies to any players legally added to the roster after the stated deadline.
|
|
||||||
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 team’s uniform, however, the Association 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 Association. The Manager has the ultimate responsibility for the team’s compliance with all by-laws 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 Association.
|
|
||||||
|
|
||||||
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 President.
|
|
||||||
|
|
||||||
### 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 Association President, the Manager in question, and the parties seeking a change in management.
|
|
||||||
1. The President 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 Association and President 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
|
|
||||||
|
|
||||||
### Roster Deadline; Roster Size
|
|
||||||
Prior to June 1, each team has an “open roster.” Association teams must submit a roster of their players to the President no later than June 1 of each year. Any team that does not submit its roster to the President by June 1 as required by this [Roster Deadline; Roster Size](#roster-deadline-roster-size) and in accordance with the information requirements in [Roster Information Requirements](#roster-information-requirements) shall be deemed not in good standing. Consequences of not being in good standing are defined in [Classification; Standing](#classification-standing) of the Constitution. This submitted roster plus any and all legal roster transactions per [Roster Transactions](#roster-transactions), shall be considered official. Players not on a team’s official roster are ineligible for play, except where specifically noted in this [Teams And Managers](#teams-and-managers).
|
|
||||||
Each team’s roster must contain a minimum of sixteen (16) players and shall not exceed twenty-six (26) players, in each case, excluding non-playing managers and coaches.
|
|
||||||
|
|
||||||
### Roster Information Requirements
|
|
||||||
A team’s rosters as submitted to the President on or before June 1 shall contain the following information for each rostered player: name, age, bats/throws, position(s),uniform number, and face photo. Rosters shall be submitted in Excel or via Google sheets (or similar editable spreadsheet.)
|
|
||||||
|
|
||||||
### Roster Transactions
|
|
||||||
Teams may add a total of five (5) players to the roster after the June 1 roster submission deadline. The total number of players on a team still may not exceed twenty-six (26). In order to add players between June 1 and July 1 but not exceed the 26 player limit, a team may drop players who were rostered on June 1. No players may be added after July 1, except as set forth below.
|
|
||||||
After July 1, upon request to the Rules and Competition Committee, a team may add a player if (i) the team’s roster has fallen (or, upon the removal of players “missing in action” as described below, will fall) below the 16 player minimum and (ii) doing so will, in the good faith determination of the Rules and Competition Committee, prevent the team from forfeiting games.
|
|
||||||
In order for a team to declare a player “missing in action” after July 1, (i) the player shall have (a) failed to appear at all of the team’s games occurring prior to such request or (b) suffered a season-ending injury after June 1 and (ii) the team must drop the player from its roster.
|
|
||||||
A team may drop players at any time as long as the team’s roster does not fall below the 16 player minimum.
|
|
||||||
Any and all roster changes shall be submitted to the President and satisfy the information requirements in [Roster Information Requirements](#roster-information-requirements). Roster changes shall be effective as of the first pitch of the team’s first regularly scheduled game after the updated roster is submitted.
|
|
||||||
|
|
||||||
### Alumni
|
|
||||||
If a team would otherwise be required to forfeit or technically forfeit a game after June 1 due to a lack of eligible players in attendance, the team can use one (but not more than one) of its former players (“alumni”) in that game. The team’s manager shall inform the opposing team’s manager and the President as soon as possible (and in no event later than the first pitch) of his team’s use of an alumni player and will provide to the opposing team’s manager and the President with the alumni player’s name, age, bats/throws, position and uniform number. Alumni players are not eligible to play in the playoffs.
|
|
||||||
|
|
||||||
### Eligible Players
|
|
||||||
Eligible players must be of at least eighteen (18) years of age by the date of the teams first +game. No player may play for more than one team in a season (either before or after June 1).
|
|
||||||
A team that uses an ineligible player, per the rules in this [Team Rosters Players And Eligibility](#team-rosters-players-and-eligibility), will be deemed to have forfeited any and all games in which the illegal player(s) participated.
|
|
||||||
|
|
||||||
### Postseason Player Eligibility
|
|
||||||
Players must appear in at least five (5) games during the regular season in order to be eligible for postseason play. Upon request to the Rules and Competition Committee, exceptions may be made for players with long term injuries.
|
|
||||||
|
|
||||||
### Player Responsibility for Team Fees
|
|
||||||
All players in the CMBA are expected to pay their team fees. Players will not be allowed to switch teams within the association unless or until any and all debts are paid in full.
|
|
||||||
|
|
||||||
### Free Agents
|
|
||||||
A player must inform the League President and his manager no later than February 15 of the upcoming season if he wishes to leave his team and become a free agent. After this he is free to play for another team in the CMBA. A manager may waive this deadline for an individual player at the manager’s discretion. If the player fails to notify as specified, that player shall be disqualified from playing on another CMBA team for that season.
|
|
||||||
|
|
||||||
## General Play
|
|
||||||
|
|
||||||
### Playing Rules
|
|
||||||
Except where specified in this document, the CMBA shall follow the Official Baseball Rules of Major League Baseball.
|
|
||||||
|
|
||||||
The CMBA shall not incorporate the following rules of Major League Baseball:
|
|
||||||
|
|
||||||
- Rule 4.03(c)(4) specifying limitations on when a position player can pitch.
|
|
||||||
- Rule 5.02(c) specifying limitations on infielder placement.
|
|
||||||
- Rule 7.01(b) incorporating the parameters of the Extra Innings Rule, which includes starting each half-inning following the last regulation inning with a runner on second base.
|
|
||||||
- Rule 5.10(m)(1) limiting the number of mound visits.
|
|
||||||
- Rule 5.10(g) requiring that pitchers must face at least three batters.
|
|
||||||
- Rules 5.07(c) specifying time limits on pitchers and batters. Limitations on pitcher disengagements (i.e. pick-offs) shall also not be incorporated.
|
|
||||||
|
|
||||||
|
|
||||||
### Regulation Games
|
|
||||||
Games played under the auspices of both recognized Managers of the participating teams shall count as official. A regulation game is defined as follows
|
|
||||||
|
|
||||||
1. A regulation game consists of seven (7) innings, unless extended because of a tie score, or shortened because the home team needs none of its half of the seventh inning or only a fraction of it, or because the umpire calls the game in accordance with [Reasons for a Game to be Called](#reasons-for-a-game-to-be-called).
|
|
||||||
1. If the score is tied after seven completed innings play shall continue until (1) the visiting team has scored more total runs than the home team at the end of a completed inning, or (2) the home team scores the winning run in an uncompleted inning. If a regulation game is called with the score tied, it shall remain a tie game.
|
|
||||||
1. If a game is called by the umpire, per [Reasons for a Game to be Called](#reasons-for-a-game-to-be-called), it is a regulation (official) game:
|
|
||||||
1. If four innings have been completed;
|
|
||||||
1. If the home team has scored more runs in four or three and a fraction half-innings than the visiting team has scored in four completed half-innings;
|
|
||||||
1. If the home team scores one or more runs in its half of the fourth inning to tie the score.
|
|
||||||
|
|
||||||
Postseason games are exempt from this definition as specified in [Completion of Playoff Games](#completion-of-playoff-games).
|
|
||||||
1. Slaughter Rule: The game shall be ended and the leading team declared the winner:
|
|
||||||
1. If after 4 complete innings the visiting team is ahead in the score by 15 or more runs, or if after 3½ innings the home team is ahead by the same, the game will be ended and the leading team declared the winner.
|
|
||||||
1. If after 5 or more complete innings the visiting team is ahead in the score by 12 or more runs, or if after 4½ innings or more the home team is ahead by the same, the game will be ended and the leading team declared the winner.
|
|
||||||
|
|
||||||
The Slaughter Rule is applicable for the playoffs as specified in [Completion of Playoff Games](#completion-of-playoff-games).
|
|
||||||
1. If a game is called after 3 complete innings and one team is ahead by 10 or more runs, the game will be ended and the leading team declared the winner.
|
|
||||||
|
|
||||||
Postseason games are exempt from this definition as specified in [Completion of Playoff Games](#completion-of-playoff-games).
|
|
||||||
|
|
||||||
1. If a game is postponed or otherwise called before it has become a regulation game, the umpire-in-chief shall declare it “No Game,” meaning the game must be restarted (not resumed) at a later date.
|
|
||||||
|
|
||||||
Postseason games are exempt from this definition as specified in [Completion of Playoff Games](#completion-of-playoff-games).
|
|
||||||
|
|
||||||
### Reasons for a Game to be Called
|
|
||||||
An umpire, in their discretion, may declare a game called if
|
|
||||||
|
|
||||||
1. Darkness prevents further safe play.
|
|
||||||
1. Rain, lightning, or other inclement weather precludes safe conditions.
|
|
||||||
1. A new inning would start after 8:15 p.m at a field without lights.
|
|
||||||
1. Local laws or field rules (e.g. lightning detector) prevent continuation of the game.
|
|
||||||
1. Other circumstances prevent further safe play. The Rules and Competition Committee may rule on any forfeit or loss of points as applicable.
|
|
||||||
|
|
||||||
### Game Time
|
|
||||||
The starting time for all weeknight games shall be 5:50 p.m. for fields without lights. Starting times for games played at lighted fields and on the weekends shall be determined by the League and may legally begin after 6:30PM. Forfeit time shall be 20 minutes after the scheduled starting time.
|
|
||||||
|
|
||||||
### Player Uniforms
|
|
||||||
All players must be in proper uniform in order to be eligible to participate in games, as specified in [Uniform](#uniform).
|
|
||||||
|
|
||||||
### Minimum Number of Players
|
|
||||||
Teams must start the game at the scheduled starting time if they have at least eight (8) players present. A team may not wait until forfeit time for players to arrive, the game must begin as soon as a team has 8 players present. If a ninth player does not arrive or arrives after forfeit time, the team shall be in technical forfeit, as defined in [Forfeits](#forfeits).
|
|
||||||
|
|
||||||
1. In the event a team starts a game with eight (8) players, the ninth spot in the batting order shall be considered an out recorded to the pitcher. A team may insert a ninth player in the vacant ninth spot after the start of play.
|
|
||||||
1. A team may begin a game with eight (8) players up to two (2) times in one season. A team that fails to field nine (9) players at the start of the game after receiving 2 (two) prior technical forfeits shall forfeit all subsequent games.
|
|
||||||
1. A team in technical forfeit shall remain in technical forfeit, regardless of the number of players with which it finished the game.
|
|
||||||
A team may finish the game a player short, that is one (1) player less than they started the game with (eight (8) players for a nine (9) man line-up, nine (9) players for a ten (10) man), provided the team does not fall below this minimum.
|
|
||||||
|
|
||||||
1. The vacated spot in the batting order shall be considered an automatic out.
|
|
||||||
1. Should a team fall below the minimum, the game is terminated and the team loses by forfeit.
|
|
||||||
|
|
||||||
### Player Injuries
|
|
||||||
Should a player suffer a debilitating injury during the game and cannot continue, and a team has no more eligible players on its bench, a team can use a player that was removed from the game to replace him. This replacement player must be the first player removed from the game, and if this player is unavailable the next player is used (and so on). If no reserve is present, the vacated spot in the lineup is skipped and all batters move up accordingly, with no penalty to the affected team.
|
|
||||||
|
|
||||||
1. If a substantial case can be made that a team skipped a spot with the intent to gain a competitive advantage, a protest by the opposing team may retroactively be ruled as a forfeit.
|
|
||||||
|
|
||||||
### Equipment
|
|
||||||
|
|
||||||
1. Baseballs: Only Major League regulation balls will be allowed for game play. Accepted brands and ball types include, but are not limited to, the Rawlings RO series, Wilson A1000 series, and Diamond D-1 series. The home team must supply two (2) and the visitors one (1) ball at the start of each game. Additional balls shall be supplied alternately by each team beginning with the visiting team. Teams that supply non-approved balls shall forfeit the game.
|
|
||||||
1. Bats: All bats must be wood or BBCOR certified. Use of an illegal bat shall be subject to the Major League rules that govern this area.
|
|
||||||
1. Bases, home plate, and pitching rubber: All teams are expected to have a set of bases, a home plate, and a pitching rubber. These items shall conform to Major League Baseball specifications. Items conforming to 2022 specifications shall also be considered legal.
|
|
||||||
|
|
||||||
The home team shall be responsible for accurately setting up the bases, and if necessary, home plate and the pitching rubber. Should the home team fail to have these necessities by the start of the game, they will lose by forfeit. The visiting team can lend the equipment, although they are not required to do so.
|
|
||||||
|
|
||||||
### Field Maintenance
|
|
||||||
All teams are responsible for the maintenance and cleanup of the field and dugout areas after a game. Both teams must fill in all infield, batter’s box, and pitching mound holes. Additionally, both teams must have adequate equipment on hand for field maintenance. Teams who repeatedly fail to do proper post-game maintenance shall be fined.
|
|
||||||
|
|
||||||
### Payment of Umpires
|
|
||||||
Umpires are to be paid on the field promptly upon request.
|
|
||||||
|
|
||||||
### Designated Hitter
|
|
||||||
The Association shall follow the Major League designated hitter rule at all times, with the exception that a team may designate a D.H. for any position on the field.
|
|
||||||
|
|
||||||
### Designated Runner
|
|
||||||
The Association shall elect to use a designated runner rule, similar to the designated hitter rule.
|
|
||||||
|
|
||||||
1. A runner may be designated to run for a specified player in any game without otherwise affecting the status of the player(s) in the game.
|
|
||||||
1. The designated runner must take the place of the specified player whenever that player reaches base or the designated runner.
|
|
||||||
1. If the specified player is substituted, this substitute player may inherit the designated runner.
|
|
||||||
1. Designated runners are subject to the same substitution rules as the designated hitter as defined in [Designated Hitter](#designated-hitter)
|
|
||||||
1. Teams with no eligible players remaining on the bench (i.e. all players are in the batting lineup) may elect to use the player that made the last out as the designated runner.
|
|
||||||
|
|
||||||
### Extra Hitter
|
|
||||||
Prior to the start of the game a team may choose to play an extra hitter (EH). If the team uses this option, the following conditions apply:
|
|
||||||
|
|
||||||
1. An EH shall only bat. They cannot take a position in the field as a tenth fielder.
|
|
||||||
1. The EH shall be treated like any other position in the field. He can be substituted for, switch positions, or anything else that a position player can do.
|
|
||||||
1. There is no limit to the number of extra hitters a team may elect to use, provided the names and numbers of these players are included in the lineup exchanged before the game.
|
|
||||||
|
|
||||||
### Courtesy Runner
|
|
||||||
Teams may use courtesy runners for pitchers and catchers at any time. It is not mandatory to do so (speed-up rule), but the umpire(s) are required to keep the game moving expeditiously.
|
|
||||||
|
|
||||||
1. Courtesy runners for pitchers and catchers cannot be, or have been, in the game at any time other than as a courtesy runner. Teams with no eligible players remaining on the bench must use the first player taken out of the game or the player that made the last out.
|
|
||||||
1. The pitcher or catcher must play at least one (1) defensive out to be eligible for a courtesy runner unless they reach base in the first inning as a member of the visiting team.
|
|
||||||
|
|
||||||
### Batting Lineup
|
|
||||||
The batting lineup shall consist of at minimum 9 slots (or 8 adhering to section [Minimum Number of Players](#minimum-number-of-players)). Additional slots may be used without limit (see [Extra Hitter](#extra-hitter)). Any player may be substituted in their batting lineup slot by using a pinch-hitter or pinch-runner for that player. The original player may not re-enter the game as a hitter.
|
|
||||||
|
|
||||||
### A/B Batting Lineup Slots
|
|
||||||
In regular season play, any batting lineup slot may be optionally designated as an "A/B" batting slot, meaning it is shared between two players adhering to the following rules:
|
|
||||||
|
|
||||||
1. The batter designated "A" shall bat the first time through the lineup and the batter designated "B" batting the second time through the lineup, continuing in alternating fashion for the remainder of the game.
|
|
||||||
2. Rules for the substitutions of either "A" or "B" batter are the same as any other batting lineup slot.
|
|
||||||
3. In the event of injury of either player when there are no reserve players available, the uninjured player shall bat in place of the injured player without penalty.
|
|
||||||
|
|
||||||
In postseason play, the A/B batting slot rule defined above shall not be applicable.
|
|
||||||
|
|
||||||
### Defensive Lineup
|
|
||||||
In regular season play, the defensive line-up is independent of the batting lineup and substitutions shall be allowed as follows:
|
|
||||||
|
|
||||||
1. Any player may be freely substituted in the defensive line-up at any time, without affecting the players’ in the batting line-up. Players may enter, exit, and re-enter the game in the defensive line-up without limitation.
|
|
||||||
|
|
||||||
In postseason play, the free defensive substitution rule defined above shall not be applicable and substitutions shall be made in accordance to applicable CMBA and MLB rules.
|
|
||||||
|
|
||||||
### Field Status
|
|
||||||
The home team shall be responsible for checking the status of the field in the event of rain. The home team must report the status of the field to the President and the assigned umpire no later than 2:00 pm for a weeknight game, and at least 2 hrs. before a weekend game. As a courtesy, the home team should also notify the visiting manager, but the visiting manager may also contact the President for information regarding the status of the field.
|
|
||||||
|
|
||||||
1. Any manager who knowingly falsifies information regarding the status of the field to avoid playing the game will be fined and the team will forfeit the game.
|
|
||||||
|
|
||||||
### Rescheduling
|
|
||||||
In the discretion of the president, a game may be postponed due to extraordinary circumstances. In the event a game is to be postponed, the president shall alert the managers in an expedient manner.
|
|
||||||
Managers from both teams must contact the President to confirm any changes that they wish to make to the official schedule. Teams may not change times, places, or dates of games without the consent of the President. Any such games played shall be considered unofficial.
|
|
||||||
Any postponed or suspended games must be rescheduled in a timely fashion by the managers of that game for the next possible date. If managers cannot come to an agreement in a timely fashion, the President may reschedule the game.
|
|
||||||
|
|
||||||
### Notification of Results
|
|
||||||
The winning team shall be responsible for notifying the President of the score of the game no later than 10:00 AM the day after the game was played via text message, email, or telephone call.
|
|
||||||
|
|
||||||
### Uncompleted Games
|
|
||||||
All games not completed by the end of the regular season shall count as losses for both teams unless a team deliberately attempts to avoid playing a sanctioned game. The team that was willing to play the game will be judged the forfeit winner if so ruled by the President.
|
|
||||||
|
|
||||||
### Substitution of an Umpire
|
|
||||||
Should a league sanctioned umpire fail to appear at game time, the teams can choose to play the game with an umpire(s) of mutual choosing. The President needs to be informed by both teams prior to the start of the game to make it official.
|
|
||||||
|
|
||||||
### Collisions
|
|
||||||
NO COLLISIONS ARE ALLOWED, UNLESS THE CONTACT RESULTS FROM A SLIDE. It is the base runners responsibility to slide or avoid contact. Fielders and runners must abide by Official Baseball Rules regarding Interference, Obstruction, and Catcher Collisions..
|
|
||||||
Unless the umpire rules that the contact was incidental or the result of Obstruction by the fielder, the runner shall be called out, the ball declared dead and the runner automatically ejected from the game. Per [Flagrant Collisions](#flagrant-collisions). if the collision is determined by the umpire to be flagrant the player may be subject to the further penalty as defined in that section.
|
|
||||||
|
|
||||||
### Umpire Disputes
|
|
||||||
Discussion of a disputed umpires call shall be limited to the managers, base coaches and the “aggrieved player. No player or other coach (third party) shall be allowed to leave the dugout or his defensive position to join in. The penalty for violating this rule shall be the immediate ejection from the game.
|
|
||||||
|
|
||||||
## Protest and Forfeits
|
|
||||||
|
|
||||||
### Timeframe and Reporting
|
|
||||||
All protests must be filed with the President within 48 hours of the alleged infraction and on the League supplied form. All requested information must be accurately reported. Any manager who knowingly falsifies information on the protest form will be fined and suspended as determined by the President, and that manager’s team will forfeit the game.
|
|
||||||
|
|
||||||
### Ground for Protest
|
|
||||||
Protests may only be made on the grounds of a violation of a rule stated in this Constitution and its By-Laws or in violation of a stated Major League Baseball rule. Protests may not, under any circumstances, be based on the judgment of an umpire’s call. The protesting team’s manager must notify the umpire of the protest at the time the violation occurred. Managers shall notify the league president at the earliest possible time after the game and provide umpire signature as proof of notification.
|
|
||||||
|
|
||||||
### Ruling
|
|
||||||
Upon the filing of a protest with the President, the President shall call a meeting of the Rules and Competition Committee at the earliest possible date. Judgment regarding the merit of the protest shall be made after deliberation.
|
|
||||||
|
|
||||||
### Notification
|
|
||||||
Teams that win games by forfeit must notify the President that very day.
|
|
||||||
|
|
||||||
### Umpire Payment
|
|
||||||
Forfeiting teams must pay, at the time of the forfeit, the full cost of the umpire(s), and shall be considered not in good standing as defined in [Classification; Standing](#classification-standing). Teams will be considered not in good standing until payment is made. In the event a team is unable to pay the umpire at the proper time, the team’s forfeit fee will be used to cover initial forfeits. The cost of additional forfeits will be paid by the team.
|
|
||||||
|
|
||||||
### Forfeits
|
|
||||||
Should a team forfeit a game shall lose 2 points in the standings.
|
|
||||||
Forfeiting teams must pay, at the time of the forfeit, the full cost of the umpire(s). Until payment is made, a forfeiting team shall be considered not in good standing as defined in Subsection.
|
|
||||||
Should a team forfeit 2 games in a season they will be banned from playing games for the remainder of the season and playoffs and placed on indefinite suspension, not in good standing, as defined in Subsection of the constitution. Games that included or would have included this team shall be subject to the following:
|
|
||||||
|
|
||||||
1. All previous games played by the indefinitely suspended team shall count in the official standings.
|
|
||||||
1. All subsequent games shall be recorded as a loss for the suspended team and a win for the scheduled opponent.
|
|
||||||
|
|
||||||
### Technical forfeit
|
|
||||||
A team subject to technical forfeit shall be awarded only one point for a victory. A team may receive 2 technical forfeits per season. After reaching this limit, subsequent technical forfeits shall be converted to forfeits, as defined in [Equipment](#equipment).
|
|
||||||
|
|
||||||
## Standings and Postseason
|
|
||||||
|
|
||||||
### Website
|
|
||||||
The President shall maintain a league website that includes all official scores and league standings. Additional pertinent information will be provided.
|
|
||||||
|
|
||||||
### League Standings
|
|
||||||
The Association shall use a point system to determine the standings. A team is awarded:
|
|
||||||
|
|
||||||
1. Two (2) points for a win (including a win against a team in technical forfeit)
|
|
||||||
1. One (1) point for a win while in technical forfeit (see [Forfeits](#forfeits))
|
|
||||||
1. One (1) point for a tie game
|
|
||||||
1. Zero (0) points for a loss
|
|
||||||
1. Minus two (-2) points for a loss by forfeit (see [Forfeits](#forfeits)).
|
|
||||||
|
|
||||||
### Standings Tie-breakers
|
|
||||||
In the event two teams finish the regular season in a tie for a position, the following tie-breaking procedure will take effect:
|
|
||||||
|
|
||||||
1. Record in head-to-head competition.
|
|
||||||
1. Record within the division (if applicable).
|
|
||||||
1. Least runs allowed for the season.
|
|
||||||
1. Coin toss, performed by the president with a witness.
|
|
||||||
|
|
||||||
### Postseason Format
|
|
||||||
The postseason format shall be determined by annual vote.
|
|
||||||
|
|
||||||
### Prizes and Awards
|
|
||||||
Playoff prizes and awards, if any, shall be determined by the membership of the league.
|
|
||||||
|
|
||||||
### Playoff Umpire Selection
|
|
||||||
For the playoffs, each team will be granted the ability to exclude one (1) particular umpire from participating in said teams series. The name of this umpire shall be submitted to the chief umpire as soon as possible prior to the series. This umpire “veto” will be binding UNLESS the chief umpire cannot find any other umpire who can work any game in this series.
|
|
||||||
|
|
||||||
### Completion of Playoff Games
|
|
||||||
All playoff games must be played to completion. If a playoff game is suspended for any reason, the game must be finished at a later date declared by the president. This game is declared suspended, and regardless of what inning or circumstance, the game will be continued from the point in the game when it was suspended. The “Slaughter Rule” is applicable for the playoffs (see [Regulation Games](#regulation-games)).
|
|
||||||
|
|
||||||
## Sportsmanship and Prohibited Conduct
|
|
||||||
All association members are expected to engage in a sportsmanlike and mutually respectful behavior. Any manager or the chief umpire may request that the rules and competition committee review the specific actions of another player, coach, manager or team. The rules and competition committee shall review, and in its discretion, determine the appropriate disciplinary action to be taken, if any. Disciplinary actions include a written warning, fines, temporary suspension, and banishment from the association. The committee should take under consideration repeat offenses. The president shall enforce any discipline determined by the committee.
|
|
||||||
|
|
||||||
### Fighting
|
|
||||||
Fighting or any physical altercation shall not be tolerated in the CMBA. Players cannot leave the bench or their positions during a fight for any reason; the managers, the on-the-field coaches and umpire(s) shall be responsible for restoring order. Specific penalties for violations are listed below.
|
|
||||||
|
|
||||||
1. Any player who instigates or initiates an on-field fight shall be fined and suspended from league play for no less than one season
|
|
||||||
1. Any player or coach who participates in a fight shall be suspended for three games and fined $50.00.
|
|
||||||
|
|
||||||
### Assault of an Umpire
|
|
||||||
Any player or coach who physically assaults an umpire will be permanently banished from the league. He may also be arrested if the umpire chooses to press charges.
|
|
||||||
|
|
||||||
### Substances
|
|
||||||
|
|
||||||
1. Smoking: Smoking shall be prohibited in the dugout and on the playing field during the game.
|
|
||||||
1. Alcohol: Alcoholic beverages are prohibited on or in the close proximity of a team’s bench. Teams in violation of this rule will forfeit the game and be automatically fined and temporarily suspended. Offending players will be fined and suspended for two (2) weeks from the date of the infraction. A second violation of this rule shall result in the automatic expulsion of the team from the Association. Managers are responsible for the enforcement of this rule and are accountable for any violations.
|
|
||||||
1. Additionally, all teams and players are subject to any and all additional laws, rules, or regulations regarding substances as stated by locality or the issuer of the field permit
|
|
||||||
|
|
||||||
### Flagrant Collisions
|
|
||||||
A flagrant collision is defined as an intentional act to forcibly collide with a fielder. A player who is ejected for a flagrant collision will be suspended for three (3) games and fined $30. A second offense (not necessarily in the same season) will result in the player being suspended for the remainder of that season (including playoffs). A third offense will result in permanent banishment from the league.
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
# Constitution {.unnumbered}
|
|
||||||
|
|
||||||
## Name; Objective
|
|
||||||
|
|
||||||
### Name
|
|
||||||
This baseball league shall be known as the Chicago Metropolitan Baseball Association (CMBA). The CMBA has been formed for the purpose of providing the finest amateur baseball league in the State of Illinois and Midwest; a league where an up and coming young prospect for professional baseball may play and develop; where the talented veteran player can enjoy playing among the best competition; and bring friendship and sportsmanship to the Association.
|
|
||||||
|
|
||||||
### Ethics
|
|
||||||
All Association members, including officers, managers, umpires, and players shall strive to be ethical, honorable, and truthful in all dealings concerning the League thereby promoting the Association as a first class league of impeccable integrity.
|
|
||||||
|
|
||||||
### Sportsmanship
|
|
||||||
All Association members, including officers, managers, umpires, and players are expected to behave in a sportsmanlike manner, promoting fair competitive play in a respectful atmosphere.
|
|
||||||
|
|
||||||
## Membership
|
|
||||||
|
|
||||||
### Eligibility
|
|
||||||
Membership in the CMBA is open to any amateur baseball franchise in the Greater Chicagoland area that qualifies under the rules and requirements for admission as set forth in this Constitution.
|
|
||||||
|
|
||||||
### Classification; Standing
|
|
||||||
Membership shall be divided into the following four (4) classes:
|
|
||||||
|
|
||||||
1. In good standing with active franchises.
|
|
||||||
1. These members shall have full playing and voting privileges.
|
|
||||||
1. In good standing that have been granted a leave of absence.
|
|
||||||
1. These members shall not have voting privileges but may attend League meetings.
|
|
||||||
1. Not in good standing (temporary suspension for League rules violations) with active franchises. These members shall have full voting and game playing privileges.
|
|
||||||
1. These members shall have full voting and game playing privileges. However, any games played by members not in good standing shall be deemed technical forfeit.
|
|
||||||
1. Not in good standing (indefinite suspension).
|
|
||||||
1. These members shall have no game playing or voting privileges.
|
|
||||||
1. May attend league meetings by special invitation of the President.
|
|
||||||
|
|
||||||
### Subjectivity
|
|
||||||
All Association members shall abide by and are subject to all rules and regulations as outlined in this Constitution and By-Laws, and are subject to the authority of the President, other Officers, the umpires and any other ruling officials so authorized. These rules, regulations, articles, and By-Laws may not be suspended, set aside, or added to under any circumstances, regardless of the will of the managers. This section nullifies the “If both managers agree” concept.
|
|
||||||
|
|
||||||
## Officers
|
|
||||||
The following shall be considered Officers of the League: President; Treasurer; and Rules and Competition Committee Members. Other Officers may be created by the President at his discretion or by vote of League members upon the request of a League Member. All offices shall be filled by an affirmative vote of League members.
|
|
||||||
|
|
||||||
### Terms of Office
|
|
||||||
|
|
||||||
1. The President shall serve a life term unless he chooses to voluntarily relinquish the office. The new President shall be chosen by a majority vote of the League membership.
|
|
||||||
1. All Officers other than President are subject to yearly review and reelection by League vote.
|
|
||||||
|
|
||||||
### Umpires
|
|
||||||
Umpires shall have the sole responsibility for the enforcement of all sections in [Team Rosters Players And Eligibility](#team-rosters-players-and-eligibility) of the By-Laws, except where specified.
|
|
||||||
|
|
||||||
## Meetings
|
|
||||||
|
|
||||||
### Annual Meeting
|
|
||||||
The Association shall hold its annual preseason meeting after January 1 at a time and place set by the President. This meeting must be held in person, except in extenuating circumstances.
|
|
||||||
|
|
||||||
### Additional Meetings
|
|
||||||
Additional meetings shall be called by the President for reasons at his discretion.
|
|
||||||
|
|
||||||
### Rules and Competition Committee Meetings
|
|
||||||
The Rules and Competition Committee shall meet at the discretion of the President. These meetings must be held in person, except in extenuating circumstances by agreement between the President and the Committee.
|
|
||||||
|
|
||||||
### Meeting and Voting Validity
|
|
||||||
Only meetings called for and attended by the President will be considered valid and no votes held in the absence of the President will be considered binding.
|
|
||||||
|
|
||||||
### Amending the Constitution
|
|
||||||
This constitution may be amended, removed, or added by an affirmative vote of two-thirds of members with voting privileges.
|
|
||||||
The complete proposed written text of any amendment(s) to this constitution must be submitted to the representatives of the teams before the amendment(s) can be voted on.
|
|
||||||
|
|
||||||
## Finances
|
|
||||||
The President shall determine the franchise and annual entry fees. All other fees will be levied at the discretion of the League President. Fees shall be levied with the understanding that the Association is a not for profit organization.
|
|
||||||
101
docs/01-constitution-and-bylaws.md
Normal file
101
docs/01-constitution-and-bylaws.md
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
# Constitution and Bylaws
|
||||||
|
|
||||||
|
## Name
|
||||||
|
The name of the corporation as incorporated and existing under and by virtue of the Illinois General Not for Profit Corporation Act of 1986, as amended ("the Act") shall be the Chicago Metropolitan Baseball League (the "League"). The League shall have powers as are now or as may hereafter be granted by the Act.
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
This League is organized exclusively for such social and athletic purposes as will qualify under Illinois statue for a non-profit corporation. It has been formed for the purpose of serving its member franchises ("Member Franchises") by organizing the finest amateur baseball league in the State of Illinois and Midwest; a league where an up and coming young prospect for professional baseball may play and develop; where the talented veteran player can enjoy playing among the best competition; and bring friendship and sportsmanship to the League and its community.
|
||||||
|
|
||||||
|
## Powers
|
||||||
|
The League shall have and exercise all rights and powers conferred on corporations under the Act, provided, however, that the League is not empowered to engage in any activity which in itself is not in furtherance of its purposes and limitations as set forth in these Constitutions and Bylaws.
|
||||||
|
|
||||||
|
## Limitations
|
||||||
|
Notwithstanding any other provisions of this Constitution and Bylaws (the "Bylaws"), the following rules shall conclusively bind the League and all persons acting for or on behalf of it:
|
||||||
|
|
||||||
|
1. No part of the net earnings of the League shall inure to the benefit of, or be distributable to, any director of the League, officer of the League, or any other private individual (except that reasonable compensation may be paid for services rendered to or for the League affecting one or more of its purposes). No director, officer, member, or any private individual shall be entitled to share in the distribution of any of the corporate assets upon dissolution of the League.
|
||||||
|
|
||||||
|
1. No substantial part of the activities of the League shall be the carrying on of propaganda, or otherwise attempting to influence legislation, and the League shall not participate in, or intervene in (including the publication or distribution of statements) any political campaign on behalf of or in opposition to any candidate for public office.
|
||||||
|
|
||||||
|
1. The League shall not conduct or carry on any activities not permitted to be conducted or carried on by an organization exempt from taxation under Section 501(c)(3) of the Code and its regulations as they now exist or as they may hereafter be amended, or by an organization, contributions to which are deductible under Section 170(c)(2) of the Code and regulations as they now exist or as they may hereafter be amended.
|
||||||
|
|
||||||
|
## Principal Office.
|
||||||
|
The League shall have and continuously maintain a principal office at such location in the State of Illinois as may be determined by the League's Board of Directors.
|
||||||
|
|
||||||
|
## Registered Office and Agent.
|
||||||
|
The League shall have and maintain a registered office and agent in the State of Illinois in accordance with the requirements of the act.
|
||||||
|
|
||||||
|
## Directors
|
||||||
|
### General Powers
|
||||||
|
Except as otherwise expressly herein provided or as otherwise provided by law, the property and affairs of the League shall be managed by or under the direction of its Board of Directors (the "Board of Directors"), which shall be the governing body of the League. The Board of Directors may exercise all the powers, rights, and privileges of the League, whether expressed or implied in the Articles of Incorporation or conferred by the Act or otherwise, and may do all acts and things which may be done by the League. Each Director shall be entitled to one full vote on each matter.
|
||||||
|
|
||||||
|
### Number and Qualifications
|
||||||
|
The League's Board of Directors shall be composed of at least three (3) Directors ("Director") or such other greater number of Directors established by the Board of Directors from time to time. An individual need not be a manager of a Member Franchise in order to be a Director.
|
||||||
|
|
||||||
|
### Election and Term of Office
|
||||||
|
Directors shall be elected at the annual meeting of the League. The term of office of each Director shall be until the next annual meeting. Directors shall hold office until the expiration of the term for which such Director is elected and until such Director's successor has been elected or until the Director's death, resignation, or removal. Directors may serve successive terms.
|
||||||
|
|
||||||
|
### Resignation and Removal
|
||||||
|
Any Director may resign by written notice delivered to the Board of Directors or to the Commissioner or Secretary of the League. Any Director may be removed, with or without cause, by the affirmative vote of a majority of the Directors then in office. Any vacancy may be filled by the Board of Directors.
|
||||||
|
|
||||||
|
### Compensation
|
||||||
|
The Directors shall serve without compensation.
|
||||||
|
|
||||||
|
## Officers
|
||||||
|
|
||||||
|
### Designation
|
||||||
|
The officers of the League shall be a Commissioner, a Treasurer, and a Secretary. All offices shall be filled by an affirmative vote of the Board on an annual basis. Other Officers may be created by the Directors at their discretion. Officers may serve successive terms.
|
||||||
|
|
||||||
|
### Resignation and Removal
|
||||||
|
|
||||||
|
Any Officer may resign by written notice delivered to the Board of Directors or to the Commissioner or Secretary of the League. Any Officer may be removed, with or without cause, by the affirmative vote of a majority of the Directors then in office. Any vacancy may be filled by the Board of Directors.
|
||||||
|
|
||||||
|
## Officer Duties
|
||||||
|
|
||||||
|
### Commissioner
|
||||||
|
The Commissioner shall
|
||||||
|
|
||||||
|
1. Preside at meetings of the Membership and of the Board of Directors.
|
||||||
|
1. Execute contracts in the name of and on behalf of the League, with approval of the board or in accordance with the budget approved by the Board.
|
||||||
|
1. Prepare and propose the League’s budget for approval by the Board.
|
||||||
|
1. Shall perform such other duties as may be determined by the board of directors, and shall perform and discharge such other duties as generally devolve upon a chief executive officer.
|
||||||
|
|
||||||
|
### Treasurer
|
||||||
|
The Treasurer shall keep or, at the discretion of the Board cause to be kept, correct and complete records showing accurately at all times the financial condition of League; shall be legal custodian of all monies and other valuables which may from time to time come into the possession of the League; shall maintain a bank account in the name of League; shall prepare and file or, at the discretion of the board, cause to be prepared and filed, all required corporation tax forms and reports; shall furnish at meetings of the Board of Directors and Membership or whenever requested by the Board of Directors, a statement of the financial condition of the League; shall maintain or, at the discretion of the Board, cause to be maintained a roster of active Members in good standing; and shall perform such other duties as the Board of Directors may prescribe.
|
||||||
|
|
||||||
|
### Secretary
|
||||||
|
The Secretary shall have the custody and care of the corporate records of the League, shall attend all meetings of the Members and of the Board of Directors, shall keep a true and complete record of the proceedings of all such meetings, shall file and take charge of all documents belonging to the League, and shall perform such duties as may be prescribed by the Board of Directors.
|
||||||
|
|
||||||
|
### Compensation
|
||||||
|
The Officers shall serve without compensation.
|
||||||
|
|
||||||
|
## Meetings of the Board
|
||||||
|
|
||||||
|
### Annual Meeting
|
||||||
|
The Board of Directors shall hold its annual meeting after January 1 at a time and place set by the Commissioner. This meeting must be held in person, except in extenuating circumstances. The Board of Directors may invite a representative from each Member Franchise to attend the annual meeting.
|
||||||
|
|
||||||
|
### Additional Meetings
|
||||||
|
Additional meetings of the Board of Directors may be called by the Commissioner or any Director.
|
||||||
|
|
||||||
|
### Quorum and Voting
|
||||||
|
A majority of the Board of Directors shall constitute a quorum for the transaction of business at any meeting of the Board of Directors. The affirmative votes of a majority of the Directors present at a meeting of the Board of Directors at which a quorum is present shall be the act of the Board of Directors, unless the affirmative vote of a greater number is required by law or these Bylaws.
|
||||||
|
|
||||||
|
### Informal Action by Directors
|
||||||
|
Unless specifically prohibited by the Articles of Incorporation or these Bylaws, any action required to be taken or which may be taken at a meeting of the Board of Directors may be taken without a meeting if a consent in writing or by electronic mail setting forth the action so taken shall be signed or submitted by all of the directors entitled to vote with respect to the subject matter thereof.
|
||||||
|
|
||||||
|
## Miscellaneous
|
||||||
|
|
||||||
|
### Drafts, Checks, Deposits
|
||||||
|
|
||||||
|
All checks, drafts, or other orders for the payment of money by the League shall be signed by such officer or officers, agent or agents of the League and in such manner as shall from time to time be determined by resolution of the Board of Directors, or by an officer or officers of the League designated by the Board of Directors to make such determination.
|
||||||
|
|
||||||
|
All funds of the League not otherwise employed shall be deposited from time to time to the credit of the League in such banks, trust companies, or other depositories as the Board of Directors, or such officer or officers designated by the Board of Directors, may select.
|
||||||
|
|
||||||
|
### Books Records and Minutes
|
||||||
|
|
||||||
|
The League shall keep correct and complete books and records of accounts and also shall keep minutes of the proceedings of its Board of Directors and committees having any of the authority of the Board of Directors. All such books, records, and minutes shall be kept at the principal office of the League in the State of Illinois, and may be inspected by any director entitled to vote, for any proper purpose at any reasonable time.
|
||||||
|
|
||||||
|
### Amendments
|
||||||
|
These Bylaws may be altered, amended, or repealed, and new bylaws may be adopted by resolution of the Board of Directors at any time or from time to time by the vote of two-thirds of the Directors.
|
||||||
|
|
||||||
|
## Dissolution
|
||||||
|
Upon dissolution of the League or the winding up of its affairs, the League's Board of Directors shall, after paying or making provisions for the payment of all the liabilities of the League, dispose of all the assets of the League exclusively for the purposes of the League in such manner, or to such organization or organizations organized and operated exclusively for charitable, educational, religious, or scientific purposes as shall at the time qualify as an exempt organization or organizations under Section 501(c)(3) of the Code, or any corresponding section of any future federal tax code, as the Board of Directors shall determine. Any such assets not so disposed of shall be distributed to the federal government, or to a state or local government for a public purpose.
|
||||||
345
docs/02-league-rules-and-policy.md
Normal file
345
docs/02-league-rules-and-policy.md
Normal file
@@ -0,0 +1,345 @@
|
|||||||
|
# League Rules and Policy
|
||||||
|
|
||||||
|
## Authority and Applicability
|
||||||
|
This Rules and Policy document is adopted pursuant to the League’s Constitution and Bylaws and governs the operational rules, procedures, and competitive structure of the League. In the event of a conflict between this document and the Constitution and Bylaws, the Constitution and Bylaws shall control.
|
||||||
|
|
||||||
|
## League Governance
|
||||||
|
The Commissioner is responsible for the day-to-day administration of League operations in accordance with the Constitution and Bylaws and this Rules and Policy document. The Board provides oversight of League operations and may review or direct actions of the Commissioner.
|
||||||
|
|
||||||
|
### Operational Rights of Member Franchises
|
||||||
|
1. Member Franchises in good standing shall have the right to participate in League governance on matters of League operation as provided herein.
|
||||||
|
1. Member Franchises shall have the right to appeal disciplinary or eligibility decisions affecting them in accordance with procedures set forth in this document.
|
||||||
|
1. Member Franchises may provide input and vote in an advisory capacity on matters of League policy, administration, and operation.
|
||||||
|
1. Member Franchises may vote with binding effect on playing rules, competition rules, and on-field regulations, except where authority is otherwise reserved by this document or the Constitution and Bylaws. Each Member Franchise is entitled to one vote.
|
||||||
|
1. Each Member Franchise is entitled to one vote in voting matters.
|
||||||
|
1. Exercise of these rights is contingent upon the Member Franchise being in good standing.
|
||||||
|
|
||||||
|
### Budget
|
||||||
|
The Commissioner shall prepare a proposed budget for each fiscal year.
|
||||||
|
|
||||||
|
The proposed budget shall include, at a minimum:
|
||||||
|
|
||||||
|
1. Annual Member Franchise dues and payment schedule;
|
||||||
|
1. Other anticipated sources of income;
|
||||||
|
1. Expected expenditures for the operating year.
|
||||||
|
|
||||||
|
The proposed budget shall be presented to the Board for review and approval. Upon approval by the Board, the budget shall constitute the official League Budget for the applicable fiscal year. The approved League Budget shall be shared with all Member Franchises on an annual basis for informational purposes.
|
||||||
|
|
||||||
|
### 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. Scheduler;
|
||||||
|
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. Any compensation for a role shall require Board approval and shall be included as part of the Board-approved budget.
|
||||||
|
|
||||||
|
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 the Board.
|
||||||
|
|
||||||
|
### Committees
|
||||||
|
The League may establish committees as necessary to assist in the administration, governance, or operation of League activities. Committees are advisory bodies and shall have only the authority expressly granted to them by this document, the Commissioner, or the Board. Committee members shall be appointed by the Commissioner, subject to Board oversight, unless otherwise specified. The Commissioner may appoint alternate committee members when a committee member is unavailable or has a conflict of interest. Committees may be convened at the discretion of the Commissioner.
|
||||||
|
|
||||||
|
Committees may be formed for specific purposes, including but not limited to:
|
||||||
|
|
||||||
|
1. Advising on disciplinary matters and appeals;
|
||||||
|
1. Reviewing or proposing additions or amendments to playing rules;
|
||||||
|
1. Assisting with competition structure or game administration.
|
||||||
|
|
||||||
|
The Committee shall issue findings and recommendations to the Commissioner or Board, as applicable. The Committee shall have no independent authority to impose discipline, overturn decisions, or bind the League unless expressly authorized elsewhere in this document.
|
||||||
|
|
||||||
|
## Amendments and Rule Changes
|
||||||
|
|
||||||
|
### Constitution and Bylaws
|
||||||
|
Amendments to the Constitution and Bylaws are governed exclusively by the procedures set forth therein. Nothing in this Rules and Policy document shall modify or supersede those requirements.
|
||||||
|
|
||||||
|
### Rules and Policy Amendments
|
||||||
|
1. This Rules and Policy document may be amended to address League operations, administration, discipline, or procedures.
|
||||||
|
1. Amendments may be proposed by the Commissioner or the Board.
|
||||||
|
1. Adoption of a Rules and Policy amendment shall require approval by the Board.
|
||||||
|
1. Member Franchises may be afforded an opportunity to provide advisory vote on proposed amendments.
|
||||||
|
1. Approved amendments shall take effect as specified at the time of adoption.
|
||||||
|
|
||||||
|
### Playing Rules Amendments
|
||||||
|
1. Playing rules governing on-field competition may be amended separately from this Rules and Policy document.
|
||||||
|
1. Playing rules amendments shall be adopted by a vote of Member Franchises in good standing.
|
||||||
|
1. Unless otherwise specified, a simple majority vote shall be sufficient to adopt a playing rules amendment.
|
||||||
|
1. Playing rules amendments shall not apply retroactively and shall take effect at the start of a season.
|
||||||
|
|
||||||
|
## League Participants
|
||||||
|
|
||||||
|
### Member Franchises (Teams) and Managers
|
||||||
|
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. It may also designate an Assistant 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.
|
||||||
|
|
||||||
|
#### 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.
|
||||||
|
|
||||||
|
## Membership Standing, Obligations, and Discipline
|
||||||
|
### Standing and Membership Status
|
||||||
|
|
||||||
|
1. **In Good Standing**
|
||||||
|
1. A Member Franchise shall be considered *in good standing* when it has satisfied all financial obligations, complied with League rules and policies, and is not subject to suspension.
|
||||||
|
1. Only Member Franchises in good standing may exercise membership rights, including voting, participation in postseason play, and eligibility for League awards.
|
||||||
|
|
||||||
|
1. **Temporary Suspension**
|
||||||
|
1. A Member Franchise may be placed on temporary suspension by the Commissioner for failure to comply with financial obligations or other League requirements.
|
||||||
|
1. A temporarily suspended Member Franchise shall have its membership rights suspended for the duration of the suspension.
|
||||||
|
|
||||||
|
1. **Indefinite Suspension**
|
||||||
|
1. A Member Franchise may be placed on indefinite suspension by the Commissioner for serious or repeated violations of League rules or policies.
|
||||||
|
1. An indefinitely suspended Member Franchise shall forfeit all membership rights until reinstated.
|
||||||
|
1. Grounds for indefinite suspension may include, but are not limited to:
|
||||||
|
1. Conduct detrimental to the objectives of the League;
|
||||||
|
1. Two (2) forfeits of games in a single season;
|
||||||
|
1. Tampering with players on the roster of another Member Franchise;
|
||||||
|
1. Consumption of alcoholic beverages on or in close proximity to playing fields in violation of League or facility rules;
|
||||||
|
1. Violation of policies imposed by permit issuers for League field use;
|
||||||
|
1. Failure to comply with codes of conduct set forth in this document.
|
||||||
|
|
||||||
|
1. **Leave of Absence**
|
||||||
|
1. A Member Franchise in good standing may be granted a leave of absence by the Commissioner.
|
||||||
|
1. A Member Franchise on an approved leave of absence shall retain such membership rights as determined by the Commissioner.
|
||||||
|
1. A Member Franchise on leave of absence for more than two (2) years must reapply for membership.
|
||||||
|
|
||||||
|
#### Change of Status
|
||||||
|
A Member Franchise subject to suspension may be granted a change of status by the Commissioner upon resolution of the conditions giving rise to the suspension. A change of status may include restoration to good standing or modification of the existing suspension, subject to any conditions imposed by the Commissioner or otherwise required by this document.
|
||||||
|
|
||||||
|
### Discipline and Enforcement
|
||||||
|
The Commissioner shall have authority to impose discipline consistent with this document, including warnings, fines, suspensions, and referrals for further review. Disciplinary actions may apply to Players, Managers, or Member Franchises, as appropriate.
|
||||||
|
|
||||||
|
In exercising enforcement authority, the Commissioner may utilize one or more of the following disciplinary measures, as appropriate to the circumstances:
|
||||||
|
|
||||||
|
1. Warnings or formal notices of violation;
|
||||||
|
1. Assessment of fines or fees as otherwise permitted by this document;
|
||||||
|
1. Declaration of forfeits;
|
||||||
|
1. Modification of standing or eligibility status;
|
||||||
|
1. Referral of matters for advisory review or appeal pursuant to this document.
|
||||||
|
|
||||||
|
### Meetings
|
||||||
|
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 fine. Those members present at any meeting shall constitute a quorum.
|
||||||
|
|
||||||
|
### Financial Obligations
|
||||||
|
1. Each Member Franchise is responsible for payment of all League dues, fees, and fines assessed to it pursuant to the approved League Budget or this document.
|
||||||
|
1. Players may be assessed individual fees or fines as permitted by League rules; however, the Member Franchise shall remain ultimately responsible for ensuring such obligations are satisfied.
|
||||||
|
1. Failure to satisfy financial obligations in accordance with established deadlines may result in penalties, suspension, or loss of good standing as provided elsewhere in this document.
|
||||||
|
|
||||||
|
### Prohibited Conduct
|
||||||
|
|
||||||
|
#### Tampering
|
||||||
|
1. Tampering is defined as the deliberate solicitation, without consent, of a Player who has made at least an oral commitment to another Member Franchise.
|
||||||
|
1. Tampering may result in disciplinary action against the offending Player, Member Franchise, or both.
|
||||||
|
|
||||||
|
#### Outside League Participation
|
||||||
|
1. Member Franchises may participate in outside leagues provided such participation does not conflict with League games or playoffs and is permitted by agreement with the League.
|
||||||
|
1. Violations of this provision may result in disciplinary action.
|
||||||
|
|
||||||
|
### Penalties and Fees
|
||||||
|
The Commissioner may levy fines to any League Member franchise or player subject to Board oversight. Fines may be levied for violation of this Constitution and its Bylaws or conduct unbecoming of a representative of the League. The penalties and amounts set forth in this section are operational in nature and may be adjusted by the Commissioner with Board oversight, unless otherwise specified.
|
||||||
|
|
||||||
|
1. Late payment of annual dues shall incur a penalty of ten dollars ($10.00) per week, not to exceed five (5) weeks.
|
||||||
|
1. Members in violation of the above shall be placed on temporary suspension for a period of two (2) weeks.
|
||||||
|
1. Members who have not paid outstanding dues by the end of the two week suspension shall be placed on indefinite suspension until all dues are paid. Members who have not paid outstanding dues by the end of the two week suspension shall be placed on indefinite suspension until all dues are paid.
|
||||||
|
1. A forfeit fee may be assessed per forfeited game.
|
||||||
|
1. Fines for a single incident shall not exceed fifty dollars ($50.00).
|
||||||
|
|
||||||
|
### Appeals
|
||||||
|
1. A Member Franchise or Player may appeal a disciplinary or eligibility decision affecting them in accordance with this document.
|
||||||
|
1. Appeals shall be submitted within a timeframe established by the Commissioner.
|
||||||
|
1. The Commissioner may review appeals directly or refer them for advisory review as appropriate.
|
||||||
|
1. Decisions on appeal shall be final unless otherwise provided by the Constitution and Bylaws.
|
||||||
|
1. The Board may exercise oversight with respect to disciplinary or eligibility matters when there is a credible concern regarding fairness, conflict of interest, or material deviation from League rules or procedures. In exercising such oversight, the Board may review the matter directly, direct reconsideration, or appoint an advisory committee. Any determination made by the Board pursuant to this subsection shall be final.
|
||||||
|
|
||||||
|
## Equipment
|
||||||
|
|
||||||
|
1. Baseballs: Only Major League regulation balls will be allowed for game play. Accepted brands and ball types include, but are not limited to, the Rawlings RO series, Wilson A1000 series, and Diamond D-1 series. The home team must supply two (2) and the visitors one (1) ball at the start of each game. Additional balls shall be supplied alternately by each team beginning with the visiting team. Teams that supply non-approved balls shall forfeit the game.
|
||||||
|
1. Bats: All bats must be wood or BBCOR certified. Use of an illegal bat shall be subject to the Major League rules that govern this area.
|
||||||
|
1. Bases, home plate, and pitching rubber: All teams are expected to have a set of bases, a home plate, and a pitching rubber. These items shall conform to Major League Baseball specifications. Items conforming to 2022 specifications shall also be considered legal.
|
||||||
|
|
||||||
|
The home team shall be responsible for accurately setting up the bases, and if necessary, home plate and the pitching rubber. Should the home team fail to have these necessities by the start of the game, they will lose by forfeit. The visiting team can lend the equipment, although they are not required to do so.
|
||||||
|
|
||||||
|
### Uniform
|
||||||
|
All players must be in uniform (bearing the team’s name as represented to the league) by the team’s 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.
|
||||||
|
|
||||||
|
1. A the Commissioner's discrtiont, this deadline may be extended following a written petition by the team that shows a reasonable cause for extension, and evidence of a good faith effort to meet the deadline.
|
||||||
|
1. This rule applies to any players legally added to the roster after the stated deadline.
|
||||||
|
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 team’s 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.
|
||||||
|
|
||||||
|
## Team Rosters; Players and Eligibility
|
||||||
|
|
||||||
|
### Umpires
|
||||||
|
Umpires shall have the sole responsibility for the enforcement of all sections in [Team Rosters Players And Eligibility](#team-rosters-players-and-eligibility) of the Bylaws, except where specified.
|
||||||
|
|
||||||
|
### Roster Deadline; Roster Size
|
||||||
|
Prior to June 1, each team has an “open roster.” League teams must submit a roster of their players to the Commissioner no later than June 1 of each year. Any team that does not submit its roster to the Commissioner by June 1 as required by this [Roster Deadline; Roster Size](#roster-deadline-roster-size) and in accordance with the information requirements in [Roster Information Requirements](#roster-information-requirements) shall be deemed not in good standing. Consequences of not being in good standing are defined in [Classification; Standing](#classification-standing) of the Constitution. This submitted roster plus any and all legal roster transactions per [Roster Transactions](#roster-transactions), shall be considered official. Players not on a team’s official roster are ineligible for play, except where specifically noted in this [Teams And Managers](#teams-and-Managers).
|
||||||
|
Each team’s roster must contain a minimum of sixteen (16) players and shall not exceed twenty-six (26) players, in each case, excluding non-playing Managers and coaches.
|
||||||
|
|
||||||
|
### Roster Information Requirements
|
||||||
|
A team’s rosters as submitted to the Commissioner on or before June 1 shall contain the following information for each rostered player: name, age, bats/throws, position(s),uniform number, and face photo. Rosters shall be submitted in Excel or via Google sheets (or similar editable spreadsheet.)
|
||||||
|
|
||||||
|
### Roster Transactions
|
||||||
|
Teams may add a total of five (5) players to the roster after the June 1 roster submission deadline. The total number of players on a team still may not exceed twenty-six (26). In order to add players between June 1 and July 1 but not exceed the 26 player limit, a team may drop players who were rostered on June 1. No players may be added after July 1, except as set forth below.
|
||||||
|
After July 1, upon request to the Rules and Competition Committee, a team may add a player if (i) the team’s roster has fallen (or, upon the removal of players “missing in action” as described below, will fall) below the 16 player minimum and (ii) doing so will, in the good faith determination of the Rules and Competition Committee, prevent the team from forfeiting games.
|
||||||
|
In order for a team to declare a player “missing in action” after July 1, (i) the player shall have (a) failed to appear at all of the team’s games occurring prior to such request or (b) suffered a season-ending injury after June 1 and (ii) the team must drop the player from its roster.
|
||||||
|
|
||||||
|
A team may drop players at any time as long as the team’s roster does not fall below the 16 player minimum.
|
||||||
|
|
||||||
|
Any and all roster changes shall be submitted to the Commissioner and satisfy the information requirements in [Roster Information Requirements](#roster-information-requirements). Roster changes shall be effective as of the first pitch of the team’s first regularly scheduled game after the updated roster is submitted.
|
||||||
|
|
||||||
|
### Alumni
|
||||||
|
If a team would otherwise be required to forfeit or technically forfeit a game after June 1 due to a lack of eligible players in attendance, the team can use one (but not more than one) of its former players (“alumni”) in that game. The team’s Manager shall inform the opposing team’s Manager and the Commissioner as soon as possible (and in no event later than the first pitch) the intention to use an alumni player and will provide to the opposing team’s Manager and the Commissioner with the alumni player’s name, age, bats/throws, position and uniform number. Alumni players are not eligible to play in the playoffs.
|
||||||
|
|
||||||
|
### Eligible Players
|
||||||
|
Eligible players must be of at least eighteen (18) years of age by the date of the teams first +game. No player may play for more than one team in a season (either before or after June 1).
|
||||||
|
A team that uses an ineligible player, per the rules in this [Team Rosters Players And Eligibility](#team-rosters-players-and-eligibility), will be deemed to have forfeited any and all games in which the illegal player(s) participated.
|
||||||
|
|
||||||
|
### Postseason Player Eligibility
|
||||||
|
Players must appear in at least five (5) games during the regular season in order to be eligible for postseason play. Upon request to the Rules and Competition Committee, exceptions may be made for players with long term injuries.
|
||||||
|
|
||||||
|
### Player Responsibility for Team Fees
|
||||||
|
All players in the League are expected to pay their team fees. Players will not be allowed to switch teams within the League unless or until any and all debts are paid in full.
|
||||||
|
|
||||||
|
### Free Agents
|
||||||
|
A player must inform the League Commissioner and such player's Manager no later than February 15 of the upcoming season if of an itention to leave the team and become a free agent. After this the player is free to play for another team in the League. A Manager may waive this deadline for an individual player at the Manager’s discretion. If the player fails to notify as specified, that player shall be disqualified from playing on another League team for that season.
|
||||||
|
|
||||||
|
## Protest and Forfeits
|
||||||
|
|
||||||
|
### Timeframe and Reporting
|
||||||
|
All protests must be filed with the Commissioner within 48 hours of the alleged infraction and on the League supplied form. All requested information must be accurately reported. Any Manager who knowingly falsifies information on the protest form will be fined and suspended as determined by the Commissioner, and that Manager’s team will forfeit the game.
|
||||||
|
|
||||||
|
### Ground for Protest
|
||||||
|
Protests may only be made on the grounds of a violation of a rule stated in this Constitution and its Bylaws or in violation of a stated Major League Baseball rule. Protests may not, under any circumstances, be based on the judgment of an umpire’s call. The protesting team’s Manager must notify the umpire of the protest at the time the violation occurred. Managers shall notify the league Commissioner at the earliest possible time after the game and provide umpire signature as proof of notification.
|
||||||
|
|
||||||
|
### Ruling
|
||||||
|
Upon the filing of a protest with the Commissioner, the Commissioner shall call a meeting of the Rules and Competition Committee at the earliest possible date. Judgment regarding the merit of the protest shall be made after deliberation.
|
||||||
|
|
||||||
|
### Notification
|
||||||
|
Teams that win games by forfeit must notify the Commissioner that very day.
|
||||||
|
|
||||||
|
### Umpire Payment
|
||||||
|
Forfeiting teams must pay, at the time of the forfeit, the full cost of the umpire(s), and shall be considered not in good standing as defined in [Classification; Standing](#classification-standing). Teams will be considered not in good standing until payment is made. In the event a team is unable to pay the umpire at the proper time, the team’s forfeit fee will be used to cover initial forfeits. The cost of additional forfeits will be paid by the team.
|
||||||
|
|
||||||
|
### Forfeits
|
||||||
|
Should a team forfeit a game shall lose 2 points in the standings.
|
||||||
|
Forfeiting teams must pay, at the time of the forfeit, the full cost of the umpire(s). Until payment is made, a forfeiting team shall be considered not in good standing as defined in Subsection.
|
||||||
|
Should a team forfeit 2 games in a season they will be banned from playing games for the remainder of the season and playoffs and placed on indefinite suspension, not in good standing, as defined in Subsection of the constitution. Games that included or would have included this team shall be subject to the following:
|
||||||
|
|
||||||
|
1. All previous games played by the indefinitely suspended team shall count in the official standings.
|
||||||
|
1. All subsequent games shall be recorded as a loss for the suspended team and a win for the scheduled opponent.
|
||||||
|
|
||||||
|
### Technical forfeit
|
||||||
|
A team subject to technical forfeit shall be awarded only one point for a victory. A team may receive 2 technical forfeits per season. After reaching this limit, subsequent technical forfeits shall be converted to forfeits, as defined in [Equipment](#equipment).
|
||||||
|
|
||||||
|
## Standings and Postseason
|
||||||
|
|
||||||
|
### Website
|
||||||
|
The Commissioner shall maintain a league website that includes all official scores and league standings. Additional pertinent information will be provided.
|
||||||
|
|
||||||
|
### League Standings
|
||||||
|
The League shall use a point system to determine the standings. A team is awarded:
|
||||||
|
|
||||||
|
1. Two (2) points for a win (including a win against a team in technical forfeit)
|
||||||
|
1. One (1) point for a win while in technical forfeit (see [Forfeits](#forfeits))
|
||||||
|
1. One (1) point for a tie game
|
||||||
|
1. Zero (0) points for a loss
|
||||||
|
1. Minus two (-2) points for a loss by forfeit (see [Forfeits](#forfeits)).
|
||||||
|
|
||||||
|
### Standings Tie-breakers
|
||||||
|
In the event two teams finish the regular season in a tie for a position, the following tie-breaking procedure will take effect:
|
||||||
|
|
||||||
|
1. Record in head-to-head competition.
|
||||||
|
1. Record within the division (if applicable).
|
||||||
|
1. Least runs allowed for the season.
|
||||||
|
1. Coin toss, performed by the Commissioner with a witness.
|
||||||
|
|
||||||
|
### Postseason Format
|
||||||
|
The postseason format shall be determined by annual vote.
|
||||||
|
|
||||||
|
### Prizes and Awards
|
||||||
|
Playoff prizes and awards, if any, shall be determined by the membership of the league.
|
||||||
|
|
||||||
|
### Playoff Umpire Selection
|
||||||
|
For the playoffs, each team will be granted the ability to exclude one (1) particular umpire from participating in said teams series. The name of this umpire shall be submitted to the chief umpire as soon as possible prior to the series. This umpire “veto” will be binding UNLESS the chief umpire cannot find any other umpire who can work any game in this series.
|
||||||
|
|
||||||
|
### Completion of Playoff Games
|
||||||
|
All playoff games must be played to completion. If a playoff game is suspended for any reason, the game must be finished at a later date declared by the Commissioner. This game is declared suspended, and regardless of what inning or circumstance, the game will be continued from the point in the game when it was suspended. The “Slaughter Rule” is applicable for the playoffs (see [Regulation Games](#regulation-games)).
|
||||||
|
|
||||||
|
## Code of Conduct
|
||||||
|
### Ethics
|
||||||
|
All League members, including officers, Managers, umpires, and players shall strive to be ethical, honorable, and truthful in all dealings concerning the League thereby promoting the League as a first class league of impeccable integrity.
|
||||||
|
|
||||||
|
### Sportsmanship
|
||||||
|
All League members, including officers, Managers, umpires, and players are expected to behave in a sportsmanlike manner, promoting fair competitive play in a respectful atmosphere.
|
||||||
|
|
||||||
|
## Sportsmanship and Prohibited Conduct
|
||||||
|
All League members are expected to engage in a sportsmanlike and mutually respectful behavior. Any Manager or the chief umpire may request that the rules and competition committee review the specific actions of another player, coach, Manager or team. The rules and competition committee shall review, and in its discretion, determine the appropriate disciplinary action to be taken, if any. Disciplinary actions include a written warning, fines, temporary suspension, and banishment from the League. The committee should take under consideration repeat offenses. The Commissioner shall enforce any discipline determined by the committee.
|
||||||
|
|
||||||
|
### Fighting
|
||||||
|
Fighting or any physical altercation shall not be tolerated in the League. Players cannot leave the bench or their positions during a fight for any reason; the Managers, the on-the-field coaches and umpire(s) shall be responsible for restoring order. Specific penalties for violations are listed below.
|
||||||
|
|
||||||
|
1. Any player who instigates or initiates an on-field fight shall be fined and suspended from league play for no less than one season
|
||||||
|
1. Any player or coach who participates in a fight shall be suspended for three games and fined $50.00.
|
||||||
|
|
||||||
|
### Assault of an Umpire
|
||||||
|
Any player or coach who physically assaults an umpire will be permanently banished from the league. Actions shall be reported to law enforcement as required.
|
||||||
|
|
||||||
|
### Substances
|
||||||
|
|
||||||
|
1. Smoking: Smoking shall be prohibited in the dugout and on the playing field during the game.
|
||||||
|
1. Alcohol: Alcoholic beverages are prohibited on or in the close proximity of a team’s bench. Teams in violation of this rule will forfeit the game and be automatically fined and temporarily suspended. Offending players will be fined and suspended for two (2) weeks from the date of the infraction. A second violation of this rule shall result in the automatic expulsion of the team from the League. Managers are responsible for the enforcement of this rule and are accountable for any violations.
|
||||||
|
1. Additionally, all teams and players are subject to any and all additional laws, rules, or regulations regarding substances as stated by locality or the issuer of the field permit
|
||||||
|
|
||||||
|
### Flagrant Collisions
|
||||||
|
A flagrant collision is defined as an intentional act to forcibly collide with a fielder. A player who is ejected for a flagrant collision will be suspended for three (3) games and fined $30. A second offense (not necessarily in the same season) will result in the player being suspended for the remainder of that season (including playoffs). A third offense will result in permanent banishment from the league.
|
||||||
|
|
||||||
|
## 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.
|
||||||
146
docs/03-playing-rules.md
Normal file
146
docs/03-playing-rules.md
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
# Playing Rules
|
||||||
|
|
||||||
|
## Playing Rules
|
||||||
|
Except where specified in this document, games shall follow the Official Baseball Rules of Major League Baseball.
|
||||||
|
|
||||||
|
These rules shall not incorporate the following rules of Major League Baseball:
|
||||||
|
|
||||||
|
- Rule 4.03(c)(4) specifying limitations on when a position player can pitch.
|
||||||
|
- Rule 5.02(c) specifying limitations on infielder placement.
|
||||||
|
- Rule 7.01(b) incorporating the parameters of the Extra Innings Rule, which includes starting each half-inning following the last regulation inning with a runner on second base.
|
||||||
|
- Rule 5.10(m)(1) limiting the number of mound visits.
|
||||||
|
- Rule 5.10(g) requiring that pitchers must face at least three batters.
|
||||||
|
- Rules 5.07(c) specifying time limits on pitchers and batters. Limitations on pitcher disengagements (i.e. pick-offs) shall also not be incorporated.
|
||||||
|
|
||||||
|
|
||||||
|
## Regulation Games
|
||||||
|
Games played under the auspices of both recognized Managers of the participating teams shall count as official. A regulation game is defined as follows
|
||||||
|
|
||||||
|
1. A regulation game consists of seven (7) innings, unless extended because of a tie score, or shortened because the home team needs none of its half of the seventh inning or only a fraction of it, or because the umpire calls the game in accordance with [Reasons for a Game to be Called](#reasons-for-a-game-to-be-called).
|
||||||
|
1. If the score is tied after seven completed innings play shall continue until (1) the visiting team has scored more total runs than the home team at the end of a completed inning, or (2) the home team scores the winning run in an uncompleted inning. If a regulation game is called with the score tied, it shall remain a tie game.
|
||||||
|
1. If a game is called by the umpire, per [Reasons for a Game to be Called](#reasons-for-a-game-to-be-called), it is a regulation (official) game:
|
||||||
|
1. If four innings have been completed;
|
||||||
|
1. If the home team has scored more runs in four or three and a fraction half-innings than the visiting team has scored in four completed half-innings;
|
||||||
|
1. If the home team scores one or more runs in its half of the fourth inning to tie the score.
|
||||||
|
|
||||||
|
Postseason games are exempt from this definition as specified in [Completion of Playoff Games](#completion-of-playoff-games).
|
||||||
|
1. Slaughter Rule: The game shall be ended and the leading team declared the winner:
|
||||||
|
1. If after 4 complete innings the visiting team is ahead in the score by 15 or more runs, or if after 3½ innings the home team is ahead by the same, the game will be ended and the leading team declared the winner.
|
||||||
|
1. If after 5 or more complete innings the visiting team is ahead in the score by 12 or more runs, or if after 4½ innings or more the home team is ahead by the same, the game will be ended and the leading team declared the winner.
|
||||||
|
|
||||||
|
The Slaughter Rule is applicable for the playoffs as specified in [Completion of Playoff Games](#completion-of-playoff-games).
|
||||||
|
1. If a game is called after 3 complete innings and one team is ahead by 10 or more runs, the game will be ended and the leading team declared the winner.
|
||||||
|
|
||||||
|
Postseason games are exempt from this definition as specified in [Completion of Playoff Games](#completion-of-playoff-games).
|
||||||
|
|
||||||
|
1. If a game is postponed or otherwise called before it has become a regulation game, the umpire-in-chief shall declare it “No Game,” meaning the game must be restarted (not resumed) at a later date.
|
||||||
|
|
||||||
|
Postseason games are exempt from this definition as specified in [Completion of Playoff Games](#completion-of-playoff-games).
|
||||||
|
|
||||||
|
## Reasons for a Game to be Called
|
||||||
|
An umpire, in their discretion, may declare a game called if
|
||||||
|
|
||||||
|
1. Darkness prevents further safe play.
|
||||||
|
1. Rain, lightning, or other inclement weather precludes safe conditions.
|
||||||
|
1. A new inning would start after 8:15 p.m at a field without lights.
|
||||||
|
1. Local laws or field rules (e.g. lightning detector) prevent continuation of the game.
|
||||||
|
1. Other circumstances prevent further safe play. The Rules and Competition Committee may rule on any forfeit or loss of points as applicable.
|
||||||
|
|
||||||
|
## Game Time
|
||||||
|
The starting time for all weeknight games shall be 5:50 p.m. for fields without lights. Starting times for games played at lighted fields and on the weekends shall be determined by the League and may legally begin after 6:30PM. Forfeit time shall be 20 minutes after the scheduled starting time.
|
||||||
|
|
||||||
|
## Player Uniforms
|
||||||
|
All players must be in proper uniform in order to be eligible to participate in games, as specified in League policy.
|
||||||
|
|
||||||
|
## Minimum Number of Players
|
||||||
|
Teams must start the game at the scheduled starting time if they have at least eight (8) players present. A team may not wait until forfeit time for players to arrive, the game must begin as soon as a team has 8 players present. If a ninth player does not arrive or arrives after forfeit time, the team shall be in technical forfeit, as defined in [Forfeits](#forfeits).
|
||||||
|
|
||||||
|
1. In the event a team starts a game with eight (8) players, the ninth spot in the batting order shall be considered an out recorded to the pitcher. A team may insert a ninth player in the vacant ninth spot after the start of play.
|
||||||
|
1. A team may begin a game with eight (8) players up to two (2) times in one season. A team that fails to field nine (9) players at the start of the game after receiving 2 (two) prior technical forfeits shall forfeit all subsequent games.
|
||||||
|
1. A team in technical forfeit shall remain in technical forfeit, regardless of the number of players with which it finished the game.
|
||||||
|
A team may finish the game a player short, that is one (1) player less than they started the game with (eight (8) players for a nine (9) man line-up, nine (9) players for a ten (10) man), provided the team does not fall below this minimum.
|
||||||
|
|
||||||
|
1. The vacated spot in the batting order shall be considered an automatic out.
|
||||||
|
1. Should a team fall below the minimum, the game is terminated and the team loses by forfeit.
|
||||||
|
|
||||||
|
## Player Injuries
|
||||||
|
Should a player suffer a debilitating injury during the game and cannot continue, and a team has no more eligible players on its bench, a team can use a player that was removed from the game to replace him. This replacement player must be the first player removed from the game, and if this player is unavailable the next player is used (and so on). If no reserve is present, the vacated spot in the lineup is skipped and all batters move up accordingly, with no penalty to the affected team.
|
||||||
|
|
||||||
|
1. If a substantial case can be made that a team skipped a spot with the intent to gain a competitive advantage, a protest by the opposing team may retroactively be ruled as a forfeit.
|
||||||
|
|
||||||
|
## Field Maintenance
|
||||||
|
All teams are responsible for the maintenance and cleanup of the field and dugout areas after a game. Both teams must fill in all infield, batter’s box, and pitching mound holes. Additionally, both teams must have adequate equipment on hand for field maintenance. Teams who repeatedly fail to do proper post-game maintenance shall be fined.
|
||||||
|
|
||||||
|
## Payment of Umpires
|
||||||
|
Umpires are to be paid on the field promptly upon request.
|
||||||
|
|
||||||
|
## Designated Hitter
|
||||||
|
The League shall follow the Major League designated hitter rule at all times, with the exception that a team may designate a D.H. for any position on the field.
|
||||||
|
|
||||||
|
## Designated Runner
|
||||||
|
The League shall elect to use a designated runner rule, similar to the designated hitter rule.
|
||||||
|
|
||||||
|
1. A runner may be designated to run for a specified player in any game without otherwise affecting the status of the player(s) in the game.
|
||||||
|
1. The designated runner must take the place of the specified player whenever that player reaches base or the designated runner.
|
||||||
|
1. If the specified player is substituted, this substitute player may inherit the designated runner.
|
||||||
|
1. Designated runners are subject to the same substitution rules as the designated hitter as defined in [Designated Hitter](#designated-hitter)
|
||||||
|
1. Teams with no eligible players remaining on the bench (i.e. all players are in the batting lineup) may elect to use the player that made the last out as the designated runner.
|
||||||
|
|
||||||
|
## Extra Hitter
|
||||||
|
Prior to the start of the game a team may choose to play an extra hitter (EH). If the team uses this option, the following conditions apply:
|
||||||
|
|
||||||
|
1. An EH shall only bat. They cannot take a position in the field as a tenth fielder.
|
||||||
|
1. The EH shall be treated like any other position in the field, and can be substituted for, switch positions, or anything else that a position player can do.
|
||||||
|
1. There is no limit to the number of extra hitters a team may elect to use, provided the names and numbers of these players are included in the lineup exchanged before the game.
|
||||||
|
|
||||||
|
## Courtesy Runner
|
||||||
|
Teams may use courtesy runners for pitchers and catchers at any time. It is not mandatory to do so (speed-up rule), but the umpire(s) are required to keep the game moving expeditiously.
|
||||||
|
|
||||||
|
1. Courtesy runners for pitchers and catchers cannot be, or have been, in the game at any time other than as a courtesy runner. Teams with no eligible players remaining on the bench must use the first player taken out of the game or the player that made the last out.
|
||||||
|
1. The pitcher or catcher must play at least one (1) defensive out to be eligible for a courtesy runner unless they reach base in the first inning as a member of the visiting team.
|
||||||
|
|
||||||
|
## Batting Lineup
|
||||||
|
The batting lineup shall consist of at minimum 9 slots (or 8 adhering to section [Minimum Number of Players](#minimum-number-of-players)). Additional slots may be used without limit (see [Extra Hitter](#extra-hitter)). Any player may be substituted in their batting lineup slot by using a pinch-hitter or pinch-runner for that player. The original player may not re-enter the game as a hitter.
|
||||||
|
|
||||||
|
## A/B Batting Lineup Slots
|
||||||
|
In regular season play, any batting lineup slot may be optionally designated as an "A/B" batting slot, meaning it is shared between two players adhering to the following rules:
|
||||||
|
|
||||||
|
1. The batter designated "A" shall bat the first time through the lineup and the batter designated "B" batting the second time through the lineup, continuing in alternating fashion for the remainder of the game.
|
||||||
|
2. Rules for the substitutions of either "A" or "B" batter are the same as any other batting lineup slot.
|
||||||
|
3. In the event of injury of either player when there are no reserve players available, the uninjured player shall bat in place of the injured player without penalty.
|
||||||
|
|
||||||
|
In postseason play, the A/B batting slot rule defined above shall not be applicable.
|
||||||
|
|
||||||
|
## Defensive Lineup
|
||||||
|
In regular season play, the defensive line-up is independent of the batting lineup and substitutions shall be allowed as follows:
|
||||||
|
|
||||||
|
1. Any player may be freely substituted in the defensive line-up at any time, without affecting the players’ in the batting line-up. Players may enter, exit, and re-enter the game in the defensive line-up without limitation.
|
||||||
|
|
||||||
|
In postseason play, the free defensive substitution rule defined above shall not be applicable and substitutions shall be made in accordance to applicable League and MLB rules.
|
||||||
|
|
||||||
|
## Field Status
|
||||||
|
The home team shall be responsible for checking the status of the field in the event of rain. The home team must report the status of the field to the Commissioner and the assigned umpire no later than 2:00 pm for a weeknight game, and at least 2 hrs. before a weekend game. As a courtesy, the home team should also notify the visiting Manager, but the visiting Manager may also contact the Commissioner for information regarding the status of the field.
|
||||||
|
|
||||||
|
1. Any Manager who knowingly falsifies information regarding the status of the field to avoid playing the game will be fined and the team will forfeit the game.
|
||||||
|
|
||||||
|
## Rescheduling
|
||||||
|
In the discretion of the Commissioner, a game may be postponed due to extraordinary circumstances. In the event a game is to be postponed, the Commissioner shall alert the Managers in an expedient manner.
|
||||||
|
Managers from both teams must contact the Commissioner to confirm any changes that they wish to make to the official schedule. Teams may not change times, places, or dates of games without the consent of the Commissioner. Any such games played shall be considered unofficial.
|
||||||
|
Any postponed or suspended games must be rescheduled in a timely fashion by the Managers of that game for the next possible date. If Managers cannot come to an agreement in a timely fashion, the Commissioner may reschedule the game.
|
||||||
|
|
||||||
|
## Notification of Results
|
||||||
|
The winning team shall be responsible for notifying the Commissioner of the score of the game no later than 10:00 AM the day after the game was played via text message, email, or telephone call.
|
||||||
|
|
||||||
|
## Uncompleted Games
|
||||||
|
All games not completed by the end of the regular season shall count as losses for both teams unless a team deliberately attempts to avoid playing a sanctioned game. The team that was willing to play the game will be judged the forfeit winner if so ruled by the Commissioner.
|
||||||
|
|
||||||
|
## Substitution of an Umpire
|
||||||
|
Should a league sanctioned umpire fail to appear at game time, the teams can choose to play the game with an umpire(s) of mutual choosing. The Commissioner needs to be informed by both teams prior to the start of the game to make it official.
|
||||||
|
|
||||||
|
## Collisions
|
||||||
|
NO COLLISIONS ARE ALLOWED, UNLESS THE CONTACT RESULTS FROM A SLIDE. It is the base runners responsibility to slide or avoid contact. Fielders and runners must abide by Official Baseball Rules regarding Interference, Obstruction, and Catcher Collisions..
|
||||||
|
Unless the umpire rules that the contact was incidental or the result of Obstruction by the fielder, the runner shall be called out, the ball declared dead and the runner automatically ejected from the game. Per [Flagrant Collisions](#flagrant-collisions). if the collision is determined by the umpire to be flagrant the player may be subject to the further penalty as defined in that section.
|
||||||
|
|
||||||
|
## Umpire Disputes
|
||||||
|
Discussion of a disputed umpires call shall be limited to the Managers, base coaches and the “aggrieved player. No player or other coach (third party) shall be allowed to leave the dugout or their defensive position to join in. The penalty for violating this rule shall be the immediate ejection from the game.
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 199 KiB After Width: | Height: | Size: 199 KiB |
1
docs/index.md
Normal file
1
docs/index.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# CMBA Constitution and By-Laws
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# CMBA Rulebooks
|
|
||||||
|
|
||||||
Use the navigation to view the documents.
|
|
||||||
@@ -1,26 +1,13 @@
|
|||||||
site_name: CMBA Rulebook
|
site_name: CMBA Constitution and By-Laws
|
||||||
docs_dir: ..
|
docs_dir: ../docs
|
||||||
site_dir: ./dist
|
|
||||||
|
|
||||||
# Prevent accidental publishing of repo/CI/dev clutter
|
# Prevent accidental publishing of repo/CI/dev clutter
|
||||||
exclude_docs: |
|
|
||||||
.github/
|
|
||||||
.git/
|
|
||||||
.venv/
|
|
||||||
venv/
|
|
||||||
"*.sh"
|
|
||||||
"*.py"
|
|
||||||
"*.yml"
|
|
||||||
"*.yaml"
|
|
||||||
"README.md"
|
|
||||||
theme:
|
theme:
|
||||||
name: material
|
name: material
|
||||||
palette:
|
palette:
|
||||||
scheme: default
|
scheme: default
|
||||||
primary: blue
|
primary: blue
|
||||||
accent: red
|
accent: red
|
||||||
logo: ../assets/cmba-logo.svg
|
|
||||||
favicon: ../assets/favicon.png
|
|
||||||
features:
|
features:
|
||||||
- navigation.instant
|
- navigation.instant
|
||||||
- navigation.tracking
|
- navigation.tracking
|
||||||
@@ -28,21 +15,29 @@ theme:
|
|||||||
- toc.integrate
|
- toc.integrate
|
||||||
- search.highlight
|
- search.highlight
|
||||||
- search.suggest
|
- search.suggest
|
||||||
|
logo: assets/cmba-logo.svg
|
||||||
|
favicon: assets/cmba-favicon.png
|
||||||
extra_css:
|
extra_css:
|
||||||
- mkdocs/styles/extra.css
|
- styles/extra.css
|
||||||
markdown_extensions:
|
markdown_extensions:
|
||||||
- toc:
|
- toc:
|
||||||
permalink: true
|
permalink: true
|
||||||
- admonition:
|
- admonition:
|
||||||
# - tables
|
# - tables
|
||||||
nav:
|
nav:
|
||||||
- Home: mkdocs/index.md
|
- Home: index.md
|
||||||
- Constitution: cmba-constitution.md
|
- 01-constitution-and-bylaws.md
|
||||||
- Bylaws: cmba-bylaws.md
|
- 02-league-rules-and-policy.md
|
||||||
|
- 03-playing-rules.md
|
||||||
|
|
||||||
plugins:
|
plugins:
|
||||||
- search
|
- search
|
||||||
|
- offline
|
||||||
- enumerate-headings:
|
- enumerate-headings:
|
||||||
toc_depth: 2
|
toc_depth: 2
|
||||||
exclude:
|
exclude:
|
||||||
- mkdocs/index.md
|
- index.md
|
||||||
|
|
||||||
|
validation:
|
||||||
|
links:
|
||||||
|
anchors: warn #this defaults to info, but it will cause broken links in anchor headers
|
||||||
|
|||||||
309
styles/style.css
309
styles/style.css
@@ -1,309 +0,0 @@
|
|||||||
/* CMBA Rulebook CSS for Pandoc HTML
|
|
||||||
Compatible with Pandoc's default HTML structure:
|
|
||||||
- header#title-block-header
|
|
||||||
- nav#TOC[role="doc-toc"]
|
|
||||||
- headings with ids/classes like .unnumbered
|
|
||||||
*/
|
|
||||||
|
|
||||||
@import url("https://fonts.googleapis.com/css2?family=Merriweather:ital,wght@0,400;0,700;1,400;1,700&display=swap");
|
|
||||||
|
|
||||||
:root{
|
|
||||||
--bg: #ffffff;
|
|
||||||
--fg: #111827; /* slate-900 */
|
|
||||||
--muted: #6b7280; /* gray-500 */
|
|
||||||
--border: #e5e7eb; /* gray-200 */
|
|
||||||
--card: #f9fafb; /* gray-50 */
|
|
||||||
--link: #1d4ed8; /* blue-700 */
|
|
||||||
--link-hover: #1e40af; /* blue-800 */
|
|
||||||
--code-bg: #0b1020; /* dark */
|
|
||||||
--code-fg: #e5e7eb;
|
|
||||||
|
|
||||||
--radius: 12px;
|
|
||||||
--content-max: 980px;
|
|
||||||
--toc-max: 320px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Base */
|
|
||||||
html { scroll-behavior: smooth; }
|
|
||||||
body{
|
|
||||||
margin: 0;
|
|
||||||
background: var(--bg);
|
|
||||||
color: var(--fg);
|
|
||||||
|
|
||||||
/* Rulebook serif stack */
|
|
||||||
font-family:
|
|
||||||
"Merriweather",
|
|
||||||
"Georgia",
|
|
||||||
"Times New Roman",
|
|
||||||
Times,
|
|
||||||
"Liberation Serif",
|
|
||||||
serif;
|
|
||||||
|
|
||||||
line-height: 1.6;
|
|
||||||
font-size: 16px;
|
|
||||||
text-rendering: optimizeLegibility;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Layout: single column on mobile, TOC sidebar on wide screens */
|
|
||||||
body{
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Give anchored headings a little offset for mobile browser bars */
|
|
||||||
h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]{
|
|
||||||
scroll-margin-top: 84px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Main document container: Pandoc outputs direct children; we style them */
|
|
||||||
header#title-block-header,
|
|
||||||
nav#TOC,
|
|
||||||
main,
|
|
||||||
body > h1, body > h2, body > h3, body > h4, body > h5, body > h6,
|
|
||||||
body > p, body > ul, body > ol, body > table, body > blockquote, body > pre, body > hr,
|
|
||||||
body > dl{
|
|
||||||
max-width: var(--content-max);
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Title block */
|
|
||||||
header#title-block-header{
|
|
||||||
padding: 20px 16px 8px;
|
|
||||||
border-bottom: 1px solid var(--border);
|
|
||||||
margin-bottom: 8px;
|
|
||||||
}
|
|
||||||
header#title-block-header .title{
|
|
||||||
margin: 0 0 6px;
|
|
||||||
font-size: 1.75rem;
|
|
||||||
line-height: 1.2;
|
|
||||||
letter-spacing: -0.02em;
|
|
||||||
}
|
|
||||||
header#title-block-header .subtitle{
|
|
||||||
margin: 0 0 8px;
|
|
||||||
color: var(--muted);
|
|
||||||
}
|
|
||||||
header#title-block-header .author,
|
|
||||||
header#title-block-header .date{
|
|
||||||
margin: 0;
|
|
||||||
color: var(--muted);
|
|
||||||
font-size: 0.95rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TOC card */
|
|
||||||
nav#TOC{
|
|
||||||
padding: 0 16px 12px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
nav#TOC > ul{
|
|
||||||
margin: 0;
|
|
||||||
padding: 14px 16px;
|
|
||||||
background: var(--card);
|
|
||||||
border: 1px solid var(--border);
|
|
||||||
border-radius: var(--radius);
|
|
||||||
}
|
|
||||||
nav#TOC ul{
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
nav#TOC li{
|
|
||||||
margin: 6px 0;
|
|
||||||
}
|
|
||||||
nav#TOC a{
|
|
||||||
color: var(--link);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
nav#TOC a:hover{
|
|
||||||
color: var(--link-hover);
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
nav#TOC ul ul{
|
|
||||||
margin-top: 6px;
|
|
||||||
padding-left: 14px;
|
|
||||||
border-left: 2px solid var(--border);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Content padding */
|
|
||||||
body > *{
|
|
||||||
padding-left: 16px;
|
|
||||||
padding-right: 16px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Headings */
|
|
||||||
h1, h2, h3, h4, h5, h6{
|
|
||||||
line-height: 1.25;
|
|
||||||
margin: 22px auto 10px;
|
|
||||||
letter-spacing: -0.01em;
|
|
||||||
}
|
|
||||||
h1{ font-size: 1.55rem; }
|
|
||||||
h2{ font-size: 1.25rem; }
|
|
||||||
h3{ font-size: 1.1rem; }
|
|
||||||
h4{ font-size: 1.0rem; }
|
|
||||||
h5{ font-size: 0.95rem; }
|
|
||||||
h6{ font-size: 0.9rem; color: var(--muted); }
|
|
||||||
|
|
||||||
/* Unnumbered headings (Pandoc uses .unnumbered sometimes) */
|
|
||||||
.unnumbered{
|
|
||||||
scroll-margin-top: 84px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Paragraphs and lists */
|
|
||||||
p{
|
|
||||||
margin: 0 auto 12px;
|
|
||||||
}
|
|
||||||
ul, ol{
|
|
||||||
margin: 0 auto 14px;
|
|
||||||
padding-left: 1.25rem;
|
|
||||||
}
|
|
||||||
li{
|
|
||||||
margin: 6px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Links */
|
|
||||||
a{
|
|
||||||
color: var(--link);
|
|
||||||
text-decoration-thickness: 2px;
|
|
||||||
text-underline-offset: 3px;
|
|
||||||
}
|
|
||||||
a:hover{
|
|
||||||
color: var(--link-hover);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Blockquotes */
|
|
||||||
blockquote{
|
|
||||||
margin: 14px auto;
|
|
||||||
padding: 10px 14px;
|
|
||||||
border-left: 4px solid var(--border);
|
|
||||||
background: var(--card);
|
|
||||||
border-radius: 10px;
|
|
||||||
color: #111827;
|
|
||||||
}
|
|
||||||
blockquote p{ margin: 0; }
|
|
||||||
|
|
||||||
/* Horizontal rule */
|
|
||||||
hr{
|
|
||||||
border: 0;
|
|
||||||
border-top: 1px solid var(--border);
|
|
||||||
margin: 18px auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Tables */
|
|
||||||
table{
|
|
||||||
width: 100%;
|
|
||||||
border-collapse: collapse;
|
|
||||||
margin: 14px auto 18px;
|
|
||||||
overflow: hidden;
|
|
||||||
border: 1px solid var(--border);
|
|
||||||
border-radius: var(--radius);
|
|
||||||
display: block; /* enables horizontal scroll on small screens */
|
|
||||||
}
|
|
||||||
thead th{
|
|
||||||
background: var(--card);
|
|
||||||
text-align: left;
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
th, td{
|
|
||||||
padding: 10px 12px;
|
|
||||||
border-bottom: 1px solid var(--border);
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
tbody tr:last-child td{ border-bottom: 0; }
|
|
||||||
|
|
||||||
/* Code */
|
|
||||||
code{
|
|
||||||
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
||||||
font-size: 0.95em;
|
|
||||||
background: #f3f4f6;
|
|
||||||
padding: 0.12em 0.32em;
|
|
||||||
border-radius: 6px;
|
|
||||||
}
|
|
||||||
pre{
|
|
||||||
margin: 14px auto 18px;
|
|
||||||
padding: 12px 14px;
|
|
||||||
background: var(--code-bg);
|
|
||||||
color: var(--code-fg);
|
|
||||||
border-radius: var(--radius);
|
|
||||||
overflow: auto;
|
|
||||||
border: 1px solid rgba(255,255,255,0.08);
|
|
||||||
}
|
|
||||||
pre code{
|
|
||||||
background: transparent;
|
|
||||||
color: inherit;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.quote-icon {
|
|
||||||
display: inline-block;
|
|
||||||
width: 0.9em;
|
|
||||||
height: 0.9em;
|
|
||||||
vertical-align: middle;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: contain;
|
|
||||||
background-image: url("data:image/svg+xml;utf8,\
|
|
||||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'>\
|
|
||||||
<path fill='currentColor' d='M96 224c0-35.3 28.7-64 64-64h32V64H160C71.6 64 0 135.6 0 224v64c0 70.7 57.3 128 128 128h32V288h-32c-17.7 0-32-14.3-32-32v-32zm256 0c0-35.3 28.7-64 64-64h32V64h-32c-88.4 0-160 71.6-160 160v64c0 70.7 57.3 128 128 128h32V288h-32c-17.7 0-32-14.3-32-32v-32z'/>\
|
|
||||||
</svg>");
|
|
||||||
}
|
|
||||||
.quote-btn {
|
|
||||||
margin-left:.5rem;
|
|
||||||
font-size:.8em;
|
|
||||||
vertical-align:middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Small-screen polish */
|
|
||||||
@media (max-width: 520px){
|
|
||||||
header#title-block-header .title{ font-size: 1.45rem; }
|
|
||||||
body{ font-size: 16px; }
|
|
||||||
nav#TOC > ul{ padding: 12px 14px; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Wide-screen layout: TOC sidebar + content */
|
|
||||||
@media (min-width: 1080px){
|
|
||||||
body{
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: minmax(260px, var(--toc-max)) minmax(0, 1fr);
|
|
||||||
gap: 18px;
|
|
||||||
align-items: start;
|
|
||||||
padding: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Remove the auto max-width behavior inside grid; we manage widths here */
|
|
||||||
header#title-block-header,
|
|
||||||
nav#TOC,
|
|
||||||
body > h1, body > h2, body > h3, body > h4, body > h5, body > h6,
|
|
||||||
body > p, body > ul, body > ol, body > table, body > blockquote, body > pre, body > hr,
|
|
||||||
body > dl{
|
|
||||||
max-width: none;
|
|
||||||
margin-left: 0;
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
header#title-block-header{
|
|
||||||
grid-column: 1 / -1;
|
|
||||||
padding: 16px 18px 10px;
|
|
||||||
border: 1px solid var(--border);
|
|
||||||
border-radius: var(--radius);
|
|
||||||
background: var(--bg);
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav#TOC{
|
|
||||||
grid-column: 1;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
position: sticky;
|
|
||||||
top: 18px;
|
|
||||||
max-height: calc(100vh - 36px);
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
nav#TOC > ul{
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Treat the rest of the content as column 2 */
|
|
||||||
body > :not(header#title-block-header):not(nav#TOC){
|
|
||||||
grid-column: 2;
|
|
||||||
padding-left: 0;
|
|
||||||
padding-right: 0;
|
|
||||||
max-width: var(--content-max);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
15
tools/build.sh
Executable file
15
tools/build.sh
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
MKDOCS_STRICT="${MKDOCS_STRICT:-true}"
|
||||||
|
TMPDIR="${RUNNER_TEMP:-$TMPDIR}"
|
||||||
|
OUTPUT_DIR="${OUTPUT_DIR:-${TMPDIR}/dist/}"
|
||||||
|
# OFFLINE="${OFFLINE:-false}" # This doesn't seem to do anything, set by mkdocs.yml
|
||||||
|
MKDOCS_CONFIG="${MKDOCS_CONFIG:-mkdocs/mkdocs.yml}"
|
||||||
|
|
||||||
|
STRICT_FLAG=""
|
||||||
|
if [ "${MKDOCS_STRICT}" = "true" ]; then
|
||||||
|
STRICT_FLAG="--strict"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdocs build ${STRICT_FLAG} -f $MKDOCS_CONFIG -d $OUTPUT_DIR
|
||||||
5
tools/spellcheck/baseball-words.txt
Normal file
5
tools/spellcheck/baseball-words.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
BBCOR
|
||||||
|
MLB
|
||||||
|
RO
|
||||||
|
Rawlings
|
||||||
|
rostered
|
||||||
25
tools/spellcheck/cspell.yml
Normal file
25
tools/spellcheck/cspell.yml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json
|
||||||
|
|
||||||
|
# The version of the configuration file format.
|
||||||
|
version: "0.2"
|
||||||
|
# The locale to use when spell checking. (e.g., en, en-GB, de-DE
|
||||||
|
language: en-US
|
||||||
|
useGitignore: true
|
||||||
|
globRoot: "../.."
|
||||||
|
allowCompoundWords: true
|
||||||
|
|
||||||
|
files:
|
||||||
|
- "**/*.md"
|
||||||
|
- ./README.md
|
||||||
|
|
||||||
|
dictionaryDefinitions:
|
||||||
|
- name: baseball-words
|
||||||
|
path: ./baseball-words.txt
|
||||||
|
|
||||||
|
dictionaries:
|
||||||
|
- baseball-words
|
||||||
|
|
||||||
|
words:
|
||||||
|
- cmba
|
||||||
|
- chicagoland
|
||||||
|
- gitdriver
|
||||||
Reference in New Issue
Block a user