diff --git a/README.md b/README.md index 19e831b4..6ff0f94b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,313 @@ # Engineering Platform +## Current r34 Console audit localization correction40 — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6145876955): +same writer/session/branch/history; consumed40, no administrative cap, all other +operational budgets unchanged. Supported canonical PATCH119 for this product fix. + +Source39 complete browser execution naturally passed529 first attempts plus four +baseline exceptions; three exact JS assets exceeded80.2. Independent Quality AND +Security reject complete acceptance: five genuine healthy200 logresponses with +seven stored Console-audit rows cause missing dashboard_action_completed labels. +The actual conditional producer also emits dashboard_action_failed, absent from +all five catalogs. Failed browser behavior was not historically observed; current +strict-translator controls confirm both missing keys in all five languages. +All original bodies/errors/raw/screens stay intact. Valid installed17 continues +naturally on its unchanged frozen source39/runtime, without cancellation or +future PASS transfer. No complete source39/runtime-zero-error PASS is claimed. + +The finite two-event class now has five-language Console-action labels, explicitly +not execution-success labels. The owning source-only audit resolves the exact +conditional Server producer and direct CENTRAL cancellation log alongside the +original28 lifecycle events; strict unknown keys still fail. One existing browser +case retains its synthetic telemetry renderer scope, while native activation +uses the actual Console audit producer, real stored/log HTTP reads and screen +labels. An explicit malformed configuration request produces a real failed +audit409 before settings writes; complete configuration reread must stay equal. +Both real outcomes, current document/request/seven-phase/body hashes, five-language +screens and all ordinary errors remain checked. One known audit endpoint extends +the existing private observer; no generic capture framework/new corpus/deadline. +All native, authority/epoch/noncreating/history/lifetime/error guards remain. + +Implementation/artifact/joint targeted/full/strict coverage/current CI and final +independent acceptance remain PENDING. Then normal protected PR351, ordinary +Finalization, NEW exact-final-main installed/browser/screenshots and own cleanup. +Closed predecessors remain closed; HOB waits until the complete original DoD. + +## Current r34 exact relative-header fixture correction39 — 2026-10-13 + +[ACK, admission and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6145247732): +same writer/session/branch/history; consumed39, no administrative cap, other +operational budgets unchanged. EP2.3.118 and all193 production bytes remain. + +Source38 compact targeted11 naturally FAILED1: nine passes and two normal +desktop/mobile failures at the previous-header absolute-clock join. Preflight5, +logic56, five-locale contract, reporter7 and exact owning533 discovery passed +on that head only. Original failures/raw/screens remain; no PASS transfer. +The bounded real installed diagnosis naturally ended0 with actual worker stop: +five public absolute request clocks differ from the independent CDP-derived +clocks, while seven header-ready relative phase fields uniquely/exactly agree. +The hidden clock mapping remains inferred; original missing public-clock +values are not reconstructed. Two private diagnostic setup failures stay failed. + +Both existing independent reviewers admit the finite repair design. The fixture +uses unique exact fullURL/method/status/frame/seven-relative-phase identity, +then requires currentloader/project before each actual index/snapshot bodyread. +Absolute start is finite diagnostic context only, without tolerance or fallback. +Zero remains pending, ambiguity red, and an unknown predecessor cannot be +replaced by a later good response. In-case modeled collision/missing/type/cache +controls are distinctly helper negatives; the real previous-header rejection, +actual body/request-ID hashes, native cards, HTTP/SSE, epoch/authority/lifetime +and error/cleanup assertions remain. No product/framework/corpus/deadline change. +Implementation, exact artifact/targeted/full qualification, protected PR351, +ordinary Finalization and new exact-final-main installed/browser/screenshots +and own cleanup remain PENDING. Full16 remains FAILED; installed17 not booked +or started. Closed predecessors and HOB queue remain unchanged. + +## Current r34 document-bound response fixture correction38 — 2026-10-13 + +[Single booking and actual cause](https://github.com/pcvantol/forge/issues/142#issuecomment-6144629429): +same writer/session/branch/history; consumed38, no administrative cap and all +other operational budgets unchanged. Product118 and all193 product bytes remain. + +Current full local cycle16 naturally completed but is FAILED:528 mandatory +first-attempt passes, one flaky normal mobile history case and four baseline +exceptions. A retry does not close that failure. Original raw request evidence +proves the selected index response belongs to the old loader before navigation; +the new loader response arrives after the body error. OwningCI37 browser parts +are green and stay separately labeled. Installed17 was not booked or started. + +The fixture binds both held history-index and snapshot responses to unique full +URL/method/request-clock/frame/new-loader/project identity before actual body +reading. The clock uses the exact pinned Playwright1.63 CDP timing correction; +missing/ambiguous/unsupported-cache metadata stays red without tolerance, body +fallback or response substitution. A genuine previous-document header is rejected +before body reading. Exact request IDs bind subsequent body hashes and HTTP/SSE +proofs; all native card, history, project/epoch, callback and cleanup controls remain. +This is a finite correction to existing observation/read boundaries, not a new +capture framework or product behavior. The533/529+four inventory and deadlines +remain. Independent implementation, targeted/current full qualification and the +complete protected-delivery/Finalization/exact-final-main installedGUI DoD are PENDING. + +## Current r34 fixture correction37 — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6143860024): +same writer, branch and history; consumed37, no administrative cap, other +operational budgets unchanged. This correction changes tests only; EP2.3.118 +and every product byte, native/project/document/epoch guard and deadline remain. + +Current CI exposed an unsupported fresh-log-HTTP prerequisite after an in-place +locale change and a separate asynchronous synthetic-render geometry boundary. +The locale test retains native language selection and all actual INFO200, +ERROR503 and restored-document200 response/body/hash/screen bindings in five +languages. The long-path renderer test binds its exact attention input, computed +visibility, text and all original overflow/height predicates to one browser turn; +an explicit ordinary IDLE refault must make the original nonzero predicate red. +The precise original CI await/overwrite chronology remains UNKNOWN; current +controls do not reconstruct it. All old failures and logs remain retained. + +The actual41 DATA_ROOT_UNSAFE errors and one related CLI failure in installed16 +are independently explained by the missing temporary map and unsafe /tmp alias; +all42 original affected tests pass with a physical canonical map. Browser cycle15 +and two current CI browser parts remain FAILED. Fresh serial contexts bind the +actual child interpreter/import/native/TMP; full qualification is pending until +joint targeted acceptance. The533 inventory/529 mandatory/four baseline cases, +strict coverage, independent reviews, protected PR351, ordinary Finalization, +new exact-final-main installed/browser/screenshots and cleanup remain required. +No prior PASS is transferred, deadline increased or product error suppressed. + +## Current r34 integrated log-read correction36 — 2026-10-13 + +[Single booking and causal admission](https://github.com/pcvantol/forge/issues/142#issuecomment-6138579650) +and [convergence directive](https://github.com/pcvantol/forge/issues/142#issuecomment-6138571335): +same writer/session/branch/history; consumed36, no administrative round cap, +all other operational budgets unchanged. EP2.3.118 is the supported product target. + +Actual installed five-locale diagnosis preserved real healthy200, source-loss503, +and restored200. The healthy response contains known producer events whose missing +strict labels caused a render exception incorrectly caught as read unavailability. +The historical failed request reason remains UNKNOWN, without reconstruction. +The integrated repair adds only the28 owning producer labels and one read-failure +label to all five catalogs and separates read/decode failures from normalization +and rendering. Unknown labels and ordinary rendering failures remain fatal; +stale request, project/document/epoch and native authority controls are unchanged. + +The current collective acceptance covers native five-locale request/response/UI +binding and restoration, strict unknown/render/stale negatives, normal active +state, and stored desktop/mobile history cases. One new mandatory browser case +extends the original532 inventory to533:529 mandatory plus the same four baseline +cases. Existing capture, callback and original-log repairs stay closed and retained. +Current implementation and targeted/full qualification are PENDING; no old PASS +is transferred. Candidate35's actual528 browser PASS and completed owning CI are +preserved but its localization defect prevents product acceptance. Existing valid +local jobs finish naturally. Current owning CI supplies its actual installed-full +and coverage evidence; no redundant manual full repeat is added above mandatory +Mac native/browser and strict changed-file coverage gates. + +Protected follow-up PR351, ordinary Finalization, new exact-definitive-main +installed/browser screenshots and cleanup remain OPEN. Closed349/350 and all +predecessors stay closed; HOB waits. No live EP environment or signing is added. + +## Preserved r34 native-capture correction35 — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137995314): +consumed35, same writer/session/branch/history; no administrative stop cap and all +operational budgets retained. This documentary reconciliation belongs to the same +integrated correction35 before its first full freeze; it is not another booking. +Correction34's focused9 passed but whole Quality identified displaced/clipped +mobile captures. Current original → bounded native input → fresh original refault +reproduces and removes that capture class against unchanged installed product. +DOM heading offsets remain unchanged; an exact GPU/ancestor cause is not claimed. +Original failures and all unedited images remain evidence, without reconstruction. + +Independent Quality/Security admit the test-only helper: no wheel input on a card +without its own overflow; actual own max/current/top bounded wheel and real owned +scrollend before capture. Bottom/top and readable-heading assertions remain; +listener cancellation and handle disposal are both attempted, preserving every +original body/cleanup error. No sleep, timeout relaxation, response substitution, +product/security/native/epoch change or corpus reduction. EP2.3.117 and all532 +contracts/528mandatory/four unchanged baseline cases remain. + +[Actual focused progress](https://github.com/pcvantol/forge/issues/142#issuecomment-6138031628) +is specifically source82313352fac8d3f58da3a9dea5032857851db9c6/tree582a22c4: +focused9 PASS, preflight5 PASS, version15 PASS and fresh readable mobile evidence. +This is provisional pre-full evidence only. The documentary successor needs its +own exact artifact/freeze and complete independent admission; no prior result is +relabeled as a successor/full PASS. Full unchanged qualification, owning CI, +protected follow-up delivery, ordinary Finalization and NEW exact-definitive-main +installed/browser/screenshots/cleanup remain OPEN. Closed349/350 and predecessors +stay closed; HOB continues to wait. No new live EP environment or signing. + + +## Preserved correction34 private-evidence snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137510899): +consumed34, same writer/branch/history and unchanged operational budgets; no +administrative stop cap. Correction33 fd5af08b/treefb0fcc31/wheel435d3984 actually +passed focused9/preflight5/version15 but integrated admission exposed S-C33-LOG-01. +A real fixture/helper/browser capture proves both original callback/body errors +remain in memory while the closed2278byte gzip (SHAa6f649555eb9111d3d5826a23cd40e30082d6b3e51b359dec28a6a25546f7149) +contains only the outer Aggregate message/stack. Inline body attachments are not +durable receipt files. These original missing reason bytes are not reconstructed; +all previous PASS/FAIL/stop evidence remains in its original scope. + +Independent Quality/Security admit only private recursive standard errors/cause +capture with type/primitive/reference-cycle preservation, plus actual disk receipts. +Both assertion timing and completed first-failure boundaries now retain nested +original messages/stacks exclusively in the existing private0600 raw stream. +There is no arbitrary Errorproperty enumeration or public generic error-tree. +Public-safe pathattachments contain only counters/status/hash/declarative unit +booleans. Ordinary serialization/write failures remain fatal. The existing fixture +unit additionally uses a real isolated page, actual closure/gziphash, both original +reasons, nested cause, cycle/reference and primitive controls before durable +safe receipt write/readback. All532 corpuscontracts/528mandatory/fourbaseline cases +stay exact; no new skip/test outcome, deadline, product117, authority/epoch/native +or coverage change. Source33 dynamic own-route drain and semantic native-card +identity remain. One new exact artifact/focused9/whole independent admission must +precede full unchanged qualification/protected follow-up, ordinary Finalization +and NEW exact-definitive-main installed/browser/screenshots/cleanup. +The old890 FULL hosted38330837922 naturally completed SUCCESS; its visual REJECT +remains, and no old result is transferred to the new candidate. + + +## Preserved correction33 fixture snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137269382): +consumed33, same writer/branch/history; no administrative stop cap, all operational +budgets and prior failures retained. Correction32 767ec597/treebe1694/wheel41fbad7b +actually passed eight targeted installed cases and preflight5, but integrated +admission remains pending S-C32-LIFE-01: held async fixture routes were not drained +before removal/cleanup on failure. Real pinned-browser controls prove unroute +returns with pending1, premature live-page removal causes an actual already-handled +rejection, and own drain BEFORE exact route removal reaches pending0 before +pageclose. All three completed actual workers/handlers stop0 with passive effects0; +the first diagnostic's unhandled exit and missing stop receipt remain unchanged. + +Independent Quality/Security admit this test-only repair: observe every original +callback outcome, release and dynamically drain own callbacks, remove only the +registered own route, final-drain and verify before CDP/page cleanup. Original +body/callback/removal errors remain fatal together; late closed-owner invocation +is journaled, not an unhandled process exit. The exact selected SSE request ID and +frame SHA must equal current document's completed observer binding. One mandatory +fixture-unit contract proves dynamic registration, removal after actual settlement, +original deferred error object retention and late-owner failure, explicitly not a +server authority test. Discovery target532/528mandatory preserves all531 previous +contracts and four baseline NOT_RUN cases. Product CSS/semantic identity/package +version2.3.117 and authority/epoch/native/coverage/deadline guards are unchanged. +New exact committed artifact, focused9, independent whole-candidate admission, +full unchanged qualification/protected follow-up/ordinary Finalization and NEW +exact-definitive-main installed/browser/screenshots/cleanup remain required. +No earlier targeted or historical result is transferred to this candidate. +The reporter self-tests still used historical528/524 positive counts after the +admitted corpus expansion. Original standalone4FAIL/3PASS is retained; explicit +current532/528 positive expectations now pass7/7, with baseline4 and all rejection +controls retained plus an explicit old528 incomplete-corpus rejection. Reporter +logic and owning commands are unchanged. An initial broad discovery accidentally +imported Node self-tests and failed JSON collection; that raw output remains. +Exact owning three-file discovery confirms all532 contracts and all531 predecessors, +not a browser execution PASS. + + +## Preserved correction32 product snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137058543): +consumed32, same writer/branch/history and unchanged operational budgets; no +administrative count stop. Correction31 c859e75/treea6fb2cd/wheel18e935ed actually +ended seven PASS and one FAIL/exit1, NOT_ADMITTED, preserved. Q-C31-DETACH-01 is +an actual presentation identity defect: identical real HTTP/SSE stored values have +different object-key order, so the old JSON.stringify signature removes native +cards. Controlled installed original proof retains actual node connected before +HTTP→SSE and disconnected after, a real MutationObserver removal, identical +semantic values and three cards before/after. No lost-focus/scroll claim is made +(scrollTop0); the old failure callback timing is not reconstructed. Independent +Quality/Security admit only canonical object-key comparison with every value, +type, array position, scope, locale, evidence and recovery preserved. + +Correction32 applies that pure ephemeral signature repair and the supported +canonical product bump to EP2.3.117. The owning browser regression binds real +current-document HTTP/body/SSE frame and native card identity across actual +initial SSE transport release; normal active/history-absence, all six stored +history/refault cases and native geometry remain. Detached native-DOM renderer +unit negatives separately test real value/type/array/scope/locale/recovery/null +changes and safe own prototype-named keys; these are not server authority tests. +Real authority/epoch/revocation controls and all sandbox/log fixes remain intact. +One new exact artifact and focused evidence must be admitted before freezing a +complete candidate for full unchanged qualification/protected follow-up, +ordinary Finalization and NEW exact-definitive-main installed/browser/screenshots +and cleanup. All earlier failures, proofs and closed349/350/forebears remain. + + +## Preserved correction31 fixture snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6136905944): +consumed31 without an administrative stop cap; same writer, branch and history. +Correction30 provisional d58ef1a/tree5f97578/wheel7427b059 (EP2.3.116) +actually produced six history PASS and two normal FAIL, actual exit1, NOT_ADMITTED. +Independent Quality/Security admitted the current causal evidence: normal runs +remain active WAIT_FOR_OPERATOR_MERGE, with an actual empty terminal-history index. +Correction31 changes only the test expectation and current documentation: bind +completed HTTP200/current-document/response bytes, assert absent run, native modal +closed and deeplink removed, retain three active cards and native heading/geometry, +and capture normal-active-not-history. All six real history/refault tests remain. +Product CSS, package version2.3.116 and every authority/epoch/native/coverage guard +stay unchanged. Earlier red/failure/log/stop evidence is retained. New exact +artifact, focused qualification, whole independent reviews, full owning CI, +protected follow-up/Finalization and NEW definitive-main installed/browser proof +remain pending. No result is transferred from the old protected890 visual REJECT. + + +The [specialist evidence and recovery dashboard slice](docs/development/DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md) +remains under the same r34 assignment and writer. Protected EP2.3.115 source +PR349 and Finalization350 are closed at main890915ad. New browser execution +passed, but visual acceptance found overlapping history panels: Q-FINAL-VIS-01. +Integrated correction30 is in progress with EP2.3.116 as the canonical product +target. New source delivery and exact definitive-main installed/browser acceptance +remain required in the [current register](https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217). +Viewing stored evidence grants no execution or recovery authority. + +### Historical r34 source-stage receipt through correction29 + The [specialist evidence and recovery dashboard slice](docs/development/DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md) is source-qualified on protected EP **2.3.115** main `624f99f4` after independent whole-candidate Quality/Security and full owning CI. Ordinary NO_BUMP Finalization @@ -7,6 +315,8 @@ and **new exact-final-main** noneditable installed/browser acceptance remain ope in the [r34 register](https://github.com/pcvantol/forge/issues/142#issuecomment-6133903826). Viewing canonical stored evidence grants no execution or recovery authority. +### Closed predecessor receipts + The [bounded specialist selection and disposition subset](docs/development/SPECIALIST_SELECTION_DISPOSITION_V1_DELIVERY.md) remains closed at its immutable [r33 final receipt](https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007). R34 neither reopens that predecessor nor qualifies the broader specialist family. diff --git a/docs/development/DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md b/docs/development/DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md index 0b32872c..71edda84 100644 --- a/docs/development/DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md +++ b/docs/development/DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md @@ -1,20 +1,359 @@ # Dashboard specialists and recovery V1 delivery +## Current r34 Console audit localization correction40 — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6145876955): +same writer/session/branch/history; consumed40, no administrative cap, all other +operational budgets unchanged. Supported canonical PATCH119 for this product fix. + +Source39 complete browser execution naturally passed529 first attempts plus four +baseline exceptions; three exact JS assets exceeded80.2. Independent Quality AND +Security reject complete acceptance: five genuine healthy200 logresponses with +seven stored Console-audit rows cause missing dashboard_action_completed labels. +The actual conditional producer also emits dashboard_action_failed, absent from +all five catalogs. Failed browser behavior was not historically observed; current +strict-translator controls confirm both missing keys in all five languages. +All original bodies/errors/raw/screens stay intact. Valid installed17 continues +naturally on its unchanged frozen source39/runtime, without cancellation or +future PASS transfer. No complete source39/runtime-zero-error PASS is claimed. + +The finite two-event class now has five-language Console-action labels, explicitly +not execution-success labels. The owning source-only audit resolves the exact +conditional Server producer and direct CENTRAL cancellation log alongside the +original28 lifecycle events; strict unknown keys still fail. One existing browser +case retains its synthetic telemetry renderer scope, while native activation +uses the actual Console audit producer, real stored/log HTTP reads and screen +labels. An explicit malformed configuration request produces a real failed +audit409 before settings writes; complete configuration reread must stay equal. +Both real outcomes, current document/request/seven-phase/body hashes, five-language +screens and all ordinary errors remain checked. One known audit endpoint extends +the existing private observer; no generic capture framework/new corpus/deadline. +All native, authority/epoch/noncreating/history/lifetime/error guards remain. + +Implementation/artifact/joint targeted/full/strict coverage/current CI and final +independent acceptance remain PENDING. Then normal protected PR351, ordinary +Finalization, NEW exact-final-main installed/browser/screenshots and own cleanup. +Closed predecessors remain closed; HOB waits until the complete original DoD. + +## Current r34 exact relative-header fixture correction39 — 2026-10-13 + +[ACK, admission and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6145247732): +same writer/session/branch/history; consumed39, no administrative cap, other +operational budgets unchanged. EP2.3.118 and all193 production bytes remain. + +Source38 compact targeted11 naturally FAILED1: nine passes and two normal +desktop/mobile failures at the previous-header absolute-clock join. Preflight5, +logic56, five-locale contract, reporter7 and exact owning533 discovery passed +on that head only. Original failures/raw/screens remain; no PASS transfer. +The bounded real installed diagnosis naturally ended0 with actual worker stop: +five public absolute request clocks differ from the independent CDP-derived +clocks, while seven header-ready relative phase fields uniquely/exactly agree. +The hidden clock mapping remains inferred; original missing public-clock +values are not reconstructed. Two private diagnostic setup failures stay failed. + +Both existing independent reviewers admit the finite repair design. The fixture +uses unique exact fullURL/method/status/frame/seven-relative-phase identity, +then requires currentloader/project before each actual index/snapshot bodyread. +Absolute start is finite diagnostic context only, without tolerance or fallback. +Zero remains pending, ambiguity red, and an unknown predecessor cannot be +replaced by a later good response. In-case modeled collision/missing/type/cache +controls are distinctly helper negatives; the real previous-header rejection, +actual body/request-ID hashes, native cards, HTTP/SSE, epoch/authority/lifetime +and error/cleanup assertions remain. No product/framework/corpus/deadline change. +Implementation, exact artifact/targeted/full qualification, protected PR351, +ordinary Finalization and new exact-final-main installed/browser/screenshots +and own cleanup remain PENDING. Full16 remains FAILED; installed17 not booked +or started. Closed predecessors and HOB queue remain unchanged. + +## Current r34 document-bound response fixture correction38 — 2026-10-13 + +[Single booking and actual cause](https://github.com/pcvantol/forge/issues/142#issuecomment-6144629429): +same writer/session/branch/history; consumed38, no administrative cap and all +other operational budgets unchanged. Product118 and all193 product bytes remain. + +Current full local cycle16 naturally completed but is FAILED:528 mandatory +first-attempt passes, one flaky normal mobile history case and four baseline +exceptions. A retry does not close that failure. Original raw request evidence +proves the selected index response belongs to the old loader before navigation; +the new loader response arrives after the body error. OwningCI37 browser parts +are green and stay separately labeled. Installed17 was not booked or started. + +The fixture binds both held history-index and snapshot responses to unique full +URL/method/request-clock/frame/new-loader/project identity before actual body +reading. The clock uses the exact pinned Playwright1.63 CDP timing correction; +missing/ambiguous/unsupported-cache metadata stays red without tolerance, body +fallback or response substitution. A genuine previous-document header is rejected +before body reading. Exact request IDs bind subsequent body hashes and HTTP/SSE +proofs; all native card, history, project/epoch, callback and cleanup controls remain. +This is a finite correction to existing observation/read boundaries, not a new +capture framework or product behavior. The533/529+four inventory and deadlines +remain. Independent implementation, targeted/current full qualification and the +complete protected-delivery/Finalization/exact-final-main installedGUI DoD are PENDING. + +## Current r34 fixture correction37 — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6143860024): +same writer, branch and history; consumed37, no administrative cap, other +operational budgets unchanged. This correction changes tests only; EP2.3.118 +and every product byte, native/project/document/epoch guard and deadline remain. + +Current CI exposed an unsupported fresh-log-HTTP prerequisite after an in-place +locale change and a separate asynchronous synthetic-render geometry boundary. +The locale test retains native language selection and all actual INFO200, +ERROR503 and restored-document200 response/body/hash/screen bindings in five +languages. The long-path renderer test binds its exact attention input, computed +visibility, text and all original overflow/height predicates to one browser turn; +an explicit ordinary IDLE refault must make the original nonzero predicate red. +The precise original CI await/overwrite chronology remains UNKNOWN; current +controls do not reconstruct it. All old failures and logs remain retained. + +The actual41 DATA_ROOT_UNSAFE errors and one related CLI failure in installed16 +are independently explained by the missing temporary map and unsafe /tmp alias; +all42 original affected tests pass with a physical canonical map. Browser cycle15 +and two current CI browser parts remain FAILED. Fresh serial contexts bind the +actual child interpreter/import/native/TMP; full qualification is pending until +joint targeted acceptance. The533 inventory/529 mandatory/four baseline cases, +strict coverage, independent reviews, protected PR351, ordinary Finalization, +new exact-final-main installed/browser/screenshots and cleanup remain required. +No prior PASS is transferred, deadline increased or product error suppressed. + +## Current r34 integrated log-read correction36 — 2026-10-13 + +[Single booking and causal admission](https://github.com/pcvantol/forge/issues/142#issuecomment-6138579650) +and [convergence directive](https://github.com/pcvantol/forge/issues/142#issuecomment-6138571335): +same writer/session/branch/history; consumed36, no administrative round cap, +all other operational budgets unchanged. EP2.3.118 is the supported product target. + +Actual installed five-locale diagnosis preserved real healthy200, source-loss503, +and restored200. The healthy response contains known producer events whose missing +strict labels caused a render exception incorrectly caught as read unavailability. +The historical failed request reason remains UNKNOWN, without reconstruction. +The integrated repair adds only the28 owning producer labels and one read-failure +label to all five catalogs and separates read/decode failures from normalization +and rendering. Unknown labels and ordinary rendering failures remain fatal; +stale request, project/document/epoch and native authority controls are unchanged. + +The current collective acceptance covers native five-locale request/response/UI +binding and restoration, strict unknown/render/stale negatives, normal active +state, and stored desktop/mobile history cases. One new mandatory browser case +extends the original532 inventory to533:529 mandatory plus the same four baseline +cases. Existing capture, callback and original-log repairs stay closed and retained. +Current implementation and targeted/full qualification are PENDING; no old PASS +is transferred. Candidate35's actual528 browser PASS and completed owning CI are +preserved but its localization defect prevents product acceptance. Existing valid +local jobs finish naturally. Current owning CI supplies its actual installed-full +and coverage evidence; no redundant manual full repeat is added above mandatory +Mac native/browser and strict changed-file coverage gates. + +Protected follow-up PR351, ordinary Finalization, new exact-definitive-main +installed/browser screenshots and cleanup remain OPEN. Closed349/350 and all +predecessors stay closed; HOB waits. No live EP environment or signing is added. + +## Preserved r34 native-capture correction35 — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137995314): +consumed35, same writer/session/branch/history; no administrative stop cap and all +operational budgets retained. This documentary reconciliation belongs to the same +integrated correction35 before its first full freeze; it is not another booking. +Correction34's focused9 passed but whole Quality identified displaced/clipped +mobile captures. Current original → bounded native input → fresh original refault +reproduces and removes that capture class against unchanged installed product. +DOM heading offsets remain unchanged; an exact GPU/ancestor cause is not claimed. +Original failures and all unedited images remain evidence, without reconstruction. + +Independent Quality/Security admit the test-only helper: no wheel input on a card +without its own overflow; actual own max/current/top bounded wheel and real owned +scrollend before capture. Bottom/top and readable-heading assertions remain; +listener cancellation and handle disposal are both attempted, preserving every +original body/cleanup error. No sleep, timeout relaxation, response substitution, +product/security/native/epoch change or corpus reduction. EP2.3.117 and all532 +contracts/528mandatory/four unchanged baseline cases remain. + +[Actual focused progress](https://github.com/pcvantol/forge/issues/142#issuecomment-6138031628) +is specifically source82313352fac8d3f58da3a9dea5032857851db9c6/tree582a22c4: +focused9 PASS, preflight5 PASS, version15 PASS and fresh readable mobile evidence. +This is provisional pre-full evidence only. The documentary successor needs its +own exact artifact/freeze and complete independent admission; no prior result is +relabeled as a successor/full PASS. Full unchanged qualification, owning CI, +protected follow-up delivery, ordinary Finalization and NEW exact-definitive-main +installed/browser/screenshots/cleanup remain OPEN. Closed349/350 and predecessors +stay closed; HOB continues to wait. No new live EP environment or signing. + + +## Preserved correction34 private-evidence snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137510899): +consumed34, same writer/branch/history and unchanged operational budgets; no +administrative stop cap. Correction33 fd5af08b/treefb0fcc31/wheel435d3984 actually +passed focused9/preflight5/version15 but integrated admission exposed S-C33-LOG-01. +A real fixture/helper/browser capture proves both original callback/body errors +remain in memory while the closed2278byte gzip (SHAa6f649555eb9111d3d5826a23cd40e30082d6b3e51b359dec28a6a25546f7149) +contains only the outer Aggregate message/stack. Inline body attachments are not +durable receipt files. These original missing reason bytes are not reconstructed; +all previous PASS/FAIL/stop evidence remains in its original scope. + +Independent Quality/Security admit only private recursive standard errors/cause +capture with type/primitive/reference-cycle preservation, plus actual disk receipts. +Both assertion timing and completed first-failure boundaries now retain nested +original messages/stacks exclusively in the existing private0600 raw stream. +There is no arbitrary Errorproperty enumeration or public generic error-tree. +Public-safe pathattachments contain only counters/status/hash/declarative unit +booleans. Ordinary serialization/write failures remain fatal. The existing fixture +unit additionally uses a real isolated page, actual closure/gziphash, both original +reasons, nested cause, cycle/reference and primitive controls before durable +safe receipt write/readback. All532 corpuscontracts/528mandatory/fourbaseline cases +stay exact; no new skip/test outcome, deadline, product117, authority/epoch/native +or coverage change. Source33 dynamic own-route drain and semantic native-card +identity remain. One new exact artifact/focused9/whole independent admission must +precede full unchanged qualification/protected follow-up, ordinary Finalization +and NEW exact-definitive-main installed/browser/screenshots/cleanup. +The old890 FULL hosted38330837922 naturally completed SUCCESS; its visual REJECT +remains, and no old result is transferred to the new candidate. + + +## Preserved correction33 fixture snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137269382): +consumed33, same writer/branch/history; no administrative stop cap, all operational +budgets and prior failures retained. Correction32 767ec597/treebe1694/wheel41fbad7b +actually passed eight targeted installed cases and preflight5, but integrated +admission remains pending S-C32-LIFE-01: held async fixture routes were not drained +before removal/cleanup on failure. Real pinned-browser controls prove unroute +returns with pending1, premature live-page removal causes an actual already-handled +rejection, and own drain BEFORE exact route removal reaches pending0 before +pageclose. All three completed actual workers/handlers stop0 with passive effects0; +the first diagnostic's unhandled exit and missing stop receipt remain unchanged. + +Independent Quality/Security admit this test-only repair: observe every original +callback outcome, release and dynamically drain own callbacks, remove only the +registered own route, final-drain and verify before CDP/page cleanup. Original +body/callback/removal errors remain fatal together; late closed-owner invocation +is journaled, not an unhandled process exit. The exact selected SSE request ID and +frame SHA must equal current document's completed observer binding. One mandatory +fixture-unit contract proves dynamic registration, removal after actual settlement, +original deferred error object retention and late-owner failure, explicitly not a +server authority test. Discovery target532/528mandatory preserves all531 previous +contracts and four baseline NOT_RUN cases. Product CSS/semantic identity/package +version2.3.117 and authority/epoch/native/coverage/deadline guards are unchanged. +New exact committed artifact, focused9, independent whole-candidate admission, +full unchanged qualification/protected follow-up/ordinary Finalization and NEW +exact-definitive-main installed/browser/screenshots/cleanup remain required. +No earlier targeted or historical result is transferred to this candidate. +The reporter self-tests still used historical528/524 positive counts after the +admitted corpus expansion. Original standalone4FAIL/3PASS is retained; explicit +current532/528 positive expectations now pass7/7, with baseline4 and all rejection +controls retained plus an explicit old528 incomplete-corpus rejection. Reporter +logic and owning commands are unchanged. An initial broad discovery accidentally +imported Node self-tests and failed JSON collection; that raw output remains. +Exact owning three-file discovery confirms all532 contracts and all531 predecessors, +not a browser execution PASS. + + +## Preserved correction32 product snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137058543): +consumed32, same writer/branch/history and unchanged operational budgets; no +administrative count stop. Correction31 c859e75/treea6fb2cd/wheel18e935ed actually +ended seven PASS and one FAIL/exit1, NOT_ADMITTED, preserved. Q-C31-DETACH-01 is +an actual presentation identity defect: identical real HTTP/SSE stored values have +different object-key order, so the old JSON.stringify signature removes native +cards. Controlled installed original proof retains actual node connected before +HTTP→SSE and disconnected after, a real MutationObserver removal, identical +semantic values and three cards before/after. No lost-focus/scroll claim is made +(scrollTop0); the old failure callback timing is not reconstructed. Independent +Quality/Security admit only canonical object-key comparison with every value, +type, array position, scope, locale, evidence and recovery preserved. + +Correction32 applies that pure ephemeral signature repair and the supported +canonical product bump to EP2.3.117. The owning browser regression binds real +current-document HTTP/body/SSE frame and native card identity across actual +initial SSE transport release; normal active/history-absence, all six stored +history/refault cases and native geometry remain. Detached native-DOM renderer +unit negatives separately test real value/type/array/scope/locale/recovery/null +changes and safe own prototype-named keys; these are not server authority tests. +Real authority/epoch/revocation controls and all sandbox/log fixes remain intact. +One new exact artifact and focused evidence must be admitted before freezing a +complete candidate for full unchanged qualification/protected follow-up, +ordinary Finalization and NEW exact-definitive-main installed/browser/screenshots +and cleanup. All earlier failures, proofs and closed349/350/forebears remain. + + +## Preserved correction31 fixture snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6136905944): +consumed31 without an administrative stop cap; same writer, branch and history. +Correction30 provisional d58ef1a/tree5f97578/wheel7427b059 (EP2.3.116) +actually produced six history PASS and two normal FAIL, actual exit1, NOT_ADMITTED. +Independent Quality/Security admitted the current causal evidence: normal runs +remain active WAIT_FOR_OPERATOR_MERGE, with an actual empty terminal-history index. +Correction31 changes only the test expectation and current documentation: bind +completed HTTP200/current-document/response bytes, assert absent run, native modal +closed and deeplink removed, retain three active cards and native heading/geometry, +and capture normal-active-not-history. All six real history/refault tests remain. +Product CSS, package version2.3.116 and every authority/epoch/native/coverage guard +stay unchanged. Earlier red/failure/log/stop evidence is retained. New exact +artifact, focused qualification, whole independent reviews, full owning CI, +protected follow-up/Finalization and NEW definitive-main installed/browser proof +remain pending. No result is transferred from the old protected890 visual REJECT. + + Assignment: `L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008`. Directive: `L2-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008`. Admission: [6092567221](https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221), under the full [6058358032 mandate](https://github.com/pcvantol/forge/issues/142#issuecomment-6058358032). Lane **r34**, plan **7**, same **ARCHITECT_2 / LANE_2_WORK** and Work session. Sole source branch: `codex/ep-dashboard-specialists-recovery-v1`. -Actual base: `05e530d6339cb1c16b1e8f4814347578c5fd761c`, EP **2.3.114**. -State: **SOURCE_QUALIFIED / FINALIZATION_AND_NEW_FINAL_MAIN_INSTALLED_PENDING**. EP **2.3.115** is source-delivered by protected PR349; this documentary Finalization is **NO_BUMP**, with all 11 version components unchanged. -Current correction consumption: **29** (28 through implementation plus one integrated documentary Finalization correction); administrative round maximum **NOT_APPLICABLE_SCOPED_COMPLETION** under [6123356344](https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344). All historical14 rounds and later consumption remain recorded; operational deadlines, authority, coverage and protected delivery gates remain unchanged. The former consumed9/max9/remaining0 snapshot belongs to the historical pre-completion phase. +Original source base: `05e530d6339cb1c16b1e8f4814347578c5fd761c`, EP **2.3.114**, retained. Current protected repair base: `890915ad77cec21b39f4d3c60cdc3e263c2c8de7`, EP **2.3.115**. +State: **CORRECTION34_PRIVATE_EVIDENCE_IMPLEMENTED_QUALIFICATION_PENDING / EP2.3.117_PRODUCT_TARGET**. Protected EP2.3.115 source PR349 and Finalization350 are closed; exact890915ad visual acceptance was rejected and does not close r34. +Current correction consumption: **34** (28 through implementation, one documentary correction29 and one integrated visual correction30 and one test-only fixture correction31 and one native-identity product correction32 and one fixture-lifetime correction33 and one private-evidence correction34); administrative round maximum **NOT_APPLICABLE_SCOPED_COMPLETION** under [6123356344](https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344). All historical14 rounds and later consumption remain recorded; operational deadlines, authority, coverage and protected delivery gates remain unchanged. The former consumed9/max9/remaining0 snapshot belongs to the historical pre-completion phase. R33, r43, r44 and GP stay closed. R33 completion is the immutable [6091674007 receipt](https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007), implementation PR346 and NO_BUMP Finalization PR348. Historical source delivery notes, branches, reports, stashes and foreign holds are retained. This serial Console follow-up does not reopen specialist execution or qualify the broader SA-Q/ROLE/PAR family. -## Actual protected implementation and ordinary Finalization — 2026-10-13 +## Preserved correction30 implementation snapshot — 2026-10-13 + +Same assignment, r34/plan7, ARCHITECT_2 / LANE_2_WORK, original source branch and +history. [Correction30 admission and booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217) +records consumed30 exactly once; the original14 and every later round remain +consumed, with no administrative count stop under decision6123356344 and unchanged +operational/security budgets. PR349 and ordinary Finalization350 remain closed. +Their protected EP2.3.115 main is `890915ad77cec21b39f4d3c60cdc3e263c2c8de7`; +the source-continuity merge `022eba78f95c8e8ad5b60cf2e9f979276c018477` retains +both1265280 and890915ad parents, with exact protected tree5bdad176. Three documentary +merge conflicts and both original sides were retained; no source history reset. + +New exact890915ad browser12 executed524 mandatory first-attempt PASS plus4 unchanged +baseline NOT_RUN, with205 fresh PNGs and closed worker/page/guard evidence. That +execution result does **not** close visual acceptance: independent Quality found +**Q-FINAL-VIS-01 / REJECT**, unreadable overlapping stored-history panels in genuine +uncertain-result, missing and failed cases. These original screenshots remain +unchanged; they have not been published as a defect-free delivery. The actual +original32-second delay and unavailable historical evidence remain separate. + +Actual installed causal diagnosis proves original implicit grid rows38px despite +417.59/218/417.59px cards, producing negative361.59/162px spacing. A temporary, +page-only intrinsic-row intervention gives18px spacing; removal reproduces the +original overlap. Normal active cards remain10px apart. Independent causal Q/S +admit only the narrow history-content grid repair. All four actual diagnostic +workers stopped with guards and passive model/Git effects zero. The first hidden +select diagnostic setup failure is retained, not qualified or reconstructed. + +Current **PRODUCT correction30 / EP2.3.116 candidate, qualification pending** adds intrinsic rows to the +owning history grid, actual pre-capture geometry and original/refault detection, +native scroll/heading checks and three mandatory iPhone history cases. Six +original installed desktop/iPhone cases first failed the real overlap assertion +before the product repair. All528 former canonical contracts and their4 baseline +skips remain exact; discovery-only now lists531 cases/527 mandatory, not a test +PASS. Source canonical version11components is checked; the new committed package, +focused positive regressions, complete independent reviews, unchanged full CI, +protected follow-up delivery, ordinary Finalization and NEW truly definitive +main installed/browser/screenshots/readback/cleanup remain pending. R33/r43/r44/GP +remain closed; HOB-EP01 waits. No execution, live-provider, adoption or signing +authority is added. Prior delivery paragraphs below are historical identities, +not approval or installed PASS for the new candidate. + +## Historical protected implementation and Finalization through correction29 — 2026-10-13 Same r34 / plan7 / ARCHITECT_2 / LANE_2_WORK, consumed29 with administrative maximum NOT_APPLICABLE_SCOPED_COMPLETION. Source branch/history remain retained. @@ -88,7 +427,7 @@ in the owning #142 receipt after they exist. No premature r34DONE or HOB start; R33/r43/r44/GP remain closed, full SA-Q/ROLE/PAR/live providers/physical iPhone/ production installation/public release/signing and adoption controls unqualified. -## Documentary Finalization correction29 disposition +## Historical documentary Finalization correction29 disposition Fresh complete Quality rejected documentary3c5bb4c solely for Q-FIN-01/02: the old r33 roadmap source stage and old delivery convergence/telemetry sections diff --git a/docs/development/ENGINEERING_PLATFORM_ROADMAP.md b/docs/development/ENGINEERING_PLATFORM_ROADMAP.md index 0fd0aa1f..5366fd4d 100644 --- a/docs/development/ENGINEERING_PLATFORM_ROADMAP.md +++ b/docs/development/ENGINEERING_PLATFORM_ROADMAP.md @@ -1,6 +1,345 @@ # Engineering Platform Roadmap -## Stored specialist evidence and recovery dashboard — L2 r34, 2026-10-13 +## Current r34 Console audit localization correction40 — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6145876955): +same writer/session/branch/history; consumed40, no administrative cap, all other +operational budgets unchanged. Supported canonical PATCH119 for this product fix. + +Source39 complete browser execution naturally passed529 first attempts plus four +baseline exceptions; three exact JS assets exceeded80.2. Independent Quality AND +Security reject complete acceptance: five genuine healthy200 logresponses with +seven stored Console-audit rows cause missing dashboard_action_completed labels. +The actual conditional producer also emits dashboard_action_failed, absent from +all five catalogs. Failed browser behavior was not historically observed; current +strict-translator controls confirm both missing keys in all five languages. +All original bodies/errors/raw/screens stay intact. Valid installed17 continues +naturally on its unchanged frozen source39/runtime, without cancellation or +future PASS transfer. No complete source39/runtime-zero-error PASS is claimed. + +The finite two-event class now has five-language Console-action labels, explicitly +not execution-success labels. The owning source-only audit resolves the exact +conditional Server producer and direct CENTRAL cancellation log alongside the +original28 lifecycle events; strict unknown keys still fail. One existing browser +case retains its synthetic telemetry renderer scope, while native activation +uses the actual Console audit producer, real stored/log HTTP reads and screen +labels. An explicit malformed configuration request produces a real failed +audit409 before settings writes; complete configuration reread must stay equal. +Both real outcomes, current document/request/seven-phase/body hashes, five-language +screens and all ordinary errors remain checked. One known audit endpoint extends +the existing private observer; no generic capture framework/new corpus/deadline. +All native, authority/epoch/noncreating/history/lifetime/error guards remain. + +Implementation/artifact/joint targeted/full/strict coverage/current CI and final +independent acceptance remain PENDING. Then normal protected PR351, ordinary +Finalization, NEW exact-final-main installed/browser/screenshots and own cleanup. +Closed predecessors remain closed; HOB waits until the complete original DoD. + +## Current r34 exact relative-header fixture correction39 — 2026-10-13 + +[ACK, admission and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6145247732): +same writer/session/branch/history; consumed39, no administrative cap, other +operational budgets unchanged. EP2.3.118 and all193 production bytes remain. + +Source38 compact targeted11 naturally FAILED1: nine passes and two normal +desktop/mobile failures at the previous-header absolute-clock join. Preflight5, +logic56, five-locale contract, reporter7 and exact owning533 discovery passed +on that head only. Original failures/raw/screens remain; no PASS transfer. +The bounded real installed diagnosis naturally ended0 with actual worker stop: +five public absolute request clocks differ from the independent CDP-derived +clocks, while seven header-ready relative phase fields uniquely/exactly agree. +The hidden clock mapping remains inferred; original missing public-clock +values are not reconstructed. Two private diagnostic setup failures stay failed. + +Both existing independent reviewers admit the finite repair design. The fixture +uses unique exact fullURL/method/status/frame/seven-relative-phase identity, +then requires currentloader/project before each actual index/snapshot bodyread. +Absolute start is finite diagnostic context only, without tolerance or fallback. +Zero remains pending, ambiguity red, and an unknown predecessor cannot be +replaced by a later good response. In-case modeled collision/missing/type/cache +controls are distinctly helper negatives; the real previous-header rejection, +actual body/request-ID hashes, native cards, HTTP/SSE, epoch/authority/lifetime +and error/cleanup assertions remain. No product/framework/corpus/deadline change. +Implementation, exact artifact/targeted/full qualification, protected PR351, +ordinary Finalization and new exact-final-main installed/browser/screenshots +and own cleanup remain PENDING. Full16 remains FAILED; installed17 not booked +or started. Closed predecessors and HOB queue remain unchanged. + +## Current r34 document-bound response fixture correction38 — 2026-10-13 + +[Single booking and actual cause](https://github.com/pcvantol/forge/issues/142#issuecomment-6144629429): +same writer/session/branch/history; consumed38, no administrative cap and all +other operational budgets unchanged. Product118 and all193 product bytes remain. + +Current full local cycle16 naturally completed but is FAILED:528 mandatory +first-attempt passes, one flaky normal mobile history case and four baseline +exceptions. A retry does not close that failure. Original raw request evidence +proves the selected index response belongs to the old loader before navigation; +the new loader response arrives after the body error. OwningCI37 browser parts +are green and stay separately labeled. Installed17 was not booked or started. + +The fixture binds both held history-index and snapshot responses to unique full +URL/method/request-clock/frame/new-loader/project identity before actual body +reading. The clock uses the exact pinned Playwright1.63 CDP timing correction; +missing/ambiguous/unsupported-cache metadata stays red without tolerance, body +fallback or response substitution. A genuine previous-document header is rejected +before body reading. Exact request IDs bind subsequent body hashes and HTTP/SSE +proofs; all native card, history, project/epoch, callback and cleanup controls remain. +This is a finite correction to existing observation/read boundaries, not a new +capture framework or product behavior. The533/529+four inventory and deadlines +remain. Independent implementation, targeted/current full qualification and the +complete protected-delivery/Finalization/exact-final-main installedGUI DoD are PENDING. + +## Current r34 fixture correction37 — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6143860024): +same writer, branch and history; consumed37, no administrative cap, other +operational budgets unchanged. This correction changes tests only; EP2.3.118 +and every product byte, native/project/document/epoch guard and deadline remain. + +Current CI exposed an unsupported fresh-log-HTTP prerequisite after an in-place +locale change and a separate asynchronous synthetic-render geometry boundary. +The locale test retains native language selection and all actual INFO200, +ERROR503 and restored-document200 response/body/hash/screen bindings in five +languages. The long-path renderer test binds its exact attention input, computed +visibility, text and all original overflow/height predicates to one browser turn; +an explicit ordinary IDLE refault must make the original nonzero predicate red. +The precise original CI await/overwrite chronology remains UNKNOWN; current +controls do not reconstruct it. All old failures and logs remain retained. + +The actual41 DATA_ROOT_UNSAFE errors and one related CLI failure in installed16 +are independently explained by the missing temporary map and unsafe /tmp alias; +all42 original affected tests pass with a physical canonical map. Browser cycle15 +and two current CI browser parts remain FAILED. Fresh serial contexts bind the +actual child interpreter/import/native/TMP; full qualification is pending until +joint targeted acceptance. The533 inventory/529 mandatory/four baseline cases, +strict coverage, independent reviews, protected PR351, ordinary Finalization, +new exact-final-main installed/browser/screenshots and cleanup remain required. +No prior PASS is transferred, deadline increased or product error suppressed. + +## Current r34 integrated log-read correction36 — 2026-10-13 + +[Single booking and causal admission](https://github.com/pcvantol/forge/issues/142#issuecomment-6138579650) +and [convergence directive](https://github.com/pcvantol/forge/issues/142#issuecomment-6138571335): +same writer/session/branch/history; consumed36, no administrative round cap, +all other operational budgets unchanged. EP2.3.118 is the supported product target. + +Actual installed five-locale diagnosis preserved real healthy200, source-loss503, +and restored200. The healthy response contains known producer events whose missing +strict labels caused a render exception incorrectly caught as read unavailability. +The historical failed request reason remains UNKNOWN, without reconstruction. +The integrated repair adds only the28 owning producer labels and one read-failure +label to all five catalogs and separates read/decode failures from normalization +and rendering. Unknown labels and ordinary rendering failures remain fatal; +stale request, project/document/epoch and native authority controls are unchanged. + +The current collective acceptance covers native five-locale request/response/UI +binding and restoration, strict unknown/render/stale negatives, normal active +state, and stored desktop/mobile history cases. One new mandatory browser case +extends the original532 inventory to533:529 mandatory plus the same four baseline +cases. Existing capture, callback and original-log repairs stay closed and retained. +Current implementation and targeted/full qualification are PENDING; no old PASS +is transferred. Candidate35's actual528 browser PASS and completed owning CI are +preserved but its localization defect prevents product acceptance. Existing valid +local jobs finish naturally. Current owning CI supplies its actual installed-full +and coverage evidence; no redundant manual full repeat is added above mandatory +Mac native/browser and strict changed-file coverage gates. + +Protected follow-up PR351, ordinary Finalization, new exact-definitive-main +installed/browser screenshots and cleanup remain OPEN. Closed349/350 and all +predecessors stay closed; HOB waits. No live EP environment or signing is added. + +## Preserved r34 native-capture correction35 — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137995314): +consumed35, same writer/session/branch/history; no administrative stop cap and all +operational budgets retained. This documentary reconciliation belongs to the same +integrated correction35 before its first full freeze; it is not another booking. +Correction34's focused9 passed but whole Quality identified displaced/clipped +mobile captures. Current original → bounded native input → fresh original refault +reproduces and removes that capture class against unchanged installed product. +DOM heading offsets remain unchanged; an exact GPU/ancestor cause is not claimed. +Original failures and all unedited images remain evidence, without reconstruction. + +Independent Quality/Security admit the test-only helper: no wheel input on a card +without its own overflow; actual own max/current/top bounded wheel and real owned +scrollend before capture. Bottom/top and readable-heading assertions remain; +listener cancellation and handle disposal are both attempted, preserving every +original body/cleanup error. No sleep, timeout relaxation, response substitution, +product/security/native/epoch change or corpus reduction. EP2.3.117 and all532 +contracts/528mandatory/four unchanged baseline cases remain. + +[Actual focused progress](https://github.com/pcvantol/forge/issues/142#issuecomment-6138031628) +is specifically source82313352fac8d3f58da3a9dea5032857851db9c6/tree582a22c4: +focused9 PASS, preflight5 PASS, version15 PASS and fresh readable mobile evidence. +This is provisional pre-full evidence only. The documentary successor needs its +own exact artifact/freeze and complete independent admission; no prior result is +relabeled as a successor/full PASS. Full unchanged qualification, owning CI, +protected follow-up delivery, ordinary Finalization and NEW exact-definitive-main +installed/browser/screenshots/cleanup remain OPEN. Closed349/350 and predecessors +stay closed; HOB continues to wait. No new live EP environment or signing. + + +## Preserved correction34 private-evidence snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137510899): +consumed34, same writer/branch/history and unchanged operational budgets; no +administrative stop cap. Correction33 fd5af08b/treefb0fcc31/wheel435d3984 actually +passed focused9/preflight5/version15 but integrated admission exposed S-C33-LOG-01. +A real fixture/helper/browser capture proves both original callback/body errors +remain in memory while the closed2278byte gzip (SHAa6f649555eb9111d3d5826a23cd40e30082d6b3e51b359dec28a6a25546f7149) +contains only the outer Aggregate message/stack. Inline body attachments are not +durable receipt files. These original missing reason bytes are not reconstructed; +all previous PASS/FAIL/stop evidence remains in its original scope. + +Independent Quality/Security admit only private recursive standard errors/cause +capture with type/primitive/reference-cycle preservation, plus actual disk receipts. +Both assertion timing and completed first-failure boundaries now retain nested +original messages/stacks exclusively in the existing private0600 raw stream. +There is no arbitrary Errorproperty enumeration or public generic error-tree. +Public-safe pathattachments contain only counters/status/hash/declarative unit +booleans. Ordinary serialization/write failures remain fatal. The existing fixture +unit additionally uses a real isolated page, actual closure/gziphash, both original +reasons, nested cause, cycle/reference and primitive controls before durable +safe receipt write/readback. All532 corpuscontracts/528mandatory/fourbaseline cases +stay exact; no new skip/test outcome, deadline, product117, authority/epoch/native +or coverage change. Source33 dynamic own-route drain and semantic native-card +identity remain. One new exact artifact/focused9/whole independent admission must +precede full unchanged qualification/protected follow-up, ordinary Finalization +and NEW exact-definitive-main installed/browser/screenshots/cleanup. +The old890 FULL hosted38330837922 naturally completed SUCCESS; its visual REJECT +remains, and no old result is transferred to the new candidate. + + +## Preserved correction33 fixture snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137269382): +consumed33, same writer/branch/history; no administrative stop cap, all operational +budgets and prior failures retained. Correction32 767ec597/treebe1694/wheel41fbad7b +actually passed eight targeted installed cases and preflight5, but integrated +admission remains pending S-C32-LIFE-01: held async fixture routes were not drained +before removal/cleanup on failure. Real pinned-browser controls prove unroute +returns with pending1, premature live-page removal causes an actual already-handled +rejection, and own drain BEFORE exact route removal reaches pending0 before +pageclose. All three completed actual workers/handlers stop0 with passive effects0; +the first diagnostic's unhandled exit and missing stop receipt remain unchanged. + +Independent Quality/Security admit this test-only repair: observe every original +callback outcome, release and dynamically drain own callbacks, remove only the +registered own route, final-drain and verify before CDP/page cleanup. Original +body/callback/removal errors remain fatal together; late closed-owner invocation +is journaled, not an unhandled process exit. The exact selected SSE request ID and +frame SHA must equal current document's completed observer binding. One mandatory +fixture-unit contract proves dynamic registration, removal after actual settlement, +original deferred error object retention and late-owner failure, explicitly not a +server authority test. Discovery target532/528mandatory preserves all531 previous +contracts and four baseline NOT_RUN cases. Product CSS/semantic identity/package +version2.3.117 and authority/epoch/native/coverage/deadline guards are unchanged. +New exact committed artifact, focused9, independent whole-candidate admission, +full unchanged qualification/protected follow-up/ordinary Finalization and NEW +exact-definitive-main installed/browser/screenshots/cleanup remain required. +No earlier targeted or historical result is transferred to this candidate. +The reporter self-tests still used historical528/524 positive counts after the +admitted corpus expansion. Original standalone4FAIL/3PASS is retained; explicit +current532/528 positive expectations now pass7/7, with baseline4 and all rejection +controls retained plus an explicit old528 incomplete-corpus rejection. Reporter +logic and owning commands are unchanged. An initial broad discovery accidentally +imported Node self-tests and failed JSON collection; that raw output remains. +Exact owning three-file discovery confirms all532 contracts and all531 predecessors, +not a browser execution PASS. + + +## Preserved correction32 product snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137058543): +consumed32, same writer/branch/history and unchanged operational budgets; no +administrative count stop. Correction31 c859e75/treea6fb2cd/wheel18e935ed actually +ended seven PASS and one FAIL/exit1, NOT_ADMITTED, preserved. Q-C31-DETACH-01 is +an actual presentation identity defect: identical real HTTP/SSE stored values have +different object-key order, so the old JSON.stringify signature removes native +cards. Controlled installed original proof retains actual node connected before +HTTP→SSE and disconnected after, a real MutationObserver removal, identical +semantic values and three cards before/after. No lost-focus/scroll claim is made +(scrollTop0); the old failure callback timing is not reconstructed. Independent +Quality/Security admit only canonical object-key comparison with every value, +type, array position, scope, locale, evidence and recovery preserved. + +Correction32 applies that pure ephemeral signature repair and the supported +canonical product bump to EP2.3.117. The owning browser regression binds real +current-document HTTP/body/SSE frame and native card identity across actual +initial SSE transport release; normal active/history-absence, all six stored +history/refault cases and native geometry remain. Detached native-DOM renderer +unit negatives separately test real value/type/array/scope/locale/recovery/null +changes and safe own prototype-named keys; these are not server authority tests. +Real authority/epoch/revocation controls and all sandbox/log fixes remain intact. +One new exact artifact and focused evidence must be admitted before freezing a +complete candidate for full unchanged qualification/protected follow-up, +ordinary Finalization and NEW exact-definitive-main installed/browser/screenshots +and cleanup. All earlier failures, proofs and closed349/350/forebears remain. + + +## Preserved correction31 fixture snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6136905944): +consumed31 without an administrative stop cap; same writer, branch and history. +Correction30 provisional d58ef1a/tree5f97578/wheel7427b059 (EP2.3.116) +actually produced six history PASS and two normal FAIL, actual exit1, NOT_ADMITTED. +Independent Quality/Security admitted the current causal evidence: normal runs +remain active WAIT_FOR_OPERATOR_MERGE, with an actual empty terminal-history index. +Correction31 changes only the test expectation and current documentation: bind +completed HTTP200/current-document/response bytes, assert absent run, native modal +closed and deeplink removed, retain three active cards and native heading/geometry, +and capture normal-active-not-history. All six real history/refault tests remain. +Product CSS, package version2.3.116 and every authority/epoch/native/coverage guard +stay unchanged. Earlier red/failure/log/stop evidence is retained. New exact +artifact, focused qualification, whole independent reviews, full owning CI, +protected follow-up/Finalization and NEW definitive-main installed/browser proof +remain pending. No result is transferred from the old protected890 visual REJECT. + + +## Preserved correction30 implementation snapshot — 2026-10-13 + +Same assignment, r34/plan7, ARCHITECT_2 / LANE_2_WORK, original source branch and +history. [Correction30 admission and booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217) +records consumed30 exactly once; the original14 and every later round remain +consumed, with no administrative count stop under decision6123356344 and unchanged +operational/security budgets. PR349 and ordinary Finalization350 remain closed. +Their protected EP2.3.115 main is `890915ad77cec21b39f4d3c60cdc3e263c2c8de7`; +the source-continuity merge `022eba78f95c8e8ad5b60cf2e9f979276c018477` retains +both1265280 and890915ad parents, with exact protected tree5bdad176. Three documentary +merge conflicts and both original sides were retained; no source history reset. + +New exact890915ad browser12 executed524 mandatory first-attempt PASS plus4 unchanged +baseline NOT_RUN, with205 fresh PNGs and closed worker/page/guard evidence. That +execution result does **not** close visual acceptance: independent Quality found +**Q-FINAL-VIS-01 / REJECT**, unreadable overlapping stored-history panels in genuine +uncertain-result, missing and failed cases. These original screenshots remain +unchanged; they have not been published as a defect-free delivery. The actual +original32-second delay and unavailable historical evidence remain separate. + +Actual installed causal diagnosis proves original implicit grid rows38px despite +417.59/218/417.59px cards, producing negative361.59/162px spacing. A temporary, +page-only intrinsic-row intervention gives18px spacing; removal reproduces the +original overlap. Normal active cards remain10px apart. Independent causal Q/S +admit only the narrow history-content grid repair. All four actual diagnostic +workers stopped with guards and passive model/Git effects zero. The first hidden +select diagnostic setup failure is retained, not qualified or reconstructed. + +Current **PRODUCT correction30 / EP2.3.116 candidate, qualification pending** adds intrinsic rows to the +owning history grid, actual pre-capture geometry and original/refault detection, +native scroll/heading checks and three mandatory iPhone history cases. Six +original installed desktop/iPhone cases first failed the real overlap assertion +before the product repair. All528 former canonical contracts and their4 baseline +skips remain exact; discovery-only now lists531 cases/527 mandatory, not a test +PASS. Source canonical version11components is checked; the new committed package, +focused positive regressions, complete independent reviews, unchanged full CI, +protected follow-up delivery, ordinary Finalization and NEW truly definitive +main installed/browser/screenshots/readback/cleanup remain pending. R33/r43/r44/GP +remain closed; HOB-EP01 waits. No execution, live-provider, adoption or signing +authority is added. Prior delivery paragraphs below are historical identities, +not approval or installed PASS for the new candidate. + +## Historical r34 source delivery through correction29 — 2026-10-13 [Selected delivery](DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md), same ARCHITECT_2 / LANE_2_WORK, r34 / plan7, is SOURCE_QUALIFIED on protected EP2.3.115 diff --git a/docs/development/SUBAGENT_ORCHESTRATION_V1_DAG.json b/docs/development/SUBAGENT_ORCHESTRATION_V1_DAG.json index 688948cd..66a310a6 100644 --- a/docs/development/SUBAGENT_ORCHESTRATION_V1_DAG.json +++ b/docs/development/SUBAGENT_ORCHESTRATION_V1_DAG.json @@ -333,12 +333,12 @@ "plan_revision": 7, "writer": "ARCHITECT_2 / LANE_2_WORK", "branch": "codex/ep-dashboard-specialists-recovery-v1", - "base": "05e530d6339cb1c16b1e8f4814347578c5fd761c", - "package_target": "2.3.115", - "correction_rounds_consumed": 29, + "base": "890915ad77cec21b39f4d3c60cdc3e263c2c8de7", + "package_target": "2.3.118", + "correction_rounds_consumed": 40, "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", - "status": "SOURCE_QUALIFIED_FINALIZATION_AND_NEW_FINAL_MAIN_INSTALLED_PENDING", + "status": "CORRECTION40_CONSOLE_AUDIT_LOCALE_IMPLEMENTED_TARGETED_PENDING", "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", @@ -357,18 +357,1559 @@ "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", - "whole_quality": "APPROVE", - "whole_security": "APPROVE", + "whole_quality": "PENDING_CORRECTION35_DOCUMENTARY_SUCCESSOR_EXACT_CANDIDATE", + "whole_security": "PENDING_CORRECTION35_DOCUMENTARY_SUCCESSOR_EXACT_CANDIDATE", "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", "finalization_classification": "NO_BUMP", - "finalization_status": "PENDING_OWN_CHECKS_REVIEWS_AND_PROTECTED_MERGE", - "exact_final_main_installed": "PENDING_NEW_FINALIZATION_MAIN_QUALIFICATION", - "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6133903826", + "finalization_status": "PR350_PROTECTED_MERGED_890915AD_VISUAL_ACCEPTANCE_REJECTED", + "exact_final_main_installed": "890915AD_BROWSER_EXECUTION_PASS_VISUAL_REJECT_Q_FINAL_VIS_01", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217", "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", "historical_implementation_corrections_consumed": 28, - "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending" + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending", + "source_continuity_merge": "022eba78f95c8e8ad5b60cf2e9f979276c018477", + "historical_correction29_delivery_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "05e530d6339cb1c16b1e8f4814347578c5fd761c", + "package_target": "2.3.115", + "correction_rounds_consumed": 29, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "SOURCE_QUALIFIED_FINALIZATION_AND_NEW_FINAL_MAIN_INSTALLED_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "APPROVE", + "whole_security": "APPROVE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PENDING_OWN_CHECKS_REVIEWS_AND_PROTECTED_MERGE", + "exact_final_main_installed": "PENDING_NEW_FINALIZATION_MAIN_QUALIFICATION", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6133903826", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending" + }, + "correction30_scope": "Owning stored-history intrinsic grid tracks plus genuine desktop/iPhone geometry, native scrolling and original/refault regressions; no authority changes", + "correction30_candidate": "EXACT_SHA_BOUND_IN_OWNING_REGISTER_AND_QUALIFICATION_RECORDS", + "correction30_actual_original_red": "6/6 actual overlap failures before product fix; original installed890915ad/wheel689f", + "current_complete_dod": "PENDING_NEW_PRODUCT_DELIVERY_FINALIZATION_AND_EXACT_DEFINITIVE_MAIN", + "historical_correction30_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "890915ad77cec21b39f4d3c60cdc3e263c2c8de7", + "package_target": "2.3.116", + "correction_rounds_consumed": 30, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "CORRECTION30_IMPLEMENTED_QUALIFICATION_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "PENDING_CORRECTION30_EXACT_CANDIDATE", + "whole_security": "PENDING_CORRECTION30_EXACT_CANDIDATE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PR350_PROTECTED_MERGED_890915AD_VISUAL_ACCEPTANCE_REJECTED", + "exact_final_main_installed": "890915AD_BROWSER_EXECUTION_PASS_VISUAL_REJECT_Q_FINAL_VIS_01", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending", + "source_continuity_merge": "022eba78f95c8e8ad5b60cf2e9f979276c018477", + "historical_correction29_delivery_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "05e530d6339cb1c16b1e8f4814347578c5fd761c", + "package_target": "2.3.115", + "correction_rounds_consumed": 29, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "SOURCE_QUALIFIED_FINALIZATION_AND_NEW_FINAL_MAIN_INSTALLED_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "APPROVE", + "whole_security": "APPROVE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PENDING_OWN_CHECKS_REVIEWS_AND_PROTECTED_MERGE", + "exact_final_main_installed": "PENDING_NEW_FINALIZATION_MAIN_QUALIFICATION", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6133903826", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending" + }, + "correction30_scope": "Owning stored-history intrinsic grid tracks plus genuine desktop/iPhone geometry, native scrolling and original/refault regressions; no authority changes", + "correction30_candidate": "EXACT_SHA_BOUND_IN_OWNING_REGISTER_AND_QUALIFICATION_RECORDS", + "correction30_actual_original_red": "6/6 actual overlap failures before product fix; original installed890915ad/wheel689f", + "current_complete_dod": "PENDING_NEW_PRODUCT_DELIVERY_FINALIZATION_AND_EXACT_DEFINITIVE_MAIN" + }, + "correction31_scope": "Completed real current-document HTTP200 empty terminal index and absent active run; native modal hidden/deeplink removed; active geometry/native heading/fresh screenshot; test/document-only, version2.3.116 unchanged", + "correction31_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136905944", + "correction30_focused_actual": "6PASS/2FAIL actualexit1 NOT_ADMITTED, retained", + "historical_correction31_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "890915ad77cec21b39f4d3c60cdc3e263c2c8de7", + "package_target": "2.3.116", + "correction_rounds_consumed": 31, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "CORRECTION31_FIXTURE_IMPLEMENTED_QUALIFICATION_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "PENDING_CORRECTION31_EXACT_CANDIDATE", + "whole_security": "PENDING_CORRECTION31_EXACT_CANDIDATE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PR350_PROTECTED_MERGED_890915AD_VISUAL_ACCEPTANCE_REJECTED", + "exact_final_main_installed": "890915AD_BROWSER_EXECUTION_PASS_VISUAL_REJECT_Q_FINAL_VIS_01", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending", + "source_continuity_merge": "022eba78f95c8e8ad5b60cf2e9f979276c018477", + "historical_correction29_delivery_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "05e530d6339cb1c16b1e8f4814347578c5fd761c", + "package_target": "2.3.115", + "correction_rounds_consumed": 29, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "SOURCE_QUALIFIED_FINALIZATION_AND_NEW_FINAL_MAIN_INSTALLED_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "APPROVE", + "whole_security": "APPROVE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PENDING_OWN_CHECKS_REVIEWS_AND_PROTECTED_MERGE", + "exact_final_main_installed": "PENDING_NEW_FINALIZATION_MAIN_QUALIFICATION", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6133903826", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending" + }, + "correction30_scope": "Owning stored-history intrinsic grid tracks plus genuine desktop/iPhone geometry, native scrolling and original/refault regressions; no authority changes", + "correction30_candidate": "EXACT_SHA_BOUND_IN_OWNING_REGISTER_AND_QUALIFICATION_RECORDS", + "correction30_actual_original_red": "6/6 actual overlap failures before product fix; original installed890915ad/wheel689f", + "current_complete_dod": "PENDING_NEW_PRODUCT_DELIVERY_FINALIZATION_AND_EXACT_DEFINITIVE_MAIN", + "historical_correction30_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "890915ad77cec21b39f4d3c60cdc3e263c2c8de7", + "package_target": "2.3.116", + "correction_rounds_consumed": 30, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "CORRECTION30_IMPLEMENTED_QUALIFICATION_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "PENDING_CORRECTION30_EXACT_CANDIDATE", + "whole_security": "PENDING_CORRECTION30_EXACT_CANDIDATE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PR350_PROTECTED_MERGED_890915AD_VISUAL_ACCEPTANCE_REJECTED", + "exact_final_main_installed": "890915AD_BROWSER_EXECUTION_PASS_VISUAL_REJECT_Q_FINAL_VIS_01", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending", + "source_continuity_merge": "022eba78f95c8e8ad5b60cf2e9f979276c018477", + "historical_correction29_delivery_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "05e530d6339cb1c16b1e8f4814347578c5fd761c", + "package_target": "2.3.115", + "correction_rounds_consumed": 29, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "SOURCE_QUALIFIED_FINALIZATION_AND_NEW_FINAL_MAIN_INSTALLED_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "APPROVE", + "whole_security": "APPROVE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PENDING_OWN_CHECKS_REVIEWS_AND_PROTECTED_MERGE", + "exact_final_main_installed": "PENDING_NEW_FINALIZATION_MAIN_QUALIFICATION", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6133903826", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending" + }, + "correction30_scope": "Owning stored-history intrinsic grid tracks plus genuine desktop/iPhone geometry, native scrolling and original/refault regressions; no authority changes", + "correction30_candidate": "EXACT_SHA_BOUND_IN_OWNING_REGISTER_AND_QUALIFICATION_RECORDS", + "correction30_actual_original_red": "6/6 actual overlap failures before product fix; original installed890915ad/wheel689f", + "current_complete_dod": "PENDING_NEW_PRODUCT_DELIVERY_FINALIZATION_AND_EXACT_DEFINITIVE_MAIN" + }, + "correction31_scope": "Completed real current-document HTTP200 empty terminal index and absent active run; native modal hidden/deeplink removed; active geometry/native heading/fresh screenshot; test/document-only, version2.3.116 unchanged", + "correction31_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136905944", + "correction30_focused_actual": "6PASS/2FAIL actualexit1 NOT_ADMITTED, retained" + }, + "correction32_scope": "Q-C31-DETACH-01 canonical full-value ephemeral object-key identity; real HTTP/SSE current-document/body/frame/native identity; detached native-DOM changed value/type/array/scope/locale/recovery/null negatives; product2.3.117 supportedCAS", + "correction32_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6137058543", + "correction31_focused_actual": "7PASS/1FAIL actualexit1 NOT_ADMITTED, retained", + "historical_correction32_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "890915ad77cec21b39f4d3c60cdc3e263c2c8de7", + "package_target": "2.3.117", + "correction_rounds_consumed": 32, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "CORRECTION32_IMPLEMENTED_QUALIFICATION_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "PENDING_CORRECTION32_EXACT_CANDIDATE", + "whole_security": "PENDING_CORRECTION32_EXACT_CANDIDATE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PR350_PROTECTED_MERGED_890915AD_VISUAL_ACCEPTANCE_REJECTED", + "exact_final_main_installed": "890915AD_BROWSER_EXECUTION_PASS_VISUAL_REJECT_Q_FINAL_VIS_01", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending", + "source_continuity_merge": "022eba78f95c8e8ad5b60cf2e9f979276c018477", + "historical_correction29_delivery_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "05e530d6339cb1c16b1e8f4814347578c5fd761c", + "package_target": "2.3.115", + "correction_rounds_consumed": 29, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "SOURCE_QUALIFIED_FINALIZATION_AND_NEW_FINAL_MAIN_INSTALLED_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "APPROVE", + "whole_security": "APPROVE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PENDING_OWN_CHECKS_REVIEWS_AND_PROTECTED_MERGE", + "exact_final_main_installed": "PENDING_NEW_FINALIZATION_MAIN_QUALIFICATION", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6133903826", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending" + }, + "correction30_scope": "Owning stored-history intrinsic grid tracks plus genuine desktop/iPhone geometry, native scrolling and original/refault regressions; no authority changes", + "correction30_candidate": "EXACT_SHA_BOUND_IN_OWNING_REGISTER_AND_QUALIFICATION_RECORDS", + "correction30_actual_original_red": "6/6 actual overlap failures before product fix; original installed890915ad/wheel689f", + "current_complete_dod": "PENDING_NEW_PRODUCT_DELIVERY_FINALIZATION_AND_EXACT_DEFINITIVE_MAIN", + "historical_correction30_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "890915ad77cec21b39f4d3c60cdc3e263c2c8de7", + "package_target": "2.3.116", + "correction_rounds_consumed": 30, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "CORRECTION30_IMPLEMENTED_QUALIFICATION_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "PENDING_CORRECTION30_EXACT_CANDIDATE", + "whole_security": "PENDING_CORRECTION30_EXACT_CANDIDATE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PR350_PROTECTED_MERGED_890915AD_VISUAL_ACCEPTANCE_REJECTED", + "exact_final_main_installed": "890915AD_BROWSER_EXECUTION_PASS_VISUAL_REJECT_Q_FINAL_VIS_01", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending", + "source_continuity_merge": "022eba78f95c8e8ad5b60cf2e9f979276c018477", + "historical_correction29_delivery_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "05e530d6339cb1c16b1e8f4814347578c5fd761c", + "package_target": "2.3.115", + "correction_rounds_consumed": 29, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "SOURCE_QUALIFIED_FINALIZATION_AND_NEW_FINAL_MAIN_INSTALLED_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "APPROVE", + "whole_security": "APPROVE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PENDING_OWN_CHECKS_REVIEWS_AND_PROTECTED_MERGE", + "exact_final_main_installed": "PENDING_NEW_FINALIZATION_MAIN_QUALIFICATION", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6133903826", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending" + }, + "correction30_scope": "Owning stored-history intrinsic grid tracks plus genuine desktop/iPhone geometry, native scrolling and original/refault regressions; no authority changes", + "correction30_candidate": "EXACT_SHA_BOUND_IN_OWNING_REGISTER_AND_QUALIFICATION_RECORDS", + "correction30_actual_original_red": "6/6 actual overlap failures before product fix; original installed890915ad/wheel689f", + "current_complete_dod": "PENDING_NEW_PRODUCT_DELIVERY_FINALIZATION_AND_EXACT_DEFINITIVE_MAIN" + }, + "correction31_scope": "Completed real current-document HTTP200 empty terminal index and absent active run; native modal hidden/deeplink removed; active geometry/native heading/fresh screenshot; test/document-only, version2.3.116 unchanged", + "correction31_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136905944", + "correction30_focused_actual": "6PASS/2FAIL actualexit1 NOT_ADMITTED, retained", + "historical_correction31_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "890915ad77cec21b39f4d3c60cdc3e263c2c8de7", + "package_target": "2.3.116", + "correction_rounds_consumed": 31, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "CORRECTION31_FIXTURE_IMPLEMENTED_QUALIFICATION_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "PENDING_CORRECTION31_EXACT_CANDIDATE", + "whole_security": "PENDING_CORRECTION31_EXACT_CANDIDATE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PR350_PROTECTED_MERGED_890915AD_VISUAL_ACCEPTANCE_REJECTED", + "exact_final_main_installed": "890915AD_BROWSER_EXECUTION_PASS_VISUAL_REJECT_Q_FINAL_VIS_01", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending", + "source_continuity_merge": "022eba78f95c8e8ad5b60cf2e9f979276c018477", + "historical_correction29_delivery_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "05e530d6339cb1c16b1e8f4814347578c5fd761c", + "package_target": "2.3.115", + "correction_rounds_consumed": 29, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "SOURCE_QUALIFIED_FINALIZATION_AND_NEW_FINAL_MAIN_INSTALLED_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "APPROVE", + "whole_security": "APPROVE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PENDING_OWN_CHECKS_REVIEWS_AND_PROTECTED_MERGE", + "exact_final_main_installed": "PENDING_NEW_FINALIZATION_MAIN_QUALIFICATION", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6133903826", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending" + }, + "correction30_scope": "Owning stored-history intrinsic grid tracks plus genuine desktop/iPhone geometry, native scrolling and original/refault regressions; no authority changes", + "correction30_candidate": "EXACT_SHA_BOUND_IN_OWNING_REGISTER_AND_QUALIFICATION_RECORDS", + "correction30_actual_original_red": "6/6 actual overlap failures before product fix; original installed890915ad/wheel689f", + "current_complete_dod": "PENDING_NEW_PRODUCT_DELIVERY_FINALIZATION_AND_EXACT_DEFINITIVE_MAIN", + "historical_correction30_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "890915ad77cec21b39f4d3c60cdc3e263c2c8de7", + "package_target": "2.3.116", + "correction_rounds_consumed": 30, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "CORRECTION30_IMPLEMENTED_QUALIFICATION_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "PENDING_CORRECTION30_EXACT_CANDIDATE", + "whole_security": "PENDING_CORRECTION30_EXACT_CANDIDATE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PR350_PROTECTED_MERGED_890915AD_VISUAL_ACCEPTANCE_REJECTED", + "exact_final_main_installed": "890915AD_BROWSER_EXECUTION_PASS_VISUAL_REJECT_Q_FINAL_VIS_01", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending", + "source_continuity_merge": "022eba78f95c8e8ad5b60cf2e9f979276c018477", + "historical_correction29_delivery_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "05e530d6339cb1c16b1e8f4814347578c5fd761c", + "package_target": "2.3.115", + "correction_rounds_consumed": 29, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "SOURCE_QUALIFIED_FINALIZATION_AND_NEW_FINAL_MAIN_INSTALLED_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "APPROVE", + "whole_security": "APPROVE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PENDING_OWN_CHECKS_REVIEWS_AND_PROTECTED_MERGE", + "exact_final_main_installed": "PENDING_NEW_FINALIZATION_MAIN_QUALIFICATION", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6133903826", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending" + }, + "correction30_scope": "Owning stored-history intrinsic grid tracks plus genuine desktop/iPhone geometry, native scrolling and original/refault regressions; no authority changes", + "correction30_candidate": "EXACT_SHA_BOUND_IN_OWNING_REGISTER_AND_QUALIFICATION_RECORDS", + "correction30_actual_original_red": "6/6 actual overlap failures before product fix; original installed890915ad/wheel689f", + "current_complete_dod": "PENDING_NEW_PRODUCT_DELIVERY_FINALIZATION_AND_EXACT_DEFINITIVE_MAIN" + }, + "correction31_scope": "Completed real current-document HTTP200 empty terminal index and absent active run; native modal hidden/deeplink removed; active geometry/native heading/fresh screenshot; test/document-only, version2.3.116 unchanged", + "correction31_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136905944", + "correction30_focused_actual": "6PASS/2FAIL actualexit1 NOT_ADMITTED, retained" + }, + "correction32_scope": "Q-C31-DETACH-01 canonical full-value ephemeral object-key identity; real HTTP/SSE current-document/body/frame/native identity; detached native-DOM changed value/type/array/scope/locale/recovery/null negatives; product2.3.117 supportedCAS", + "correction32_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6137058543", + "correction31_focused_actual": "7PASS/1FAIL actualexit1 NOT_ADMITTED, retained" + }, + "correction33_scope": "Own callback observed settlement/error journal; dynamic drain before exact ownunroute/finaldrain/lateowner detection and body+cleanup Aggregate; explicit actualSSErequest/hash binding; one mandatory fixtureunit total532/528; test-only product117 unchanged", + "correction33_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6137269382", + "correction32_focused_actual": "8PASS actualexit0; integratedfixture lifetime admissionPENDING, retained", + "correction33_reporter_selftest": "explicit532/528positive counts; baseline4/allnegative unchanged+old528incomplete rejection; actual7PASS, prior4FAIL3PASS retained; productionreporter unchanged", + "historical_correction33_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "890915ad77cec21b39f4d3c60cdc3e263c2c8de7", + "package_target": "2.3.117", + "correction_rounds_consumed": 33, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "CORRECTION33_FIXTURE_IMPLEMENTED_QUALIFICATION_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "PENDING_CORRECTION33_EXACT_CANDIDATE", + "whole_security": "PENDING_CORRECTION33_EXACT_CANDIDATE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PR350_PROTECTED_MERGED_890915AD_VISUAL_ACCEPTANCE_REJECTED", + "exact_final_main_installed": "890915AD_BROWSER_EXECUTION_PASS_VISUAL_REJECT_Q_FINAL_VIS_01", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending", + "source_continuity_merge": "022eba78f95c8e8ad5b60cf2e9f979276c018477", + "historical_correction29_delivery_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "05e530d6339cb1c16b1e8f4814347578c5fd761c", + "package_target": "2.3.115", + "correction_rounds_consumed": 29, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "SOURCE_QUALIFIED_FINALIZATION_AND_NEW_FINAL_MAIN_INSTALLED_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "APPROVE", + "whole_security": "APPROVE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PENDING_OWN_CHECKS_REVIEWS_AND_PROTECTED_MERGE", + "exact_final_main_installed": "PENDING_NEW_FINALIZATION_MAIN_QUALIFICATION", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6133903826", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending" + }, + "correction30_scope": "Owning stored-history intrinsic grid tracks plus genuine desktop/iPhone geometry, native scrolling and original/refault regressions; no authority changes", + "correction30_candidate": "EXACT_SHA_BOUND_IN_OWNING_REGISTER_AND_QUALIFICATION_RECORDS", + "correction30_actual_original_red": "6/6 actual overlap failures before product fix; original installed890915ad/wheel689f", + "current_complete_dod": "PENDING_NEW_PRODUCT_DELIVERY_FINALIZATION_AND_EXACT_DEFINITIVE_MAIN", + "historical_correction30_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "890915ad77cec21b39f4d3c60cdc3e263c2c8de7", + "package_target": "2.3.116", + "correction_rounds_consumed": 30, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "CORRECTION30_IMPLEMENTED_QUALIFICATION_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "PENDING_CORRECTION30_EXACT_CANDIDATE", + "whole_security": "PENDING_CORRECTION30_EXACT_CANDIDATE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PR350_PROTECTED_MERGED_890915AD_VISUAL_ACCEPTANCE_REJECTED", + "exact_final_main_installed": "890915AD_BROWSER_EXECUTION_PASS_VISUAL_REJECT_Q_FINAL_VIS_01", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending", + "source_continuity_merge": "022eba78f95c8e8ad5b60cf2e9f979276c018477", + "historical_correction29_delivery_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "05e530d6339cb1c16b1e8f4814347578c5fd761c", + "package_target": "2.3.115", + "correction_rounds_consumed": 29, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "SOURCE_QUALIFIED_FINALIZATION_AND_NEW_FINAL_MAIN_INSTALLED_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "APPROVE", + "whole_security": "APPROVE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PENDING_OWN_CHECKS_REVIEWS_AND_PROTECTED_MERGE", + "exact_final_main_installed": "PENDING_NEW_FINALIZATION_MAIN_QUALIFICATION", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6133903826", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending" + }, + "correction30_scope": "Owning stored-history intrinsic grid tracks plus genuine desktop/iPhone geometry, native scrolling and original/refault regressions; no authority changes", + "correction30_candidate": "EXACT_SHA_BOUND_IN_OWNING_REGISTER_AND_QUALIFICATION_RECORDS", + "correction30_actual_original_red": "6/6 actual overlap failures before product fix; original installed890915ad/wheel689f", + "current_complete_dod": "PENDING_NEW_PRODUCT_DELIVERY_FINALIZATION_AND_EXACT_DEFINITIVE_MAIN" + }, + "correction31_scope": "Completed real current-document HTTP200 empty terminal index and absent active run; native modal hidden/deeplink removed; active geometry/native heading/fresh screenshot; test/document-only, version2.3.116 unchanged", + "correction31_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136905944", + "correction30_focused_actual": "6PASS/2FAIL actualexit1 NOT_ADMITTED, retained", + "historical_correction31_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "890915ad77cec21b39f4d3c60cdc3e263c2c8de7", + "package_target": "2.3.116", + "correction_rounds_consumed": 31, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "CORRECTION31_FIXTURE_IMPLEMENTED_QUALIFICATION_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "PENDING_CORRECTION31_EXACT_CANDIDATE", + "whole_security": "PENDING_CORRECTION31_EXACT_CANDIDATE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PR350_PROTECTED_MERGED_890915AD_VISUAL_ACCEPTANCE_REJECTED", + "exact_final_main_installed": "890915AD_BROWSER_EXECUTION_PASS_VISUAL_REJECT_Q_FINAL_VIS_01", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending", + "source_continuity_merge": "022eba78f95c8e8ad5b60cf2e9f979276c018477", + "historical_correction29_delivery_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "05e530d6339cb1c16b1e8f4814347578c5fd761c", + "package_target": "2.3.115", + "correction_rounds_consumed": 29, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "SOURCE_QUALIFIED_FINALIZATION_AND_NEW_FINAL_MAIN_INSTALLED_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "APPROVE", + "whole_security": "APPROVE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PENDING_OWN_CHECKS_REVIEWS_AND_PROTECTED_MERGE", + "exact_final_main_installed": "PENDING_NEW_FINALIZATION_MAIN_QUALIFICATION", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6133903826", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending" + }, + "correction30_scope": "Owning stored-history intrinsic grid tracks plus genuine desktop/iPhone geometry, native scrolling and original/refault regressions; no authority changes", + "correction30_candidate": "EXACT_SHA_BOUND_IN_OWNING_REGISTER_AND_QUALIFICATION_RECORDS", + "correction30_actual_original_red": "6/6 actual overlap failures before product fix; original installed890915ad/wheel689f", + "current_complete_dod": "PENDING_NEW_PRODUCT_DELIVERY_FINALIZATION_AND_EXACT_DEFINITIVE_MAIN", + "historical_correction30_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "890915ad77cec21b39f4d3c60cdc3e263c2c8de7", + "package_target": "2.3.116", + "correction_rounds_consumed": 30, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "CORRECTION30_IMPLEMENTED_QUALIFICATION_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "PENDING_CORRECTION30_EXACT_CANDIDATE", + "whole_security": "PENDING_CORRECTION30_EXACT_CANDIDATE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PR350_PROTECTED_MERGED_890915AD_VISUAL_ACCEPTANCE_REJECTED", + "exact_final_main_installed": "890915AD_BROWSER_EXECUTION_PASS_VISUAL_REJECT_Q_FINAL_VIS_01", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending", + "source_continuity_merge": "022eba78f95c8e8ad5b60cf2e9f979276c018477", + "historical_correction29_delivery_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "05e530d6339cb1c16b1e8f4814347578c5fd761c", + "package_target": "2.3.115", + "correction_rounds_consumed": 29, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "SOURCE_QUALIFIED_FINALIZATION_AND_NEW_FINAL_MAIN_INSTALLED_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "APPROVE", + "whole_security": "APPROVE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PENDING_OWN_CHECKS_REVIEWS_AND_PROTECTED_MERGE", + "exact_final_main_installed": "PENDING_NEW_FINALIZATION_MAIN_QUALIFICATION", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6133903826", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending" + }, + "correction30_scope": "Owning stored-history intrinsic grid tracks plus genuine desktop/iPhone geometry, native scrolling and original/refault regressions; no authority changes", + "correction30_candidate": "EXACT_SHA_BOUND_IN_OWNING_REGISTER_AND_QUALIFICATION_RECORDS", + "correction30_actual_original_red": "6/6 actual overlap failures before product fix; original installed890915ad/wheel689f", + "current_complete_dod": "PENDING_NEW_PRODUCT_DELIVERY_FINALIZATION_AND_EXACT_DEFINITIVE_MAIN" + }, + "correction31_scope": "Completed real current-document HTTP200 empty terminal index and absent active run; native modal hidden/deeplink removed; active geometry/native heading/fresh screenshot; test/document-only, version2.3.116 unchanged", + "correction31_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136905944", + "correction30_focused_actual": "6PASS/2FAIL actualexit1 NOT_ADMITTED, retained" + }, + "correction32_scope": "Q-C31-DETACH-01 canonical full-value ephemeral object-key identity; real HTTP/SSE current-document/body/frame/native identity; detached native-DOM changed value/type/array/scope/locale/recovery/null negatives; product2.3.117 supportedCAS", + "correction32_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6137058543", + "correction31_focused_actual": "7PASS/1FAIL actualexit1 NOT_ADMITTED, retained", + "historical_correction32_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "890915ad77cec21b39f4d3c60cdc3e263c2c8de7", + "package_target": "2.3.117", + "correction_rounds_consumed": 32, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "CORRECTION32_IMPLEMENTED_QUALIFICATION_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "PENDING_CORRECTION32_EXACT_CANDIDATE", + "whole_security": "PENDING_CORRECTION32_EXACT_CANDIDATE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PR350_PROTECTED_MERGED_890915AD_VISUAL_ACCEPTANCE_REJECTED", + "exact_final_main_installed": "890915AD_BROWSER_EXECUTION_PASS_VISUAL_REJECT_Q_FINAL_VIS_01", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending", + "source_continuity_merge": "022eba78f95c8e8ad5b60cf2e9f979276c018477", + "historical_correction29_delivery_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "05e530d6339cb1c16b1e8f4814347578c5fd761c", + "package_target": "2.3.115", + "correction_rounds_consumed": 29, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "SOURCE_QUALIFIED_FINALIZATION_AND_NEW_FINAL_MAIN_INSTALLED_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "APPROVE", + "whole_security": "APPROVE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PENDING_OWN_CHECKS_REVIEWS_AND_PROTECTED_MERGE", + "exact_final_main_installed": "PENDING_NEW_FINALIZATION_MAIN_QUALIFICATION", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6133903826", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending" + }, + "correction30_scope": "Owning stored-history intrinsic grid tracks plus genuine desktop/iPhone geometry, native scrolling and original/refault regressions; no authority changes", + "correction30_candidate": "EXACT_SHA_BOUND_IN_OWNING_REGISTER_AND_QUALIFICATION_RECORDS", + "correction30_actual_original_red": "6/6 actual overlap failures before product fix; original installed890915ad/wheel689f", + "current_complete_dod": "PENDING_NEW_PRODUCT_DELIVERY_FINALIZATION_AND_EXACT_DEFINITIVE_MAIN", + "historical_correction30_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "890915ad77cec21b39f4d3c60cdc3e263c2c8de7", + "package_target": "2.3.116", + "correction_rounds_consumed": 30, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "CORRECTION30_IMPLEMENTED_QUALIFICATION_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "PENDING_CORRECTION30_EXACT_CANDIDATE", + "whole_security": "PENDING_CORRECTION30_EXACT_CANDIDATE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PR350_PROTECTED_MERGED_890915AD_VISUAL_ACCEPTANCE_REJECTED", + "exact_final_main_installed": "890915AD_BROWSER_EXECUTION_PASS_VISUAL_REJECT_Q_FINAL_VIS_01", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending", + "source_continuity_merge": "022eba78f95c8e8ad5b60cf2e9f979276c018477", + "historical_correction29_delivery_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "05e530d6339cb1c16b1e8f4814347578c5fd761c", + "package_target": "2.3.115", + "correction_rounds_consumed": 29, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "SOURCE_QUALIFIED_FINALIZATION_AND_NEW_FINAL_MAIN_INSTALLED_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "APPROVE", + "whole_security": "APPROVE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PENDING_OWN_CHECKS_REVIEWS_AND_PROTECTED_MERGE", + "exact_final_main_installed": "PENDING_NEW_FINALIZATION_MAIN_QUALIFICATION", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6133903826", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending" + }, + "correction30_scope": "Owning stored-history intrinsic grid tracks plus genuine desktop/iPhone geometry, native scrolling and original/refault regressions; no authority changes", + "correction30_candidate": "EXACT_SHA_BOUND_IN_OWNING_REGISTER_AND_QUALIFICATION_RECORDS", + "correction30_actual_original_red": "6/6 actual overlap failures before product fix; original installed890915ad/wheel689f", + "current_complete_dod": "PENDING_NEW_PRODUCT_DELIVERY_FINALIZATION_AND_EXACT_DEFINITIVE_MAIN" + }, + "correction31_scope": "Completed real current-document HTTP200 empty terminal index and absent active run; native modal hidden/deeplink removed; active geometry/native heading/fresh screenshot; test/document-only, version2.3.116 unchanged", + "correction31_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136905944", + "correction30_focused_actual": "6PASS/2FAIL actualexit1 NOT_ADMITTED, retained", + "historical_correction31_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "890915ad77cec21b39f4d3c60cdc3e263c2c8de7", + "package_target": "2.3.116", + "correction_rounds_consumed": 31, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "CORRECTION31_FIXTURE_IMPLEMENTED_QUALIFICATION_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "PENDING_CORRECTION31_EXACT_CANDIDATE", + "whole_security": "PENDING_CORRECTION31_EXACT_CANDIDATE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PR350_PROTECTED_MERGED_890915AD_VISUAL_ACCEPTANCE_REJECTED", + "exact_final_main_installed": "890915AD_BROWSER_EXECUTION_PASS_VISUAL_REJECT_Q_FINAL_VIS_01", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending", + "source_continuity_merge": "022eba78f95c8e8ad5b60cf2e9f979276c018477", + "historical_correction29_delivery_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "05e530d6339cb1c16b1e8f4814347578c5fd761c", + "package_target": "2.3.115", + "correction_rounds_consumed": 29, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "SOURCE_QUALIFIED_FINALIZATION_AND_NEW_FINAL_MAIN_INSTALLED_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "APPROVE", + "whole_security": "APPROVE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PENDING_OWN_CHECKS_REVIEWS_AND_PROTECTED_MERGE", + "exact_final_main_installed": "PENDING_NEW_FINALIZATION_MAIN_QUALIFICATION", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6133903826", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending" + }, + "correction30_scope": "Owning stored-history intrinsic grid tracks plus genuine desktop/iPhone geometry, native scrolling and original/refault regressions; no authority changes", + "correction30_candidate": "EXACT_SHA_BOUND_IN_OWNING_REGISTER_AND_QUALIFICATION_RECORDS", + "correction30_actual_original_red": "6/6 actual overlap failures before product fix; original installed890915ad/wheel689f", + "current_complete_dod": "PENDING_NEW_PRODUCT_DELIVERY_FINALIZATION_AND_EXACT_DEFINITIVE_MAIN", + "historical_correction30_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "890915ad77cec21b39f4d3c60cdc3e263c2c8de7", + "package_target": "2.3.116", + "correction_rounds_consumed": 30, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "CORRECTION30_IMPLEMENTED_QUALIFICATION_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "PENDING_CORRECTION30_EXACT_CANDIDATE", + "whole_security": "PENDING_CORRECTION30_EXACT_CANDIDATE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PR350_PROTECTED_MERGED_890915AD_VISUAL_ACCEPTANCE_REJECTED", + "exact_final_main_installed": "890915AD_BROWSER_EXECUTION_PASS_VISUAL_REJECT_Q_FINAL_VIS_01", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending", + "source_continuity_merge": "022eba78f95c8e8ad5b60cf2e9f979276c018477", + "historical_correction29_delivery_snapshot": { + "assignment_id": "L2-EP-DASHBOARD-SPECIALISTS-RECOVERY-V1-20261008", + "lane_revision": "r34", + "plan_revision": 7, + "writer": "ARCHITECT_2 / LANE_2_WORK", + "branch": "codex/ep-dashboard-specialists-recovery-v1", + "base": "05e530d6339cb1c16b1e8f4814347578c5fd761c", + "package_target": "2.3.115", + "correction_rounds_consumed": 29, + "correction_rounds_maximum": "NOT_APPLICABLE_SCOPED_COMPLETION", + "remaining": "NOT_APPLICABLE_SCOPED_COMPLETION", + "status": "SOURCE_QUALIFIED_FINALIZATION_AND_NEW_FINAL_MAIN_INSTALLED_PENDING", + "predecessor_closed_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007", + "admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6092567221", + "delivery": "DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md", + "execution_authority": false, + "full_family_qualified": false, + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6123356344", + "historical_round9_snapshot": { + "correction_rounds_consumed": 9, + "correction_rounds_maximum": 9, + "remaining": 0, + "status": "CORRECTION_ROUND9_NATIVE_NOT_INSTALLED_QUALIFIED", + "correction_admission": "https://github.com/pcvantol/forge/issues/142#issuecomment-6109728138" + }, + "protected_implementation_main": "624f99f4e41aee9cbba3e68065f64dbcd21861ec", + "implementation_pr": "https://github.com/pcvantol/engineering-platform/pull/349", + "qualified_candidate": "126528079ba642bc07f4bd68eebf8ae63715d0f2", + "qualified_candidate_tree": "3e9a78bbe7a21fe6469da90f3e064764e4c400d0", + "candidate_local_wheel_sha256": "8897a0a3e88f3c404e417c0d3039132cfe05c8ace077bb490e05ed5d90688d4b", + "whole_quality": "APPROVE", + "whole_security": "APPROVE", + "owning_ci": "https://github.com/pcvantol/engineering-platform/actions/runs/38302902219", + "owning_ci_result": "ALL_11_JOBS_COMPLETED_SUCCESS", + "owner_authorization": "https://github.com/pcvantol/engineering-platform/actions/runs/38317287272", + "finalization_branch": "codex/ep-dashboard-specialists-recovery-finalization-v1", + "finalization_classification": "NO_BUMP", + "finalization_status": "PENDING_OWN_CHECKS_REVIEWS_AND_PROTECTED_MERGE", + "exact_final_main_installed": "PENDING_NEW_FINALIZATION_MAIN_QUALIFICATION", + "closure_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6133903826", + "hob_ep01": "WAIT_UNTIL_FULL_R34_DOD", + "historical_implementation_corrections_consumed": 28, + "documentary_finalization_correction": "Q-FIN-01/Q-FIN-02 historical/current labels only; old3c5 CI cancelled, new-head gates pending" + }, + "correction30_scope": "Owning stored-history intrinsic grid tracks plus genuine desktop/iPhone geometry, native scrolling and original/refault regressions; no authority changes", + "correction30_candidate": "EXACT_SHA_BOUND_IN_OWNING_REGISTER_AND_QUALIFICATION_RECORDS", + "correction30_actual_original_red": "6/6 actual overlap failures before product fix; original installed890915ad/wheel689f", + "current_complete_dod": "PENDING_NEW_PRODUCT_DELIVERY_FINALIZATION_AND_EXACT_DEFINITIVE_MAIN" + }, + "correction31_scope": "Completed real current-document HTTP200 empty terminal index and absent active run; native modal hidden/deeplink removed; active geometry/native heading/fresh screenshot; test/document-only, version2.3.116 unchanged", + "correction31_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6136905944", + "correction30_focused_actual": "6PASS/2FAIL actualexit1 NOT_ADMITTED, retained" + }, + "correction32_scope": "Q-C31-DETACH-01 canonical full-value ephemeral object-key identity; real HTTP/SSE current-document/body/frame/native identity; detached native-DOM changed value/type/array/scope/locale/recovery/null negatives; product2.3.117 supportedCAS", + "correction32_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6137058543", + "correction31_focused_actual": "7PASS/1FAIL actualexit1 NOT_ADMITTED, retained" + }, + "correction33_scope": "Own callback observed settlement/error journal; dynamic drain before exact ownunroute/finaldrain/lateowner detection and body+cleanup Aggregate; explicit actualSSErequest/hash binding; one mandatory fixtureunit total532/528; test-only product117 unchanged", + "correction33_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6137269382", + "correction32_focused_actual": "8PASS actualexit0; integratedfixture lifetime admissionPENDING, retained", + "correction33_reporter_selftest": "explicit532/528positive counts; baseline4/allnegative unchanged+old528incomplete rejection; actual7PASS, prior4FAIL3PASS retained; productionreporter unchanged" + }, + "correction34_scope": "Only standard recursiveerrors/cause/types/primitive/referencecycle inPRIVATEerrorcapture, actualdurable publicsafe counters/booleans/hashpathreceipts, existingunitactualisolatedpage/closedgzip/nestedtokens/cause/cycle; all532contracts/product117 unchanged", + "correction34_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6137510899", + "correction33_focused_actual": "9PASS actualexit0 but integratedoriginal-reason-retention admissionOPEN, retained", + "historical_correction34_current_state": { + "correction_rounds_consumed": 34, + "status": "CORRECTION34_PRIVATE_EVIDENCE_IMPLEMENTED_QUALIFICATION_PENDING", + "whole_quality": "PENDING_CORRECTION34_EXACT_CANDIDATE", + "whole_security": "PENDING_CORRECTION34_EXACT_CANDIDATE" + }, + "correction35_scope": "Test-only bounded own max/top native wheel with actual owned scrollend; no input for nooverflow; independent cancel/dispose preserve original errors; same-round documentary reconciliation before first fullfreeze; product117/corpus532 unchanged", + "correction35_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6137995314", + "correction35_focused_actual": "82313352/tree582a22c4 provisional focused9/preflight5/version15 PASS only; successor full qualification PENDING, no transfer", + "correction34_focused_actual": "d9e9a3f3 focused9PASS; mobilecapturelimit identified independently, preserved; not completevisualDoD", + "correction36_scope": "Finite28 owning producer labels plus read-failure label in five catalogs; read/decode boundary excludes render/normalize errors; native installed five-locale HTTP/UI loss/recovery regression; original strict/stale/native/history guards retained", + "correction36_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6138579650", + "convergence_directive": "https://github.com/pcvantol/forge/issues/142#issuecomment-6138571335", + "current_browser_inventory": { + "total": 533, + "mandatory": 529, + "unchanged_baseline": 4 + }, + "current_log_regression": "Finite2Consoleaudit labels5languages and exactconditional/directCENTRALproducercoverage; genuineHTTP stored/render regression implemented; actualqualificationPENDING; source39 validinstalled17naturalRUNNING", + "historical_correction36_current_state": { + "correction_rounds_consumed": 36, + "status": "CORRECTION36_LOG_READ_LABEL_IMPLEMENTED_QUALIFICATION_PENDING", + "current_log_regression": "PENDING actual repaired installed/native five-locale proof; causal diagnosis accepted only" + }, + "correction37_scope": "Fixture-only unsupported locale HTTP prerequisite removed; actual five-locale native wire/body/document/hash/UI retained; atomic synthetic longpath attention text/visibility/allgeometry and caught IDLE refault; no product/timeout/authority change", + "correction37_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6143860024", + "historical_correction37_current_state": { + "correction_rounds_consumed": 37, + "status": "CORRECTION37_FIXTURE_IMPLEMENTED_TARGETED_QUALIFICATION_PENDING", + "current_log_regression": "Source36 targeted10 actualPASS includingfive-locale15screens; currentCI two browser failures retained, correction37 targeted/full pending" + }, + "correction38_scope": "Fixture-only exact pinned request clock and uniqueURL/method/frame/newloader/project join BEFORE realindex/snapshotbody; actualold-header rejection; allrealUI/SSE/guard/cleanup predicates retained; no product/cachefallback/timeout change", + "correction38_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6144629429", + "historical_correction38_current_state": { + "correction_rounds_consumed": 38, + "status": "CORRECTION38_DOCUMENT_RESPONSE_FIXTURE_IMPLEMENTED_TARGETED_PENDING", + "current_log_regression": "Source37 targeted11/currentlogic/locales PASS; complete localcycle16FAILED oneflakyold-documentbodyrace, currentCI37browser4SUCCESS separate; source38 targeted/full PENDING", + "actual_targeted": "FAILED actual1/ninePASS/two normal previousheader exactabsoluteclock join failures; raw retained" + }, + "correction39_scope": "Fixture-only exact seven header-ready relative fields plus fullURL/method/status/frame uniqueness then actualcurrentloader/project BEFOREbody; modeledcollision/missing/type/cache negatives and actualoldheader denial; no product/fallback/tolerance/corpus/deadlinechange", + "correction39_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6145247732", + "historical_correction39_current_state": { + "correction_rounds_consumed": 39, + "status": "CORRECTION39_RELATIVE_HEADER_FIXTURE_IMPLEMENTED_TARGETED_PENDING", + "current_log_regression": "Source38 target11FAILED9PASS2FAIL; actualdiagnostic3 uniquely7relativefields/noepsilon/actualstop0; source39 artifact/targeted/full PENDING", + "actual_complete_browser": "529firstPASS+4baseline/JS3strictPASS execution; Q/ScompleteREJECT5 genuineConsoleaudit localization errors", + "actual_installed17": "VALID_RUNNING onfrozen39, naturalterminal/coveragepending" + }, + "correction40_scope": "ProductPATCH119 finite2Consoleaudit-class locales;30ownfiniteproducers+readfailure strictunknown preserved; existingnativecase realauditedEnter+realinvalidconfig409/settingsunchanged+storedlog200/sevenphase/body/screen checks; telemetryfixture staysMODELED; no genericframework/newcorpus/deadline/authoritychange", + "correction40_register": "https://github.com/pcvantol/forge/issues/142#issuecomment-6145876955" } } diff --git a/docs/development/SUBAGENT_ORCHESTRATION_V1_ROADMAP.md b/docs/development/SUBAGENT_ORCHESTRATION_V1_ROADMAP.md index a503072b..4319f792 100644 --- a/docs/development/SUBAGENT_ORCHESTRATION_V1_ROADMAP.md +++ b/docs/development/SUBAGENT_ORCHESTRATION_V1_ROADMAP.md @@ -1,5 +1,302 @@ # EP subagent orchestration and efficiency roadmap +## Current r34 Console audit localization correction40 — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6145876955): +same writer/session/branch/history; consumed40, no administrative cap, all other +operational budgets unchanged. Supported canonical PATCH119 for this product fix. + +Source39 complete browser execution naturally passed529 first attempts plus four +baseline exceptions; three exact JS assets exceeded80.2. Independent Quality AND +Security reject complete acceptance: five genuine healthy200 logresponses with +seven stored Console-audit rows cause missing dashboard_action_completed labels. +The actual conditional producer also emits dashboard_action_failed, absent from +all five catalogs. Failed browser behavior was not historically observed; current +strict-translator controls confirm both missing keys in all five languages. +All original bodies/errors/raw/screens stay intact. Valid installed17 continues +naturally on its unchanged frozen source39/runtime, without cancellation or +future PASS transfer. No complete source39/runtime-zero-error PASS is claimed. + +The finite two-event class now has five-language Console-action labels, explicitly +not execution-success labels. The owning source-only audit resolves the exact +conditional Server producer and direct CENTRAL cancellation log alongside the +original28 lifecycle events; strict unknown keys still fail. One existing browser +case retains its synthetic telemetry renderer scope, while native activation +uses the actual Console audit producer, real stored/log HTTP reads and screen +labels. An explicit malformed configuration request produces a real failed +audit409 before settings writes; complete configuration reread must stay equal. +Both real outcomes, current document/request/seven-phase/body hashes, five-language +screens and all ordinary errors remain checked. One known audit endpoint extends +the existing private observer; no generic capture framework/new corpus/deadline. +All native, authority/epoch/noncreating/history/lifetime/error guards remain. + +Implementation/artifact/joint targeted/full/strict coverage/current CI and final +independent acceptance remain PENDING. Then normal protected PR351, ordinary +Finalization, NEW exact-final-main installed/browser/screenshots and own cleanup. +Closed predecessors remain closed; HOB waits until the complete original DoD. + +## Current r34 exact relative-header fixture correction39 — 2026-10-13 + +[ACK, admission and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6145247732): +same writer/session/branch/history; consumed39, no administrative cap, other +operational budgets unchanged. EP2.3.118 and all193 production bytes remain. + +Source38 compact targeted11 naturally FAILED1: nine passes and two normal +desktop/mobile failures at the previous-header absolute-clock join. Preflight5, +logic56, five-locale contract, reporter7 and exact owning533 discovery passed +on that head only. Original failures/raw/screens remain; no PASS transfer. +The bounded real installed diagnosis naturally ended0 with actual worker stop: +five public absolute request clocks differ from the independent CDP-derived +clocks, while seven header-ready relative phase fields uniquely/exactly agree. +The hidden clock mapping remains inferred; original missing public-clock +values are not reconstructed. Two private diagnostic setup failures stay failed. + +Both existing independent reviewers admit the finite repair design. The fixture +uses unique exact fullURL/method/status/frame/seven-relative-phase identity, +then requires currentloader/project before each actual index/snapshot bodyread. +Absolute start is finite diagnostic context only, without tolerance or fallback. +Zero remains pending, ambiguity red, and an unknown predecessor cannot be +replaced by a later good response. In-case modeled collision/missing/type/cache +controls are distinctly helper negatives; the real previous-header rejection, +actual body/request-ID hashes, native cards, HTTP/SSE, epoch/authority/lifetime +and error/cleanup assertions remain. No product/framework/corpus/deadline change. +Implementation, exact artifact/targeted/full qualification, protected PR351, +ordinary Finalization and new exact-final-main installed/browser/screenshots +and own cleanup remain PENDING. Full16 remains FAILED; installed17 not booked +or started. Closed predecessors and HOB queue remain unchanged. + +## Current r34 document-bound response fixture correction38 — 2026-10-13 + +[Single booking and actual cause](https://github.com/pcvantol/forge/issues/142#issuecomment-6144629429): +same writer/session/branch/history; consumed38, no administrative cap and all +other operational budgets unchanged. Product118 and all193 product bytes remain. + +Current full local cycle16 naturally completed but is FAILED:528 mandatory +first-attempt passes, one flaky normal mobile history case and four baseline +exceptions. A retry does not close that failure. Original raw request evidence +proves the selected index response belongs to the old loader before navigation; +the new loader response arrives after the body error. OwningCI37 browser parts +are green and stay separately labeled. Installed17 was not booked or started. + +The fixture binds both held history-index and snapshot responses to unique full +URL/method/request-clock/frame/new-loader/project identity before actual body +reading. The clock uses the exact pinned Playwright1.63 CDP timing correction; +missing/ambiguous/unsupported-cache metadata stays red without tolerance, body +fallback or response substitution. A genuine previous-document header is rejected +before body reading. Exact request IDs bind subsequent body hashes and HTTP/SSE +proofs; all native card, history, project/epoch, callback and cleanup controls remain. +This is a finite correction to existing observation/read boundaries, not a new +capture framework or product behavior. The533/529+four inventory and deadlines +remain. Independent implementation, targeted/current full qualification and the +complete protected-delivery/Finalization/exact-final-main installedGUI DoD are PENDING. + +## Current r34 fixture correction37 — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6143860024): +same writer, branch and history; consumed37, no administrative cap, other +operational budgets unchanged. This correction changes tests only; EP2.3.118 +and every product byte, native/project/document/epoch guard and deadline remain. + +Current CI exposed an unsupported fresh-log-HTTP prerequisite after an in-place +locale change and a separate asynchronous synthetic-render geometry boundary. +The locale test retains native language selection and all actual INFO200, +ERROR503 and restored-document200 response/body/hash/screen bindings in five +languages. The long-path renderer test binds its exact attention input, computed +visibility, text and all original overflow/height predicates to one browser turn; +an explicit ordinary IDLE refault must make the original nonzero predicate red. +The precise original CI await/overwrite chronology remains UNKNOWN; current +controls do not reconstruct it. All old failures and logs remain retained. + +The actual41 DATA_ROOT_UNSAFE errors and one related CLI failure in installed16 +are independently explained by the missing temporary map and unsafe /tmp alias; +all42 original affected tests pass with a physical canonical map. Browser cycle15 +and two current CI browser parts remain FAILED. Fresh serial contexts bind the +actual child interpreter/import/native/TMP; full qualification is pending until +joint targeted acceptance. The533 inventory/529 mandatory/four baseline cases, +strict coverage, independent reviews, protected PR351, ordinary Finalization, +new exact-final-main installed/browser/screenshots and cleanup remain required. +No prior PASS is transferred, deadline increased or product error suppressed. + +## Current r34 integrated log-read correction36 — 2026-10-13 + +[Single booking and causal admission](https://github.com/pcvantol/forge/issues/142#issuecomment-6138579650) +and [convergence directive](https://github.com/pcvantol/forge/issues/142#issuecomment-6138571335): +same writer/session/branch/history; consumed36, no administrative round cap, +all other operational budgets unchanged. EP2.3.118 is the supported product target. + +Actual installed five-locale diagnosis preserved real healthy200, source-loss503, +and restored200. The healthy response contains known producer events whose missing +strict labels caused a render exception incorrectly caught as read unavailability. +The historical failed request reason remains UNKNOWN, without reconstruction. +The integrated repair adds only the28 owning producer labels and one read-failure +label to all five catalogs and separates read/decode failures from normalization +and rendering. Unknown labels and ordinary rendering failures remain fatal; +stale request, project/document/epoch and native authority controls are unchanged. + +The current collective acceptance covers native five-locale request/response/UI +binding and restoration, strict unknown/render/stale negatives, normal active +state, and stored desktop/mobile history cases. One new mandatory browser case +extends the original532 inventory to533:529 mandatory plus the same four baseline +cases. Existing capture, callback and original-log repairs stay closed and retained. +Current implementation and targeted/full qualification are PENDING; no old PASS +is transferred. Candidate35's actual528 browser PASS and completed owning CI are +preserved but its localization defect prevents product acceptance. Existing valid +local jobs finish naturally. Current owning CI supplies its actual installed-full +and coverage evidence; no redundant manual full repeat is added above mandatory +Mac native/browser and strict changed-file coverage gates. + +Protected follow-up PR351, ordinary Finalization, new exact-definitive-main +installed/browser screenshots and cleanup remain OPEN. Closed349/350 and all +predecessors stay closed; HOB waits. No live EP environment or signing is added. + +## Preserved r34 native-capture correction35 — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137995314): +consumed35, same writer/session/branch/history; no administrative stop cap and all +operational budgets retained. This documentary reconciliation belongs to the same +integrated correction35 before its first full freeze; it is not another booking. +Correction34's focused9 passed but whole Quality identified displaced/clipped +mobile captures. Current original → bounded native input → fresh original refault +reproduces and removes that capture class against unchanged installed product. +DOM heading offsets remain unchanged; an exact GPU/ancestor cause is not claimed. +Original failures and all unedited images remain evidence, without reconstruction. + +Independent Quality/Security admit the test-only helper: no wheel input on a card +without its own overflow; actual own max/current/top bounded wheel and real owned +scrollend before capture. Bottom/top and readable-heading assertions remain; +listener cancellation and handle disposal are both attempted, preserving every +original body/cleanup error. No sleep, timeout relaxation, response substitution, +product/security/native/epoch change or corpus reduction. EP2.3.117 and all532 +contracts/528mandatory/four unchanged baseline cases remain. + +[Actual focused progress](https://github.com/pcvantol/forge/issues/142#issuecomment-6138031628) +is specifically source82313352fac8d3f58da3a9dea5032857851db9c6/tree582a22c4: +focused9 PASS, preflight5 PASS, version15 PASS and fresh readable mobile evidence. +This is provisional pre-full evidence only. The documentary successor needs its +own exact artifact/freeze and complete independent admission; no prior result is +relabeled as a successor/full PASS. Full unchanged qualification, owning CI, +protected follow-up delivery, ordinary Finalization and NEW exact-definitive-main +installed/browser/screenshots/cleanup remain OPEN. Closed349/350 and predecessors +stay closed; HOB continues to wait. No new live EP environment or signing. + + +## Preserved correction34 private-evidence snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137510899): +consumed34, same writer/branch/history and unchanged operational budgets; no +administrative stop cap. Correction33 fd5af08b/treefb0fcc31/wheel435d3984 actually +passed focused9/preflight5/version15 but integrated admission exposed S-C33-LOG-01. +A real fixture/helper/browser capture proves both original callback/body errors +remain in memory while the closed2278byte gzip (SHAa6f649555eb9111d3d5826a23cd40e30082d6b3e51b359dec28a6a25546f7149) +contains only the outer Aggregate message/stack. Inline body attachments are not +durable receipt files. These original missing reason bytes are not reconstructed; +all previous PASS/FAIL/stop evidence remains in its original scope. + +Independent Quality/Security admit only private recursive standard errors/cause +capture with type/primitive/reference-cycle preservation, plus actual disk receipts. +Both assertion timing and completed first-failure boundaries now retain nested +original messages/stacks exclusively in the existing private0600 raw stream. +There is no arbitrary Errorproperty enumeration or public generic error-tree. +Public-safe pathattachments contain only counters/status/hash/declarative unit +booleans. Ordinary serialization/write failures remain fatal. The existing fixture +unit additionally uses a real isolated page, actual closure/gziphash, both original +reasons, nested cause, cycle/reference and primitive controls before durable +safe receipt write/readback. All532 corpuscontracts/528mandatory/fourbaseline cases +stay exact; no new skip/test outcome, deadline, product117, authority/epoch/native +or coverage change. Source33 dynamic own-route drain and semantic native-card +identity remain. One new exact artifact/focused9/whole independent admission must +precede full unchanged qualification/protected follow-up, ordinary Finalization +and NEW exact-definitive-main installed/browser/screenshots/cleanup. +The old890 FULL hosted38330837922 naturally completed SUCCESS; its visual REJECT +remains, and no old result is transferred to the new candidate. + + +## Preserved correction33 fixture snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137269382): +consumed33, same writer/branch/history; no administrative stop cap, all operational +budgets and prior failures retained. Correction32 767ec597/treebe1694/wheel41fbad7b +actually passed eight targeted installed cases and preflight5, but integrated +admission remains pending S-C32-LIFE-01: held async fixture routes were not drained +before removal/cleanup on failure. Real pinned-browser controls prove unroute +returns with pending1, premature live-page removal causes an actual already-handled +rejection, and own drain BEFORE exact route removal reaches pending0 before +pageclose. All three completed actual workers/handlers stop0 with passive effects0; +the first diagnostic's unhandled exit and missing stop receipt remain unchanged. + +Independent Quality/Security admit this test-only repair: observe every original +callback outcome, release and dynamically drain own callbacks, remove only the +registered own route, final-drain and verify before CDP/page cleanup. Original +body/callback/removal errors remain fatal together; late closed-owner invocation +is journaled, not an unhandled process exit. The exact selected SSE request ID and +frame SHA must equal current document's completed observer binding. One mandatory +fixture-unit contract proves dynamic registration, removal after actual settlement, +original deferred error object retention and late-owner failure, explicitly not a +server authority test. Discovery target532/528mandatory preserves all531 previous +contracts and four baseline NOT_RUN cases. Product CSS/semantic identity/package +version2.3.117 and authority/epoch/native/coverage/deadline guards are unchanged. +New exact committed artifact, focused9, independent whole-candidate admission, +full unchanged qualification/protected follow-up/ordinary Finalization and NEW +exact-definitive-main installed/browser/screenshots/cleanup remain required. +No earlier targeted or historical result is transferred to this candidate. +The reporter self-tests still used historical528/524 positive counts after the +admitted corpus expansion. Original standalone4FAIL/3PASS is retained; explicit +current532/528 positive expectations now pass7/7, with baseline4 and all rejection +controls retained plus an explicit old528 incomplete-corpus rejection. Reporter +logic and owning commands are unchanged. An initial broad discovery accidentally +imported Node self-tests and failed JSON collection; that raw output remains. +Exact owning three-file discovery confirms all532 contracts and all531 predecessors, +not a browser execution PASS. + + +## Preserved correction32 product snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137058543): +consumed32, same writer/branch/history and unchanged operational budgets; no +administrative count stop. Correction31 c859e75/treea6fb2cd/wheel18e935ed actually +ended seven PASS and one FAIL/exit1, NOT_ADMITTED, preserved. Q-C31-DETACH-01 is +an actual presentation identity defect: identical real HTTP/SSE stored values have +different object-key order, so the old JSON.stringify signature removes native +cards. Controlled installed original proof retains actual node connected before +HTTP→SSE and disconnected after, a real MutationObserver removal, identical +semantic values and three cards before/after. No lost-focus/scroll claim is made +(scrollTop0); the old failure callback timing is not reconstructed. Independent +Quality/Security admit only canonical object-key comparison with every value, +type, array position, scope, locale, evidence and recovery preserved. + +Correction32 applies that pure ephemeral signature repair and the supported +canonical product bump to EP2.3.117. The owning browser regression binds real +current-document HTTP/body/SSE frame and native card identity across actual +initial SSE transport release; normal active/history-absence, all six stored +history/refault cases and native geometry remain. Detached native-DOM renderer +unit negatives separately test real value/type/array/scope/locale/recovery/null +changes and safe own prototype-named keys; these are not server authority tests. +Real authority/epoch/revocation controls and all sandbox/log fixes remain intact. +One new exact artifact and focused evidence must be admitted before freezing a +complete candidate for full unchanged qualification/protected follow-up, +ordinary Finalization and NEW exact-definitive-main installed/browser/screenshots +and cleanup. All earlier failures, proofs and closed349/350/forebears remain. + + +## Preserved correction31 fixture snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6136905944): +consumed31 without an administrative stop cap; same writer, branch and history. +Correction30 provisional d58ef1a/tree5f97578/wheel7427b059 (EP2.3.116) +actually produced six history PASS and two normal FAIL, actual exit1, NOT_ADMITTED. +Independent Quality/Security admitted the current causal evidence: normal runs +remain active WAIT_FOR_OPERATOR_MERGE, with an actual empty terminal-history index. +Correction31 changes only the test expectation and current documentation: bind +completed HTTP200/current-document/response bytes, assert absent run, native modal +closed and deeplink removed, retain three active cards and native heading/geometry, +and capture normal-active-not-history. All six real history/refault tests remain. +Product CSS, package version2.3.116 and every authority/epoch/native/coverage guard +stay unchanged. Earlier red/failure/log/stop evidence is retained. New exact +artifact, focused qualification, whole independent reviews, full owning CI, +protected follow-up/Finalization and NEW definitive-main installed/browser proof +remain pending. No result is transferred from the old protected890 visual REJECT. + + Scoped lane under [Engineering Platform Roadmap](ENGINEERING_PLATFORM_ROADMAP.md). Owning audit/target: [Subagent orchestration and efficiency](../engineering/SUBAGENT_ORCHESTRATION_AND_EFFICIENCY.md). Increment: `EP_SUBAGENT_ORCHESTRATION_AND_EFFICIENCY_V1`. @@ -12,7 +309,7 @@ No existing executable DAG, Mission, run or policy activation is changed. ## Status and pickup priority -Current selected work is r34's [stored specialist evidence/recovery Console slice](DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md), already source-delivered by protected PR349. Its ordinary Finalization and new exact-final-main installed acceptance remain open. R33 remains closed at its [immutable final receipt](https://github.com/pcvantol/forge/issues/142#issuecomment-6091674007); its historical source-stage paragraph below is not a current pickup or an outstanding r33 gate. Existing family-node statuses/edges and unselected families remain unchanged. +Current selected work is the same r34 stored-evidence/recovery Console slice, integrated correction30 for Q-FINAL-VIS-01, consumed30 without a count stop under6123356344 and unchanged operational budgets. Protected PR349/Finalization350 EP2.3.115 receipts remain closed;890915ad visual acceptance is REJECT. Current product target2.3.116 is not yet qualified. New source/Finalization/exact-definitive-main installed delivery remains pending. R33 stays closed at its immutable6091674007 receipt; all family-node statuses/edges and unselected families remain unchanged. See [current delivery](DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md) and [round30 register](https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217). ### Historical r33 source-stage snapshot @@ -154,7 +451,9 @@ source, test, workflow, package, active policy, grant or executable programme ch Historical Python files under the evidence directory are standalone diagnostics, not runtime implementation or CI qualification. The version classification is NO_BUMP. -## Serial Console follow-up — r34, 2026-10-10 +## Historical serial Console follow-up through correction29 — r34, 2026-10-10 + +The source-stage currentness below is the preserved prior correction29 snapshot; current correction30 is specified above. The paragraph below preserves the earlier correction3 snapshot. Current r34 is SOURCE_QUALIFIED at protected EP2.3.115 main624f99f4 after independently approved diff --git a/docs/engineering/SUBAGENT_ORCHESTRATION_AND_EFFICIENCY.md b/docs/engineering/SUBAGENT_ORCHESTRATION_AND_EFFICIENCY.md index 6bc83abd..2e933324 100644 --- a/docs/engineering/SUBAGENT_ORCHESTRATION_AND_EFFICIENCY.md +++ b/docs/engineering/SUBAGENT_ORCHESTRATION_AND_EFFICIENCY.md @@ -1,6 +1,345 @@ # EP subagent orchestration and efficiency -## R34 scoped source delivery and remaining acceptance — 2026-10-13 +## Current r34 Console audit localization correction40 — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6145876955): +same writer/session/branch/history; consumed40, no administrative cap, all other +operational budgets unchanged. Supported canonical PATCH119 for this product fix. + +Source39 complete browser execution naturally passed529 first attempts plus four +baseline exceptions; three exact JS assets exceeded80.2. Independent Quality AND +Security reject complete acceptance: five genuine healthy200 logresponses with +seven stored Console-audit rows cause missing dashboard_action_completed labels. +The actual conditional producer also emits dashboard_action_failed, absent from +all five catalogs. Failed browser behavior was not historically observed; current +strict-translator controls confirm both missing keys in all five languages. +All original bodies/errors/raw/screens stay intact. Valid installed17 continues +naturally on its unchanged frozen source39/runtime, without cancellation or +future PASS transfer. No complete source39/runtime-zero-error PASS is claimed. + +The finite two-event class now has five-language Console-action labels, explicitly +not execution-success labels. The owning source-only audit resolves the exact +conditional Server producer and direct CENTRAL cancellation log alongside the +original28 lifecycle events; strict unknown keys still fail. One existing browser +case retains its synthetic telemetry renderer scope, while native activation +uses the actual Console audit producer, real stored/log HTTP reads and screen +labels. An explicit malformed configuration request produces a real failed +audit409 before settings writes; complete configuration reread must stay equal. +Both real outcomes, current document/request/seven-phase/body hashes, five-language +screens and all ordinary errors remain checked. One known audit endpoint extends +the existing private observer; no generic capture framework/new corpus/deadline. +All native, authority/epoch/noncreating/history/lifetime/error guards remain. + +Implementation/artifact/joint targeted/full/strict coverage/current CI and final +independent acceptance remain PENDING. Then normal protected PR351, ordinary +Finalization, NEW exact-final-main installed/browser/screenshots and own cleanup. +Closed predecessors remain closed; HOB waits until the complete original DoD. + +## Current r34 exact relative-header fixture correction39 — 2026-10-13 + +[ACK, admission and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6145247732): +same writer/session/branch/history; consumed39, no administrative cap, other +operational budgets unchanged. EP2.3.118 and all193 production bytes remain. + +Source38 compact targeted11 naturally FAILED1: nine passes and two normal +desktop/mobile failures at the previous-header absolute-clock join. Preflight5, +logic56, five-locale contract, reporter7 and exact owning533 discovery passed +on that head only. Original failures/raw/screens remain; no PASS transfer. +The bounded real installed diagnosis naturally ended0 with actual worker stop: +five public absolute request clocks differ from the independent CDP-derived +clocks, while seven header-ready relative phase fields uniquely/exactly agree. +The hidden clock mapping remains inferred; original missing public-clock +values are not reconstructed. Two private diagnostic setup failures stay failed. + +Both existing independent reviewers admit the finite repair design. The fixture +uses unique exact fullURL/method/status/frame/seven-relative-phase identity, +then requires currentloader/project before each actual index/snapshot bodyread. +Absolute start is finite diagnostic context only, without tolerance or fallback. +Zero remains pending, ambiguity red, and an unknown predecessor cannot be +replaced by a later good response. In-case modeled collision/missing/type/cache +controls are distinctly helper negatives; the real previous-header rejection, +actual body/request-ID hashes, native cards, HTTP/SSE, epoch/authority/lifetime +and error/cleanup assertions remain. No product/framework/corpus/deadline change. +Implementation, exact artifact/targeted/full qualification, protected PR351, +ordinary Finalization and new exact-final-main installed/browser/screenshots +and own cleanup remain PENDING. Full16 remains FAILED; installed17 not booked +or started. Closed predecessors and HOB queue remain unchanged. + +## Current r34 document-bound response fixture correction38 — 2026-10-13 + +[Single booking and actual cause](https://github.com/pcvantol/forge/issues/142#issuecomment-6144629429): +same writer/session/branch/history; consumed38, no administrative cap and all +other operational budgets unchanged. Product118 and all193 product bytes remain. + +Current full local cycle16 naturally completed but is FAILED:528 mandatory +first-attempt passes, one flaky normal mobile history case and four baseline +exceptions. A retry does not close that failure. Original raw request evidence +proves the selected index response belongs to the old loader before navigation; +the new loader response arrives after the body error. OwningCI37 browser parts +are green and stay separately labeled. Installed17 was not booked or started. + +The fixture binds both held history-index and snapshot responses to unique full +URL/method/request-clock/frame/new-loader/project identity before actual body +reading. The clock uses the exact pinned Playwright1.63 CDP timing correction; +missing/ambiguous/unsupported-cache metadata stays red without tolerance, body +fallback or response substitution. A genuine previous-document header is rejected +before body reading. Exact request IDs bind subsequent body hashes and HTTP/SSE +proofs; all native card, history, project/epoch, callback and cleanup controls remain. +This is a finite correction to existing observation/read boundaries, not a new +capture framework or product behavior. The533/529+four inventory and deadlines +remain. Independent implementation, targeted/current full qualification and the +complete protected-delivery/Finalization/exact-final-main installedGUI DoD are PENDING. + +## Current r34 fixture correction37 — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6143860024): +same writer, branch and history; consumed37, no administrative cap, other +operational budgets unchanged. This correction changes tests only; EP2.3.118 +and every product byte, native/project/document/epoch guard and deadline remain. + +Current CI exposed an unsupported fresh-log-HTTP prerequisite after an in-place +locale change and a separate asynchronous synthetic-render geometry boundary. +The locale test retains native language selection and all actual INFO200, +ERROR503 and restored-document200 response/body/hash/screen bindings in five +languages. The long-path renderer test binds its exact attention input, computed +visibility, text and all original overflow/height predicates to one browser turn; +an explicit ordinary IDLE refault must make the original nonzero predicate red. +The precise original CI await/overwrite chronology remains UNKNOWN; current +controls do not reconstruct it. All old failures and logs remain retained. + +The actual41 DATA_ROOT_UNSAFE errors and one related CLI failure in installed16 +are independently explained by the missing temporary map and unsafe /tmp alias; +all42 original affected tests pass with a physical canonical map. Browser cycle15 +and two current CI browser parts remain FAILED. Fresh serial contexts bind the +actual child interpreter/import/native/TMP; full qualification is pending until +joint targeted acceptance. The533 inventory/529 mandatory/four baseline cases, +strict coverage, independent reviews, protected PR351, ordinary Finalization, +new exact-final-main installed/browser/screenshots and cleanup remain required. +No prior PASS is transferred, deadline increased or product error suppressed. + +## Current r34 integrated log-read correction36 — 2026-10-13 + +[Single booking and causal admission](https://github.com/pcvantol/forge/issues/142#issuecomment-6138579650) +and [convergence directive](https://github.com/pcvantol/forge/issues/142#issuecomment-6138571335): +same writer/session/branch/history; consumed36, no administrative round cap, +all other operational budgets unchanged. EP2.3.118 is the supported product target. + +Actual installed five-locale diagnosis preserved real healthy200, source-loss503, +and restored200. The healthy response contains known producer events whose missing +strict labels caused a render exception incorrectly caught as read unavailability. +The historical failed request reason remains UNKNOWN, without reconstruction. +The integrated repair adds only the28 owning producer labels and one read-failure +label to all five catalogs and separates read/decode failures from normalization +and rendering. Unknown labels and ordinary rendering failures remain fatal; +stale request, project/document/epoch and native authority controls are unchanged. + +The current collective acceptance covers native five-locale request/response/UI +binding and restoration, strict unknown/render/stale negatives, normal active +state, and stored desktop/mobile history cases. One new mandatory browser case +extends the original532 inventory to533:529 mandatory plus the same four baseline +cases. Existing capture, callback and original-log repairs stay closed and retained. +Current implementation and targeted/full qualification are PENDING; no old PASS +is transferred. Candidate35's actual528 browser PASS and completed owning CI are +preserved but its localization defect prevents product acceptance. Existing valid +local jobs finish naturally. Current owning CI supplies its actual installed-full +and coverage evidence; no redundant manual full repeat is added above mandatory +Mac native/browser and strict changed-file coverage gates. + +Protected follow-up PR351, ordinary Finalization, new exact-definitive-main +installed/browser screenshots and cleanup remain OPEN. Closed349/350 and all +predecessors stay closed; HOB waits. No live EP environment or signing is added. + +## Preserved r34 native-capture correction35 — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137995314): +consumed35, same writer/session/branch/history; no administrative stop cap and all +operational budgets retained. This documentary reconciliation belongs to the same +integrated correction35 before its first full freeze; it is not another booking. +Correction34's focused9 passed but whole Quality identified displaced/clipped +mobile captures. Current original → bounded native input → fresh original refault +reproduces and removes that capture class against unchanged installed product. +DOM heading offsets remain unchanged; an exact GPU/ancestor cause is not claimed. +Original failures and all unedited images remain evidence, without reconstruction. + +Independent Quality/Security admit the test-only helper: no wheel input on a card +without its own overflow; actual own max/current/top bounded wheel and real owned +scrollend before capture. Bottom/top and readable-heading assertions remain; +listener cancellation and handle disposal are both attempted, preserving every +original body/cleanup error. No sleep, timeout relaxation, response substitution, +product/security/native/epoch change or corpus reduction. EP2.3.117 and all532 +contracts/528mandatory/four unchanged baseline cases remain. + +[Actual focused progress](https://github.com/pcvantol/forge/issues/142#issuecomment-6138031628) +is specifically source82313352fac8d3f58da3a9dea5032857851db9c6/tree582a22c4: +focused9 PASS, preflight5 PASS, version15 PASS and fresh readable mobile evidence. +This is provisional pre-full evidence only. The documentary successor needs its +own exact artifact/freeze and complete independent admission; no prior result is +relabeled as a successor/full PASS. Full unchanged qualification, owning CI, +protected follow-up delivery, ordinary Finalization and NEW exact-definitive-main +installed/browser/screenshots/cleanup remain OPEN. Closed349/350 and predecessors +stay closed; HOB continues to wait. No new live EP environment or signing. + + +## Preserved correction34 private-evidence snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137510899): +consumed34, same writer/branch/history and unchanged operational budgets; no +administrative stop cap. Correction33 fd5af08b/treefb0fcc31/wheel435d3984 actually +passed focused9/preflight5/version15 but integrated admission exposed S-C33-LOG-01. +A real fixture/helper/browser capture proves both original callback/body errors +remain in memory while the closed2278byte gzip (SHAa6f649555eb9111d3d5826a23cd40e30082d6b3e51b359dec28a6a25546f7149) +contains only the outer Aggregate message/stack. Inline body attachments are not +durable receipt files. These original missing reason bytes are not reconstructed; +all previous PASS/FAIL/stop evidence remains in its original scope. + +Independent Quality/Security admit only private recursive standard errors/cause +capture with type/primitive/reference-cycle preservation, plus actual disk receipts. +Both assertion timing and completed first-failure boundaries now retain nested +original messages/stacks exclusively in the existing private0600 raw stream. +There is no arbitrary Errorproperty enumeration or public generic error-tree. +Public-safe pathattachments contain only counters/status/hash/declarative unit +booleans. Ordinary serialization/write failures remain fatal. The existing fixture +unit additionally uses a real isolated page, actual closure/gziphash, both original +reasons, nested cause, cycle/reference and primitive controls before durable +safe receipt write/readback. All532 corpuscontracts/528mandatory/fourbaseline cases +stay exact; no new skip/test outcome, deadline, product117, authority/epoch/native +or coverage change. Source33 dynamic own-route drain and semantic native-card +identity remain. One new exact artifact/focused9/whole independent admission must +precede full unchanged qualification/protected follow-up, ordinary Finalization +and NEW exact-definitive-main installed/browser/screenshots/cleanup. +The old890 FULL hosted38330837922 naturally completed SUCCESS; its visual REJECT +remains, and no old result is transferred to the new candidate. + + +## Preserved correction33 fixture snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137269382): +consumed33, same writer/branch/history; no administrative stop cap, all operational +budgets and prior failures retained. Correction32 767ec597/treebe1694/wheel41fbad7b +actually passed eight targeted installed cases and preflight5, but integrated +admission remains pending S-C32-LIFE-01: held async fixture routes were not drained +before removal/cleanup on failure. Real pinned-browser controls prove unroute +returns with pending1, premature live-page removal causes an actual already-handled +rejection, and own drain BEFORE exact route removal reaches pending0 before +pageclose. All three completed actual workers/handlers stop0 with passive effects0; +the first diagnostic's unhandled exit and missing stop receipt remain unchanged. + +Independent Quality/Security admit this test-only repair: observe every original +callback outcome, release and dynamically drain own callbacks, remove only the +registered own route, final-drain and verify before CDP/page cleanup. Original +body/callback/removal errors remain fatal together; late closed-owner invocation +is journaled, not an unhandled process exit. The exact selected SSE request ID and +frame SHA must equal current document's completed observer binding. One mandatory +fixture-unit contract proves dynamic registration, removal after actual settlement, +original deferred error object retention and late-owner failure, explicitly not a +server authority test. Discovery target532/528mandatory preserves all531 previous +contracts and four baseline NOT_RUN cases. Product CSS/semantic identity/package +version2.3.117 and authority/epoch/native/coverage/deadline guards are unchanged. +New exact committed artifact, focused9, independent whole-candidate admission, +full unchanged qualification/protected follow-up/ordinary Finalization and NEW +exact-definitive-main installed/browser/screenshots/cleanup remain required. +No earlier targeted or historical result is transferred to this candidate. +The reporter self-tests still used historical528/524 positive counts after the +admitted corpus expansion. Original standalone4FAIL/3PASS is retained; explicit +current532/528 positive expectations now pass7/7, with baseline4 and all rejection +controls retained plus an explicit old528 incomplete-corpus rejection. Reporter +logic and owning commands are unchanged. An initial broad discovery accidentally +imported Node self-tests and failed JSON collection; that raw output remains. +Exact owning three-file discovery confirms all532 contracts and all531 predecessors, +not a browser execution PASS. + + +## Preserved correction32 product snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6137058543): +consumed32, same writer/branch/history and unchanged operational budgets; no +administrative count stop. Correction31 c859e75/treea6fb2cd/wheel18e935ed actually +ended seven PASS and one FAIL/exit1, NOT_ADMITTED, preserved. Q-C31-DETACH-01 is +an actual presentation identity defect: identical real HTTP/SSE stored values have +different object-key order, so the old JSON.stringify signature removes native +cards. Controlled installed original proof retains actual node connected before +HTTP→SSE and disconnected after, a real MutationObserver removal, identical +semantic values and three cards before/after. No lost-focus/scroll claim is made +(scrollTop0); the old failure callback timing is not reconstructed. Independent +Quality/Security admit only canonical object-key comparison with every value, +type, array position, scope, locale, evidence and recovery preserved. + +Correction32 applies that pure ephemeral signature repair and the supported +canonical product bump to EP2.3.117. The owning browser regression binds real +current-document HTTP/body/SSE frame and native card identity across actual +initial SSE transport release; normal active/history-absence, all six stored +history/refault cases and native geometry remain. Detached native-DOM renderer +unit negatives separately test real value/type/array/scope/locale/recovery/null +changes and safe own prototype-named keys; these are not server authority tests. +Real authority/epoch/revocation controls and all sandbox/log fixes remain intact. +One new exact artifact and focused evidence must be admitted before freezing a +complete candidate for full unchanged qualification/protected follow-up, +ordinary Finalization and NEW exact-definitive-main installed/browser/screenshots +and cleanup. All earlier failures, proofs and closed349/350/forebears remain. + + +## Preserved correction31 fixture snapshot — 2026-10-13 + +[ACK and single booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6136905944): +consumed31 without an administrative stop cap; same writer, branch and history. +Correction30 provisional d58ef1a/tree5f97578/wheel7427b059 (EP2.3.116) +actually produced six history PASS and two normal FAIL, actual exit1, NOT_ADMITTED. +Independent Quality/Security admitted the current causal evidence: normal runs +remain active WAIT_FOR_OPERATOR_MERGE, with an actual empty terminal-history index. +Correction31 changes only the test expectation and current documentation: bind +completed HTTP200/current-document/response bytes, assert absent run, native modal +closed and deeplink removed, retain three active cards and native heading/geometry, +and capture normal-active-not-history. All six real history/refault tests remain. +Product CSS, package version2.3.116 and every authority/epoch/native/coverage guard +stay unchanged. Earlier red/failure/log/stop evidence is retained. New exact +artifact, focused qualification, whole independent reviews, full owning CI, +protected follow-up/Finalization and NEW definitive-main installed/browser proof +remain pending. No result is transferred from the old protected890 visual REJECT. + + +## Preserved correction30 implementation snapshot — 2026-10-13 + +Same assignment, r34/plan7, ARCHITECT_2 / LANE_2_WORK, original source branch and +history. [Correction30 admission and booking](https://github.com/pcvantol/forge/issues/142#issuecomment-6136286217) +records consumed30 exactly once; the original14 and every later round remain +consumed, with no administrative count stop under decision6123356344 and unchanged +operational/security budgets. PR349 and ordinary Finalization350 remain closed. +Their protected EP2.3.115 main is `890915ad77cec21b39f4d3c60cdc3e263c2c8de7`; +the source-continuity merge `022eba78f95c8e8ad5b60cf2e9f979276c018477` retains +both1265280 and890915ad parents, with exact protected tree5bdad176. Three documentary +merge conflicts and both original sides were retained; no source history reset. + +New exact890915ad browser12 executed524 mandatory first-attempt PASS plus4 unchanged +baseline NOT_RUN, with205 fresh PNGs and closed worker/page/guard evidence. That +execution result does **not** close visual acceptance: independent Quality found +**Q-FINAL-VIS-01 / REJECT**, unreadable overlapping stored-history panels in genuine +uncertain-result, missing and failed cases. These original screenshots remain +unchanged; they have not been published as a defect-free delivery. The actual +original32-second delay and unavailable historical evidence remain separate. + +Actual installed causal diagnosis proves original implicit grid rows38px despite +417.59/218/417.59px cards, producing negative361.59/162px spacing. A temporary, +page-only intrinsic-row intervention gives18px spacing; removal reproduces the +original overlap. Normal active cards remain10px apart. Independent causal Q/S +admit only the narrow history-content grid repair. All four actual diagnostic +workers stopped with guards and passive model/Git effects zero. The first hidden +select diagnostic setup failure is retained, not qualified or reconstructed. + +Current **PRODUCT correction30 / EP2.3.116 candidate, qualification pending** adds intrinsic rows to the +owning history grid, actual pre-capture geometry and original/refault detection, +native scroll/heading checks and three mandatory iPhone history cases. Six +original installed desktop/iPhone cases first failed the real overlap assertion +before the product repair. All528 former canonical contracts and their4 baseline +skips remain exact; discovery-only now lists531 cases/527 mandatory, not a test +PASS. Source canonical version11components is checked; the new committed package, +focused positive regressions, complete independent reviews, unchanged full CI, +protected follow-up delivery, ordinary Finalization and NEW truly definitive +main installed/browser/screenshots/readback/cleanup remain pending. R33/r43/r44/GP +remain closed; HOB-EP01 waits. No execution, live-provider, adoption or signing +authority is added. Prior delivery paragraphs below are historical identities, +not approval or installed PASS for the new candidate. + +## Historical r34 source delivery through correction29 — 2026-10-13 The [stored specialist evidence/recovery Console slice](../development/DASHBOARD_SPECIALISTS_RECOVERY_V1_DELIVERY.md) is source-qualified on protected EP2.3.115 main624f99f4. Exact implementation diff --git a/package-lock.json b/package-lock.json index 98eab79d..d718c1b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "engineering-platform-browser-validation", - "version": "2.3.115", + "version": "2.3.119", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "engineering-platform-browser-validation", - "version": "2.3.115", + "version": "2.3.119", "devDependencies": { "@openai/codex": "0.160.1", "@playwright/test": "1.63.0", diff --git a/package.json b/package.json index 791d1a31..90e99bbb 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { "name": "engineering-platform-browser-validation", "private": true, - "version": "2.3.115", + "version": "2.3.119", "scripts": { "test:engineering-dashboard": "PYTHONPATH=src python3 -m engineering_platform.dashboard_browser_validation", - "test:engineering-dashboard-logic": "node --test tests/engineering/dashboard_status_store.test.mjs tests/engineering/ui_localization_contract.test.mjs tests/engineering/dashboard_translation.test.mjs tests/engineering/dashboard_js_coverage.test.mjs tests/engineering/dashboard_worker_logs.test.mjs", + "test:engineering-dashboard-logic": "node --test tests/engineering/dashboard_status_store.test.mjs tests/engineering/ui_localization_contract.test.mjs tests/engineering/dashboard_translation.test.mjs tests/engineering/dashboard_js_coverage.test.mjs tests/engineering/dashboard_worker_logs.test.mjs tests/engineering/dashboard_log_read.test.mjs", "test:ui-localization": "node tools/qualification/ui_localization_contract.mjs .", "test:p-transport-ingress-matrix": "python3 tools/qualification/p_transport_installed_ingress_matrix.py --source-root ." }, diff --git a/pyproject.toml b/pyproject.toml index f13335f0..0262d4ce 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "engineering-platform" -version = "2.3.115" +version = "2.3.119" description = "Local-first Engineering Platform execution operations runtime" readme = "README.md" requires-python = ">=3.14,<3.15" diff --git a/src/engineering_platform/ENGINEERING_PLATFORM_CONFIG.json b/src/engineering_platform/ENGINEERING_PLATFORM_CONFIG.json index ed346bd1..acc3371e 100644 --- a/src/engineering_platform/ENGINEERING_PLATFORM_CONFIG.json +++ b/src/engineering_platform/ENGINEERING_PLATFORM_CONFIG.json @@ -3,7 +3,7 @@ "platform": { "id": "engineering-platform", "name": "Engineering Platform", - "version": "2.3.115", + "version": "2.3.119", "generation": 2, "documentation_namespace": "engineering-platform", "capability_registry_version": 1 diff --git a/src/engineering_platform/ENGINEERING_PLATFORM_VERSION.json b/src/engineering_platform/ENGINEERING_PLATFORM_VERSION.json index 4958b5c2..c47e5cb5 100644 --- a/src/engineering_platform/ENGINEERING_PLATFORM_VERSION.json +++ b/src/engineering_platform/ENGINEERING_PLATFORM_VERSION.json @@ -1,15 +1,15 @@ { "bootstrap_contract": "2026.12", "checkpoint_format": 1, - "dashboard_version": "2.3.115", + "dashboard_version": "2.3.119", "handoff_protocol": 1, "memory_format": 2, "minimum_codex_cli": "0.146.0", "inbox_protocol": 1, - "platform_version": "2.3.115", + "platform_version": "2.3.119", "report_format": 2, - "runner_version": "2.3.115", + "runner_version": "2.3.119", "status_model": 1, "storage_schema": 45, - "watcher_version": "2.3.115" + "watcher_version": "2.3.119" } diff --git a/src/engineering_platform/assets/dashboard.css b/src/engineering_platform/assets/dashboard.css index 7ca10d7a..a1990f17 100644 --- a/src/engineering_platform/assets/dashboard.css +++ b/src/engineering_platform/assets/dashboard.css @@ -276,7 +276,7 @@ html[data-theme="light"] :is(#rateLimitReset,#codexCliUpdate){background:#e8fff5 .prompt-history-row{cursor:pointer}.prompt-history-lineage{color:#b9b6c0;display:block;font:11px/1.35 system-ui;margin-top:4px;white-space:normal} /* The shared modal shell owns the prompt-detail frame and header. This component owns only its evidence layout and its inner document cards. */ -.prompt-detail-modal__panel{display:grid;grid-template-rows:auto auto minmax(0,1fr);height:100%;overflow:hidden}.prompt-detail-modal__content{align-items:start;box-sizing:border-box;display:grid;gap:18px;grid-template-columns:minmax(0,1fr) minmax(280px,.82fr);min-height:0;overflow:auto;overscroll-behavior:contain;padding:0 12px 10px;scrollbar-gutter:stable both-edges}.prompt-detail-leftbar,.prompt-detail-rightbar{align-content:start;align-items:start;display:grid;gap:18px;grid-row:1;min-width:0}.prompt-detail-leftbar{grid-column:1}.prompt-detail-rightbar{grid-column:2}.prompt-detail-leftbar :is(.prompt-detail-card--execution-summary,.prompt-detail-sidebar),.prompt-detail-rightbar :is(.prompt-detail-card--execution-context,.prompt-detail-card--pull-requests){grid-column:auto;grid-row:auto}.prompt-detail-sidebar{align-content:start;align-items:start;display:grid;gap:18px}.prompt-detail-card{border:1px solid var(--category-color);border-radius:14px;padding:18px}.prompt-detail-card--wide{grid-column:1/-1}.prompt-detail-card h3{color:var(--category-color);font-size:18px;margin:0 0 14px}.prompt-detail-card .field{margin:0 0 14px}.prompt-detail-card .field:last-child{margin-bottom:0}.prompt-detail-card pre{overflow-wrap:anywhere;white-space:pre-wrap}.prompt-detail-diagnostic>span:last-child{white-space:pre-wrap}.prompt-detail-card--execution-context{min-width:0;overflow:hidden}.prompt-detail-card--execution-context :is(.field,.label,span,li){min-width:0;overflow-wrap:anywhere;word-break:break-word}.detail-list-field ul{margin:6px 0 0;padding-inline-start:22px}@media (max-width:620px){.prompt-detail-modal__content{grid-template-columns:1fr;padding-inline:8px}.prompt-detail-leftbar,.prompt-detail-rightbar{grid-column:1;grid-row:auto}} +.prompt-detail-modal__panel{display:grid;grid-template-rows:auto auto minmax(0,1fr);height:100%;overflow:hidden}.prompt-detail-modal__content{align-content:start;align-items:start;box-sizing:border-box;display:grid;gap:18px;grid-auto-rows:max-content;grid-template-columns:minmax(0,1fr) minmax(280px,.82fr);min-height:0;overflow:auto;overscroll-behavior:contain;padding:0 12px 10px;scrollbar-gutter:stable both-edges}.prompt-detail-leftbar,.prompt-detail-rightbar{align-content:start;align-items:start;display:grid;gap:18px;grid-row:1;min-width:0}.prompt-detail-leftbar{grid-column:1}.prompt-detail-rightbar{grid-column:2}.prompt-detail-leftbar :is(.prompt-detail-card--execution-summary,.prompt-detail-sidebar),.prompt-detail-rightbar :is(.prompt-detail-card--execution-context,.prompt-detail-card--pull-requests){grid-column:auto;grid-row:auto}.prompt-detail-sidebar{align-content:start;align-items:start;display:grid;gap:18px}.prompt-detail-card{border:1px solid var(--category-color);border-radius:14px;padding:18px}.prompt-detail-card--wide{grid-column:1/-1}.prompt-detail-card h3{color:var(--category-color);font-size:18px;margin:0 0 14px}.prompt-detail-card .field{margin:0 0 14px}.prompt-detail-card .field:last-child{margin-bottom:0}.prompt-detail-card pre{overflow-wrap:anywhere;white-space:pre-wrap}.prompt-detail-diagnostic>span:last-child{white-space:pre-wrap}.prompt-detail-card--execution-context{min-width:0;overflow:hidden}.prompt-detail-card--execution-context :is(.field,.label,span,li){min-width:0;overflow-wrap:anywhere;word-break:break-word}.detail-list-field ul{margin:6px 0 0;padding-inline-start:22px}@media (max-width:620px){.prompt-detail-modal__content{grid-template-columns:1fr;padding-inline:8px}.prompt-detail-leftbar,.prompt-detail-rightbar{grid-column:1;grid-row:auto}} .prompt-detail-provider-review{display:grid;gap:18px;grid-column:1/-1;grid-template-columns:minmax(0,1fr) minmax(320px,.78fr)}@media (max-width:760px){.prompt-detail-provider-review{grid-template-columns:1fr}} .prompt-detail-provider-review-stack{display:grid;gap:18px;grid-column:1/-1}.prompt-detail-provider-review>.prompt-detail-card{align-self:stretch;box-sizing:border-box}.prompt-detail-card--commit-timeline{display:flex;flex-direction:column;min-height:0}.prompt-detail-commit-timeline__list{align-content:start;display:grid;flex:1;gap:10px;list-style:none;margin:0;max-height:none;min-height:0;overflow:auto;padding:0 8px 0 0;scrollbar-gutter:stable}.prompt-detail-commit-timeline__item{border-top:1px solid color-mix(in srgb,var(--category-color) 38%,transparent);display:grid;gap:3px;padding-top:10px}.prompt-detail-commit-timeline__item:first-child{border-top:0;padding-top:0}.prompt-detail-commit-timeline__meta{color:var(--dashboard-modal-muted);font-size:12px;line-height:1.35}.prompt-detail-commit-timeline__item code{font-size:12px;overflow-wrap:normal;white-space:nowrap}.prompt-detail-commit-timeline__item>span{font-size:13px;line-height:1.4;overflow-wrap:anywhere} .prompt-detail-card--run-evidence{box-sizing:border-box;max-block-size:min(58vh,640px);min-width:0;overflow:auto;overflow-wrap:anywhere;overscroll-behavior:contain;scrollbar-gutter:stable} diff --git a/src/engineering_platform/assets/dashboard.js b/src/engineering_platform/assets/dashboard.js index 59cafe6d..a321f715 100644 --- a/src/engineering_platform/assets/dashboard.js +++ b/src/engineering_platform/assets/dashboard.js @@ -4068,8 +4068,19 @@ function refreshComponentLogs(versions = {}, force = false) { const requestId = ++componentLogRequestId; return fetch(componentLogRequestUrl("platform")) .then((response) => response.ok ? response.json() : Promise.reject(Error("platform logs unavailable"))) - .then((platform) => { + .then((platform) => ({ available: true, platform }), () => ({ available: false })) + .then(({ available, platform }) => { if (requestId !== componentLogRequestId) return; + if (!available) { + componentLogServerPaged = false; + componentLogsLoaded = true; + componentLogEntries.platform = structuredLogEntries(JSON.stringify({ + level: "ERROR", event: "platform_log_unavailable", diagnostic: t("logs.dashboard_unavailable"), + })); + $("componentLogControls").hidden = false; + renderComponentLogs(); + return; + } componentLogEntries.platform = normalizedComponentLogEntries(platform.entries); componentLogTotals.platform = Number(platform.total) || 0; componentLogAvailableEvents.platform = Array.isArray(platform.events) ? platform.events : []; @@ -4077,16 +4088,6 @@ function refreshComponentLogs(versions = {}, force = false) { componentLogsLoaded = true; $("componentLogControls").hidden = false; renderComponentLogs(); - }) - .catch(() => { - if (requestId !== componentLogRequestId) return; - componentLogServerPaged = false; - componentLogsLoaded = true; - componentLogEntries.platform = structuredLogEntries(JSON.stringify({ - level: "ERROR", event: "platform_log_unavailable", diagnostic: t("logs.dashboard_unavailable"), - })); - $("componentLogControls").hidden = false; - renderComponentLogs(); }); } function enableLiveComponentLogs() { diff --git a/src/engineering_platform/assets/dashboard_locales.mjs b/src/engineering_platform/assets/dashboard_locales.mjs index cf271b7f..258070f6 100644 --- a/src/engineering_platform/assets/dashboard_locales.mjs +++ b/src/engineering_platform/assets/dashboard_locales.mjs @@ -3685,6 +3685,173 @@ Object.assign(DASHBOARD_MESSAGES.de, {"execution_context.planning_not_supplied": Object.assign(DASHBOARD_MESSAGES.fr, {"execution_context.planning_not_supplied":"Le producteur n’a fourni aucun contexte supplémentaire de mission ou de planification."}); Object.assign(DASHBOARD_MESSAGES.es, {"execution_context.planning_not_supplied":"El productor no proporcionó contexto adicional de misión o planificación."}); +// Literal log events from the owning lifecycle producers and Console read failure. +Object.assign(DASHBOARD_MESSAGES.en, { + "log_event.dashboard_action_completed": "Console action completed", + "log_event.dashboard_action_failed": "Console action failed", + "log_event.execution_phase_telemetry_unavailable": "Execution timing unavailable", + "log_event.lifecycle_admission_decided": "Execution admission decided", + "log_event.lifecycle_input_materialized": "Execution input prepared", + "log_event.lifecycle_local_binding_unavailable": "Local execution binding unavailable", + "log_event.lifecycle_operator_gate_dismissed": "Operator decision dismissed", + "log_event.lifecycle_phase_checkpointed": "Execution phase recorded", + "log_event.lifecycle_precheckpoint_failed": "Execution checkpoint preparation failed", + "log_event.lifecycle_report_analysis_available": "Run report analysis available", + "log_event.lifecycle_report_analysis_backfill_unavailable": "Run report analysis backfill unavailable", + "log_event.lifecycle_report_analysis_backfilled": "Run report analysis backfilled", + "log_event.lifecycle_report_analysis_unavailable": "Run report analysis unavailable", + "log_event.lifecycle_retry_submitted": "Execution retry submitted", + "log_event.lifecycle_run_state_changed": "Execution state changed", + "log_event.lifecycle_runner_finished": "Execution supervision finished", + "log_event.lifecycle_runner_started": "Execution supervision started", + "log_event.lifecycle_submission_claimed": "Execution submission claimed", + "log_event.lifecycle_terminal_evidence_available": "Terminal execution evidence available", + "log_event.lifecycle_terminal_evidence_unavailable": "Terminal execution evidence unavailable", + "log_event.managed_autonomy_evidence_unavailable": "Managed autonomy evidence unavailable", + "log_event.managed_governance_gate_evidence_unavailable": "Managed governance evidence unavailable", + "log_event.managed_pr_check_evidence_unavailable": "Managed pull request check evidence unavailable", + "log_event.managed_validation_evidence_unavailable": "Managed validation evidence unavailable", + "log_event.parallel_action_terminal_reconciliation_pending": "Parallel action result reconciliation pending", + "log_event.platform_log_unavailable": "Platform log unavailable", + "log_event.provider_invocation_telemetry_unavailable": "Provider invocation timing unavailable", + "log_event.terminal_lease_release_failed": "Terminal execution lease release failed", + "log_event.validation_command_start_evidence_unavailable": "Validation command start evidence unavailable", + "log_event.validation_command_terminal_evidence_unavailable": "Validation command terminal evidence unavailable", + "log_event.validation_diagnostic_capture_unavailable": "Validation diagnostic capture unavailable" +}); +Object.assign(DASHBOARD_MESSAGES.nl, { + "log_event.dashboard_action_completed": "Consoleactie uitgevoerd", + "log_event.dashboard_action_failed": "Consoleactie mislukt", + "log_event.execution_phase_telemetry_unavailable": "Tijdsgegevens van uitvoering niet beschikbaar", + "log_event.lifecycle_admission_decided": "Toelating van uitvoering beoordeeld", + "log_event.lifecycle_input_materialized": "Invoer voor uitvoering voorbereid", + "log_event.lifecycle_local_binding_unavailable": "Lokale uitvoeringskoppeling niet beschikbaar", + "log_event.lifecycle_operator_gate_dismissed": "Operatorbesluit afgewezen", + "log_event.lifecycle_phase_checkpointed": "Uitvoeringsfase vastgelegd", + "log_event.lifecycle_precheckpoint_failed": "Voorbereiding van uitvoeringscheckpoint mislukt", + "log_event.lifecycle_report_analysis_available": "Analyse van uitvoeringsrapport beschikbaar", + "log_event.lifecycle_report_analysis_backfill_unavailable": "Aanvulling van uitvoeringsrapportanalyse niet beschikbaar", + "log_event.lifecycle_report_analysis_backfilled": "Analyse van uitvoeringsrapport aangevuld", + "log_event.lifecycle_report_analysis_unavailable": "Analyse van uitvoeringsrapport niet beschikbaar", + "log_event.lifecycle_retry_submitted": "Nieuwe uitvoeringspoging ingediend", + "log_event.lifecycle_run_state_changed": "Uitvoeringsstatus gewijzigd", + "log_event.lifecycle_runner_finished": "Begeleiding van uitvoering beëindigd", + "log_event.lifecycle_runner_started": "Begeleiding van uitvoering gestart", + "log_event.lifecycle_submission_claimed": "Uitvoeringsaanvraag opgepakt", + "log_event.lifecycle_terminal_evidence_available": "Eindbewijs van uitvoering beschikbaar", + "log_event.lifecycle_terminal_evidence_unavailable": "Eindbewijs van uitvoering niet beschikbaar", + "log_event.managed_autonomy_evidence_unavailable": "Bewijs voor beheerde autonomie niet beschikbaar", + "log_event.managed_governance_gate_evidence_unavailable": "Bewijs voor beheerde governance niet beschikbaar", + "log_event.managed_pr_check_evidence_unavailable": "Bewijs van beheerde PR-controles niet beschikbaar", + "log_event.managed_validation_evidence_unavailable": "Bewijs van beheerde validatie niet beschikbaar", + "log_event.parallel_action_terminal_reconciliation_pending": "Afstemming van parallelle actieresultaten in afwachting", + "log_event.platform_log_unavailable": "Platformlog niet beschikbaar", + "log_event.provider_invocation_telemetry_unavailable": "Tijdsgegevens van provideraanroep niet beschikbaar", + "log_event.terminal_lease_release_failed": "Vrijgeven van uitvoeringslease na afronding mislukt", + "log_event.validation_command_start_evidence_unavailable": "Startbewijs van validatieopdracht niet beschikbaar", + "log_event.validation_command_terminal_evidence_unavailable": "Eindbewijs van validatieopdracht niet beschikbaar", + "log_event.validation_diagnostic_capture_unavailable": "Vastlegging van validatiediagnose niet beschikbaar" +}); +Object.assign(DASHBOARD_MESSAGES.de, { + "log_event.dashboard_action_completed": "Konsolenaktion abgeschlossen", + "log_event.dashboard_action_failed": "Konsolenaktion fehlgeschlagen", + "log_event.execution_phase_telemetry_unavailable": "Zeitdaten der Ausführung nicht verfügbar", + "log_event.lifecycle_admission_decided": "Zulassung der Ausführung bewertet", + "log_event.lifecycle_input_materialized": "Eingabe für die Ausführung vorbereitet", + "log_event.lifecycle_local_binding_unavailable": "Lokale Ausführungszuordnung nicht verfügbar", + "log_event.lifecycle_operator_gate_dismissed": "Operatorentscheidung verworfen", + "log_event.lifecycle_phase_checkpointed": "Ausführungsphase gespeichert", + "log_event.lifecycle_precheckpoint_failed": "Vorbereitung des Ausführungsprüfpunkts fehlgeschlagen", + "log_event.lifecycle_report_analysis_available": "Analyse des Ausführungsberichts verfügbar", + "log_event.lifecycle_report_analysis_backfill_unavailable": "Nachträgliche Ergänzung der Berichtsanalyse nicht verfügbar", + "log_event.lifecycle_report_analysis_backfilled": "Analyse des Ausführungsberichts nachträglich ergänzt", + "log_event.lifecycle_report_analysis_unavailable": "Analyse des Ausführungsberichts nicht verfügbar", + "log_event.lifecycle_retry_submitted": "Erneuter Ausführungsversuch eingereicht", + "log_event.lifecycle_run_state_changed": "Ausführungsstatus geändert", + "log_event.lifecycle_runner_finished": "Überwachung der Ausführung beendet", + "log_event.lifecycle_runner_started": "Überwachung der Ausführung gestartet", + "log_event.lifecycle_submission_claimed": "Ausführungsanfrage übernommen", + "log_event.lifecycle_terminal_evidence_available": "Abschließender Ausführungsnachweis verfügbar", + "log_event.lifecycle_terminal_evidence_unavailable": "Abschließender Ausführungsnachweis nicht verfügbar", + "log_event.managed_autonomy_evidence_unavailable": "Nachweis für verwaltete Autonomie nicht verfügbar", + "log_event.managed_governance_gate_evidence_unavailable": "Nachweis für verwaltete Governance nicht verfügbar", + "log_event.managed_pr_check_evidence_unavailable": "Nachweis verwalteter Pull-Request-Prüfungen nicht verfügbar", + "log_event.managed_validation_evidence_unavailable": "Nachweis verwalteter Validierung nicht verfügbar", + "log_event.parallel_action_terminal_reconciliation_pending": "Abgleich paralleler Aktionsergebnisse ausstehend", + "log_event.platform_log_unavailable": "Plattformprotokoll nicht verfügbar", + "log_event.provider_invocation_telemetry_unavailable": "Zeitdaten des Anbieteraufrufs nicht verfügbar", + "log_event.terminal_lease_release_failed": "Freigabe der Ausführungslease nach Abschluss fehlgeschlagen", + "log_event.validation_command_start_evidence_unavailable": "Startnachweis des Validierungsbefehls nicht verfügbar", + "log_event.validation_command_terminal_evidence_unavailable": "Abschlussnachweis des Validierungsbefehls nicht verfügbar", + "log_event.validation_diagnostic_capture_unavailable": "Aufzeichnung der Validierungsdiagnose nicht verfügbar" +}); +Object.assign(DASHBOARD_MESSAGES.fr, { + "log_event.dashboard_action_completed": "Action de la console terminée", + "log_event.dashboard_action_failed": "Échec de l’action de la console", + "log_event.execution_phase_telemetry_unavailable": "Données de durée d’exécution indisponibles", + "log_event.lifecycle_admission_decided": "Admission de l’exécution évaluée", + "log_event.lifecycle_input_materialized": "Entrée de l’exécution préparée", + "log_event.lifecycle_local_binding_unavailable": "Liaison locale de l’exécution indisponible", + "log_event.lifecycle_operator_gate_dismissed": "Décision de l’opérateur rejetée", + "log_event.lifecycle_phase_checkpointed": "Phase d’exécution enregistrée", + "log_event.lifecycle_precheckpoint_failed": "Préparation du point de contrôle de l’exécution échouée", + "log_event.lifecycle_report_analysis_available": "Analyse du rapport d’exécution disponible", + "log_event.lifecycle_report_analysis_backfill_unavailable": "Complément de l’analyse du rapport indisponible", + "log_event.lifecycle_report_analysis_backfilled": "Analyse du rapport d’exécution complétée", + "log_event.lifecycle_report_analysis_unavailable": "Analyse du rapport d’exécution indisponible", + "log_event.lifecycle_retry_submitted": "Nouvelle tentative d’exécution soumise", + "log_event.lifecycle_run_state_changed": "État de l’exécution modifié", + "log_event.lifecycle_runner_finished": "Supervision de l’exécution terminée", + "log_event.lifecycle_runner_started": "Supervision de l’exécution démarrée", + "log_event.lifecycle_submission_claimed": "Demande d’exécution prise en charge", + "log_event.lifecycle_terminal_evidence_available": "Preuve finale de l’exécution disponible", + "log_event.lifecycle_terminal_evidence_unavailable": "Preuve finale de l’exécution indisponible", + "log_event.managed_autonomy_evidence_unavailable": "Preuve d’autonomie gérée indisponible", + "log_event.managed_governance_gate_evidence_unavailable": "Preuve de gouvernance gérée indisponible", + "log_event.managed_pr_check_evidence_unavailable": "Preuve des contrôles gérés de la demande de fusion indisponible", + "log_event.managed_validation_evidence_unavailable": "Preuve de validation gérée indisponible", + "log_event.parallel_action_terminal_reconciliation_pending": "Rapprochement des résultats des actions parallèles en attente", + "log_event.platform_log_unavailable": "Journal de la plateforme indisponible", + "log_event.provider_invocation_telemetry_unavailable": "Données de durée de l’appel fournisseur indisponibles", + "log_event.terminal_lease_release_failed": "Libération du bail d’exécution après clôture échouée", + "log_event.validation_command_start_evidence_unavailable": "Preuve de démarrage de la commande de validation indisponible", + "log_event.validation_command_terminal_evidence_unavailable": "Preuve finale de la commande de validation indisponible", + "log_event.validation_diagnostic_capture_unavailable": "Capture du diagnostic de validation indisponible" +}); +Object.assign(DASHBOARD_MESSAGES.es, { + "log_event.dashboard_action_completed": "Acción de la consola completada", + "log_event.dashboard_action_failed": "Error en la acción de la consola", + "log_event.execution_phase_telemetry_unavailable": "Datos de tiempo de ejecución no disponibles", + "log_event.lifecycle_admission_decided": "Admisión de la ejecución evaluada", + "log_event.lifecycle_input_materialized": "Entrada de ejecución preparada", + "log_event.lifecycle_local_binding_unavailable": "Vinculación local de ejecución no disponible", + "log_event.lifecycle_operator_gate_dismissed": "Decisión del operador descartada", + "log_event.lifecycle_phase_checkpointed": "Fase de ejecución registrada", + "log_event.lifecycle_precheckpoint_failed": "Error al preparar el punto de control de ejecución", + "log_event.lifecycle_report_analysis_available": "Análisis del informe de ejecución disponible", + "log_event.lifecycle_report_analysis_backfill_unavailable": "Complemento del análisis del informe no disponible", + "log_event.lifecycle_report_analysis_backfilled": "Análisis del informe de ejecución completado", + "log_event.lifecycle_report_analysis_unavailable": "Análisis del informe de ejecución no disponible", + "log_event.lifecycle_retry_submitted": "Nuevo intento de ejecución enviado", + "log_event.lifecycle_run_state_changed": "Estado de ejecución cambiado", + "log_event.lifecycle_runner_finished": "Supervisión de ejecución finalizada", + "log_event.lifecycle_runner_started": "Supervisión de ejecución iniciada", + "log_event.lifecycle_submission_claimed": "Solicitud de ejecución asumida", + "log_event.lifecycle_terminal_evidence_available": "Evidencia final de ejecución disponible", + "log_event.lifecycle_terminal_evidence_unavailable": "Evidencia final de ejecución no disponible", + "log_event.managed_autonomy_evidence_unavailable": "Evidencia de autonomía gestionada no disponible", + "log_event.managed_governance_gate_evidence_unavailable": "Evidencia de gobernanza gestionada no disponible", + "log_event.managed_pr_check_evidence_unavailable": "Evidencia de comprobaciones gestionadas de la solicitud de fusión no disponible", + "log_event.managed_validation_evidence_unavailable": "Evidencia de validación gestionada no disponible", + "log_event.parallel_action_terminal_reconciliation_pending": "Conciliación de resultados de acciones paralelas pendiente", + "log_event.platform_log_unavailable": "Registro de la plataforma no disponible", + "log_event.provider_invocation_telemetry_unavailable": "Datos de tiempo de llamada al proveedor no disponibles", + "log_event.terminal_lease_release_failed": "Error al liberar la concesión de ejecución tras finalizar", + "log_event.validation_command_start_evidence_unavailable": "Evidencia de inicio del comando de validación no disponible", + "log_event.validation_command_terminal_evidence_unavailable": "Evidencia final del comando de validación no disponible", + "log_event.validation_diagnostic_capture_unavailable": "Captura del diagnóstico de validación no disponible" +}); + Object.assign(DASHBOARD_MESSAGES.en, { "state.WATCHER_WORKSPACE_MIGRATION_BLOCKED": "Watcher restart blocked by workspace migration", "logs.event_fallback":"System event: {event}", diff --git a/src/engineering_platform/assets/dashboard_run_evidence.mjs b/src/engineering_platform/assets/dashboard_run_evidence.mjs index 12cf0589..917ce036 100644 --- a/src/engineering_platform/assets/dashboard_run_evidence.mjs +++ b/src/engineering_platform/assets/dashboard_run_evidence.mjs @@ -1,9 +1,19 @@ /* Stored, scoped evidence only. This renderer has no network or storage effects. */ const activeViews = new WeakMap(); +// HTTP and SSE can encode the same stored object with different key order. +// Preserve every value and array position; only object-key order is incidental. +function semanticEvidenceIdentity(value) { + if (Array.isArray(value)) return value.map(semanticEvidenceIdentity); + if (value && typeof value === "object") return Object.fromEntries( + Object.keys(value).sort().map(key => [key, semanticEvidenceIdentity(value[key])]), + ); + return value; +} + export function syncStoredRunEvidence(container, evidence, recovery, options) { const previous = activeViews.get(container); - const signature = evidence ? JSON.stringify([options.scope, options.locale, evidence, recovery]) : null; + const signature = evidence ? JSON.stringify(semanticEvidenceIdentity([options.scope, options.locale, evidence, recovery])) : null; if (previous?.signature === signature) return; for (const node of container.querySelectorAll("[data-run-evidence]")) node.remove(); activeViews.delete(container); diff --git a/src/engineering_platform/platform_version.py b/src/engineering_platform/platform_version.py index 95f0c8a9..ea3f97f8 100644 --- a/src/engineering_platform/platform_version.py +++ b/src/engineering_platform/platform_version.py @@ -12,7 +12,7 @@ SEMVER = re.compile(r"^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$") CONTRACT = re.compile(r"^(\d{4})\.(0[1-9]|1[0-2])$") -CURRENT_PLATFORM_VERSION = "2.3.115" +CURRENT_PLATFORM_VERSION = "2.3.119" MANIFEST_FIELDS = frozenset( { "platform_version", diff --git a/src/engineering_platform/templates/workspace-config.json b/src/engineering_platform/templates/workspace-config.json index 2150c33e..cf2dd518 100644 --- a/src/engineering_platform/templates/workspace-config.json +++ b/src/engineering_platform/templates/workspace-config.json @@ -3,7 +3,7 @@ "platform": { "id": "engineering-platform", "name": "Engineering Platform", - "version": "2.3.115", + "version": "2.3.119", "generation": 2, "documentation_namespace": "engineering-platform", "capability_registry_version": 1 diff --git a/tests/engineering/dashboard.spec.mjs b/tests/engineering/dashboard.spec.mjs index cffc5e0a..2c730888 100644 --- a/tests/engineering/dashboard.spec.mjs +++ b/tests/engineering/dashboard.spec.mjs @@ -5569,7 +5569,37 @@ test.describe("Engineering Status browser smoke", () => { await expect(row).toContainText("1"); }); - test("localizes the telemetry detail title for every supported language", async ({ page }) => { + test("localizes the telemetry detail title for every supported language", async ({ page }, testInfo) => { + const observer = await observeConsoleDocument(page), errors = [], auditProofs = []; + const pageError = error => errors.push(error); + page.on("pageerror", pageError); + const phaseKeys = ["domainLookupStart", "domainLookupEnd", "connectStart", + "secureConnectionStart", "connectEnd", "requestStart", "responseStart"]; + const bindActualResponse = async (response, expectedStatus) => { + expect(response.status()).toBe(expectedStatus); + expect(response.request().frame()).toBe(page.mainFrame()); + const documentId = await observer.documentId(), timing = response.request().timing(); + expect(Number.isFinite(timing.startTime) && timing.startTime > 0).toBe(true); + expect(phaseKeys.every(key => Number.isFinite(timing[key]))).toBe(true); + let record; + await expect.poll(() => { + const matches = observer.records().filter(item => item.document_id === documentId + && item.url === response.url() && item.method === response.request().method() + && item.status === expectedStatus && item.cached_request === false + && phaseKeys.every(key => Number.isFinite(item.native_relative_timing?.[key]) + && item.native_relative_timing[key] === timing[key])); + expect(matches.length).toBeLessThanOrEqual(1); + record = matches[0]; return Boolean(record); + }).toBe(true); + const frameIds = new Set(observer.records().filter(item => item.document_id === documentId).map(item => item.frame_id)); + expect(frameIds.size).toBe(1); expect(frameIds.has(record.frame_id)).toBe(true); + const bytes = await response.body(), responseHash = createHash("sha256").update(bytes).digest("hex"); + await expect.poll(() => observer.records().some(item => item.request_id === record.request_id + && item.document_id === documentId && item.completed && item.response_sha256 === responseHash)).toBe(true); + expect(await observer.documentId()).toBe(documentId); + return { body: JSON.parse(bytes.toString("utf8")), proof: { request_id: record.request_id, + document_id: documentId, status: expectedStatus, response_sha256: responseHash } }; + }; const expectations = [ ["en", "Execution Telemetry — 24-08-2026"], ["nl", "Uitvoeringstelemetrie — 24-08-2026"], @@ -5580,7 +5610,25 @@ test.describe("Engineering Status browser smoke", () => { await page.route("**/api/telemetry/**", (route) => route.fulfill({ json: { summary: {}, phases: [], bottlenecks: { top_time_consumers: [] }, runs: [], } })); - for (const [language, title] of expectations) { + // Deliberately retain a wider neighboring row from the installed producer. + // This is a modeled saved-log prelude, not a real configuration change. + const installedPrelude = process.env.EP_RUN_EVIDENCE_REQUIRE_INSTALLED === "1"; + const preludePython = installedPrelude ? process.env.EP_RUN_EVIDENCE_INSTALLED_PYTHON : "python3"; + const preludeEnvironment = { ...process.env }; + if (installedPrelude) { + expect(preludePython).toBeTruthy(); + delete preludeEnvironment.PYTHONPATH; + } + const preludeRuntime = JSON.parse(execFileSync(preludePython, ["-c", + "import sys,json,os;from pathlib import Path;from importlib.metadata import version;import engineering_platform.server as server;root=Path(sys.argv[1]);installed=os.environ.get('EP_RUN_EVIDENCE_REQUIRE_INSTALLED')=='1';assert not installed or (sys.prefix==str(Path(os.environ['EP_RUN_EVIDENCE_INSTALLED_PYTHON']).parent.parent) and '/site-packages/engineering_platform/' in server.__file__);assert (root/server.SERVER_DATABASE_FILENAME).is_file();server._audit_configuration_change(root,scope='MODELED_LOG_COLUMN_PRELUDE',key='capture_geometry_fixture',previous='modeled_before',value='modeled_after');print(json.dumps({'prefix':sys.prefix,'package':server.__file__,'version':version('engineering-platform')}))", dashboardRoot], + { cwd: repository, env: preludeEnvironment, encoding: "utf8" })); + if (process.env.EP_RUN_EVIDENCE_REQUIRE_INSTALLED === "1") { + expect(preludeRuntime.prefix).toBe(path.dirname(path.dirname(process.env.EP_RUN_EVIDENCE_INSTALLED_PYTHON))); + expect(preludeRuntime.package).toContain("/site-packages/engineering_platform/"); + } + const modeledPrelude = { scope: "MODELED_PERSISTED_LOG_NOT_ACTUAL_CONFIGURATION_CHANGE", + event: "configuration_changed", producer_version: preludeRuntime.version, settings_setter_called: false }; + try { for (const [language, title] of expectations) { await page.goto(dashboardUrl, { waitUntil: "domcontentloaded" }); await selectDashboardLocale(page, language); await expect(page.locator("html")).toHaveAttribute("lang", language); @@ -5594,10 +5642,197 @@ test.describe("Engineering Status browser smoke", () => { await page.locator("#executionTelemetry").evaluate((element) => { element.open = true; }); const telemetryRow = page.locator("#executionTelemetryRows .telemetry-row"); await expect(telemetryRow).toHaveCount(1); - await telemetryRow.evaluate((row) => row.click()); + // Telemetry presentation remains the declared renderer fixture above; + // this native action uses the actual Server audit producer and store. + const audited = page.waitForResponse(response => response.request().method() === "POST" + && new URL(response.url()).pathname === "/api/audit/user-action" + && response.request().postDataJSON()?.action === "telemetry_detail_opened"); + await expect(telemetryRow).toBeVisible(); + await telemetryRow.press("Enter"); + const completed = await bindActualResponse(await audited, 200); + expect(completed.body).toEqual({ logged: true }); await expect(page.locator("#telemetryDetailTitle")).toHaveText(title); await page.locator("#telemetryDetailClose").click(); + const configuration = await page.evaluate(async () => { + const response = await fetch("/api/configuration", { cache: "no-store" }); + if (!response.ok) throw Error("Actual fixture configuration read failed"); + return response.json(); + }); + // Explicit HTTP negative: empty input is rejected before settings writes. + // This is a real failed audit outcome, not a manufactured log payload. + const rejectedResponse = page.waitForResponse(response => response.request().method() === "POST" + && new URL(response.url()).pathname === "/api/configuration"); + expect(await page.evaluate(async () => (await fetch("/api/configuration", { + method: "POST", headers: { "Content-Type": "application/json" }, body: "{}", + })).status)).toBe(409); + const failed = await bindActualResponse(await rejectedResponse, 409); + expect(failed.body).toEqual({ error: "CONSOLE_CONFIGURATION_INVALID" }); + expect(await page.evaluate(async () => { + const response = await fetch("/api/configuration", { cache: "no-store" }); + if (!response.ok) throw Error("Actual fixture configuration reread failed"); + return response.json(); + })).toEqual(configuration); + if (await page.locator("#componentLogs").getAttribute("open") === null) + await page.locator("#componentLogs > summary").click(); + const logResponse = page.waitForResponse(response => response.request().method() === "GET" + && new URL(response.url()).pathname === "/api/logs/all" + && new URL(response.url()).searchParams.get("level") === "INFO"); + await page.locator("#logLevelFilter").selectOption("INFO"); + const logs = await bindActualResponse(await logResponse, 200); + expect(logs.body.entries.some(row => row.event === modeledPrelude.event + && row.configuration_scope === "MODELED_LOG_COLUMN_PRELUDE" + && row.configuration_key === "capture_geometry_fixture")).toBe(true); + for (const [event, outcome, action] of [["dashboard_action_completed", "COMPLETED", "telemetry_detail_opened"], + ["dashboard_action_failed", "FAILED", "console_configuration_changed"]]) { + expect(logs.body.entries.some(row => row.event === event && row.audit_outcome === outcome + && row.audit_action === action && row.audit_actor === "DASHBOARD_USER")).toBe(true); + await expect(page.locator(`#logEventFilter option[value="${event}"]`)) + .toHaveText(DASHBOARD_MESSAGES[language][`log_event.${event}`]); + await expect(page.locator("#platformComponentLog")) + .toContainText(DASHBOARD_MESSAGES[language][`log_event.${event}`]); + } + const optionsToggle = page.locator("#dashboardTitlebarOptionsToggle"); + if (await optionsToggle.getAttribute("aria-expanded") === "true") await optionsToggle.click(); + await expect(optionsToggle).toHaveAttribute("aria-expanded", "false"); + const eventCaptures = []; + for (const event of ["dashboard_action_completed", "dashboard_action_failed"]) { + const label = DASHBOARD_MESSAGES[language][`log_event.${event}`]; + // The event cell itself owns the text; retain the existing table and + // use its native scroll containers rather than cropping an oversized panel. + const target = page.locator("#platformComponentLog tr > td:nth-child(4)") + .filter({ hasText: label }).first(); + await expect(target).toHaveText(label); + await target.scrollIntoViewIfNeeded(); + const readGeometry = () => target.evaluate(node => { + const owner = node.closest(".log-table-wrap"), wrap = owner.getBoundingClientRect(); + const inner = { left: wrap.x + owner.clientLeft, top: wrap.y + owner.clientTop, + width: owner.clientWidth, height: owner.clientHeight }; + inner.right = inner.left + inner.width; inner.bottom = inner.top + inner.height; + const measure = rect => { + const paintedPoints = [[rect.x + 1, rect.y + 1], [rect.right - 1, rect.y + 1], + [rect.x + 1, rect.bottom - 1], [rect.right - 1, rect.bottom - 1], + [rect.x + rect.width / 2, rect.y + rect.height / 2]].map(([x, y]) => { + const painted = document.elementFromPoint(x, y); + return painted === node || node.contains(painted); + }); + return { x: rect.x, y: rect.y, width: rect.width, height: rect.height, + within_viewport: rect.x >= 0 && rect.y >= 0 && rect.right <= innerWidth && rect.bottom <= innerHeight, + within_scroll_wrap: rect.x >= inner.left && rect.right <= inner.right && rect.y >= inner.top && rect.bottom <= inner.bottom, + painted_points: paintedPoints, unobscured: paintedPoints.every(Boolean) }; + }; + const range = document.createRange(); range.selectNodeContents(node); + const rects = [...range.getClientRects()]; + return { ...measure(range.getBoundingClientRect()), text_rect_count: rects.length, + cell_geometry: measure(node.getBoundingClientRect()), + inner_scroll_window: inner, scroll_left: owner.scrollLeft, + maximum_scroll_left: owner.scrollWidth - owner.clientWidth, + text_fits: node.scrollWidth <= node.clientWidth && node.scrollHeight <= node.clientHeight }; + }); + const readable = value => value.cell_geometry.width > 0 && value.cell_geometry.height > 0 + && value.text_rect_count === 1 && value.width > 2 && value.height > 2 && value.within_viewport + && value.within_scroll_wrap && value.text_fits && value.unobscured; + const beforeGeometry = await readGeometry(), nativeReading = { before: beforeGeometry, moves: [] }; + const retainGeometry = (phase, value) => writeFileSync( + testInfo.outputPath(`console-audit-${language}-${event}-geometry-${phase}.json`), + JSON.stringify({ scope: "CURRENT_NATIVE_GEOMETRY_NOT_PASS", geometry: value, + native_reading: nativeReading, locale: language, event, + bound_log_document_id: logs.proof.document_id, current_log_response: logs.proof }, null, 2)); + retainGeometry("before-native", beforeGeometry); + const wrap = page.locator("#componentLogs .log-table-wrap"); + const moveNative = async destination => { + await wrap.hover(); + const current = await readGeometry(); + const wanted = Math.max(0, Math.min(current.maximum_scroll_left, destination(current))); + const delta = wanted - current.scroll_left; + retainGeometry(`before-move-${nativeReading.moves.length}`, current); + expect(Number.isFinite(delta) && delta !== 0, "A real bounded native horizontal move is required").toBe(true); + const observed = await wrap.evaluateHandle(node => { + let listener; + const completion = new Promise(resolve => { + listener = event => { + if (event.target !== node) return; + node.removeEventListener("scrollend", listener); + resolve({ left: node.scrollLeft, owned_target: true, trusted: event.isTrusted }); + }; + node.addEventListener("scrollend", listener, { passive: true }); + }); + return { completion, cancel: () => node.removeEventListener("scrollend", listener) }; + }); + const failures = []; let ended; + try { + await page.mouse.wheel(delta, 0); + ended = await observed.evaluate(record => record.completion); + } catch (error) { failures.push(error); } + finally { + try { await observed.evaluate(record => record.cancel()); } catch (error) { failures.push(error); } + try { await observed.dispose(); } catch (error) { failures.push(error); } + } + if (failures.length) throw new AggregateError(failures, "Owned native audit reading failed"); + const after = await readGeometry(); + nativeReading.moves.push({ before: current, requested_delta_x: delta, + actual_scrollend: ended, after }); + retainGeometry(`after-move-${nativeReading.moves.length}`, after); + expect(Number.isFinite(ended.left) && ended.left !== current.scroll_left + && ended.owned_target && ended.trusted).toBe(true); + return after; + }; + let geometry = beforeGeometry; + if (geometry.text_rect_count === 1 && geometry.width <= geometry.inner_scroll_window.width + && !geometry.within_scroll_wrap) { + geometry = await moveNative(current => current.scroll_left + current.x + current.width / 2 + - (current.inner_scroll_window.left + current.inner_scroll_window.width / 2)); + } + if (language === "en" && event === "dashboard_action_completed") { + retainGeometry("positive-before-refault", geometry); + expect(readable(geometry)).toBe(true); + const alignedLeft = geometry.scroll_left; + // Mandatory actual negative, also when the original text already fits: + // move its center to the inner left edge, then restore the real offset. + const refault = await moveNative(current => current.scroll_left + current.x + current.width / 2 + - current.inner_scroll_window.left); + nativeReading.refault = { scope: "ACTUAL_NATIVE_CLIPPING_NEGATIVE", geometry: refault, + clipping_detected: !readable(refault) }; + retainGeometry("refault", refault); + expect(nativeReading.refault.clipping_detected).toBe(true); + geometry = await moveNative(() => alignedLeft); + nativeReading.refault.restored_readable = readable(geometry); + retainGeometry("restored", geometry); + expect(nativeReading.refault.restored_readable).toBe(true); + } + // Retain the actual condition before a red assertion, including failures. + writeFileSync(testInfo.outputPath(`console-audit-${language}-${event}-geometry.json`), + JSON.stringify({ scope: "CURRENT_NATIVE_GEOMETRY_NOT_PASS", geometry, native_reading: nativeReading, + locale: language, event, document_id: await observer.documentId(), current_log_response: logs.proof }, null, 2)); + expect(readable(geometry), + "The entire actual audit label must be readable; cell padding visibility is recorded separately").toBe(true); + const file = `console-audit-${language}-${event}-native-fresh.png`, output = testInfo.outputPath(file); + // Pinned Playwright's non-full-page clip uses actual viewport coordinates. + // Preserve partial cell-border geometry rather than claiming the whole cell is visible. + await page.screenshot({ path: output, animations: "disabled", fullPage: false, + clip: { x: geometry.x, y: geometry.y, width: geometry.width, height: geometry.height } }); + expect(await observer.documentId()).toBe(logs.proof.document_id); + eventCaptures.push({ event, label, geometry, native_reading: nativeReading, file, + sha256: createHash("sha256").update(readFileSync(output)).digest("hex") }); + await testInfo.attach(`console-audit-${language}-${event}`, { path: output, contentType: "image/png" }); + } + auditProofs.push({ locale: language, completed: completed.proof, rejected: failed.proof, + stored_read: logs.proof, settings_unchanged_after_rejection: true, + observed_locale: await page.locator("html").getAttribute("lang"), + theme: await page.locator("html").getAttribute("data-theme"), viewport: page.viewportSize(), + event_captures: eventCaptures }); + expect(errors, "Known Console audit events must render without ordinary page errors").toEqual([]); } + const output = testInfo.outputPath("console-audit-log-qualification.json"); + writeFileSync(output, JSON.stringify({ scope: "SYNTHETIC_TELEMETRY_VIEW_GENUINE_CONSOLE_AUDIT_HTTP_STORE_AND_RENDER", + qualification: process.env.EP_RUN_EVIDENCE_REQUIRE_INSTALLED === "1" ? "INSTALLED" : "SOURCE", + source_sha: process.env.EP_RUN_EVIDENCE_SOURCE_SHA || null, + source_tree: process.env.EP_RUN_EVIDENCE_SOURCE_TREE || null, + wheel_sha256: process.env.EP_RUN_EVIDENCE_WHEEL_SHA256 || null, + modeled_persistent_log_prelude: modeledPrelude, + action_completion_is_not_run_completion: true, audit_class: ["dashboard_action_completed", "dashboard_action_failed"], + actual_five_locale_proofs: auditProofs }, null, 2)); + await testInfo.attach("actual-console-audit-log-qualification", { path: output, contentType: "application/json" }); + } finally { page.off("pageerror", pageError); } }); test("provides a localized label for every canonical telemetry phase", () => { @@ -8335,21 +8570,37 @@ test.describe("Engineering Status browser smoke", () => { test("wraps a long Codex CLI installation path within host diagnostics", async ({ page }) => { await page.setViewportSize({ width: 920, height: 844 }); await page.goto(dashboardUrl, { waitUntil: "domcontentloaded" }); - await page.evaluate(() => r({ + const attention = { watcher_state: "ENGINEERING_RUN_ACTIVE", current_phase: "EXECUTE_AGENT", run_id: "long-runtime-path", - }, { + }; + const snapshot = { host_preflight: { outcome: "FAILED", runtime_path: "/private/var/folders/2d/lvn8wp7x5rgcvz5by5g4sr3c0000gn/T/tmp.XrTdgyzLui/home/.local/share/engineering-platform/codex-cli/bin/codex", }, - })); - await expect(page.locator("#technicalDiagnosisDetails")).toBeVisible(); - - const metrics = await page.locator("#executionHostRuntimePath").evaluate((path) => { + }; + // Fixture-unit refault: an ordinary idle render can legitimately hide + // the injected attention state between asynchronous assertions. + const idleHeight = await page.evaluate(() => { + r({ watcher_state: "WATCHER_IDLE", queue_depth: 0 }, {}); + return document.getElementById("executionHostRuntimePath").getBoundingClientRect().height; + }); + expect(() => expect(idleHeight).toBeGreaterThan(0)).toThrow(); + + // This is a synthetic renderer/layout contract. Bind the exact input, + // actual visibility and every geometry measurement to one render turn. + const metrics = await page.evaluate(({ attention, snapshot }) => { + r(attention, snapshot); + const path = document.getElementById("executionHostRuntimePath"); + const diagnosis = document.getElementById("technicalDiagnosisDetails"); const card = path.closest(".card"); return { + diagnosisVisible: diagnosis.getBoundingClientRect().height > 0 + && diagnosis.getBoundingClientRect().width > 0 + && getComputedStyle(diagnosis).visibility === "visible", + pathText: path.textContent, cardClientWidth: card.clientWidth, cardScrollWidth: card.scrollWidth, pageClientWidth: document.documentElement.clientWidth, @@ -8357,8 +8608,10 @@ test.describe("Engineering Status browser smoke", () => { pathHeight: path.getBoundingClientRect().height, pathWrap: getComputedStyle(path).overflowWrap, }; - }); + }, { attention, snapshot }); + expect(metrics.diagnosisVisible).toBe(true); + expect(metrics.pathText).toBe(snapshot.host_preflight.runtime_path); expect(metrics.pathWrap).toBe("anywhere"); expect(metrics.cardScrollWidth).toBeLessThanOrEqual(metrics.cardClientWidth + 1); expect(metrics.pageScrollWidth).toBeLessThanOrEqual(metrics.pageClientWidth + 1); diff --git a/tests/engineering/dashboard_document_observer.mjs b/tests/engineering/dashboard_document_observer.mjs index d34c69c8..a6ae2624 100644 --- a/tests/engineering/dashboard_document_observer.mjs +++ b/tests/engineering/dashboard_document_observer.mjs @@ -6,6 +6,22 @@ import { gzipSync } from 'node:zlib'; import { tmpdir } from 'node:os'; import path from 'node:path'; +// Generic error trees stay exclusively in the private raw observation stream. +// Standard recursive reasons preserve original detail without enumerating arbitrary +// provider/error properties; reference IDs prevent cause/Aggregate cycles. +function observedFailure(error, references = new Map()) { + if (error === null || (typeof error !== "object" && typeof error !== "function")) + return { type: typeof error, message: String(error) }; + if (references.has(error)) return { type: typeof error, + reference_id: references.get(error), message: String(error) }; + const errorId = references.size; references.set(error, errorId); + const fact = { error_id: errorId, type: typeof error, name: error.name, + message: String(error), stack: error.stack }; + if (Array.isArray(error.errors)) fact.errors = error.errors.map(reason => observedFailure(reason, references)); + if ("cause" in error) fact.cause = observedFailure(error.cause, references); + return fact; +} + const observers = new WeakMap(); const header = (headers, name) => Object.entries(headers).find(([key]) => key.toLowerCase() === name.toLowerCase())?.[1] ?? null; @@ -57,13 +73,16 @@ async function createObservation(page) { run_id: payload.history?.run_id ?? null, run_ids: Array.isArray(payload.runs) ? payload.runs.map(run => run.run_id) : undefined }); session.on('Network.requestWillBeSent', (event) => { const url = new URL(event.request.url); - if (!['/api/dashboard-snapshot', '/api/events', '/api/github-rate-limit', '/api/prompt-history', '/api/configuration', '/health'].includes(url.pathname) + if (!['/api/dashboard-snapshot', '/api/events', '/api/github-rate-limit', '/api/prompt-history', '/api/configuration', '/api/logs/all', '/api/logs/platform', '/api/audit/user-action', '/health'].includes(url.pathname) && !/^\/api\/prompt-history\/[^/]+\/details$/.test(url.pathname)) return; retain('request', event); for (const extra of extras.get(event.requestId) || []) retain('transport-extra-info', extra); extras.delete(event.requestId); requests.set(event.requestId, { request_id: event.requestId, document_id: event.loaderId, - path: url.pathname, project_header: header(event.request.headers, 'X-Engineering-Platform-Project'), + frame_id: event.frameId, method: event.request.method, + request_timestamp: event.timestamp, request_wall_time: event.wallTime, + native_request_start_time_ms: null, native_relative_timing: null, cached_request: false, + path: url.pathname, url: url.href, project_header: header(event.request.headers, 'X-Engineering-Platform-Project'), status: null, completed: false }); }); for (const name of ['Network.requestWillBeSentExtraInfo', 'Network.responseReceivedExtraInfo']) { @@ -75,8 +94,41 @@ async function createObservation(page) { } }); } + session.on('Network.requestServedFromCache', (event) => { + const request = requests.get(event.requestId); + if (request) { + request.cached_request = true; request.native_request_start_time_ms = null; + request.native_relative_timing = null; + retain('cached-request', event); + } + }); session.on('Network.responseReceived', (event) => { - const request = requests.get(event.requestId); if (request) { request.status = event.response.status; retain('response', event); } + const request = requests.get(event.requestId); + if (request) { + request.status = event.response.status; + // The pinned Chromium Playwright1.63 request clock is adjusted by + // response.timing.requestTime, not just request.wallTime. These known + // API reads require fresh, ordinary HTTP timing; unsupported/cache + // metadata never receives a guessed clock or a body fallback. + const time = event.response.timing?.requestTime; + if (!request.cached_request && !event.response.fromDiskCache + && !event.response.fromPrefetchCache && !event.response.fromServiceWorker + && [time, request.request_timestamp, request.request_wall_time].every(Number.isFinite) + && time >= 0 && request.request_timestamp >= 0 && request.request_wall_time > 0) { + request.native_request_start_time_ms = + (time - request.request_timestamp + request.request_wall_time) * 1000; + const timing = event.response.timing; + const relative = { domainLookupStart: timing.dnsStart, domainLookupEnd: timing.dnsEnd, + connectStart: timing.connectStart, secureConnectionStart: timing.sslStart, + connectEnd: timing.connectEnd, requestStart: timing.sendStart, + responseStart: timing.receiveHeadersEnd }; + // The actual independent-session diagnostic found unequal absolute clocks. + // These seven header-ready phases come from the same response timing + // payload Playwright exposes. No body-completion phase or tolerance. + if (Object.values(relative).every(Number.isFinite)) request.native_relative_timing = relative; + } + retain('response', event); + } }); session.on('Network.loadingFailed', (event) => { const request = requests.get(event.requestId); if (request) { request.failure = event.errorText; retain('loading-failed', event); } @@ -144,11 +196,12 @@ async function createObservation(page) { const scopeMatches = (response, project) => project === null ? response.scope === 'PLATFORM' && response.project_id === null : response.scope === 'PROJECT' && response.project_id === project; - const scope = async (ingress, project) => { + const scope = async (ingress, project, requestId = null) => { let applied; await expect.poll(async () => { const values = await completed(ingress === 'sse' ? '/api/events' : '/api/dashboard-snapshot'); - applied = values.find(r => scopeMatches(r.response, project)); return Boolean(applied); + applied = values.find(r => (requestId === null || r.request_id === requestId) + && scopeMatches(r.response, project)); return Boolean(applied); }).toBe(true); expect(await page.evaluate(() => window.ENGINEERING_PLATFORM_NO_PROJECT === true)).toBe(project === null); await expect(page.locator('body')).toHaveAttribute('data-project-id', project ?? 'none'); @@ -181,7 +234,7 @@ async function createObservation(page) { // This synchronous marker precedes screenshot/CDP waits and canary cleanup. // A later screenshot never replaces the actual assertion timing boundary. retain('assertion-caught', { title: testInfo.title, url: page.url(), - error: caughtError ? { message: String(caughtError), stack: caughtError.stack } : null, + error: caughtError ? observedFailure(caughtError) : null, requests: [...requests.values()] }); const results = await Promise.allSettled([ page.screenshot({ path: path.join(retained, 'first-failure.png'), fullPage: true, animations: 'disabled' }), @@ -191,7 +244,7 @@ async function createObservation(page) { ? { observation: index, status: 'retained', value: index === 0 ? createHash('sha256').update(result.value).digest('hex') : result.value } : { observation: index, status: 'UNAVAILABLE', reason: String(result.reason) }); retain('first-failure', { title: testInfo.title, status: caughtError ? 'caught_failure' : testInfo.status, - errors: caughtError ? [{ message: String(caughtError), stack: caughtError.stack }] : testInfo.errors, + errors: caughtError ? [observedFailure(caughtError)] : testInfo.errors, observations: facts, requests: [...requests.values()] }); if (results.some(result => result.status === 'rejected')) throw Error('First browser failure retention incomplete; original failure remains in runner report'); diff --git a/tests/engineering/dashboard_log_read.test.mjs b/tests/engineering/dashboard_log_read.test.mjs new file mode 100644 index 00000000..ae9582f6 --- /dev/null +++ b/tests/engineering/dashboard_log_read.test.mjs @@ -0,0 +1,57 @@ +import test from "node:test"; +import assert from "node:assert/strict"; +import { readFileSync } from "node:fs"; +import { runInNewContext } from "node:vm"; +import { parse } from "acorn"; + +// Execute the actual production read function with declared unit-only boundaries. +// These controls grant no Server authority and do not replace installed proof. +const source = readFileSync(new URL("../../src/engineering_platform/assets/dashboard.js", import.meta.url), "utf8"); +const actual = parse(source, { ecmaVersion: "latest", sourceType: "module" }).body.find(node => node.type === "FunctionDeclaration" && node.id.name === "refreshComponentLogs"); +assert.ok(actual); +function harness(fetch, { normalize = value => value, render = () => {} } = {}) { + const state = { + componentLogsLoaded: false, componentLogVersion: "", componentLogRequestId: 0, + componentLogEntries: { platform: [] }, componentLogTotals: {}, componentLogAvailableEvents: {}, componentLogServerPaged: false, + fetch, componentLogRequestUrl: () => "declared-unit-only-log-read", + normalizedComponentLogEntries: normalize, structuredLogEntries: value => [JSON.parse(value)], + t: key => key, $: () => ({ hidden: true }), renderComponentLogs: render, + }; + const read = runInNewContext(`${source.slice(actual.start, actual.end)}; refreshComponentLogs`, state); + return { state, read }; +} +const success = payload => ({ ok: true, json: async () => payload }); + +test("log availability contains fetch, nonOK and JSON decode failures only", async () => { + for (const fetch of [async () => { throw Error("declared read rejection"); }, async () => ({ ok: false }), async () => ({ ok: true, json: async () => { throw SyntaxError("declared malformed JSON"); } })]) { + const h = harness(fetch); await h.read(); + assert.equal(h.state.componentLogServerPaged, false); + assert.equal(h.state.componentLogEntries.platform[0].event, "platform_log_unavailable"); + } +}); + +test("healthy log normalization and render faults retain the original reason", async () => { + for (const boundary of ["normalize", "render"]) { + const original = Error(`Declared ${boundary} sentinel`); + const h = harness(async () => success({ entries: [{ event: "lifecycle_admission_decided" }], total: 1, events: ["lifecycle_admission_decided"] }), { + [boundary]: () => { throw original; }, + }); + await assert.rejects(h.read(), error => error === original); + assert.equal(h.state.componentLogServerPaged, boundary === "render"); + assert.ok(!h.state.componentLogEntries.platform.some(row => row.event === "platform_log_unavailable")); + } + const malformed = harness(async () => success(null)); + await assert.rejects(malformed.read(), /Cannot read properties of null/); +}); + +test("late healthy and failed log reads cannot replace the newer projection", async () => { + for (const staleFails of [false, true]) { + let settle, calls = 0; + const pending = new Promise(resolve => { settle = resolve; }); + const h = harness(() => ++calls === 1 ? pending : Promise.resolve(success({ entries: [{ event: "newer" }], total: 1, events: ["newer"] }))); + const stale = h.read({ revision: 1 }); await h.read({ revision: 2 }); + settle(staleFails ? { ok: false } : success({ entries: [{ event: "older" }], total: 1, events: ["older"] })); await stale; + assert.equal(h.state.componentLogEntries.platform[0].event, "newer"); + assert.equal(h.state.componentLogServerPaged, true); + } +}); diff --git a/tests/engineering/dashboard_owned_held_routes.mjs b/tests/engineering/dashboard_owned_held_routes.mjs new file mode 100644 index 00000000..1e99da0b --- /dev/null +++ b/tests/engineering/dashboard_owned_held_routes.mjs @@ -0,0 +1,46 @@ +/* Test-only ownership of held route callbacks; every reason remains fatal. */ +export function createOwnedHeldRoutes() { + let release, closing = false, closed = false, observedCount = 0; + const released = new Promise(resolve => { release = resolve; }); + const callbacks = [], outcomes = [], removalErrors = []; + const handler = route => { + const task = closed + ? Promise.reject(new Error("Own route callback invoked after owner closure")) + : released.then(() => route.continue()); + // Observe immediately to prevent an unhandled process exit. Mandatory close + // and verification rethrow original reasons after all owned work settles. + const observation = task.then(() => ({ status: "fulfilled" }), + reason => ({ status: "rejected", reason })); + callbacks.push(observation); + return observation.then(() => undefined); + }; + const drain = async () => { + while (observedCount < callbacks.length) { + const batch = callbacks.slice(observedCount); observedCount = callbacks.length; + outcomes.push(...await Promise.all(batch)); + } + }; + const verdict = () => { + const errors = [...outcomes.filter(result => result.status === "rejected").map(result => result.reason), ...removalErrors]; + const receipt = { started: callbacks.length, settled: outcomes.length, + rejected: errors.length, actual_owner_closed: closed }; + if (errors.length) { + const error = new AggregateError(errors, "Owned route callback/removal failures retained"); + error.receipt = receipt; throw error; + } + return receipt; + }; + const close = async removeOwnRoute => { + if (closing || closed) throw new Error("Own route owner closed more than once"); + closing = true; release(); + await drain(); + try { await removeOwnRoute(); } catch (error) { removalErrors.push(error); } + await drain(); closed = true; + return verdict(); + }; + const verifyClosed = async () => { + if (!closed) throw new Error("Own route owner has not actually closed"); + await drain(); return verdict(); + }; + return { handler, release, close, verifyClosed }; +} diff --git a/tests/engineering/dashboard_owned_log_events.py b/tests/engineering/dashboard_owned_log_events.py new file mode 100644 index 00000000..4697559e --- /dev/null +++ b/tests/engineering/dashboard_owned_log_events.py @@ -0,0 +1,79 @@ +"""Read finite lifecycle and Console-audit producers without importing the product.""" +import ast +import json +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] +SOURCES = ("agent_state.py", "execution_host.py", "parity_lifecycle_dispatcher.py") +rows = [] +forwarders = [] + +class ProducerCalls(ast.NodeVisitor): + def __init__(self, path): + self.path = path + self.functions = [] + + def visit_FunctionDef(self, node): + self.functions.append(node.name) + self.generic_visit(node) + self.functions.pop() + + visit_AsyncFunctionDef = visit_FunctionDef + + def visit_Call(self, node): + name = node.func.id if isinstance(node.func, ast.Name) else node.func.attr if isinstance(node.func, ast.Attribute) else "" + if name in {"log_event", "record_technical_diagnostic", "_record_technical_diagnostic"}: + event = next((value.value for value in node.keywords if value.arg == "event"), None) + if event is None and name == "log_event" and len(node.args) > 2: + event = node.args[2] + if isinstance(event, ast.Constant) and isinstance(event.value, str): + rows.append({"event": event.value, "file": str(self.path.relative_to(ROOT)), "line": node.lineno, "callee": name}) + elif name == "record_technical_diagnostic" and self.functions[-1:] == ["_record_technical_diagnostic"] and isinstance(event, ast.Name) and event.id == "event": + component = next((value.value for value in node.keywords if value.arg == "component"), None) + if not isinstance(component, ast.Constant) or component.value != "lifecycle_worker": + raise AssertionError("Technical diagnostic adapter changed its owning component") + forwarders.append({"file": str(self.path.relative_to(ROOT)), "line": node.lineno}) + else: + raise AssertionError(f"Unresolved owning producer event {self.path.name}:{node.lineno}") + self.generic_visit(node) + +for filename in SOURCES: + path = ROOT / "src/engineering_platform" / filename + ProducerCalls(path).visit(ast.parse(path.read_text(), filename=str(path))) +# The actual Console audit producer has a conditional literal event, and an +# accepted cancellation persists its audit row directly in CENTRAL. Resolve +# only these named owning functions; unrelated Server producers are not a +# generic event whitelist and unresolved changes fail closed. +def owning_function(filename, name): + path = ROOT / "src/engineering_platform" / filename + module = ast.parse(path.read_text(), filename=str(path)) + matches = [node for node in module.body if isinstance(node, ast.FunctionDef) and node.name == name] + assert len(matches) == 1, f"Ambiguous owning Console audit function {filename}:{name}" + return path, matches[0] + +path, function = owning_function("server.py", "_audit_dashboard_action") +calls = [node for node in ast.walk(function) if isinstance(node, ast.Call) + and isinstance(node.func, ast.Name) and node.func.id == "log_event"] +assert len(calls) == 1 and len(calls[0].args) > 2, "Console audit must have one actual log producer" +event = calls[0].args[2] +assert isinstance(event, ast.IfExp), "Console audit must retain its finite conditional event class" +audit_events = [] +for branch in (event.body, event.orelse): + assert isinstance(branch, ast.Constant) and isinstance(branch.value, str), "Unresolved Console audit branch" + audit_events.append(branch.value) + rows.append({"event": branch.value, "file": str(path.relative_to(ROOT)), "line": calls[0].lineno, + "callee": "log_event", "producer_scope": "console_audit_conditional"}) +assert len(set(audit_events)) == 2, "Console audit outcomes must remain distinct" + +path, function = owning_function("parallel_action_recovery.py", "request_cancel") +central_events = [value for node in ast.walk(function) if isinstance(node, ast.Dict) + for key, value in zip(node.keys, node.values) + if isinstance(key, ast.Constant) and key.value == "event"] +assert len(central_events) == 1, "CENTRAL cancellation must have one actual audit event" +event = central_events[0] +assert isinstance(event, ast.Constant) and isinstance(event.value, str) and event.value in audit_events, "Unresolved CENTRAL audit event" +rows.append({"event": event.value, "file": str(path.relative_to(ROOT)), "line": event.lineno, + "callee": "CENTRAL_transaction", "producer_scope": "console_audit_cancellation"}) + +assert len(forwarders) == 1, "The technical adapter must have one actual symbolic forwarding call" +print(json.dumps({"events": sorted({row["event"] for row in rows}), "calls": rows, "technical_forwarders": forwarders}, sort_keys=True)) diff --git a/tests/engineering/dashboard_run_evidence.integration.spec.mjs b/tests/engineering/dashboard_run_evidence.integration.spec.mjs index a2706a7d..e0b25244 100644 --- a/tests/engineering/dashboard_run_evidence.integration.spec.mjs +++ b/tests/engineering/dashboard_run_evidence.integration.spec.mjs @@ -2,11 +2,14 @@ import { spawn } from "node:child_process"; import path from "node:path"; import { fileURLToPath } from "node:url"; import { createHash } from "node:crypto"; +import { gunzipSync } from "node:zlib"; import { readFileSync, writeFileSync } from "node:fs"; import { test, expect } from "./dashboard_coverage_fixture.mjs"; import { chromium } from "@playwright/test"; import { observeConsoleDocument } from "./dashboard_document_observer.mjs"; import { retainWorkerLogs, finishWorkerLogs } from "./dashboard_worker_logs.mjs"; +import { createOwnedHeldRoutes } from "./dashboard_owned_held_routes.mjs"; +import { assertRunEvidenceLayout, assertHistoryLayoutRefault, readRunEvidenceCardFromTop } from "./dashboard_run_evidence_layout.mjs"; import { DASHBOARD_MESSAGES } from "../../src/engineering_platform/assets/dashboard_locales.mjs"; const repository = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../.."); @@ -51,6 +54,89 @@ test('actual observer rejects post-seal failure writes without changing retained } finally { await isolated.close(); await observation.closed(); } }); +test('owned held route callbacks drain before scoped removal and preserve original failures', async ({ browser }, testInfo) => { + // Fixture-unit fault injection, not a server response or authority mutation. + const owner = createOwnedHeldRoutes(), order = []; + let releaseFirst, releaseSecond; + const first = new Promise(resolve => { releaseFirst = resolve; }); + const second = new Promise(resolve => { releaseSecond = resolve; }); + const firstTask = owner.handler({ continue: async () => { await first; order.push("first-terminal"); } }); + const closing = owner.close(async () => { order.push("scoped-remove"); }); + const secondTask = owner.handler({ continue: async () => { await second; order.push("second-terminal"); } }); + releaseFirst(); await firstTask; + expect(order).toEqual(["first-terminal"]); + releaseSecond(); await secondTask; + const receipt = await closing; + expect(order).toEqual(["first-terminal", "second-terminal", "scoped-remove"]); + expect(receipt).toEqual({ started: 2, settled: 2, rejected: 0, actual_owner_closed: true }); + expect(await owner.verifyClosed()).toEqual(receipt); + let lateContinueCalls = 0; + await owner.handler({ continue: async () => { lateContinueCalls++; } }); + const lateError = await owner.verifyClosed().then(() => null, error => error); + expect(lateError).toBeInstanceOf(AggregateError); + expect(lateError.errors).toHaveLength(1); + expect(lateError.errors[0].message).toContain("after owner closure"); + expect(lateContinueCalls).toBe(0); + + const faultOwner = createOwnedHeldRoutes(); + const original = new Error("Declared fixture-unit continuation fault"); + let releaseFault, callbackTerminal = false, scopedRemoved = false; + const faultGate = new Promise(resolve => { releaseFault = resolve; }); + const faultTask = faultOwner.handler({ continue: async () => { + await faultGate; callbackTerminal = true; throw original; + } }); + const faultResult = faultOwner.close(async () => { + expect(callbackTerminal).toBe(true); scopedRemoved = true; + }).then(() => null, error => error); + expect(scopedRemoved).toBe(false); + releaseFault(); await faultTask; + const faultError = await faultResult; + expect(faultError).toBeInstanceOf(AggregateError); + expect(faultError.errors).toEqual([original]); + expect(faultError.errors[0]).toBe(original); + expect(scopedRemoved).toBe(true); + expect(faultError.receipt).toEqual({ started: 1, settled: 1, rejected: 1, actual_owner_closed: true }); + const body = new Error("Declared fixture-unit body fault", { cause: new Error("Declared nested body cause") }); + original.cause = "Declared primitive callback cause"; + const cyclic = new Error("Declared cyclic fixture cause"); cyclic.cause = cyclic; + const combined = new AggregateError([body, faultError, cyclic, null, 42, false], "Declared body plus cleanup reason preservation"); + const isolated = await browser.newPage(); + const observation = await observeConsoleDocument(isolated); + let capturedReceipt; + try { await observation.failure(testInfo, combined); } + finally { await isolated.close(); capturedReceipt = await observation.closed(); } + const captured = readFileSync(observation.privateFiles().raw); + expect(captured.length).toBe(capturedReceipt.bytes); + expect(createHash("sha256").update(captured).digest("hex")).toBe(capturedReceipt.sha256); + const facts = gunzipSync(captured).toString("utf8").trim().split("\n").map(line => JSON.parse(line)); + const boundaries = facts.filter(record => ["assertion-caught", "first-failure"].includes(record.kind)); + expect(boundaries).toHaveLength(2); + for (const record of boundaries) { + const error = record.kind === "assertion-caught" ? record.fact.error : record.fact.errors[0]; + expect(error.errors[0].message).toContain(body.message); + expect(error.errors[0].cause.message).toContain("Declared nested body cause"); + expect(error.errors[1].errors[0].message).toContain(original.message); + expect(error.errors[1].errors[0].stack).toContain(original.message); + expect(error.errors[1].errors[0].cause).toEqual({ type: "string", message: "Declared primitive callback cause" }); + expect(error.errors[2].cause.reference_id).toBe(error.errors[2].error_id); + expect(error.errors[3]).toEqual({ type: "object", message: "null" }); + expect(error.errors[4]).toEqual({ type: "number", message: "42" }); + expect(error.errors[5]).toEqual({ type: "boolean", message: "false" }); + } + // Durable/public-safe counters and booleans only. Generic error trees, stacks + // and private file paths remain in the private raw stream, never attachments. + const controls = { scope: "FIXTURE_UNIT_ONLY", dynamic_success_receipt: receipt, + late_owner_receipt: lateError.receipt, original_fault_receipt: faultError.receipt, + original_error_object_retained: faultError.errors[0] === original, + both_recursive_capture_boundaries_verified: true, + private_capture_closed: capturedReceipt.actual_page_closed, + private_capture_bytes: capturedReceipt.bytes, private_capture_sha256: capturedReceipt.sha256 }; + const controlsPath = testInfo.outputPath("owned-route-fixture-unit-controls.json"); + writeFileSync(controlsPath, JSON.stringify(controls, null, 2), { mode: 0o600, flag: "wx" }); + expect(JSON.parse(readFileSync(controlsPath))).toEqual(controls); + await testInfo.attach("owned-route-fixture-unit-controls", { path: controlsPath, contentType: "application/json" }); +}); + async function passiveProcess(python, environment, dataRoot) { const child = spawn(python, [fixture, "--read", dataRoot], { cwd: path.dirname(python), env: environment, stdio: ["pipe", "pipe", "pipe"] }); retainWorkerLogs(child, test.info(), "passive-reader"); @@ -107,6 +193,9 @@ async function stopIsolatedCanary(child, next, testInfo, label = "canary") { const cases = ["prepared", "uncertain", "no-consumer", "no-capacity", "irrelevant", "dispositions", "withdrawn", "provider-recovered", "provider-blocked", "missing", "privacy", "failed", "uncertain-result", "duplicate", "read-revoked"] .map((scenario) => ({ scenario, locale: "en", theme: "dark", width: 1280, height: 720 })); +for (const scenario of ["missing", "failed", "uncertain-result"]) { + cases.push({ scenario, locale: "en", theme: "dark", width: 390, height: 844 }); +} for (const locale of ["en", "nl", "de", "fr", "es"]) for (const theme of ["dark", "light"]) { for (const viewport of [{ width: 1280, height: 720 }, { width: 390, height: 844 }]) { cases.push({ scenario: "normal", locale, theme, ...viewport }); @@ -136,6 +225,14 @@ test(`reads actual ${scenario} ${locale}/${theme}/${width} dispatcher evidence w pending = (message) => { clearTimeout(deadline); resolve(message); }; child.once("exit", (code) => { clearTimeout(deadline); reject(new Error(`Canary exited ${code}: raw worker logs retained privately`)); }); }); + const normalHistoryLayout = scenario === "normal" && locale === "en" && theme === "dark"; + const headers = []; + const captureHeader = response => { + if (response.request().method() === "GET" + && ["/api/prompt-history", "/api/dashboard-snapshot"].includes(new URL(response.url()).pathname)) + headers.push(response); + }; + if (normalHistoryLayout) page.on("response", captureHeader); try { const ready = await next(); if (installedPython) expect(ready.module).toContain("site-packages/engineering_platform/"); @@ -271,7 +368,18 @@ test(`reads actual ${scenario} ${locale}/${theme}/${width} dispatcher evidence w if (scenario !== "duplicate") await expect(findings.locator('details[data-disposition="DEFERRED"]').first()).toBeVisible(); } const screenshots = []; + await assertRunEvidenceLayout(page); + await assertHistoryLayoutRefault(page); const capture = async (view, suffix, target = page.locator(`[data-run-evidence="${view}"]`), evidence = runEvidence) => { + if (["denied-project", "read-revoked"].includes(view)) { + await expect(page.locator("[data-run-evidence]")).toHaveCount(0); + } else { + await assertRunEvidenceLayout(page); + } + if (suffix === "desktop" && (["missing", "failed", "uncertain-result"].includes(scenario) + || (scenario === "normal" && locale === "en" && theme === "dark"))) { + await readRunEvidenceCardFromTop(page, target); + } const imagePath = testInfo.outputPath(`${view}-${suffix}-fresh.png`); await target.screenshot({ path: imagePath, animations: "disabled" }); screenshots.push({ scenario: view, file: path.basename(imagePath), @@ -296,6 +404,242 @@ test(`reads actual ${scenario} ${locale}/${theme}/${width} dispatcher evidence w await expect(controls).toBeVisible(); await capture("verification-controls", "native", findings); } + let normalActiveHistoryProof = null; + if (normalHistoryLayout) { + // Active operator-wait is absent from the genuine terminal history index. + // Bind the completed current-document read before testing native dismissal. + const observer = await observeConsoleDocument(page); + const detailUrl = new URL(ready.url); + detailUrl.searchParams.set("prompt", ready.run_id); + // Hold only the initial genuine SSE request until HTTP has painted. This + // makes the former equal-value/key-order node-replacement regression causal. + const session = await page.context().newCDPSession(page); + await session.send("Network.enable"); + const frames = []; + session.on("Network.eventSourceMessageReceived", frame => { + if (frame.eventName === "dashboard") frames.push(frame); + }); + const routeOwner = createOwnedHeldRoutes(); + const releaseSSE = routeOwner.release; + const eventsRoute = url => url.pathname === "/api/events"; + const holdEvents = routeOwner.handler; + let primaryFailure = null; + // Capture headers synchronously; deferred predicates cannot own an + // old-document response across navigation and then read its lost body. + await page.route(eventsRoute, holdEvents); + try { + const previousDocument = await observer.documentId(); + await page.goto(detailUrl.href, { waitUntil: "domcontentloaded" }); + const currentFrame = (await session.send("Page.getFrameTree")).frameTree.frame; + const documentId = currentFrame.loaderId; + expect(documentId).not.toBe(previousDocument); + expect(await observer.documentId()).toBe(documentId); + const relativeKeys = ["domainLookupStart", "domainLookupEnd", "connectStart", + "secureConnectionStart", "connectEnd", "requestStart", "responseStart"]; + const headerMetadata = response => { + const request = response.request(); + expect(request.frame()).toBe(page.mainFrame()); + return { url: response.url(), method: request.method(), status: response.status(), + frame_id: currentFrame.id, timing: { ...request.timing() } }; + }; + const uniqueHeaderRecord = (metadata, records) => { + expect(Number.isFinite(metadata.timing.startTime) && metadata.timing.startTime > 0).toBe(true); + expect(relativeKeys.every(key => Number.isFinite(metadata.timing[key]))).toBe(true); + const matches = records.filter(record => record.url === metadata.url + && record.method === metadata.method && record.status === metadata.status + && record.frame_id === metadata.frame_id && record.cached_request === false + && record.native_relative_timing !== null && relativeKeys.every(key => + Number.isFinite(record.native_relative_timing?.[key]) + && record.native_relative_timing[key] === metadata.timing[key])); + expect(matches.length).toBeLessThanOrEqual(1); + return matches[0] || null; + }; + const headerRecord = response => uniqueHeaderRecord(headerMetadata(response), observer.records()); + // Actual previous-document headers share URL, method and status with + // the new read. Reject them before touching a navigated-away body. + let previousHeader; + await expect.poll(() => { + previousHeader = headers.find(response => new URL(response.url()).pathname === "/api/prompt-history" + && headerRecord(response)?.document_id === previousDocument); + return Boolean(previousHeader); + }).toBe(true); + const previousRecord = headerRecord(previousHeader); + expect(previousRecord.frame_id).toBe(currentFrame.id); + expect(previousRecord.document_id === documentId).toBe(false); + const currentRead = async pathname => { + let selected; + await expect.poll(() => { + for (const response of headers.filter(value => new URL(value.url()).pathname === pathname)) { + // A lagging independent CDP session may not have the header yet. + // Zero remains pending, ambiguity remains red; no later response + // can replace this unknown predecessor to make the proof pass. + const record = headerRecord(response); + if (record === null) return false; + if (record.document_id !== documentId) continue; + expect(record.frame_id).toBe(currentFrame.id); + expect(record.project_header).toBe("project"); + expect(record.cached_request).toBe(false); + selected = { response, record }; + return true; + } + return false; + }).toBe(true); + return selected; + }; + const indexRead = await currentRead("/api/prompt-history"); + const response = indexRead.response; + // Modeled selector negatives use copies of genuine header metadata; + // they do not alter the server/request/response or fabricate authority. + const metadata = headerMetadata(response), record = indexRead.record; + expect(() => uniqueHeaderRecord(metadata, [record, { ...record }])).toThrow(); + expect(() => uniqueHeaderRecord({ ...metadata, timing: { ...metadata.timing, + domainLookupStart: undefined } }, [record])).toThrow(); + expect(() => uniqueHeaderRecord({ ...metadata, timing: { ...metadata.timing, + requestStart: String(metadata.timing.requestStart) } }, [record])).toThrow(); + expect(uniqueHeaderRecord(metadata, [{ ...record, cached_request: true }])).toBe(null); + expect(uniqueHeaderRecord(metadata, [{ ...record, native_relative_timing: null }])).toBe(null); + expect(response.status()).toBe(200); + const bytes = await response.body(); + const index = JSON.parse(bytes.toString("utf8")); + expect(index.runs).toEqual([]); + expect(index.runs.some(run => run.run_id === ready.run_id)).toBe(false); + const responseHash = createHash("sha256").update(bytes).digest("hex"); + let boundRead; + await expect.poll(() => { + boundRead = observer.records().find(record => record.request_id === indexRead.record.request_id + && record.document_id === documentId + && record.path === "/api/prompt-history" && record.completed + && record.status === 200 && record.response_sha256 === responseHash); + return Boolean(boundRead); + }).toBe(true); + const snapshotRead = await currentRead("/api/dashboard-snapshot"); + const httpResponse = snapshotRead.response; + expect(httpResponse.status()).toBe(200); + const httpBytes = await httpResponse.body(); + const http = JSON.parse(httpBytes.toString("utf8")); + const httpBinding = await observer.scope("http", "project", snapshotRead.record.request_id); + expect(httpBinding.document_id).toBe(documentId); + expect(httpBinding.request_id).toBe(snapshotRead.record.request_id); + expect(httpBinding.response_sha256).toBe(createHash("sha256").update(httpBytes).digest("hex")); + const nativeCards = await page.locator("[data-run-evidence]").elementHandles(); + expect(nativeCards).toHaveLength(3); + releaseSSE(); + let frame; + await expect.poll(() => { + frame = frames.find(candidate => observer.records().some(record => + record.document_id === documentId && record.path === "/api/events" + && record.request_id === candidate.requestId)); + return Boolean(frame); + }).toBe(true); + const sse = JSON.parse(frame.data); + const sseBinding = await observer.scope("sse", "project"); + expect(sseBinding.document_id).toBe(documentId); + expect(sseBinding.request_id).toBe(frame.requestId); + expect(sseBinding.response_sha256).toBe(createHash("sha256").update(frame.data).digest("hex")); + expect(sse.scope).toBe("PROJECT"); expect(sse.project_id).toBe("project"); + await expect(page.locator("#updateMode")).toHaveText(DASHBOARD_MESSAGES[locale]["refresh.connected"]); + const canonical = value => Array.isArray(value) ? value.map(canonical) + : value && typeof value === "object" ? Object.fromEntries(Object.keys(value).sort().map(key => [key, canonical(value[key])])) : value; + const inputs = snapshot => [snapshot.status.lifecycle.run_evidence, snapshot.status.lifecycle.recovery]; + expect(canonical(inputs(http))).toEqual(canonical(inputs(sse))); + for (const nativeCard of nativeCards) { + expect(await nativeCard.evaluate(node => node.isConnected + && node === document.querySelector(`[data-run-evidence="${node.dataset.runEvidence}"]`))).toBe(true); + } + await expect(page.locator("#promptHistoryDetailModal")).not.toBeVisible(); + await expect(page).not.toHaveURL(/(?:\?|&)prompt=/); + await expect(page.locator("[data-run-evidence]")).toHaveCount(3); + await expect(page.locator('[data-run-evidence="selection"] h3')) + .toHaveText(DASHBOARD_MESSAGES[locale]["run_evidence.specialists"]); + await assertRunEvidenceLayout(page); + const activeSelection = page.locator('[data-run-evidence="selection"]'); + await readRunEvidenceCardFromTop(page, activeSelection); + // Narrow renderer-unit negatives use a detached native DOM and copies of + // the real stored input. They do not mutate the server or active Console. + const rendererMutationControls = await page.evaluate(async ({ evidence, recovery }) => { + const { syncStoredRunEvidence } = await import("/assets/dashboard_run_evidence.mjs"); + const container = document.createElement("div"); + const options = { document, scope: "project", locale: "en", t: key => key, + reviewerLabel: role => String(role), card: (title, fields) => { + const card = document.createElement("section"), heading = document.createElement("h3"); + heading.textContent = title; card.append(heading, ...fields); return card; + } }; + const copy = () => JSON.parse(JSON.stringify(evidence)); + const changed = (name, mutate, optionChanges = {}, changedRecovery = recovery) => { + syncStoredRunEvidence(container, evidence, recovery, options); + const original = container.querySelector('[data-run-evidence="selection"]'); + const next = copy(); mutate(next); + syncStoredRunEvidence(container, next, changedRecovery, { ...options, ...optionChanges }); + return { name, replaced: original !== container.querySelector('[data-run-evidence="selection"]'), + cards: container.querySelectorAll("[data-run-evidence]").length }; + }; + if (evidence.specialists.findings.length < 2) throw Error("Actual array-order negative needs two stored findings"); + const controls = [ + changed("scope", () => {}, { scope: "other" }), + changed("locale", () => {}, { locale: "nl" }), + changed("run-id", next => { next.run_id += "-changed"; }), + changed("current-binding", next => { next.current_repository_binding = "UNBOUND"; }), + changed("execution-authority", next => { next.execution_authority = !next.execution_authority; }), + changed("value-type", next => { next.specialists.actual_model_invocation_count = String(next.specialists.actual_model_invocation_count); }), + changed("array-order", next => { next.specialists.findings.reverse(); }), + changed("recovery", () => {}, {}, { state: "UNAVAILABLE" }), + changed("own-prototype-named-key", next => { + Object.defineProperty(next, "__proto__", { value: { stored_only: true }, enumerable: true }); + }), + ]; + syncStoredRunEvidence(container, null, null, options); + return { label: "Detached native-DOM renderer-unit negatives, not server authority mutation", + controls, null_input_cleared_cards: container.querySelectorAll("[data-run-evidence]").length === 0, + object_prototype_unchanged: Object.prototype.stored_only === undefined }; + }, { evidence: http.status.lifecycle.run_evidence, recovery: http.status.lifecycle.recovery }); + expect(rendererMutationControls.controls).toHaveLength(9); + for (const control of rendererMutationControls.controls) { + expect(control.replaced, control.name).toBe(true); expect(control.cards, control.name).toBe(3); + } + expect(rendererMutationControls.null_input_cleared_cards).toBe(true); + expect(rendererMutationControls.object_prototype_unchanged).toBe(true); + normalActiveHistoryProof = { requested_run_id: ready.run_id, + request: boundRead, document_id: documentId, response_sha256: responseHash, + current_document_header_controls: { + previous_document_id: previousRecord.document_id, + previous_same_endpoint_request_id: previousRecord.request_id, + previous_document_header_rejected_before_body_read: true, + selected_index_request_id: indexRead.record.request_id, + selected_snapshot_request_id: snapshotRead.record.request_id, + exact_seven_header_ready_relative_timing_join: true, + absolute_start_time_is_diagnostic_only: true, + selected_index_relative_timing: indexRead.record.native_relative_timing, + selected_snapshot_relative_timing: snapshotRead.record.native_relative_timing, + modeled_selector_negatives: { collision_rejected: true, missing_field_rejected: true, + wrong_type_rejected: true, cached_record_unmatched: true, missing_record_vector_unmatched: true }, + }, + http_snapshot: httpBinding, sse_snapshot: sseBinding, + actual_sse_frame_sha256: createHash("sha256").update(frame.data).digest("hex"), selected_sse_request_id: frame.requestId, + equal_http_sse_native_card_identity_preserved: true, renderer_mutation_controls: rendererMutationControls, + actual_history_run_ids: [], native_modal_hidden: true, deeplink_removed: true, + active_card_count: 3, geometry: await assertRunEvidenceLayout(page) }; + await capture("normal-active-not-history", "native", activeSelection); + } catch (error) { + primaryFailure = error; throw error; + } finally { + const cleanupErrors = []; + try { + const receipt = await routeOwner.close(() => page.unroute(eventsRoute, holdEvents)); + expect(receipt.started).toBeGreaterThanOrEqual(1); + expect(receipt.settled).toBe(receipt.started); expect(receipt.rejected).toBe(0); + const receiptPath = testInfo.outputPath("actual-held-sse-handler-close.json"); + writeFileSync(receiptPath, JSON.stringify(receipt, null, 2), { mode: 0o600, flag: "wx" }); + expect(JSON.parse(readFileSync(receiptPath))).toEqual(receipt); + await testInfo.attach("actual-held-sse-handler-close", { path: receiptPath, contentType: "application/json" }); + } catch (error) { cleanupErrors.push(error); } + try { await session.detach(); } catch (error) { cleanupErrors.push(error); } + try { await routeOwner.verifyClosed(); } catch (error) { cleanupErrors.push(error); } + if (cleanupErrors.length) throw new AggregateError( + [...(primaryFailure ? [primaryFailure] : []), ...cleanupErrors], + "Initial SSE body and owned handler cleanup failures retained", + ); + } + } const rootUrl = ready.url.split("/?")[0]; const foreign = await page.request.get(`${rootUrl}/api/prompt-history/${ready.run_id}/details?project=other`); expect(foreign.status()).toBe(404); @@ -423,10 +767,10 @@ test(`reads actual ${scenario} ${locale}/${theme}/${width} dispatcher evidence w contract: "ep-console-run-evidence-screenshots/v1", qualification: process.env.EP_RUN_EVIDENCE_CONVERGENCE === "1" ? "INSTALLED_CONVERGENCE" : installedPython ? "INSTALLED" : "SOURCE_CONVERGENCE", source_sha: process.env.EP_RUN_EVIDENCE_SOURCE_SHA || null, source_tree: process.env.EP_RUN_EVIDENCE_SOURCE_TREE || null, wheel_sha256: process.env.EP_RUN_EVIDENCE_WHEEL_SHA256 || null, screenshots, - assets: ready.assets, external_transport_observations: after.transport_observations, + assets: ready.assets, normal_active_history_proof: normalActiveHistoryProof, external_transport_observations: after.transport_observations, }, null, 2)); expect(screenshots.slice(0, 3).map((item) => item.scenario)).toEqual(["selection", "findings", "publication"]); - expect(screenshots).toHaveLength((verifiedFinding ? 4 : 3) + 1 + (scenario === "uncertain" ? 1 : 0) + (historicalTarget ? 1 : 0) + (scenario === "read-revoked" ? 1 : 0)); + expect(screenshots).toHaveLength((verifiedFinding ? 4 : 3) + 1 + (scenario === "uncertain" ? 1 : 0) + (historicalTarget ? 1 : 0) + (scenario === "read-revoked" ? 1 : 0) + (normalHistoryLayout ? 1 : 0)); expect(screenshots.some((item) => item.scenario === "denied-project" && item.publication === null)).toBe(true); await testInfo.attach("fresh-evidence-manifest", { path: manifestPath, contentType: "application/json" }); } catch (error) { @@ -438,7 +782,8 @@ test(`reads actual ${scenario} ${locale}/${theme}/${width} dispatcher evidence w } throw error; } finally { - await stopIsolatedCanary(child, next, testInfo); + try { await stopIsolatedCanary(child, next, testInfo); } + finally { if (normalHistoryLayout) page.off("response", captureHeader); } } }); } @@ -1069,3 +1414,124 @@ test.describe("iPhone direct touch: stored active execution", () => { }); import "./dashboard_no_project_scope.spec.mjs"; + +test('actual installed five-locale log reads preserve healthy rows, source loss and restored projection', async ({ page }, testInfo) => { + test.setTimeout(60_000); + const canary = await causalStoredCanary('normal'); + let observer; + const errors = [], rows = [], captures = []; + let bodyError; + const pageError = error => errors.push(error); + page.on('pageerror', pageError); + const isLogs = response => new URL(response.url()).pathname === '/api/logs/all'; + const bind = async (response, expectedStatus) => { + expect(response.status()).toBe(expectedStatus); + const bytes = await response.body(), body = JSON.parse(bytes.toString('utf8')); + const documentId = await observer.documentId(), hash = createHash('sha256').update(bytes).digest('hex'); + let binding; + await expect.poll(() => { + binding = observer.records().find(record => record.document_id === documentId + && record.url === response.url() && record.completed && record.status === expectedStatus + && record.response_sha256 === hash); + return Boolean(binding); + }).toBe(true); + expect(await page.evaluate(() => window.ENGINEERING_PLATFORM_NO_PROJECT)).toBe(true); + await expect(page.locator('body')).toHaveAttribute('data-project-id', 'none'); + return { body, binding, documentId, hash }; + }; + const screenshot = async (locale, phase, proof) => { + const file = `log-${locale}-${phase}-native-fresh.png`, output = testInfo.outputPath(file); + await page.locator('#componentLogs').screenshot({ path: output, animations: 'disabled' }); + captures.push({ scenario: `log-${phase}`, file, sha256: createHash('sha256').update(readFileSync(output)).digest('hex'), + run_scenario: testInfo.title, run_id: canary.ready.run_id, finding_ids: [], invocation_ids: [], publication: null, + locale, theme: await page.locator('html').getAttribute('data-theme'), viewport: page.viewportSize(), proof }); + await testInfo.attach(`log-${locale}-${phase}`, { path: output, contentType: 'image/png' }); + }; + try { + observer = await observeConsoleDocument(page); + for (const locale of ['en', 'nl', 'de', 'fr', 'es']) { + const url = new URL(canary.ready.url); url.search = '?localizationStrict=1'; + const initial = page.waitForResponse(response => isLogs(response) && response.status() === 200); + await page.goto(url.href, { waitUntil: 'domcontentloaded' }); + await initial; + if (await page.locator('#dashboardLocale').inputValue() !== locale) { + if (!await page.locator('#dashboardLocaleButton').isVisible()) await page.locator('#dashboardTitlebarOptionsToggle').click(); + await page.locator('#dashboardLocaleButton').click(); await page.locator(`[data-dashboard-locale="${locale}"]`).click(); + // Locale changes re-render the existing projection. Unchanged log + // versions need no HTTP read; the explicit INFO query below binds + // the required fresh response to this document and visible locale. + } + await expect(page.locator('html')).toHaveAttribute('lang', locale); + if (await page.locator('#componentLogs').getAttribute('open') === null) await page.locator('#componentLogs > summary').click(); + await expect.poll(() => page.evaluate(() => componentLogServerPaged)).toBe(true); + const current = observer.records().filter(record => record.path === '/api/logs/all' && record.completed && record.status === 200).at(-1); + expect(current).toBeTruthy(); + // A native current-query change identifies a completed read, rather than + // an unrelated preceding request with an identical body. + const healthyResponse = page.waitForResponse(response => isLogs(response) && response.status() === 200 + && new URL(response.url()).searchParams.get('level') === 'INFO'); + await page.locator('#logLevelFilter').selectOption('INFO'); + const healthy = await bind(await healthyResponse, 200); + expect(healthy.body.scope).toBe('PLATFORM'); expect(healthy.body.entries.length).toBeGreaterThan(0); + for (const event of healthy.body.events) { + await expect(page.locator('#logEventFilter')).toContainText(DASHBOARD_MESSAGES[locale][`log_event.${event}`]); + } + await screenshot(locale, 'healthy', { document_id: healthy.documentId, request_id: healthy.binding.request_id, response_sha256: healthy.hash, status: 200 }); + canary.child.stdin.write('suspend-read-source\n'); expect(await canary.next()).toEqual({ source_unavailable: true }); + const lostResponse = page.waitForResponse(response => isLogs(response) && response.status() === 503 + && new URL(response.url()).searchParams.get('level') === 'ERROR'); + await page.locator('#logLevelFilter').selectOption('ERROR'); + const lost = await bind(await lostResponse, 503); expect(lost.body).toEqual({ error: 'CENTRAL_UNAVAILABLE' }); + expect(lost.documentId).toBe(healthy.documentId); + await expect(page.locator('#platformComponentLog')).toContainText(DASHBOARD_MESSAGES[locale]['log_event.platform_log_unavailable']); + await expect(page.locator('#logEventFilter')).toContainText(DASHBOARD_MESSAGES[locale]['log_event.platform_log_unavailable']); + await screenshot(locale, 'unavailable', { document_id: lost.documentId, request_id: lost.binding.request_id, response_sha256: lost.hash, status: 503 }); + canary.child.stdin.write('restore-read-source\n'); const restored = await canary.next(); + expect(restored.restored_baseline).toEqual(canary.ready.before); + expect(restored.retained_recreated_files.filter(item => + /(?:^|\/)(?:epdata\.sqlite(?:-journal|-wal|-shm)?|runtime-identity\.json|server\.json)$/.test(item.path))).toEqual([]); + const recoveryNavigation = page.waitForResponse(response => isLogs(response) && response.status() === 200); + await page.reload({ waitUntil: 'domcontentloaded' }); + await bind(await recoveryNavigation, 200); + await expect.poll(() => page.evaluate(() => componentLogServerPaged)).toBe(true); + const recoveryResponse = page.waitForResponse(response => isLogs(response) && response.status() === 200 + && new URL(response.url()).searchParams.get('level') === 'INFO'); + await page.locator('#logLevelFilter').selectOption('INFO'); + const recovered = await bind(await recoveryResponse, 200); + expect(recovered.documentId).not.toBe(lost.documentId); + await expect(page.locator('html')).toHaveAttribute('lang', locale); + await expect.poll(() => page.evaluate(() => componentLogServerPaged)).toBe(true); + expect(recovered.body.scope).toBe('PLATFORM'); expect(recovered.body.entries.length).toBeGreaterThan(0); + if (await page.locator('#componentLogs').getAttribute('open') === null) await page.locator('#componentLogs > summary').click(); + await expect(page.locator('#platformComponentLog')).not.toContainText(DASHBOARD_MESSAGES[locale]['log_event.platform_log_unavailable']); + await screenshot(locale, 'restored', { document_id: recovered.documentId, request_id: recovered.binding.request_id, response_sha256: recovered.hash, status: 200 }); + rows.push({ locale, healthy_request: healthy.binding.request_id, unavailable_request: lost.binding.request_id, + restored_request: recovered.binding.request_id, original_document: healthy.documentId, restored_document: recovered.documentId, + retained_recreated_files: restored.retained_recreated_files }); + expect(errors, 'No ordinary localization/render page errors in the genuine log chain').toEqual([]); + } + const output = testInfo.outputPath('fresh-evidence-manifest.json'); + writeFileSync(output, JSON.stringify({ contract: 'ep-console-run-evidence-screenshots/v1', qualification: process.env.EP_RUN_EVIDENCE_INSTALLED_PYTHON ? 'INSTALLED' : 'SOURCE', + source_sha: process.env.EP_RUN_EVIDENCE_SOURCE_SHA || null, source_tree: process.env.EP_RUN_EVIDENCE_SOURCE_TREE || null, + wheel_sha256: process.env.EP_RUN_EVIDENCE_WHEEL_SHA256 || null, assets: canary.ready.assets, screenshots: captures, actual_log_read_chain: rows }, null, 2)); + await testInfo.attach('actual-five-locale-log-chain', { path: output, contentType: 'application/json' }); + } catch (error) { + bodyError = error; + try { if (observer) await observer.failure(testInfo, error); } + catch (captureError) { + bodyError = new AggregateError([error, captureError], 'Original log-chain failure and first-failure retention failure'); + } + throw bodyError; + } finally { + let cleanupError; + try { + await stopIsolatedCanary(canary.child, canary.next, testInfo); + expect(errors, 'No ordinary page errors through actual worker stop').toEqual([]); + } catch (error) { cleanupError = error; } + finally { page.off('pageerror', pageError); } + if (cleanupError) { + if (bodyError) throw new AggregateError([bodyError, cleanupError], 'Original log-chain failure and cleanup failure'); + throw cleanupError; + } + } +}); diff --git a/tests/engineering/dashboard_run_evidence_layout.mjs b/tests/engineering/dashboard_run_evidence_layout.mjs new file mode 100644 index 00000000..9ee61c99 --- /dev/null +++ b/tests/engineering/dashboard_run_evidence_layout.mjs @@ -0,0 +1,91 @@ +import { expect } from './dashboard_coverage_fixture.mjs'; + +/** Check actual painted card geometry before capture, without changing it. */ +async function measureRunEvidenceLayout(page) { + const modal = page.locator('#promptHistoryDetailModal'); + const cards = await modal.isVisible() ? modal.locator('[data-run-evidence]') : page.locator('[data-run-evidence]'); + return cards.evaluateAll(nodes => nodes.map(node => { + const rect = node.getBoundingClientRect(); + const heading = node.querySelector('h3').getBoundingClientRect(); + return { kind: node.dataset.runEvidence, x: rect.x, y: rect.y, + right: rect.right, bottom: rect.bottom, width: rect.width, height: rect.height, + scrollTop: node.scrollTop, heading: { x: heading.x, y: heading.y, bottom: heading.bottom }, + overflowY: getComputedStyle(node).overflowY }; + })); +} + +function validateRunEvidenceLayout(layout) { + if (layout.map(card => card.kind).join(',') !== 'selection,findings,publication') + throw new Error('Run evidence requires all three real cards'); + for (const card of layout) { + if (card.width <= 0 || card.height <= 0 || card.overflowY !== 'auto') + throw new Error(`Run evidence ${card.kind} lost usable native scroll geometry`); + } + for (let index = 1; index < layout.length; index++) { + if (layout[index].y < layout[index - 1].bottom) + throw new Error(`Run evidence cards overlap: ${layout[index - 1].kind}/${layout[index].kind}`); + } +} + +export async function assertRunEvidenceLayout(page) { + const layout = await measureRunEvidenceLayout(page); + expect(() => validateRunEvidenceLayout(layout)).not.toThrow(); + return layout; +} + +/** Prove the same assertion detects the original implicit-row defect. */ +export async function assertHistoryLayoutRefault(page) { + if (!await page.locator('#promptHistoryDetailModal').isVisible()) return; + const css = await page.addStyleTag({ content: + '#promptHistoryDetailContent { grid-auto-rows: auto; align-content: normal; }', + }); + try { + const original = await measureRunEvidenceLayout(page); + expect(() => validateRunEvidenceLayout(original)).toThrow('Run evidence cards overlap'); + } finally { + await css.evaluate(node => node.remove()); + } + await assertRunEvidenceLayout(page); +} + +/** Exercise the actual scroll container, then capture its readable heading. */ +export async function readRunEvidenceCardFromTop(page, target) { + await target.scrollIntoViewIfNeeded(); + await target.hover(); + const maximum = await target.evaluate(node => node.scrollHeight - node.clientHeight); + const wheelTo = async destination => { + const current = await target.evaluate(node => node.scrollTop); + if (current === destination) return; + const observed = await target.evaluateHandle(node => { + let listener; + const completion = new Promise(resolve => { + listener = () => resolve({ top: node.scrollTop }); + node.addEventListener('scrollend', listener, { once: true, passive: true }); + }); + return { completion, cancel: () => node.removeEventListener('scrollend', listener) }; + }); + const errors = []; + try { + await page.mouse.wheel(0, destination - current); + const ended = await observed.evaluate(record => record.completion); + expect(ended.top, 'Actual owned native scroll completes at the intended bound').toBe(destination); + } catch (error) { + errors.push(error); + } finally { + try { await observed.evaluate(record => record.cancel()); } catch (error) { errors.push(error); } + try { await observed.dispose(); } catch (error) { errors.push(error); } + } + if (errors.length) throw new AggregateError(errors, 'Owned native card scroll failed'); + }; + if (maximum > 0) { + await wheelTo(0); + await wheelTo(maximum); + await wheelTo(0); + } + await expect.poll(() => target.evaluate(node => node.scrollTop)).toBe(0); + const readable = await target.evaluate(node => { + const card = node.getBoundingClientRect(), heading = node.querySelector('h3').getBoundingClientRect(); + return heading.y >= card.y && heading.bottom <= card.bottom; + }); + expect(readable, 'Native scroll restores the readable card heading').toBe(true); +} diff --git a/tests/engineering/dashboard_shard_inventory.json b/tests/engineering/dashboard_shard_inventory.json index ea7dd752..832f7873 100644 --- a/tests/engineering/dashboard_shard_inventory.json +++ b/tests/engineering/dashboard_shard_inventory.json @@ -1,7 +1,7 @@ { "contract": "ep-dashboard-canonical-corpus/v1", "baseline_source_sha": "05e530d6339cb1c16b1e8f4814347578c5fd761c", - "mandatory_count": 524, + "mandatory_count": 529, "baseline_not_run_count": 4, "tests": [ { @@ -456,7 +456,7 @@ }, { "file": "dashboard_translation.integration.spec.mjs", - "title": "keeps a real historical modal open across delayed en\u2192nl\u2192de\u2192en and all supported locales", + "title": "keeps a real historical modal open across delayed en→nl→de→en and all supported locales", "expectedStatus": "passed", "annotations": [] }, @@ -3187,6 +3187,36 @@ "title": "actual observer rejects post-seal failure writes without changing retained bytes", "expectedStatus": "passed", "annotations": [] + }, + { + "file": "dashboard_run_evidence.integration.spec.mjs", + "title": "reads actual missing en/dark/390 dispatcher evidence without execution effects", + "expectedStatus": "passed", + "annotations": [] + }, + { + "file": "dashboard_run_evidence.integration.spec.mjs", + "title": "reads actual failed en/dark/390 dispatcher evidence without execution effects", + "expectedStatus": "passed", + "annotations": [] + }, + { + "file": "dashboard_run_evidence.integration.spec.mjs", + "title": "reads actual uncertain-result en/dark/390 dispatcher evidence without execution effects", + "expectedStatus": "passed", + "annotations": [] + }, + { + "file": "dashboard_run_evidence.integration.spec.mjs", + "title": "owned held route callbacks drain before scoped removal and preserve original failures", + "expectedStatus": "passed", + "annotations": [] + }, + { + "file": "dashboard_run_evidence.integration.spec.mjs", + "title": "actual installed five-locale log reads preserve healthy rows, source loss and restored projection", + "expectedStatus": "passed", + "annotations": [] } ] } diff --git a/tests/engineering/dashboard_shard_reporter.mjs b/tests/engineering/dashboard_shard_reporter.mjs index e5cda19c..892265c2 100644 --- a/tests/engineering/dashboard_shard_reporter.mjs +++ b/tests/engineering/dashboard_shard_reporter.mjs @@ -7,6 +7,16 @@ const inventoryBytes = readFileSync(new URL('./dashboard_shard_inventory.json', const inventory = JSON.parse(inventoryBytes); const key = test => JSON.stringify([path.basename(test.location?.file || test.file), test.title]); const annotations = test => (test.annotations || []).map(({ location, ...contract }) => contract); +// These independent stored-data cases each own their worker, database and guards. +// Place their measured work in the two spare parts; every case still executes. +const storedCaseParts = new Map([ + [JSON.stringify(['dashboard_run_evidence.integration.spec.mjs', + 'reads actual normal en/dark/390 dispatcher evidence without execution effects']), { originalPart: 0, targetPart: 2 }], + [JSON.stringify(['dashboard_run_evidence.integration.spec.mjs', + 'reads actual normal nl/dark/390 dispatcher evidence without execution effects']), { originalPart: 0, targetPart: 1 }], + [JSON.stringify(['dashboard_run_evidence.integration.spec.mjs', + 'reads actual normal nl/dark/1280 dispatcher evidence without execution effects']), { originalPart: 3, targetPart: 2 }], +]); export function partition(tests, canonical = inventory.tests) { const actual = new Map(); @@ -27,9 +37,21 @@ export function partition(tests, canonical = inventory.tests) { files.get(expected.file).push(test); } if (new Set(canonical.map(key)).size !== canonical.length) throw Error('Duplicate canonical dashboard test'); + const placedStoredCases = new Set(); for (const testsInFile of files.values()) { - testsInFile.forEach((test, index) => parts[index % 4].push(test)); + testsInFile.forEach((test, index) => { + const id = key(test), originalPart = index % 4; + const placement = storedCaseParts.get(id); + if (placement) { + if (originalPart !== placement.originalPart || placedStoredCases.has(id)) + throw Error(`Stored dashboard case has an altered original placement: ${id}`); + placedStoredCases.add(id); + } + parts[placement?.targetPart ?? originalPart].push(test); + }); } + if (placedStoredCases.size !== storedCaseParts.size) + throw Error('Stored dashboard case placement is missing its exact canonical case'); const union = parts.flat().map(key); if (union.length !== canonical.length || new Set(union).size !== canonical.length) throw Error('Dashboard parts are not a complete disjoint corpus'); diff --git a/tests/engineering/dashboard_shard_reporter.test.mjs b/tests/engineering/dashboard_shard_reporter.test.mjs index adf407a8..fc00b3fa 100644 --- a/tests/engineering/dashboard_shard_reporter.test.mjs +++ b/tests/engineering/dashboard_shard_reporter.test.mjs @@ -9,19 +9,65 @@ const corpus = JSON.parse(readFileSync(new URL('./dashboard_shard_inventory.json const tests = () => corpus.map(row => ({ ...row, location: { file: row.file }, annotations: row.annotations.map(a => ({ ...a })) })); const id = row => JSON.stringify([row.file, row.title]); -test('all 528 cases remain disjoint and each owning file is balanced across four parts', () => { +test('all 533 contracts retain their exact ownership except three independent stored-case moves', () => { const parts = partition(tests()); - assert.equal(parts.flat().length, 528); - assert.equal(new Set(parts.flat().map(id)).size, 528); + assert.equal(parts.flat().length, 533); + assert.equal(new Set(parts.flat().map(id)).size, 533); assert.deepEqual(parts.flat().map(id).sort(), corpus.map(id).sort()); + assert.deepEqual(parts.map(rows => rows.length), [133, 135, 134, 131]); + const moved = new Map([ + [JSON.stringify(['dashboard_run_evidence.integration.spec.mjs', + 'reads actual normal en/dark/390 dispatcher evidence without execution effects']), { originalPart: 0, targetPart: 2 }], + [JSON.stringify(['dashboard_run_evidence.integration.spec.mjs', + 'reads actual normal nl/dark/390 dispatcher evidence without execution effects']), { originalPart: 0, targetPart: 1 }], + [JSON.stringify(['dashboard_run_evidence.integration.spec.mjs', + 'reads actual normal nl/dark/1280 dispatcher evidence without execution effects']), { originalPart: 3, targetPart: 2 }], + ]); + const original = new Map(), fileOrdinals = new Map(); + for (const row of corpus) { + const ordinal = fileOrdinals.get(row.file) || 0; + original.set(id(row), ordinal % 4); + fileOrdinals.set(row.file, ordinal + 1); + } + const changes = [], restored = [[], [], [], []]; + parts.forEach((rows, actualPart) => rows.forEach(row => { + const identity = id(row), originalPart = original.get(identity); + assert.equal(actualPart, moved.get(identity)?.targetPart ?? originalPart, identity); + if (actualPart !== originalPart) { + assert.equal(originalPart, moved.get(identity).originalPart); + changes.push(identity); + } + if (row.expectedStatus === 'skipped') assert.equal(actualPart, originalPart); + restored[originalPart].push(row); + })); + assert.deepEqual(changes.sort(), [...moved.keys()].sort()); + assert.deepEqual(restored.map(rows => rows.length), [135, 134, 132, 132]); for (const file of new Set(corpus.map(row => row.file))) { - const counts = parts.map(rows => rows.filter(row => row.file === file).length); + const counts = restored.map(rows => rows.filter(row => row.file === file).length); assert.ok(Math.max(...counts) - Math.min(...counts) <= 1); } + const groupedCanonical = [...new Set(corpus.map(row => row.file))] + .flatMap(file => corpus.filter(row => row.file === file)); + parts.forEach((rows, actualPart) => assert.deepEqual(rows.map(id), + groupedCanonical.filter(row => (moved.get(id(row))?.targetPart ?? original.get(id(row))) === actualPart).map(id))); + const absent = corpus.filter(row => !moved.has(id(row))); + assert.throws(() => partition(tests().filter(row => !moved.has(id(row))), absent), /placement is missing/); + for (const identity of moved.keys()) { + const changedOrigin = [...corpus]; + const first = changedOrigin.findIndex(row => id(row) === identity); + const next = changedOrigin.findIndex((row, index) => index > first + && row.file === changedOrigin[first].file && !moved.has(id(row))); + assert.ok(next > first); + [changedOrigin[first], changedOrigin[next]] = [changedOrigin[next], changedOrigin[first]]; + assert.throws(() => partition(tests(), changedOrigin), error => + error.message === `Stored dashboard case has an altered original placement: ${identity}`); + } }); test('narrowed, renamed, repeated and expanded corpora remain red', () => { assert.throws(() => partition(tests().slice(1)), /incomplete/); + assert.throws(() => partition(tests().slice(0, 528)), /incomplete/); + assert.throws(() => partition(tests().slice(0, 532)), /incomplete/); const renamed = tests(); renamed[0].title += ' changed'; assert.throws(() => partition(renamed), /mismatch/); assert.throws(() => partition([...tests(), tests()[0]]), /Duplicate/); @@ -41,7 +87,7 @@ test('changed expected outcomes and skip/fixme/fail annotations remain red', () test('only the four unchanged baseline skip contracts remain separately NOT_RUN', () => { const all = tests(), baseline = all.filter(row => row.expectedStatus === 'skipped'); assert.equal(baseline.length, 4); - assert.equal(all.filter(row => row.expectedStatus === 'passed').length, 524); + assert.equal(all.filter(row => row.expectedStatus === 'passed').length, 529); const stripped = tests(); stripped.find(row => row.expectedStatus === 'skipped').annotations = []; assert.throws(() => partition(stripped), /altered execution/); const changed = tests(); changed.find(row => row.expectedStatus === 'skipped').expectedStatus = 'passed'; @@ -74,13 +120,13 @@ test('supported reporter excludes only out-of-part cases and binds complete term reporter.preprocess({ config: { shard: { current: 2, total: 4 }, workers: 1 }, suite: { allTests: () => all }, testRun: { skipSharding() {}, exclude(row) { excluded.push(row); } } }); const selected = all.filter(row => !excluded.includes(row)); - assert.equal(selected.length + excluded.length, 528); + assert.equal(selected.length + excluded.length, 533); reporter.onBegin({ projects: [{ outputDir: root }] }, { allTests: () => selected }); selected.forEach(row => reporter.onTestEnd(row, { status: row.expectedStatus, retry: 0 })); assert.equal(reporter.onEnd({ status: 'passed' }), undefined); const receipt = JSON.parse(readFileSync(path.join(root, 'complete-shard.json'))); assert.equal(receipt.qualified, true); - assert.equal(receipt.parts.flat().length, 528); + assert.equal(receipt.parts.flat().length, 533); reporter.onError(Error('outside case failure')); assert.deepEqual(reporter.onEnd({ status: 'passed' }), { status: 'failed' }); } finally { rmSync(root, { recursive: true }); } diff --git a/tests/engineering/ui_localization_contract.test.mjs b/tests/engineering/ui_localization_contract.test.mjs index 12507f51..1750abd2 100644 --- a/tests/engineering/ui_localization_contract.test.mjs +++ b/tests/engineering/ui_localization_contract.test.mjs @@ -71,3 +71,24 @@ test("contains a five-locale explanation for every platform-data relocation erro for (const code of codes) assert.ok(DASHBOARD_MESSAGES[locale][`configuration.relocation_error.${code}`], `${locale}:${code}`); }); + +test("all finite owning producer events and the read failure have strict labels in five locales", async () => { + const { execFileSync } = await import("node:child_process"); + const { fileURLToPath } = await import("node:url"); + const actual = JSON.parse(execFileSync("python3", [fileURLToPath(new URL("./dashboard_owned_log_events.py", import.meta.url))], { encoding: "utf8" })); + assert.equal(actual.events.length, 30); + assert.deepEqual(actual.calls.filter(row => row.producer_scope === "console_audit_conditional").map(row => row.event).sort(), + ["dashboard_action_completed", "dashboard_action_failed"]); + assert.deepEqual(actual.calls.filter(row => row.producer_scope === "console_audit_cancellation").map(row => row.event), + ["dashboard_action_completed"]); + assert.equal(actual.technical_forwarders.length, 1); + for (const locale of ["en", "nl", "de", "fr", "es"]) { + const translate = createTranslator(locale, { strict: true, surface: "Operations Console logs" }); + for (const code of [...actual.events, "platform_log_unavailable"]) { + const label = translate(`log_event.${code}`); + assert.equal(label, DASHBOARD_MESSAGES[locale][`log_event.${code}`]); + assert.ok(label.trim() && !label.includes("_"), `Actual producer ${code} needs an operator label in ${locale}`); + } + assert.throws(() => translate("log_event.declared_unknown_event", {}, "Unapproved fallback"), LocalizationContractError); + } +});