Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
490 commits
Select commit Hold shift + click to select a range
cf94322
record: the lane transport matrix, and the three false failures the m…
DTALEX66 Oct 7, 2026
1e56058
record: ERR-154/155 stamped at 8192e08, and the L-round handoff conti…
DTALEX66 Oct 7, 2026
e5f9756
fix(ui): a disabled action's reason is now reachable without a mouse
DTALEX66 Oct 7, 2026
13e07d9
record: ERR-156, and the binding gate refusing my own untracked promise
DTALEX66 Oct 7, 2026
abc2578
fix(ci): a vitest-only helper directory is not production source, and…
DTALEX66 Oct 7, 2026
9d4297d
record: ERR-157, three red heads from a scanner that could not see a …
DTALEX66 Oct 7, 2026
065e363
record: ERR-157 names the fourth head, read from the runner rather th…
DTALEX66 Oct 7, 2026
8567be8
fix(observability): hermes gets a version source that needs no launch…
DTALEX66 Oct 7, 2026
0c1aa1b
record: ERR-156/157 stamped at a measured green head, and the hermes …
DTALEX66 Oct 7, 2026
e11d3e1
record: hermes' version now has a source that ages visibly, and the r…
DTALEX66 Oct 7, 2026
4dfbcff
record: what is left in the ignored root is cited evidence, not residue
DTALEX66 Oct 7, 2026
01798eb
fix(contract): the readback schema declares the two observation field…
DTALEX66 Oct 7, 2026
5c2f8d4
record: ERR-160, the third time a shape validator caught what my chos…
DTALEX66 Oct 7, 2026
b9933c2
record: ERR-160's boundary measured - no validator is missing, so no …
DTALEX66 Oct 7, 2026
b3271fc
record: finish the ERR-160 boundary edit properly
DTALEX66 Oct 7, 2026
3a3ee11
fix(ci): a repro receipt must name the head its rows actually measured
DTALEX66 Oct 7, 2026
9f587ab
record: ERR-160/161 and the ERR-158/159 stamps, with the introducer d…
DTALEX66 Oct 7, 2026
706664e
fix(gates): the lockfile census reads git, not a walk of the working …
DTALEX66 Oct 7, 2026
ff64960
record: ERR-162, the gate whose input set was the filesystem
DTALEX66 Oct 7, 2026
ee570da
record: ERR-160 stamped at b3271fc, and the stamper refusing ERR-161 …
DTALEX66 Oct 7, 2026
7fedb3c
record: ERR-161 stamped at 9f587ab
DTALEX66 Oct 7, 2026
e97ea2e
record: the traceability debt closes to one refusal with a reason
DTALEX66 Oct 7, 2026
cda4165
record: closing state measured, not asserted
DTALEX66 Oct 7, 2026
34b324e
fix(instruments): keep throwaway fixtures inside the boundary and let…
DTALEX66 Oct 7, 2026
7b7a2e9
feat(read-surface): project task records and the capability ladder in…
DTALEX66 Oct 7, 2026
449829d
fix(observer-ui): put the reduced-motion floor under the whole produc…
DTALEX66 Oct 7, 2026
a279f54
feat(control): serve loopback control operations that answer with a r…
DTALEX66 Oct 7, 2026
07e76ed
fix(gates): make --changed answer with the canonical plan and fail sa…
DTALEX66 Oct 7, 2026
e70c04c
feat(read-surface): read a byte range of an evidence handle without r…
DTALEX66 Oct 7, 2026
efb6a19
fix(instruments): release the CDP profile directory before the run cl…
DTALEX66 Oct 7, 2026
fcc40df
record: what landed this round, measured rather than asserted
DTALEX66 Oct 7, 2026
7fadfcd
record: bind this round's three PASS records to the commits that carr…
DTALEX66 Oct 7, 2026
6d20d28
fix(read-surface): stop the evidence range route from serving the who…
DTALEX66 Oct 7, 2026
2f04622
record: republish the two pinned audits that this round's records inv…
DTALEX66 Oct 7, 2026
62a8ebf
record: ERR-166, the read boundary that protected the wrong thing
DTALEX66 Oct 7, 2026
936e597
record: the authorization that changed mid-round, and the review that…
DTALEX66 Oct 7, 2026
a8e24e0
record: the delivery round, including the review that held the push
DTALEX66 Oct 7, 2026
06908ae
fix(control,read-surface): close the four holes the second review rep…
DTALEX66 Oct 7, 2026
0dda783
feat(control): consume an authorised PlanningCandidate into a real wo…
DTALEX66 Oct 7, 2026
608066b
feat(adapters): record which verbs actually answered, per client, wit…
DTALEX66 Oct 7, 2026
0e95af8
feat(observer-ui): give the Inspector its dimensions and the evidence…
DTALEX66 Oct 7, 2026
122fbfb
record: ERR-167 and ERR-168, created bound because the fix commit cam…
DTALEX66 Oct 7, 2026
c47fb37
feat(read-surface): project the evidence handles the range route can …
DTALEX66 Oct 7, 2026
a433cdf
feat(baseline): measure the entry chain instead of asserting it
DTALEX66 Oct 7, 2026
da01357
record: five corrections where a record had drifted from the tree
DTALEX66 Oct 7, 2026
70e975f
test(boundary): pay off the last 21 temp-fixture debt sites and re-fo…
DTALEX66 Oct 7, 2026
1b1047f
chore(tools): track the control-to-Observer proof driver the register…
DTALEX66 Oct 7, 2026
b50fff7
fix(instruments): keep the window-state readback's scratch inside the…
DTALEX66 Oct 7, 2026
ffd05e9
feat(observer-native): read a window's real geometry back instead of …
DTALEX66 Oct 7, 2026
d3cba64
feat(instruments): measure keyboard focus for real, and refuse to cer…
DTALEX66 Oct 7, 2026
97d0ede
fix(governance): the spill verifier was enforcing fields the contract…
DTALEX66 Oct 7, 2026
dcee507
fix(ci): regenerate the freshness snapshot and let the typed model na…
DTALEX66 Oct 7, 2026
5ac78ff
record: republish the tool inventory for the instruments this round t…
DTALEX66 Oct 7, 2026
051ecbc
fix(control): decide authorisation containment from the text, not fro…
DTALEX66 Oct 7, 2026
9bbadaf
chore(records): move eight closed session handoffs out of the current…
DTALEX66 Oct 7, 2026
e3badb9
record: the security round and the handle-projection state, in the li…
DTALEX66 Oct 7, 2026
215e5d3
record: ERR-169..172, the four defects that only the CI surface showed
DTALEX66 Oct 7, 2026
27aa946
fix(contracts): register the evidence envelope the producers actually…
DTALEX66 Oct 7, 2026
174c9c0
record: ERR-173, a contract name bound to two documents and a guard t…
DTALEX66 Oct 7, 2026
f9f38d6
fix(control): decide containment without asking which operating syste…
DTALEX66 Oct 7, 2026
83107c3
record: ERR-172 corrected against its own refutation, and ERR-174 added
DTALEX66 Oct 7, 2026
50e6d28
fix(read-surface): rank the projected evidence handles by a stated ru…
DTALEX66 Oct 7, 2026
049fad8
fix(read-surface): make adapter verb evidence a layered projection th…
DTALEX66 Oct 7, 2026
b4da000
fix(ci-surface): stop the control suite from authorising the author's…
DTALEX66 Oct 7, 2026
678d4c2
record: ERR-175/176/177, bound to b4da0007, with the tail that push p…
DTALEX66 Oct 7, 2026
245cf8b
archive: move the two frozen 0.1-era documents out of the current sur…
DTALEX66 Oct 7, 2026
27c3e21
fix(control): stop asking the filesystem where the project root is, w…
DTALEX66 Oct 7, 2026
242be88
record: ERR-178 owns the rest of ERR-174's unfinished boundary, and E…
DTALEX66 Oct 7, 2026
ec2d726
fix(control): refuse an unanchored root before opening the store, so …
DTALEX66 Oct 7, 2026
010bb69
record: ERR-179 bound, ERR-180 and ERR-181 added, and the fifth pinne…
DTALEX66 Oct 7, 2026
7ca2fd4
record: ERR-181's label was wrong, and the gate that caught it is the…
DTALEX66 Oct 7, 2026
999d659
fix(contracts): make the unlisted-schema boundary able to fail, and r…
DTALEX66 Oct 7, 2026
f8ffc13
record: ERR-182, the SSOT gate that could see its own defect and not …
DTALEX66 Oct 7, 2026
867f190
fix(ci-surface): exclude the test's own file from the referrer census…
DTALEX66 Oct 7, 2026
f2c7a70
fix(control): decide containment on folded text but read the path the…
DTALEX66 Oct 7, 2026
c0d8e9b
record: ERR-183 and ERR-184, the folded-path read and the census that…
DTALEX66 Oct 7, 2026
e6e2d50
refactor(boundary): one host-free path predicate, used by the control…
DTALEX66 Oct 7, 2026
a8df7bd
record: republish the three audits that read the tracked tool set
DTALEX66 Oct 7, 2026
25235f7
record: ERR-185 retracts my own overstatement, and names the guard th…
DTALEX66 Oct 7, 2026
553296b
record: ERR-185 bound to 25235f7d, the commit that carries the retrac…
DTALEX66 Oct 7, 2026
df6d607
record: 72 ledger entries now carry a verifiedCommit, read from the f…
DTALEX66 Oct 7, 2026
1d87021
fix(read-surface): decide handle containment and provenance from text…
DTALEX66 Oct 7, 2026
f01fab2
record: the two audits whose bytes actually changed under the last th…
DTALEX66 Oct 7, 2026
aefb77e
record: correct my own claim about the targets audit -- it changed on…
DTALEX66 Oct 7, 2026
bfaa342
record: ERR-185 verified at df6d6073, and the three regenerated audit…
DTALEX66 Oct 7, 2026
5d8bf3c
test(guard): exercise the terminal guard's non-Windows arm on this ma…
DTALEX66 Oct 7, 2026
5d997a4
record: ERR-186, the guard arm only the other platform was testing
DTALEX66 Oct 7, 2026
98df72c
fix(transport): a refusal must arrive intact, so the request body is …
DTALEX66 Oct 7, 2026
f29fdbc
record: ERR-186 and ERR-187 -- a guard arm only the other platform te…
DTALEX66 Oct 7, 2026
98140b2
fix(ledger): commit fields hold full SHAs or nothing, and the verifie…
DTALEX66 Oct 8, 2026
dcdfbca
record: ERR-188, and the four audits that the SHA-shape change actual…
DTALEX66 Oct 8, 2026
0adda23
fix(governance): make the README-history rule decidable, and fix the …
DTALEX66 Oct 8, 2026
75ddc2d
record: ERR-189, a convention sentence that the tree contradicted and…
DTALEX66 Oct 8, 2026
faad157
record: ERR-186/187 verified at f29fdbc4, and the re-measured target …
DTALEX66 Oct 8, 2026
beabc63
fix(contract): make the config compiler write the shape its contract …
DTALEX66 Oct 8, 2026
9d0112d
fix(governance): a green exit with no test count is not coverage
DTALEX66 Oct 8, 2026
5968c1f
record: ERR-190/191, and the two contract shapes that had no consumer
DTALEX66 Oct 8, 2026
636394f
fix(test): create the in-boundary run root before mkdtemp into it
DTALEX66 Oct 8, 2026
8b88bf5
fix(governance): point the authority index at directories that exist,…
DTALEX66 Oct 8, 2026
7dda94c
fix(ci): the config-compiler job created an intent the contract never…
DTALEX66 Oct 8, 2026
b02d826
record: ERR-192/193, and 24 register rows pinned to commits no ref co…
DTALEX66 Oct 8, 2026
7258c20
fix(docs): name the install entry that exists, and gate references ag…
DTALEX66 Oct 8, 2026
53dbfb3
fix(governance): make the register's tables rectangular, and check th…
DTALEX66 Oct 8, 2026
304dac4
record: ERR-194/195/196, the register shape, and a repair path for 24…
DTALEX66 Oct 8, 2026
7143cce
record: six more verified at b02d8262, the first green run after the …
DTALEX66 Oct 8, 2026
8d4a5c4
fix(docs): move six dated postmortems out of the directory that claim…
DTALEX66 Oct 8, 2026
8f43b54
record: ERR-197, the six postmortems that lived under a name claiming…
DTALEX66 Oct 8, 2026
7604390
record: ERR-194 and ERR-196 verified at 7143cce4, the first green hea…
DTALEX66 Oct 8, 2026
54a3284
fix(governance): re-pin 12 dangling commits to the squash that carrie…
DTALEX66 Oct 8, 2026
d76deef
record: ERR-198, and ERR-195 corrected to the containment test it sho…
DTALEX66 Oct 8, 2026
e64c5ab
fix(live): a lease taken on an existing task now reaches the Observer
DTALEX66 Oct 8, 2026
cdfd27d
record: ERR-199, counting rows cannot see a lease
DTALEX66 Oct 8, 2026
dd3f35b
revert(live): drop the data_version fast path that broke three readba…
DTALEX66 Oct 8, 2026
fa3004a
record: ERR-200, the fast path that broke three liveness guards, and …
DTALEX66 Oct 8, 2026
951dbcc
fix(gate): the blueprint projection was a CI-only rule, and it was st…
DTALEX66 Oct 8, 2026
9e5f0f1
fix(test): the gate-order pin was two literals, and the canonical gat…
DTALEX66 Oct 8, 2026
9b71827
fix(docs): the reference gate guarded four named pages while 34 more …
DTALEX66 Oct 8, 2026
6e6d4fb
record: ERR-201 stamped at 9b71827e, and the register cells that turn…
DTALEX66 Oct 8, 2026
e4e7725
feat(gate): no check may exist only in CI, and eight verifiers that d…
DTALEX66 Oct 8, 2026
9fb20f2
record: ERR-202 stamped at e4e77250, and the register row that correc…
DTALEX66 Oct 8, 2026
6310bd4
fix(live): the lease witness now keys on the expiry, and the current-…
DTALEX66 Oct 8, 2026
048e616
record: ERR-203 and ERR-204 stamped at 6310bd4e
DTALEX66 Oct 8, 2026
9d1fd1b
fix(test): the worker lifecycle test waited on less than it asserted,…
DTALEX66 Oct 8, 2026
009444f
fix(register): three cells asserted things the tree contradicts, and …
DTALEX66 Oct 8, 2026
970fef4
record: ERR-205 and ERR-206, both written from the commands that prod…
DTALEX66 Oct 8, 2026
9b52886
test(sidecar): the read-only 405 is proven at the byte level on a kee…
DTALEX66 Oct 8, 2026
a62f541
fix(ledger): the file is written with ensure_ascii=False, which is th…
DTALEX66 Oct 8, 2026
73ed885
test(ci): a directory-shaped git check-ignore probe answers "ignored"…
DTALEX66 Oct 8, 2026
6afd8bc
record: ERR-197..206 verified at 970fef43, ERR-207 added, and the reg…
DTALEX66 Oct 8, 2026
8d08cba
fix(gate): a named reference run that judged nothing used to pass, wh…
DTALEX66 Oct 8, 2026
7290074
record: ERR-208, whose own exit code of 0 is the defect
DTALEX66 Oct 8, 2026
097320d
record: ERR-207 and ERR-208 verified at 72900749, where every run at …
DTALEX66 Oct 8, 2026
837c52b
feat(gate): the register is now a guarded navigation surface, excusin…
DTALEX66 Oct 8, 2026
5ef54c8
record: ERR-209, the register's own reference debt, closed with the g…
DTALEX66 Oct 8, 2026
9f644c4
fix(boundary): release is the half nobody guarded, and a swallowed Wi…
DTALEX66 Oct 8, 2026
ab8c29e
record: ERR-210 for the release half, ERR-209 stamped where every run…
DTALEX66 Oct 8, 2026
950c407
fix(harness): a child's UTF-8 Chinese line killed the gate's own read…
DTALEX66 Oct 8, 2026
ddb818c
record: ERR-211 for the locale crash, and the two derived audits repu…
DTALEX66 Oct 8, 2026
111ac40
fix(harness): the locale-decode class is not three files, it is every…
DTALEX66 Oct 8, 2026
5c961e5
record: tool inventory re-pinned after the pipe sweep -- 22 of its bl…
DTALEX66 Oct 8, 2026
bcf99f2
fix(harness): my own sweep flipped a bytes-mode read into text mode -…
DTALEX66 Oct 8, 2026
3ba4346
fix(record): four register rows claimed a CI verdict that GitHub cont…
DTALEX66 Oct 8, 2026
e282417
record: ERR-212 for the absence-that-hid-a-red, and the derived audit…
DTALEX66 Oct 8, 2026
bd4d6de
fix(gate): the compile step covered 5 roots and called itself the rep…
DTALEX66 Oct 8, 2026
b069db8
feat(ui): the project logo is cut out and mounted in both brand slots…
DTALEX66 Oct 8, 2026
840f9a2
fix(gate): widening the compile scope made one CI-only exemption stal…
DTALEX66 Oct 8, 2026
d52fc20
record: ERR-210..213 stamped at 840f9a28, where all 24 check-runs cam…
DTALEX66 Oct 8, 2026
058842d
feat(entry): Quick Entry gets the field and permission spec §15.2 ask…
DTALEX66 Oct 8, 2026
17d016d
record: ERR-214 for the catalogue gate that raised instead of reporti…
DTALEX66 Oct 8, 2026
3700cb5
fix(contract): the new Quick Entry schema broke two house rules the g…
DTALEX66 Oct 8, 2026
5e74a07
fix(temp): a fixture root could be minted with a name the evidence re…
DTALEX66 Oct 8, 2026
d5f2afe
record: ERR-215 for the fixture root that was minted with an unreadab…
DTALEX66 Oct 8, 2026
977dd68
test(temp): the prefix census convicted its own planted control, so t…
DTALEX66 Oct 8, 2026
780b594
fix(audit): republishing the ledger flattened three hand-authored ver…
DTALEX66 Oct 8, 2026
e2774e6
record: ERR-216 and the two register rows for the random-name and fla…
DTALEX66 Oct 8, 2026
bcae52a
feat(ui): the observer surface gets a machine-readable design contrac…
DTALEX66 Oct 8, 2026
811c615
record: republish the current-state projection, whose digest the Quic…
DTALEX66 Oct 8, 2026
da0c373
feat(ui): absorb the missing node dependency in-boundary and give the…
DTALEX66 Oct 8, 2026
784b0a2
fix(scripts): the new front-end route declared a text pipe without an…
DTALEX66 Oct 8, 2026
8ac4ed5
fix(design-qa): the plugin's default source globs match nothing in a …
DTALEX66 Oct 8, 2026
36f9a29
fix(ui): the nav rail's scroll container was declared and dead, so 14…
DTALEX66 Oct 8, 2026
5e5d856
docs(ui): the design contract now cites the authorities its numbers c…
DTALEX66 Oct 8, 2026
9488cf9
record: stamp ERR-214/215/216 at 784b0a23 and retract the false no-no…
DTALEX66 Oct 8, 2026
e30e50c
test(gate): the geometry probe now proves nav items are reachable, an…
DTALEX66 Oct 8, 2026
c6bf1b9
record: republish the instrument inventory after the geometry probe g…
DTALEX66 Oct 8, 2026
064918d
feat(ui): nav groups are disclosures and the action row folds, with t…
DTALEX66 Oct 8, 2026
f4d8dac
record: republish the instrument inventory after the geometry probe g…
DTALEX66 Oct 8, 2026
9de7e7a
fix(ui): the group caption keeps its type in the design system's own …
DTALEX66 Oct 8, 2026
3862499
record: mirror the WORK-LAB-only last copies out of the owner's Recor…
DTALEX66 Oct 8, 2026
c00f1cc
docs: one census that says where every task and document lives, and w…
DTALEX66 Oct 8, 2026
fce78b2
record: republish the current-state projection, whose digest covers R…
DTALEX66 Oct 8, 2026
4077d76
fix(ui): an unmeasurable action row shows everything, so the fold can…
DTALEX66 Oct 8, 2026
17a8070
feat(gate): the canonical runner now runs the observer JS contracts a…
DTALEX66 Oct 8, 2026
db167ce
test(governance): the pinned VERIFY_ORDER grows the front-end contrac…
DTALEX66 Oct 8, 2026
187cbc7
chore(hooks): declare the four Git LFS generated hooks as per-clone t…
DTALEX66 Oct 8, 2026
2e1c671
fix(ui): the action fold asks the band how much room is left, not the…
DTALEX66 Oct 8, 2026
a36f589
fix(ui): the type floor and light-theme AA are measured now, and the …
DTALEX66 Oct 8, 2026
bdc25c5
record: ERR-217 plus the four UI and provenance rounds that were ship…
DTALEX66 Oct 8, 2026
8acd9bf
fix(tools): node's compile cache goes to the declared cacheRoot, not …
DTALEX66 Oct 8, 2026
1e20ff4
fix(ui): the degraded card names the view it is failing for, so a nav…
DTALEX66 Oct 8, 2026
fc19fce
feat(gate): region boundaries and focus-not-obscured are now asserted…
DTALEX66 Oct 8, 2026
c4daada
fix(ui): contrast measured against a live snapshot, which found what …
DTALEX66 Oct 8, 2026
a293e03
record: bind ERR-218 to the head that fixes it, and republish the reg…
DTALEX66 Oct 8, 2026
bdc7c1b
feat(ui): the legibility census now drives every rail lane, and four …
DTALEX66 Oct 8, 2026
d58e6c1
fix(ui): the secondary accent gets a text role, and the census now pr…
DTALEX66 Oct 8, 2026
48f9e4d
fix(standard): the <760px band was a standard defect, not unbuilt wor…
DTALEX66 Oct 8, 2026
5007864
record: ERR-219 bound to 48f9e4d0, the commit that holds the correcti…
DTALEX66 Oct 8, 2026
e5ab4d5
record: republish the two derived projections that ERR-219 and the in…
DTALEX66 Oct 8, 2026
0b004fb
fix(audit): the sweep's own label spelled @{size}, which the security…
DTALEX66 Oct 8, 2026
52f9594
test(legibility): a micro-role permission that matches nothing now fa…
DTALEX66 Oct 8, 2026
b97e0b4
fix(ui): the offline card stops showing a spinner nobody asked for
DTALEX66 Oct 8, 2026
f6f892f
fix(ui),feat(gate): a truncated UNKNOWN was the HUD's most dishonest …
DTALEX66 Oct 8, 2026
2ce4b80
record: ERR-217/218/219 verified at 0b004fbd, where all 24 check-runs…
DTALEX66 Oct 8, 2026
b4f8b0a
feat(gate): a governance skip must now come with the reason it claims
DTALEX66 Oct 8, 2026
b83eaaa
feat(ci): a push now needs a receipt that names the exact head and sa…
DTALEX66 Oct 8, 2026
8e4d36a
record: republish the tool inventory for the gate-runner edit
DTALEX66 Oct 8, 2026
7b36675
fix(ci): the push permit opened a text pipe without an encoding, whic…
DTALEX66 Oct 8, 2026
10861ff
record: republish the tool inventory for the permit fix
DTALEX66 Oct 8, 2026
9727974
fix(ci): stamp the head before the gates run, so a red receipt is not…
DTALEX66 Oct 8, 2026
0e19be9
record: republish the tool inventory for the stamp-ordering fix
DTALEX66 Oct 8, 2026
180f31a
record: ERR-220 for the third push-before-verify, and the permit that…
DTALEX66 Oct 8, 2026
6c500d6
record: ERR-220 corrected to carry a real failing command, and the le…
DTALEX66 Oct 8, 2026
a376f1f
fix(ci): a check-run that never started is no longer readable as a co…
DTALEX66 Oct 8, 2026
3ef76fa
record: ERR-221 — Actions cannot run for this account, so exact-SHA C…
DTALEX66 Oct 8, 2026
c462678
docs(ui): the legibility claim now covers the three surfaces the prod…
DTALEX66 Oct 8, 2026
7b5a450
feat(governance): three history surfaces are now frozen to the byte, …
DTALEX66 Oct 8, 2026
f0a5a66
fix(gate): the reference guard now reads the design contract's denses…
DTALEX66 Oct 8, 2026
2965e66
test(gates): a shipped derived projection must now equal what this tr…
DTALEX66 Oct 8, 2026
818116e
record: ERR-222 for two projections that contradicted the commit carr…
DTALEX66 Oct 8, 2026
c8c2a78
record: the historical reference backlog is measured and split three …
DTALEX66 Oct 8, 2026
139cbfd
fix(gate): the runner writes its own completion line, so a receipt no…
DTALEX66 Oct 8, 2026
c05d650
test(ui): the nav rail's disclosure behaviour gets contracts, and the…
DTALEX66 Oct 8, 2026
a8f9fb9
fix(ui): the token records now say what the sheets render, and two gu…
DTALEX66 Oct 8, 2026
d22d21e
feat(ui,workflow): the round's WUI slices land with their guards — co…
DTALEX66 Oct 10, 2026
0db79f9
record: the round's PASS records now name the commit that carries them
DTALEX66 Oct 10, 2026
1d239ab
fix(gate): the three reds at the pushed HEAD close without weakening …
DTALEX66 Oct 10, 2026
47d1350
record: the tool inventory re-reads the citation audit's grown bytes
DTALEX66 Oct 10, 2026
b271842
fix(hooks,gate): the three CI-only reds at 47d13507 close, and the lo…
DTALEX66 Oct 10, 2026
82a24df
record: ERR-260/261/262 — a guard that convicted six untouched files,…
DTALEX66 Oct 10, 2026
06c9cdc
fix(gate): the runtime-convergence verifier could not run three of it…
DTALEX66 Oct 10, 2026
5f14677
fix(audit): the SSE disposition quoted a receipt in assignment shape,…
DTALEX66 Oct 10, 2026
039a6f3
fix(docs,gate): nine unresolved references repaired, and the checker …
DTALEX66 Oct 10, 2026
87f2839
record: ERR-263 and ERR-264 — what the 50-stage chain found once the …
DTALEX66 Oct 10, 2026
1928fa8
fix(gate): the two register floors move to the ledger that has their …
DTALEX66 Oct 10, 2026
ca3e47f
record: ERR-265 — the two register floors were attached to the wrong …
DTALEX66 Oct 10, 2026
7e2261a
fix(ci): invoke the root-governance stage on push, and re-cut the pro…
DTALEX66 Oct 10, 2026
aaf39a5
fix(gate): four CI-only reds closed at the root — committed-byte hash…
DTALEX66 Oct 11, 2026
d8d43f4
record: the tool inventory re-reads the three audit tools this batch …
DTALEX66 Oct 11, 2026
f7734d6
record: ERR-266 — four guards that were green here and red on the runner
DTALEX66 Oct 11, 2026
50dab56
feat(ui,docs): the front model now consumes the generated contract, a…
DTALEX66 Oct 11, 2026
1646109
feat(ui): WUI-08's six-step migration chain, projected where the snap…
DTALEX66 Oct 11, 2026
5712fc9
fix(register): the WUI-08 row cited a receipt by basename, which is n…
DTALEX66 Oct 11, 2026
5f42a95
feat(control): an operation can be re-queried by the identity it used…
DTALEX66 Oct 11, 2026
33051db
record: WUI-15's status cell still claimed the seam was owed after th…
DTALEX66 Oct 11, 2026
63d9a58
record: checklist T21 and T25 move to 部分通过 on the identity read-back,…
DTALEX66 Oct 11, 2026
1d2412e
record: intake the 2026-10-11 three-project cloud audit, and fix the …
DTALEX66 Oct 11, 2026
1339ff2
record: the audit's missing four WORK findings are WL-L01..L04, and a…
DTALEX66 Oct 11, 2026
1876311
fix(register): the audit addendum cited two members by basename, whic…
DTALEX66 Oct 11, 2026
335d0c6
fix(docs): my intake doc cited the readable-member directory by a bar…
DTALEX66 Oct 11, 2026
3e3401a
record: ERR-267's runner evidence exists at 1d2412ee, so the lifecycl…
DTALEX66 Oct 11, 2026
14713aa
record: ERR-267's verifiedCommit moves to the head where the whole ru…
DTALEX66 Oct 11, 2026
2bda3fa
fix(ui-v2): 六条云端审计缺陷 + 隔离试用三页与快照携带面
DTALEX66 Oct 12, 2026
ace5ae0
chore(ledger): 提交后重发派生审计
DTALEX66 Oct 12, 2026
b5cf26a
fix(codex): Windows 安装器曾谎报写入成功
DTALEX66 Oct 12, 2026
f223e61
fix(authority): 三个未合并分支的内容级处置 + 登记索引以仓库字节为准
DTALEX66 Oct 12, 2026
a41dd5e
fix(projections): 生成器按字节写盘;重生成已陈旧的默认技能投影
DTALEX66 Oct 12, 2026
d1cf4c5
docs(future)+gate: 并入 Agent Studio 规划、两个符号链接门按前提具名跳过、派生审计按序重发
DTALEX66 Oct 12, 2026
bfbd14b
fix(observer): 前端合同门两处——可选键登记与传输真值等待预算
DTALEX66 Oct 12, 2026
c4dfa68
chore(memory): 记录本轮门收敛与推送阻塞点
DTALEX66 Oct 13, 2026
1eedf2e
fix(tools): 重发工具清单投影(CI run 38389689180 指出的唯一红项)
DTALEX66 Oct 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
79 changes: 66 additions & 13 deletions .agents/skills/work-lab-workflow/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,77 @@
<!-- GENERATED — DO NOT EDIT -->
<!-- source: projections/agents/source/work-lab-workflow/SKILL.md -->
<!-- generator: projections/agents/generate.py v1.0.0 -->
<!-- content_hash: sha256:6b3e785cb184cba5212a7ee69e5ac3d65753bdf3214a171fe0e3610a796be9bb -->
<!-- content_hash: sha256:528bdd0424de23886885ec4cb3c61e5ed97e407d3c914fa370fffc5c8d757fef -->
---
name: work-lab-workflow
description: "Use for WORK-LAB workflow tasks; follow the project ledger, module, and verification boundaries."
version: 1.0.0
version: 1.1.0
---

