Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
603 commits
Select commit Hold shift + click to select a range
ad56ce5
fix(workforce-validation): align v2 edge with ordinary cutover
seonghobae Sep 18, 2026
5d25f30
test(workforce-validation): align v2 fixtures with ordinary cutover
seonghobae Sep 18, 2026
56e779f
fix(workforce-validation): preserve malformed-cutover rejection order
seonghobae Sep 18, 2026
e91d8a5
docs(workforce-validation): bind v2 edge to ordinary cutover
seonghobae Sep 18, 2026
c68c6c5
test(workforce-validation): revalidate v2 predecessor invariants
seonghobae Sep 18, 2026
ad366a1
fix(workforce-validation): revalidate v2 predecessor invariants
seonghobae Sep 18, 2026
675e533
test(workforce-validation): reject forged v2 owner evidence
seonghobae Sep 18, 2026
aa1ec50
fix(workforce-validation): canonicalize v2 owner evidence
seonghobae Sep 18, 2026
8bd5d91
test(workforce-validation): cover v2 successor view nondisclosure
seonghobae Sep 18, 2026
7308882
test(packaging): expose dist-info identity false green
seonghobae Sep 18, 2026
a1c61dc
test(packaging): bind dist-info root to built wheel identity
seonghobae Sep 18, 2026
ee090a3
test(packaging): verify dist-info identity before artifact hashing
seonghobae Sep 18, 2026
b687e61
fix(packaging): enforce dist-info identity in hash-lock helper
seonghobae Sep 18, 2026
b6bc9c2
test(packaging): exercise canonical dist-info lock path
seonghobae Sep 18, 2026
d662825
test(packaging): prove dist-info rejection precedes outer hash
seonghobae Sep 18, 2026
607c043
test(workforce-validation): require exact failed-artifact v2 lookup
seonghobae Sep 18, 2026
27be4e1
fix(workforce-validation): bind v2 lookup to failed artifact
seonghobae Sep 18, 2026
7986ee3
test(workforce-validation): exercise exact failed-artifact v2 lookup
seonghobae Sep 18, 2026
96b0b82
test(workforce-validation): align v2 predecessor integrity lookup
seonghobae Sep 18, 2026
059b4de
docs(workforce-validation): document exact failed-artifact v2 lookup
seonghobae Sep 18, 2026
3e6143a
test(workforce-validation): require exact failed-artifact lookup
seonghobae Sep 18, 2026
d97a720
fix(workforce-validation): exact-key failed non-reproducible evidence
seonghobae Sep 18, 2026
7850102
test(workforce-validation): exercise exact failed-artifact lookup
seonghobae Sep 18, 2026
7cf9d0d
test(workforce-validation): align nonverifiability owner read key
seonghobae Sep 18, 2026
8aea333
docs(workforce-validation): document exact nonreproducible lookup
seonghobae Sep 18, 2026
8dc9f79
test(workforce-validation): reject forged nonverifiability tuples
seonghobae Sep 18, 2026
259eb33
fix(workforce-validation): canonicalize nonverifiability owner records
seonghobae Sep 18, 2026
629ed56
test(workforce-validation): reject forged base-weight tuples
seonghobae Sep 18, 2026
f762681
fix(workforce-validation): canonicalize base-weight owner records
seonghobae Sep 18, 2026
0846004
test(workforce-validation): expose result owner tuple forgery
seonghobae Sep 18, 2026
035e517
fix(workforce-validation): canonicalize result owner reads
seonghobae Sep 18, 2026
0fc171d
test(workforce-validation): expose result supersession tuple forgery
seonghobae Sep 18, 2026
0ec2994
fix(workforce-validation): canonicalize result supersession reads
seonghobae Sep 18, 2026
738659c
test(workforce-validation): expose benchmark owner tuple forgery
seonghobae Sep 18, 2026
025a14b
fix(workforce-validation): canonicalize benchmark owner reads
seonghobae Sep 18, 2026
90a0adb
test(workforce-validation): expose base-weight supersession tuple for…
seonghobae Sep 18, 2026
776ef4f
fix(workforce-validation): canonicalize base-weight supersession reads
seonghobae Sep 18, 2026
8c14a7b
test(workforce-validation): expose calibration supersession tuple for…
seonghobae Sep 18, 2026
1288226
fix(workforce-validation): canonicalize calibration supersession reads
seonghobae Sep 18, 2026
1b73d0e
test(workforce-validation): expose calibration support tuple forgery
seonghobae Sep 18, 2026
fb4da9f
fix(workforce-validation): reject forged calibration support tuples
seonghobae Sep 18, 2026
ae320b4
test(workforce-validation): expose weight variance tuple forgery
seonghobae Sep 18, 2026
8339267
fix(workforce-validation): reject forged weight variance tuples
seonghobae Sep 18, 2026
acce2f6
test(workforce-validation): prove weight eligibility owner shape RED
seonghobae Sep 18, 2026
5af60ae
fix(workforce-validation): canonicalize weight eligibility owner evid…
seonghobae Sep 18, 2026
ab08349
test(workforce-validation): prove eligibility supersession shape RED
seonghobae Sep 18, 2026
584d2fb
fix(workforce-validation): canonicalize eligibility supersession evid…
seonghobae Sep 18, 2026
12268af
test(workforce-validation): RED v1 nonverifiability supersession shape
seonghobae Sep 18, 2026
23921d8
fix(workforce-validation): canonicalize v1 nonverifiability supersess…
seonghobae Sep 19, 2026
32136fc
test(workforce-validation): reproduce calibration authority shape for…
seonghobae Sep 19, 2026
e5480ec
fix(workforce-validation): reject forged calibration authority records
seonghobae Sep 19, 2026
c34b2ee
test(workforce-validation): expose calibration auxiliary structural f…
seonghobae Sep 19, 2026
f9d1cf3
fix(workforce-validation): canonicalize calibration auxiliary owner e…
seonghobae Sep 19, 2026
c07c46f
test(workforce-validation): expose final-weight structural forgery
seonghobae Sep 19, 2026
e963515
fix(workforce-validation): canonicalize final-weight owner evidence
seonghobae Sep 19, 2026
057f19e
test(workforce-validation): expose final-weight supersession tuple fo…
seonghobae Sep 19, 2026
fe437d8
fix(workforce-validation): reject non-canonical final-weight superses…
seonghobae Sep 19, 2026
aa5fbc2
test(workforce-validation): expose nonresponse owner shape forgery
seonghobae Sep 19, 2026
550f29e
fix(workforce-validation): canonicalize nonresponse owner evidence
seonghobae Sep 19, 2026
e4b946e
test(workforce-validation): expose nonresponse supersession shape for…
seonghobae Sep 19, 2026
5c04331
fix(workforce-validation): canonicalize nonresponse supersession evid…
seonghobae Sep 19, 2026
0f42141
test(workforce-validation): expose registry record shape forgery
seonghobae Sep 19, 2026
34b2cc2
fix(workforce-validation): canonicalize persisted registry records
seonghobae Sep 19, 2026
b6639f1
test(workforce-validation): expose trimming owner shape forgery
seonghobae Sep 19, 2026
7c76e7b
fix(workforce-validation): canonicalize trimming owner evidence
seonghobae Sep 19, 2026
fb44ad4
test(workforce-validation): expose trimming supersession shape forgery
seonghobae Sep 19, 2026
84f2ee2
fix(workforce-validation): canonicalize trimming supersession evidence
seonghobae Sep 19, 2026
67e33aa
test(workforce-validation): expose variance owner shape forgery
seonghobae Sep 19, 2026
203da7a
fix(workforce-validation): canonicalize variance owner evidence
seonghobae Sep 19, 2026
afb7422
test(workforce-validation): require exact final-weight component rece…
seonghobae Sep 19, 2026
77f89d2
feat(workforce-validation): add deterministic final-weight component …
seonghobae Sep 19, 2026
540f581
feat(workforce-validation): export final-weight component binding aut…
seonghobae Sep 19, 2026
af509f3
docs(workforce-validation): document exact final-weight component rec…
seonghobae Sep 19, 2026
7ba1b11
test(workforce-validation): cover component-binding fail-closed edges
seonghobae Sep 19, 2026
b83372b
test(workforce-validation): expose unresolved component receipt re-re…
seonghobae Sep 19, 2026
a6377d7
feat(workforce-validation): resolve exact final-weight component evid…
seonghobae Sep 19, 2026
13030a9
test(workforce-validation): require component evidence public surface
seonghobae Sep 19, 2026
af292bd
feat(workforce-validation): export component evidence resolution
seonghobae Sep 19, 2026
f6bbe7f
test(workforce-validation): reject binding released before final auth…
seonghobae Sep 19, 2026
095bae6
fix(workforce-validation): enforce final-before-binding chronology
seonghobae Sep 19, 2026
65e711d
test(workforce-validation): require component evidence scope provenance
seonghobae Sep 19, 2026
313b4b9
fix(workforce-validation): bind component evidence to owner scope
seonghobae Sep 19, 2026
f6c0600
test(workforce-validation): cover component owner scope mismatch
seonghobae Sep 19, 2026
de1751a
test(workforce-validation): reject truncated component scope provenance
seonghobae Sep 19, 2026
1c703e3
test(workforce-validation): reject components superseded before gover…
seonghobae Sep 19, 2026
4e41e8f
fix(workforce-validation): require component authority current at use
seonghobae Sep 19, 2026
4d92691
test(workforce-validation): RED block forged component resolution iss…
seonghobae Sep 19, 2026
29e2f11
fix(workforce-validation): seal corroborated component resolution iss…
seonghobae Sep 19, 2026
21588e6
test(workforce-validation): require auth before component owner reads
seonghobae Sep 19, 2026
bfc67d9
fix(workforce-validation): authorize component owner reads
seonghobae Sep 19, 2026
9ff8d6d
test(workforce-validation): authorize component corroboration fixtures
seonghobae Sep 19, 2026
41c93ba
test(workforce-validation): preserve auth in component currentness cases
seonghobae Sep 19, 2026
e13de7c
test(workforce-validation): cover component auth type gates
seonghobae Sep 19, 2026
03f9d44
test(workforce-validation): bind component auth audit target to final…
seonghobae Sep 19, 2026
a4653fa
fix(workforce-validation): audit exact final receipt on component auth
seonghobae Sep 19, 2026
ceb7f4b
test(workforce-validation): expose low-level resolution issuance bypass
seonghobae Sep 19, 2026
5a67b2c
fix(workforce-validation): seal component resolution issuance
seonghobae Sep 19, 2026
e389099
test(workforce-validation): cover unsealed resolution allocation
seonghobae Sep 19, 2026
ab7a968
test(workforce-validation): prove issued resolution immutability
seonghobae Sep 19, 2026
4608568
test(workforce-validation): RED minimize component authorization fields
seonghobae Sep 19, 2026
8f27107
fix(workforce-validation): minimize component authorization fields
seonghobae Sep 19, 2026
8be428d
test(workforce-validation): RED minimize unused component capability
seonghobae Sep 19, 2026
9b19ae4
test(workforce-validation): preserve composite component port contract
seonghobae Sep 19, 2026
b414549
test(workforce-validation): require authorization for component scope…
seonghobae Sep 19, 2026
4ec16e6
fix(workforce-validation): authorize native component scope fields
seonghobae Sep 19, 2026
2e00a60
test(workforce-validation): require owner provenance before component…
seonghobae Sep 19, 2026
b54da40
test(workforce-validation): align component policy fixture with scope…
seonghobae Sep 19, 2026
9ce3b31
test(workforce-validation): authorize scope fields in component fixtures
seonghobae Sep 19, 2026
b07f991
test(workforce-validation): provide owner provenance fixtures for cor…
seonghobae Sep 19, 2026
b7b0adc
test(workforce-validation): bind base-only fixtures to owner provenance
seonghobae Sep 19, 2026
9917d54
fix(workforce-validation): re-resolve final weight and binding before…
seonghobae Sep 19, 2026
7947cb4
test(workforce-validation): authorize owner provenance before re-reso…
seonghobae Sep 19, 2026
bdc07fc
fix(workforce-validation): authorize owner provenance fields before r…
seonghobae Sep 19, 2026
43531a6
test(workforce-validation): permit exact owner provenance fields in c…
seonghobae Sep 19, 2026
9a62154
test(workforce-validation): align authorization fixtures with owner p…
seonghobae Sep 19, 2026
7bcf32e
test(workforce-validation): restore exact acceptance fixtures
seonghobae Sep 19, 2026
5512750
test(workforce-validation): cover sealed issuance edge branches
seonghobae Sep 19, 2026
9ac1a18
test(workforce-validation): restore exact coverage gate
seonghobae Sep 19, 2026
30100d8
test(workforce-validation): expose registry view tuple-constructor by…
seonghobae Sep 19, 2026
11af877
fix(workforce-validation): seal registry view property access
seonghobae Sep 19, 2026
fcfdf22
test(workforce-validation): cover forged registry view marker shape
seonghobae Sep 19, 2026
dcd437a
test(workforce-validation): require registry view seal after raw allo…
seonghobae Sep 19, 2026
b5f76a1
fix(workforce-validation): make registry view non-tuple sealed data
seonghobae Sep 19, 2026
086ef71
fix(workforce-validation): restore registry not-found base type
seonghobae Sep 19, 2026
bb98e90
fix(workforce-validation): seal auxiliary authority view
seonghobae Sep 19, 2026
403296d
docs(workforce-validation): record sealed-view repair
seonghobae Sep 19, 2026
c0d94a0
test(workforce-validation): expose base-weight view issuance bypass
seonghobae Sep 19, 2026
6b1591d
fix(workforce-validation): seal base-weight authority views
seonghobae Sep 19, 2026
d78d9a9
test(workforce-validation): expose base-weight supersession view bypass
seonghobae Sep 19, 2026
06b9849
fix(workforce-validation): seal base-weight supersession views
seonghobae Sep 19, 2026
213bbfd
docs(workforce-validation): record supersession view repair evidence
seonghobae Sep 19, 2026
38c2611
test(workforce-validation): prove calibration benchmark view issuance…
seonghobae Sep 19, 2026
fbb3b74
fix(workforce-validation): seal calibration benchmark authority view
seonghobae Sep 19, 2026
3cff6e5
docs(workforce-validation): record calibration benchmark view hardening
seonghobae Sep 19, 2026
fc2ae49
build(provenance): reseal changelog manifest after benchmark hardening
seonghobae Sep 19, 2026
634958a
test(workforce-validation): expose calibration adjustment view bypass
seonghobae Sep 19, 2026
d7983d1
fix(workforce-validation): seal calibration adjustment views
seonghobae Sep 19, 2026
70c8257
docs(workforce-validation): record calibration adjustment repair evid…
seonghobae Sep 19, 2026
e778823
test(workforce-validation): expose weight eligibility view bypass
seonghobae Sep 19, 2026
f35f1dc
fix(workforce-validation): seal weight eligibility views
seonghobae Sep 19, 2026
eeba73d
docs(workforce-validation): record weight eligibility repair evidence
seonghobae Sep 19, 2026
9a3294f
test(workforce-validation): expose trimming bounding view bypass
seonghobae Sep 19, 2026
9d3e08b
fix(workforce-validation): seal trimming bounding views
seonghobae Sep 19, 2026
cc4b6b2
docs(workforce-validation): record trimming bounding repair evidence
seonghobae Sep 19, 2026
5bd0404
test(workforce-validation): RED calibration adjustment supersession v…
seonghobae Sep 19, 2026
e50fb96
fix(workforce-validation): seal calibration adjustment supersession v…
seonghobae Sep 19, 2026
613d7eb
test(workforce-validation): RED final weight supersession view issuance
seonghobae Sep 19, 2026
6bc1048
fix(workforce-validation): seal final weight supersession view issuance
seonghobae Sep 19, 2026
6b3ceda
test(workforce-validation): RED weight eligibility supersession view …
seonghobae Sep 19, 2026
04387a6
fix(workforce-validation): seal weight eligibility supersession view …
seonghobae Sep 19, 2026
f7fbff7
test(workforce-validation): RED trimming bounding supersession view i…
seonghobae Sep 19, 2026
3c8cd1b
fix(workforce-validation): seal trimming bounding supersession view i…
seonghobae Sep 19, 2026
f8b0512
docs(workforce-validation): seal supersession view repair evidence
seonghobae Sep 19, 2026
81c2238
test(workforce-validation): RED weight variance supersession view iss…
seonghobae Sep 19, 2026
3d659cc
fix(workforce-validation): seal weight variance supersession view iss…
seonghobae Sep 19, 2026
d1c333d
test(workforce-validation): RED calibration support view issuance
seonghobae Sep 19, 2026
b8d3b0f
fix(workforce-validation): seal calibration support view issuance
seonghobae Sep 19, 2026
01f3aaa
docs(workforce-validation): seal remaining view repair evidence
seonghobae Sep 19, 2026
01cca62
test(workforce-validation): RED final analysis weight view issuance
seonghobae Sep 19, 2026
acb2654
fix(workforce-validation): seal final analysis weight view issuance
seonghobae Sep 19, 2026
74a9f63
docs(workforce-validation): seal final analysis weight evidence
seonghobae Sep 19, 2026
6c00045
test(workforce-validation): RED final weight component binding view i…
seonghobae Sep 19, 2026
3a1eb68
fix(workforce-validation): seal final weight component binding view
seonghobae Sep 19, 2026
9e555ee
docs(workforce-validation): seal component binding evidence
seonghobae Sep 19, 2026
d26a9ff
test(workforce-validation): expose nonresponse view issuance bypass
seonghobae Sep 19, 2026
25cd572
fix(workforce-validation): seal nonresponse authority views
seonghobae Sep 19, 2026
1ed785d
test(workforce-validation): expose nonresponse supersession view bypass
seonghobae Sep 19, 2026
563518a
fix(workforce-validation): seal nonresponse supersession views
seonghobae Sep 19, 2026
cce459b
test(workforce-validation): expose validation result view bypass
seonghobae Sep 19, 2026
43b46fd
fix(workforce-validation): seal validation result authority views
seonghobae Sep 19, 2026
e6dd59f
test(workforce-validation): expose non-verifiability view bypass
seonghobae Sep 19, 2026
bc508bb
fix(workforce-validation): seal non-verifiability views
seonghobae Sep 19, 2026
98a0afa
test(workforce-validation): expose non-verifiability supersession vie…
seonghobae Sep 19, 2026
8cffb9b
fix(workforce-validation): seal non-verifiability supersession views
seonghobae Sep 19, 2026
b96d2e8
test(workforce-validation): expose v2 non-verifiability view bypass
seonghobae Sep 19, 2026
b058e6c
fix(workforce-validation): seal v2 non-verifiability supersession views
seonghobae Sep 19, 2026
405c86a
test(workforce-validation): expose validation result supersession vie…
seonghobae Sep 19, 2026
10875a4
fix(workforce-validation): seal validation result supersession views
seonghobae Sep 19, 2026
89483e9
test(workforce-validation): expose weight variance view bypass
seonghobae Sep 19, 2026
0c6de75
fix(workforce-validation): seal weight variance authority views
seonghobae Sep 19, 2026
18ff213
test(workforce-validation): bind authorized view export census
seonghobae Sep 19, 2026
728f8c9
fix(workforce-validation): seal calibration benchmark view
seonghobae Sep 19, 2026
5dba663
test(workforce-validation): complete authorized view census evidence
seonghobae Sep 19, 2026
721f847
test(workforce-validation): expose module-level view sealing capability
seonghobae Sep 19, 2026
d5d847e
fix(workforce-validation): hide registry view sealing capability
seonghobae Sep 19, 2026
a27f50d
test(workforce-validation): expose component-resolution seal capability
seonghobae Sep 19, 2026
dbc2f01
fix(workforce-validation): hide component proof sealing capability
seonghobae Sep 19, 2026
e190f68
fix(workforce-validation): hide base-weight view seal
seonghobae Sep 19, 2026
90e99e2
fix(workforce-validation): hide base-weight supersession seal
seonghobae Sep 19, 2026
f4606c9
test(workforce-validation): prove calibration supersession seal leak
seonghobae Sep 19, 2026
5779384
fix(workforce-validation): hide calibration supersession seal
seonghobae Sep 19, 2026
025c5ac
test(workforce-validation): prove nonresponse supersession seal leak
seonghobae Sep 19, 2026
7fae1d0
fix(workforce-validation): hide nonresponse supersession seal
seonghobae Sep 19, 2026
77ed659
fix(workforce-validation): hide calibration adjustment seal
seonghobae Sep 19, 2026
ba878fe
fix(workforce-validation): hide calibration auxiliary seal
seonghobae Sep 19, 2026
4276ae9
fix(workforce-validation): hide calibration benchmark seal
seonghobae Sep 19, 2026
4ae6a94
fix(workforce-validation): hide calibration support seal
seonghobae Sep 19, 2026
264e416
test(workforce-validation): expose final-weight supersession seal for…
seonghobae Sep 19, 2026
c320c62
fix(workforce-validation): hide final-weight supersession seal
seonghobae Sep 19, 2026
f44a114
test(workforce-validation): expose final-weight view seal forgery
seonghobae Sep 19, 2026
d61deb6
fix(workforce-validation): hide final-weight authority seal
seonghobae Sep 19, 2026
1cffaea
test(workforce-validation): expose component-binding seal forgery
seonghobae Sep 19, 2026
77012bb
fix(workforce-validation): hide component-binding seal
seonghobae Sep 19, 2026
8ef4eb4
docs(workforce-validation): record private view seals
seonghobae Sep 19, 2026
18fa575
test(workforce-validation): expose nonresponse view seal forgery
seonghobae Sep 19, 2026
bfb7620
fix(workforce-validation): hide nonresponse view seal capability
seonghobae Sep 19, 2026
35b8420
test(workforce-validation): expose result view seal forgery
seonghobae Sep 19, 2026
99ef4c0
fix(workforce-validation): hide validation-result view seal
seonghobae Sep 19, 2026
a417e7c
test(workforce-validation): expose non-verifiability seal forgery
seonghobae Sep 19, 2026
484bfe6
fix(workforce-validation): hide non-verifiability view seal
seonghobae Sep 19, 2026
906361b
docs(workforce-validation): reseal authorized-view provenance
seonghobae Sep 19, 2026
d5ae65e
test(workforce-validation): expose trimming view seal forgery
seonghobae Sep 19, 2026
4fb5770
fix(workforce-validation): hide trimming view seal
seonghobae Sep 19, 2026
fccb76e
docs(workforce-validation): reseal trimming-view provenance
seonghobae Sep 19, 2026
5d84a12
test(workforce-validation): expose trimming supersession seal forgery
seonghobae Sep 19, 2026
ec65072
fix(workforce-validation): privatize trimming supersession view seal
seonghobae Sep 19, 2026
47601be
test(workforce-validation): expose result supersession seal forgery
seonghobae Sep 19, 2026
83d2623
fix(workforce-validation): privatize result supersession view seal
seonghobae Sep 19, 2026
2b282cf
test(workforce-validation): expose nonverifiability supersession seal…
seonghobae Sep 19, 2026
64477a5
fix(workforce-validation): privatize nonverifiability supersession seal
seonghobae Sep 19, 2026
73b027c
test(workforce-validation): expose v2 nonverifiability supersession s…
seonghobae Sep 19, 2026
3355c35
fix(workforce-validation): privatize v2 nonverifiability supersession…
seonghobae Sep 19, 2026
d2bcec7
test(workforce-validation): expose weight eligibility seal forgery
seonghobae Sep 19, 2026
c3d361a
fix(workforce-validation): privatize weight eligibility view seal
seonghobae Sep 19, 2026
2b39434
test(workforce-validation): expose eligibility supersession seal forgery
seonghobae Sep 19, 2026
f7b5d3e
fix(workforce-validation): privatize eligibility supersession seal
seonghobae Sep 19, 2026
f569830
test(workforce-validation): expose weight variance seal forgery
seonghobae Sep 19, 2026
af6bada
fix(workforce-validation): privatize weight variance view seal
seonghobae Sep 19, 2026
bb46047
test(workforce-validation): expose variance supersession seal forgery
seonghobae Sep 19, 2026
1cf907c
fix(workforce-validation): privatize variance supersession seal
seonghobae Sep 19, 2026
76d1300
docs(workforce-validation): currentize view sealing and exact-head ev…
seonghobae Sep 19, 2026
89b1334
fix(provenance): reseal changelog after workforce validation currenti…
seonghobae Sep 19, 2026
d7aa67c
test(workforce-validation): reject unresolvable generic weight adjust…
seonghobae Sep 19, 2026
17b80f9
fix(workforce-validation): reject unresolvable generic weight adjustm…
seonghobae Sep 19, 2026
9625f95
test(workforce-validation): align generic adjustment contract with go…
seonghobae Sep 19, 2026
e4945f0
docs: record governed final-weight adjustment admission
seonghobae Sep 19, 2026
57214b4
fix(provenance): reseal changelog for final-weight admission
seonghobae Sep 19, 2026
8f04f48
test(workforce-validation): reject skipped component binding sequences
seonghobae Sep 20, 2026
d83d0eb
fix(workforce-validation): require contiguous component bindings
seonghobae Sep 20, 2026
5459460
test(workforce-validation): align binding sequence contract
seonghobae Sep 20, 2026
a5d24fc
docs(workforce-validation): record contiguous binding invariant
seonghobae Sep 20, 2026
36fd262
fix(provenance): reseal contiguous binding changelog
seonghobae Sep 20, 2026
731b5e9
fix(workforce-validation): align governed adjustment corroboration
seonghobae Sep 20, 2026
03bf504
docs(workforce-validation): align final-weight binding invariants
seonghobae Sep 20, 2026
01c3da4
docs(workforce-validation): neutralize lifecycle overclaim
seonghobae Sep 20, 2026
202d9d8
test(workforce-validation): keep wheel builds off checkout
seonghobae Sep 20, 2026
a9d3f11
test(workforce-validation): reject checkout-mutating wheel builds
seonghobae Oct 1, 2026
a00a896
test(workforce-validation): isolate RECORD wheel builds
seonghobae Oct 1, 2026
42ef22e
test(workforce-validation): fail wheel builds on deprecations
seonghobae Oct 1, 2026
630e2c0
fix(workforce-validation): make wheel acceptance warnings-fatal
seonghobae Oct 1, 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
3 changes: 2 additions & 1 deletion .github/requirements/foundation-test.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Reviewed Foundation CI test toolchain for CPython 3.14 on GitHub-hosted Ubuntu x86_64.
# Reviewed Foundation CI test/build toolchain for CPython 3.14 on GitHub-hosted Ubuntu x86_64.
# Version and artifact hash changes must be reverified against the official PyPI release JSON.
coverage==7.14.2 --hash=sha256:cda36d8e7bfd63b3e44e75163265429caa5d935b672b00f71bccc8c010518c64
iniconfig==2.3.0 --hash=sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12
Expand All @@ -7,3 +7,4 @@ pluggy==1.6.0 --hash=sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d83
Pygments==2.20.0 --hash=sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176
pytest==9.1.1 --hash=sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c
pytest-cov==7.1.0 --hash=sha256:a0461110b7865f9a271aa1b51e516c9a95de9d696734a2f71e3e78f46e1d4678
setuptools==82.0.1 --hash=sha256:a59e362652f08dcd477c78bb6e7bd9d80a7995bc73ce773050228a348ce2e5bb
2 changes: 2 additions & 0 deletions .github/workflows/foundation-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ jobs:
PYTHONPATH=packages/selection-review/src COVERAGE_FILE=/tmp/orgmetra-selection-review.coverage python -m pytest -c packages/selection-review/pyproject.toml packages/selection-review/tests
PYTHONPATH=services/job-analysis-api/src:packages/hris-kernel/src:packages/keyverse-adapter/src COVERAGE_FILE=/tmp/orgmetra-job-analysis-api.coverage python -m pytest -c services/job-analysis-api/pyproject.toml services/job-analysis-api/tests
PYTHONPATH=services/people-api/src:packages/hris-kernel/src:packages/keyverse-adapter/src COVERAGE_FILE=/tmp/orgmetra-people-api.coverage python -m pytest -c services/people-api/pyproject.toml services/people-api/tests
PYTHONPATH=services/workforce-validation-api/src:packages/keyverse-adapter/src COVERAGE_FILE=/tmp/orgmetra-workforce-validation-api.coverage python -m pytest -c services/workforce-validation-api/pyproject.toml services/workforce-validation-api/tests
- name: Run PostgreSQL contracts in isolated containers
env:
PGPASSWORD: orgmetra
Expand All @@ -83,6 +84,7 @@ jobs:
test_audit_outbox_hardening_postgres.sh
test_candidate_worker_conversion_postgres.sh
test_validity_study_case_postgres.sh
test_workforce_validation_owner_schema_postgres.sh
test_criterion_observation_scope_postgres.sh
test_people_mutation_idempotency_postgres.sh
test_job_analysis_snapshot_postgres.sh
Expand Down
12 changes: 9 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ All notable changes to Orgmetra will be documented in this file.
### Added

