Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
255 commits
Select commit Hold shift + click to select a range
f57e496
fix(phase3): bind observation evidence to ingress receipt
MikiyaRyougi Aug 12, 2026
1d47543
feat(phase3): validate closed execution API requests
MikiyaRyougi Aug 12, 2026
cba4fbd
fix(phase3): reject non-utf8 execution wires
MikiyaRyougi Aug 12, 2026
b363b29
fix(phase3): enforce canonical execution JSON values
MikiyaRyougi Aug 12, 2026
ecfff60
fix(phase3): enforce local event revision algebra
MikiyaRyougi Aug 12, 2026
1949f80
fix(phase3): bind receipt observation subject
MikiyaRyougi Aug 12, 2026
7a40aa2
fix(phase3): order event revisions by canonical kind rank
MikiyaRyougi Aug 12, 2026
fa876a7
fix(phase3): bind matched observation source
MikiyaRyougi Aug 12, 2026
df2a0b9
fix(phase3): correct cancel request timestamp contract
MikiyaRyougi Aug 12, 2026
4930336
test(phase3): add initial state replay triplet
MikiyaRyougi Aug 12, 2026
a1d96fc
feat(phase3): strictly load execution journal heads
MikiyaRyougi Aug 12, 2026
a7a24f1
feat(phase3): compare initial state supplied facts
MikiyaRyougi Aug 12, 2026
9c9b1a8
fix(phase3): bind execution state authority gates
MikiyaRyougi Aug 12, 2026
568ce86
fix(phase3): validate state heartbeat projections
MikiyaRyougi Aug 12, 2026
0d804c0
fix(phase3): bind active recovery projection
MikiyaRyougi Aug 12, 2026
0116344
fix(phase3): validate log stream closure projections
MikiyaRyougi Aug 12, 2026
08c133f
fix(phase3): order state deadline projections
MikiyaRyougi Aug 12, 2026
ef20067
fix(phase3): close state worker lease projections
MikiyaRyougi Aug 12, 2026
333f143
fix(phase3): validate budget ledger arithmetic
MikiyaRyougi Aug 12, 2026
bf15df8
test: normalize project root aliases
MikiyaRyougi Aug 12, 2026
09733ae
fix(phase3): bind session worker and lease expiry
MikiyaRyougi Aug 12, 2026
2e07a1e
fix(phase3): validate recovery projection prefix
MikiyaRyougi Aug 12, 2026
6d038d2
fix(phase3): bind session capacity to state
MikiyaRyougi Aug 12, 2026
d4943f5
fix(phase3): sort idempotency scopes as ASCII
MikiyaRyougi Aug 12, 2026
0b6962a
feat(phase3): replay initial execution journal prefix
MikiyaRyougi Aug 12, 2026
b37d651
feat(phase3): verify execution journal replay prefix
MikiyaRyougi Aug 12, 2026
725e0f1
fix(phase3): close journal replay input boundary
MikiyaRyougi Aug 12, 2026
19c2748
feat(phase3): replay initial clock uncertainty gate
MikiyaRyougi Aug 12, 2026
6c4f6de
fix(phase3): order journal replay timestamps
MikiyaRyougi Aug 12, 2026
b638384
fix(phase3): pin executor builds across replay prefix
MikiyaRyougi Aug 12, 2026
0edca99
fix(phase3): require epoch start at replay root
MikiyaRyougi Aug 12, 2026
03b0e62
feat(phase3): validate recovery action sets
MikiyaRyougi Aug 12, 2026
5603682
feat(phase3): seal recovery action ordering
MikiyaRyougi Aug 12, 2026
e122d24
feat(phase3): bind result ingress index records
MikiyaRyougi Aug 12, 2026
3ff055b
fix(phase3): bind ingress candidate owner
MikiyaRyougi Aug 12, 2026
d6576ed
feat(phase3): validate storage root manifests
MikiyaRyougi Aug 12, 2026
41e9209
test(phase3): cover committed storage root blobs
MikiyaRyougi Aug 12, 2026
2b067c6
fix(phase3): bind storage subjects to claimed blobs
MikiyaRyougi Aug 12, 2026
9cb7a67
feat(phase3): validate root hold release authorizations
MikiyaRyougi Aug 12, 2026
6ed9518
feat(phase3): validate control evidence sets
MikiyaRyougi Aug 12, 2026
6ecb600
feat(phase3): validate quarantine binding sets
MikiyaRyougi Aug 12, 2026
7d10df1
feat(phase3): validate output storage observations
MikiyaRyougi Aug 12, 2026
3db9d99
feat(phase3): validate storage journal wire contracts
MikiyaRyougi Aug 12, 2026
4ef9177
feat(phase3): validate storage journal prefixes
MikiyaRyougi Aug 12, 2026
de3d7db
feat(phase3): validate storage state projections
MikiyaRyougi Aug 12, 2026
3a02481
feat(phase3): validate storage projection records
MikiyaRyougi Aug 12, 2026
cf9c4d3
feat(phase3): validate storage availability projections
MikiyaRyougi Aug 12, 2026
477c156
feat(phase3): validate storage quota claims
MikiyaRyougi Aug 12, 2026
c4f2a7a
feat(phase3): validate storage control record bindings
MikiyaRyougi Aug 12, 2026
8185d2e
feat(phase3): validate legacy storage protections
MikiyaRyougi Aug 12, 2026
af29d65
feat(phase3): validate storage recovery records
MikiyaRyougi Aug 12, 2026
513e3d4
feat(phase3): validate storage dispositions
MikiyaRyougi Aug 12, 2026
b0ab7f9
feat(phase3): validate storage retention policies
MikiyaRyougi Aug 12, 2026
461b2be
feat(phase3): validate storage gc plans
MikiyaRyougi Aug 12, 2026
3bd9a4d
feat(phase3): validate storage provenance records
MikiyaRyougi Aug 12, 2026
8a39e84
feat(phase3): validate storage backend profiles
MikiyaRyougi Aug 12, 2026
a642e21
feat(phase3): replay clock-gated recovery starts
MikiyaRyougi Aug 12, 2026
74ebc51
feat(phase3): validate storage provenance policies
MikiyaRyougi Aug 12, 2026
28c9807
feat(phase3): validate storage doctor reports
MikiyaRyougi Aug 12, 2026
4de7c00
feat(phase3): bind supplied recovery action sets
MikiyaRyougi Aug 12, 2026
f5dc483
feat(phase3): bind recovery actions to events
MikiyaRyougi Aug 12, 2026
17d436b
feat(phase3): validate storage transfer requests
MikiyaRyougi Aug 12, 2026
f997793
feat(phase3): bind storage transfer attempts
MikiyaRyougi Aug 12, 2026
fe1aee0
feat(phase3): bind committed attempts to replicas
MikiyaRyougi Aug 12, 2026
c6f4076
feat(phase3): bind materializations to source replicas
MikiyaRyougi Aug 12, 2026
d6e2423
fix(phase3): allow atomic recovery revision effects
MikiyaRyougi Aug 12, 2026
3a632d1
feat(phase3): anchor recovery actions to supplied prefix
MikiyaRyougi Aug 12, 2026
7eba09d
feat(phase3): bind recovery starts to action sets
MikiyaRyougi Aug 12, 2026
91237f0
feat(phase3): bind blob known replicas to state
MikiyaRyougi Aug 12, 2026
531f19a
feat(phase3): close blob replica state graph
MikiyaRyougi Aug 12, 2026
7938e90
feat(phase3): validate execution journal wire prefixes
MikiyaRyougi Aug 12, 2026
f5cb74f
feat(phase3): bind recovery phase action sets
MikiyaRyougi Aug 12, 2026
6d00b02
feat(phase3): bind recovery rebases to action sets
MikiyaRyougi Aug 12, 2026
bc4c1ce
feat(phase3): bind recovery completion action set
MikiyaRyougi Aug 12, 2026
b420beb
feat(phase3): replay empty recovery phases
MikiyaRyougi Aug 12, 2026
d858ed3
fix(phase3): harden local execution journal loader
MikiyaRyougi Aug 12, 2026
8e7735c
fix(phase3): verify local blob metadata on dedupe
MikiyaRyougi Aug 12, 2026
879dfd4
fix(phase3): validate local journal event identities
MikiyaRyougi Aug 12, 2026
b55f8e7
fix(phase3): validate local journal event scalars
MikiyaRyougi Aug 12, 2026
26d7ea3
fix(phase3): reject decreasing local journal time
MikiyaRyougi Aug 12, 2026
cb9b8ed
fix(phase3): canonicalize local journal wire fields
MikiyaRyougi Aug 12, 2026
ea75fcf
fix(phase3): verify local blob records on readback
MikiyaRyougi Aug 12, 2026
d7f0ddb
fix(phase3): require storage initial epoch one
MikiyaRyougi Aug 12, 2026
4f71c0b
fix(phase3): reject duplicate execution journal events
MikiyaRyougi Aug 12, 2026
0490a5b
test(phase3): cover selected execution outcomes
MikiyaRyougi Aug 12, 2026
b4608ec
test(phase3): harden selected outcome bindings
MikiyaRyougi Aug 12, 2026
c965333
fix(phase3): bind recovery completion executor
MikiyaRyougi Aug 12, 2026
08a8479
fix(phase3): reject duplicate storage journal events
MikiyaRyougi Aug 12, 2026
8114931
fix(phase3): validate local execution replay payloads
MikiyaRyougi Aug 12, 2026
cf79e77
test(phase3): cover local execution restart recovery
MikiyaRyougi Aug 12, 2026
610e4c3
test(phase3): retain expired local job outcomes
MikiyaRyougi Aug 12, 2026
f4d5e6a
fix(phase3): strictly parse local persistence
MikiyaRyougi Aug 12, 2026
33d44ef
fix(phase3): fail closed on unreadable local journal
MikiyaRyougi Aug 12, 2026
6499707
fix(phase3): reject conflicting local cancellations
MikiyaRyougi Aug 12, 2026
f1ebe68
fix(phase3): prevalidate local journal appends
MikiyaRyougi Aug 12, 2026
bcefc87
fix(phase3): reject malformed local storage paths
MikiyaRyougi Aug 12, 2026
c34bad4
fix(phase3): reject incomplete local journal tails
MikiyaRyougi Aug 12, 2026
ad83803
fix(phase3): type-check local event payload scalars
MikiyaRyougi Aug 12, 2026
a58068c
fix(phase3): close local execution request types
MikiyaRyougi Aug 12, 2026
0cea97f
fix(phase3): guard local execution managed paths
MikiyaRyougi Aug 12, 2026
b2c3d81
test(phase3): harden outcome strict loader coverage
MikiyaRyougi Aug 12, 2026
7874c36
test(phase3): cover duplicate local terminal delivery
MikiyaRyougi Aug 12, 2026
654af28
test(phase3): cover stale local execution conflict mapping
MikiyaRyougi Aug 12, 2026
f32d1c4
fix(phase3): guard local storage managed paths
MikiyaRyougi Aug 12, 2026
be4f108
fix(phase3): reject symlinked local state paths
MikiyaRyougi Aug 12, 2026
1b14e36
test(phase3): cover symlinked blob rejection
MikiyaRyougi Aug 12, 2026
00e572e
fix(phase3): sync local execution storage directories
MikiyaRyougi Aug 12, 2026
57477b3
fix(phase3): reject null cancel idempotency keys
MikiyaRyougi Aug 12, 2026
65baf44
fix(phase3): bind eligible storage replicas
MikiyaRyougi Aug 12, 2026
5d978e1
fix(phase3): bind storage transfer attempt projections
MikiyaRyougi Aug 12, 2026
c895b95
fix(phase3): enforce storage quota claim conservation
MikiyaRyougi Aug 12, 2026
aa944bb
fix(phase3): bind storage commit intents to projections
MikiyaRyougi Aug 12, 2026
f53501b
fix(phase3): bind storage recovery projections
MikiyaRyougi Aug 12, 2026
6c255a5
fix(phase3): bind storage disposition and gc intents
MikiyaRyougi Aug 12, 2026
f9952ab
fix(phase3): bind storage canonical reference intents
MikiyaRyougi Aug 12, 2026
3a1242b
fix(phase3): bind canonical intent owner identity
MikiyaRyougi Aug 12, 2026
015a150
fix(phase3): close execution session and lease indexes
MikiyaRyougi Aug 12, 2026
c6d8f21
fix(phase3): close recovery projection chain
MikiyaRyougi Aug 12, 2026
6ebf960
fix(phase3): bind storage intent source journals
MikiyaRyougi Aug 12, 2026
2428fac
fix(phase3): close storage recovery state
MikiyaRyougi Aug 12, 2026
dfb5a82
fix(phase3): bind storage quarantine move intents
MikiyaRyougi Aug 12, 2026
cdd9360
fix(phase3): require evident outcome authority loss
MikiyaRyougi Aug 12, 2026
871c12f
fix(phase3): enforce outcome authorization matrix
MikiyaRyougi Aug 12, 2026
1121474
fix(phase3): require positive outcome retry ordinals
MikiyaRyougi Aug 12, 2026
46e9fc8
fix(phase3): bound storage intent source prefixes
MikiyaRyougi Aug 12, 2026
0b09c7d
fix(phase3): require a single active storage recovery
MikiyaRyougi Aug 12, 2026
e2680dd
fix(phase3): bound storage quota counters
MikiyaRyougi Aug 12, 2026
93970f8
test(phase3): add contract gate
MikiyaRyougi Aug 12, 2026
6dbbf37
feat(phase3): enforce queued local job lifecycle
MikiyaRyougi Aug 12, 2026
e5aefce
test(phase3): verify published schema reference closure
MikiyaRyougi Aug 12, 2026
6d801bd
feat(phase3): validate patch promotion journal prefixes
MikiyaRyougi Aug 12, 2026
5609352
feat(phase3): validate patch bundle semantics
MikiyaRyougi Aug 12, 2026
79330f0
feat(phase3): validate promotion checkpoint closure
MikiyaRyougi Aug 12, 2026
7b7b100
feat(phase3): expose bounded recovery replay
MikiyaRyougi Aug 12, 2026
d3c6fb1
feat(phase3): validate promotion mutation intent
MikiyaRyougi Aug 12, 2026
456aecb
feat(phase3): replay initial storage state
MikiyaRyougi Aug 12, 2026
8d193f9
feat(phase3): replay storage activation
MikiyaRyougi Aug 12, 2026
3b93860
feat(phase3): replay storage clock gate
MikiyaRyougi Aug 12, 2026
2142e8e
fix(phase3): verify storage replay heads
MikiyaRyougi Aug 12, 2026
f4581cd
feat(phase3): replay ordinary storage epoch restart
MikiyaRyougi Aug 12, 2026
5ab65af
feat(phase3): replay storage message rejections
MikiyaRyougi Aug 12, 2026
bdb8d0a
feat(phase3): validate promotion target guards
MikiyaRyougi Aug 12, 2026
ec5ec0c
feat(phase3): validate promotion attempts
MikiyaRyougi Aug 12, 2026
e27a259
feat(phase3): validate promotion outcomes
MikiyaRyougi Aug 12, 2026
9cd6ea2
feat(phase3): bind promotion outcomes to attempts
MikiyaRyougi Aug 12, 2026
0304660
feat(phase3): validate promotion recovery records
MikiyaRyougi Aug 12, 2026
0436c32
feat(phase3): replay submitted execution jobs
MikiyaRyougi Aug 12, 2026
217aa69
feat(phase3): replay queued execution jobs
MikiyaRyougi Aug 12, 2026
3c3e52d
feat(phase3): replay allocated execution attempts
MikiyaRyougi Aug 12, 2026
e15fc8b
feat(phase3): replay attempt preflight start
MikiyaRyougi Aug 12, 2026
6b29306
feat(phase3): replay passed attempt preflight
MikiyaRyougi Aug 12, 2026
7046783
feat(phase3): validate worker session bindings
MikiyaRyougi Aug 12, 2026
cb6de1c
feat(phase3): replay worker session registration
MikiyaRyougi Aug 12, 2026
f59046d
feat(phase3): bind execution lease records
MikiyaRyougi Aug 12, 2026
f15e0dd
feat(phase3): replay offered execution leases
MikiyaRyougi Aug 12, 2026
a30830e
feat(phase3): replay claimed execution leases
MikiyaRyougi Aug 12, 2026
59268f5
feat(phase3): replay running execution attempts
MikiyaRyougi Aug 12, 2026
0c45ce0
feat(phase3): replay accepted execution results
MikiyaRyougi Aug 12, 2026
86082f7
feat(phase3): replay execution draining transitions
MikiyaRyougi Aug 12, 2026
0bdcb53
feat(phase3): replay execution cleanup entry
MikiyaRyougi Aug 12, 2026
4a451b0
feat(phase3): replay bounded execution cleanup progress
MikiyaRyougi Aug 12, 2026
944e77e
feat(phase3): replay rejected execution results
MikiyaRyougi Aug 12, 2026
9b7f961
feat(phase3): replay execution lease release
MikiyaRyougi Aug 12, 2026
0f1c4a4
fix(phase3): close terminal attempt evidence schema
MikiyaRyougi Aug 12, 2026
d9653f7
feat(phase3): validate terminal execution evidence
MikiyaRyougi Aug 12, 2026
54f6927
feat(phase3): bind supplied terminalization records
MikiyaRyougi Aug 12, 2026
5dde431
feat(phase3): replay lease heartbeat and renewal
MikiyaRyougi Aug 12, 2026
9fe5465
feat(phase3): replay execution lease expiry
MikiyaRyougi Aug 12, 2026
df8736f
feat(phase3): replay stop after lease expiry
MikiyaRyougi Aug 12, 2026
826b7ae
feat(phase3): replay lease expiry stopping paths
MikiyaRyougi Aug 12, 2026
88358b8
feat(phase3): replay revoked execution leases
MikiyaRyougi Aug 12, 2026
815c80c
feat(phase3): replay lease tombstone republication
MikiyaRyougi Aug 12, 2026
c7500a6
feat(phase3): retain late result rejections
MikiyaRyougi Aug 12, 2026
dcfa1fb
feat(phase3): replay rejected lease messages
MikiyaRyougi Aug 12, 2026
d6a5960
feat(phase3): replay closed execution logs
MikiyaRyougi Aug 12, 2026
40717ad
feat(phase3): replay rejected and truncated logs
MikiyaRyougi Aug 12, 2026
6e12acd
feat(phase3): replay committed execution log chunks
MikiyaRyougi Aug 12, 2026
b826bda
feat(phase3): replay duplicate execution log chunks
MikiyaRyougi Aug 12, 2026
4795736
feat(phase3): replay worker session heartbeats
MikiyaRyougi Aug 12, 2026
7e301d0
feat(phase3): replay rejected worker session messages
MikiyaRyougi Aug 12, 2026
ab306da
feat(phase3): replay rejected job cancellation messages
MikiyaRyougi Aug 12, 2026
0098660
feat(phase3): replay worker draining and quarantine
MikiyaRyougi Aug 12, 2026
d209567
feat(phase3): replay worker retirement
MikiyaRyougi Aug 12, 2026
9d2fae6
feat(phase3): replay worker session lifecycle
MikiyaRyougi Aug 12, 2026
e98c021
feat(phase3): replay recovery clock restoration
MikiyaRyougi Aug 12, 2026
e36839d
feat(phase3): replay recovery action set rebases
MikiyaRyougi Aug 12, 2026
474262b
feat(phase3): replay recovery phase transitions
MikiyaRyougi Aug 12, 2026
a3ef14c
feat(phase3): replay contiguous supplied journal facts
MikiyaRyougi Aug 12, 2026
863ec41
feat(phase3): replay recovery bootstrap with supplied facts
MikiyaRyougi Aug 12, 2026
73bd543
feat(phase3): replay attempt authorization binding
MikiyaRyougi Aug 12, 2026
42a03d0
feat(phase3): replay preflight progress events
MikiyaRyougi Aug 12, 2026
b4d0294
fix(phase3): make recovery completion replayable
MikiyaRyougi Aug 12, 2026
45aee8c
test(phase3): reseal outcome schema manifest fixture
MikiyaRyougi Aug 12, 2026
b7c7a3c
feat(phase3): replay storage recovery lifecycle
MikiyaRyougi Aug 12, 2026
9a0a646
feat(phase3): replay storage recovery epoch restarts
MikiyaRyougi Aug 12, 2026
a6c6bb6
refactor(phase3): dispatch installed storage replay reducers
MikiyaRyougi Aug 12, 2026
2ceaa7e
feat(phase3): replay fenced lease authority closure
MikiyaRyougi Aug 12, 2026
7ac7aec
feat(phase3): replay recovery completion prefix
MikiyaRyougi Aug 12, 2026
863ee4e
refactor(phase3): unify installed journal replay entrypoints
MikiyaRyougi Aug 12, 2026
ae5a87a
feat(phase3): replay sealed attempt terminal states
MikiyaRyougi Aug 12, 2026
ac4c7b8
fix(phase3): defer accounting capture until settlement
MikiyaRyougi Aug 12, 2026
8e6f3cd
feat(phase3): replay sealed budget settlements
MikiyaRyougi Aug 12, 2026
7925c30
feat(phase3): replay assurance and job terminalization
MikiyaRyougi Aug 12, 2026
ace4cd9
test(phase3): cover unmet assurance replay
MikiyaRyougi Aug 12, 2026
5d15b0f
docs(phase3): record release exit audit
MikiyaRyougi Aug 12, 2026
6a20d7f
feat(phase3): preserve retry attempt history
MikiyaRyougi Aug 12, 2026
069550c
Revert "feat(phase3): preserve retry attempt history"
MikiyaRyougi Aug 12, 2026
57a930e
feat(phase3): retain legacy protection failures in storage replay
MikiyaRyougi Aug 12, 2026
faf354b
fix(phase3): fail closed on partial budget settlement
MikiyaRyougi Aug 12, 2026
5b3072d
feat(phase3): validate local assurance claim records
MikiyaRyougi Aug 12, 2026
8c62f5d
feat(phase3): validate result acceptance authorization closure
MikiyaRyougi Aug 12, 2026
21863b2
refactor(phase3): retain retry attempt and lease history
MikiyaRyougi Aug 12, 2026
10c3c57
refactor(phase3): preserve history through attempt lifecycle
MikiyaRyougi Aug 12, 2026
8cd6735
fix(phase3): select current attempt result intake
MikiyaRyougi Aug 12, 2026
0b4bc58
fix(phase3): validate retry allocation history
MikiyaRyougi Aug 12, 2026
87721da
feat(phase3): replay storage reference set registration
MikiyaRyougi Aug 12, 2026
3160ba0
test(phase3): cover storage reference registration bindings
MikiyaRyougi Aug 12, 2026
cfcc9ed
feat(phase3): close supplied assurance claim evidence
MikiyaRyougi Aug 12, 2026
54f871f
feat(phase3): replay canonical reference intent pins
MikiyaRyougi Aug 12, 2026
7d490a4
feat(phase3): compare canonical commit supplied facts
MikiyaRyougi Aug 12, 2026
ccc7d9e
feat(phase3): validate canonical release supplied facts
MikiyaRyougi Aug 12, 2026
5b7a9db
feat(phase3): restore agent result v2 contracts
MikiyaRyougi Aug 12, 2026
ab5ed53
feat(phase3): project result v2 acceptance supplied facts
MikiyaRyougi Aug 12, 2026
9f1b605
feat(phase3): replay canonical reference commits
MikiyaRyougi Aug 12, 2026
f74cc66
feat(phase3): fail closed canonical reference releases
MikiyaRyougi Aug 12, 2026
d4fa717
fix(phase3): preserve lease fencing monotonicity
MikiyaRyougi Aug 12, 2026
c64b377
feat(phase3): bind claimed assurance to supplied facts
MikiyaRyougi Aug 12, 2026
ec10e72
docs(phase3): refresh exit audit evidence
MikiyaRyougi Aug 12, 2026
d1bd928
docs(phase3): record implementation blockers
MikiyaRyougi Aug 12, 2026
081f64d
feat(storage): replay provenance policy registration
MikiyaRyougi Aug 12, 2026
b42b2f3
docs(phase3): record transfer replay prerequisites
MikiyaRyougi Aug 12, 2026
6ab53fa
docs(phase3): record local lifecycle evidence
MikiyaRyougi Aug 12, 2026
d6df212
docs(phase3): record retention replay prerequisites
MikiyaRyougi Aug 12, 2026
0d1e73f
docs(phase3): prepare rfc acceptance packet
MikiyaRyougi Aug 12, 2026
86f4af3
docs(phase3): record storage replay evidence
MikiyaRyougi Aug 12, 2026
7ea893b
docs(rfc0013): align provenance policy state contract
MikiyaRyougi Aug 12, 2026
17081bc
docs(phase3): retain local threat-boundary review
MikiyaRyougi Aug 12, 2026
52483b9
docs(phase3): align acceptance packet evidence
MikiyaRyougi Aug 12, 2026
05bf46c
feat(storage): replay active project retention policies
MikiyaRyougi Aug 12, 2026
5fdde42
docs(phase3): record retention replay slice
MikiyaRyougi Aug 12, 2026
c3e484e
feat(storage): close retention reference-set scopes
MikiyaRyougi Aug 12, 2026
baa3359
docs(phase3): record retention scope replay
MikiyaRyougi Aug 12, 2026
f8cfe23
docs(phase3): record patch runtime prerequisite
MikiyaRyougi Aug 12, 2026
c1f9909
docs(phase3): clarify retention initialization blocker
MikiyaRyougi Aug 12, 2026
db6649a
fix(promotion): close local record invariants
MikiyaRyougi Aug 12, 2026
4f406d1
docs(phase3): record promotion invariant coverage
MikiyaRyougi Aug 12, 2026
da6a987
docs(release): describe phase3 rc2 boundary
MikiyaRyougi Aug 13, 2026
ebf5534
docs(release): record phase3 rc2 slice
MikiyaRyougi Aug 13, 2026
a114d72
docs(release): align rc2 project status
MikiyaRyougi Aug 13, 2026
8bb45b0
ci: collect phase3 tests in coverage gate
MikiyaRyougi Aug 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ jobs:

- name: Run test suite
run: |
python -m coverage run -m unittest discover -s tests -t .
python -m coverage run -m pytest -q
python -m coverage report

- name: Chronicle migration tests
Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ versioned schemas plus explicit migration notes for compatibility.
installer state, Host diagnostics, repair, rollback, and uninstall.
- Added checksummed release assets, SBOM/provenance generation, installer CI,
GitHub Pages publication, and installation documentation.
- Added the bounded Phase 3 contract-only local slice: published Execution,
Storage, Outcome, assurance, and Patch Promotion validation/replay contracts
with authority-bearing paths fail closed pending verified external facts and
RFC acceptance.

See [release notes](docs/en/releases/0.3.0rc2.md).

Expand Down
8 changes: 5 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@ canonical transition. Accepted events are written to a local, append-only
Chronicle with chained SHA-256 Sigils and receipts.

> Project status: `0.3.0rc2` release candidate. Phase 2 freezes the Codex
> Plugin-first Instrumentarium while preserving host-neutral scientific
> contracts.
> Plugin-first Instrumentarium while Phase 3 adds a bounded contract-only,
> fail-closed local slice; canonical authority and RFC acceptance remain
> external prerequisites.

## Why Benchwork

Expand Down Expand Up @@ -408,7 +409,7 @@ examples/ Minimal research artifacts
Run the test suite:

