Part of #6.
These are the files a contributor and a curious user read before they read any code, and they lead somewhere else. Three of the links are dead or point at another repository, the document that explains CI describes a pipeline this repository does not run, and the bug template asks a menubar app user for a minimal reproduction. The cost is not that the files are stale, it is that someone follows them: forks the wrong repository, trusts a CI description CI contradicts, or gives up on an issue form that has no field for the thing they actually know.
What is there today
.github/EXPLANATIONS.md#L9says CI auto fixes and applies code style updates through a pull request,.github/EXPLANATIONS.md#L10says it runs unit and end to end tests, and.github/EXPLANATIONS.md#L11says it runs withnode-versionsset to[18x]. CI has three jobs and they run lint (.github/workflows/ci.yml#L51), typecheck (.github/workflows/ci.yml#L87) andbun run test(.github/workflows/ci.yml#L130). There is no auto fix job, no end to end suite, and no node setup at all: the runtime comes from Pantry (.github/workflows/ci.yml#L33)..github/EXPLANATIONS.md#L14advertises Renovate as the dependency bot. AGENTS.md forbids it, and.github/workflows/buddy-bot.yml#L4quotes that same rule as the reason the hand written workflow exists..github/EXPLANATIONS.md#L27sends readers to the discussions ofstacksjs/stacks..github/workflows/README.mdlists three workflows: CI at.github/workflows/README.md#L5, Release at.github/workflows/README.md#L10, Labeler at.github/workflows/README.md#L11. Five are present. Deploy runs on every CI completion onmain(.github/workflows/deploy.yml#L12) and Buddy Bot runs on three schedules (.github/workflows/buddy-bot.yml#L18). Those three entries also use em dashes, which AGENTS.md rules out..github/CONTRIBUTING.md#L28tells a contributor to fork the framework repository,.github/CONTRIBUTING.md#L32clones{github-username}/stacks, and.github/CONTRIBUTING.md#L45addsgit@github.com:stacksjs/stacks.gitas upstream. Nothing in the file names this repository, says it is macOS only, or mentions that the watcher reads nothing until Full Disk Access is granted.- The testing section says to run
buddy test(.github/CONTRIBUTING.md#L150) and describes that as unit and e2e (.github/CONTRIBUTING.md#L141), and its second sentence stops mid word at.github/CONTRIBUTING.md#L152. The command that actually exercises this app is in the README:./pantry/.bin/bun test tests/unit/uplink(README.md#L121). .github/ISSUE_TEMPLATE/config.yml#L3linksgithub.com/stacksjs/contribute, which returns 404..github/ISSUE_TEMPLATE/bug_report.yml#L42and.github/ISSUE_TEMPLATE/feature_request.yml#L41linkstacksjs/contributing, which exists but is not this repository, and.github/ISSUE_TEMPLATE/bug_report.yml#L40links a code of conduct in another repository while.github/CODE_OF_CONDUCT.mdsits here..github/ISSUE_TEMPLATE/bug_report.yml#L21makes a minimal reproduction required and.github/ISSUE_TEMPLATE/bug_report.yml#L29makesbunx envinfo --system --binaries --browsersrequired. Neither suits an app whose failure mode is a text that went unanswered on one Mac..github/ISSUE_TEMPLATE/bug_report.yml#L46sends questions to GitHub Discussions, which is disabled on this repository..github/ISSUE_TEMPLATE/feature_request.yml#L13prompts the reporter to write as a developer using Stacks..github/stale.yml#L1is Probot Stale configuration. The GitHub app it was written for is retired and no workflow in.github/workflowsreads the file.- There is no pull request template and no CODEOWNERS in
.github/. package.json#L6sets the description to the single wordUplink, and the manifest declares norepository,homepageorbugsfield, so nothing links back out of it. The GitHub repository itself does have a description and a homepage, so the gap is only in the manifest. The repository has no topics.LICENSE.md#L3readsCopyright (c) 2023 Open Web Foundation, which matches neither the current year nor the names in.github/FUNDING.yml#L1..github/workflows/deploy.yml#L198says the verification step checks "the CSRF cookie the city form needs, and the tour data". What the step asserts is a changed build id (.github/workflows/deploy.yml#L206), that/dashboardreturns 404 (.github/workflows/deploy.yml#L219), and that the hero image is served (.github/workflows/deploy.yml#L225).config/buddy-bot.ts#L29enables workflow generation,config/buddy-bot.ts#L30points it at.github/workflows, andconfig/buddy-bot.ts#L31throughconfig/buddy-bot.ts#L35turn on the daily, weekly and monthly templates. The hand written.github/workflows/buddy-bot.ymlalready carries all three schedules (.github/workflows/buddy-bot.yml#L18,.github/workflows/buddy-bot.yml#L19,.github/workflows/buddy-bot.yml#L22) and already readsBUDDY_BOT_TOKEN(.github/workflows/buddy-bot.yml#L57), so configuring that token is enough for buddy-bot to write three more workflow files and open every update twice.
Proposal
- Delete
.github/EXPLANATIONS.md. The only part of it that is true is a list of workflows, and.github/workflows/README.mdowns that list. - Rewrite
.github/workflows/README.mdaround the five workflows present (CI, Release, Deploy, Buddy Bot, Labeler), one line each naming what triggers it and what it does, with hyphens in place of the em dashes. - Rewrite
.github/CONTRIBUTING.mdfor this repository: clonestacksjs/uplink, macOS 13 or later,./buddy uplink:installthen./buddy uplink:doctor, that Full Disk Access has to be granted before the watcher sees anything,./pantry/.bin/bun test tests/unit/uplinkfor the tests,./buddy lintand./buddy typecheckbefore a pull request, and conventional commits. Drop the framework tour ofmake:*anddev:*, and finish the sentence that breaks off at.github/CONTRIBUTING.md#L152. - Rewrite
.github/ISSUE_TEMPLATE/bug_report.ymlaround what a user of this app can actually produce: macOS version, Uplink version, whether it is the downloaded app or the from source service, which check in./buddy uplink:doctorfails (the check names are inapp/Uplink/doctor.ts#L91throughapp/Uplink/doctor.ts#L136), and the tail of~/Library/Logs/Uplink.log(app/Uplink/settings.ts#L19). Remove the reproduction field, the envinfo field and the Discussions pointer. - Rewrite
.github/ISSUE_TEMPLATE/feature_request.ymlto talk about Uplink rather than a developer using Stacks, and point.github/ISSUE_TEMPLATE/config.ymlat this repository's contributing guide instead ofgithub.com/stacksjs/contribute. Link the local.github/CODE_OF_CONDUCT.mdfrom both templates. - Delete
.github/stale.yml. - Add
.github/PULL_REQUEST_TEMPLATE.md(what changed, how it was checked on a Mac, which doctor checks still pass) and.github/CODEOWNERS. - Fill in
package.json: a real description,repository,homepageandbugs. Set repository topics on GitHub as part of the same change. - Fix
LICENSE.md#L3to the current year and the holder named in.github/FUNDING.yml#L1. - Replace the comment at
.github/workflows/deploy.yml#L194through.github/workflows/deploy.yml#L199with what the step checks now: a changed build id,/dashboardand the framework default views returning 404, and the hero image being served. - Set
workflows.enabledtofalseinconfig/buddy-bot.ts#L29, leaving the hand written workflow as the single owner of the schedules.
Requirements
- Every link resolves, and resolves here. After the rewrite, no community health file may link
stacksjs/stacks,stacksjs/contributeorstacksjs/contributing. Where a contributing guide, code of conduct or security policy is referenced, it is the copy in this repository. - The bug template asks only for what the reporter has. A user who downloaded the DMG has a macOS version, a version string in the popover, a doctor output and a log file. They do not have a reproduction repository, and
bunx envinfois not installed on their machine. Make no field required that such a user cannot fill. - One owner for the buddy-bot schedules. Flipping
workflows.enabledtofalseis the decision, not just a default. Say so in the config comment so the next reader does not turn it back on and get duplicate update runs. - Delete rather than correct where the file has no job.
.github/EXPLANATIONS.mdduplicates.github/workflows/README.md, and nothing reads.github/stale.yml. Rewriting either one leaves two places to keep in step. - Hyphens, not em dashes. AGENTS.md forbids em dashes and separator en dashes in anything a person reads, and
.github/workflows/README.mdcurrently breaks that rule in three places. - Leave
.github/SECURITY.mdand.github/CODE_OF_CONDUCT.mdin place. Both are usable as they stand. This issue is not a rewrite of the whole directory.
Acceptance
grep -rn "stacksjs/stacks\|stacksjs/contribute\|stacksjs/contributing" .github/matches only the issue reference inside the buddy-bot workflow header comment.- Every statement in
.github/workflows/README.mdabout CI is true of.github/workflows/ci.yml, and all five workflows in.github/workflowsare listed. .github/EXPLANATIONS.mdand.github/stale.ymlno longer exist..github/CONTRIBUTING.mdgets a contributor from a fresh clone of this repository to a running watcher and a passing test run, on a Mac, without opening another repository.- A filled in bug report tells a maintainer the macOS version, the Uplink version, which doctor check failed and the last lines of the log, and demands no reproduction.
package.jsoncarries a description,repository,homepageandbugs;LICENSE.md#L3carries the current year and the right holder; the repository has topics.config/buddy-bot.tshasworkflows.enabled: false, so a configuredBUDDY_BOT_TOKENcannot add a second set of workflow files.- No file touched by the change contains an em dash or a separator en dash.