Hermes 284313f908
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
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

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"
]
}
]