```bash
python3 -m unittest discover -s tests -v
python3 -m pytest -q
```

Changes to canonical transitions should include tests for replay, schema
Expand All @@ -424,6 +425,7 @@ changes should preserve locale paths and follow
- [Compatibility policy](docs/en/COMPATIBILITY.md)
- [Release process](docs/en/RELEASE_PROCESS.md)
- [M10 acceptance matrix](docs/en/M10_ACCEPTANCE.md)
- [Phase 3 contract gate](docs/en/PHASE3_ACCEPTANCE.md)

## License

Expand Down
5 changes: 3 additions & 2 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ Benchwork 将科研活动转化为明确、可审查的状态。智能体和工
提案,但只有确定性的 Athanor 内核能够接受规范状态迁移。获准事件写入本地
追加式 Chronicle,并通过链式 SHA-256 Sigil 与 Receipt 留下记录。

> 项目状态:`0.3.0rc1` 候选版本。Phase 2 已冻结 Codex Plugin-first
> Instrumentarium,同时保留宿主中立的科研契约;稳定命名仍为 provisional。
> 项目状态:`0.3.0rc2` 候选版本。Phase 2 已冻结 Codex Plugin-first
> Instrumentarium;Phase 3 增加了范围受限、默认 fail-closed 的本地合同纵切,
> 规范权威与 RFC 接受仍是外部前置条件。