# WORK-LAB Workflow Contract

Use this skill only inside the WORK-LAB Git repository.

## What this product is

WORK-LAB is a client-neutral workflow control, governance, task, delivery and observability layer. It is not
an agent, not a chat application, and not a model gateway; external software executes the business work. The
repository is an auditable portable source, and Hermes, Codex, CC Switch, GitHub, OpenHuman and Open Design
are replaceable Adapters behind one contract, not the product itself.

## Three projects, one boundary each

- WORK-LAB: project observation, reusable capability evaluation / adaptation / target verification, and
declared configuration governance. It is not a mandatory total dispatcher.
- ArcheAxis-Knowledge-OS (AAOS): full knowledge lifecycle, human knowledge work, research and learning, AI
learning assets, bidirectional learning and long-term project memory.
- DESIGN-LAB: professional design of all types, native assets, the design-specific execution core and
professional acceptance.

Machine authority: `.project/governance/three-project-boundary.json`. A task in one project grants no write
access to another. Design capability is neither collected nor managed here.

## Ownership

- `services/` + `packages/` + `integrations/` owns workflow configuration, Task Ledger, Telemetry Ledger, sidecar, adapters, and delivery gates.
- `apps/observer` is read-only. It may read Workflow-owned projections but must not execute, approve, retry, apply, rollback, change task state, or write the Telemetry Ledger.
- Open Design and MINIGAME are archive/transferred scope and must not be restored as active modules.
- Module roots are exactly two (`.project/governance/module-ownership.json`): `packages/client-neutral-core`
(Task Ledger, Telemetry Ledger, sidecar, adapters, delivery gates) and `apps/observer` (read-only
projection). `services/`, `integrations/`, `config/`, `apps/token-monitor/` and `scripts/` are active
supporting surfaces, not module roots.
- `apps/observer` is read-only. It may read Workflow-owned projections but must not execute, approve, retry,
apply, rollback, change task state, or write the Telemetry Ledger.
- Retired module paths must not be restored.

