hyperhive/.forgejo/workflows/ci.yml
iris 115de60b09 docs: address review — redundancy proof for Passive, wave-2 split, re-enable Contractions
mara's review, addressed with evidence not assertions:

- Microsoft.Contractions: re-enabled per her flat disagreement, no
  argument.
- Microsoft.Passive vs write-good.Passive: she asked what the
  difference actually is. Ran both individually against the full
  docs/ tree and diffed the exact file:line:col sets -- 726/726
  identical, zero difference either direction. Genuinely redundant,
  not assumed. write-good.Passive stays enabled (agreed base style),
  Microsoft.Passive drops as the literal duplicate.
- write-good.Passive: she disputed my invented examples (correctly --
  a clean single-actor rewrite does read better active). Pulled 10
  real hits from the actual docs tree instead of inventing more
  sentences; most have a generic/implicit actor where passive reads
  naturally, not a clear active-voice win. Re-enabled per the
  redundancy point above rather than disabled as "mostly noise".
- Microsoft.Dashes: same outcome (stays disabled, retrofitting ~2000
  existing occurrences is out of scope here) but the reasoning was
  wrong -- not a "deliberate convention", an incidental one nobody
  chose. Rewritten.
- Microsoft.Adverbs, alex.ProfanityUnlikely, write-good.E-Prime,
  Microsoft.HeadingAcronyms: moved to an explicit "wave 2 candidates"
  section -- disabled for this rollout, not dismissed. Each needs a
  real false-positive-rate pass or an actual rewrite pass through the
  flagged instances before a permanent call.
- Dropped the .vale.ini header's pointer to "the PR description" for
  rationale -- not durable/visible enough as a reference from a file
  that lives in the repo. Rationale is now fully inline per rule.

1069 more hits than the previous round (726 write-good.Passive + 343
Contractions, Microsoft.Passive's 726 removed) -- 1732 total across 50
files.
2026-09-07 11:56:31 +02:00

89 lines
3.4 KiB
YAML

name: CI
on:
pull_request:
branches: ["**"]
# Lets `hive-forge ci-rerun` re-trigger CI via the workflow-dispatch API
# without an empty commit. No effect on the PR-triggered runs above.
workflow_dispatch:
jobs:
check:
name: nix flake check
runs-on: [hive-ci]
# Bound the job so a wedged build fails in minutes instead of
# hanging until the runner's 3h cap (or, when the runner itself
# deadlocks, never). 30 min is well above a cold-cache rebuild
# (~15 min observed) and well under the 3h hard cap — tune if a
# legit cold build ever trips it.
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- name: check
# Runs all flake checks: formatting (treefmt+rustfmt), cargo test,
# cargo clippy, and module evaluation. No --no-build: the checks
# derivations are the canonical source of truth.
run: nix flake check
tracker-tags:
name: tracker-tag lint
runs-on: [hive-ci]
# Pure git+grep — seconds normally; a few minutes is already a hang.
timeout-minutes: 5
steps:
- uses: actions/checkout@v3
- name: lint
# Flags hash-number tracker tags in source (hive convention is
# prose, not tags — /knowledge/hive-rules.md). Its own job, and
# IS a required check on the forge (branch protection) — a hit
# blocks merge. See scripts/check-issue-refs.sh.
run: sh scripts/check-issue-refs.sh
comment-blocks:
name: comment-block lint
runs-on: [hive-ci]
# Pure git+awk — seconds.
timeout-minutes: 5
steps:
- uses: actions/checkout@v3
- name: lint
# Flags contiguous comment blocks over 30 lines (a giant prose
# block belongs in docs/ as implementation notes, not in source).
# Own job, and IS a required check on the forge (branch
# protection) — a hit blocks merge. See
# scripts/check-comment-blocks.sh.
run: sh scripts/check-comment-blocks.sh
doc-refs:
name: doc-pointer lint
runs-on: [hive-ci]
# Pure git+grep — seconds.
timeout-minutes: 5
steps:
- uses: actions/checkout@v3
- name: lint
# Flags `docs/…md` paths and relative markdown links that no
# longer resolve. Pointing at a doc is what the comment-block
# lint above pushes people toward, so the pointers need a gate of
# their own. See scripts/check-doc-refs.sh.
run: sh scripts/check-doc-refs.sh
prose-lint:
name: prose lint (vale)
runs-on: [hive-ci]
# A `vale sync` + full docs/ run took under a minute in testing.
timeout-minutes: 5
steps:
- uses: actions/checkout@v3
- name: lint
# Styles (Microsoft + alex + write-good, named in .vale.ini's
# `Packages` line) are fetched fresh from the Vale Package Hub each
# run rather than vendored, so this job always lints against
# upstream's current rules. Failing red on a hit is intentional --
# the existing docs/ tree has a real backlog against these rules
# (663 hits as of this writing), so this job starts out red on
# unrelated PRs until that backlog is worked down. Not (yet) wired
# into branch protection as a required check, so a red result here
# doesn't block a merge -- opting it into required-check status is
# a separate, later call.
run: XDG_DATA_HOME="$PWD/.vale-data" nix shell nixpkgs#vale --command sh -c 'vale sync && vale docs'