App Limitations

Last Updated: 17 April 2026 (v4.3.0) · Verified against source: 2026-04-17 against commit b5c73fa (app/src/index.js, app/src/helpers.js)

We believe in transparency. This page documents every known limitation, platform constraint, and compliance boundary. Each limit has been verified against the actual source code. For a positive view of what we do cover, see our compliance guide mapping features to real regulatory standards.

Fit gate: use Compliance Glossary when Confluence pages contain terms that must be approved, current, scanned, and exportable as evidence. It is not for general glossary browsing, translation management, or page approval alone.

Platform Limits (Atlassian Forge)

LimitValueNotes
Function timeoutPlatform-dependentForge invocation limits vary by function type and can change. The app uses bounded batches; duration is not guaranteed. See Atlassian Forge invocation limits (checked 6 August 2026).
Runtime memory256 MBPer function invocation.
Entity size240 KB per entityAtlassian Forge KVS platform limit per entity value. We cap scan-result findings at 48 KB (index.js:64-67, MAX_FINDINGS = 120 at ~320 bytes/finding) and chunk the term cache at 200 entries per entity (index.js:128-132, CACHE_CHUNK_SIZE = 200) to stay well under this.
KVS query page size100 results per callForge KVS getMany() max page size. All queries use cursor pagination (index.js:11-25, queryByField) — no data silently dropped.
Confluence accessRead-onlyThe app never creates, modifies, or deletes your Confluence pages.

Scanning

The scanner uses a map-reduce architecture to handle spaces of any size. Estimated scan times:

Space SizeEstimated TimeNotes
Under 200 pages< 10 secondsSingle batch, near-instant.
200 – 1,000 pages30 – 60 secondsMultiple chunks with progress bar.
1,000 – 5,000 pages2 – 5 minutesTypical enterprise space. Fully supported.
5,000+ pages5 – 15 minutesLarge enterprise. Progress bar shows real-time status.
LimitValueImpact
Pages per space scanNo artificial capMap-reduce architecture with paginated indexing. Indexing and scan loops run from the browser — the scanner tab must stay open until the scan completes. Progress bar shows real-time status.
Term matchingExact word-boundaryMatches whole words only. "AE" will not match "AEs", "adverse" will not match "adversely".
Auto-scan triggersCreate & update onlyPage deletions, moves, and renames do not trigger a scan.
Scan historyAppend-only snapshotsEach scan writes a snapshot alongside the latest result. Full scan history per page and per space.
Index chunk5,000 pages per resolver invocationEach resolver call fetches up to 5,000 page IDs via 20 Confluence API calls (250 pages each). Frontend loops resolver until complete. (index.js:646, INDEX_CHUNK = 5000; index.js:668-669, limit=250)
Page-scan batch8 pages in parallelPages fetched concurrently per batch to stay under Confluence 10 req/s API rate limit. (index.js:699, BATCH = 8)
Context snippet80 characters40 characters before and after each match. (helpers.js:85, helpers.js:97)

Import & Export

LimitValueWorkaround
CSV import cap500 terms per fileHard cap (index.js:962). Terms written 10 in parallel per batch (index.js:1006, IMPORT_BATCH = 10) — 20 KVS req/burst, safe under Forge KVS 40 req/s limit. Split larger files.
Import statusAll start as DraftImported terms must go through the approval workflow.
Export formatCSV onlyPDF and XML export not available. CSV covers all data.
Export generationBrowser-sideLarge glossaries (1000+ terms) may take several seconds to compile.

Workflow

Compliance Scope — What We Do and Don't Cover

This is a terminology management and compliance scanning tool. It is not a full QMS, e-signature platform, regulatory submission system, general glossary browser, translation-management system, or standalone page-approval workflow. Teams use it for FDA 21 CFR Part 11 terminology, SOC 2 audit readiness, and EU AI Act compliance within this scope.

CapabilityStatusDetails
Append-only audit trailYesEvery action recorded with user ID, timestamp, and change reason.
Four-eyes approvalYesChecks creator, submitter, and last editor. Another user must approve.
Mandatory change justificationYesRequired on edits, status changes, and bulk operations. Not required on initial term creation.
E-signaturesNoUses Atlassian account IDs, not cryptographic signatures (Part 11 Subpart C).
Role-based access (in-app)YesOpt-in RBAC: designate term managers who can create, edit, approve, and delete. Others get read-only.
Finding resolution workflowYesFindings can be acknowledged, justified (with reason), or closed. Full resolution audit trail per page-term pair.
Global activity logYesChronological view of all actions across all terms. Per-term history also available.
Compliance scoreBasicSingle dimension (% approved). Does not factor review freshness or metadata completeness.
Webhooks / notificationsNoNo external integrations. No email or Slack alerts on status changes.
Multi-language UINoEnglish only. Term content can be any language.

What We Honestly Claim

Our ClaimHonest?Caveat
"Append-only audit trail"YesDeletions write a final audit entry before removal.
"Four-eyes approval"YesChecks 3 fields: createdBy, submittedBy, updatedBy.
"No data leaves Atlassian"YesForge app runtime makes zero external calls. Verified in manifest (no external:fetch:backend permission) and code. Data stays in Atlassian's infrastructure.
"Mandatory change justification"YesEnforced on edits, status changes, and bulk operations. Only gap: initial term creation.
"ALCOA+ aligned"YesAll ALCOA+ principles met including "Complete" (bulk ops now include change reasons).
"Compliance scanner"YesExact match only. Unlimited pages (map-reduce). No fuzzy matching.
"Finding resolution"YesAcknowledge, justify, or close findings. Full resolution audit trail per page-term pair.
"Role-based access"YesOpt-in term managers. Backend-enforced on all write resolvers.
"Scan history"YesAppend-only snapshots. Proves compliance state at any point in time.
"Display names"YesReal names from Confluence API with graceful fallback to truncated account ID.

Questions about limitations? Contact compliance-glossary@teamkit.dev.

Related reading