Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 31 additions & 3 deletions .github/workflows/gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -325,8 +325,8 @@ jobs:
# timestamp). This catches the recurring row-ordering bug
# where the Edit tool's old_string=existing-line pattern
# inserts the new row BEFORE the matched line, producing
# reverse-chronological order. Aaron 2026-04-26 asked for
# structural prevention after I caught this bug at least
# reverse-chronological order. Maintainer 2026-04-26 asked for
# structural prevention after the bug was caught at least
# three times across recent ticks. The check is the
# "fail-fast at commit/push time" mechanism that doesn't
# rely on each agent's vigilance — Otto-339 anywhere-means-
Expand All @@ -346,7 +346,7 @@ jobs:

lint-no-conflict-markers:
# Fail if any committed file contains git merge-conflict markers
# (`<<<<<<<`, `=======`, `>>>>>>>`). Aaron 2026-04-26 ask:
# (`<<<<<<<`, `=======`, `>>>>>>>`). Maintainer 2026-04-26 ask:
# *"maybe we should hygene for <<<<<<< HEAD and >>>>>>> ======= things
# like that in our files incase we ever accidently botch a merge,
# happens to the best of us humans too."*
Expand All @@ -368,6 +368,34 @@ jobs:
- name: Run check-no-conflict-markers
run: tools/hygiene/check-no-conflict-markers.sh

lint-archive-header-section33:
# Fail if any courier-ferry / external-conversation import under
# docs/research/** is missing the GOVERNANCE.md §33 4-field archive
# boundary header in the first 20 lines, OR if its 'Operational
# status:' value is not enum-strict ('research-grade' or
# 'operational'). Factory observation 2026-04-26: §33 archive header
# was the most-common review finding across the 11-refinement
# courier-ferry lineage this session — every PR retrofitted post-
# review.
#
# Per Otto-346 (recurring pattern → substrate primitive) +
# Otto-341 (mechanism over vigilance), this lint catches the
# discipline at the structural layer: agents and humans cannot
# land courier-ferry imports without the §33 header anymore.
#
# B-0036 Sub-task 2 — wire the lint to gate.yml after Sub-task 1
# backfilled all pre-existing violations to 0.
name: lint (archive header §33)
timeout-minutes: 2
runs-on: ubuntu-22.04

steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Run check-archive-header-section33
run: tools/hygiene/check-archive-header-section33.sh

lint-no-empty-dirs:
# Fail if a committed directory has no files — almost always a
# forgotten artefact (an agent-created skill folder without a
Expand Down
Loading