v0.3.15-pre.005-fix.002
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
# file: Cargo.toml
|
||||
# version: 600
|
||||
# version: 601
|
||||
|
||||
[workspace]
|
||||
resolver = "3"
|
||||
members = ["crates/ksp-app-backfill-desk", "crates/ksp-app-config-desk", "crates/ksp-app-raw-transaction-ingest-desk", "crates/ksp-app-solprices-desk", "crates/ksp-app-store-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-interface-lib", "crates/ksp-job-api", "crates/ksp-job-backfill-lib", "crates/ksp-logging-lib", "crates/ksp-offchain-transport-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-program-api", "crates/ksp-raw-transaction-lib", "crates/ksp-store-api", "crates/ksp-store-lib", "crates/ksp-store-postgres-lib", "crates/ksp-wallet-lib", "crates/ksp-worker-api", "crates/ksp-worker-raw-transaction-ingest-lib"]
|
||||
|
||||
[workspace.package]
|
||||
version = "0.3.15-pre.5.fix.1"
|
||||
version = "0.3.15-pre.5.fix.2"
|
||||
edition = "2024"
|
||||
license = "MIT"
|
||||
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: crates/ksp-app-raw-transaction-ingest-desk/frontend/main.html -->
|
||||
<!-- version: 1 -->
|
||||
<!-- version: 2 -->
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
|
||||
@@ -8,27 +8,30 @@
|
||||
<meta content="width=device-width, initial-scale=1.0" name="viewport">
|
||||
<link rel="icon" href="imgs/logo.png">
|
||||
<link rel="stylesheet" href="sass/main.scss">
|
||||
<title>KSP Raw Transaction Ingest Desk</title>
|
||||
<title>Raw Transaction Ingest Desk — Routes</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="app-header bg-dark text-light">
|
||||
<div class="container-fluid h-100 d-flex align-items-center gap-3 px-4">
|
||||
<img class="app-logo" src="imgs/logo.png" alt="KSP">
|
||||
<div>
|
||||
<div class="fw-semibold">KSP Raw Transaction Ingest Desk</div>
|
||||
<small class="text-light-emphasis">Composition et supervision des routes live RawTransaction</small>
|
||||
<header class="app-header">
|
||||
<nav class="navbar h-100 py-0 bg-light text-dark">
|
||||
<div class="container-fluid px-4 flex-nowrap">
|
||||
<div class="navbar-brand d-flex align-items-center me-4 flex-nowrap">
|
||||
<img alt="KSP" src="imgs/logo.png" class="app-logo">
|
||||
<span class="ps-2 fs-4 fw-semibold text-primary text-nowrap">Raw Transaction Ingest Desk</span>
|
||||
<span class="mx-2 fs-5 text-body-secondary" aria-hidden="true">—</span>
|
||||
<span id="headerViewTitle" class="fs-5 text-body text-nowrap">Routes</span>
|
||||
</div>
|
||||
<span id="headerPhase" class="badge text-bg-secondary ms-auto">scaffold</span>
|
||||
</div>
|
||||
<span id="headerPhase" class="badge text-bg-secondary ms-auto">scaffold</span>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="app-main container-fluid px-0">
|
||||
<div class="row g-0 h-100">
|
||||
<aside class="app-sidebar bg-dark text-light">
|
||||
<div class="app-sidebar-scroll" data-simplebar>
|
||||
<nav class="nav nav-pills flex-column p-3 gap-2" aria-label="Navigation principale">
|
||||
<button class="nav-link active text-start" type="button" data-view="routes">
|
||||
<main class="app-main container-fluid p-0">
|
||||
<div class="row g-0 h-100 flex-nowrap">
|
||||
<aside class="col-auto app-sidebar border-end bg-body-tertiary">
|
||||
<div class="app-sidebar-scroll h-100" data-simplebar>
|
||||
<nav class="nav nav-pills flex-column gap-1 p-3" aria-label="Navigation Raw Transaction Ingest Desk">
|
||||
<button class="nav-link text-start active" type="button" data-view="routes">
|
||||
<i class="fa-solid fa-route me-2" aria-hidden="true"></i>Routes
|
||||
</button>
|
||||
<button class="nav-link text-start" type="button" data-view="diagnostics">
|
||||
@@ -37,56 +40,58 @@
|
||||
</nav>
|
||||
</div>
|
||||
</aside>
|
||||
<section class="app-content flex-grow-1">
|
||||
<div class="h-100" data-simplebar>
|
||||
<div class="container-fluid p-4">
|
||||
<section data-view-panel="routes">
|
||||
<div class="d-flex align-items-start justify-content-between gap-3 flex-wrap mb-4">
|
||||
<div>
|
||||
<h1 class="h3 mb-1">Routes live</h1>
|
||||
<p class="text-body-secondary mb-0">Fondation statique V1 ; la composabilité Config sera matérialisée en pre.006.</p>
|
||||
<section class="col app-content app-scrollable h-100" data-simplebar>
|
||||
<div class="container-fluid px-4 py-4">
|
||||
<div class="card app-shell-card mx-auto shadow-sm border-0">
|
||||
<div class="card-body p-4">
|
||||
<section data-view-panel="routes">
|
||||
<div class="d-flex align-items-start justify-content-between gap-3 flex-wrap mb-4">
|
||||
<div>
|
||||
<h1 class="h3 mb-1">Routes live</h1>
|
||||
<p class="text-body-secondary mb-0">Fondation statique V1 ; la composabilité Config sera matérialisée en pre.006.</p>
|
||||
</div>
|
||||
<button id="refreshRouteFoundation" class="btn btn-outline-primary btn-sm" type="button">
|
||||
<i class="fa-solid fa-rotate me-2" aria-hidden="true"></i>Refresh
|
||||
</button>
|
||||
</div>
|
||||
<button id="refreshRouteFoundation" class="btn btn-outline-primary btn-sm" type="button">
|
||||
<i class="fa-solid fa-rotate me-2" aria-hidden="true"></i>Refresh
|
||||
</button>
|
||||
</div>
|
||||
<div class="alert alert-info" role="status">
|
||||
Aucun Worker n'est démarré par ce scaffold. Les cinq IDs ci-dessous ne constituent aucune preuve de disponibilité runtime.
|
||||
</div>
|
||||
<div id="routeFoundation" class="row g-3" aria-live="polite"></div>
|
||||
<div class="card shadow-sm mt-4">
|
||||
<div class="card-header fw-semibold">États réservés</div>
|
||||
<div class="card-body">
|
||||
<div id="routeStates" class="d-flex flex-wrap gap-2"></div>
|
||||
<div class="alert alert-info" role="status">
|
||||
Aucun Worker n'est démarré par ce scaffold. Les cinq IDs ci-dessous ne constituent aucune preuve de disponibilité runtime.
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<div id="routeFoundation" class="row g-3 app-route-grid" aria-live="polite"></div>
|
||||
<div class="card shadow-sm mt-4">
|
||||
<div class="card-header fw-semibold">États réservés</div>
|
||||
<div class="card-body">
|
||||
<div id="routeStates" class="d-flex flex-wrap gap-2"></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section data-view-panel="diagnostics" hidden>
|
||||
<div class="d-flex align-items-center justify-content-between gap-3 flex-wrap mb-4">
|
||||
<div>
|
||||
<h1 class="h3 mb-1">Diagnostics</h1>
|
||||
<p class="text-body-secondary mb-0">État sûr du scaffold Config, Logging et desktop.</p>
|
||||
<section data-view-panel="diagnostics" hidden>
|
||||
<div class="d-flex align-items-center justify-content-between gap-3 flex-wrap mb-4">
|
||||
<div>
|
||||
<h1 class="h3 mb-1">Diagnostics</h1>
|
||||
<p class="text-body-secondary mb-0">État sûr du scaffold Config, Logging et desktop.</p>
|
||||
</div>
|
||||
<button id="refreshRuntimeStatus" class="btn btn-outline-primary btn-sm" type="button">
|
||||
<i class="fa-solid fa-rotate me-2" aria-hidden="true"></i>Refresh
|
||||
</button>
|
||||
</div>
|
||||
<button id="refreshRuntimeStatus" class="btn btn-outline-primary btn-sm" type="button">
|
||||
<i class="fa-solid fa-rotate me-2" aria-hidden="true"></i>Refresh
|
||||
</button>
|
||||
</div>
|
||||
<div class="card shadow-sm">
|
||||
<div class="card-header fw-semibold">Runtime</div>
|
||||
<div class="card-body">
|
||||
<dl class="row mb-0 app-runtime-list">
|
||||
<dt class="col-sm-5">Version</dt><dd id="runtimeVersion" class="col-sm-7">—</dd>
|
||||
<dt class="col-sm-5">Phase</dt><dd id="runtimeShellPhase" class="col-sm-7">—</dd>
|
||||
<dt class="col-sm-5">Documents Config</dt><dd id="runtimeConfigDocuments" class="col-sm-7">—</dd>
|
||||
<dt class="col-sm-5">Profil composite</dt><dd id="runtimeCompositeProfile" class="col-sm-7">—</dd>
|
||||
<dt class="col-sm-5">Profil Logging</dt><dd id="runtimeLoggingProfile" class="col-sm-7">—</dd>
|
||||
<dt class="col-sm-5">Fallback Logging</dt><dd id="runtimeLoggingFallback" class="col-sm-7">—</dd>
|
||||
</dl>
|
||||
<div id="runtimeDiagnostic" class="alert alert-warning mt-3 mb-0" role="status" aria-live="polite" hidden></div>
|
||||
<div class="card shadow-sm">
|
||||
<div class="card-header fw-semibold">Runtime</div>
|
||||
<div class="card-body">
|
||||
<dl class="row mb-0 app-runtime-list">
|
||||
<dt class="col-sm-5">Version</dt><dd id="runtimeVersion" class="col-sm-7">—</dd>
|
||||
<dt class="col-sm-5">Phase</dt><dd id="runtimeShellPhase" class="col-sm-7">—</dd>
|
||||
<dt class="col-sm-5">Documents Config</dt><dd id="runtimeConfigDocuments" class="col-sm-7">—</dd>
|
||||
<dt class="col-sm-5">Profil composite</dt><dd id="runtimeCompositeProfile" class="col-sm-7">—</dd>
|
||||
<dt class="col-sm-5">Profil Logging</dt><dd id="runtimeLoggingProfile" class="col-sm-7">—</dd>
|
||||
<dt class="col-sm-5">Fallback Logging</dt><dd id="runtimeLoggingFallback" class="col-sm-7">—</dd>
|
||||
</dl>
|
||||
<div id="runtimeDiagnostic" class="alert alert-warning mt-3 mb-0" role="status" aria-live="polite" hidden></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-app-raw-transaction-ingest-desk/frontend/sass/_app.scss
|
||||
// version: 1
|
||||
// version: 2
|
||||
|
||||
$app-header-height: 72px;
|
||||
$app-footer-height: 42px;
|
||||
@@ -52,6 +52,17 @@ body {
|
||||
height: 42px;
|
||||
}
|
||||
|
||||
.app-scrollable {
|
||||
height: 100%;
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
.app-shell-card {
|
||||
width: 100%;
|
||||
max-width: 1320px;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.app-sidebar {
|
||||
width: $app-sidebar-width;
|
||||
min-width: $app-sidebar-width;
|
||||
@@ -77,12 +88,30 @@ body {
|
||||
font-family: var(--bs-font-monospace);
|
||||
}
|
||||
|
||||
.app-route-grid {
|
||||
margin-right: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.app-route-grid > * {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.app-route-card {
|
||||
min-width: 0;
|
||||
max-width: 100%;
|
||||
overflow: hidden;
|
||||
border-left: 4px solid rgba($primary, 0.55);
|
||||
}
|
||||
|
||||
.app-route-code {
|
||||
min-width: 0;
|
||||
overflow-wrap: anywhere;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
.app-placeholder {
|
||||
min-height: 220px;
|
||||
min-height: 320px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
@@ -90,6 +119,7 @@ body {
|
||||
gap: 1rem;
|
||||
padding: 2rem;
|
||||
border: 1px dashed var(--bs-border-color);
|
||||
border-radius: var(--bs-border-radius-lg);
|
||||
color: var(--bs-secondary-color);
|
||||
background: var(--bs-body-bg);
|
||||
text-align: center;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-app-raw-transaction-ingest-desk/frontend/ts/main.ts
|
||||
// version: 1
|
||||
// version: 2
|
||||
|
||||
import "bootstrap";
|
||||
import ResizeObserver from "resize-observer-polyfill";
|
||||
@@ -14,6 +14,11 @@ installFrontendConsoleBridge("main");
|
||||
|
||||
type ViewId = "routes" | "diagnostics";
|
||||
|
||||
const viewTitles: Record<ViewId, string> = {
|
||||
routes: "Routes",
|
||||
diagnostics: "Diagnostics",
|
||||
};
|
||||
|
||||
function isViewId(value: string | undefined): value is ViewId {
|
||||
return value === "routes" || value === "diagnostics";
|
||||
}
|
||||
@@ -27,7 +32,11 @@ function activateView(viewId: ViewId, source: "startup" | "user"): void {
|
||||
button.classList.toggle("active", active);
|
||||
button.setAttribute("aria-current", active ? "page" : "false");
|
||||
});
|
||||
document.title = `Raw Transaction Ingest Desk — ${viewId === "routes" ? "Routes" : "Diagnostics"}`;
|
||||
const header = document.querySelector<HTMLElement>("#headerViewTitle");
|
||||
if (header) {
|
||||
header.textContent = viewTitles[viewId];
|
||||
}
|
||||
document.title = `Raw Transaction Ingest Desk — ${viewTitles[viewId]}`;
|
||||
frontendTrace("main", "Raw Transaction Ingest Desk view DOM updated", { viewId, source });
|
||||
}
|
||||
|
||||
@@ -83,7 +92,7 @@ function renderRouteFoundation(foundation: RawIngestRouteFoundationDto): void {
|
||||
routeRoot.replaceChildren();
|
||||
for (const routeId of foundation.routeIds) {
|
||||
const column = document.createElement("div");
|
||||
column.className = "col-12 col-xl-6";
|
||||
column.className = "col-12 col-xl-6 app-route-column";
|
||||
const card = document.createElement("div");
|
||||
card.className = "card h-100 shadow-sm app-route-card";
|
||||
const body = document.createElement("div");
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-app-raw-transaction-ingest-desk/tests/desktop_contract.rs
|
||||
// version: 1
|
||||
// version: 2
|
||||
|
||||
//! Desktop scaffold contract canaries for Raw Transaction Ingest Desk.
|
||||
|
||||
@@ -122,3 +122,34 @@ fn pre_005_route_foundation_is_backend_owned_and_has_exact_five_ids_and_seven_st
|
||||
assert!(!tauri.contains(forbidden), "scaffold Tauri surface contains premature runtime marker {forbidden}");
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pre_005_fix_002_shell_reuses_common_light_template_and_bounds_route_foundation() {
|
||||
let html = read_text(app_root().join("frontend/main.html").as_path());
|
||||
for required in [
|
||||
"<header class=\"app-header\">",
|
||||
"navbar h-100 py-0 bg-light text-dark",
|
||||
"col-auto app-sidebar border-end bg-body-tertiary",
|
||||
"col app-content app-scrollable h-100",
|
||||
"card app-shell-card mx-auto shadow-sm border-0",
|
||||
"id=\"routeFoundation\" class=\"row g-3 app-route-grid\"",
|
||||
] {
|
||||
assert!(html.contains(required), "missing common shell marker: {required}");
|
||||
}
|
||||
for forbidden in ["app-header bg-dark", "app-sidebar bg-dark text-light", "app-content flex-grow-1"] {
|
||||
assert!(!html.contains(forbidden), "obsolete shell marker remains: {forbidden}");
|
||||
}
|
||||
let styles = read_text(app_root().join("frontend/sass/_app.scss").as_path());
|
||||
for required in [
|
||||
".app-scrollable {",
|
||||
".app-shell-card {",
|
||||
".app-route-grid {",
|
||||
".app-route-grid > * {",
|
||||
"min-width: 0;",
|
||||
"max-width: 100%;",
|
||||
"overflow: hidden;",
|
||||
"overflow-wrap: anywhere;",
|
||||
] {
|
||||
assert!(styles.contains(required), "missing bounded layout marker: {required}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-app-raw-transaction-ingest-desk/tests/release_completeness.rs
|
||||
// version: 1
|
||||
// version: 2
|
||||
|
||||
//! Release-completeness canaries for the Raw Transaction Ingest Desk scaffold tranche.
|
||||
|
||||
@@ -46,7 +46,7 @@ fn pre_005_production_module_inventory_is_exact_and_scaffold_only() {
|
||||
#[test]
|
||||
fn pre_005_public_surface_exposes_only_application_run_entry_point() {
|
||||
let lib = read_text(app_root().join("src/lib.rs").as_path());
|
||||
let public_reexports = lib.lines().filter(|line| line.starts_with("pub use ")).collect::<std::vec::Vec<_>>();
|
||||
let public_reexports = lib.lines().filter(|line| return line.starts_with("pub use ")).collect::<std::vec::Vec<_>>();
|
||||
assert_eq!(public_reexports, vec!["pub use self::tauri::run;"]);
|
||||
}
|
||||
|
||||
|
||||
164
deltas/0.3.15/pre.005-fix.002.md
Normal file
164
deltas/0.3.15/pre.005-fix.002.md
Normal file
@@ -0,0 +1,164 @@
|
||||
<!-- file: deltas/0.3.15/pre.005-fix.002.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.3.15-pre.005-fix.002` — réalignement du template Desk et bornage de `routeFoundation`
|
||||
|
||||
## Base requise
|
||||
|
||||
```text
|
||||
0.3.15-pre.005-fix.001
|
||||
workspace.package.version = 0.3.15-pre.5.fix.1
|
||||
deltas/0.3.15/pre.005.md présent
|
||||
deltas/0.3.15/pre.005-fix.001.md présent
|
||||
```
|
||||
|
||||
## Défauts observés
|
||||
|
||||
Le contrôle visuel du nouveau `ksp-app-raw-transaction-ingest-desk` montre deux dérives du scaffold livré en `pre.005` :
|
||||
|
||||
```text
|
||||
le shell principal utilise un header et une sidebar sombres alors que les autres ksp-app-*-desk utilisent le template clair commun ;
|
||||
les cartes générées dans #routeFoundation peuvent déborder horizontalement à droite de la fenêtre.
|
||||
```
|
||||
|
||||
Le gate opérateur de `pre.005-fix.001` révèle également un second défaut Clippy strict dans `tests/release_completeness.rs` :
|
||||
|
||||
```text
|
||||
error: missing `return` statement
|
||||
-D clippy::implicit-return
|
||||
```
|
||||
|
||||
La closure de filtrage du canari de surface publique utilisait un retour implicite.
|
||||
|
||||
## Correction du template desktop
|
||||
|
||||
Le shell principal est réaligné sur le contrat visuel déjà utilisé par Config Desk, Wallet Desk, SOL Prices Desk, Store Desk et Backfill Desk :
|
||||
|
||||
```text
|
||||
header app-header contenant une navbar bg-light text-dark ;
|
||||
sidebar col-auto app-sidebar border-end bg-body-tertiary ;
|
||||
contenu col app-content app-scrollable h-100 avec SimpleBar ;
|
||||
container-fluid px-4 py-4 ;
|
||||
card app-shell-card mx-auto shadow-sm border-0 ;
|
||||
footer sombre commun inchangé.
|
||||
```
|
||||
|
||||
Le titre de vue du header est désormais explicitement possédé par `#headerViewTitle` et synchronisé par la navigation frontend entre `Routes` et `Diagnostics`.
|
||||
|
||||
Aucune couleur métier spécifique n'est introduite : `_variables.scss` et `_bootswatch.scss` restent ceux du template Pulse déjà copié depuis les autres Desk.
|
||||
|
||||
## Correction du débordement de `routeFoundation`
|
||||
|
||||
La structure commune manquante est restaurée et la grille de routes reçoit en plus des gardes explicites :
|
||||
|
||||
```text
|
||||
app-shell-card avec width 100 %, max-width 1320px et min-width 0 ;
|
||||
app-route-grid sans marge horizontale négative effective ;
|
||||
enfants de grille avec min-width 0 ;
|
||||
cartes avec min-width 0, max-width 100 % et overflow hidden ;
|
||||
IDs monospace avec overflow-wrap anywhere et word-break break-word.
|
||||
```
|
||||
|
||||
Les colonnes générées par TypeScript portent également `app-route-column` en plus des classes Bootstrap `col-12 col-xl-6`.
|
||||
|
||||
Ces protections empêchent un identifiant ou une carte de forcer la largeur du flex item principal au-delà de la fenêtre.
|
||||
|
||||
## Correction Clippy
|
||||
|
||||
Le canari `pre_005_public_surface_exposes_only_application_run_entry_point` utilise maintenant un `return` explicite dans sa closure :
|
||||
|
||||
```rust
|
||||
.filter(|line| return line.starts_with("pub use "))
|
||||
```
|
||||
|
||||
La règle workspace `clippy::implicit_return = deny` est ainsi respectée également dans ce test d'intégration.
|
||||
|
||||
## Canari de régression desktop
|
||||
|
||||
`tests/desktop_contract.rs` vérifie désormais explicitement :
|
||||
|
||||
```text
|
||||
le header clair commun ;
|
||||
la sidebar bg-body-tertiary ;
|
||||
le flex item Bootstrap col app-content app-scrollable ;
|
||||
le wrapper app-shell-card ;
|
||||
l'absence des anciens marqueurs bg-dark/flex-grow-1 ;
|
||||
les gardes CSS de largeur et de wrapping de routeFoundation.
|
||||
```
|
||||
|
||||
Le test ne fige pas le contenu fonctionnel futur des routes et ne transforme pas le scaffold en runtime Worker.
|
||||
|
||||
## Frontières conservées
|
||||
|
||||
```text
|
||||
aucun Start/Stop Worker ;
|
||||
aucune composition Transport/Store/Worker ;
|
||||
aucune ouverture d'endpoint ;
|
||||
aucun changement Config ;
|
||||
aucune nouvelle API publique ;
|
||||
aucune nouvelle dépendance ou feature ;
|
||||
aucun changement des cinq IDs de route ;
|
||||
aucun changement des sept états applicatifs ;
|
||||
aucun endpoint, secret ou handle exposé au frontend.
|
||||
```
|
||||
|
||||
## Fichiers ajoutés
|
||||
|
||||
```text
|
||||
deltas/0.3.15/pre.005-fix.002.md
|
||||
```
|
||||
|
||||
## Fichiers modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
crates/ksp-app-raw-transaction-ingest-desk/frontend/main.html
|
||||
crates/ksp-app-raw-transaction-ingest-desk/frontend/sass/_app.scss
|
||||
crates/ksp-app-raw-transaction-ingest-desk/frontend/ts/main.ts
|
||||
crates/ksp-app-raw-transaction-ingest-desk/tests/desktop_contract.rs
|
||||
crates/ksp-app-raw-transaction-ingest-desk/tests/release_completeness.rs
|
||||
```
|
||||
|
||||
## Fichiers supprimés
|
||||
|
||||
```text
|
||||
aucun
|
||||
```
|
||||
|
||||
## Version Cargo
|
||||
|
||||
Le fix modifie le frontend applicatif et un test Rust. Conformément aux règles de versioning du workspace :
|
||||
|
||||
```text
|
||||
header Cargo.toml : 600 -> 601
|
||||
workspace.package.version : 0.3.15-pre.5.fix.1 -> 0.3.15-pre.5.fix.2
|
||||
```
|
||||
|
||||
## Audits disponibles dans l'environnement d'assemblage
|
||||
|
||||
```text
|
||||
General Rust rule audit: clean
|
||||
Rust export completeness audit: 0 candidate(s)
|
||||
KSP workspace Rust rule audit: clean
|
||||
Markdown table audit: clean (318 table(s), 195 file(s))
|
||||
HTML parse: clean
|
||||
```
|
||||
|
||||
La toolchain Cargo/Rust n'est pas disponible dans l'environnement d'assemblage. Les gates Cargo, Clippy et tests restent donc à confirmer après application du delta.
|
||||
|
||||
## Gate opérateur attendu
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
cargo fmt --all -- --check
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.3.15
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
||||
cargo test -p ksp-app-raw-transaction-ingest-desk --all-targets --all-features
|
||||
cargo test --workspace --all-targets --all-features
|
||||
(cd crates/ksp-app-raw-transaction-ingest-desk && npm run build)
|
||||
(cd crates/ksp-app-raw-transaction-ingest-desk && cargo tauri dev)
|
||||
```
|
||||
|
||||
Le dernier lancement est le contrôle visuel explicite du shell commun et de l'absence de débordement horizontal de `routeFoundation`.
|
||||
Reference in New Issue
Block a user