Main sync: C01 evidence, C03 health modes, C04 provenance, X02-S1 machine interface, C09 doctor, X02-S2 contracts corpus - #8
Merged
Conversation
…, honest degraded outcomes (C01-4/5/10) Readiness receipts (exact candidate IDs + probe outcomes) persist at the attempt namespace the moment the gate passes, before the traffic switch — un-collapsing ReadinessPassed from CandidatesRunning: recovery now distinguishes COMPENSATE (receipt present) from INSPECT (absent) via the unchanged Decide(). Predecessor snapshots persist before any new container starts, so a crashed attempt's compensation restores exactly the recorded container IDs. logDeploy records degraded outcomes (success + degraded + reason) when predecessor retirement partially fails — fleet consumers keying on clean success no longer skip a host that needs attention. C01-1/2/3/8/9 remain deferred with ADR rationales.
…rash-recovery evidence)
…nsation (C01-6/7) A record-write failure after the live commit now persists a repair-debt marker (never rolling back live traffic); the next deploy reconciles it under the app lock — backfill, clear, report — and teploy status shows outstanding debt in text and JSON. Route compensation renders from the predecessor's recorded F14 receipt (record is authoritative for what was switched away from); reconstruct-from-inspect survives only as an announced fallback. Remaining C01: -1/2/3 (locking protocol) and -8/9 (F04 identities).
…rfaced before the gate (C03, closes F47/TCL-17/A22) health.mode selects the probe; empty = auto = today's compat fallback verbatim (named and surfaced in the deploy plan). Unknown modes rejected at load and validate; tcp+path rejected as a lying config. Mode forwards into the F14 record and readiness receipts; the total deadline was verified bounded and pinned by regression. Drain, liveness-vs-readiness and multi-host wave states remain C03 scope.
…t equality (C04) Every attempt records provenance before execution: revision + dirty flag, context fingerprint (new build.ContextFingerprint — build had none), Dockerfile identity, platform, requested ref, resolved digest and digest-pinned flag, manifest digest; persisted in the attempt namespace and embedded in the F14 record. The plan shows digest + revision before any effect; after the live commit, record digest == plan digest is verified (pinned refs can't mismatch by construction) — a mismatch warns and files repair debt, never fails live traffic. Retry stability pinned: resolution is attempt-independent; webhook retries re-pin to the ledger commit.
…ed error envelope (X02-S1/S3-lite) version --json carries machine_interface:1 and a 15-token capability registry naming every landed contract; app list and server status --json carry the field additively (server list reshape recorded as the one non-additive S2 follow-up — dash decodes it as a bare map). Failures under --json emit the structured envelope on stderr (config-invalid + internal wired first; conflict/uncertain-outcome/degraded defined and queued) with exit codes pinned at 0/1/2.
…1 JSON, no deployment effects (C09) git/config/ssh/docker/disk/registry/caddy/compatibility/repair-debt checks, each ok|warn|fail with detail + remediation; registry auth vs unreachable distinguished; effect-free asserted against the executor call log; --json emits the machine-interface envelope; exit 0/1 only.
… first goldens contracts/ in teploy-cli is the corpus home (ADR section 4, D15): the producer of the envelopes owns the schema, and the CLI is the bottom of the stack with no Neutron/Nucleus dependency and a public mirror. - schema/ (draft 2020-12): version-handshake, app-list-envelope, server-status-envelope (appStatus root), error-envelope (code enum = the six-code taxonomy), release-record, attempt-name grammar pattern, preview-state eras (canonical/legacy oneOf), observation-envelope and operation-record (dash-produced; schemas shared, fixtures pending their S5/S6 encoders). - fixtures/: generated from the REAL encoders where a CLI producer exists - writeVersion drives the handshake golden verbatim; app-list pins the MI-1 envelope plus the pre-MI legacy shape (missing field = legacy producer, never MI 0); error-envelope valid + invalid-code; release-record container; attempt-name valid/invalid; preview-state canonical (ids cross-checked against the pinned TestPreviewIDGolden table), legacy slug, and the two-branches-one-slug ambiguous fixture whose rule is refuse-adoption. - MANIFEST.md: corpus revision table (rev 1 = post-v0.1.37 main), artifact/producer status, regeneration rules, the same-commit rule for contract changes, and the servers.yml downgrade hazard note. - contracts_golden_test.go regenerates with TEPLOY_UPDATE_CONTRACTS=1 and FAILS on drift otherwise - CI gets the drift check via the normal suite. Declared S2 tails (not done here): server-status fixture from a live capture, the non-additive server list --json reshape (needs a coordinated dash decode change), dash fail-closed on MI > max, and the X01 section 5.2 job-3 extension to decode the pinned corpus. Full CLI suite green (25 packages).
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Mirror sync from Forgejo main (dace006..d53c5bf). Same commits, same tree; see origin main for the receipt trail.