## 为什么需要 Benchwork

Expand Down
14 changes: 14 additions & 0 deletions docs/en/OPEN_DECISIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,17 @@ canonical: true
`PIVOT` outcome automatically creates lineage.
6. Define Provider leases, cancellation, result transport, and executor
isolation before direct research verbs automatically execute Task Capsules.

## Resolved decision record (2026-08-06)

The user approved four synchronized Phase 3 decision packages. They are no
longer open decisions; their canonical text is incorporated in the owning RFCs:

1. OD22: RFC-0012 Heartbeat Collision Wire Closure HCW1–HCW10.
2. OD23: RFC-0012 Initial State Reducer ISR1–ISR3.
3. OD24: RFC-0013 namespace closure AC1 and RFC-0012 Result Authority Closure
AC2–AC4.
4. OD25: RFC-0015 Observation projection clarification OP1–OP2.

These decisions do not by themselves publish a runtime, authorize journal or
storage mutation, accept a Result, or confer scientific authority.
18 changes: 18 additions & 0 deletions docs/en/PHASE3_ACCEPTANCE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Phase 3 contract gate

Run the repeatable Phase 3 evidence gate from the repository root:

```bash
.venv/bin/python scripts/ci/check-phase3-contracts.py
```

It verifies the published Schema family, RFC-0012 execution and storage
contract validators, RFC-0015 Job Outcome validator, local durable
start/observe/cancel/restart flow, and the MCP boundary that rejects generic
execution authority.

