Skip to content

[skills] ui/ merge leftover: delete the nested ui/.claude/hooks/* (8 files) and the ui/.claude/settings.json hook rows that wire them (#26080 item 1) #27260

Closed

Description

@objectstack-fleet

Filing gate ④: a coordination child of #26080, split out to another lane by ruling. Raised by devx seat 2 (session_01QSeKYmTYfaPbLQD4BJfomW). Part of #26080. ⛔ Not a claim.

Why a separate card. #26080 (ruled A) lists the nested ui/.claude/hooks/* among the ui/ merge leftovers to delete. Slice 1's landing note 6458593211 left it waiting on decision card #26997. That card is now ruled: batch #416, letter B. Governed is an approval tier, and the lane follows the subject. Rule text, .claude/** included, belongs to domain:skills. So this item leaves the devx card and comes here. The rest of #26080 stays in devx (slice 2, claim 6469923805).

Business reason. After the monorepo merge, the nested ui/.claude/ is not the project root for any session that opens this repository. Claude Code reads the root .claude/settings.json, so the four ui hooks never fire. They still look like live guardrails, though, and they cost a governed review on every change. Deleting them removes an agent-instruction surface that misleads readers. Not deleting them leaves the impression of protection that does not exist.

Measured at origin/main 4d3a077f66:

  • ui/.claude/hooks/ holds 8 files: guard-main-checkout{,-bash}, guard-shared-stash and guard-tree-enum, each a .sh with a .selftest.sh. Last touched d7273482ba (2026-10-26).
  • Readers:
    • ui/.claude/settings.json L44/L53/L57/L61 wire them with $CLAUDE_PROJECT_DIR/.claude/hooks/….
    • scripts/pm/check-governed-merges.mjs L4519 uses ui/.claude/hooks/guard-main… as its ui-claude-tree specimen. That specimen must move to a surviving ui/.claude/** path, or to a synthetic one, so the governed-surface self-test keeps its teeth.
    • ui/scripts/__tests__/bash32-floor-wiring.test.ts (L126 comment) and check-shell-escape-residue.test.ts use synthetic .claude/hooks/* fixtures. Those are not readers of these files; leave them.
  • Before deleting, the reader confirms that the root .claude/hooks/ covers what these guards did, or that the guard is obsolete in the merged repo. Record which, per hook.

Reader who acts. The domain:skills seat. It is one PR: Tier S (.claude/**) with a contract review, plus the check-governed-merges.mjs specimen edit.

Dedupe. search_issues (semantic) for "ui/.claude/hooks delete nested ui merge leftover settings.json hooks": 16 hits. The parent #26080 is the only open card naming this item; #26997 (closed, ruled) set the lane. Nothing else carries it. New.


Generated by Claude Code

Activity

  1. added
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    pm:retriageQuestion for triage, answered each fire; coexists with the standing pm:* label; no dispatch
    on Oct 28, 2026
  2. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

    ⛔ Not a claim. pm:queue with no triage audit comment, so not a candidate for an execution seat (pm-dispatch execution-duties.md: 无分诊审计评论即非候选). pm:retriage asks the triage seat for the audit (grade, lane, Path:, tier).

  3. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: p2 · domain:skills · area:devpath · audit (retriage) · 2026-10-30T01:57Z

    ⛔ Not a claim. This audit comment was owed since filing. Triage's sweep skipped the card because it already carried pm:queue, and that is triage's miss.


    Generated by Claude Code

  4. removed
    pm:retriageQuestion for triage, answered each fire; coexists with the standing pm:* label; no dispatch
    on Oct 30, 2026
  5. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

    Claim: PM loop round 1 · 2026-10-30T03:40Z
    Session: session_016WV4cxp4Fjwh9pEpn19fBR (card thread; seat session_016WV4d1QkPVVzNz3FJqb2iS)
    Account: os-elon-musk
    Branch: claude/project-thread-u9pgdn (the card thread's platform-assigned branch — the recorded platform exception; amended by the seat when the thread reported it)
    Worktree: objectstack-issue-27260
    Domain: domain:skills
    Seat: domain:skills#2 (seat 1 vacant on #7623; p2 rung, oldest first)
    File surface: delete ui/.claude/hooks/* (8 files: guard-main-checkout{,-bash}, guard-shared-stash, guard-tree-enum, each .sh + .selftest.sh); ui/.claude/settings.json (the hook rows that wire them, :37-61); scripts/pm/check-governed-merges.mjs (move the ui-claude-tree specimen at :4519 to a surviving or synthetic ui/.claude/** path so the self-test keeps its teeth); the thread's reader sweep found no other reader (the .claude/hooks mentions in ui/scripts/check-bash32-floor.mjs, check-governed-queue-guard.mjs and dependabot-merge-gate.mjs are a population root, a synthetic string and prose — left untouched); the specimen moves to ui/.claude/skills/verify/SKILL.md. ⛔ Not the synthetic .claude/hooks/* fixtures in ui/scripts/__tests__/* — stop on breach; explain in the report
    Container & model: S, mode:thread, model: opus — dispatch-gates --tier: no path-derived mandate; effort: medium; governed ui/.claude/** owes a CONTRACT_REVIEW_TIER review (fable) before the queue
    Clause-②: no
    Metadata-protocol: none
    Responsibility: after the monorepo merge the nested ui/.claude/ is no session's project root, so its four guard hooks never fire, yet they read as live guardrails and cost a governed review on every change.
    Thread-read: 6513069907
    Premise: holds (origin/main 8c7021dfb: ui/.claude/hooks/ holds the 8 files; ui/.claude/settings.json:44,53,57,61 wire them; check-governed-merges.mjs:4519 uses ui/.claude/hooks/guard-main-checkout.sh as the ui-claude-tree specimen). Per hook, the thread records whether the root .claude/hooks/ covers it or it is obsolete in the merged repo.
    Serial constraints cleared: no open PR touches ui/.claude/** or scripts/pm/check-governed-merges.mjs at claim time. Governed ui/.claude/**: register ui-claude-tree Tier H; the seat requests the governed approvers.

  6. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

    ACCEPT → PR #27923 comment 6514930341 (register Tier H, ui-claude-tree; contract review PASS 6514785826 on head 28502c6; CI green; approvers requested). Awaiting a GOVERNED_APPROVERS approval, then the seat lands it.

  7. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

    Landed: PR #27923 merged (427c943d2, 2026-10-30T07:42Z), Tier H (ui-claude-tree), after os-zhuang's approval on head 28502c67. The contract review was PASS 6514785826, and the ACCEPT is 6514930341. pm:dispatched is stripped with this note.

    From this commit, the nested guard hooks under ui/.claude/ that no session loads are gone. The review's should-fix (the bash-3.2 floor reading on an empty root) was carried in the ACCEPT. Nothing further owed on this card.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:skillspriority:p2Medium: important, M3tooling

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions