Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
264 commits
Select commit Hold shift + click to select a range
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
4877ae4
ci: decouple repository release verification from PyPI
MikiyaRyougi Aug 13, 2026
103d069
ci: initialize release Pages tree from an empty repository
MikiyaRyougi Aug 13, 2026
6f9145e
release: prepare 0.3.0rc3 repository candidate
MikiyaRyougi Aug 13, 2026
03117b7
release: prepare 0.3.0rc3 repository candidate
MikiyaRyougi Aug 13, 2026
dbf99b3
feat(phase3): add local Sanctum framework
MikiyaRyougi Aug 16, 2026
4c91c31
fix(phase3): isolate local Sanctum contracts
MikiyaRyougi Aug 16, 2026
9fe5bfa
merge: integrate Phase 3 recovery candidate
MikiyaRyougi Aug 16, 2026
6d46481
merge: retain rc3 release history
MikiyaRyougi Aug 16, 2026
08907c6
merge: add isolated local Sanctum conformance aid
MikiyaRyougi Aug 16, 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
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
- Never edit `.benchwork/` state files directly.
- Use Benchwork MCP tools for canonical research changes.
- Use native Codex tools for repository inspection, patches, shell, Git, and review.
- Request network permission before using `gh` commands that access the GitHub API or other remote resources; local-only `git` inspection does not require it.
- Keep review local by default. Do not disclose a diff or source to an external reviewer without explicit approval for the exact Review Request.
- Run the smallest relevant tests after code changes.
- Run `/review` or an equivalent independent review before completing a core change.
Expand Down
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,12 @@ for repository and execution work, while the Benchwork plugin's MCP server
controls canonical research state. Alpha Grimoire installation remains local
and data-only; publisher signatures and remote distribution remain future work.

Phase 3 includes published execution contracts and an additional experimental
in-memory Job/Lease conformance aid. The aid does not execute processes or
containers, schedule remote or GPU work, provide production Artifact Storage,
or promote patches automatically. See the
[Phase 3 local framework](docs/en/architecture/PHASE3_LOCAL_FRAMEWORK.md).

## Integrity model

Benchwork fails closed when it detects an invalid schema, broken event chain,
Expand Down
1 change: 1 addition & 0 deletions docs/en/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ English is the canonical source for all Benchwork documentation.
- [Command Surface and Agent Handoff](architecture/COMMAND_SURFACE.md)
- [Open Grimoire](architecture/OPEN_GRIMOIRE.md)
- [Integrity Repair](architecture/INTEGRITY_REPAIR.md)
- [Phase 3 local framework](architecture/PHASE3_LOCAL_FRAMEWORK.md)

## Project

Expand Down
4 changes: 4 additions & 0 deletions docs/en/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,10 @@ Task Capsule
Remote Workers, cluster scheduling, automatic Provider invocation, and broad
GPU support are non-goals for `0.4`.

`LocalSanctumRuntime` is an additional in-memory conformance aid for a bounded
Job/Lease lifecycle. Its `sanctum-local-*/0.1` records do not replace the
RFC-0012 execution contracts or grant canonical scientific authority.

### Exit gate

All five RFCs, executable Schemas and examples, threat-model review,
Expand Down
41 changes: 41 additions & 0 deletions docs/en/architecture/PHASE3_LOCAL_FRAMEWORK.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
language: en
canonical: true
---

# Phase 3 local framework

Status: **experimental scaffold, not Phase 3 acceptance**.

`LocalSanctumRuntime` is an in-memory conformance aid that models a bounded
Job/Lease lifecycle without executing commands. It uses the independent
`sanctum-local-*/0.1` records, not the RFC-0012 `execution-*/1.0` contracts or
the production-facing local-execution contracts. It can issue a bounded
`sanctum-local-worker-result/0.1` Proposal, but it cannot create a scientific
Run, Artifact, Assessment, or Decision. Only a separately authorised Athanor
transition may do that.

## Implemented framework boundary

- Task Capsule and Circle Sigils are bound when a Job is submitted.
- A Job has a fenced, expiring Lease and a monotonic local lifecycle.
- Expired Leases fail closed; stale completion is rejected.
- Worker outputs are schema-bounded Proposals.
- `sanctum-local-patch-proposal/0.1` records a patch's base and validation
evidence; it does not apply or promote the patch.

## Explicitly deferred

The following are intentionally `DEFERRED`, not implied by this framework:

| Capability | Status |
| --- | --- |
| Process, container, filesystem, and network execution | `DEFERRED` |
| Remote Workers and transport | `DEFERRED` |
| Queueing, scheduling, quotas, and GPU allocation | `DEFERRED` |
| Persistent or production Artifact Storage | `DEFERRED` |
| Automatic patch application or promotion | `DEFERRED` |
| Automatic conversion of a Worker Result into science | `FORBIDDEN` |

