Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

surfaces-never-disagree — Každý povrch promítá stejný stav, říká, kdy byl pozorován, a nevede si vlastní seznam

Čtenář na kterémkoli povrchu vidí tutéž hodnotu, čas, kdy byla pozorována, a zda je zastaralá; schopnost přidaná do registru nebo z něj odebraná se objeví nebo zmizí všude bez úpravy kteréhokoli konzumenta; stránka obsluhovaná vedle zápisových tras spouští jen skript, který dodala.

AKTIVNÍ 7 of 13 issues done

připraveno
6
blokováno
0
aktivní
0
verify
0
hotovo
7
zrušeno
0

Problém

Jádrová projekce drží: 181 rout /api/v1 živého serveru se rovná 181 operacím OpenAPI, které se rovnají commitovanému docs/generated/openapi.json, a executor je jedinou cestou dispatche (apps/majordomus-cli/src/capability/executor.rs:156). Kolem toho: aktuálnost není jednotná, protože dashboard/overview, episodes, lifecycle/runtime, plan/status, served a mesh nenesou observed_at, odznak přehledu je na nečinném repozitáři trvale zastaralý (apps/majordomus-cli/src/index.rs:44, apps/majordomus-cli/src/live.rs:250-252) a GET / řekl stale: null, zatímco servíroval build o 12 commitů za HEAD. Vlastnost parity porovnává HTTP jen pro GET routy a vylučuje koordinační read modely (apps/majordomus-cli/tests/properties.rs:166-168,300) a nic neporovnává JSON z CLI s HTTP. /swagger nemá CSP ani SRI na stejném originu jako zápisové routy (apps/majordomus-cli/src/http/swagger.rs:52,79). Cockpit a web drží nejméně devět katalogů na straně konzumenta toho, co registr deklaruje, a ADR 0004 říká, že nic nemá druhý registr. Změřeno v auditu základního stavu runtime z 2026-10-09 na masteru 1fb8d6be44 (plan/RUNTIME_BASELINE.md).

Výsledek

Čtenář na kterémkoli povrchu vidí tutéž hodnotu, čas, kdy byla pozorována, a zda je zastaralá; schopnost přidaná do registru nebo z něj odebraná se objeví nebo zmizí všude bez úpravy kteréhokoli konzumenta; stránka obsluhovaná vedle zápisových tras spouští jen skript, který dodala.

Aktuální stav

Implementováno: trasy, OpenAPI, MCP a generovaný dataset registru jsou odvozeny z registru a kontrolovány na drift. Částečně: čerstvost, parita, přístup Cockpitu k datům (pět stránek čte ctx.registry přímo, .ai/repo/ui-integrity-baseline.txt:9-13). Druhé registry: strom clap (kontrolovaný oběma směry apps/majordomus-cli/src/capability/closure.rs), cli/local.rs LOCAL (89 příkazů), nativní webové povrchy (apps/majordomus-cli/src/web/discover.rs:150), trasy Cockpitu (tři seznamy, vzájemně křížově kontrolované) a kopie spotřebitelů uvedené v plan/RUNTIME_BASELINE.md.

Cílový stav

Každá odpověď hlásící stav nese observed_at a source, vynuceno nad registrem; vlastnost parity pokrývá zapisovatele a CLI; žádný soubor Cockpitu ani webu nejmenuje hodnotu, kterou už deklaruje enum, schopnost nebo HttpExposure; /swagger a každé GET odmítají, co by mohla udělat nepřátelská stránka nebo rebindingový hostitel.

Rozsah

  • apps/majordomus-cli/src/capability/builtin
  • apps/majordomus-cli/src/cockpit
  • apps/majordomus-cli/src/http
  • apps/majordomus-cli/src/live.rs
  • apps/majordomus-cli/src/index.rs
  • apps/majordomus-cli/src/site.rs
  • apps/majordomus-cli/src/web/discover.rs
  • share/cockpit
  • site/templates
  • apps/majordomus-cli/tests/properties.rs
  • apps/majordomus-cli/tests/dashboard.rs
  • test/cases
  • docs/SURFACES.md
  • docs/COCKPIT.md
  • .ai/repo/adrs/0004-canonical-architecture-and-performance-truth.md

Mimo rozsah

  • Odstranění stromu clap nebo cli/local.rs LOCAL; obojí jsou změřené druhé deklarace (SURFACES F-1, F-4) a tento milník je zaznamenává, nepřepisuje CLI.
  • Psaní statického webu, který tvrdí živý stav; web zůstává obrázkem označeným jako obrázek.
  • Hlášení vyměněného spustitelného souboru, což je I1502.

Kritéria přijetí

  • Test nad registrem selže, když schopnost hlásící stav odpoví bez observed_at
  • Test parity pokrývá každou schopnost s HTTP trasou a každou schopnost s cestou CLI
  • GET /swagger odpovídá s CSP a hashi integrity a cizí Host je na GET odmítnut
  • Kontrola selže na doslovné cestě /api/v1/ nebo zkopírované hodnotě enumu v kódu Cockpitu či webu

Validace

  • bin/majordomus plan validate
  • cargo test --test properties --test projections --test dashboard --test http_serve --test http_host
  • bin/majordomus-cli generate --check
  • MJ_TEST_JOBS=4 bash test/run.sh 545_every_answer_says_when_it_was_observed 406_one_declaration_every_surface

Požadované důkazy

  • uniform_freshness
  • parity_with_writers_and_cli
  • no_consumer_catalogue

Rizika

  • Přidání observed_at k výstupům schopností mění jejich schémata a tedy veřejný povrch; version-surface to ocení jako změnu, což je správně.
  • Rozšíření parity na POST routy spouští zapisovače v testech; každý musí běžet proti syntetickému repozitáři, nikdy proti checkoutu.

Úkoly

Každý z nich je prováděcí kontrakt s vlastními kritérii přijetí, validačním příkazem a požadovanými důkazy. Sloupec wave je vrstva grafu závislostí, v níž úkol leží.

issuestatusvlnazávisí nanázev
I2151 HOTOVO 0 — Stránka servírovaná vedle zapisovacích tras spouští jen skript, který sama dodala, a rebinding host nic nečte
I2653 HOTOVO 0 — Každý diagram na webu je jeden interaktivní viewer s odkazy, jehož odkazy mezi uzly se odvozují, a odvozenou tabulku lze nakreslit jako graf
I2654 PŘIPRAVENO 1 I2653 Graf je ke své tabulce vázán kontrolou a tabulky, které jsou měřenými řadami, se kreslí
I2655 PŘIPRAVENO 1 I2653 Domovská stránka rozhoduje, zda nese odvozené číslo, v rámci svého deklarovaného příběhu a rozpočtu
I2656 PŘIPRAVENO 1 I2653 Viewer diagramů obsluhuje Cockpit i majordomus ui a uzel, který je souborem repozitáře, odkazuje na svůj zdroj
I2770 HOTOVO 0 — majordomus ui a Cockpit nosí navbar webu: jeden renderer, stejné styly a skripty a porovnání v prohlížeči, které rozdíl odmítne
I2842 PŘIPRAVENO 0 — Živý web se ověřuje podle plánu a jeho poslední ověření je důkaz
I2943 HOTOVO 0 — Mesh, na kterém tento proces není, se uvádí jako nepozorovaný, nikdy jako nula nebo ne
I3007 HOTOVO 0 — Commit, který jmenuje záznam nebo data webu, je commit, který historie drží
I3008 HOTOVO 0 — Odkaz domovské stránky s fragmentem míří na prvek, který její stránka nese
I3009 PŘIPRAVENO 0 — No record's prose and no board announcement holds a template delimiter
I3010 HOTOVO 0 — Manuál mesh říká, že hlídač úprav není zapojen, a jak jej zapojit ručně
I3318 PŘIPRAVENO 0 — Every decision and curated note is read on /ui, with the records it names and the records that name it

Graf

graf závislostí surfaces-never-disagreez .ai/repo/project
flowchart LR
    I2151["I2151<br/>A page served beside the write routes runs only script it shipped, and a rebinding host reads nothing"]:::done
    I2653["I2653<br/>Every diagram on the site is one interactive, linkable viewer whose node links are inferred, and a derived table can be drawn as a chart"]:::done
    I2654["I2654<br/>A chart is held to its table by a gate, and the tables that are measured series are drawn"]:::ready
    I2655["I2655<br/>The homepage decides whether it carries a derived figure, within its declared story and budget"]:::ready
    I2656["I2656<br/>The diagram viewer serves the Cockpit and majordomus ui, and a node that is a repository file links to its source"]:::ready
    I2770["I2770<br/>majordomus ui and the Cockpit wear the site's navbar: one renderer, the same styles and scripts, and a browser comparison that refuses a difference"]:::done
    I2842["I2842<br/>The live site is verified on a schedule, and its last verification is evidence"]:::ready
    I2943["I2943<br/>A mesh this process is not on is said as not observed, never as zero or no"]:::done
    I3007["I3007<br/>A commit that a record or the site's data names is a commit the history holds"]:::done
    I3008["I3008<br/>A homepage link with a fragment resolves to an element its page carries"]:::done
    I3009["I3009<br/>No record's prose and no board announcement holds a template delimiter"]:::ready
    I3010["I3010<br/>The mesh manual says the edit guard is not wired, and how to wire it by hand"]:::done
    I3318["I3318<br/>Every decision and curated note is read on /ui, with the records it names and the records that name it"]:::ready
    I2653 --> I2654
    I2653 --> I2655
    I2653 --> I2656
    classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
    classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
    classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
    classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
    classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
    classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px

Kanonický záznam: .ai/repo/project/milestones/surfaces-never-disagree.yaml. Přečtěte ho zpět pomocí majordomus plan show surfaces-never-disagree.

Prohledává názvy a popisy všech stránek, které tento web publikuje.