Portal data
Production route data audit
Production pages use classified repository records and explicit runtime states, not demonstrations or inferred approval. This audit records each route's source boundary and the shared view-model handoff.
- Source
docs/production-route-data-audit.md- Mode
- rendered markdown
- State boundary
- authored documentation; not live state
Production route data audit
Production pages use classified repository records and explicit runtime states, not demonstrations or inferred approval. This audit records each route's source boundary and the shared view-model handoff.
Audit baseline: origin/main f5c50d7ea069e93cf33aa01a174c33815fbd2afd. Implementation: feat/live-workbench-state, PR #31.
Route outcome
| Route or dependency | Production data boundary |
|---|---|
/ | Uses the production review adapter and build-time vault inventory. Zero candidates/reports are not quality or publication approval. No decorative trend, inferred owner, priority, source mapping, or recency ranking. Dashboard input filters only this page's sections. |
/reviews/ | Reads production candidate/report index arrays and their explicit state objects. Zero records are described as an empty index, not a passed review. |
/compliance/ | Shows only indexed candidates, generated reports, and contracts referenced by those reports. It does not present certification, broad contract applicability, source drift, or live PR status without report evidence. |
/findings/ and detail routes | Derive identifiers only from production page-analysis index references. Severity, confidence, status, recommendation, owner, priority, and disposition stay unknown because the index does not contain them. No fixture finding URL is generated. |
/confluence/ | Reads the validated protected runtime cache. Implemented authenticated sync/copy-main cache controls remain unchanged; these are not Confluence writeback. Empty, denied, invalid, missing, and unavailable cache states remain distinct. Snapshot generation time does not establish upstream freshness. |
/vault/ and descendants | Continue to render governed RWS-ARCH/ content and historical dates while excluding scratch 00-inbox/, templates, and asset-source directories from route generation. Missing frontmatter status/domain now render as not set instead of inferred claims. Tree inputs are explicitly labelled metadata filters; note/page bodies are not searched. |
/issues/ | Renders checked-in workflow, label, and milestone contracts and links to Forgejo. It does not claim to read live issues, boards, runners, labels, or seeded milestones. |
/docs/ and detail routes | Preserve authored documentation, including historical and planned material, with an explicit “authored documentation; not live state” boundary. |
/evidence/ | Shows only a present preview-evidence manifest and links directly to recorded artifacts. Synthetic-cache captures are explicitly labelled historical/test implementation evidence, not production architecture evidence. Missing evidence remains unavailable; pre-generated capture-detail placeholder URLs were removed. |
/mockups/ | Removed. The accepted visual-direction ADR remains as historical design evidence. |
PortalSidebar | Review counts come from production report indexes; vault counts come from authored vault inventory. Metadata filtering is not labelled full-text search. |
Shared production contract
Portal review routes consume only these generated arrays through apps/portal/src/data/productionReview.ts:
.reports/generated/candidate-index.json:candidates;.reports/generated/report-index.json:candidateReports,analysisReports,
and pageAnalyses.
The helper also preserves each index's top-level state, reason, provenance, freshness, and approval fields. It does not use filenames or substring matching to identify fixtures. Source classification is owned by the explicit review-index manifest documented in docs/review-index-data-contract.md.
Remaining fixture references
apps/portal/test/confluence-runtime.test.tsand repositorytest/fixtures/- Browser-evidence scripts intercept loopback-only runtime requests with the
- Candidate, contract, analysis, evidence-registry, proposal, and readiness
- Historical ADR and documentation references to mockups and earlier fixture
remain synthetic test inputs for schema, security, authorization-state, and tree validation. They are not imported by production routes.
public synthetic Confluence cache. The configured /confluence/101/ test URL is not statically generated or populated with fixture data in production. Resulting manifests are labelled synthetic-fixture by the evidence route.
fixtures remain in their governed repository locations because validators and regression tests exercise those contracts. Production index generation excludes them through explicit classification rather than filename filtering.
milestones are retained as authored historical evidence; the live /mockups/ route is removed.
UI handoff
apps/portal/src/data/workbench.tsexposesworkbenchData.review,apps/portal/src/data/productionReview.tsis the fail-closed review adapter.runtimeSnapshotObservationinconfluenceRuntime.tsseparates generated- The only CSS change wraps longer state labels and vault source paths. Navigation,
inventory, sourceDrift, and publication. Inventory uses the same source selection as vault routes, counts notes rather than folder/index pages, and exposes source paths and the build-snapshot limitation.
Unknown states have null counts and suppressed records; stale known records retain explicit provenance and observation state. No missing-data fallback is a production metric.
snapshot metadata from explicitly evaluated upstream freshness. Do not present a current-pointer filename or a passing schema validator as a freshness claim.
Markdown rendering and a broader visual redesign remain separate work.