fix(skills): stop naming app as an expression root in two published guides
#9984
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Auto Label PRs | |
| on: | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| # `pull-requests: write` only lets the action add labels that ALREADY EXIST in the | |
| # repository; creating one it has never seen needs `issues: write`. Upstream states | |
| # both halves — actions/labeler v7 README "Recommended Permissions", and its | |
| # src/labeler.ts, which on a 403 raises "The workflow does not have permission to | |
| # create labels. Ensure the 'issues: write' permission is granted". | |
| # | |
| # This is load-bearing here rather than defensive: `.github/labeler.yml` gained 14 | |
| # `package: *` rules in objectui#7746, and 12 of those labels did not exist in this | |
| # repository's label registry when they were added. The action applies the whole set | |
| # in ONE `setLabels` call, so without this the first PR touching e.g. `packages/auth` | |
| # fails the call outright and the PR gets NO labels at all — strictly worse than the | |
| # coverage gap #7746 closed. Pinned by scripts/__tests__/labeler-package-coverage.test.ts. | |
| issues: write | |
| jobs: | |
| label: | |
| runs-on: ubuntu-latest | |
| # ── The job ceiling, DERIVED FOR THIS JOB (objectui#7956) ──────────── | |
| # Before this line the only backstop was GitHub's 360-minute default. | |
| # | |
| # ⚠️ The stakes here are NOT objectui#7270's. That card's argument leaned on | |
| # two of its three jobs producing a REQUIRED context on a shared serial | |
| # queue. Re-measured on `GET /repos/objectstack-ai/objectui/rules/branches/ | |
| # main` at 2026-09-06T17:20Z, the required checks are `Lint`, `Type Check`, | |
| # `Build & E2E`, `Test (shard 1/4)` through `(4/4)`, `Build Docs` and | |
| # `Changeset Declaration` — this job produces none of them, and it blocks | |
| # nothing. What is left is the generic exposure: a wedged job holds a runner | |
| # for six hours and then reports `cancelled`. This job runs on every push to | |
| # every open pull request, so it is the most frequently started of the six | |
| # objectui#7956 covers and the cheapest place for that exposure to be paid | |
| # repeatedly. | |
| # | |
| # ⛔ NOT inherited from `ci.yml`'s 10/15/20/30/40, nor from the ceilings | |
| # objectui#7270 derived — objectui#7048 fences exactly that. The arithmetic | |
| # below is this job's own. | |
| # | |
| # - Population: the last 300 successful runs of this workflow, window | |
| # 2026-09-04T15:06Z .. 2026-09-06T17:19Z, n=300 `label` jobs. Per-job | |
| # wall clock from the Actions jobs endpoint (`completed_at` minus | |
| # `started_at`), never the run's total. | |
| # - min 3s / median 5s / p95 8s / max 13s. | |
| # - Single event (`pull_request`, n=300), so there is no by-event split to | |
| # report and one ceiling is all there is to set. | |
| # - max/p95 = 1.6 — no fat tail, so the multiplier is not widened. | |
| # | |
| # Ceiling = the smallest round number that is both >= 3x max (0.7min) and | |
| # >= max + 15min (15.2min) => 20. That is ~92x the slowest run ever observed | |
| # here, so it cannot fire on a healthy-but-slow runner; a wedge dies in 20 | |
| # minutes instead of 6 hours. | |
| # | |
| # ⚠️ Four of the six jobs objectui#7956 bounded land on 20 by this same | |
| # arithmetic. That is NOT one number copied across them, which precondition | |
| # ② of that card's triage forbids: for any job whose slowest run is under | |
| # 7.5 minutes the additive term dominates the multiplicative one, so the | |
| # rule puts every sub-minute job on the same rung. Each of the four carries | |
| # its own sample and its own derivation beside its own key. | |
| # | |
| # ⛔ Raising this toward 360 is the ruled-out non-fix (objectui#6577, | |
| # objectui#7048): the hang just runs longer and the gate still reports | |
| # `cancelled`. | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/labeler@v7 | |
| with: | |
| repo-token: ${{ secrets.GITHUB_TOKEN }} | |
| configuration-path: .github/labeler.yml | |
| sync-labels: true |