## Desktop scope

The product surface is the desktop Observer window plus the existing desktop floating HUD. Mobile is out of
scope: it is not built, not queued, and not recorded as a deferred or frozen task.

## Truth discipline

- Unknown is never padded to zero, and an absent field is not an empty one; report PROJECTED, NULL_FIELD and
SOURCE_GAP as different origins.
- A lost connection is not a stopped subject, and a `turn_end` signal is not the completion of a project.
- Demo and fixture data never enter production code paths.
- A colour or layout proposal from an inbound task pack becomes an opt-in theme
(`?palette=master`) and never overwrites the shipped default values.

## Writer boundary

- One writer owns a checkout.
- Parallel writers require separate worktrees.
- One writer owns a checkout; parallel writers require separate worktrees.
- Do not edit a checkout concurrently with another writer or reviewer.
- Do not commit, push, publish, create a PR, merge, or modify global Codex/Hermes configuration unless the user explicitly authorizes that exact side effect.
- Do not commit, push, publish, create a PR, merge, install software, or modify global client configuration
unless the user explicitly authorizes that exact side effect.
- Whether an external client is actually deployed is recorded as unverified unless it was read back in this
session; an unverified claim is written as unverified, not as satisfied.

## Runtime and evidence

- Keep temporary files, caches, logs, test environments, Task Ledger state, and generated evidence under the project `.project-local/` directory.
- Never read or expose credentials, `.env` files, auth stores, private keys, browser data, tokens, prompt bodies, or response bodies.
- Never access `E:\` without explicit authorization for the exact path and operation.
- Keep temporary files, caches, logs, test environments, Task Ledger state and generated evidence under the
project `.project-local/` directory (`runs/` for transient state, `artifacts/` for evidence).
- Never read, print, copy, commit or upload credentials, `.env` files, auth stores, private keys, browser
data, tokens, prompt bodies or response bodies.
- Never access `E:\` or `F:\` — read or write — without explicit per-path, per-operation authorization
(`.project/governance/project-data-boundary.json`).

## Verification

Expand All @@ -39,8 +81,19 @@ Run checks from the exact module path. Prefer the canonical gate:
python services/orchestration/run_quality_gate.py verify
```

Distinguish structural checks, local runtime checks, exact-SHA CI, and release evidence. A local test pass is not proof of exact-SHA CI or publication.
Distinguish structural checks, local runtime checks, exact-SHA CI, and release evidence. A local test pass is
not proof of exact-SHA CI or publication. A render or measurement receipt must name the bytes it looked at.

## Task execution

Before changing code, read the relevant `AGENTS.md`, inspect the project task contract, and locate the symbol or configuration owner. Use the Workflow-owned Task Ledger for durable task state when the task contract requires it. Observer projections are read-only and are never a second source of truth.
Before changing code, read the relevant `AGENTS.md`, inspect the project task contract, and locate the symbol
or configuration owner. The single live task register is `taskpacks/current/OPEN-TASK-REGISTER.md`, and the
current taskpack for this round is `taskpacks/current/WORK-LAB-UI-PRIORITY-TASKPACK-20261009.md`. Use the
Workflow-owned Task Ledger for durable task state when the task contract requires it. Observer projections
are read-only and are never a second source of truth.

## Scoped references

Read repository-relative `docs/current/workflow-assistance/skill-references/observer.md` only for Observer
delivery, or `docs/current/workflow-assistance/skill-references/external-clients.md` for Open Design /
OpenHuman boundary work. Generic debugging or testing advice is not a separate required workflow.
10 changes: 10 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
* text=auto
*.sh text eol=lf
# Shell hooks have no extension, so `* text=auto` + core.autocrlf=true hands the working tree CRLF
# bytes and `sh` mis-parses every line (the reason .githooks/pre-commit ran as a silent no-op until
# 2026-10-10, ERR-261). Hooks must stay LF in the checkout, not just in the object.
.githooks/** text eol=lf
*.yml text eol=lf
*.yaml text eol=lf
*.json text eol=lf
Expand All @@ -8,3 +12,9 @@
*.psd filter=lfs diff=lfs merge=lfs -text
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
# Immutable 2026-10-09 input/snapshot bytes: preserve original line endings and hashes.
taskpacks/history/UI-PRIORITY-CUTOVER-20261009/original-tree/** -text -diff
docs/history/owner-inputs/20261009/ui-readable/** -text -diff
docs/history/owner-inputs/20261009/final-readable/** -text -diff
# Lossless owner-source bytes; authored indexes/registries outside originals remain text.
docs/history/owner-inputs/record-20261009/originals/** -text -diff
56 changes: 47 additions & 9 deletions .githooks/pre-commit
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
#!/usr/bin/env bash
# pre-commit hook — WORK-LAB 自动同步 CURRENT_STATE(免手动重生成)
# pre-commit hook — keep .project/governance/generated/CURRENT_STATE.{json,md} in step with the commit.
#
# 背景: 手动重生成 CURRENT_STATE 是哈希噪音的来源(每次改 tracked 文件都要跑)。
# 此 hook 在提交时自动检测 tracked 改动并重生成 digest + stage,开发者无感。
# 背景: 手动重生成 CURRENT_STATE 是哈希噪音的来源(每次改 tracked 文件都要跑),所以放在提交时自动做。
#
# 2026-10-10 修复(ERR-261): 这个 hook 曾经长期静默空转,两个原因叠在一起——
# 1) 它调用裸 `python`。这台机器上 PATH 里没有 python(项目解释器是
# `.project-local/toolchains/wl-py311/Scripts/python.exe`,与 CI 一致),于是
# `if python … >/dev/null 2>&1` 为假,什么都不做;
# 2) 即使跑成,它 `git add` 的是收敛前布局的 `00-governance/generated/CURRENT_STATE.*`,
# 真实产物在 `.project/governance/generated/`,所以生成的字节从不进入提交。
# 两者都带 `exit 0`,所以本地门一直绿,而 CI 的 `--check-current` 在 47d13507 上读到
# recorded=3992b069931e / recomputed=55f3237b0127。现在:解释器按声明的顺序解析,路径改成真实
# 产物,任何一步失败都让提交失败并说明原因——把“投影过期”静默发布出去正是这个 hook 存在的理由的反面。
#
# 启用: git config core.hooksPath .githooks
# 跳过: git commit --no-verify(不推荐,需显式理由)
Expand All @@ -12,13 +21,42 @@ ROOT="$(git rev-parse --show-toplevel 2>/dev/null)" || exit 0
# 空提交/无 staged 改动则跳过
git diff --cached --quiet 2>/dev/null && exit 0

# 收集 staged 的 tracked 改动(排除 CURRENT_STATE 自身,避免循环)
CHANGED="$(git diff --cached --name-only 2>/dev/null | grep -vE '^00-governance/generated/CURRENT_STATE\.(json|md)$' | grep -vE '^\.hermes/')"
PROJECTION_JSON=".project/governance/generated/CURRENT_STATE.json"
PROJECTION_MD=".project/governance/generated/CURRENT_STATE.md"
GENERATOR="$ROOT/scripts/ci/generate_current_state.py"

# 收集 staged 的 tracked 改动(排除投影自身,避免循环)
CHANGED="$(git diff --cached --name-only 2>/dev/null | grep -vE "^\.project/governance/generated/CURRENT_STATE\.(json|md)$" | grep -vE '^\.hermes/')"

if [ -z "$CHANGED" ]; then
exit 0
fi

if [ -n "$CHANGED" ]; then
# 重生成 CURRENT_STATE(失败不阻断提交,仅记录)
if python "$ROOT/scripts/ci/generate_current_state.py" --root "$ROOT" >/dev/null 2>&1; then
git add 00-governance/generated/CURRENT_STATE.json 00-governance/generated/CURRENT_STATE.md 2>/dev/null
PY=""
for candidate in "$ROOT/.project-local/toolchains/wl-py311/Scripts/python.exe" \
"$ROOT/.project-local/toolchains/wl-py311/bin/python" \
python python3; do
if command -v "$candidate" >/dev/null 2>&1 || [ -x "$candidate" ]; then
PY="$candidate"
break
fi
done
if [ -z "$PY" ]; then
echo "PRE_COMMIT_FAIL no python interpreter: expected the declared project toolchain" >&2
echo " (.project-local/toolchains/wl-py311/Scripts/python.exe) or python/python3 on PATH." >&2
echo " Refusing to commit a tree whose CURRENT_STATE projection would go stale." >&2
exit 1
fi

if ! "$PY" "$GENERATOR" --root "$ROOT"; then
echo "PRE_COMMIT_FAIL $PY $GENERATOR --root $ROOT exited non-zero;" >&2
echo " the projection was NOT regenerated — fix the generator, do not commit past it." >&2
exit 1
fi

if ! git add -- "$PROJECTION_JSON" "$PROJECTION_MD"; then
echo "PRE_COMMIT_FAIL git add -- $PROJECTION_JSON $PROJECTION_MD failed;" >&2
echo " regenerated bytes would not reach the commit." >&2
exit 1
fi
exit 0
8 changes: 4 additions & 4 deletions .github/workflows/wlr-060-gates.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Validate all JSON schemas
run: python -c "import json,glob; [json.load(open(f)) for f in glob.glob('packages/contracts/schemas/**/*.json',recursive=True)]; print('ALL SCHEMAS VALID')"
run: python -c "import json,glob; [json.load(open(f, encoding='utf-8')) for f in sorted(glob.glob('packages/contracts/schemas/**/*.json', recursive=True))]; print('ALL SCHEMAS VALID')"

observer-readonly:
name: observer-readonly
Expand Down Expand Up @@ -62,7 +62,7 @@ jobs:
python - <<'PY'
import json, pathlib
p = pathlib.Path(pathlib.os.environ["CAPSULE_TMP"]) / "capsule.json"
cap = json.loads(p.read_text())
cap = json.loads(p.read_text(encoding="utf-8"))
cap["content"]["body"] += "tampered"
(pathlib.Path(pathlib.os.environ["CAPSULE_TMP"]) / "bad-hash.json").write_text(json.dumps(cap))
PY
Expand All @@ -72,7 +72,7 @@ jobs:
# negative control 2: wrong schema_version must fail closed
python - <<'PY'
import json, pathlib, os
cap = json.loads((pathlib.Path(os.environ["CAPSULE_TMP"]) / "capsule.json").read_text())
cap = json.loads((pathlib.Path(os.environ["CAPSULE_TMP"]) / "capsule.json").read_text(encoding="utf-8"))
cap["schema_version"] = "work-lab/context-capsule/v999"
(pathlib.Path(os.environ["CAPSULE_TMP"]) / "bad-version.json").write_text(json.dumps(cap))
PY
Expand All @@ -96,7 +96,7 @@ jobs:
mkdir -p "$CC_TMP"
# positive chain up to approval: create -> plan -> approve
python services/policy/config_compiler.py create \
--client hermes --type field --target display.language \
--client hermes --type set-field --target display.language \
--value '"zh"' --output "$CC_TMP/intent.json"
python services/policy/config_compiler.py plan --intent "$CC_TMP/intent.json"
python services/policy/config_compiler.py approve --intent "$CC_TMP/intent.json"
Expand Down
32 changes: 32 additions & 0 deletions .github/workflows/work-lab-gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,12 @@ jobs:
python services/orchestration/run_quality_gate.py context-pack
python services/orchestration/run_quality_gate.py client-neutral-manifest
python services/orchestration/run_quality_gate.py core-schemas
# ERR-261/263/264 recorded the same blind spot three times: this stage runs the root tests/ci
# governance suite (44 modules -- the register's table shape and commit pins, the authority-index
# reference checks, the tool inventory) and no workflow invoked it, so a red there was invisible on
# push while every CI check stayed green. The chain above stops at its first failure, which is why
# a stage list has to be named in full rather than assumed covered.
python services/orchestration/run_quality_gate.py root-governance-suite
python tests/workflow-assistance/test_platform_identity.py
python tests/workflow-assistance/test_instance_reconciler.py
python tests/workflow-assistance/test_config_ownership.py
Expand Down Expand Up @@ -207,9 +213,23 @@ jobs:
- name: Build the real Tauri desktop binary (MSVC, for U19 E2E)
working-directory: apps/observer/src-tauri
run: cargo build --release --locked
- name: Record the artifact input receipt
# ERR-105: the receipt must be written by the build side, immediately
# after the compiler, so it attests to a build that was observed. The
# gate only reads it. Without it the gate falls back to content
# evidence and says so in its own report.
working-directory: .
run: python apps/observer/scripts/write_artifact_receipt.py
- name: U19 real-WebView E2E readback (WINDOWS_TAURI_E2E)
working-directory: apps/observer
run: python scripts/u19_webview_e2e.py
# G3: required now that the instrument has produced a real GEOMETRY_GATE_PASS readback (ERR-146 states
# the condition). It measures the bundle this job just built, at each window's declared shape: the main
# shell at 1280x820 and the floating panel at 440x780. A refusal exits 3 and names why, which is a red
# on purpose — the gate cannot report green without a measurement.
- name: Desktop geometry gate (CDP measurement of the built shell)
working-directory: .
run: python scripts/audit/topbar_geometry_via_cdp.py --json-out .project-local/runs/ci/geometry_gate.json

supply-chain-security:
name: supply-chain-security
Expand Down Expand Up @@ -272,6 +292,18 @@ jobs:
run: python scripts/ci/verify_project_data_boundary.py
- name: Verify authority-reference integrity (A03)
run: python scripts/ci/verify_project_authority_reference.py
- name: Verify blueprint coverage matrix and its projection
# The matrix under .project/governance is the single mutable source; the
# docs/future projection must match it, AG and U rows are re-extracted
# from the live files so no row can be dropped or invented, anchors must
# resolve, and no artifact may carry its own digest.
run: python scripts/ci/verify_blueprint_coverage.py
- name: Verify the future-candidate pool has row-level coverage
# The §16 table is landed with row keys 16.NN, so registry coverage is a
# name-level check instead of the count arithmetic (19 - 14 = 5) that hid
# six unregistered rows. A row with no candidate, or a candidate naming a
# row that does not exist, fails the gate.
run: python scripts/ci/verify_future_candidate_registry.py
- name: Run authority-reference negative controls
run: python tests/ci/test_project_authority_reference.py
- name: Verify supply-chain pins
Expand Down
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,11 @@ config/.backups/

# UI design-reference assets (extracted from the UI kit; design reference, not shipped source)
.ui-reference/

# Git LFS writes these four into core.hooksPath (.githooks) when `git lfs install` runs.
# They are per-clone tooling, not work product: .githooks/pre-commit stays tracked, and
# committing the LFS stubs would bake one machine's LFS state into every other clone.
.githooks/post-checkout
.githooks/post-commit
.githooks/post-merge
.githooks/pre-push
Loading
Loading