Skip to content

backlog(B-0572): LFG GitHub tier decision — try Enterprise (downgrade-anytime de-risks)#3952

Open
AceHack wants to merge 2 commits into
mainfrom
feature/b-0572-lfg-tier-audit-2026-05-16
Open

backlog(B-0572): LFG GitHub tier decision — try Enterprise (downgrade-anytime de-risks)#3952
AceHack wants to merge 2 commits into
mainfrom
feature/b-0572-lfg-tier-audit-2026-05-16

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented May 16, 2026

Summary

B-0572 row, pivoted from "audit the tier" to "decision: try Enterprise" based on 2026-05-16 dashboard evidence + Aaron's decision.

What this PR captures

  • Audit RESOLVED: LFG is on GitHub Team tier ($96/yr, 2 licenses); confirmed via Aaron's billing dashboard screenshot
  • Critical finding: $2,863.18/mo in included-usage discounts against $2,872.98 metered usage = net ~$9.81/mo. Vast majority of usage is tier-included credits (Models / Actions / Spark per dashboard tabs)
  • Decision (Aaron 2026-05-16): "we will just try it, it says we can downgrade anytime" — downgrade escape valve eliminates cost-of-decision risk
  • Row pivots from "decide whether" to "monitor post-upgrade and trigger downgrade if discounts don't persist or features don't justify"

Composes with

  • B-0570 (scarcity tracker — visibility layer)
  • B-0571 (GitHub App — separate-pool alternative; these compose, not alternatives. App still wins long-term: separate-pool > bigger-same-pool. Enterprise gives 3× per-user headroom + org features)

Open monitoring items

Post-trial: capture per-service discount breakdown (Models / Actions / Codespaces / Spark), verify each persists at Enterprise tier. If at-risk line items surface, downgrade before promo ends.

🤖 Generated with Claude Code

Copilot AI review requested due to automatic review settings May 16, 2026 22:07
@AceHack AceHack enabled auto-merge (squash) May 16, 2026 22:07
…ngrade-anytime de-risks)

Audit RESOLVED 2026-05-16 via Aaron's billing-dashboard screenshot:
LFG is on GitHub Team tier ($96/yr, 2 licenses @ $48/user/yr). Critical
finding for upgrade decision: $2,863.18/mo in included-usage discounts
against $2,872.98 metered usage = net ~$9.81/mo Copilot. Vast majority
of usage underwritten by tier-included credits (Models/Actions/Spark per
dashboard tabs).

Aaron 2026-05-16: "we will just try it, it says we can downgrade anytime"
— downgrade escape valve eliminates cost-of-decision risk. Row pivots
from "decide whether to upgrade" to "monitor post-upgrade and trigger
downgrade if discounts don't persist."

Composes with B-0570 (scarcity tracker — visibility) and B-0571 (GitHub
App — separate-pool alternative; these compose, not alternatives).
GitHub App still wins long-term because separate-pool > bigger-same-pool;
Enterprise gives 3× per-user headroom + organizational features.

Co-Authored-By: Claude <noreply@anthropic.com>
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

Adds a new backlog decision row (B-0572) capturing the GitHub tier audit outcome and the decision to trial Enterprise, and updates the generated backlog index accordingly.

Changes:

  • Added docs/backlog/P2/B-0572-... decision row documenting Team confirmation, Enterprise trial rationale, and monitoring acceptance criteria.
  • Regenerated docs/BACKLOG.md to include the new B-0572 entry.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
docs/backlog/P2/B-0572-lfg-github-tier-decision-2026-05-16.md New P2 decision row capturing the Enterprise trial decision and follow-up verification/monitoring steps.
docs/BACKLOG.md Generated index updated to list B-0572 under P2.

Comment thread docs/backlog/P2/B-0572-lfg-github-tier-decision-2026-05-16.md Outdated
@AceHack AceHack force-pushed the feature/b-0572-lfg-tier-audit-2026-05-16 branch from 379c09c to 6970c49 Compare May 16, 2026 22:11
… existing option

Resolves Copilot P1 thread (line 54): both `docs/AUTH.md` and `docs/SCARCITY.md` are placeholders; original phrasing read as an either-or between existing docs. Pin to `docs/SCARCITY.md` (new) and call out the as-of-today state explicitly.
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

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

Comment thread docs/backlog/P2/B-0572-lfg-github-tier-decision-2026-05-16.md
Comment thread docs/backlog/P2/B-0572-lfg-github-tier-decision-2026-05-16.md
AceHack added a commit that referenced this pull request May 16, 2026
- Grammar fix: "boxes IS" → "boxes ARE" (line 67 of the row body)
- Acceptance criteria clarity: replace wrapper OR hook with explicit
  both-required structure; add Close condition naming slice 1 +
  slice 3 + slice 7 integration as the row's close gate. Matches the
  "Probably: both" framing already in Open Question 1.

The composes_with frontmatter refs (B-0572, B-0581) are not deleted —
both rows are in flight via sibling PRs (B-0572 via PR #3952, B-0581
via PR #3961). Per `.claude/rules/blocked-green-ci-investigate-threads.md`
this is the "stale-but-fresh-looking" pattern: TRUE-at-thread-filing,
self-healing once siblings merge. composes_with carries design intent
independent of merge ordering.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request May 16, 2026
…el layer-one architectural recommendation) (#3964)

* backlog(B-0582): substrate-level destructive-verb refusal gate (Kestrel layer-one)

Per Kestrel's 2026-05-16 long-term architecture recommendation (relayed
by Aaron verbatim): a mechanical pre-call refusal gate in Otto's execution
path that aborts destructive-class operations regardless of token scope.

Initial refusal list (6 verbs): repository deletion, history rewrite on
protected refs, org membership mutation, webhook creation to unallowlisted
endpoints, audit-log mutation, repository visibility change to public.

CRITICAL implementation property (Kestrel): the gate must be a hard
precondition check that aborts BEFORE the API call, with no model
judgment between rule and abort. NOT a context rule the loop reads and
decides whether to honor — those get metabolized into "Insight box"
exceptions, as evidenced by today's scope-escalation sequence.

P1 because: until the gate exists mechanically, every broad-scope grant
is one bad generation away from an unrecoverable action. The existing
methodology-hard-limits.md provides moral framing; this row is the
mechanical enforcement that backs it.

Forkable: gate file in the tree, forks inherit it. Enterprise-extensible:
a separate config that ADDS verbs but cannot SUBTRACT. Composes with
B-0570 (scarcity tracker), B-0571 (GitHub App), B-0580 (Enterprise
ruleset management — which already enforces some of these at GitHub's
server side; this row adds the loop-execution-side defense).

7-slice decomposition. M effort.

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

* docs(B-0582): address Copilot review threads

- Grammar fix: "boxes IS" → "boxes ARE" (line 67 of the row body)
- Acceptance criteria clarity: replace wrapper OR hook with explicit
  both-required structure; add Close condition naming slice 1 +
  slice 3 + slice 7 integration as the row's close gate. Matches the
  "Probably: both" framing already in Open Question 1.

The composes_with frontmatter refs (B-0572, B-0581) are not deleted —
both rows are in flight via sibling PRs (B-0572 via PR #3952, B-0581
via PR #3961). Per `.claude/rules/blocked-green-ci-investigate-threads.md`
this is the "stale-but-fresh-looking" pattern: TRUE-at-thread-filing,
self-healing once siblings merge. composes_with carries design intent
independent of merge ordering.

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

---------

Co-authored-by: Claude <noreply@anthropic.com>
AceHack added a commit that referenced this pull request May 17, 2026
…tion (#3975)

* docs(tick): 2341Z — Otto-CLI background worker resolved PR #3964 threads

Background-worker session, post-Lior-active window:
- Sentinel re-armed (catch-43)
- 4 BLOCKED+resolve-threads PRs found; 3 are Lior-lane (skipped)
- PR #3964 (B-0582 destructive-verb refusal gate) actioned:
  3 Copilot threads — 2 real edits (grammar + acceptance criteria
  clarity), 1 stale-but-fresh-looking pattern (composes_with refs to
  in-flight sibling PRs #3952 + #3961)
- All threads replied + resolved; auto-merge stays armed
- Post-state: unresolvedThreads=0, gate=BLOCKED on wait-ci

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

* fix(tick): markdownlint MD032 + correct .claude/rules relative paths

Two findings from CI + Copilot:
- MD032: blank line required before list after "poll-pr-gate.ts 3964:"
- Relative-link depth: tick file is 6 levels deep under repo root, so
  links to .claude/rules/* need 6 `..` segments (not 5).

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