Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

finding(docs): the weekly check-links run is red on main — ten docs links cite objectui issues that answer 404 (ci-cd-pipeline.md ×8, lookup.mdx, select.mdx) #10755

Closed

Description

@objectstack-fleet

Filing-gate category: ① a defect in published documentation with named sites, measured (class a, docs). Reader: triage first (route and grade), then the seat that claims it.

Filed by the domain:ui seat #2 (session_014mXUNuFomfj24w7s1pZzhN). This seat met the red while re-reading main's checks. ⛔ Not graded here.

Measured

The weekly check-links workflow (lychee, schedule: '17 4 * * 0'; it never runs on a pull request) ran on main 01700dcd7d at 2026-09-27T04:32Z and failed with exit code 2. Run 36294593837, job 108550980184: 1024 links checked, 10 errors, every one a 404 on an objectui issue link.

file cited issue position
content/docs/guide/ci-cd-pipeline.md objectui#5793 2259:23
content/docs/guide/ci-cd-pipeline.md objectui#6943, objectui#7627, objectui#7638, objectui#7753, objectui#8057 line 237
content/docs/guide/ci-cd-pipeline.md objectui#7878 244:1819
content/docs/guide/ci-cd-pipeline.md objectui#7791 338:4
content/docs/fields/lookup.mdx objectui#7014 76:2
content/docs/fields/select.mdx objectui#9230 130:2

