docs: onboarding-wizard contract revision 10 (sol r9 NEW-11: seed-origin becomes a designation with a disclosed succession command — origin loss recoverable without factory reset, no-oracle shape preserved)
ci/woodpecker/pr/ci Pipeline failed
ci/woodpecker/pr/ci Pipeline failed
This commit is contained in:
@@ -179,6 +179,24 @@ outcome references, actor equality remaining an additional
|
|||||||
condition, never a substitute — a creator whose grants were revoked
|
condition, never a substitute — a creator whose grants were revoked
|
||||||
is refused, not replayed (NEW-10; §6.7 lost-target-grant witness).
|
is refused, not replayed (NEW-10; §6.7 lost-target-grant witness).
|
||||||
|
|
||||||
|
Revision 10 (sol re-review 8: NEW-11): the seed-origin boundary becomes
|
||||||
|
recoverable without breaking the no-oracle result. The epoch's
|
||||||
|
seed-origin is a **designation** the finalize fixes to the first admin,
|
||||||
|
changed through exactly one disclosed command — **seed-origin
|
||||||
|
succession** (§4.3, §7 item 12): an eligible platform admin holding
|
||||||
|
target-result read authority on the committed seed prefix succeeds only
|
||||||
|
while the current origin fails identity §7.1 eligibility; refusals keep
|
||||||
|
the constant conflict shape whatever condition failed and whatever is
|
||||||
|
recorded, concurrent successions serialize on the epoch record, the
|
||||||
|
change is one audited epoch-record mutation, and recorded fence rows
|
||||||
|
immutably retain their original actor. The seed-boundary gate and the
|
||||||
|
origination rule read the epoch record's current designation, so a
|
||||||
|
banned or deleted origin no longer strands the unoriginated suffix —
|
||||||
|
the successor resumes and completes it with no factory reset and no new
|
||||||
|
epoch, restoring D4 re-runnability and §4.4's strand-nothing rule
|
||||||
|
(NEW-11; witnesses §6.7: succession recovery, origin-available refusal,
|
||||||
|
succession race).
|
||||||
|
|
||||||
Scope: the Gateway-backed product onboarding wizard. Out of scope: the
|
Scope: the Gateway-backed product onboarding wizard. Out of scope: the
|
||||||
host-local install wizard (`mosaic wizard`, which drives host install and
|
host-local install wizard (`mosaic wizard`, which drives host install and
|
||||||
gateway bootstrap and is not this artifact — audit REPORT.md layer 3);
|
gateway bootstrap and is not this artifact — audit REPORT.md layer 3);
|
||||||
@@ -417,7 +435,9 @@ the named authority:
|
|||||||
epoch's §4.3 seed-origin account — as actor,
|
epoch's §4.3 seed-origin account — as actor,
|
||||||
naming the admin as initial `owner` in the same audited operation
|
naming the admin as initial `owner` in the same audited operation
|
||||||
(contract 2 §4.3); the §4.3 seed-boundary gate reserves
|
(contract 2 §4.3); the §4.3 seed-boundary gate reserves
|
||||||
origination of the canonical seed tuples to that account, while
|
origination of the canonical seed tuples to the epoch's current
|
||||||
|
seed-origin account — initially this admin, thereafter changed
|
||||||
|
only by §4.3 seed-origin succession — while
|
||||||
the same command outside the canonical seed key set follows §5.2
|
the same command outside the canonical seed key set follows §5.2
|
||||||
unchanged. The initial estate, initial project, and initial
|
unchanged. The initial estate, initial project, and initial
|
||||||
workspace with seeded example data (D4, D11) follow through hierarchy
|
workspace with seeded example data (D4, D11) follow through hierarchy
|
||||||
@@ -551,11 +571,13 @@ collects no sensitive category, so v1 ships no custody surface.
|
|||||||
can carry a shared declaration, so no shared fence row can
|
can carry a shared declaration, so no shared fence row can
|
||||||
exist outside the seed sequence — the seed-only rule is
|
exist outside the seed sequence — the seed-only rule is
|
||||||
enforced by the command layer, not by wizard convention.
|
enforced by the command layer, not by wizard convention.
|
||||||
- **Seed-boundary gate and origination.** The epoch has one
|
- **Seed-boundary gate and origination.** The epoch record holds
|
||||||
immutable **seed-origin account**: the account the §3.3
|
one **seed-origin designation**: at finalize it names the
|
||||||
finalize transaction created as the epoch's first admin
|
account the §3.3 finalize transaction created as the epoch's
|
||||||
(identity §3) — provenance the epoch record fixes at finalize
|
first admin (identity §3), and afterwards it changes through
|
||||||
and nothing changes afterwards. Every mutating submission
|
exactly one path — the **seed-origin succession** command below
|
||||||
|
— never by any other write. The epoch's **seed-origin account**
|
||||||
|
is the account the designation currently names. Every mutating submission
|
||||||
whose (operation, key) is in the canonical seed key set —
|
whose (operation, key) is in the canonical seed key set —
|
||||||
whatever replay mode it declares — passes, after
|
whatever replay mode it declares — passes, after
|
||||||
fresh-mutation authorization and before the fence table is
|
fresh-mutation authorization and before the fence table is
|
||||||
@@ -582,14 +604,46 @@ collects no sensitive category, so v1 ships no custody surface.
|
|||||||
eligibility plus the hierarchy authority the command itself
|
eligibility plus the hierarchy authority the command itself
|
||||||
requires); a refused submission records no row (no-error
|
requires); a refused submission records no row (no-error
|
||||||
replay below). The recorded actor of every shared row is
|
replay below). The recorded actor of every shared row is
|
||||||
therefore the seed-origin account, authorized for the mutation
|
therefore the account that was the epoch's seed-origin at that
|
||||||
the row fences. If the seed-origin account is banned or
|
position's origination, authorized for the mutation the row
|
||||||
deleted while seed positions remain unoriginated, those
|
fences. Recorded positions are replayable by any admin holding
|
||||||
positions are unoriginatable for this epoch — an accepted
|
target-result read authority (§6.3).
|
||||||
consequence of the immutable boundary; factory reset (§4.2),
|
- **Seed-origin succession.** Loss of the seed-origin account
|
||||||
which opens a new epoch with a new first admin, is the
|
does not strand the epoch (D4, §4.4). The designation changes
|
||||||
recovery path. Recorded positions are unaffected: any admin
|
through exactly one mutating command, an amendment to identity
|
||||||
holding target-result read authority replays them (§6.3).
|
§3's epoch surface disclosed in §7 item 12: an eligible
|
||||||
|
platform admin — passing §5.2 fresh-mutation authorization in
|
||||||
|
full — submits succession naming itself the epoch's
|
||||||
|
seed-origin. The command succeeds only when, evaluated against
|
||||||
|
canonical state inside the succession transaction itself:
|
||||||
|
(a) the current seed-origin account fails identity §7.1
|
||||||
|
eligibility (banned, deleted, or disabled) — succession while
|
||||||
|
the current origin remains eligible is refused — and (b) the
|
||||||
|
submitter holds §4.3 target-result read authority on every
|
||||||
|
canonical record referenced by the recorded outcomes of the
|
||||||
|
committed seed prefix (vacuously satisfied while no position
|
||||||
|
is committed). A submission failing either condition is
|
||||||
|
refused with the same single constant-shape bounded conflict
|
||||||
|
as the seed-boundary gate, byte-shape-identical whichever
|
||||||
|
condition failed and whether any seed fence exists — so
|
||||||
|
succession adds no existence oracle (witness §6.7) — executes
|
||||||
|
nothing, and appends no event. Successful succession updates
|
||||||
|
the designation in the epoch record and appends one ordinary
|
||||||
|
mutation audit event recording the prior designation, the new
|
||||||
|
designation, and the acting principal; it rewrites no fence
|
||||||
|
row and no recorded outcome — rows already recorded immutably
|
||||||
|
retain their original actor. Concurrent successions serialize
|
||||||
|
on the epoch record: exactly one submitter commits and becomes
|
||||||
|
the seed-origin, and the loser, re-evaluated against the
|
||||||
|
committed winner, fails condition (a) — the now-current origin
|
||||||
|
is eligible — and receives the constant-shape refusal. The
|
||||||
|
seed-boundary gate and the origination rule always read the
|
||||||
|
epoch record's current designation: after succession the
|
||||||
|
successor originates the remaining suffix in order under its
|
||||||
|
own full fresh-mutation authorization, and the fence rows it
|
||||||
|
originates record the successor. Factory reset (§4.2) remains
|
||||||
|
the only path to a new epoch; it is never required to complete
|
||||||
|
an interrupted seed sequence.
|
||||||
- **No error replay.** The fence row commits only with its
|
- **No error replay.** The fence row commits only with its
|
||||||
mutation, so only committed outcomes are ever recorded. A failed
|
mutation, so only committed outcomes are ever recorded. A failed
|
||||||
or refused submission records no fence row; a retry executes
|
or refused submission records no fence row; a retry executes
|
||||||
@@ -651,7 +705,11 @@ collects no sensitive category, so v1 ships no custody surface.
|
|||||||
already-committed mutations return their recorded outcomes, and
|
already-committed mutations return their recorded outcomes, and
|
||||||
only the remainder executes, without duplication and without
|
only the remainder executes, without duplication and without
|
||||||
compensating rollback of completed commands. There is no
|
compensating rollback of completed commands. There is no
|
||||||
wizard-level transaction spanning steps.
|
wizard-level transaction spanning steps. Loss of the seed-origin
|
||||||
|
account mid-sequence is likewise recoverable without a new epoch:
|
||||||
|
§4.3 seed-origin succession designates an eligible successor, and
|
||||||
|
the resumed run completes the remaining suffix under the successor
|
||||||
|
— interrupted runs strand nothing even across origin-account loss.
|
||||||
|
|
||||||
## 5. Seeding authority (resolves contract 2 review NEW-1)
|
## 5. Seeding authority (resolves contract 2 review NEW-1)
|
||||||
|
|
||||||
@@ -916,7 +974,30 @@ Binding on the implementing PRs:
|
|||||||
re-granting the creator read authority and resubmitting returns
|
re-granting the creator read authority and resubmitting returns
|
||||||
the recorded outcome — proving actor equality is never a
|
the recorded outcome — proving actor equality is never a
|
||||||
substitute for live target-result read authority on any replay
|
substitute for live target-result read authority on any replay
|
||||||
mode; a submission that failed before commit
|
mode; **seed-origin succession witnesses (§4.3, NEW-11):** a
|
||||||
|
**succession recovery** — the seed-origin account commits a
|
||||||
|
proper seed prefix and is then banned (identity §7.1); an
|
||||||
|
eligible platform admin holding target-result read authority on
|
||||||
|
the committed prefix submits succession, the epoch record's
|
||||||
|
designation changes to the successor with exactly one mutation
|
||||||
|
audit event recording the prior designation, the new
|
||||||
|
designation, and the acting principal, and the successor's
|
||||||
|
resumed run replays the committed prefix (its access attributed
|
||||||
|
by §4.3 replay access events) and originates the remaining
|
||||||
|
suffix in order — the new fence rows record the successor, the
|
||||||
|
pre-succession rows immutably retain the original origin, and
|
||||||
|
the full seed set completes with no factory reset and no new
|
||||||
|
epoch; an **origin-available succession refusal** — the same
|
||||||
|
eligible admin submits succession while the current origin
|
||||||
|
remains §7.1-eligible — is refused with the single
|
||||||
|
constant-shape bounded conflict (asserted byte-shape-identical
|
||||||
|
to the collision refusal), changes no epoch record, and appends
|
||||||
|
no audit event; a **succession race** — with the origin banned,
|
||||||
|
two eligible, prefix-authorized admins submit succession
|
||||||
|
concurrently: the epoch record serializes them, exactly one
|
||||||
|
commits and becomes the designated origin with one audit event,
|
||||||
|
the loser receives the constant-shape refusal, and the seed
|
||||||
|
sequence completes exactly once under the winner; a submission that failed before commit
|
||||||
leaves no fence row and its retry executes; two concurrent resumed
|
leaves no fence row and its retry executes; two concurrent resumed
|
||||||
runs executing the seed sequence yield exactly one seed set — per
|
runs executing the seed sequence yield exactly one seed set — per
|
||||||
key, exactly one mutation and one mutation audit event exist, and
|
key, exactly one mutation and one mutation audit event exist, and
|
||||||
@@ -1011,9 +1092,11 @@ contracts and are not additions:
|
|||||||
outcomes — with a shared declaration outside the key set, off
|
outcomes — with a shared declaration outside the key set, off
|
||||||
its position's derived tuple, or past the next unrecorded
|
its position's derived tuple, or past the next unrecorded
|
||||||
position refused recording nothing (§4.3). Including the
|
position refused recording nothing (§4.3). Including the
|
||||||
**seed-boundary gate**: the epoch's immutable seed-origin
|
**seed-boundary gate**: the epoch's seed-origin designation
|
||||||
account is the first admin the finalize transaction created;
|
initially names the first admin the finalize transaction
|
||||||
every submission on a canonical seed key must be that account
|
created and changes only through item 12's succession command;
|
||||||
|
every submission on a canonical seed key must be the currently
|
||||||
|
designated account
|
||||||
or hold target-result read authority on the position's recorded
|
or hold target-result read authority on the position's recorded
|
||||||
targets, refused otherwise with the constant-shape conflict
|
targets, refused otherwise with the constant-shape conflict
|
||||||
evaluated before fence presence — so recorded and unrecorded
|
evaluated before fence presence — so recorded and unrecorded
|
||||||
@@ -1070,6 +1153,18 @@ contracts and are not additions:
|
|||||||
provenance for §3.4's derivation; the current company name lives
|
provenance for §3.4's derivation; the current company name lives
|
||||||
on the company row and changes only through the ordinary
|
on the company row and changes only through the ordinary
|
||||||
hierarchy rename (§3.1, witnesses §6.3).
|
hierarchy rename (§3.1, witnesses §6.3).
|
||||||
|
12. The **seed-origin succession command** (§4.3) — an amendment to
|
||||||
|
identity §3's epoch surface, proposed and ratified here,
|
||||||
|
severable: one mutating command that redesignates the epoch's
|
||||||
|
seed-origin to an eligible platform admin holding target-result
|
||||||
|
read authority on the committed seed prefix, valid only while
|
||||||
|
the current origin fails identity §7.1 eligibility; refusals
|
||||||
|
are the constant-shape §4.3 conflict regardless of which
|
||||||
|
condition failed, the change is one audited epoch-record write
|
||||||
|
serialized on the epoch record, and recorded fence rows are
|
||||||
|
never rewritten. Without this amendment a banned or deleted
|
||||||
|
seed-origin account strands the unoriginated seed suffix,
|
||||||
|
contradicting PRD D4's no-lock-in requirement (§4.4).
|
||||||
|
|
||||||
## Ruling request
|
## Ruling request
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user