- Accepted ADRs 0001–0003 now include buyer-facing Context, Decision, and Consequences grounded in verified ISO 30400:2022, ISO 30414:2025, Uniform Guidelines (29 C.F.R. Part 1607), SIOP (2018), OpenAPI Specification v3.2.0, OpenID Connect Core 1.0 errata set 2, CloudEvents v1.0.2, Jensen and Snodgrass (1999), Snodgrass (1999), and Allen (1983) records already listed in `docs/doctoring/REFERENCES.md`. ADRs 0004 and 0005 gained APA 7th References pointers to that same bibliography without changing their Decision bodies.
- Active-PR governed Job Analysis persistence/API on the canonical `JobAnalysisSnapshot` model: migration `0013_job_analysis_snapshot.sql` stores immutable tenant-scoped snapshot, Task, KSAO, Task–KSAO, FJA and write-command evidence; `POST /v1/tenants/{tenant_record_id}/job-analysis-snapshots` and matching GET enforce purpose-bound Keyverse scope, authenticated-principal actor authority, bounded/strict JSON handling, transactional Idempotency-Key serialization, parent-scope fail-closed integrity, forced RLS, and atomic audit/outbox evidence. ADR 0014 records the persistence decision while ADR 0007 remains the domain/evidence authority; validated evidence still requires accountable human review and non-LLM provenance, and the service does not make a high-impact employment decision.
- Active-PR governed Job Analysis persistence/API on the canonical `JobAnalysisSnapshot` model: migration `0013_job_analysis_snapshot.sql` stores immutable tenant-scoped snapshot, Task, KSAO, FJA and write-command evidence; `POST /v1/tenants/{tenant_record_id}/job-analysis-snapshots` and matching GET enforce purpose-bound Keyverse scope, authenticated-principal actor authority, bounded/strict JSON handling, transactional Idempotency-Key serialization, parent-scope fail-closed integrity, forced RLS, and atomic audit/outbox evidence. ADR 0014 records the persistence decision while ADR 0007 remains the domain/evidence authority; validated evidence still requires accountable human review and non-LLM provenance, and the service does not make a high-impact employment decision.
- Active-PR `orgmetra_selection_review` packet for PII-minimized, evidence-bound human selection review: canonical operational tenant identity, UUID-backed opaque candidate/Job/sealed-evidence/reviewer references, explicit purpose/reason/evidence version, deterministic canonical JSON and SHA-256 correlation, mandatory human decision state, redacted packet repr, and provenance-paired model evidence that remains `untrusted_draft`, with exact 100% owned statement and branch coverage required by its quality gate.
- Active performance-criterion scope hardening: `criterion_observation_scope_guard` rejects criterion outcomes for a Job the worker did not effectively hold at the observation date, observations before the relevant assignment, and observations outside the referenced performance cycle while preserving valid multiple-assignment cases and existing bitemporal correction semantics. The guard evaluates current-recorded facts, derives the date coordinate from `observed_at` in UTC so session `TimeZone` cannot alter the result, uses a trusted function search path, and adds no PII or automated employment decision authority. The Foundation PostgreSQL contract also rejects a closed `recorded_to` on each time-coordinate lookup and proves UTC midnight plus non-UTC session `TimeZone` boundaries.
- Bitemporal tenant-scoped organization hierarchy validation that rejects visible indirect parent cycles and reuses single-valued recorded-time reconstruction before graph traversal.
Expand All @@ -18,7 +18,7 @@ All notable changes to Orgmetra will be documented in this file.
- `employment_record_version.employment_concurrency_code` constrained to `exclusive` or `concurrent`.
- ADR 0005 for exclusive employment and staffable seats.
- `orgmetra_hris_kernel` 0.3.0 with identity-scoped bitemporal resolution, assignment-employment coverage, allocation-portfolio checks, and a Memorial Hospital RN correction case at 100% statement and branch coverage.
- `employment_record_version` and `position_record_version` so employment and position identity stay stable across retroactive corrections.
- `employment_record_version` and `position_record_version` so corrections no longer mint a new employment or position identifier.
- `assignment_record.employment_record_id` bound to the same person as the covering employment.
- `orgmetra_keyverse_adapter` that binds an opaque Keyverse subject to a person and rejects passwords, passkeys, and tokens.
- Design tokens for the repeating HR actions: approve, review, correct, request evidence, compare, export, and escalate.
Expand All @@ -37,6 +37,9 @@ All notable changes to Orgmetra will be documented in this file.

