TenantAtlas/specs/370-global-surface-information-architecture-contract/plan.md
ahmido c36cb43741 spec: add global surface IA contract (#441)
This PR introduces the Global Surface Information Architecture Contract, detailing rules for decision-first display, metadata separation, and zero-state suppression across UI surfaces.

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #441
2026-06-10 20:25:15 +00:00

13 KiB

Implementation Plan: Spec 370 - Global Surface Information Architecture Contract v1

Branch: feat/370-global-surface-information-architecture-contract | Date: 2026-06-10 | Spec: specs/370-global-surface-information-architecture-contract/spec.md Input: Feature specification from specs/370-global-surface-information-architecture-contract/spec.md

Summary

Prepare a docs-only Global Surface Information Architecture Contract v1 under the Spec 370 package. The work formalizes the Spec 368 audit lessons into reusable review artifacts for future UI productization specs: decision-first hierarchy, surface/audience/scope classification, zero-metric suppression, evidence-vs-diagnostics separation, metadata placement, copy rules, and follow-up mapping. No application implementation is part of this plan.

The contract is subordinate to .specify/memory/constitution.md, docs/product/standards/, docs/ui/operator-ux-surface-standards.md, docs/ui/tenantpilot-enterprise-ui-standards.md, docs/ui/action-surface-contract.md, and the runtime ActionSurfaceType enum. Spec 370 IA review classes are not runtime Action Surface values and do not publish a new canonical product standard in this slice.

Technical Context

Language/Version: Markdown governance artifacts in a PHP 8.4 / Laravel 12 / Filament v5 / Livewire v4 repository. Primary Dependencies: Spec Kit templates and existing repo documentation. No package or runtime dependency changes. Storage: Markdown files under specs/370-global-surface-information-architecture-contract/. Testing: Manual artifact review and git diff --check. No Pest or browser test required because there is no runtime behavior change. Validation Lanes: docs-only/manual review. Target Platform: TenantPilot repo workflow. Project Type: Laravel monolith plus Spec Kit docs. Performance Goals: N/A. Constraints: No runtime code, migrations, assets, routes, policies, jobs, services, tests, or UI changes. Scale/Scope: One spec package and spec-local artifacts.

Candidate Selection Gate

  • Selected candidate exists in source material: yes, from the user-provided Spec 370 draft and Spec 368 Candidate A.
  • Not already covered by active/completed spec: yes. Spec 369 intentionally deferred the global contract, and no specs/370-* package existed before this run.
  • Completed-spec guardrail: Spec 368 is an audit/source artifact. Spec 369 is completed/validated and not modified. Existing completed specs are context only.
  • Roadmap fit: yes, aligned with the roadmap's UI and product maturity polish lane and decision-centered operating model.
  • Smallest viable slice: docs-only contract and checklist artifacts.
  • Deferred adjacent work: page runtime refactors, diagnostic fixture work, browser screenshot updates, target mock/examples per archetype, automation/static guards, and docs/product publication.
  • Gate result: PASS.

UI / Surface Guardrail Plan

  • Guardrail scope: no operator-facing surface change; docs-only guardrail package.
  • Affected routes/pages/actions/states/navigation/panel/provider surfaces: N/A.
  • No-impact class: docs-only.
  • Native vs custom classification summary: N/A for runtime. Future specs must prefer native Filament/shared primitives.
  • Shared-family relevance: status messaging, evidence/report viewers, diagnostics disclosure, dashboard signals, action hierarchy as review guidance only.
  • State layers in scope: none at runtime.
  • Audience modes in scope: defined for future review: operator, customer, auditor, platform_admin, support, developer, mixed, unknown.
  • Decision/diagnostic/raw hierarchy plan: decision-first, diagnostics-second, evidence-third, technical metadata on demand, with explicit evidence/diagnostics separation.
  • Raw/support gating plan: future customer/auditor surfaces must collapse or capability-gate raw/support detail by default.
  • One-primary-action / duplicate-truth control: future surfaces should expose one dominant next action and avoid duplicated first-viewport status/reason/impact.
  • Handling modes by drift class or surface: report-only in this spec; future deviations are document-in-feature or follow-up-spec.
  • Repository-signal treatment: report-only for this docs package.
  • Special surface test profiles: N/A.
  • Required tests or manual smoke: manual artifact review only.
  • Exception path and spread control: no runtime exceptions; any future exception must name the surface, audience, rule, reason, and containment path.
  • Active feature PR close-out entry: N/A.
  • UI/Productization coverage decision: No UI surface impact.
  • Coverage artifacts to update: none for this prep; future UI-changing specs update docs/ui-ux-enterprise-audit/ as required.
  • No-impact rationale: only files in specs/370-global-surface-information-architecture-contract/ are created/updated.
  • Navigation / Filament provider-panel handling: no provider or navigation changes.
  • Screenshot or page-report need: no new screenshots. Existing Spec 368 screenshots are source evidence.

Shared Pattern & System Fit

  • Cross-cutting feature marker: yes, docs-only.
  • Systems touched: no runtime systems. Context references include Spec 368 audit artifacts, Spec 336 baseline compare, Spec 344 customer review, Spec 369 Baseline Profile decision view, UI-COV-001, and existing shared interaction helpers.
  • Shared abstractions reused: no runtime abstraction. Future specs should reuse existing BadgeCatalog, BadgeRenderer, ActionSurfaceDeclaration, OperationUxPresenter, OperationRunLinks, UiEnforcement, and WorkspaceUiEnforcement where applicable.
  • New abstraction introduced? why?: no runtime abstraction. The documentation contract is necessary because the repeated issue is cross-surface review consistency, not missing code infrastructure.
  • Why the existing abstraction was sufficient or insufficient: Existing code helpers are sufficient for runtime semantics; they do not give future specs one product-information hierarchy to review against.
  • Bounded deviation / spread control: contract remains spec-local until a later approval decides whether to publish it under docs/product/. It must not be treated as an ActionSurfaceType extension or a replacement for existing standards.

OperationRun UX Impact

  • Touches OperationRun start/completion/link UX?: no.
  • Central contract reused: N/A.
  • Delegated UX behaviors: N/A.
  • Surface-owned behavior kept local: N/A.
  • Queued DB-notification policy: N/A.
  • Terminal notification path: N/A.
  • Exception path: none.

Provider Boundary & Portability Fit

  • Shared provider/platform boundary touched?: docs guidance only.
  • Provider-owned seams: provider payloads, provider IDs, permission internals, portal/API terminology, and Graph-specific diagnostics remain provider-owned/support detail.
  • Platform-core seams: workspace, managed environment, provider connection, governed subject, operation, evidence, diagnostics, customer-safe, support/raw.
  • Neutral platform terms / contracts preserved: yes.
  • Retained provider-specific semantics and why: Microsoft/Intune examples remain as source evidence because they are current implementation reality, but default contract language is provider-neutral.
  • Bounded extraction or follow-up path: future runtime provider-boundary exceptions are document-in-feature or follow-up-spec.

Constitution Check

  • Inventory-first: PASS / N/A. No inventory or snapshot truth changes.
  • Read/write separation: PASS. No write/change behavior is introduced.
  • Graph contract path: PASS / N/A. No Graph calls.
  • Deterministic capabilities: PASS / N/A. No capability derivation changes.
  • RBAC-UX and isolation: PASS. Future specs are required to preserve RBAC and deny-as-not-found semantics; this spec changes none.
  • Run observability and OperationRun: PASS / N/A. No OperationRun behavior.
  • Test governance: PASS. Docs-only lane is stated with no runtime test requirement.
  • Proportionality: PASS with explicit review because the spec creates documentation vocabulary and artifacts.
  • No premature abstraction: PASS. No runtime framework, component, presenter, registry, or guard is introduced.
  • Persisted truth: PASS. Spec-local Markdown artifacts only; no database truth.
  • Behavioral state: PASS. No runtime state/status/reason code family.
  • UI semantics: PASS with risk control. The contract stays as review guidance and avoids mandatory code architecture.
  • Shared pattern first: PASS. Future specs are instructed to reuse existing shared paths first.
  • Provider boundary: PASS. Provider-specific detail is kept out of platform-core default language.
  • UI/Productization coverage: PASS. Checked no-impact with rationale.
  • Filament v5 / Livewire v4: PASS. No runtime Filament/Livewire changes; future guidance references native/shared primitives.

Project Structure

specs/370-global-surface-information-architecture-contract/
├── spec.md
├── plan.md
├── tasks.md
├── checklists/
│   └── requirements.md
└── artifacts/
    ├── source-audit-summary.md
    ├── surface-contract.md
    ├── surface-type-matrix.md
    ├── ui-bloat-patterns.md
    ├── page-assessment-checklist.md
    ├── copy-and-terminology-rules.md
    ├── follow-up-spec-map.md
    └── validation-report.md

No data-model.md, contracts/, research.md, or quickstart.md is required for this docs-only package unless a later reviewer asks for a separate publication decision.

Implementation Phases

Phase 0 - Source Evidence And Scope Lock

  • Confirm Spec 368 source artifacts exist and mark missing inputs as not available.
  • Confirm no existing Spec 370 package or branch was present before creation.
  • Lock the no-runtime-change boundary.

Phase 1 - Contract Artifacts

  • Draft the surface IA contract.
  • Document the canonical standards boundary and the fact that Spec 370 IA review classes are not runtime ActionSurfaceType values.
  • Draft the surface type, audience, and scope matrix.
  • Draft the UI bloat pattern registry.
  • Draft the page assessment checklist.
  • Draft copy and terminology rules.
  • Draft the follow-up spec map.
  • Explicitly defer Spec 368 Candidate A target mock/example artifacts from this slice.

Phase 2 - Consistency And Readiness

  • Ensure spec.md, plan.md, tasks.md, checklist, and artifacts agree.
  • Run Spec Kit prerequisite check with tasks.
  • Run read-only preparation analysis guidance.
  • Fix only Spec Kit artifacts if analysis finds bounded issues.
  • Run git diff --check.

Data Model

N/A. No database tables, models, migrations, JSONB columns, indexes, or persisted runtime artifacts.

API / Contracts

N/A. No HTTP API, OpenAPI contract, JSON schema, Graph contract, queue contract, or external integration changes.

UI / Filament Implications

No current Filament resource/page/provider/panel changes.

Future UI-changing specs should:

  • keep Filament v5 / Livewire v4 compatibility;
  • register panel providers only in apps/platform/bootstrap/providers.php when panel code changes;
  • keep global search disabled unless View/Edit page and scoping rules are safe;
  • keep destructive/high-impact actions on ->action(...), ->requiresConfirmation(), server-side authorization, audit, and tests;
  • use native Filament/shared primitives first;
  • continue filling the repo's UI/UX Surface Classification and UI Action Matrix with canonical Action Surface classes, not Spec 370 IA review labels;
  • update docs/ui-ux-enterprise-audit/ only when reachable UI surfaces change.

Test Strategy

  • No Pest, PHPUnit, browser, PostgreSQL, or frontend test lane is required for this docs-only preparation package.
  • Required validation:
    • ./.specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks
    • read-only preparation analysis across spec.md, plan.md, and tasks.md
    • git diff --check
  • Future runtime specs that consume this contract must add focused Filament/Livewire/browser coverage only for the changed surface.

Rollout Considerations

  • No deploy impact.
  • No env var, migration, queue, scheduler, storage, cache, Graph, asset, or worker impact.
  • No php artisan filament:assets requirement because no Filament assets are registered.
  • A later docs/product publication step may be considered only after review.

Risk Controls

  • Keep contract artifacts spec-local.
  • Keep canonical standards and runtime Action Surface terminology authoritative.
  • Keep automation/static guard work out of scope.
  • Keep target mock/example artifacts out of scope unless a later spec approves them.
  • Label source evidence by verification class.
  • Require future deviations to be recorded in the active feature instead of silently forking UI language.
  • Do not edit completed Spec 368/369 artifacts.

Spec Readiness Gate

  • spec.md, plan.md, tasks.md: required.
  • checklists/requirements.md: required.
  • Contract artifacts: required.
  • Blocking open questions: none.
  • Runtime implementation risk: none in this package.
  • Later implementation scope: bounded docs-only finalization and optional review publication decision.