The gate is intentionally contract-only. A passing run is evidence for the
local reference slice; it does not claim a complete RFC-0012 Journal replayer,
RFC-0013 Storage backend, RFC-0015 Result acceptance, remote Worker support,
or scientific authority. Those remain the Phase 3 release-exit work named in
the [roadmap](ROADMAP.md#phase-3--sanctum-04).
42 changes: 42 additions & 0 deletions docs/en/PHASE3_BLOCKER_REGISTER.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Phase 3 blocker register

This register records implementation boundaries found by local independent
review. It is not an authority grant, RFC acceptance record, or a substitute
for a complete Chronicle/Storage replay.

## Active blockers

| Area | Why the installed local comparator must fail closed | Required before a local reducer/comparator may be installed |
| --- | --- | --- |
| RFC-0012 retry scheduling and readiness | The published Event payload has opaque terminal-reason, backoff, queue, deadline, and freshness values. The repository has neither an immutable Specification resolver nor a non-forgeable resolver Receipt/authorization result. A self-Sigiled “resolution” record would let a caller authorize `ACTIVE -> RETRY_WAIT -> QUEUED`. | A resolver-owned, verified eligibility and readiness result; exact Specification and terminal/settlement/assurance bindings; persistent eligibility binding for the State; and a continuous prefix test through the next Attempt allocation. |
| RFC-0013 quota-pressure transitions | Quota counters are independent projected entities, but the current closed Storage State does not retain their per-counter revisions. Reusing the Journal sequence would produce invalid entity-revision algebra. | An approved State/Schema evolution that persists independent quota-counter revisions, plus exact `observed_at`/clock semantics and pressure transition tests. |
| RFC-0013 transfer preparation | `transfer.prepared` would create a Transfer request, Attempt, Reservation, and quota effects. Current records contain bare authorization/fence/policy/backend references, Reservation has no verified issuer result, and State lacks quota-counter revisions. Treating their self-Sigils as admission authority would permit caller-controlled state transitions. | Verified authorization, lease/fence, backend, policy, and reservation-issuance inputs; an approved quota-revision State evolution; and a continuous prepare-to-terminal transfer replay with exact quota accounting. |
| RFC-0013 retention-policy registration | The installed replay accepts only locally closed `ACTIVE` PROJECT and already-projected exact Reference Set branches. BLOB scope still needs a replayed Blob lifecycle and PROGRAM needs a verified program-to-project resolver. Initialization cannot yet be encoded: RFC-0013 requires a migration-protection policy but does not provide its fixed ID, complete field values, or authorization-Sigil derivation, so accepting any guessed two-policy set would be unsafe. | A canonical migration-protection policy identity/full-field/authorization definition (or an accepted resolver contract), then initialization-policy reducers plus exact activation checks; a replayed Blob scope relation; a verified PROGRAM resolver; and fixtures covering every scope and the two initialization registrations. |
| RFC-0013 canonical-reference release | Local facts can close self-Sigils and a Head advance, but cannot prove that a Chronicle suffix contains no binding Event. | An authoritative full Chronicle replay/adaptor or an externally verified absence authority. The public reducer remains fail closed. |
| Full RFC-0013 Storage replay | The prefix dispatcher still deliberately rejects transfer, replica, materialization, quarantine, retention, GC, and disposition Events without their authoritative immutable-record and backend facts. | Reducers and supplied-facts comparators for each Event family, followed by retained-output, quarantine, and recovery prefix fixtures. |
| RFC-0014 Patch MCP and Host-native application | The four Patch tool names and closed schemas are published, but the MCP server intentionally registers no Patch module. Implementing a route without the Promotion Journal, authenticated human confirmation, Storage/Chronicle authority, and the reference atomic-CAS adapter would expose a misleading mutation surface. | A complete Promotion Coordinator and Journal replayer; verified confirmation and Athanor/Storage boundaries; the `FULL_TREE_ATOMIC_CAS` reference adapter with durable evidence/recovery; then four exact MCP routes with their success/error contracts. |

## Local review record

The following local reviews were performed in the active project session. They
are advisory implementation review evidence only; no source was disclosed to
an external reviewer.

| Scope | Disposition | Evidence |
| --- | --- | --- |
| Result acceptance, Outcome and assurance-Claim local closures | Findings were fixed before the corresponding commits; the installed paths retain fail-closed authority boundaries. | `ab5ed53`, `c64b377`; focused suite and full test baseline in the exit audit. |
| Lease fencing and retained multi-Attempt selection | A stale-lease/fence-regression finding was fixed before merge. | `d4fa717`; final-floor guards and replay tests. |
| Canonical-reference commit/release local facts | Closure, quota-settlement, and release-absence findings were resolved by retaining fail-closed release behavior where authority is missing. | `9f1b605`, `f74cc66`; Storage contract tests. |
| Proposed retry and quota-pressure reducers | Rejected, not merged: their initial forms would have treated caller-controlled inputs as authority or violated independent entity revisions. | No implementation commit; blockers above describe the required design inputs. |

## Verification baseline

Run from the repository root:

```bash
.venv/bin/python -m pytest -q
PYTHONPATH=src .venv/bin/python scripts/ci/check-phase3-contracts.py
```

These commands establish only the contract-only local slice. They do not
accept any RFC, establish backend truth, or grant Athanor/Chronicle authority.
47 changes: 47 additions & 0 deletions docs/en/PHASE3_EXIT_AUDIT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Phase 3 exit audit

This document records the release-exit evidence required by the Phase 3
roadmap. It is an audit aid, not an RFC acceptance record and not a claim of
runtime or scientific authority.

| Exit requirement | Current evidence | Status |
| --- | --- | --- |
| Five accepted RFCs | RFC-0011 through RFC-0015 remain `draft`. | Blocked by explicit RFC acceptance. |
| Executable Schemas and examples | `scripts/ci/check-schemas.py` validates 214 published Schemas; Phase 3 fixtures are checked by the contract suite, including Promotion Journal revision algebra, abandonment-record closure, and adapter-generation consistency. | Present. |
| Threat-model review | [Independent local trust-boundary review](PHASE3_THREAT_MODEL_REVIEW.md) found no P1/P2 in the bounded implementation slice. It explicitly leaves external authority and RFC acceptance open. | Partial retained review evidence. |
| Conformance suite | `scripts/ci/check-phase3-contracts.py` validates the contract-only local slice. It deliberately does not establish full conformance. | Partial. |
| Local reference vertical slice | Local `benchwork-local-*/0.1` storage and execution primitives retain bounded operational evidence. RFC-0012 replay preserves multi-Attempt history, fresh retry-allocation identities, lease-fence monotonicity, Result acceptance local closure, and supplied-facts assurance-Claim closure. RFC-0013 replay projects exact supplied provenance-policy registrations and active-Store retention-policy registrations with locally closed PROJECT or already-projected Reference Set scope. Retry scheduling/readiness, initialization retention policies, BLOB/PROGRAM retention scopes, and complete Storage replay remain unavailable; all authority-bearing paths fail closed. | Partial. |
| Local runtime lifecycle demonstrations | `tests/test_execution.py` exercises lease-expired negative terminalization, cancellation, duplicate terminal delivery rejection, stale observation cursors, and restart recovery across queued and terminal Jobs. | Present for the bounded `benchwork-local-execution/0.1` runtime only. |

## Verified baseline

The current repeatable baseline is:

```bash
.venv/bin/python -m pytest -q
PYTHONPATH=src .venv/bin/python scripts/ci/check-phase3-contracts.py
```

It is evidence for contract integrity and the bounded local slice only. It
does not change the ownership rules in the RFCs: Athanor remains the only
canonical authority, and the Executor cannot promote a Worker result into a
scientific fact.

## Remaining implementation order

1. Install RFC-0012 retry scheduling and readiness with the missing supplied
Specification, terminal-event, deadline, and freshness facts; then
demonstrate a terminal Attempt through scheduling, readiness, new
allocation, and restart replay.
2. Install the required RFC-0013 Storage reducers and prove retained output,
quarantine, and recovery projections from a complete Storage prefix.
3. Extend the existing supplied-facts Result and assurance-Claim comparators
only to consume their remaining externally verified resolver results. A
`CLAIMED` outcome already cannot be established by an opaque Sigil alone in
the installed replay path.
4. Resolve the authority and State-evolution prerequisites in the
[Phase 3 blocker register](PHASE3_BLOCKER_REGISTER.md), then run the
expanded conformance suite and retain the required formal threat-model
review evidence beyond the bounded local review.
5. Request explicit acceptance for each RFC. This repository forbids sealing
an RFC without that confirmation.
36 changes: 36 additions & 0 deletions docs/en/PHASE3_RFC_ACCEPTANCE_PACKET.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Phase 3 RFC acceptance packet

This packet prepares a human acceptance review; it does not accept, seal, or
change the status of any RFC. Each RFC remains `draft` until the project owner
explicitly accepts it.

## Shared review boundary

The current baseline is 214 published Schemas, the contract-only Phase 3 gate,
and the bounded `benchwork-local-*/0.1` runtime. The reproducible commands
are in the [exit audit](PHASE3_EXIT_AUDIT.md#verified-baseline). Those checks
do not prove a complete RFC-0012 Journal replayer, a complete RFC-0013 Storage
backend, canonical Result acceptance, or scientific authority. The exact gaps
are maintained in the [blocker register](PHASE3_BLOCKER_REGISTER.md).

## Per-RFC acceptance checklist

| RFC | Evidence ready for review | Acceptance blocker |
| --- | --- | --- |
| RFC-0011 — Sanctum Execution Model | Published Schema family, bounded local runtime lifecycle tests, fail-closed MCP/runtime boundaries, and a [retained independent local trust-boundary review](PHASE3_THREAT_MODEL_REVIEW.md). | Formal RFC acceptance and the external authority evidence remain pending. |
| RFC-0012 — Job, Lease, and Worker Protocol | Execution State/Journal schemas; Job Outcome contracts; multi-Attempt, lease-fence, terminalization, assurance-Claim, cancellation, expiry, duplicate-delivery, and restart tests. | Retry scheduling/readiness still lacks externally verified Specification, deadline, freshness, and resolver facts; complete Storage/Result authority replay is also unavailable. |
| RFC-0013 — Artifact Storage Model | Storage schemas; initialization, activation, recovery, message rejection, failed legacy-protection, Reference Set, canonical-reference, provenance-policy registration, and active-Store retention-policy registration for locally closed PROJECT/Reference Set scopes. | Transfer lifecycle, quota revisions, full retention initialization details (including the unspecified migration-policy identity), BLOB/PROGRAM scopes, full backend replay, and authoritative Chronicle absence are incomplete. |
| RFC-0014 — Patch Promotion Protocol | Published Patch schemas and contract tests for journal, bundle, checkpoint, mutation intent, target guard, attempt, outcome, recovery record, revision algebra, abandonment disposition closure, and the retained [local trust-boundary review](PHASE3_THREAT_MODEL_REVIEW.md). | The four RFC Patch MCP routes and their authority-bearing implementation are not yet published; final cross-RFC replay/Storage evidence and reference Host-native adapter evidence are also required before the Phase 3 release gate can be asserted. |
| RFC-0015 — Experiment Executor API | Typed request/Outcome schemas; strict Result v2 local closure; supplied-facts acceptance comparator; Result/Observation contract tests. | Comparator intentionally does not grant canonical acceptance; it still requires externally verified Chronicle/Storage/Outcome facts. |

## Required human decision

For each RFC, the reviewer must make one explicit choice:

1. accept the exact draft and its documented boundaries;
2. request named changes; or
3. defer acceptance pending named evidence.

No blanket Phase 3 approval changes five `draft` RFCs into accepted documents.
Any acceptance record must identify the exact RFC, version, reviewed commit,
reviewer, time, and rationale.
58 changes: 58 additions & 0 deletions docs/en/PHASE3_THREAT_MODEL_REVIEW.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Phase 3 local threat-boundary review

## Status and scope

This is an independent local implementation review conducted against commit
`7ea893b`. It is retained Phase 3 evidence only. It is not an RFC acceptance
decision, an Athanor Receipt, or proof of any external Storage, Chronicle,
Ward, approval, or Worker authority.

The review examined the RFC-0011 and RFC-0013 trust boundaries in:

- `src/benchwork/execution.py`
- `src/benchwork/execution_contracts.py`
- `src/benchwork/artifact_storage_contracts.py`
- `src/benchwork/patch_promotion_contracts.py`
- MCP registration/runtime code, Phase 3 documents, and relevant tests

## Conclusion

No P1 or P2 finding was identified. The installed local slice does not treat
a self-Sigil, a caller-supplied fact, a Worker result, or a local comparator as
external authorization. Unresolved authority-bearing paths remain fail closed.

## Reviewed boundaries

| Boundary | Review conclusion |
| --- | --- |
| MCP tool surface | Only the fixed read, task, canon, and experiment modules are registered. The local `benchwork_start_job` helper is not published as an MCP tool. |
| Worker and local execution | `execution.py` is bounded operational code: it does not interpret arbitrary commands or append Chronicle records. Its trusted-local terminal hook does not make the resulting outcome acceptance-eligible. |
| Self-Sigil and supplied facts | Result v2 and supplied-facts helpers perform local deterministic closure only; they do not resolve Chronicle, Storage, Ward, approval, or acceptance authority. |
| Storage and Chronicle | Uninstalled Storage events fail closed. Canonical release requires an authoritative suffix-absence proof, while Storage replay/runtime authority functions reject in the contract-only slice. |
| Patch promotion | The contract validates wire and supplied facts only; its runtime-authority entry point rejects. |
| Status documents | The blocker register and acceptance packet consistently describe the local slice as non-authoritative and leave unresolved paths fail closed. |

## Reproduction evidence

The reviewer ran the following checks in `/Users/momo/benchwork-phase3-recovery`:

```bash
git status --short && git rev-parse --short HEAD
PYTHONPATH=src .venv/bin/python scripts/ci/check-phase3-contracts.py
```

The worktree was clean at `7ea893b`; the gate validated 214 published Schemas,
ran 182 tests, and reported Ruff clean for its checked source set.

## Residual assumptions

- `ExecutionService.record_terminal` is a trusted local-adapter hook. It is
not MCP-exposed and cannot make an outcome acceptance-eligible, but its
safety still depends on the host process boundary.
- A local contract gate cannot establish authoritative Chronicle suffixes,
Storage backend state, or Ward/Registry/approval facts. Those prerequisites
remain explicitly outside this review and must be supplied by their owning
authoritative systems.

These residual items keep the RFC acceptance gate open; they are not evidence
that the bounded local implementation crosses those boundaries.
Loading