### Changed

- Active-PR Workforce Validation wheel acceptance now builds both owned distributions from temporary source copies, proving RECORD integrity without mutating the checkout. Offline wheel subprocesses also treat Python warnings as errors, and the service publishes its Apache-2.0 license through the current SPDX string form instead of deprecated setuptools table metadata.
- Active-PR Workforce Validation coverage recovery now exercises exact owner-capability admission, immutable release-view identities, version and chronology rejection, digest independence, approximation semantics, final-weight component corroboration, and base/nonresponse/trimming supersession edge contracts. An earlier exact head passed 1,306 tests with 4,487/4,487 owned statements and 1,070/1,070 owned branches covered; subsequent authorized-view sealing repairs add new production and hostile-regression branches, so that verdict does not transfer and final exact-head functional, statement, branch, docstring, and edge evidence must be reacquired before integration.
- Active-PR Workforce Validation acceptance fixtures now track released owner contracts, supersession cutovers, owner-read field sets, and standard-library timezone-provider failures exactly; wheel acceptance validates every owned wheel's internal identity and metadata before producing any outer artifact hash.
- Consolidated repository-owned PR validation from twelve workflows into one Foundation CI job, while keeping the dual-cluster recovery rehearsal separately path-scoped. Central required review and security workflows remain organization-owned.
- New predictive-validity membership must use one normalized worker-level case; the three independent validity-study decision/evidence/outcome link relations are historical read surfaces only and can no longer accept new rows. A case insert also rejects a criterion observation whose recorded interval is already closed at `linked_at`.
- Canonicalized service identifiers as two-or-more-word `snake_case` across architecture, deployment, ACL, metrics, and client contracts.
Expand All @@ -57,6 +60,9 @@ All notable changes to Orgmetra will be documented in this file.

