kylon-cli 0.7.0-next.873 → 0.7.0-next.876
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -11
- package/dist/kylon-bundle.manifest.json +3 -3
- package/dist/kylon-bundle.mjs +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -444,6 +444,30 @@ just released, with `enabled: true` and `rolloutPercentage: 100`. A staged
|
|
|
444
444
|
rollout on dev would serve no purpose: the prerelease it points at is the only
|
|
445
445
|
build `@next` resolves to, so anyone tracking `next` is getting it regardless.
|
|
446
446
|
|
|
447
|
+
**Any CLI publish workflow run on `develop` converges the dev policy with the
|
|
448
|
+
real `@next`** — not only a run that published something. The job runs in one
|
|
449
|
+
of three modes, reported by the classifier as `sync_reason`:
|
|
450
|
+
|
|
451
|
+
| `sync_reason` | What happened | What the sync does |
|
|
452
|
+
| --- | --- | --- |
|
|
453
|
+
| `published` | this run released a prerelease | point the entry at it |
|
|
454
|
+
| `this_run_already_published` | a full re-run whose own version is already on npm | re-run the outstanding reconciliation |
|
|
455
|
+
| `ordinary_dedup_reconcile_current_next` | the bundle is identical to what `@next` already carries, so nothing was published | reconcile the entry toward the version `@next` already serves |
|
|
456
|
+
|
|
457
|
+
The third mode is the one to understand: **when there is no new bundle, the run
|
|
458
|
+
only bootstraps or repairs the config.** It publishes nothing, mints no
|
|
459
|
+
version, never touches a dist-tag, and writes no revision at all when the entry
|
|
460
|
+
is already correct. The version it converges on is never hypothetical — it is
|
|
461
|
+
read from the registry, must be an exact `X.Y.Z-next.N`, and is the build every
|
|
462
|
+
`@next` install is already getting.
|
|
463
|
+
|
|
464
|
+
That mode exists because the previous behaviour had a bootstrap gap. The merge
|
|
465
|
+
that shipped this sync (#6692) changed no CLI bundle, so content dedup skipped,
|
|
466
|
+
the sync job's condition rejected an ordinary skip, and the dev
|
|
467
|
+
`cli_auto_update/next` entry — which did not exist yet — was never created. An
|
|
468
|
+
identical bundle is a reason not to publish; it is not a reason to leave the
|
|
469
|
+
dev policy unreconciled.
|
|
470
|
+
|
|
447
471
|
The job verifies that `kylon-cli@next` actually resolves to the published
|
|
448
472
|
version before writing (retrying for registry read lag), and writes through
|
|
449
473
|
`upsertRuntimeConfigEntry`, so the same schema validation and
|
|
@@ -511,11 +535,25 @@ updating to it; that remains a separate, deliberate step.
|
|
|
511
535
|
|
|
512
536
|
Two consequences worth knowing:
|
|
513
537
|
|
|
514
|
-
- **A dedup-skipped prerelease
|
|
515
|
-
bundle is identical to what `@next` already has, no
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
538
|
+
- **A dedup-skipped prerelease publishes nothing, but still reconciles.** When
|
|
539
|
+
content dedup decides the bundle is identical to what `@next` already has, no
|
|
540
|
+
version is published — and the sync job runs anyway, against the version
|
|
541
|
+
`@next` currently serves. Usually that is a no-op that writes no revision;
|
|
542
|
+
when the entry is missing or stale it is repaired on the spot. The sync never
|
|
543
|
+
fabricates a version for a release that did not happen: the only version it
|
|
544
|
+
can write is one it read off the registry.
|
|
545
|
+
|
|
546
|
+
A run with no release of its own also never moves the dist-tag. If it finds
|
|
547
|
+
the row pointing at something newer than `@next`, that winner belongs to the
|
|
548
|
+
run that published it, and that run converges both surfaces itself — so this
|
|
549
|
+
one records a `superseded` no-op instead of racing it. For the same reason a
|
|
550
|
+
registry it cannot read — or one serving a version this workflow does not
|
|
551
|
+
own — is a `::warning::` and a green run here, not a red one, and that holds
|
|
552
|
+
for **every** registry read the job takes: the read that picks the target and
|
|
553
|
+
the read the reconciliation itself takes just before it writes. Nothing was
|
|
554
|
+
published, nothing was written, nothing is at risk, and the next push
|
|
555
|
+
reconciles again. The downgrade stops there: a schema rejection, a lost CAS
|
|
556
|
+
fence or a database error still fails the job on this trigger too.
|
|
519
557
|
- **A failed sync fails the run, loudly, and re-running repairs it.** The npm
|
|
520
558
|
publish is irreversible, so the sync cannot be retried by re-publishing. If
|
|
521
559
|
the config write fails (or `@next` does not converge on the published
|
|
@@ -528,14 +566,16 @@ Two consequences worth knowing:
|
|
|
528
566
|
`reconcile_only`, so it publishes nothing but still runs the sync job. The
|
|
529
567
|
reconciliation is idempotent and reads the live dist-tag, so it either repairs
|
|
530
568
|
the stale entry, finds it already correct, or finds that a newer prerelease
|
|
531
|
-
has superseded this one and leaves the newer target alone. That
|
|
532
|
-
from an ordinary content-dedup skip,
|
|
533
|
-
|
|
534
|
-
runtime config by
|
|
569
|
+
has superseded this one and leaves the newer target alone. That stays distinct
|
|
570
|
+
from an ordinary content-dedup skip: both start a sync, but only the re-run
|
|
571
|
+
has a release of its own to reconcile, so only it may claim one. If the re-run
|
|
572
|
+
also fails, set `cli_auto_update/next` in the dev admin runtime config by
|
|
573
|
+
hand.
|
|
535
574
|
|
|
536
575
|
The classifier that tells those two skips apart is
|
|
537
|
-
`scripts/ci/cli-prerelease-npm.sh
|
|
538
|
-
|
|
576
|
+
`scripts/ci/cli-prerelease-npm.sh` — it emits `sync_reason`, and keeps
|
|
577
|
+
`reconcile_only` reserved for the re-run case — and every registry lookup in
|
|
578
|
+
it retries and fails closed. A transient `npm view` error is not evidence that a version
|
|
539
579
|
is unpublished; treating it as such is what would let a failed reconciliation
|
|
540
580
|
hide behind a green re-run. The dist-tag's own version is used as a second,
|
|
541
581
|
independent confirmation of the same fact.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.7.0-next.
|
|
3
|
-
"fingerprint": "
|
|
4
|
-
"source_commit": "
|
|
2
|
+
"version": "0.7.0-next.876",
|
|
3
|
+
"fingerprint": "194995b0de87eabc040972266c2b9eca36e38c40f23bcba55ce186a2cf1d722a",
|
|
4
|
+
"source_commit": "79bab8e06e284f34796d86fb4065cd077c42e924"
|
|
5
5
|
}
|