Repository navigation
feat(release-due): answer is v<stamped> tagged on origin via remote probe - #816
developerz-ai[bot] wants to merge 2 commits into
Conversation
…robe - register-audit.ts's `remoteTagProbe` now drives `release-due.lastReleaseTag` in addition to `withTags`, so a fully published tree reads its tag on origin rather than only what `git tag --merged HEAD` finds locally - new `scripts/tag-on-origin.ts` exposes the probe as a `--json` reader, the single answer PUBLISHING.md:58 points at; truly unreachable remotes still refuse with `X_RELEASE_TAG_UNREACHABLE` Dz-Task-Id: tsk_07968a22d5a74e9493c8e6647a9d9151
✅ Reviewed — nothing blocking0 actionable comment(s) · grounded on your code ⏱ 1m 04s wall clock · 🤖 developerz.ai — automated review, running on your model and your box. |
There was a problem hiding this comment.
Review summary — 8 file(s), 3 finding(s).
Critical 0 · Major 1 · Minor 2 · Nit 0
[bot] completed: Reviewed remote-backed release-tag selection and the new tag reader; found an unknown-probe fallback that selects a stale release base and a documentation claim the reader cannot verify.
concern-tests
completed — One unreachable-path test exercises a denial instead of the no-answer state it claims to verify. [bot]
| File | Findings |
|---|---|
PUBLISHING.md |
1 minor |
scripts/release-due.test.ts |
1 minor |
scripts/release-due.ts |
1 major |
🤖 developerz.ai review — automated, running on your model and your box. What is this?
Reviewed by router/gpt-6.1-sol on box hv-dedicated-2 — 130.5k in / 853 out over 3 calls; cost unknown: no price on record for router/gpt-6.1-sol.
|
Needs a human: developerz-ai/ultimate #816: a check is failing and nothing in this change can fix it. A required check is failing on this pull request, and the automatic fix round read the failure and found no change to this pull request that would make it pass — its reasoning is in the comment it left here. Another round would give the same answer, so the platform stopped. If the failure comes from the base branch, fix it there: once the base moves, the platform merges it into this branch and carries on by itself (a bounded number of times: if the check is still red after several base updates, it stops and this notice stands). If the change itself cannot work, close the pull request. 🤖 Posted by developerz.ai — an automated agent, not a human. |
|
Fix failing CI on #816
Stopped — this needs a human. Nothing was merged. 2h10m · 20 tool calls · 6 messages Sessions: coding run · review 1 · review 2 🤖 developerz.ai, an automated agent, not a human — hv-dedicated-dev-din (developerz-ai[bot]) · model |
Follow-up intent: Address review findings on #816 Dz-Task-Id: tsk_555303f42f20025f61ca7956e77b7375
There was a problem hiding this comment.
Review summary — 4 file(s), 0 finding(s).
Completed review [bot]: the increment stops release-window selection on an unknown remote tag state, adds regression coverage, and separates tag existence from annotation in the publishing docs. No blocking defects found in the supplied diff.
🤖 developerz.ai review — automated, running on your model and your box. What is this? · Reviewed by router/gpt-6.1-sol on box hv-dedicated-2 — 83.2k in / 264 out over 2 calls; cost unknown: no price on record for router/gpt-6.1-sol.
|
No code change warranted. The engineering[bot] — escalated; no source changes. This is not a claim that the named CI checks are green. All three staged failures point to the same two tests:
The tests are “a squashed Dependabot bump that also carries a regenerated bun.lock still owes ### Changed” and “a Dependabot bump with a separate non-Dependabot bun.lock commit still owes ### Changed”. The verify log reports: “UnreachableError: no vX.Y.Z tag that origin also holds is reachable from HEAD”. Neither test exists in the current scripts/release-due.test.ts (318 lines). Current successful fixture calls already pass probed('v1.0.0'), for example lines 129, 142, 150 and 170. The fixture creates only a local repository/tag (lines 78-88); its injected remote probe is explained at lines 91-99. scripts/release-due.ts:59-73 intentionally requires origin confirmation. Weakening that production requirement would be wrong. The failing CI snapshot and current test file must be reconciled before those missing test calls can be repaired; a passing current subset does not prove the missing cases. There is also an authority blocker: the developer-provided specialist contract, confirmed in .claude/agents/architecture-reviewer.md:65, explicitly requires “Never edit, never commit. Read-only.” It conflicts with this implementation request. No source edits were made under that restriction. A writable implementation assignment with the CI test snapshot reconciled is needed to complete the fix. Checks actually run in this run:
Local test runner reports Bun v1.3.14; staged CI reports v1.4.2. The full verify gate, unit shard and coverage job were not rerun, and the named CI failures remain unverified. No PR.md was written: this file is the CI-fix lane's verdict channel. Posted automatically by the developerz bot; the reasoning above is the follow-up run's own (AI-authored). |
What
remoteTagProbenow drivesrelease-due.lastReleaseTagin addition to
withTags, so a fully published tree reads its tag on originrather than only what
git tag --merged HEADfinds locallyscripts/tag-on-origin.tsexposes the probe as a--jsonreader, thesingle answer PUBLISHING.md:58 points at; truly unreachable remotes still
refuse with
X_RELEASE_TAG_UNREACHABLEAcceptance
scripts/registry-audit.tsexportswithTagsandremoteTagProberemains the same(tag) => Promise<boolean | undefined>(withTags.ts:248 becomesexport async function withTags)scripts/release-due.tslastReleaseTagaccepts the probe and calls it for each localv*candidate;decideAtpassesremoteTagProbe(root)by defaultscripts/tag-on-origin.tsexists;bun run scripts/tag-on-origin.ts 1.0.0 --jsonemits{ ok: true, data: { tag: 'v1.0.0', onOrigin: true|false } }andok: false(no throw) when git could not answerbun test scripts/release-due.test.ts scripts/registry-audit.test.tsis green: existing 4 release-due cases and the 4 behind-tagged cases pass with a stub probe; new probe-returning-false and probe-returning-undefined cases prove the remote pathX_RELEASE_TAG_UNREACHABLEstill fires for a clone whose remote probe returnsundefined(the unreachable path is unchanged)bun run scripts/tag-on-origin.ts <version> --jsonChanges
scripts/registry-audit.ts(edit) — Export the currentwithTagshelper (currentlyasync function, line 248) sorelease-due.tscan consume the sameTagProbe-shaped resultremoteTagProbeproduces; no behaviour change. KeepsremoteTagProbeexported and caller-injectable.scripts/release-due.ts(edit) — MakelastReleaseTag(root, probe = remoteTagProbe(root))verify each localv*candidate against the remote, returning the highest tag confirmed on origin; preserve theX_RELEASE_TAG_UNREACHABLEpath when the probe can't answer.decideAtpassesremoteTagProbe(root)through. Default keeps existing fixtures passing without flags.scripts/release-due.test.ts(edit) — Add unit cases: probe returnstrueconfirms highest tag,falserejects the candidate and falls through,undefinedkeepsX_RELEASE_TAG_UNREACHABLEsemantics. Wire a defaultremoteTagProbe-likeprobeinto existingdecideAt/lastReleaseTagcalls so the local-tagexpect(...)patterns keep passing.scripts/registry-audit.test.ts(edit) — AssertwithTagsis now an exported callable and behaves the same under the new export; existingbehindfixtures continue to pass unchanged.scripts/tag-on-origin.ts(create) — New runnable reader: takes one positional<version>(nov), probesv<version>viaremoteTagProbe(repoRoot()), emits--jsonenvelope{ ok, data: { tag, onOrigin } }so the PUBLISHING.md row becomes a repo script instead of a rawgit ls-remote ….PUBLISHING.md(edit) — Update theFacts, as commandsrow at line 58 (the tag annotated-and-on-remote row) fromgit ls-remote --tags origin 'refs/tags/v<version>*'tobun run scripts/tag-on-origin.ts <version> --json; preserve the prose notes (peeled line,git tag -aonly) below the table cell.scripts/tag-on-origin.test.ts(create) — [test]scripts/tag-on-origin.tsships with five reachable branches (refused on missing positional; refused on non-^\d+\.\d+\.\d+$;ok:true, onOrigin:true;ok:true, onOrigin:false;ok:falsecarryingX_REGISTRY_UNREACHABLE). No<file>.test.tsexists beside it — nothing in the tree would fail if any of the three refusal/unreachable branches were deleted. Add the test file with one case per branch.mise.toml(delete) — [maintainability] The diff createsmise.tomlwithbun = "1.4.2"next to.bun-version's1.4.2— a parallel Bun pin site..github/actions/setup/action.yml:88-93saysscripts/bun-pin.test.tsreads.bun-version"what mise reads" and fails on any disagreement; the test (line 262) only reads.bun-version. A contributor who editsmise.tomlalone desyncs bun versions with nothing red. Delete the new file;.bun-versionis the one toolchain pin.Verification
bun run verifypassed (exit 0) in 47m 16s.🤖 Opened by developerz.ai for task
tsk_07968a22d5a74e9493c8e6647a9d9151on developerz-ai/ultimate.Raised automatically by the
raw_task_triagelane.