### Security

- Active-PR Workforce Validation final-weight adjustment admission now fails closed for any material adjustment code without a released governed owner-evidence family. Evidence digests are integrity coordinates, not owner-record locators; adding a future adjustment family requires a versioned receipt namespace, exact reference/version/digest identity, purpose-bound deterministic owner resolution, canonical reconstruction, and binding/corroboration of transform semantics plus release/currentness before it can enter a released final-weight lineage. The component-binding owner now also requires every governed adjustment receipt binding to be contiguous and one-based, so an intrinsically incomplete sequence such as `(1, 3)` cannot be persisted and deferred to the later corroboration service. The corroborator requires a binding for every admitted adjustment and removes the obsolete path that treated an ungoverned generic transform as owner-local.
- Active-PR Workforce Validation all 24 exported resolver-issued evidence views now keep their issuance seals in closure-private runtime state. Package-wide hostile marker-copy regressions reject importable module sealing capabilities and caller-populated raw exact-runtime objects; purpose authorization, canonical owner reconstruction, scientific-coordinate matching, effective-time currentness, field minimization, detached identities, and marker-last issuance remain unchanged. Runtime view type or seal is not durable authorization.
- Active-PR Workforce Validation authorized evidence views reject low-level base-constructor forging across the complete 24-class public export census. Every exported `*View` is a sealed non-tuple data object whose public constructor rejects, whose raw allocations cannot expose state, and whose only supported issuer remains its purpose-authorized owner-resolution path. The executable package-surface census now fails closed on an added, removed, tuple-backed, unsealed, or mutable public view; `CalibrationBenchmarkAuthorityView` was the final omission exposed by that census and is covered by its own issuance-integrity regression.
- Predictive-validity cases fail closed when selection evidence, Job scope, study criterion, converted worker, or system-recorded visibility does not match; the normalized case relation is tenant-qualified, append-only, TRUNCATE-protected, and forced through row-level security.
- Purpose-bound PII authorization now fails closed across active tenant, authenticated actor tenant, resource tenant, resource kind, purpose, operation, operation-specific Keyverse scope, and requested-field subset; malformed/wildcard-like attributes, mutable field/scope collections, reserved UUID sentinels, and cross-tenant confused-deputy contexts are rejected before protected values are returned. Authorization requests and allow/deny evidence now also require and preserve one namespaced opaque target-resource reference, so immutable audit correlation identifies the exact HR record without copying its protected values. Authorization evidence otherwise contains governance metadata and field names only, with stable denial reasons and actionable next steps rather than PII.
- LLM output constrained to draft evidence.
Expand All @@ -74,4 +80,4 @@ All notable changes to Orgmetra will be documented in this file.