These features require the corresponding Phase 3 RFC, threat model, and
conformance evidence before implementation.
20 changes: 20 additions & 0 deletions schemas/sanctum-local-job-0.1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://benchwork.dev/schemas/sanctum-local-job/0.1",
"title": "Sanctum Local Job",
"description": "Experimental in-memory conformance record; not the RFC-0012 execution-job/1.0 contract.",
"type": "object",
"additionalProperties": false,
"required": ["schema_version", "job_id", "task_capsule_sigil", "circle_sigil", "status", "attempt", "created_at"],
"properties": {
"schema_version": {"const": "sanctum-local-job/0.1"},
"job_id": {"type": "string", "pattern": "^JB-[A-Za-z0-9][A-Za-z0-9_-]*$"},
"task_capsule_sigil": {"$ref": "https://benchwork.dev/schemas/common-definitions/1.0#/$defs/sigil"},
"circle_sigil": {"$ref": "https://benchwork.dev/schemas/common-definitions/1.0#/$defs/sigil"},
"status": {"enum": ["PENDING", "CLAIMED", "RUNNING", "COMPLETED", "FAILED", "CANCELLED", "EXPIRED"]},
"attempt": {"type": "integer", "minimum": 0},
"created_at": {"type": "string", "format": "date-time"},
"worker_id": {"type": ["string", "null"]},
"lease_id": {"type": ["string", "null"]}
}
}
18 changes: 18 additions & 0 deletions schemas/sanctum-local-lease-0.1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://benchwork.dev/schemas/sanctum-local-lease/0.1",
"title": "Sanctum Local Lease",
"description": "Experimental in-memory conformance record; not the RFC-0012 execution-lease/1.0 contract.",
"type": "object",
"additionalProperties": false,
"required": ["schema_version", "lease_id", "job_id", "worker_id", "fencing_token", "status", "expires_at"],
"properties": {
"schema_version": {"const": "sanctum-local-lease/0.1"},
"lease_id": {"type": "string", "pattern": "^LS-[A-Za-z0-9][A-Za-z0-9_-]*$"},
"job_id": {"type": "string", "pattern": "^JB-[A-Za-z0-9][A-Za-z0-9_-]*$"},
"worker_id": {"type": "string", "pattern": "^WK-[A-Za-z0-9][A-Za-z0-9_-]*$"},
"fencing_token": {"type": "integer", "minimum": 1},
"status": {"enum": ["ACTIVE", "RELEASED", "EXPIRED"]},
"expires_at": {"type": "string", "format": "date-time"}
}
}
20 changes: 20 additions & 0 deletions schemas/sanctum-local-patch-proposal-0.1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://benchwork.dev/schemas/sanctum-local-patch-proposal/0.1",
"title": "Sanctum Local Patch Proposal",
"description": "An untrusted proposal from the experimental in-memory Sanctum conformance aid. Applying or promoting a patch requires separate explicit human authorization.",
"type": "object",
"additionalProperties": false,
"required": ["schema_version", "proposal_id", "job_id", "base_sigil", "patch_sigil", "summary", "changed_files", "validation", "created_at"],
"properties": {
"schema_version": {"const": "sanctum-local-patch-proposal/0.1"},
"proposal_id": {"type": "string", "pattern": "^PP-[A-Za-z0-9][A-Za-z0-9_-]*$"},
"job_id": {"type": "string", "pattern": "^JB-"},
"base_sigil": {"$ref": "https://benchwork.dev/schemas/common-definitions/1.0#/$defs/sigil"},
"patch_sigil": {"$ref": "https://benchwork.dev/schemas/common-definitions/1.0#/$defs/sigil"},
"summary": {"type": "string", "minLength": 1},
"changed_files": {"type": "array", "uniqueItems": true, "items": {"type": "string", "minLength": 1}},
"validation": {"type": "array", "items": {"type": "string", "minLength": 1}},
"created_at": {"type": "string", "format": "date-time"}
}
}
21 changes: 21 additions & 0 deletions schemas/sanctum-local-worker-result-0.1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://benchwork.dev/schemas/sanctum-local-worker-result/0.1",
"title": "Sanctum Local Worker Result Proposal",
"description": "An untrusted output from the experimental in-memory Sanctum conformance aid. Athanor acceptance is separate.",
"type": "object",
"additionalProperties": false,
"required": ["schema_version", "job_id", "attempt", "worker_id", "lease_id", "status", "summary", "outputs", "produced_at"],
"properties": {
"schema_version": {"const": "sanctum-local-worker-result/0.1"},
"job_id": {"type": "string", "pattern": "^JB-"},
"attempt": {"type": "integer", "minimum": 1},
"worker_id": {"type": "string", "pattern": "^WK-"},
"lease_id": {"type": "string", "pattern": "^LS-"},
"status": {"enum": ["COMPLETED", "FAILED", "CANCELLED"]},
"summary": {"type": "string", "minLength": 1},
"outputs": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["schema", "uri", "blob_sigil"], "properties": {"schema": {"type": "string", "minLength": 1}, "uri": {"type": "string", "minLength": 1}, "blob_sigil": {"$ref": "https://benchwork.dev/schemas/common-definitions/1.0#/$defs/sigil"}}}},
"produced_at": {"type": "string", "format": "date-time"}
},
"allOf": [{"if": {"properties": {"status": {"const": "COMPLETED"}}}, "then": {"properties": {"outputs": {"minItems": 1}}}}]
}
Loading