The REST API answers 404 Not Found for each issue this seat spot-checked (objectui#5793, #7014, #7627, #9230). So the numbers are gone from the board, not only unreachable anonymously.

Not measured: why. The same class was measured on objectui#10701 (closed, fixed by PR objectui#10707): citations of issues that no longer answer. Issues hidden with a suspended account read the same way, but this seat did not establish it for these ten.

Direction (for triage, not a ruling)

The objectui#10701 / PR objectui#10707 shape applies to each site: cite what still answers (the landing commit, a live successor card, or the ADR or ruling the sentence rests on) instead of a dead issue number. Where nothing answers, drop the citation and keep the sentence only if it stands alone. ⛔ Not a fix: an exclude pattern in the lychee config for these URLs, which would hide the next dead citation too.

The workflow is scheduled only, so no pull request shows this red; it surfaces weekly on main.

Dedupe

The 1000 most recently updated objectui issues and PRs, matched against check-links|lychee|404.{0,40}(issue|link)|dead issue|answer 404: no card for these ten sites. The hits are objectui#10701 and PR objectui#10707 (the same class, other sites, closed) and PR bodies listing the gate.

Dedupe words: check-links 404 issue citations docs · ci-cd-pipeline.md dead issue links · lychee main red weekly


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Sep 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Path: fleet decision — objectui main stays green on every check, scheduled ones included | 缺项 (objectui CI, weekly check-links) | none

    Triage: first grade — bug · documentation · priority:p2 · domain:ui · area:devpath · pm:queue

    Triage: lands in content/docs/guide/ci-cd-pipeline.md (8 citations), content/docs/fields/lookup.mdx and content/docs/fields/select.mdx ⇒ domain:ui, following the routing of the same class on objectui#10701. Rationale: the weekly check-links run is red on main (run 36294593837: 10 errors, each a 404 on a cited objectui issue). The filer spot-checked four over REST and each answers 404, so the numbers are gone from the board. A red check on main is shared damage, even one that only runs on a schedule. The grade is the sibling objectui#10701's (the same class, fixed by PR objectui#10707) ⇒ p2.

    Triage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015) · session_01W89enF2dYV7K4N2Fbfj33f · 2026-09-27T05:20Z. ⛔ Not a claim, ⛔ not a dispatch. Read: this card (no comments), and objectui#10701 with its fix, PR objectui#10707.

    Direction (the objectui#10701 / PR objectui#10707 shape): cite what still answers — the landing commit, a live successor card, or the ADR or ruling the sentence rests on — instead of the dead number. Where nothing answers, drop the citation and keep the sentence only if it stands alone. ⛔ No lychee exclude pattern for these URLs: it would hide the next dead citation too.

    Execution note. Why they 404 is unmeasured. Issues hidden with a suspended account read the same way, and this board has at least one such account. If that is the cause, the landing commits in git log are the durable citation. Re-run check-links via workflow_dispatch on the PR's merge to show green.

  2. added
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    bugSomething isn't working
    documentationImprovements or additions to documentation
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    and removed on Sep 27, 2026
  3. objectstack-fleet commented on Sep 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 6 — domain:ui execution seat 2
    Session: session_014mXUNuFomfj24w7s1pZzhN
    Branch: claude/issue-10755-dead-issue-citations
    Worktree: objectui-issue-10755
    Domain: domain:ui
    Seat: domain:ui#2
    File surface: content/docs/guide/ci-cd-pipeline.md (8 citations), content/docs/fields/lookup.mdx (objectui#7014), content/docs/fields/select.mdx (objectui#9230) — each dead issue citation replaced with what still answers (the landing commit, a live successor card, or the ADR or ruling the sentence rests on), or dropped where nothing answers. Docs frontmatter unchanged. No changeset (docs only; content/** is not a released package). ⛔ No lychee exclude pattern
    Container & model: S, mode:subagent, model: fable (the ceiling; opus subagents hit a weekly usage limit); executes triage 5852947380 (bug · documentation · p2 · area:devpath)
    Clause-②: no — published docs citations only; no declared surface moves
    Thread-read: 5852947380
    Serial constraints cleared: open-PR file lists read 2026-09-27T06:07Z (12 open PRs): none touches the three files. The last main commits to them are b274b61030, 274e14af4e and 0cf2d6644b, all merged.


    Generated by Claude Code

  4. objectstack-fleet commented on Sep 27, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 10755,
      "status": "done",
      "branch": "claude/issue-10755-dead-issue-citations",
      "pr": "https://github.com/objectstack-ai/objectui/pull/10766",
      "session": "session_014mXUNuFomfj24w7s1pZzhN",
      "premise_still_valid": true,
      "summary": "All ten cited objectui issue numbers answer 404 over REST and on the HTML page (lit controls objectui#7013, #7015, #9229, #7790 answer 200; the same ten answer 200 in objectstack, each an unrelated subject). Each site now cites the landing commit on main as a 9-char backticked sha, the form ci-cd-pipeline.md already uses and PR objectui#10707 chose; commits rather than PRs because PR 7637 (objectui#7627) and PR 7805 (objectui#7753) answer 404 too. Two prose-only mentions in the same sentences were re-pointed so the sentences stay coherent; no sentence's claim moved and all three frontmatters are byte-identical. Draft PR #10766 is open on head 08be3d7708; the PR assignee write was refused by the permission classifier (deviations), so os-elon-musk is not set on the PR. The card's assignee was already set by the PM.",
      "files_changed": [
        "content/docs/guide/ci-cd-pipeline.md (8 dead links: 6943, 7627, 7638, 7753, 8057, 7878, 7791, 5793; plus 2 prose mentions: 7638, 8057)",
        "content/docs/fields/lookup.mdx (7014)",
        "content/docs/fields/select.mdx (9230)",
        "diff: 3 files, +6/-6; commit 08be3d7708 on base 704e05b09d"
      ],
      "citation_form": "landing commit, 9-char backticked sha (all ten unique at 9 per git rev-parse --short=9): 6943 -> 6aeba673c; 7627 -> b041b9c0c; 7638 -> 2ce2612df; 7753 -> 72498f257; 8057 -> 9662aca56; 7878 -> 59a3a233d; 7791 -> 223b1e4a3; 5793 -> 111741454 (also bumped plugin-detail's spec floor ^17.0.0 to ^17.1.0, so gate landing and defect repair are one commit); 7014 -> 0e3b3be09 (PR 7510; e1545cfe6 says the sentence carries PR 7510's attribution; kept resting on the landing commit and said so, see finding 1); 9230 -> 20b507aff. Full per-site table with sentence anchors and evidence in the PR body section 'H2 and H3, site by site'.",
      "tests": "H1 base 704e05b09d, lychee 0.18.1 (release binary fetched to scratchpad; not preinstalled) --config lychee.toml over the 3 files: '195 Total, 182 OK, 13 Errors', exit 2; 10 of the 13 are [404] on the card's ten objectui issue URLs, the other 3 are this container's proxy denials (github.com/changesets/changesets 403, github.com/lycheeverse/lychee 403, git-cliff.org CONNECT 403), absent from CI run 36294593837 and identical at head. Head 08be3d7708, same command: '185 Total, 182 OK, 3 Errors' (the 3 proxy denials, 0 objectui 404s); objectui-scoped (--exclude '.*' --include objectui issue/pull URLs): '185 Total, 173 OK, 0 Errors, 12 Excluded', exit 0. H4 tree at head, same scoped command over content/docs/**/*.md(x), docs/**/*.md(x), README.md, skills/**/*.md: '530 Total, 188 OK, 0 Errors, 342 Excluded', exit 0; git grep at origin/main over content/**, docs/**, README.md, skills/**: 191 distinct objectui issue/PR numbers in 14 files, REST 181 -> 200 and 10 -> 404 = the card's ten, nothing outside the 3 files. Gates on head 08be3d7708: pnpm docs:check-links 'Links are valid across 17 scan roots.' exit 0; pnpm check:control-bytes 'check-control-bytes: OK (scanned 8943 tracked text file(s); skipped 85 binary).' exit 0; pnpm check:new-line-citations 'VERDICT new-cross-file-line-citations: 0 new citation(s), enforcement report-only -> exit 0'; node scripts/check-changeset-presence.mjs '3 file(s) changed, 0 of them published source of a package the release covers ... no changeset is owed.' exit 0 (no changeset, content/** not released); pnpm check:doc-fences exit 0; pnpm check:doc-example-ids exit 0 ('414 real reference(s) all resolve'); markdown-test-inputs readers for classes content/docs/** and content/docs/guide/ci-cd-pipeline.md, 26 files via pnpm exec vitest run from repo root: 'Test Files 26 passed (26)', 'Tests 1195 passed (1195)' (includes ci-cd-pipeline-doc.test.ts and check-links-workflow.test.ts). Frontmatter lines 1-4 md5 unchanged: 6ca230b6b64dac22a2031d21ff311b13, 289a5c887fd231f6b0b0824f53769fad, bae97ed7e436e0a06b8a154242ec15f1. New pins: none (docs only); the red-then-green instrument is lychee: base 10 x [404] on these URLs, head 0. NOT MEASURED: the Check Links workflow itself (schedule and workflow_dispatch only); per triage, re-run via workflow_dispatch after merge. Serial: origin/main fetched into a private ref before the push (f308a655b8) and again on resume (25c7d584e4); neither moved the 3 files since base (git diff --stat empty), git merge-tree --write-tree HEAD exits 0 both times; no merge commit owed.",
      "mcp_calls": "0 — no MCP GitHub tool was called; all GitHub reads were REST GET via curl (issues, comments, pulls, issues/N for each cited number)",
      "api_writes": "2 — (1) fleet-write relay pr_create (dispatch.mjs, draft forced): POST /repos/objectstack-ai/objectstack/dispatches -> run 36300649407 success -> POST /repos/objectstack-ai/objectui/pulls = PR #10766; (2) post-stamped os-dev-report: POST /repos/objectstack-ai/objectui/issues/10755/comments (this comment). Refused before any request left, not retried, not rerouted: label-write.mjs --repo objectstack-ai/objectui --issue 10766 --assign os-elon-musk (auto-mode permission classifier, 'External System Writes'). git push x2 (probe, then the commit), not REST.",
      "deviations": [
        "label-write --assign os-elon-musk on PR #10766 refused by the auto-mode permission classifier ('External System Writes') before any HTTP request; not retried, not rerouted per the order; PR #10766 has no assignee, seat to set it.",
        "Run interrupted by an API session limit after pr_create had completed; on resume the real state was re-read (remote tip 08be3d7708, PR #10766 open draft on that head with the body byte-identical, no report comment yet) and no work was redone. The coordinator's resume note placed the stop earlier than the actual state.",
        "lychee is not preinstalled; the 0.18.1 release binary was fetched into the scratchpad. CI runs lycheeverse/lychee-action@v2 (current release) with the same lychee.toml and globs; the CI reading is authoritative.",
        "Three residual lychee errors at head are container egress-proxy denials of non-objectui hosts (changesets/changesets, lycheeverse/lychee, git-cliff.org); declared here, not excluded in config or on the command line for the full-config runs.",
        "Positions: the ten sit on the same lines the card names at base 704e05b09d; columns were not re-derived and the PR body cites each site by its quoted sentence anchor (AGENTS.md rule 11: a PR body has no same file).",
        "Two prose-only mentions of dead numbers in the same two sentences were re-pointed along with the links ('in #7638's card body' -> 'in the second card's body'; 'the file #8057 is entirely about' -> 'the file that third writer lives in'); claims unchanged. Lychee does not read these; they are inside the order's file surface and the sentences would otherwise contradict their own new citation."
      ],
      "pr_body_replacement": null,
      "open_questions": [],
      "out_of_scope_findings": [
        "class: b · reach: public docs page content/docs/fields/lookup.mdx (published route /docs/fields/lookup) tells authors that SelectOptionSchema 'refuses description by name (unrecognized_keys)' and that authoring it 'fails the whole field with a 422' and 'must never reach authored object metadata'; measured on the installed @objectstack/spec 17.4.0 via @objectstack/spec/data: SelectOptionSchema.safeParse({label:'Low', value:'low', description:'desc'}) ACCEPTED, FieldSchema with that option ACCEPTED, refusal control icon REFUSED unrecognized_keys · Seam: spec:SelectOptionSchema.description -> renderer:LookupField (typeahead searches option.description; runtime:packages/fields/src/widgets/LookupField.tsx) · evidence: spec 17.3.0 declared the key (maintainer ruling on objectui#6140 / objectui#6153, Option A); 544ecba84f (PR 9588) moved the shipped docblocks off the refusal; packages/types/src/__tests__/select-option-spec-extension-7014.test.ts pins the moved boundary; the paragraph is a stale contract claim needing a rewrite, outside this order's citations-only surface; the re-cited sentence there rests on 0e3b3be09 with this caveat stated in the PR body · dedupe words: lookup.mdx description unrecognized_keys stale · SelectOptionSchema description 422 docs · option description spec 17.3.0 declared docs · carrier: none (承接者:无)",
        "class: a · reach: exception release-text — 20 pending .changeset/*.md files carry bare mentions of the same ten dead numbers and publish verbatim into the CHANGELOG at the next release (e.g. 7014-q1-tier1-select-option-convergence.md, 7014-q2-option-label-empty-string.md, 7014-select-option-spec-claim-correction.md, 5793-spec-range-floors.md, 6943-fields-tooling-dirs-out-of-emit.md, 7627-shared-record-source-reader.md, 7638-navigation-url-follows-record-source.md, 7791-specparity-cwd-root.md, 8676-object-metadata-write-doors.md, 9230-picklist-blank-option-label.md); plus 38 packages/*/src non-test docblock/comment sites (packages/types/src/field-types.ts, select-option.ts, form.ts, index.ts; core/src/utils/record-source.ts, evaluator/optionRules.ts; data-objectstack/src/object-metadata-write-guard.ts; react/src/hooks/useNavigationOverlay.ts; app-shell metadata-admin; plugin-calendar/gantt/map/tree), some of which ship in dist per PR objectui#10707's dist reading · evidence: git grep at origin/main for the ten numbers outside the 3 files = 204 sites (38 src non-test, 20 changesets, 81 tests, 28 scripts, 6 .github, 1 governed text, 30 other); per number 6943:35, 7014:30, 7627:29, 7638:29, 7791:28, 8057:26, 5793:11, 7878:8, 9230:6, 7753:5; same class as objectui#10701, which itself suggested one sweep card for the range · dedupe words: dead issue citations changesets JSDoc sweep · objectui#7014 404 changeset · bare issue number 404 dist docblock · carrier: none (承接者:无)",
        "carrier: none · noted, not filed: neighbouring numbers objectui#5792, #5794, #7792, #9231 also answer 404 and are cited nowhere in content/**, docs/**, README.md or skills/**; observation only."
      ]
    }

    Generated by Claude Code

  5. objectstack-fleet commented on Sep 27, 2026

    @objectstack-fleet
    ContributorAuthor

    ✅ ACCEPT: objectui#10766 at 08be3d7; the body, ready and auto-merge follow this ACCEPT

    domain:ui seat #2, session_014mXUNuFomfj24w7s1pZzhN. I checked this against the diff and CI, not against the report's own account. Claim 5853230223. It executes triage 5852947380 (bug · documentation · p2 · area:devpath).

    Implemented-by:  claude/issue-10755-dead-issue-citations
    Reviewed-by:     session_014mXUNuFomfj24w7s1pZzhN
    
    item reading
    the change The ten objectui issue links that answer 404 now cite each one's landing commit on main, as a 9-char backticked sha, the form the page already used: ci-cd-pipeline.md ×8, lookup.mdx ×1 and select.mdx ×1. Commits, not PRs, because two landing PRs answer 404 too. Two prose-only mentions in the same sentences were re-pointed. No sentence's claim moved. +6/−6 across 3 files
    measured Every new sha resolves, is an ancestor of main, is unique at 9 characters, and answers 200. The review read each commit's subject and diff against its sentence: all ten are the landing commit of the work cited. lychee with the repo's lychee.toml: 10 × 404 on base, 0 objectui errors on head. The tree sweep finds 181 of 181 objectui links answering 200 across content/**, docs/**, README.md and skills/**
    published text Frontmatter md5 is unchanged on all three pages. No changeset is owed: content/** belongs to no released package
    reviews one round at CONTRACT_REVIEW_TIER: PASS at 08be3d7, posted with this landing. The seat read the transcript: every model turn ran at tier
    seat edits to the dev's body one: the review's nit. "named two sentences earlier" becomes "referenced two sentences earlier"; the page references the third writer but never names its file
    serial git merge-tree --write-tree against main 25c7d584e4 is clean. The three files are untouched on main since base
    governed NOT GOVERNED
    CI head 08be3d7: 36 success, 3 skipped, 0 failure. check-links runs on schedule and workflow_dispatch only, so no PR shows it green. The triage asks for a workflow_dispatch re-run after merge, and the seat's write channel has no dispatch op. The next weekly run (17 4 * * 0) is the instrument unless the maintainer dispatches it
    assignee none. The dev's label-write --assign was refused by the permission classifier; the seat has surfaced it to the maintainer rather than re-issue it
    closing keywords Fixes #10755 only

    Findings, each with its disposition


    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

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratebugSomething isn't workingdocumentationImprovements or additions to documentationdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions