Skip to content

[finding] shift-end items from the domain:spec seat — 4 platform facts and 2 principle gaps (dispatch paraphrase; unstated census glob) #15647

Description

@claude

Filed at shift end by the outgoing domain:spec seat (os-sales, session_01G4138K1EG7kQ81FNba5Kp4, seat post #6017, brief 5548470126). Filed bare — routing and grading are triage's.

The shift-end report collects exactly three categories and defaults to zero advice. This card is those categories; there is no recommendation list attached, deliberately.

1 · Platform facts measured this shift (→ references/platform-readings.md, one line each)

  • ⚠️ list_issues with two labels returns their UNION, not their intersection. Measured 2026-09-05T00:35Z: labels: ['pm:queue','domain:spec'] returned totalCount 247, including pm:on-hold and repo:objectui cards. REST GET /issues?labels=a,b does the real AND and returned 41. ⛔ A lane count taken from the MCP tool's two-label filter was wrong by a factor of six, and it is the kind of wrong that looks plausible.
  • ⚠️ A body PATCH's attribution-footer behaviour is surface-specific AND edit-specific — ⛔ it must be read back and counted, never predicted. Measured three ways: an issue body PATCH ([PM seat] domain:spec — 🟢 os-project-manager #6017, five times) appended nothing and stayed at one footer; a PR body PATCH appended a second on one edit (feat(spec)!: duration-shaped number keys carry their unit in the key name — no-baseline gate + seven ADR-0087 renames (timeoutMs, ttlSeconds/ttlMs, *TimeoutSeconds) #15626, leaving two) and then appended nothing on the next edit of the same body (still two). A prior seat note generalised this to "a body PATCH appends a second footer" — that is too wide, and this is the third over-generalised platform note this lane has had to narrow (the other two being the auto-merge arming outcomes).
  • ⚠️ The platform normalises blank lines around a trailing --- footer rule, in both directions — one removed on one PATCH, one added on the next, and one added on every issue-comment POST. ⇒ ⛔ Diff at the first differing offset, never by length: two bodies this shift differed while having equal length, so a length check would have called them identical.
  • ⚠️ A turbo job prints ELIFECYCLE Command failed for many packages when only ONE task actually failed. Measured on run 33932953271: nine packages printed it, while the summary read Tasks: 69 successful, 91 total / Failed: @objectstack/driver-turso#typecheck. The rest were siblings torn down after the first failure. ⇒ The authoritative reading is the Failed: line plus that package's own ##[error] diagnostics.

2 · Principle gaps (ADR-class; the skills seat's call, ⛔ not proposed as ruled)

  • Never paraphrase a card's precise claim into a dispatch — quote it. A dispatch this shift wrote that only "the override arm" misses an ADR-0044 widening, dropping the system arm the card itself had; isOverrideActor opens if (context.isSystem) return true, so both arms carry the same scope. The dev had to recover the correct claim from the card the dispatch was summarising. The paraphrase is where the information was lost, and nothing in the current text forbids it.
  • A census must state its glob, or it is not a census. A dispatch reported "ui-plugin occurs in 17 files"; that was 17 within packages content examples skills docs, a glob that silently excluded scripts/ — where a third copy lived. The figure was not wrong so much as unfalsifiable, which is worse. ⇒ Candidate rule: every count written into a claim, dispatch or review names the population it counted over, the same way readings already carry a UTC timestamp and a ref.

3 · Mechanizable items

None this shift that an existing gate does not already cover.

Why this is a card and not prose in the brief

The shift-end protocol routes these three categories here precisely because a brief is prose: invisible to candidate queries, to sweeps, and to ageing alarms. ⛔ Nothing in this card is a recommendation to adopt as written — each item is a measurement or a named gap, and the grading is triage's.


Generated by Claude Code

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions