Repository navigation
[rebuild of #19474] spec(lint): wire the inert runtime-create rules for action / hook / report / skill / email_template / mapping — six types, one edit (ruling #203/4 group A+C) #19542
Description
⭐ REBUILD of card #19474, whose original is unreachable. Filed by the domain:spec seat 4 (session_01AmH9bKvGoLjiY86Q4Z3og2, seat post #18917) on 2026-09-21, under the same instruction that rebuilt #19384 as #19541: the original was filed by the banned os-sam account.
⛔ The original is not deleted and ⛔ nothing here overrules it. Measured at this act, exit codes captured before any pipe:
| path | reading |
|---|---|
GET …/issues/19474 |
404 Not Found |
PATCH …/issues/19474 |
404 — it cannot be edited, labelled or closed |
…/issues/19474/comments · /timeline |
200 — the claim, the corrections and all 16 timeline events still resolve |
| control, a card this seat filed | …/issues/19491 200 |
⇒ Why a rebuild was not optional here
This card has a live delivery: PR #19517, draft, head 72de2b946301aa59f624da807ae7fc383e82b81e, 6 files, +1018 / −11. The unreadable card blocks it mechanically, ⛔ not cosmetically:
PM_SWEEP_REPO=objectstack-ai/objectstack node scripts/pm/check-clause2-carriers.mjs --pair 19517 → exit 2
✗ UNJUDGED: card #19474's labels could not be read.
and
node scripts/pm/label-write.mjs --issue 19474 --add domain:spec --dry-run → exit 5
① read — COULD NOT READ: GET …/issues/19474 -> HTTP 404
⇒ the clause-② enqueue gate can never be satisfied for #19517 while its card cannot be read, and this seat cannot hang or strip needs:contract-review on the card side of the ruled dual carrier. The PR could never land. That is the whole reason this card exists.
The delivery's state, carried over so nothing is re-derived
| what | where it still reads |
|---|---|
the round-1 at-tier contract review, VERDICT: FAIL on head 33db31d234 |
PR comment 5756052587 |
| this seat's handback adopting it | comment 5756068299 on the old card |
| the seat correction withdrawing a wrongly-written review exemption | comment 5755777834 on the old card |
| the blocker record when the review tier went unavailable | comment 5756460515 on the old card |
| the original claim | comment 5755122378 on the old card |
claude-fable-5-1 = CONTRACT_REVIEW_TIER), and the maintainer has since stated 「fable 没有了」. The review is ABSENT — ⛔ not FAIL, ⛔ not PASS — and PR #19517 stays draft, out of the queue, until the tier question is settled.
skill out, so group A lands as three types, not four. Whether that is inside the ruling's logic or a scope reduction its author should decide is the open question the absent round-2 review was dispatched to answer. ⛔ It is not settled, and ⛔ this seat has not settled it.
The hand-off card the hold-out produced is #19527.
The original card, reproduced verbatim below, ⛔ not rewritten
Filed by the domain:spec execution seat 3 (os-sam, session_01HnRAeVTLJevtQ5iCPX6JSm) at 2026-09-21T02:02Z, as the split ruling 5754204885 on #19275 explicitly instructs this seat to perform (batch #203 item 4, letter B, maintainer 「203 同意」). ⛔ Not a new finding, ⛔ not a re-grading: priority:p1 and domain:spec are inherited from #19275, whose split this is.
The policy, ruled once for all ten types: 「declared ⇒ honoured; not honourable ⇒ retired」.
Read before writing: ruling 5754204885 · measurement round 5750725047 (the specification) · triage's grouping 5750895260. Sibling ruling for app/position: #19370 (B, same policy).
Scope — six types, ONE card
Group A — action · hook · report · skill. The ruling: 「wire the existing candidate rules (runtimeTypes rows / TYPE_TO_STACK_KEY rows already present, inert only because the gate filters on runtimeTypes first)」. ⭐ One execution card for the four, ⛔ not four — the ruling says so in those words.
Group C — email_template · mapping. 「wire the ledger-driven rule the same way」, and the ruling folds group C into this card.
⛔ Fences, quoted from the ruling rather than paraphrased
- ⛔ No ledger-population work is dispatched for group C: 「the empty warn maps stay empty until a real property needs a row — ⛔ no ledger-population work is dispatched (zero pull), the wiring is the whole deliverable」.
- ⛔ Do not widen scope to the other four of the ten.
doc/external_catalogretire under a separate card;translation/toolare read first under two more. Each has its own carrier. - ⛔ Do not re-litigate letter B. The policy is ruled.
Acceptance
Per type: a real runtime write that the wired rule must refuse is refused, plus a lit control that a good write passes. ⛔ A surfaces / runtimeTypes field that merely changed is not the deliverable.
⚠️ The ruling's own NOT MEASURED, carried in unchanged
Still NOT MEASURED on any of the ten: whether a wired rule fires on a real write; the dispatch order names it as the report's first reading.
⇒ acceptance is behavioural. ⛔ A diff that changes a declaration without a test proving a real write is judged does not close this card.
查重词
allowRuntimeCreate · runtimeTypes · TYPE_TO_STACK_KEY · inert runtime-create declaration · declared but never honoured
Generated by Claude Code
Activity
os-steve commentedon Sep 21, 2026
Claim: PM loop round 15
Session:
session_01AmH9bKvGoLjiY86Q4Z3og2Branch:
claude/issue-19474-wire-inert-runtime-create-rulesWorktree:
objectstack-issue-19474Domain:
domain:specSeat:
domain:spec#4File surface:
packages/lint/src/(stop on breach; explain in the report)Container & model:
M,mode:subagent,model: opus— quoting the--tieroutput taken for this work: 「Model tier — no path-derived mandate: the surface hits none of the 3 declared glob(s) … floor sonnet · default opus · ceiling fable」Clause-②: no
Thread-read: none
Serial constraints cleared: PR #19486 (
claude/issue-19370-role-word-crosses-whole) merged asa227afa415f596269ed36aae0a0631c84270ccc9, and its conflict with this branch is resolved in merge commit33db31d234. No other open PR touchespackages/lint/src/authoring-rules.tsorruntime-gate.ts.⭐ This is the SAME claim, on a rebuilt card — ⛔ not a second claim and ⛔ not a re-dispatch. The original claim is comment
5755122378on card #19474, which is unreachable (GETandPATCHboth 404) because theos-samaccount that filed that card was banned. This card is its verbatim rebuild. ⛔ The branch, the worktree and the work are unchanged; nothing was re-dispatched and no dev was re-run.issue-19474, ⛔ deliberately: it is the name the work was pushed under and the one PR #19517's head carries. ⛔ Renaming it is not available to this session anyway —POST …/branches/{b}/renameanswers HTTP 403 through this proxy, measured earlier today on another branch.State carried over, ⛔ not re-derived, at 2026-09-21T08:15Z:
72de2b946301aa59f624da807ae7fc383e82b81e, 6 files, +1018 / −11,mergeable_state: blocked33db31d234, record5756052587on the PRneeds:contract-reviewskillout (group A landing as three types, not four) is inside ruling5754204885's own logic or a scope reduction its author should decide⛔ This seat has not settled that question and will not: a seat cannot rule on whether it delivered the ruled work.
Generated by Claude Code
docs: re-point the card citations the account ban made dangling
spec(lint): wire the six inert runtime-create doors — action / hook /…
spec(lint): honour the `datasource` runtime-create declaration at the…
test(objectql): sweep the `dataset` type, judged in a tenant that dec…
fix(lint): skill tool references stay a whole-stack verdict; the runt…