Skip to content

os-dev.md: a project-thread session's harness writes an HTML-comment attribution line as PR body line 1, against 〈干净收尾〉's ban on HTML comments — name the exemption #25220

Closed

Description

@objectstack-fleet

Source

This was out-of-scope finding 2 of PR #25214 (card #25185). Contract review 6341183860 flagged it, and its round 2 record 6341480064 repeated it. The review sent it to the skills lane, as a card the seat files at ACCEPT.

Finding

The session harness of a Claude Code project thread tells it to begin every PR body with an attribution block. The block's first line is an HTML comment (claude-projects-attribution, carrying the requester's GitHub login).

.claude/agents/os-dev.md forbids HTML comments in GitHub text, at lines 18 and 322–323 (〈干净收尾〉). Its reason is that the sanitizer eats short angle-bracket fragments.

So every card thread breaks one of the two rules. So far it has kept the harness line and reported it as a deviation (PRs #25192, #25212 and #25214 all carry it). A relay read-back on an earlier card thread's PR found the line kept byte for byte.

Ask

Add a one-line exemption to os-dev.md, shaped like the existing one for trailers the harness writes itself (line 286: report it, do not copy or rewrite it):

  • the harness-required attribution line on PR body line 1 stays exactly as the harness gives it, and the dev reports it;
  • the ban still covers every HTML comment the dev writes itself.

The closing keyword moves to line 4 because of it; say that too, or point to the rule that already allows it.

Acceptance

  • os-dev.md names the exemption in one line; nothing else in the ban is loosened.
  • Line growth is paid by compression under check:pm-skill-ratchet, with no ceiling moved.
  • The .claude/** Tier S path applies: a contract-review-tier PASS on the head, then the owning seat lands it.

Activity

  1. objectstack-fleet commented on Oct 22, 2026

    @objectstack-fleet
    ContributorAuthor

    Handover from domain:skills seat 1 (seat post #7623, session_0165fj9zYfUrt6ckcUgYBD5a, 2026-10-22): the maintainer's project that held this seat stops owning the skills lane after its in-flight cards (#25115, #25216) land, so this card stays in the lane queue for the next seat. Order of work:


    Generated by Claude Code

  2. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Oct 23, 2026
  3. objectstack-fleet commented on Oct 23, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 (in-seat subagent) · 2026-10-23T06:49Z · p3, enhancement, domain:skills. Names the exemption for the harness-required attribution line on PR body line 1 in os-dev.md 〈干净收尾〉, plus the seat-1 handover's carry-over reword of the changeset line.
    Session: session_01REMuzhz6MWRjg8uohedMnM (domain:skills seat 2, in-seat subagent)
    Account: os-elon-musk (the seat's linked user; always the card's assignee)
    Branch: claude/project-thread-r6oa8t (the seat thread's designated push branch, restarted from main fc7b53ff after PR #25254 merged; the claude/issue-<n>-<slug> convention cannot be used by a project thread, a measured platform exception)
    Worktree: ../objectstack-issue-25244 (the seat's linked worktree on that branch)
    Domain: domain:skills
    Seat: domain:skills#2 (seat post #19287)
    File surface: .claude/agents/os-dev.md only (one exemption line in 〈干净收尾〉 paid by compression in the same file; the ratchet-neutral reword of the changeset-line rule per handover 6343602884). (stop on breach; explain in the report)
    ⛔ Not in scope: any Tier H file; the pm-dispatch skill files; scripts/**; ceiling rows.
    Container & model: S, in-seat subagent (the maintainer's word: S mechanical cards run in the seat), model: CONTRACT_REVIEW_TIER (dispatch-gates.mjs --tier --repo objectstack-ai/objectstack .claude/agents/os-dev.md at fc7b53ff: "MANDATORY"), effort: medium (S). Governed surface .claude/** is Tier S: a CONTRACT_REVIEW_TIER PASS record on the PR's head plus all-green checks; landing on the maintainer's word naming the PR.
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — a rule gap found by contract review 6341183860, not a defect in shipped code
    Thread-read: 6343602884
    Serial constraints cleared: #25115 (PR #25240) merged; no open PR touches .claude/agents/os-dev.md at claim time (#25385, #25247, #25255, #25386 do not).


    Generated by Claude Code

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

Metadata

Metadata

Assignees

Labels

domain:skillsDomain lane — seat card indexed by label:pm:seatenhancementNew feature or requestpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions