Skip to content

backlog(B-0125): add multi-ruleset design path + Aaron's per-row host-mutation authorization#1005

Merged
AceHack merged 1 commit intomainfrom
backlog/B-0125-multi-ruleset-design-path-update-2026-05-01
May 1, 2026
Merged

backlog(B-0125): add multi-ruleset design path + Aaron's per-row host-mutation authorization#1005
AceHack merged 1 commit intomainfrom
backlog/B-0125-multi-ruleset-design-path-update-2026-05-01

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented May 1, 2026

Summary

Follow-up update to B-0125 (merged via #1004) — adds the multi-ruleset design path that Aaron surfaced in chat after #1004 was already auto-merging.

Aaron 2026-05-01 in chat: "maybe multiple rulesets i just had one for convience, you can do it for whats best for your and making humans feel comfortable, all makes humans feel comfortable i don't know if that help if not no worries."

What this adds

  • Acceptance criteria Round 27 — plugin API + governance split + memory-in-repo #3 path (c): multi-ruleset split (docs-targeted + code-targeted) as a third design-space option alongside conditional skip-vs-run and single-ruleset config change.
  • The reveal: single severity:all ruleset was a convenience choice, not a technical requirement. The real constraint is human-comfort signaling.
  • Per-row host-mutation authorization: Aaron's "you can do it for what's best" scoped explicitly to B-0125 implementation; NOT a blanket grant.
  • Out-of-scope clarification: multi-ruleset split keeps code-targeted ruleset at severity:all; only adds docs-targeted ruleset alongside (no protection reduction on src/).

Why a follow-up PR

The original B-0125 PR (#1004) auto-merged at 02:45:53Z before this update commit landed on the branch. Per substrate-or-it-didn't-happen, the design-space unlock + per-row authorization need to land on main before session-end so future-Otto on cold-start can see them.

Test plan

  • Update preserves original row content; only adds path (c) + authorization note + out-of-scope clarification
  • Auto-merge arm

🤖 Generated with Claude Code

…-mutation authorization

Per Aaron 2026-05-01 chat: "maybe multiple rulesets i just had one
for convience, you can do it for whats best for your and making
humans feel comfortable, all makes humans feel comfortable i don't
know if that help if not no worries."

Updates B-0125 acceptance criteria #3:
- Adds path (c): multi-ruleset split (docs-targeted + code-targeted)
- Surfaces Aaron's reveal that single severity:all ruleset was a
  convenience choice, not a technical requirement
- Names the real constraint: human-comfort signaling, not the
  literal severity:all configuration string
- Captures Aaron's per-row host-mutation authorization
  ("you can do it for what's best") scoped explicitly to B-0125
  implementation, NOT a blanket grant on host mutations going forward

Updates Out of Scope: clarifies that multi-ruleset split keeps the
code-targeted ruleset at severity:all (no protection reduction on
src/); only adds a docs-targeted ruleset alongside.

Materially relaxes the hardest constraint identified in the original
row.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 1, 2026 02:47
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@AceHack AceHack enabled auto-merge (squash) May 1, 2026 02:47
@AceHack AceHack merged commit 8f9205a into main May 1, 2026
23 of 24 checks passed
@AceHack AceHack deleted the backlog/B-0125-multi-ruleset-design-path-update-2026-05-01 branch May 1, 2026 02:49
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates backlog row B-0125 to capture an additional design option (multi-ruleset split) for skipping F#-only CI steps on docs-only PRs without breaking code_quality severity:all, and records scoped host-mutation authorization context.

Changes:

  • Expands Acceptance Criteria #3 to include a third implementation path: multi-ruleset split (docs-targeted + code-targeted).
  • Adds an explicit note that host-mutation authorization is scoped to this row, not a general grant.
  • Clarifies out-of-scope boundaries to avoid lowering protections for code (src/) surfaces.

- **Changing what `code_quality severity:all` requires** beyond the minimum needed to support the path-filter (host-mutation needs Aaron sign-off, not Otto-authority).
- **Changing what `code_quality severity:all` requires** for code surfaces (src/) — that protection stays at the same severity level. Multi-ruleset split adds a docs-targeted ruleset alongside; it does NOT lower the bar on the code-targeted ruleset.
- **Skipping CodeQL on other languages** (only F#/csharp is named in Aaron's chat carve-out).
- **Skipping TypeScript checks ever** — TypeScript IS docs surface per CURRENT-aaron §30.
Copy link

Copilot AI May 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This bullet says “TypeScript IS docs surface per CURRENT-aaron §30”, but §30 in memory/CURRENT-aaron.md is specifically “TypeScript/Bun is the factory tooling default” (i.e., treat it as code/tooling). Since this row also earlier says “TypeScript is factory tooling … treat as code”, this wording is internally inconsistent and could mislead someone into thinking TS checks are skippable on docs PRs. Suggest rephrase to consistently state that TS is factory tooling and must never be skipped, even on docs-only PRs.

Suggested change
- **Skipping TypeScript checks ever** — TypeScript IS docs surface per CURRENT-aaron §30.
- **Skipping TypeScript checks ever** — TypeScript is factory tooling per CURRENT-aaron §30, so treat it as code/tooling and never skip it, including on docs-only PRs.

Copilot uses AI. Check for mistakes.
- (b) Coordinated ruleset config change on the existing single ruleset, OR
- (c) **Multi-ruleset split** — separate docs-targeted ruleset (lower bar; F# Analyze not required) + code-targeted ruleset (severity:all on src/ paths). Aaron 2026-05-01 in chat: *"maybe multiple rulesets i just had one for convience, you can do it for whats best for your and making humans feel comfortable, all makes humans feel comfortable i don't know if that help if not no worries."* This reveals the single severity:all ruleset was set up for convenience, not as a technical requirement. The real constraint is **human-comfort signaling** — humans see "all required checks passing" and feel reassured; the literal severity:all configuration is one of several ways to produce that signal. A multi-ruleset design that surfaces "all required-for-this-surface checks pass" preserves the comfort property without requiring F# Analyze on docs PRs.

**Aaron's host-mutation authorization for this work specifically (2026-05-01):** *"you can do it for what's best."* Scoped explicitly to the ruleset-redesign work in this row. NOT a blanket grant on host mutations going forward — the §16 host-mutation-needs-sign-off rule remains in force; this is an explicit per-row carve-out for B-0125 implementation.
Copy link

Copilot AI May 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The reference to “§16 host-mutation-needs-sign-off rule” appears to be an incorrect/unclear cross-reference (repo-wide §16 is used for other meanings, and this file doesn’t define a §16). Please replace this with a verifiable pointer to the actual host-mutation constraint you mean (e.g., the host-mutation receipt memory file or another canonical doc section), so future implementers can trace the rule unambiguously.

Suggested change
**Aaron's host-mutation authorization for this work specifically (2026-05-01):** *"you can do it for what's best."* Scoped explicitly to the ruleset-redesign work in this row. NOT a blanket grant on host mutations going forward — the §16 host-mutation-needs-sign-off rule remains in force; this is an explicit per-row carve-out for B-0125 implementation.
**Aaron's host-mutation authorization for this work specifically (2026-05-01):** *"you can do it for what's best."* Scoped explicitly to the ruleset-redesign work in this row. NOT a blanket grant on host mutations going forward — the host-mutation sign-off constraint evidenced by the `memory/feedback_*` receipts for PRs #849/#857/#651 and the task #343 drift-debt receipt mentioned above remains in force; this is an explicit per-row carve-out for B-0125 implementation.

Copilot uses AI. Check for mistakes.
AceHack added a commit that referenced this pull request May 1, 2026
…+ regenerate aggregate (#1016)

* hygiene(backlog-index): backfill YAML frontmatter on B-0124/B-0125/B-0126 + regenerate aggregate

Pre-existing drift on main: B-0124 (#1000), B-0125 (#1004/#1005),
and B-0126 (#1011) all merged with `# Heading` row format but
without the YAML frontmatter (`id`, `priority`, `status`, `title`)
that `tools/backlog/generate-index.sh` reads. The generator
produced empty `**[](path)**` entries; the committed BACKLOG.md
omitted those entries entirely; the integrity check fails on
every new backlog PR (#1012, #1015) because the diff surfaces
the pre-existing rows as missing.

Fix: additive frontmatter blocks above each row's existing `#`
heading, no body content changed. Regenerate `docs/BACKLOG.md`
to match the canonical generator output.

Why frontmatter `title` is generic for B-0126 ("a sibling
repo," not the original leaky internal name): per
`memory/feedback_no_copy_only_learning_from_sibling_repos_aaron_2026_04_30.md`,
sibling-repo internal names do not cross to general-circulation
substrate. The file *body* keeps its un-scrubbed exemplar
status per Aaron 2026-05-01 *"you can leave your mistake"* +
*"we should leave this one even then"* — only the aggregate
title (which appears in `docs/BACKLOG.md` as forward-going
substrate) gets the generic phrasing. The path itself remains
unchanged (path-leak is part of the un-scrubbed exemplar).

Unblocks the `check docs/BACKLOG.md generated-index drift` CI
check on currently-open backlog PRs (#1012 B-0127, #1015
B-0128). Those PRs need their own frontmatter additions on
top of this; this PR is the precondition.

Composes with:
- `.github/workflows/backlog-index-integrity.yml` — the CI
  check this fix unblocks.
- `tools/backlog/generate-index.sh` — the generator the fix
  satisfies.
- `docs/research/backlog-split-design-otto-181.md` — the
  per-row schema this fix retroactively applies.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* hygiene(backlog-index): add created + last_updated frontmatter per schema (Codex P2)

Per `tools/backlog/README.md` schema, backlog row frontmatter
requires `created` (YYYY-MM-DD) and `last_updated` (YYYY-MM-DD)
fields. The 3 rows this PR backfills (B-0124, B-0125, B-0126)
were missing both. Added: created: 2026-05-01 +
last_updated: 2026-05-01 (the rows' authoring date).

Generator output unchanged (the index doesn't print these
fields), so docs/BACKLOG.md is still in sync.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants