-
Notifications
You must be signed in to change notification settings - Fork 1
chore(b-0368): decompose Claude Code permissions investigation to B-0532 and B-0533 #3545
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 3 commits
1c5226f
8229fd7
ad49c43
d7bda50
d34d18d
cd39d6b
d9f1057
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| --- | ||
| id: B-0532 | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Useful? React with 👍 / 👎. |
||
| priority: P2 | ||
| status: open | ||
| title: Investigate hardcoded safety gates vs settings-allowable actions for Claude Code | ||
| created: 2026-05-15 | ||
| last_updated: 2026-05-15 | ||
| depends_on: [] | ||
| decomposition: atomic | ||
| type: friction-reducer | ||
| --- | ||
|
Comment on lines
+1
to
+11
|
||
|
|
||
| # B-0532 — Investigate hardcoded safety gates vs settings-allowable actions | ||
|
|
||
| **Parent**: B-0368 | ||
| **Filed by**: Lior (decomposed from B-0368 parent row) | ||
|
|
||
| ## Scope | ||
|
|
||
| This is slice 2 of the Claude Code `/permissions` feature integration. | ||
| The objective is to investigate hardcoded safety gates versus settings-allowable actions (per the Tick-6 merge denial evidence in B-0368). | ||
|
|
||
| ## Acceptance criteria | ||
|
|
||
| 1. **Deeper investigation into API**: Research the `/permissions` API to distinguish hardcoded safety guards from `.claude/settings.json` allow-lists. | ||
| 2. **Category model**: Determine which actions are settings-allowable versus hardcoded-safety-denial. | ||
| 3. **Merge-other-PRs specifics**: Specifically for "merge-PRs-the-agent-didn't-create" — is this addressable via `.claude/settings.json` (per-PR number allow rule, per-author rule) or does it require an explicit user pre-authorization separate from the settings file? | ||
| 4. Update findings in the research docs and determine if further targeted additions are required. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| --- | ||
| id: B-0533 | ||
| priority: P2 | ||
| status: open | ||
| title: Document Claude Code permissions integration pattern in CLAUDE.md | ||
| created: 2026-05-15 | ||
| last_updated: 2026-05-15 | ||
| depends_on: [B-0532] | ||
| decomposition: atomic | ||
| type: documentation | ||
|
Comment on lines
+1
to
+10
|
||
| --- | ||
|
|
||
| # B-0533 — Document Claude Code permissions integration pattern in CLAUDE.md | ||
|
|
||
| **Parent**: B-0368 | ||
| **Filed by**: Lior (decomposed from B-0368 parent row) | ||
|
|
||
| ## Scope | ||
|
|
||
| This is slice 3 of the Claude Code `/permissions` feature integration. | ||
| The objective is to document the integration pattern in `CLAUDE.md` or a dedicated doc so future-Otto knows the pattern. | ||
|
|
||
| ## Acceptance criteria | ||
|
|
||
| 1. Extract the operational findings from B-0368 and B-0532. | ||
| 2. Formulate carved sentences regarding the Claude Code permission scopes, the interaction with `.claude/settings.json`, and the Don't-Ask-Permission rule integration. | ||
| 3. Add the finalized rules to `CLAUDE.md`. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1 @@ | ||
| | 2026-05-01T21:58:00Z | opus-4-7 / autonomous-loop tick | 98fc7424 | Phase 1 absorption tick — Claude.ai packet on refresh-before-decide invariant + two-layer print DX. **REFRESH WORLD MODEL** (applying the rule I just landed): #1168 + #1170 MERGED, #1171 wait-ci + auto-merge armed. The maintainer shared a major Claude.ai feedback packet — a 'Backlog-Driven Dual-PM Agent Loop with Refresh Discipline — Carved Handoff' covering loop identity, refresh primitive, tick selection, DST grader, lesson generation, skill index, Mirror/Beacon ratio gate, convergence, cross-harness durability, pre-DORA proxy metrics, 22 named failure modes, operational invariants. Per substrate-or-it-didn't-happen + GOVERNANCE §33 verbatim-preservation trigger (architecture-changing + multi-AI review packet → preserve verbatim FIRST), landed three artifacts on PR #1171: (1) docs/research/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md with verbatim packet + four-field header; (2) memory/feedback_refresh_before_decide_invariant_two_layer_print_dx_claudeai_2026_05_01.md extracting the load-bearing piece the maintainer specifically flagged ('refresh-before-decide is the most violated invariant in agent loops generally'); (3) CLAUDE.md ground-rule bullet at upstream-invariant position (before the existing refresh-via-poll-pr-gate bullet — implementation vs discipline split). Phase 2 deferred: the 22 failure modes, metrics framework, Mirror/Beacon ratio gate, convergence definitions absorb organically as failures surface (Ratchet Pattern threshold 2x; Phase 1 alone is the right scope per Doctrine-recursion guard). The carved one-liner from the packet: 'Refresh produces ground truth; reactive starves proactive; backlog flows through ticks; lessons accumulate in skills indexed by descriptor; DST grades each tick; metrics grade the arc; cooling separates loose-pole from canon; same discipline grades the loop itself.' Empirical Otto-pattern this session that motivates the rule landed: at least 4 instances of acting on stale derived state (PR thread counts from prior tick, dangling-pointer findings, predicted rebase outcomes, cached file-overlap). Cure was always cheap-refresh-again. Tool existed; discipline naming was missing. Cron 98fc7424 healthy. | [PR #1171 OPENED with three-artifact Phase 1 absorption (verbatim packet + memo + CLAUDE.md bullet + MEMORY.md row pair-edit); auto-merge armed; #1168 + #1170 confirmed merged; tick-history queue continues] | The packet's framing of two-layer print DX is operationally already true in poll-pr-gate-batch.ts (raw reports[] + interpretation summary aggregate); the discipline now has explicit naming. The Ratchet Pattern self-applies to absorption: bulk-importing 22 failure modes would itself be Doctrine-recursion (substrate-without-execution); deferring to organic per-failure absorption matches the 2x-occurrence threshold. The refresh-before-decide invariant is structurally upstream of the rebase-decision rule + BLOCKED-with-green-CI rule + Copilot tick-history false-positive rule — they all are special cases that depend on having current worldview. CLAUDE.md bullet placement reflects this: refresh-before-decide bullet is FIRST in the wake-time disciplines because every other rule assumes it. | | ||
| | 2026-05-01T21:58:00Z | opus-4-7 / autonomous-loop tick | 98fc7424 | Phase 1 absorption tick — Claude.ai packet on refresh-before-decide invariant + two-layer print DX. **REFRESH WORLD MODEL** (applying the rule I just landed): #1168 + #1170 MERGED, #1171 wait-ci + auto-merge armed. The maintainer shared a major Claude.ai feedback packet — a 'Backlog-Driven Dual-PM Agent Loop with Refresh Discipline — Carved Handoff' covering loop identity, refresh primitive, tick selection, DST grader, lesson generation, skill index, Mirror/Beacon ratio gate, convergence, cross-harness durability, pre-DORA proxy metrics, 22 named failure modes, operational invariants. Per substrate-or-it-didn't-happen + GOVERNANCE §33 verbatim-preservation trigger (architecture-changing + multi-AI review packet → preserve verbatim FIRST), landed three artifacts on PR #1171: (1) memory/persona/riven/conversations/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md with verbatim packet + four-field header; (2) memory/feedback_refresh_before_decide_invariant_two_layer_print_dx_claudeai_2026_05_01.md extracting the load-bearing piece the maintainer specifically flagged ('refresh-before-decide is the most violated invariant in agent loops generally'); (3) CLAUDE.md ground-rule bullet at upstream-invariant position (before the existing refresh-via-poll-pr-gate bullet — implementation vs discipline split). Phase 2 deferred: the 22 failure modes, metrics framework, Mirror/Beacon ratio gate, convergence definitions absorb organically as failures surface (Ratchet Pattern threshold 2x; Phase 1 alone is the right scope per Doctrine-recursion guard). The carved one-liner from the packet: 'Refresh produces ground truth; reactive starves proactive; backlog flows through ticks; lessons accumulate in skills indexed by descriptor; DST grades each tick; metrics grade the arc; cooling separates loose-pole from canon; same discipline grades the loop itself.' Empirical Otto-pattern this session that motivates the rule landed: at least 4 instances of acting on stale derived state (PR thread counts from prior tick, dangling-pointer findings, predicted rebase outcomes, cached file-overlap). Cure was always cheap-refresh-again. Tool existed; discipline naming was missing. Cron 98fc7424 healthy. | [PR #1171 OPENED with three-artifact Phase 1 absorption (verbatim packet + memo + CLAUDE.md bullet + MEMORY.md row pair-edit); auto-merge armed; #1168 + #1170 confirmed merged; tick-history queue continues] | The packet's framing of two-layer print DX is operationally already true in poll-pr-gate-batch.ts (raw reports[] + interpretation summary aggregate); the discipline now has explicit naming. The Ratchet Pattern self-applies to absorption: bulk-importing 22 failure modes would itself be Doctrine-recursion (substrate-without-execution); deferring to organic per-failure absorption matches the 2x-occurrence threshold. The refresh-before-decide invariant is structurally upstream of the rebase-decision rule + BLOCKED-with-green-CI rule + Copilot tick-history false-positive rule — they all are special cases that depend on having current worldview. CLAUDE.md bullet placement reflects this: refresh-before-decide bullet is FIRST in the wake-time disciplines because every other rule assumes it. | |
Uh oh!
There was an error while loading. Please reload this page.