Conversation context: Invoicing and contract frontend — branch-wide mock and wiring inventory

0 comments0 reviews

This is a source-based snapshot of feature/SAAS-1584-invoice-planning against main on 2026-10-23. It inventories newly introduced or modified frontend flows, including surfaces outside the three example routes. REAL means the described business data or mutation reaches the Tenant backend; PARCIAL means a real read or interaction is paired with an unimplemented business action; MOCK means business data or its apparent mutation is fabricated/client-only. URL navigation, temporary selection, modal visibility, draft validation, and tab/hash state are legitimate UI state, not persisted business operations. Classification applies to each stated capability, not necessarily its entire page. The inventory is based on static code inspection; the functional browser evidence and its coverage limits are consolidated in the final section.

The main...HEAD diff changes 1,171 files across Tenant Billing, Contracts, Invoicing, removed Payments/VariableRent, routes, translations, tests, shared frontend utilities, and docs. Frontend production changes cluster in resources/js/pages/tenant/invoicing/v1/, resources/js/pages/tenant/contracts/v1/, the Tenant contract-chain lookup module, sidebar, query builder, modal, hash hook, and notification-rule card. The old /v1/billing/*, Contract billing, payment collection, bulk payments and variable-rent/sales-report UI and routes are removed rather than still secretly connected: compare routes/web/tenant/v1/inertia/payments.php and resources/js/pages/tenant/payments/v1/ (deleted in the diff) with routes/web/tenant/v1/inertia/invoicing.php:10-29. This is a changed product surface, not evidence that its replacement has feature parity. Container pages changed their hash-hook import only (resources/js/hooks/use-active-form-hash.ts:1-65); they do not gain fixture-driven business data. Existing contract details/history/docs and the main contract create/update form remain live features, except for the new sections described below.

Business/technical brief: Contract is the operating source for rent; payment obligations and fiscal documents are distinct concerns (docs/business/colossu-overview.md:159-175, docs/business/tenant/contratos/contratos.md:44-55). Inspect the new Tenant Inertia routes, their props and actual React consumers before deciding whether a rendered row, form, export, or action is backed by Tenant data. The business index references payments guides removed on this branch (docs/business-context.md:16-18); they cannot be used as current implementation evidence.

ResponsibilityContract router / boundaryWiring observed
Tenant page, form, local lifecycle and URL statedocs/platform/frontend/fe-ddd-pattern.md:168-181,267-281,473-495; React UI contractInertia route → page/props → component/hook; some pages instead import fixture constants.
Query-backed detail tabsdocs/platform/frontend/fe-ddd-pattern.md:27; details-tab contract selected by routerContract GET routes and Inertia navigation; local subtab URL is not a business mutation.
HTTP lookup and write transportFrontend DDD API/Inertia methods; backend router for endpoint ownershipContract-chain picker invokes an API lookup; standalone PaymentRequest uses Inertia POST/PATCH. Series/template POSTs exist without frontend callers.

Schema review, full action-by-action backend bug review, and general overengineering assessment are outside this frontend connectivity audit. Existing persisted models and migrations do not make a screen integrated unless that screen consumes their responses. No Tenant DB operations were performed.

Domain / routePage or component / capabilityStateEvidence and actual boundary
Global navigation, feature gatedSidebar Facturación and three section tabsREAL navigationresources/js/common/sidebar/items.ts:119-130; resources/js/pages/tenant/invoicing/v1/layouts/InvoicingSectionLayout.tsx:9-36; routes/web/tenant/v1/inertia/invoicing.php:10-21. A real GET is not proof of real page contents.
/v1/invoicing/commitmentsList, server paging, ID/client/concept/invoice-date/payment-date filtersREALdomain/Tenant/Invoicing/Core/V1/Application/Controllers/Inertia/InvoicingController.php:18-27 passes PaymentRequestResource from SearchPaymentRequestsAction; resources/js/pages/tenant/invoicing/v1/CommitmentsPage.tsx:29-43,73-93; resources/js/pages/tenant/invoicing/v1/components/CommitmentFilters.tsx:24-54. Real Tenant records, not mockCommitments.
SameAdd standalone commitment; edit existing commitmentREALresources/js/pages/tenant/invoicing/v1/application/hooks/usePersistentCommitmentForm.ts:20-50 sends Inertia POST/PATCH; routes/web/tenant/v1/inertia/invoicing.php:23-29; domain/Tenant/Billing/Core/V1/Application/Controllers/Inertia/PaymentRequestController.php:26-35,63-70 calls persistence actions. Live anchor pickers include real ContractChain lookup (resources/js/modules/tenant/contracts/core/v1/domain/api/getContractChainLookup.ts:5-12). Edit links only resolve rows on the current page (resources/js/pages/tenant/invoicing/v1/domain/actions/commitmentFilters.ts:48-62); off-page direct IDs are unavailable, not synthetic fallbacks.
SameDelete once/future, capture manual amount, inflation batchPARCIALOpened for actual server rows (CommitmentsPage.tsx:35-38,80-89,113-119), but their dialogs only validate/preview (components/CommitmentDeleteModal.tsx:14-28,83-89, CommitmentAmountCaptureModal.tsx:17-26,68-75, InflationReviewModal.tsx:18-45,116-121). No delete/capture/inflation write is invoked.
/v1/invoicing/preinvoicesQueue, filters, page totals and CSVMOCKController renders no business prop (InvoicingController.php:37-45); PreinvoicesPage.tsx:20,32-53,113-122,164-187 joins hardcoded anchors, commitments, preinvoices. Filter/page selection is in-browser; CSV actually downloads a file, but only fixture rows, not live invoices.
SameVariable/sales amount capture, no-CFDI reviewMOCKPreinvoicesPage.tsx:80-87,203-224; components/CaptureAmountForm.tsx:18-23,33-46,58-66; fixture-based provisional subtotal in domain/actions/selectPreinvoiceQueue.ts:33-72. Capture lasts only in React state and cannot change a PaymentRequest. Link action is a preview, not a sent link.
SameIndividual fiscal review, issuer/recipient/concept/summary, draft previewPARCIALPreinvoice itself is a fixture (PreinvoicesPage.tsx:35-53); components/PreinvoiceReviewModal.tsx:45-62,104-123,144-174,295-303 edits/previews only. Real companyLookupProvider.resolve can refresh recipient identity (:64-95), but this neither saves a preinvoice nor stamps, emails, prints, or creates a PDF. Stamp button disabled (:159-161).
SameBatch selection/reviewMOCKapplication/hooks/usePreinvoiceBatchReview.ts:6-60 holds selection and drafts in memory; components/BatchPreinvoiceReviewModal.tsx:10-25,33-59 counts local readiness and disables final stamp.
/v1/invoicing/documentsInvoice list, statuses, currency counters, filter/sort/paging, sample CSVMOCKController sends page shell (InvoicingController.php:48-56); DocumentsPage.tsx:21,34-59,97-105,125-155 selects invoice-kind fixtures and computes counts. components/FiscalDocumentFilters.tsx:41-75 builds filter choices from fixtures; domain/actions/selectInvoicingRecords.ts:21-82 sorts/filters/pages them locally.
SameNew invoice selection and continuation to PrefacturaMOCKDocumentsPage.tsx:56-57,119-121,183-189; domain/actions/selectNewInvoiceCandidates.ts:5-18 selects fixture candidates; domain/inertia/visitPreinvoiceFromNewInvoiceSelection.ts:5-13 performs a real route visit carrying fixture IDs, not invoice creation.
SameDocument detail, related credits/complements/payments, synthetic UUIDMOCKcomponents/FiscalDocumentDetails.tsx:16-19,29-44,72-88,116-126; domain/actions/fiscalDocuments.ts:23-37. Graph and ledger are from constants; UUID is deterministically fabricated from document ID. PDF/XML/email controls are disabled (FiscalDocumentDetails.tsx:128-136).
SameEdit due date, cancellation, substitution, credit note, payment complementMOCKDocumentsPage.tsx:172-209; components/FiscalDocumentModal.tsx:18-50; FiscalDueDateDraftForm.tsx:18-24,62-73, FiscalCancellationDraftForm.tsx:18-26,104-112, FiscalCreditNoteDraftForm.tsx:27-35,216-224 only validate/show drafts. Substitution reuses the unpersisted Prefactura review and synthetic original UUID; complement is read-only with submit disabled (FiscalPaymentComplementDetails.tsx:12-30).
/v1/contracts/{contract}/payment-commitmentsUpcoming obligations, status, paging, 90-day windowREALroutes/web/tenant/v1/inertia/contracts.php:39-42; ShowContractPaymentCommitments.tsx:9-25; ContractsController.php:130-148; ShowContractPaymentCommitmentsRequest.php:29-41 binds Contract and real PaymentRequests within today + 90 days; components/ContractUpcomingCommitmentsTable.tsx:8-25 displays server data/meta. Not an all-time schedule.
Same ?subtab=tenant_salesTenant sales table and its action controlsMOCKcomponents/ContractPaymentCommitmentTabs.tsx:21-30; ContractTenantSalesTable.tsx:4-18 imports four fixed rows from domain/constants/contract-detail-table-mocks.ts:2-43, irrespective of contract ID. Every row action is disabled in domain/actions/getContractTenantSalesColumns.tsx:35-52.
SameEdit commitments / go to commitments top buttonsPARCIALVisible on real-detail page but explicitly disabled (ShowContractPaymentCommitments.tsx:16-23). Subtab navigation itself is REAL UI GET (components/ContractPaymentCommitmentTabs.tsx:14-30).
/v1/contracts/{contract}/invoicingSeries, stored fiscal configuration, preview/status columnsREAL readContractsController.php:158-173 returns PaymentCommitmentSeriesResource::configCollection; ShowContractInvoicing.tsx:7-14; domain/actions/getContractInvoiceConceptRows.ts:4-24 maps server series/templates. components/ContractInvoiceConceptsTable.tsx:9-27 renders empty state for no series, not fixture rows.
SameEdit fiscal configurationPARCIALRead is live, but edit button disabled (ContractInvoiceConceptsTable.tsx:15-20). POST endpoint exists (routes/web/tenant/v1/inertia/invoicing.php:11-12; domain/Tenant/Billing/Core/V1/Application/Controllers/Inertia/InvoiceTemplateController.php:14-24) and has no production JS call.
Contract manual create and edit (list/details/historic entry points)Main form, Contact/Company/Asset, contract saveREALcomponents/ContractForm.tsx:97-152,251-321,698-719; POST/PUT from :287-319 and controller persistence (ContractsController.php:240-281). Existing PDF alternative and edit modal are real existing flows; their new tab/hash/PDF visibility behavior is UI-only.
SameNew Payment commitments tab, sample seed, concept addition, generation/charge daysMOCKcomponents/ContractPaymentCommitmentsTab.tsx:17-35,86-111; domain/constants/contract-tab-edit-mocks.ts:3-37 seeds five invented rows in edit; create starts empty (domain/actions/initializeContractTabDraft.ts:4-13). All edits stay in application/hooks/useContractTabDraft.ts:9-52, including local IDs. ContractForm.tsx:251-321 excludes all draft fields from actual create/update payload.
SameNew Invoicing tab, individual/joint setup, invoice-only Guante concept and monthly tax previewMOCKcomponents/ContractInvoicingTab.tsx:15-46,60-107, ContractInvoiceConfigurationModal.tsx:27-35,145-172; edit-only Guante seed at contract-tab-edit-mocks.ts:25-35. Save updates local configurations, not backend; ContractForm.tsx:251-321 never serializes them. Preview is illustrative, not the server tax calculation.

The live path is Tenant GET → search/action → Resource → Inertia prop → page table for commitments and the two contract reads. The live write path is commitment modal → useForm.post/patch → authorized route → Billing action → redirect/reloaded prop. In contrast, Prefactura/Documents follow Tenant GET → prop-less shell → static fixture graph → local filter/modal/preview → no business write. Contract create/edit mixes its real main-form POST/PUT with isolated local new-tab drafts. Backend series/template POSTs and JSON Series list/config GETs (routes/api/tenant/v1/private/core/billing.php:7-13) are implemented server entry points, not evidence of frontend connectivity: a source search of resources/js/ found no callers for those named routes.

In the matrix and inventory, unqualified components/, application/, domain/, and page filenames resolve under resources/js/pages/tenant/invoicing/v1/ for invoicing rows and resources/js/pages/tenant/contracts/v1/ for contract rows. Deleted paths in section 1 and section 4 refer to the branch diff, not current files.

LocationSimulated input/actionObserved resultMissing integration
resources/js/pages/tenant/invoicing/v1/domain/constants/invoicing-mock-fixtures.ts:4-10,11-399,400-674,675-841Synthetic anchors, commitments 7001–7017, preinvoices 8001–8013, fiscal docs 9001–9008, dates/customer/RFC/amount/status/payment linksStatic cross-page business graph, unaffected by current Tenant and database writesTenant-backed queue, fiscal-document listing/details and their relationships. These are production imports, not test-only fixtures.
PreinvoicesPage.tsx:32-53,113-122; domain/actions/selectPreinvoiceQueue.ts:24-102; components/PreinvoiceCommitmentFilters.tsx:23-42Queue, filters, page size, records count, exportLocally filtered fixture graph and downloaded sample CSVServer selection/count/export of persisted queue; URL filters do not imply backend filtering.
PreinvoicesPage.tsx:28,80-87,203-224; components/CaptureAmountForm.tsx:18-46,149-174Variable usage/sales capture and send-link previewcapturedAmounts/dialog state; temporary subtotal; no server mutation or deliveryCapture and reconciliation with real obligation/queue; link dispatch.
components/PreinvoiceReviewModal.tsx:45-62,104-123,144-174,295-303; components/PreinvoiceDraftPreviewDialog.tsx:7-47Preinvoice form, taxes, document preview, no-CFDI and substitutionLocal useForm validation and read-only illustrated draft; no .post/.patch; stamp disabledPersist reviewed fiscal draft and issue/send/produce document. Real Company lookup is only a partial identity integration.
application/hooks/usePreinvoiceBatchReview.ts:6-60; components/BatchPreinvoiceReviewModal.tsx:10-25Batch select/save/ready countIn-memory selection and draft map; stamp disabledBatch persistence and emission.
DocumentsPage.tsx:34-59,97-105,125-155; components/FiscalDocumentFilters.tsx:41-75Invoice rows, sample count, filters, due-date sort, CSVFixture-derived client view and genuine file download of fabricated rowsLive invoice response, backend filtering and real export.
DocumentsPage.tsx:56-57,183-189; domain/inertia/visitPreinvoiceFromNewInvoiceSelection.ts:5-13New invoiceSelects hardcoded eligible commitment, navigates with demo IDReal candidate lookup and invoice/draft creation.
components/FiscalDocumentDetails.tsx:16-44,72-88,116-146; domain/actions/fiscalDocuments.ts:23-37Folio, UUID, balance, relation and payment/complement ledgerSynthetic IDs/relationships, optional sample-ledger arithmetic; PDF/XML/email disabledStored fiscal documents, real UUID, ledger, downloads/delivery.
components/FiscalDueDateDraftForm.tsx:18-24,62-73; FiscalCancellationDraftForm.tsx:18-26,104-112; FiscalCreditNoteDraftForm.tsx:27-35,216-224; FiscalDocumentModal.tsx:32-50Date update, SAT cancellation/refacture, credit-note issuanceClient validation/JSON previews; final submit disabled, no status changeAuthorized writes and external fiscal lifecycle. Complement (FiscalPaymentComplementDetails.tsx:12-30) is view-only demo.
resources/js/pages/tenant/contracts/v1/domain/constants/contract-detail-table-mocks.ts:2-43; components/ContractTenantSalesTable.tsx:4-18; domain/actions/getContractTenantSalesColumns.tsx:35-52Tenant sales periods, variable rent and capture/view/send/resendSame four rows on every contract, actions disabledContract-scoped sales records and actions; removed old variable-rent flow is not replaced here.
resources/js/pages/tenant/contracts/v1/domain/constants/contract-tab-edit-mocks.ts:3-37; application/hooks/useContractTabDraft.ts:9-52; components/ContractForm.tsx:251-321Contract edit five seeded obligations, Guante, new concepts/daysLocal ID/configuration reset per form/contract, omitted from real payloadHydrate actual contract series and send series changes.
components/ContractInvoicingTab.tsx:15-46,60-107; components/ContractInvoiceConfigurationModal.tsx:27-35,145-172Joint/individual header, concept taxes, monthly totals, SaveIn-memory configuration and illustration, never backend POSTStored invoice-template save and server reconciliation.
components/CommitmentDeleteModal.tsx:14-28,83-89; CommitmentAmountCaptureModal.tsx:17-26,68-75; InflationReviewModal.tsx:18-45,116-121Live-row deletion, manual amount and batch inflationPreview/confirmation only; list remains server-authoritativeCorresponding backend write and reload; this is partial, not fixture-backed data.

Static UI defaults (e.g. currency list, tax-regime options, tab names), component-local dialog state and query/hash serialization are not independently classified as business mocks. Conversely, useForm alone does not establish persistence: only the commitment form calls .post/.patch; fiscal forms call setData/setError and preview functions only. domain/actions/handleInvoicingSampleCsvDownload.ts:1-12 genuinely creates a browser CSV, but its input is fixture-derived. A real Company lookup inside a synthetic invoice form does not turn the containing document into a live invoice.

  1. Backend/UI asymmetry: Contract series upsert (routes/web/tenant/v1/inertia/contracts.php:44-46), invoice-template upsert (routes/web/tenant/v1/inertia/invoicing.php:11-12) and JSON series config (routes/api/tenant/v1/private/core/billing.php:7-13) have backend actions/controllers, but the new contract form/tab never invokes them. The live detail table is read-only, not proof that its similarly named create/edit tab saves.
  2. Independently fabricated fiscal universe: New commitment POST/PATCH changes the Tenant database while Prefactura/Documents continue to read constants (CommitmentsPage.tsx:29-35 versus PreinvoicesPage.tsx:20,32-53 and DocumentsPage.tsx:21,34-59). Creating a real commitment will not appear in those two sections; fixture document details can point to IDs that never existed for that Tenant.
  3. Contract detail sales leak by presentation: Every authorized contract shows the same four sales rows, including contract 105, because ContractTenantSalesTable.tsx:4-18 accepts no contract ID. Labels such as validated/captured are example states, not operational evidence. Its row buttons are disabled (getContractTenantSalesColumns.tsx:35-52).
  4. Discoverability and entitlements: Sidebar changes from a billing-permission-filtered entry to a role/feature-filtered invoicing entry (resources/js/common/sidebar/items.ts:119-130); the three workspace GET routes are feature-gated (routes/web/tenant/v1/inertia/invoicing.php:10-21), while the create/update and contract-detail routes have their own policy guards. Thus visibility of the sidebar or a demo page does not imply write permission. No authorization bypass is inferred from the frontend alone.
  5. Removed rather than mocked: The diff deletes prior payment recording, payment-request bulk flows, contract billing timeline, variable-rent/sales-report UI and associated routes/tests (resources/js/pages/tenant/payments/v1/, routes/web/tenant/v1/inertia/payments.php, routes/api/tenant/v1/private/core/variable-rent.php). This audit flags the loss of frontend reachability/parity, not an invented hidden implementation in the new workspace. NotificationRuleCard.tsx changes its reminder-specific day types to [] (resources/js/modules/tenant/notification-rules/v1/ui/components/NotificationRuleCard.tsx:7-9); this is a changed real notification UI, not a mock invoicing feature.
  6. Shared/new ancillary UI is not another data source: resources/js/common/modal/index.tsx changes Escape handling for nested dialogs; resources/js/modules/query-builder.ts clears specified modal keys when real filters change; resources/js/hooks/use-active-form-hash.ts restores inner tabs on Inertia visits; Container screens adopt it. These are functioning navigation/interaction behaviors, not new unpersisted business records. resources/js/modules/tenant/contracts/core/v1/domain/api/getContractChainLookup.ts:5-12 is a real API boundary used by the commitments picker.
  7. Dormant new presentation artifacts: components/InvoicingRecordPreview.tsx, components/SampleExportPreviewModal.tsx, and domain/actions/mapInvoicingRecordsToPreviewRows.ts have no production page consumer (the mapping action is referenced by tests). They are not undiscovered live routes or alternative integrations; sample CSV in the active pages uses the browser download action instead.

Source inspection covered the non-test frontend additions/modifications in the branch, route declarations, Inertia props, the three existing backend write controllers needed to classify frontend calls, and references to the fixture graph. Examples of coverage: resources/js/pages/tenant/invoicing/v1/__tests__/CommitmentsPage.test.tsx, components/__tests__/CommitmentForms.test.tsx, __tests__/InvoicingFilterPages.test.tsx, components/__tests__/PreinvoiceForms.test.tsx, components/__tests__/FiscalDocumentForms.test.tsx, resources/js/pages/tenant/contracts/v1/components/__tests__/ContractForm.test.tsx, __tests__/ContractDetailMockTables.test.tsx, tests/Tenant/Invoicing/Core/V1/Feature/Http/InvoicingWorkspaceTest.php, tests/Tenant/Billing/Core/V1/Feature/Http/PaymentRequestHttpTest.php, and the Contract series/config HTTP tests. They cover route/prop and client preview behavior, not live preinvoice/fiscal-document persistence; no such frontend transport is invoked. Code test suites were not executed. Functional browser observations and their remaining gaps are consolidated below; deployed feature-flag state, active Tenant identity, and external fiscal-service behavior remain unverified.

Existing docs are useful but not authoritative for this audit: docs/features/tenant/frontend/invoicing/README.md:14-16 describes the Contract demonstration tabs as fixed fixtures and Contract 42/43 samples, whereas current code uses real upcoming PaymentRequests and real series config for the two read tabs (ContractsController.php:130-173), with only tenant sales remaining fixed. docs/features/tenant/frontend/contracts/contract-detail-mock.md:13-20,35-37 matches this newer distinction. The former wording is a documentation delta, not a reason to reclassify working code.

The follow-up functional pass used a fresh browser session at http://spot2.localhost:8000, authenticated as Miguel Gomez. Main routes were visited directly. No permissions, feature flags, or existing records were changed. The proposed test commitment was not created, so there is no test-record ID or evidence of a persistent write.

This section classifies what was observed in the browser. A page displaying data or retaining rows after reload does not, by itself, prove that the data came from the backend. The code-wiring evidence in the preceding sections remains static evidence.

FlowAction and observed evidenceFunctional result
CommitmentsOpen /v1/invoicing/commitments: five rows appear (IDs 2, 4, 3, 1, and 7), with client/concept/date/currency/amount/status headers and five matching results; page size 20, page 1 of 1. The follow-up session reproduced the same list.CONFIRMED — UI renders. Data source and list persistence remain UNVERIFIED.
Create commitmentClicked Agregar compromiso in the follow-up session; the browser click and a DOM click were accepted, but no form/modal, URL change, or visible error appeared. Nothing was submitted.UNVERIFIED. No visible transition reproduced; no record was created and no test ID exists.
Commitment filters and paginationClicked Filtros in the follow-up session; no panel, chips, or URL change appeared. The sample has only five rows at page size 20; pagination controls are disabled.UNVERIFIED. Applied filters and multiple commitment pages were not tested; current data cannot exercise multi-page pagination.
PreinvoicesOpen /v1/invoicing/preinvoices: nine sample rows appear, including CP-7002 and CP-7004, with illustrative statuses/amounts. The Exportar CSV control is present. Clicking Filtros in the follow-up session did not show a panel or change the page.MOCK — visually CONFIRMED. Filter behavior is UNVERIFIED; CSV control presence is confirmed, but no download/content was inspected.
DocumentsOpen /v1/invoicing/documents: six folios appear (CFDI-9001, 9002, 9004, 9005, 9006, 9008) with counts MXN 4, USD 2, EUR 0. After reload, the same six remain. Exportar CSV, Nueva factura, filters, and the Vencimiento sort control render.MOCK — visually CONFIRMED. Reload confirms visual stability, not backend origin/persistence. Controls are present; their actions remain unverified.
CSV exportNo CSV file has been downloaded or inspected.UNVERIFIED.
Contract detail — commitmentsOpen /v1/contracts/105/payment-commitments: the upcoming-commitments empty state appears. Editar compromisos de pago and Ir a Compromisos de pago are rendered disabled.CONFIRMED — UI/empty state and disabled controls. Backend read was not independently verified.
Contract detail — tenant salesOpen /v1/contracts/105/payment-commitments?subtab=tenant_sales: four May–August 2026 rows appear. Snapshot shows Ver detalle, Capturar monto, Reenviar, and Enviar liga disabled.MOCK — visually CONFIRMED. Sample rows and disabled action states confirmed; no sales operation was performed.
Contract detail — invoicingOpen /v1/contracts/105/invoicing: the fiscal table is empty and Editar facturación is rendered disabled.CONFIRMED — empty state and disabled control. No editor was available to open or save; persistence remains unverified.
Contract forms and tabsThe create/edit entry points were not reached; tabs, local drafts, previews, hash state, and state after reload were not inspected.UNVERIFIED. No contract was saved or changed.
Commitment modalsDelete, amount-capture, and inflation dialogs were not opened; previews and reload reconciliation were not checked.UNVERIFIED.
Preinvoice review and fiscal actionsAttempted to open the first preinvoice row's action menu; no menu or dialog appeared. Capture, individual/batch review, new-invoice selection, fiscal detail, due-date change, cancellation, substitution, credit note, and payment complement therefore remain inaccessible in this run.UNVERIFIED. No document was issued, cancelled, sent, or saved.
Contract list paginationOpen /v1/contracts: 32 results are shown, page 1 of 2, with next/last-page controls enabled. Attempting to activate the next-page control did not change the page or row range in the observed session.PARTIALLY OBSERVED / UNVERIFIED. Multi-page data and enabled controls are present, but navigation itself was not confirmed. This is the contract list, not the commitments/preinvoice/documents paginator.
Navigation/lookup and shared changesContractChain lookup, contract-form tabs/hashes, modal clearing on filter changes, Escape behavior in nested dialogs, reminders, and removed legacy routes were not tested. Crear contrato was visible on /v1/contracts, but clicking it did not open a form or change the URL in the follow-up session.UNVERIFIED. Contract form entry and shared behaviors remain uncovered.
Alternate permissions and feature flagsAn authenticated session was observed, but no other Tenant/user was used and no flags or permissions were changed. The active Tenant was not identified from the browser.NOT VERIFIABLE with the available session.

#Consolidated results

  • CONFIRMED: Authentication and rendering of the visited routes; the five-row commitments list; empty states and disabled actions on Contract 105; sample content on Preinvoices, Documents, and tenant sales; visual stability of Documents after reload; and a 32-row, two-page contract list with enabled pagination controls.
  • Visually confirmed MOCKs: Preinvoices, Documents, and tenant-sales rows match the illustrative datasets described in the audit. No additional sample datasets were observed functionally.
  • REAL: No write or backend origin for the commitments list was confirmed through the browser. The screen renders, but the available observations do not establish the list's source.
  • PARTIAL: No partial operation was functionally validated; classifications in the inventory remain code-based.
  • UNVERIFIED: Create/open and persistent edit, applied filters, commitment/preinvoice/document multi-page navigation, CSV download/content, new-invoice continuation, row action menus, modals/previews, contract tabs/drafts, fiscal actions, and shared flows. Several controls (Add commitment, Filters, Create contract, and contract-list next page) produced no visible transition in the follow-up session; this observation does not establish the cause.
  • NOT VERIFIABLE: Alternate permission/feature-flag states without another available identity or Tenant.

The AUDIT-BROWSER-2026-10-23 record was not created, nor was any other persistent test data; the label is unreserved. No test suites, fiscal writes, deletions, or permission/configuration changes were performed. UI observations do not replace inspection of Inertia/network responses; when payload evidence was unavailable, data origin is explicitly left unverified.