Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
461 lines
11 KiB
JSON
461 lines
11 KiB
JSON
[
|
|
{
|
|
"id": "T201",
|
|
"description": "listAssetLayouts returns typed {id, name} list from a mocked 200",
|
|
"implemented": true,
|
|
"commitGroup": "hudu-client-ext",
|
|
"featureIds": [
|
|
"F201"
|
|
]
|
|
},
|
|
{
|
|
"id": "T202",
|
|
"description": "listAssetLayouts maps 401 to the typed auth error kind",
|
|
"implemented": true,
|
|
"commitGroup": "hudu-client-ext",
|
|
"featureIds": [
|
|
"F201",
|
|
"F203"
|
|
]
|
|
},
|
|
{
|
|
"id": "T203",
|
|
"description": "listAllArticles passes page + search params and returns one typed page",
|
|
"implemented": true,
|
|
"commitGroup": "hudu-client-ext",
|
|
"featureIds": [
|
|
"F202"
|
|
]
|
|
},
|
|
{
|
|
"id": "T204",
|
|
"description": "listAllArticles maps 429 to the typed rate-limit error kind",
|
|
"implemented": true,
|
|
"commitGroup": "hudu-client-ext",
|
|
"featureIds": [
|
|
"F202",
|
|
"F203"
|
|
]
|
|
},
|
|
{
|
|
"id": "T205",
|
|
"description": "Layout map repository round-trips jsonb on hudu_integrations.settings",
|
|
"implemented": true,
|
|
"commitGroup": "layout-type-config",
|
|
"featureIds": [
|
|
"F204"
|
|
]
|
|
},
|
|
{
|
|
"id": "T206",
|
|
"description": "setHuduAssetLayoutMap returns 403 without system_settings update; 404 when flag off",
|
|
"implemented": true,
|
|
"commitGroup": "layout-type-config",
|
|
"featureIds": [
|
|
"F205"
|
|
]
|
|
},
|
|
{
|
|
"id": "T207",
|
|
"description": "Heuristic: server/desktop/laptop/printer/phone/switch/router keywords map to expected types; unmatched -> unknown",
|
|
"implemented": true,
|
|
"commitGroup": "layout-type-config",
|
|
"featureIds": [
|
|
"F206"
|
|
]
|
|
},
|
|
{
|
|
"id": "T208",
|
|
"description": "Settings block renders live layouts with heuristic prefill; Save persists the map",
|
|
"implemented": true,
|
|
"commitGroup": "layout-type-config",
|
|
"featureIds": [
|
|
"F207"
|
|
]
|
|
},
|
|
{
|
|
"id": "T209",
|
|
"description": "Import of an asset whose layout is unconfigured creates asset_type 'unknown'",
|
|
"implemented": true,
|
|
"commitGroup": "layout-type-config",
|
|
"featureIds": [
|
|
"F208"
|
|
]
|
|
},
|
|
{
|
|
"id": "T210",
|
|
"description": "Serial exact match outranks name exact for the same pair",
|
|
"implemented": true,
|
|
"commitGroup": "asset-matcher",
|
|
"featureIds": [
|
|
"F209"
|
|
]
|
|
},
|
|
{
|
|
"id": "T211",
|
|
"description": "Name fuzzy respects 0.8 threshold and legal-suffix stripping",
|
|
"implemented": true,
|
|
"commitGroup": "asset-matcher",
|
|
"featureIds": [
|
|
"F209"
|
|
]
|
|
},
|
|
{
|
|
"id": "T212",
|
|
"description": "Two assets with empty serials never serial-match",
|
|
"implemented": true,
|
|
"commitGroup": "asset-matcher",
|
|
"featureIds": [
|
|
"F210"
|
|
]
|
|
},
|
|
{
|
|
"id": "T213",
|
|
"description": "Greedy one-to-one: no Alga asset claimed twice; already-mapped rows and assets excluded",
|
|
"implemented": true,
|
|
"commitGroup": "asset-matcher",
|
|
"featureIds": [
|
|
"F209"
|
|
]
|
|
},
|
|
{
|
|
"id": "T214",
|
|
"description": "Asset mapping set/clear persists alga_entity_type='asset' rows with metadata; one-to-one conflicts return typed errors",
|
|
"implemented": true,
|
|
"commitGroup": "asset-mapping-data",
|
|
"featureIds": [
|
|
"F211"
|
|
]
|
|
},
|
|
{
|
|
"id": "T215",
|
|
"description": "Client and asset mappings coexist for the same tenant (unique index scoping regression)",
|
|
"implemented": true,
|
|
"commitGroup": "asset-mapping-data",
|
|
"featureIds": [
|
|
"F211"
|
|
]
|
|
},
|
|
{
|
|
"id": "T216",
|
|
"description": "getHuduAssetMappings composes assets + mappings + suggestions into the view model",
|
|
"implemented": true,
|
|
"commitGroup": "asset-mapping-data",
|
|
"featureIds": [
|
|
"F212"
|
|
]
|
|
},
|
|
{
|
|
"id": "T217",
|
|
"description": "set/clear mapping actions: 403 without asset update RBAC; 404 with flag off",
|
|
"implemented": true,
|
|
"commitGroup": "asset-mapping-data",
|
|
"featureIds": [
|
|
"F213",
|
|
"F238"
|
|
]
|
|
},
|
|
{
|
|
"id": "T218",
|
|
"description": "importHuduAsset creates the Alga asset (name/serial/type/client) and the mapping row together",
|
|
"implemented": true,
|
|
"commitGroup": "asset-import",
|
|
"featureIds": [
|
|
"F214"
|
|
]
|
|
},
|
|
{
|
|
"id": "T219",
|
|
"description": "asset_tag uses primary_serial when free; falls back to hudu-<id> on collision or missing serial",
|
|
"implemented": true,
|
|
"commitGroup": "asset-import",
|
|
"featureIds": [
|
|
"F215"
|
|
]
|
|
},
|
|
{
|
|
"id": "T220",
|
|
"description": "Imported asset gets the same default status as the manual create form",
|
|
"implemented": true,
|
|
"commitGroup": "asset-import",
|
|
"featureIds": [
|
|
"F216"
|
|
]
|
|
},
|
|
{
|
|
"id": "T221",
|
|
"description": "importHuduAsset returns 403 without asset create RBAC",
|
|
"implemented": true,
|
|
"commitGroup": "asset-import",
|
|
"featureIds": [
|
|
"F214",
|
|
"F238"
|
|
]
|
|
},
|
|
{
|
|
"id": "T222",
|
|
"description": "Bulk import isolates per-item failures and reports {created, failed} accurately",
|
|
"implemented": true,
|
|
"commitGroup": "asset-import",
|
|
"featureIds": [
|
|
"F217"
|
|
]
|
|
},
|
|
{
|
|
"id": "T223",
|
|
"description": "Bulk import stops on 429 with typed error + partial summary",
|
|
"implemented": true,
|
|
"commitGroup": "asset-import",
|
|
"featureIds": [
|
|
"F218"
|
|
]
|
|
},
|
|
{
|
|
"id": "T224",
|
|
"description": "Sync updates changed name/serial_number on mapped Alga assets (Hudu wins)",
|
|
"implemented": true,
|
|
"commitGroup": "asset-sync",
|
|
"featureIds": [
|
|
"F219"
|
|
]
|
|
},
|
|
{
|
|
"id": "T225",
|
|
"description": "Sync leaves non-synced fields and asset_type untouched",
|
|
"implemented": true,
|
|
"commitGroup": "asset-sync",
|
|
"featureIds": [
|
|
"F220"
|
|
]
|
|
},
|
|
{
|
|
"id": "T226",
|
|
"description": "Archived/missing Hudu asset sets stale:true; reappearance clears it",
|
|
"implemented": true,
|
|
"commitGroup": "asset-sync",
|
|
"featureIds": [
|
|
"F221"
|
|
]
|
|
},
|
|
{
|
|
"id": "T227",
|
|
"description": "Sync deletes nothing: assets and mapping rows survive all sync paths",
|
|
"implemented": true,
|
|
"commitGroup": "asset-sync",
|
|
"featureIds": [
|
|
"F220"
|
|
]
|
|
},
|
|
{
|
|
"id": "T228",
|
|
"description": "Sync stamps last_synced_at and returns {updated, unchanged, stale} counts",
|
|
"implemented": true,
|
|
"commitGroup": "asset-sync",
|
|
"featureIds": [
|
|
"F222"
|
|
]
|
|
},
|
|
{
|
|
"id": "T229",
|
|
"description": "Sync returns 403 without asset update RBAC",
|
|
"implemented": true,
|
|
"commitGroup": "asset-sync",
|
|
"featureIds": [
|
|
"F222",
|
|
"F238"
|
|
]
|
|
},
|
|
{
|
|
"id": "T230",
|
|
"description": "Assets manager renders counters and per-row badges incl. Stale",
|
|
"implemented": true,
|
|
"commitGroup": "asset-mapping-ui",
|
|
"featureIds": [
|
|
"F223"
|
|
]
|
|
},
|
|
{
|
|
"id": "T231",
|
|
"description": "Picking an Alga asset stages only (Pending badge, save bar); Save commits set/clear",
|
|
"implemented": true,
|
|
"commitGroup": "asset-mapping-ui",
|
|
"featureIds": [
|
|
"F224"
|
|
]
|
|
},
|
|
{
|
|
"id": "T232",
|
|
"description": "Suggestion: confirmed by Save; dismissible (excluded from Save); revert restores",
|
|
"implemented": true,
|
|
"commitGroup": "asset-mapping-ui",
|
|
"featureIds": [
|
|
"F224"
|
|
]
|
|
},
|
|
{
|
|
"id": "T233",
|
|
"description": "Row Import triggers the import action and re-renders the row as Mapped",
|
|
"implemented": true,
|
|
"commitGroup": "asset-mapping-ui",
|
|
"featureIds": [
|
|
"F225"
|
|
]
|
|
},
|
|
{
|
|
"id": "T234",
|
|
"description": "'Import all unmatched' renders the summary; one failure doesn't abort the rest",
|
|
"implemented": true,
|
|
"commitGroup": "asset-mapping-ui",
|
|
"featureIds": [
|
|
"F225"
|
|
]
|
|
},
|
|
{
|
|
"id": "T235",
|
|
"description": "Sync button shows last-synced timestamp and result summary",
|
|
"implemented": true,
|
|
"commitGroup": "asset-mapping-ui",
|
|
"featureIds": [
|
|
"F226"
|
|
]
|
|
},
|
|
{
|
|
"id": "T236",
|
|
"description": "Import/Sync affordances hidden without asset create/update RBAC",
|
|
"implemented": true,
|
|
"commitGroup": "asset-mapping-ui",
|
|
"featureIds": [
|
|
"F227"
|
|
]
|
|
},
|
|
{
|
|
"id": "T237",
|
|
"description": "Client Documents tab section lists articles with deep-links for a mapped client",
|
|
"implemented": true,
|
|
"commitGroup": "client-docs-section",
|
|
"featureIds": [
|
|
"F228",
|
|
"F229"
|
|
]
|
|
},
|
|
{
|
|
"id": "T238",
|
|
"description": "Section absent when unmapped, disconnected, or flag off",
|
|
"implemented": true,
|
|
"commitGroup": "client-docs-section",
|
|
"featureIds": [
|
|
"F229"
|
|
]
|
|
},
|
|
{
|
|
"id": "T239",
|
|
"description": "Hudu fetch error shows inline section error; native documents list still renders",
|
|
"implemented": true,
|
|
"commitGroup": "client-docs-section",
|
|
"featureIds": [
|
|
"F230"
|
|
]
|
|
},
|
|
{
|
|
"id": "T240",
|
|
"description": "Global action resolves company->client via cache + mappings; unmapped companies marked",
|
|
"implemented": true,
|
|
"commitGroup": "global-docs",
|
|
"featureIds": [
|
|
"F231"
|
|
]
|
|
},
|
|
{
|
|
"id": "T241",
|
|
"description": "Global action passes search + page through; exactly one Hudu page per call",
|
|
"implemented": true,
|
|
"commitGroup": "global-docs",
|
|
"featureIds": [
|
|
"F231"
|
|
]
|
|
},
|
|
{
|
|
"id": "T242",
|
|
"description": "Global action guard chain: 401 unauth, 403 RBAC, 404 flag off; CE route 501s",
|
|
"implemented": true,
|
|
"commitGroup": "global-docs",
|
|
"featureIds": [
|
|
"F231",
|
|
"F238"
|
|
]
|
|
},
|
|
{
|
|
"id": "T243",
|
|
"description": "useHuduDocumentsTab visible only when EE + flag + connected",
|
|
"implemented": true,
|
|
"commitGroup": "global-docs",
|
|
"featureIds": [
|
|
"F232"
|
|
]
|
|
},
|
|
{
|
|
"id": "T244",
|
|
"description": "Documents Hudu tab renders rows; search refetches; prev/next paginate",
|
|
"implemented": true,
|
|
"commitGroup": "global-docs",
|
|
"featureIds": [
|
|
"F233"
|
|
]
|
|
},
|
|
{
|
|
"id": "T245",
|
|
"description": "CE build contains no EE import leakage for the Documents tab (stub/static check)",
|
|
"implemented": true,
|
|
"commitGroup": "global-docs",
|
|
"featureIds": [
|
|
"F234"
|
|
]
|
|
},
|
|
{
|
|
"id": "T246",
|
|
"description": "All new t() keys resolve to non-empty strings in en locale JSONs",
|
|
"implemented": true,
|
|
"commitGroup": "i18n-phase2",
|
|
"featureIds": [
|
|
"F235",
|
|
"F237"
|
|
]
|
|
},
|
|
{
|
|
"id": "T247",
|
|
"description": "Hardcoded-string sweep passes for all new Phase 2 components",
|
|
"implemented": true,
|
|
"commitGroup": "i18n-phase2",
|
|
"featureIds": [
|
|
"F235",
|
|
"F237"
|
|
]
|
|
},
|
|
{
|
|
"id": "T248",
|
|
"description": "All 7 non-en locales contain every new key",
|
|
"implemented": true,
|
|
"commitGroup": "i18n-phase2",
|
|
"featureIds": [
|
|
"F236"
|
|
]
|
|
},
|
|
{
|
|
"id": "T249",
|
|
"description": "Phase 1 Hudu suites (company mapping, passwords, tabs, guards) stay green",
|
|
"implemented": true,
|
|
"commitGroup": "regression-phase2",
|
|
"featureIds": [
|
|
"F239"
|
|
]
|
|
},
|
|
{
|
|
"id": "T250",
|
|
"description": "tenant_external_entity_mappings schema unchanged (no pull-only columns added)",
|
|
"implemented": true,
|
|
"commitGroup": "regression-phase2",
|
|
"featureIds": [
|
|
"F239"
|
|
]
|
|
}
|
|
] |