### Notes

- Protected `develop` at `e7ddb7a78a5e1460410005d10f43ebf18c5e12e4` includes normalized validity-study and criterion integrity, bitemporal workforce composition, governed candidate-to-worker conversion, purpose-bound PII authorization, GET-only People reads, governed People mutation/idempotency API, and the accepted ADR 0001–0003 source expansion integrated by #37. Job Analysis persistence/API and the selection-review packet remain active-PR truth until their unchanged exact heads satisfy fresh gates and merge.
- Protected `develop` at `eb9757f8649aaad026a9865508d9aad50c1a7a4f` includes normalized validity-study and criterion integrity, bitemporal workforce composition, governed candidate-to-worker conversion, purpose-bound PII authorization, GET-only People reads, governed People mutation/idempotency API, and the accepted ADR 0001–0003 source expansion integrated by #37. Job Analysis persistence/API and the selection-review packet remain active-PR truth until their unchanged exact heads satisfy fresh gates and merge.
30 changes: 18 additions & 12 deletions manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
"files": [
{
"path": ".github/workflows/foundation-ci.yml",
"sha256": "b6a4365936b66803a8112f034c77d53d33301a7a798ed4f68746a4f2d8b081d7",
"bytes": 6651,
"lines": 125
"sha256": "31c6a46cb81513cdaa2a08eed5cb00a57d8b36f15e3c772d230452cdc3329aed",
"bytes": 6974,
"lines": 127
},
{
"path": ".gitignore",
Expand All @@ -29,9 +29,9 @@
},
{
"path": "CHANGELOG.md",
"sha256": "f2d2e0b488c0440533effa821808f2f17e37d92f8fb586174c2fdb594f760ca5",
"bytes": 17539,
"lines": 77
"sha256": "42ef89549edf4aa0d7dd03eece2a386895a2561df06f277761c45f575c4c21e5",
"bytes": 21006,
"lines": 83
},
{
"path": "CLAUDE.md",
Expand Down Expand Up @@ -359,9 +359,9 @@
},
{
"path": "scripts/foundation-contract-core.mjs",
"sha256": "9b03efbbdffa60a05f5924e8a61b1cbc3cd75c502df428a5920085e8d0bf3603",
"bytes": 28121,
"lines": 688
"sha256": "5dfc54d40820dfc45962dcc91367c57baf6b011e68efc5f6e8d59e7e82145b2a",
"bytes": 28182,
"lines": 689
},
{
"path": "scripts/foundation-contract.mjs",
Expand Down Expand Up @@ -465,11 +465,17 @@
"bytes": 14708,
"lines": 301
},
{
"path": "tests/test_workforce_validation_owner_schema_postgres.sh",
"sha256": "29f0cd8a7d9040ff86095b68fa2f3d0ed54ea3777e5a816d4a79eb6ceafb9339",
"bytes": 2949,
"lines": 76
},
{
"path": "tests/validate_repository.py",
"sha256": "091836b2f68600a30b08f7da2cea8b3bef10201a123da720a7369bf10985eec2",
"bytes": 27237,
"lines": 637
"sha256": "244627252e7392e4dbed98392c132cb86dc8e5ead839a1129298e8d022fcf8eb",
"bytes": 27300,
"lines": 638
}
]
}
3 changes: 2 additions & 1 deletion scripts/foundation-contract-core.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ export const REQUIRED_FILES = Object.freeze([
'tests/test_audit_outbox_hardening_postgres.sh',
'tests/test_candidate_worker_conversion_postgres.sh',
'tests/test_validity_study_case_postgres.sh',
'tests/test_workforce_validation_owner_schema_postgres.sh',
'tests/test_criterion_observation_scope_postgres.sh',
'tests/test_people_mutation_idempotency_postgres.sh',
'tests/test_job_analysis_snapshot_postgres.sh',
Expand Down Expand Up @@ -685,4 +686,4 @@ export function runCli(rootPath, outputStream = process.stdout, errorStream = pr
}
errorStream.write(`${JSON.stringify({ status: 'failed', error_count: errors.length, errors }, null, 2)}\n`);
return 1;
}
}
Loading
Loading