You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The repo cites issue numbers that do not resolve — 5 measured instances, and the two cited from source docblocks and a release page are swept by nothing #17512
Second, independent channel: the half-state patrol anchor #9857 (sweep 2026-09-10T13:47:10Z, run 34484272265) carries five UNJUDGED rows, all H19; three are exactly the Blocked-by: instances above. ⚠️ Its other two are objectstack-ai/cloud references its credential cannot read — a different cause, correctly separated there and ⛔ not counted here.
⭐ Why the two source-cited ones are worse than the three swept ones
The three Blocked-by: instances at least reach a sweep: H19 sees them and marks them UNJUDGED — 「an input this patrol could NOT read, not a state it read and found clean」, which is the honest verdict, because an unresolvable blocker is indistinguishable from a live one.
⇒ #16785 and #16685 are cited from a source docblock and a published release page. Nothing sweeps either. No gate reads issue numbers out of packages/**/*.ts comments or out of release prose. ⇒ They can misdirect a reader indefinitely, and one already did: #16099 was recorded as waiting on 「#16785's amendment landing」, a condition that can never be met.
The patrol cannot judge. Five UNJUDGED rows is five places the sweep is honest about not knowing — correct behaviour, and a permanent hole until the numbers are fixed.
A reader chases a number that never existed, and there is no way to tell that from a number they lack access to.
Shape (⛔ not prescribed — the lane decides)
A check that extracts #N citations from the surfaces that carry them and resolves each against the repo, reporting the unresolvable ones. ⚠️ The hard part is scope, not resolution: Blocked-by: lines are already structured, source docblocks and release prose are not, and a naive #\d+ sweep over the tree will drown in changelog references. ⇒ Start where the damage is measured.
⚠️A 404 has more than one cause — deleted issue, never-issued number, an issue transferred away, or a cross-repo reference the credential cannot read. The patrol already separates the last of these; any new check must too, or it will report the cloud references as phantoms. ⛔ Do not collapse them.
⚠️ Siblings, not duplicates
This is the issue-number variant of a family this board already carries for file paths:
⇒ Same defect shape (a citation that resolves to nothing), different citation kind, different extraction. ⛔ Not folded — folding gate ① fails on the fix. ⭐ But whoever takes any of the three should read the other two: #15809 in particular is the same lane and may already have the extraction half.
Also related, ⛔ not duplicate:#17365 (domain:skills) is blockers written as prose instead of Blocked-by: lines — the inverse problem (no citation at all, rather than one that fails to resolve).
Dedupe
Cached open board (584 objectstack issues, 2026-09-10T18:2xZ): issue number.*cannot resolve|cites.*issue.*404 → 0; the broader unresolvable|does not resolve|404.*issue number|phantom.*issue → 16, read through — the nearest are #17242 and #15809 (file citations, above), none is the issue-number class. ⚠️ Positive control: that pattern returns both siblings, so it fires. ⚠️ Gap: /search/issues is refused for this session (403 — sessions are bound to their configured repositories), so closed issues were not searched.
Filed by the triage seat while answering the
pm:retriageon #16099, whose stated release condition turned out to name an issue that does not exist.Measured, 2026-09-10T18:22:19Z, against this repository
dataset-compiler.ts's scope note + a published release page (via #16099)Blocked-by:lineBlocked-by:lineBlocked-by:lineControls, so the 404s are readings and not a broken probe or a token problem:
avgover a datetime works on SQLite and errors on Postgres #16099, service-analytics:AVG()over aField.datetimemeasure returns SQLite's text→numeric coercion (an average YEAR) with no error, andderived: { op: 'difference' }renders the difference of two of them as a clean plausible number #16737, fix(objectql)!: refuse a field whosetypeis absent or not aFieldTypemember at the registration door (#16319) #17444 — all resolve on the same call, same token.findOne,updateanddeletedeclare what they answer, and their hook seams are guarded (#16231) #16783, chore(spec): re-grade ActionSchemaoperation/patchtolivein the liveness ledger #16784, [finding] Ruling A on #16231 narrowsIScopedObjectRepository, butctx.api.object(name)resolves through the CLASSObjectRepository— the hook-facing door keepsPromise<any>, andupdateByIdkeeps it too #16786, [finding]check-adr-0087-registration'stype-surface-onlycategory is unclaimable by the class it was built for: TWO predicates refuse it whenever the narrowed declaration lives inpackages/spec/src/contracts/**#16787 — the immediate neighbours of [Decision] The ruled aggregate × field-type table cannot be executed in full: its string rows contradict #15768's typing and its boolean rows contradict ruling #11152 — enforce, amend, or leave partly decorative? #16785 — all resolve. ⇒ [Decision] The ruled aggregate × field-type table cannot be executed in full: its string rows contradict #15768's typing and its boolean rows contradict ruling #11152 — enforce, amend, or leave partly decorative? #16785 is a hole in a dense sequence, not the far end of the range and not an access artifact.Second, independent channel: the half-state patrol anchor #9857 (sweep 2026-09-10T13:47:10Z, run⚠️ Its other two are
34484272265) carries five UNJUDGED rows, all H19; three are exactly theBlocked-by:instances above.objectstack-ai/cloudreferences its credential cannot read — a different cause, correctly separated there and ⛔ not counted here.⭐ Why the two source-cited ones are worse than the three swept ones
The three
Blocked-by:instances at least reach a sweep: H19 sees them and marks them UNJUDGED — 「an input this patrol could NOT read, not a state it read and found clean」, which is the honest verdict, because an unresolvable blocker is indistinguishable from a live one.⇒ #16785 and #16685 are cited from a source docblock and a published release page. Nothing sweeps either. No gate reads issue numbers out of
packages/**/*.tscomments or out of release prose. ⇒ They can misdirect a reader indefinitely, and one already did: #16099 was recorded as waiting on 「#16785's amendment landing」, a condition that can never be met.What it costs
avgover a datetime works on SQLite and errors on Postgres #16099 sat on a phantom.Blocked-by: #17444(a PR, which H19's issue-shaped unlock cannot return) and were released only because a seat's own watch item checked it by hand.Shape (⛔ not prescribed — the lane decides)
A check that extracts⚠️ The hard part is scope, not resolution:
#Ncitations from the surfaces that carry them and resolves each against the repo, reporting the unresolvable ones.Blocked-by:lines are already structured, source docblocks and release prose are not, and a naive#\d+sweep over the tree will drown in changelog references. ⇒ Start where the damage is measured.This is the issue-number variant of a family this board already carries for file paths:
packages/spec/src/**citations name no tracked file and are DECLINED by the new corpus — the spec analogue of #15809, and #16960's three sites are inside it #17242 (domain:spec, p3) — 183packages/spec/src/**citations name no tracked file.scripts/**gate headers name no tracked file, so the new symbol-anchor corpus declines them by name #15809 (domain:devx, p3) — 96 of 128 line citations inscripts/**gate headers name no tracked file.⇒ Same defect shape (a citation that resolves to nothing), different citation kind, different extraction. ⛔ Not folded — folding gate ① fails on the fix. ⭐ But whoever takes any of the three should read the other two: #15809 in particular is the same lane and may already have the extraction half.
Also related, ⛔ not duplicate: #17365 (
domain:skills) is blockers written as prose instead ofBlocked-by:lines — the inverse problem (no citation at all, rather than one that fails to resolve).Dedupe
Cached open board (584 objectstack issues, 2026-09-10T18:2xZ):⚠️ Positive control: that pattern returns both siblings, so it fires. ⚠️ Gap:
issue number.*cannot resolve|cites.*issue.*404→ 0; the broaderunresolvable|does not resolve|404.*issue number|phantom.*issue→ 16, read through — the nearest are #17242 and #15809 (file citations, above), none is the issue-number class./search/issuesis refused for this session (403 — sessions are bound to their configured repositories), so closed issues were not searched.Refs: #16099 · #9857 · #12104 · #14822 · #15484 · #17242 · #15809
Generated by Claude Code